{"version":3,"file":"js/application-6930a2600414631e47ab.js","mappings":"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","sources":["webpack://singletrack-portal/./app/assets/images/liquid/ sync ^\\.\\/.*$","webpack://singletrack-portal/./app/assets/images/ sync ^\\.\\/.*$","webpack://singletrack-portal/./app/components/ sync ^\\.\\/.*\\.js$","webpack://singletrack-portal/./app/assets/javascripts/component_locator.js","webpack://singletrack-portal/./app/assets/javascripts/offline_handler.js","webpack://singletrack-portal/./app/assets/javascripts/component_builder.js","webpack://singletrack-portal/./app/assets/javascripts/router.js","webpack://singletrack-portal/./app/assets/packs/application.js","webpack://singletrack-portal/./app/assets/javascripts/configuration.js.erb","webpack://singletrack-portal/./app/components/about_us/about_us.js","webpack://singletrack-portal/./app/components/actions/download_documents/download_documents.js","webpack://singletrack-portal/./app/components/actions/filter_button/filter_button.js","webpack://singletrack-portal/./app/components/actions/save_subscriptions/save_subscriptions.js","webpack://singletrack-portal/./app/components/actions/scroll_button/scroll_button.js","webpack://singletrack-portal/./app/components/actions/toggle_sidebar/toggle_sidebar.js","webpack://singletrack-portal/./app/components/ajax_error/ajax_error.js","webpack://singletrack-portal/./app/components/available_products/available_products.js","webpack://singletrack-portal/./app/components/base_component/base_component.js","webpack://singletrack-portal/./app/components/carosel/carosel.js","webpack://singletrack-portal/./app/components/change_password/change_password.js","webpack://singletrack-portal/./app/components/confirmation/confirmation.js","webpack://singletrack-portal/./app/components/consent_banner/consent_banner.js","webpack://singletrack-portal/./app/components/contact_actions/contact_actions.js","webpack://singletrack-portal/./app/components/contact_us/contact_us.js","webpack://singletrack-portal/./app/components/custom_dashboard/custom_dashboard.js","webpack://singletrack-portal/./app/components/data_table/__test/stubs/dt_stub.js","webpack://singletrack-portal/./app/components/data_table/data_table.js","webpack://singletrack-portal/./app/components/data_table/filter_context.js","webpack://singletrack-portal/./app/components/data_table/filters/base_filter.js","webpack://singletrack-portal/./app/components/data_table/filters/date_range.js","webpack://singletrack-portal/./app/components/data_table/filters/search.js","webpack://singletrack-portal/./app/components/data_table/filters/tag_search.js","webpack://singletrack-portal/./app/components/data_table/formatters.js","webpack://singletrack-portal/./app/components/data_table/formatters/class_name.js","webpack://singletrack-portal/./app/components/data_table/formatters/date_format.js","webpack://singletrack-portal/./app/components/data_table/formatters/order.js","webpack://singletrack-portal/./app/components/data_table/formatters/orderable.js","webpack://singletrack-portal/./app/components/data_table/formatters/preview.js","webpack://singletrack-portal/./app/components/data_table/formatters/rating.js","webpack://singletrack-portal/./app/components/data_table/formatters/roadshow_request_slot.js","webpack://singletrack-portal/./app/components/data_table/formatters/style.js","webpack://singletrack-portal/./app/components/dialogue/dialogue.js","webpack://singletrack-portal/./app/components/filter_panel/filter_panel.js","webpack://singletrack-portal/./app/components/filter_panel/tag_section.js","webpack://singletrack-portal/./app/components/footer/footer.js","webpack://singletrack-portal/./app/components/grid_view_page/grid_view_page.js","webpack://singletrack-portal/./app/components/hero/hero.js","webpack://singletrack-portal/./app/components/layouts/tabs/tabs.js","webpack://singletrack-portal/./app/components/layouts/tile/tile.js","webpack://singletrack-portal/./app/components/loading/loading.js","webpack://singletrack-portal/./app/components/modal/modal.js","webpack://singletrack-portal/./app/components/navbar/navbar.js","webpack://singletrack-portal/./app/components/pages/preference_center/preference_center.js","webpack://singletrack-portal/./app/components/pages/register/register.js","webpack://singletrack-portal/./app/components/research_document_summary/research_document_summary.js","webpack://singletrack-portal/./app/components/reset_password/reset_password.js","webpack://singletrack-portal/./app/components/roadshow_calendar/roadshow_calendar.js","webpack://singletrack-portal/./app/components/roadshow_details/roadshow_details.js","webpack://singletrack-portal/./app/components/roadshow_request/roadshow_request.js","webpack://singletrack-portal/./app/components/roadshow_slots/roadshow_slots.js","webpack://singletrack-portal/./app/components/scorecard/scorecard.js","webpack://singletrack-portal/./app/components/scripts/favourite_tag_handler/favourite_tag_handler.js","webpack://singletrack-portal/./app/components/scripts/validate_password/validate_password.js","webpack://singletrack-portal/./app/components/search_bar/search_bar.js","webpack://singletrack-portal/./app/components/tabbed_data_table/tabbed_data_table.js","webpack://singletrack-portal/./app/components/team/team.js","webpack://singletrack-portal/./app/components/user_panel/user_panel.js","webpack://singletrack-portal/./app/components/video/video.js","webpack://singletrack-portal/./app/components/video/video_event_handler.js","webpack://singletrack-portal/./app/components/your_research/your_research.js"],"sourcesContent":["var map = {\n\t\"./bg-bottom-cover\": 4233,\n\t\"./bg-bottom-cover.jpg\": 4233,\n\t\"./bg-top-cover\": 4927,\n\t\"./bg-top-cover.jpg\": 4927,\n\t\"./bottom-angle\": 9817,\n\t\"./bottom-angle.png\": 9817,\n\t\"./calendar-icon\": 6224,\n\t\"./calendar-icon.png\": 6224,\n\t\"./caret-down\": 7528,\n\t\"./caret-down.png\": 7528,\n\t\"./caret-up\": 5687,\n\t\"./caret-up.png\": 5687,\n\t\"./contact-icon\": 996,\n\t\"./contact-icon.png\": 996,\n\t\"./event-icon\": 2144,\n\t\"./event-icon.png\": 2144,\n\t\"./logo\": 5843,\n\t\"./logo-bottom\": 2739,\n\t\"./logo-bottom.png\": 2739,\n\t\"./logo.png\": 5843,\n\t\"./summary-icon\": 5708,\n\t\"./summary-icon.png\": 5708,\n\t\"./top-angle\": 3719,\n\t\"./top-angle.png\": 3719\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 319;","var map = {\n\t\"./arete-logo\": 2840,\n\t\"./arete-logo.png\": 2840,\n\t\"./arete-logomark\": 2855,\n\t\"./arete-logomark.png\": 2855,\n\t\"./arete-roadshow-logo\": 1962,\n\t\"./arete-roadshow-logo.jpg\": 1962,\n\t\"./contact-us-img\": 3898,\n\t\"./contact-us-img.png\": 3898,\n\t\"./default-thumbnail\": 4185,\n\t\"./default-thumbnail.png\": 4185,\n\t\"./doctype-image\": 9907,\n\t\"./doctype-image.png\": 9907,\n\t\"./ellipse-1\": 5789,\n\t\"./ellipse-1.png\": 5789,\n\t\"./ellipse-2\": 4022,\n\t\"./ellipse-2.png\": 4022,\n\t\"./ellipse-3\": 7823,\n\t\"./ellipse-3.png\": 7823,\n\t\"./ellipse-4\": 9792,\n\t\"./ellipse-4.png\": 9792,\n\t\"./ellipse-5\": 3993,\n\t\"./ellipse-5.png\": 3993,\n\t\"./ellipse-6\": 5810,\n\t\"./ellipse-6.png\": 5810,\n\t\"./ellipse-7\": 7355,\n\t\"./ellipse-7.png\": 7355,\n\t\"./ellipse-8\": 3340,\n\t\"./ellipse-8.png\": 3340,\n\t\"./favicon.ico\": 4791,\n\t\"./favicon4\": 2349,\n\t\"./favicon4.png\": 2349,\n\t\"./header-motif\": 6984,\n\t\"./header-motif.png\": 6984,\n\t\"./hero\": 9877,\n\t\"./hero-image\": 8341,\n\t\"./hero-image.jpg\": 8341,\n\t\"./hero.jpg\": 9877,\n\t\"./intro-splash\": 1671,\n\t\"./intro-splash.png\": 1671,\n\t\"./liquid/bg-bottom-cover\": 4233,\n\t\"./liquid/bg-bottom-cover.jpg\": 4233,\n\t\"./liquid/bg-top-cover\": 4927,\n\t\"./liquid/bg-top-cover.jpg\": 4927,\n\t\"./liquid/bottom-angle\": 9817,\n\t\"./liquid/bottom-angle.png\": 9817,\n\t\"./liquid/calendar-icon\": 6224,\n\t\"./liquid/calendar-icon.png\": 6224,\n\t\"./liquid/caret-down\": 7528,\n\t\"./liquid/caret-down.png\": 7528,\n\t\"./liquid/caret-up\": 5687,\n\t\"./liquid/caret-up.png\": 5687,\n\t\"./liquid/contact-icon\": 996,\n\t\"./liquid/contact-icon.png\": 996,\n\t\"./liquid/event-icon\": 2144,\n\t\"./liquid/event-icon.png\": 2144,\n\t\"./liquid/logo\": 5843,\n\t\"./liquid/logo-bottom\": 2739,\n\t\"./liquid/logo-bottom.png\": 2739,\n\t\"./liquid/logo.png\": 5843,\n\t\"./liquid/summary-icon\": 5708,\n\t\"./liquid/summary-icon.png\": 5708,\n\t\"./liquid/top-angle\": 3719,\n\t\"./liquid/top-angle.png\": 3719,\n\t\"./logo-nimbus-mini\": 3197,\n\t\"./logo-nimbus-mini.png\": 3197,\n\t\"./logo-x\": 8755,\n\t\"./logo-x.png\": 8755,\n\t\"./map-ny\": 69,\n\t\"./map-ny.png\": 69,\n\t\"./map-uk\": 2562,\n\t\"./map-uk.png\": 2562,\n\t\"./mobile\": 2367,\n\t\"./mobile.png\": 2367,\n\t\"./navbar-header\": 2805,\n\t\"./navbar-header.png\": 2805,\n\t\"./nimbus-login-image\": 243,\n\t\"./nimbus-login-image.png\": 243,\n\t\"./nimbus-login-img\": 2165,\n\t\"./nimbus-login-img.png\": 2165,\n\t\"./nimbus-securities-logo\": 4270,\n\t\"./nimbus-securities-logo-invert\": 3518,\n\t\"./nimbus-securities-logo-invert.png\": 3518,\n\t\"./nimbus-securities-logo-rehash\": 3682,\n\t\"./nimbus-securities-logo-rehash.png\": 3682,\n\t\"./nimbus-securities-logo.png\": 4270,\n\t\"./research-image\": 2474,\n\t\"./research-image-2\": 2179,\n\t\"./research-image-2.png\": 2179,\n\t\"./research-image.png\": 2474,\n\t\"./research_document_cover\": 2720,\n\t\"./research_document_cover.png\": 2720,\n\t\"./roadshows/bg-bottom-cover\": 4789,\n\t\"./roadshows/bg-bottom-cover.jpg\": 4789,\n\t\"./roadshows/bg-top-cover\": 2651,\n\t\"./roadshows/bg-top-cover.jpg\": 2651,\n\t\"./roadshows/bottom-angle\": 2973,\n\t\"./roadshows/bottom-angle.png\": 2973,\n\t\"./roadshows/calendar-icon\": 9652,\n\t\"./roadshows/calendar-icon.png\": 9652,\n\t\"./roadshows/caret-down\": 1188,\n\t\"./roadshows/caret-down.png\": 1188,\n\t\"./roadshows/caret-up\": 2395,\n\t\"./roadshows/caret-up.png\": 2395,\n\t\"./roadshows/top-angle\": 5835,\n\t\"./roadshows/top-angle.png\": 5835,\n\t\"./st_icons/client-actions\": 5204,\n\t\"./st_icons/client-actions.svg\": 5204,\n\t\"./st_icons/client-activities\": 8696,\n\t\"./st_icons/client-activities.svg\": 8696,\n\t\"./themes-header\": 8185,\n\t\"./themes-header.png\": 8185,\n\t\"./totem-splash\": 552,\n\t\"./totem-splash.png\": 552\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 2672;","var map = {\n\t\"./about_us/about_us.js\": 3027,\n\t\"./actions/download_documents/download_documents.js\": 4197,\n\t\"./actions/filter_button/filter_button.js\": 2885,\n\t\"./actions/save_subscriptions/save_subscriptions.js\": 7187,\n\t\"./actions/scroll_button/scroll_button.js\": 1137,\n\t\"./actions/toggle_sidebar/toggle_sidebar.js\": 1909,\n\t\"./ajax_error/ajax_error.js\": 1817,\n\t\"./available_products/available_products.js\": 9707,\n\t\"./base_component/base_component.js\": 9517,\n\t\"./carosel/carosel.js\": 5773,\n\t\"./change_password/change_password.js\": 3961,\n\t\"./confirmation/confirmation.js\": 7405,\n\t\"./consent_banner/consent_banner.js\": 541,\n\t\"./contact_actions/contact_actions.js\": 6709,\n\t\"./contact_us/contact_us.js\": 7053,\n\t\"./custom_dashboard/custom_dashboard.js\": 3023,\n\t\"./data_table/__test/stubs/dt_stub.js\": 4956,\n\t\"./data_table/data_table.js\": 1649,\n\t\"./data_table/filter_context.js\": 9788,\n\t\"./data_table/filters/base_filter.js\": 6020,\n\t\"./data_table/filters/date_range.js\": 1180,\n\t\"./data_table/filters/search.js\": 7586,\n\t\"./data_table/filters/tag_search.js\": 3743,\n\t\"./data_table/formatters.js\": 9313,\n\t\"./data_table/formatters/class_name.js\": 8526,\n\t\"./data_table/formatters/date_format.js\": 4400,\n\t\"./data_table/formatters/order.js\": 9694,\n\t\"./data_table/formatters/orderable.js\": 14,\n\t\"./data_table/formatters/preview.js\": 7910,\n\t\"./data_table/formatters/rating.js\": 4269,\n\t\"./data_table/formatters/roadshow_request_slot.js\": 6968,\n\t\"./data_table/formatters/style.js\": 4339,\n\t\"./dialogue/dialogue.js\": 8187,\n\t\"./filter_panel/filter_panel.js\": 8121,\n\t\"./filter_panel/tag_section.js\": 2160,\n\t\"./footer/footer.js\": 1513,\n\t\"./grid_view_page/grid_view_page.js\": 3663,\n\t\"./hero/hero.js\": 6067,\n\t\"./layouts/tabs/tabs.js\": 9995,\n\t\"./layouts/tile/tile.js\": 871,\n\t\"./loading/loading.js\": 409,\n\t\"./modal/modal.js\": 2617,\n\t\"./navbar/navbar.js\": 6687,\n\t\"./pages/preference_center/preference_center.js\": 9654,\n\t\"./pages/register/register.js\": 3138,\n\t\"./research_document_summary/research_document_summary.js\": 3789,\n\t\"./reset_password/reset_password.js\": 9805,\n\t\"./roadshow_calendar/roadshow_calendar.js\": 8465,\n\t\"./roadshow_details/roadshow_details.js\": 9887,\n\t\"./roadshow_request/roadshow_request.js\": 5981,\n\t\"./roadshow_slots/roadshow_slots.js\": 8045,\n\t\"./scorecard/scorecard.js\": 4149,\n\t\"./scripts/favourite_tag_handler/favourite_tag_handler.js\": 3642,\n\t\"./scripts/validate_password/validate_password.js\": 1802,\n\t\"./search_bar/search_bar.js\": 3091,\n\t\"./tabbed_data_table/tabbed_data_table.js\": 5201,\n\t\"./team/team.js\": 2685,\n\t\"./user_panel/user_panel.js\": 4227,\n\t\"./video/video.js\": 5485,\n\t\"./video/video_event_handler.js\": 7977,\n\t\"./your_research/your_research.js\": 6761\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 7343;","// @flow\nimport camelCase from 'lodash-es/camelCase';\nimport upperFirst from 'lodash-es/upperFirst';\nimport BaseComponent from '../../components/base_component/base_component';\n\nclass ComponentLocator {\n componentFactories: Map<string, (number, string, any) => BaseComponent>;\n componentsById: Map<number, BaseComponent>;\n componentsByName: Map<string, Array<BaseComponent>>;\n functions: {[string]: Function}\n f: {[string]: Function}\n functionList: Map<string, Function[]>\n awaiters: Array<() => void>;\n _loaded: boolean;\n\n constructor() {\n this.awaiters = [];\n this.clear();\n }\n\n clear() {\n this.componentFactories = new Map();\n let componentsById = this.componentsById = new Map();\n let componentsByName = this.componentsByName = new Map();\n this.functions = {};\n window._functions = this.f = this.functions;\n this.functionList = new Map();\n window.getComponent = (id: Number | any) => {\n if (typeof(id) === 'object') {\n id = $(id).closest('.wrapper').attr('data-component-id');\n return componentsById.get(id) || componentsById.get(parseInt(id));\n } else if(isNaN(id)) {\n let components = (componentsByName.get(id) || [null]);\n if (components.length !== 1) {\n throw `Expected 1 component and found ${components.length}`;\n }\n return components[0];\n }\n return componentsById.get(id);\n }\n this._loaded = false;\n }\n\n /**\n * Sets whether the components are all loaded. Should be set to true only once\n * @param isLoaded Whether the component is loaded.\n */\n set loaded(isLoaded: boolean) {\n if (isLoaded && this._loaded) return;\n\n this._loaded = isLoaded;\n if (isLoaded) {\n this.awaiters.forEach(awaiter => awaiter());\n this.awaiters = [];\n for(let componentId of (window.__componentAdapter.latestBatch || [])) {\n let component = this.componentsById[componentId];\n component && component.onReady();\n };\n if (!this.f.handleAjaxError) return;\n\n window.__componentAdapter.ajaxErrors.forEach(e => {\n this.f.handleAjaxError(...e)\n });\n }\n }\n\n get loaded(): boolean {\n return this._loaded;\n }\n\n async waitUntilLoaded() {\n if (this._loaded) return;\n\n return new Promise(resolve => this.awaiters.push(resolve));\n }\n\n registerComponentFactory(name: string, factory: (number, any) => BaseComponent) {\n this.componentFactories.set(upperFirst(camelCase(name)), factory);\n }\n\n createComponent(id: number, name: string, options: any, extra_params: any, jsc: ?string) {\n let component = this.getFactory(name, jsc)(id, options, extra_params);\n if (!(component instanceof BaseComponent)) return;\n \n this.componentsById.set(id, component);\n let existingComponents = this.componentsByName.get(name);\n if (existingComponents) {\n existingComponents.push(component);\n } else {\n this.componentsByName.set(name, [component]);\n }\n let functions = component.functions();\n Object.keys(functions).forEach(func => {\n this.addFunction(func, functions[func]);\n })\n return component;\n }\n\n async deleteComponent(id: number) {\n let component: any = this.componentsById.get(id);\n if (!component) return;\n\n this.componentsById.delete(id);\n let byName = this.componentsByName.get(component.component_name) || [];\n byName.splice(byName.indexOf(component), 1);\n\n let functions = component.functions();\n Object.keys(functions).forEach(func => {\n let functions = this.functionList.get(func) || [];\n functions.splice(functions.indexOf(component), 1);\n })\n if (component.finalize.then) {\n await component.finalize();\n } else {\n component.finalize();\n }\n }\n\n addFunction(name: string, f: Function) {\n if (!this.functionList.get(name)) {\n this.functionList.set(name, []);\n }\n (this.functionList.get(name) || []).push(f);\n this.functions[name] = async (...args: any[]) => {\n await this.waitUntilLoaded();\n return (this.functionList.get(name) || []).map(f => f(...args));\n }\n }\n\n getFactory(name: string, fallbackClass: ?string): (number, any, any) => BaseComponent {\n let titleizedName = upperFirst(camelCase(name));\n\n let factory = this.componentFactories.get(titleizedName);\n if (!factory) {\n fallbackClass = fallbackClass || 'base_component/base_component';\n let constructor = require(`../../components/${fallbackClass}.js`);\n\n factory = (id, options, extra_params) => new constructor.default(id, name, options, extra_params);\n this.componentFactories.set(titleizedName, factory);\n }\n return factory;\n }\n \n async getById(componentId: number): Promise<?any> {\n await this.waitUntilLoaded();\n \n return this.componentsById.get(componentId);\n }\n\n async getAll(componentName: string): Promise<Array<any>> {\n await this.waitUntilLoaded();\n\n return this.componentsByName.get(componentName) || [];\n }\n\n async getSingle(componentName: string): Promise<any> {\n await this.waitUntilLoaded();\n\n let allComponents: ?Array<BaseComponent> = await this.getAll(componentName);\n if (!allComponents || allComponents.length === 0) {\n throw 'Could not find a component with name ' + componentName;\n }\n\n if (allComponents.length > 1) {\n throw 'Found multiple components with name ' + componentName;\n }\n return allComponents[0];\n }\n}\n\nexport default new ComponentLocator();\n","import componentLocator from './component_locator';\nimport useServiceWorker from './configuration.js.erb';\n\nconst PAGES = 'pages-v0'; // match this with service_worker.js\nconst BACKUP = 'backup-v0'; // match this with service_worker.js\nconst POST_REQUESTS = 'post-v0';\n\n// TODO for the future:\n// Pre-load everything in install step.\n// What to do with modals?\n// Your Research Suggestions\n\nvar handlingPostRequests = false; // Effectively a mutex.\nclass OfflineHandler {\n initialize() {\n if (!useServiceWorker) return;\n\n $(window).on('offline', () => {\n this.toggleOfflineClass(false);\n if (componentLocator.f.onOffline) componentLocator.f.onOffline();\n });\n $(window).on('online', () => {\n this.toggleOfflineClass(true);\n this.handlePostRequests();\n if (componentLocator.f.onOnline) componentLocator.f.onOnline();\n });\n this.toggleOfflineClass(navigator.onLine)\n $('body').toggleClass('online', navigator.onLine);\n $('body').toggleClass('offline', !navigator.onLine);\n componentLocator.waitUntilLoaded().then(() => this.handlePostRequests());\n\n // We cache the page's components if they aren't already stored.\n if (window.caches) this.cacheComponents();\n }\n\n toggleOfflineClass(isOnline) {\n $('body').toggleClass('online', isOnline);\n $('body').toggleClass('offline', !isOnline);\n }\n\n async cacheComponents() {\n const path = `${location.protocol}//${location.host}${location.pathname}`\n const compPath = `${location.protocol}//${location.host}/components${location.pathname}`\n\n if (await caches.match(compPath)) return;\n if (!(await caches.match(path))) return;\n\n const cache = await caches.open(PAGES);\n await cache.put(compPath, new Response(JSON.stringify(window.components)));\n }\n\n async getCachedPages() {\n return (await this._listCachedPages(PAGES))\n .concat(await this._listCachedPages(BACKUP));\n }\n\n async _listCachedPages(cache_name) {\n const cache = await caches.open(cache_name);\n const keys = await cache.keys();\n return keys.map(key => typeof(key) === 'string' ? key : key.url)\n .filter(key => key.includes('/components/'))\n .map(key => {\n let parts = key.split('/');\n return parts[parts.length - 1];\n });\n }\n\n async clearCaches() { // Mainly helpful for debugging. Clears *all* caches.\n const cacheNames = await caches.keys();\n return Promise.all(cacheNames.map(async cacheName => {\n const cache = await caches.open(cacheName);\n const cacheKeys = await cache.keys();\n return Promise.all(cacheKeys.map(async key => cache.delete(key)));\n }));\n }\n\n async handlePostRequests() {\n if (handlingPostRequests) return;\n\n handlingPostRequests = true;\n let cache = await caches.open(POST_REQUESTS);\n let keys = await cache.keys();\n await Promise.all(keys.map(async key => {\n let response = await cache.match(key);\n let {headers, body} = await response.json();\n await this.deferrablePost(key.url, body, headers);\n await cache.delete(key);\n }));\n handlingPostRequests = false;\n }\n\n // Sends a post request if online, otherwise defers it. Type must be JSON.\n // Returns a promise, which yields true if the post was deferred, else false.\n // Discards the response body (as this cannot be effectively deferred).\n deferrablePost(uri, body, headers={}) {\n return new Promise(resolve => {\n if (navigator.onLine || !('serviceWorker' in navigator)) {\n $.ajax({\n type: \"POST\",\n url: uri,\n data: JSON.stringify(body),\n dataType: 'json',\n contentType: 'application/json',\n headers: headers\n }).always(() => resolve(false));\n } else {\n caches.open(POST_REQUESTS).then(cache => \n cache.put(uri, new Response(JSON.stringify({headers: headers, body: body})))\n ).then(() => resolve(true));\n }\n });\n\n }\n}\n\nconst handler = new OfflineHandler();\n// Remove this once development is completed.\n$(document).ready(() => handler && handler.initialize());\nwindow.clearCaches = handler.clearCaches;\n\nexport default handler;\nexport let deferrablePost = handler.deferrablePost;","// @flow\nimport componentLocator from './component_locator';\nimport offlineHandler from './offline_handler';\nimport $ from 'jquery';\nimport jwtDecode from 'jwt-decode';\n\ntype Component = {\n id: number,\n name: string,\n body: string,\n jsc: string,\n children: Array<number>,\n rerender: boolean,\n options: ({} | string),\n extra_params: {},\n subcomponents: Array<Component>\n}\n\nexport default class ComponentBuilder {\n queued: boolean;\n active: boolean;\n\n constructor() {\n var queued = false;\n var active = false;\n }\n\n getLocator() {\n return componentLocator;\n }\n\n execute() {\n if (this.active) return this.queued = true;\n this.active = true;\n this.buildComponents();\n this.active = false;\n if (!this.queued) return;\n this.queued = false;\n this.execute();\n }\n\n buildComponents() {\n let components: {[string]: Component} = {}; // Shallow clone.\n Object.assign(components, window.__componentAdapter.components);\n \n let clearedKeys = [];\n Object.keys(components).forEach(function(id: string) {\n let component: Component = components[id];\n let wrapper = document.getElementById(`wrapper_${id}`);\n if (!wrapper) return;\n\n this._renderComponent(wrapper, component);\n clearedKeys.push(id);\n\n setTimeout(() => this._createComponentObjects(component), 1);\n this._scrollToElement(window.location.href); // this needs moving.\n }, this);\n clearedKeys.forEach(function(key) {\n delete window.__componentAdapter.components[key];\n });\n this.queued = this.queued && clearedKeys.length !== 0;\n }\n\n _renderComponent(wrapper: HTMLElement, component: Component) {\n if (!wrapper.className.includes(component.name.replace(/_/g, '-'))) {\n let oldClass = component.name.replace('_', '-'); // Compatibility for legacy code.\n let newClass = component.name.replace(/_/g, '-');\n wrapper.className = wrapper.className\n .replace(/[^ ]*-component/, '')\n .concat(` ${component.name.replace('_', '-')}-component`)\n if (oldClass != newClass) {\n wrapper.className = wrapper.className\n .concat(` ${component.name.replace(/_/g, '-')}-component`)\n }\n \n }\n\n wrapper.innerHTML = component.body;\n (component.children || []).forEach(child => {\n if($(`#wrapper_${child}`).length > 0) return;\n window.__componentAdapter.componentsWaiting -= this._countChildren(child);\n });\n }\n\n _createComponentObjects(component: Component) {\n this._createJavascriptClass(component);\n (component.subcomponents || []).forEach(this._createJavascriptClass);\n \n window.__componentAdapter.componentsWaiting -= 1;\n this._dispatchRenderEvent(component.id, component.name, component.options, component.extra_params);\n if (window.__componentAdapter.componentsWaiting == 0) {\n componentLocator.loaded = true;\n this._handleJavascriptOnlyComponents();\n }\n }\n\n _createJavascriptClass(component: Component) {\n if (!component) return;\n if (typeof(component.options) === 'string') {\n component.options = jwtDecode(component.options);\n }\n let newComponent: any = null;\n if (component.jsc) {\n newComponent = componentLocator.createComponent(component.id,\n component.name, component.options, component.extra_params, component.jsc);\n } else {\n newComponent = window.getComponent(component.id);\n }\n if (newComponent && newComponent.onLoad) newComponent.onLoad();\n }\n\n _handleJavascriptOnlyComponents() {\n (window.components || [])\n .filter(c => !c.controller)\n .forEach(this._createJavascriptClass);\n }\n\n _countChildren(componentId: number) {\n let component = window.__componentAdapter.components[componentId];\n if (!component) return 0;\n let result = component.deferred ? 0 : 1;\n\n component.children.forEach(child => {\n result += this._countChildren(child)\n });\n return result\n }\n\n _scrollToElement(location: string) {\n if (!componentLocator.loaded || !location.includes('#') || location.substr(-1) === '#') return;\n \n let $element = $(location.slice(location.indexOf('#')));\n if ($element.length > 0) {\n $element[0].scrollIntoView();\n }\n }\n\n _dispatchRenderEvent(id: number, name: string, options: any, extra_params: any) {\n let renderedEvent: any = new Event('ComponentRendered');\n renderedEvent.componentId = id;\n renderedEvent.componentName = name;\n renderedEvent.options = options;\n renderedEvent.extra_params = extra_params;\n document.dispatchEvent(renderedEvent);\n }\n}\n\nexport function buildComponents() {\n // offlineHandler.initialize();\n const componentBuilder = new ComponentBuilder();\n window.__componentAdapter.runner = componentBuilder;\n componentBuilder.execute();\n}\n\nwindow.addEventListener('load', function() {\n buildComponents()\n})\n","// @flow\nimport componentLocator from './component_locator';\nimport useServiceWorker from './configuration.js.erb';\n\ntype Component = {\n id: number,\n hash: string,\n name: string,\n deferred: boolean,\n fixed: boolean,\n children: Array<number>,\n options: ({} | string),\n extra_params: {},\n}\n\nlet latestPageRequest = null;\nclass Router {\n async loadPage(page: string, ids:?Array<Number>=null) {\n if (!(await this._waitUntilReady())) return Promise.resolve(); // Queue multiple requests.\n\n return new Promise(resolve => {\n $.getJSON(`components/${page}`, {}, async (result, _, xhr: any) => {\n $('meta[name=\"csrf-token\"]').attr('content', xhr.getResponseHeader('x-authenticity-token'));\n if (useServiceWorker && ('serviceWorker' in navigator)) {\n $('body').toggleClass('online', navigator.onLine);\n $('body').toggleClass('offline', !navigator.onLine);\n }\n await new ComponentReloader(result).reload();\n await this.updateDocumentMetadata(page);\n resolve();\n }).fail(() => {\n window.location.href = `/${page}`; // Load the page normally.\n });\n });\n }\n\n async updateDocumentMetadata(page: string) {\n $(document).attr(\"title\", page.toLowerCase().split('_')\n .map((str) => str.charAt(0).toUpperCase() + str.substring(1)).join(' ')); \n \n let oldBodyClass = $('body').attr('class').split(' ').slice(0, -1).join(' ');\n $('body').attr('class', `${oldBodyClass} ${page.toLowerCase().replace(' ', '_')}`);\n\n window.history.pushState({st_async: true}, null, encodeURIComponent(page));\n\n if (componentLocator.f.selectPage) {\n await componentLocator.f.selectPage(page);\n }\n }\n\n async _waitUntilReady() {\n let requestId = Math.random();\n latestPageRequest = requestId;\n let fallbackTimer = new Promise(resolve => setTimeout(resolve, 1000))\n\n // Wait for components to load, or 1 second (whichever comes first).\n await Promise.race([componentLocator.waitUntilLoaded(), fallbackTimer]);\n return latestPageRequest = latestPageRequest == requestId;\n }\n}\n\nclass ComponentReloader {\n oldComponents: Map<number, Component>;\n result: Array<Component>;\n componentsToReload: Set<number>;\n\n constructor(new_components: Array<Component>) {\n this.result = new_components;\n this.oldComponents = this.groupById(window.components);\n this.componentsToReload = new Set();\n }\n\n async reload() {\n await this.recursiveDelete(0);\n this.rerender();\n }\n\n rerender() {\n window.__componentAdapter.fragments = window.__componentAdapter.fragments || {}; // TODO: Move to the end.\n window.components = this.result;\n window.__componentAdapter.componentsWaiting = 0;\n window.__componentAdapter.render(0, false);\n }\n\n async recursiveDelete(id: number) {\n let component: any = this.oldComponents.get(id);\n component.children.forEach(child => this.recursiveDelete(child));\n await componentLocator.deleteComponent(component.id);\n // window.__componentAdapter.fragments[component.hash] = [\n // component.children, $(`#wrapper_${component.id}`).html()\n // ];\n $(`#wrapper_${component.id}`).html('');\n // // close but wrong\n // if (id !== 0 && window.__componentAdapter.fragments[component.hash]) {\n // $(`#wrapper_${component.id}`).find('div[id^=\"wrapper_\"]').each(function() { this.id = `_${this.id}`});\n // $(`#wrapper_${component.id}`).attr('id', `_wrapper_${component.id}`);\n // } else {\n // $(`#wrapper_${component.id}`).html('');\n // }\n }\n\n groupById(items: Array<Component>): Map<number, Component> {\n return items.reduce((map, e) => map.set(e.id, e), new Map());\n }\n}\n\nexport default new Router();","import {} from 'jquery-ujs'\n\nimport 'jquery';\nimport 'jquery-ui/ui/widgets/accordion';\nwindow.$ = $;\n\nimport 'bootstrap-sass/assets/javascripts/bootstrap';\nimport '@fortawesome/fontawesome-free/css/all.css'; // This is huge, we should import specific icons.\nimport '../stylesheets/application.scss';\n\nimport BaseComponent from '../../components/base_component/base_component';\nwindow.BaseComponent = BaseComponent;\nimport '../javascripts/offline_handler';\nimport '../javascripts/component_builder';\nimport router from '../javascripts/router';\nwindow.loadPage = router.loadPage.bind(router);\n\nimport '../images/header-motif.png';\n\nrequire.context('../images', true)\n\nlet result = false;\nif (result) {\n let logo = 'logo.png';\n require(`../images/liquid/${logo}`); // Forces webpack to pack entire liquid folder.\n}\n","const useServiceWorker = false && ('serviceWorker' in navigator);\nexport default useServiceWorker;","//@flow\nimport BaseComponent from '../base_component/base_component'\n\nexport default class AboutUs extends BaseComponent {\n\n constructor(id: number, component_name: string) {\n super(id, component_name);\n this.navActivate();\n }\n\n navActivate() {\n $(this.component).find('.holder-about .nav-open').click(function (){\n if ($(this).hasClass('rotate-180')) {\n $('.holder-about .screen-this').fadeOut();\n $('.holder-about .nav-open').removeClass('rotate-180');\n $('.about-nav').removeClass('about-nav-expand');\n }\telse {\n $('.holder-about .screen-this').fadeIn();\n $('.holder-about .nav-open').addClass('rotate-180');\n $('.about-nav').addClass('about-nav-expand');\n if ($('.holder-about .nav-open').hasClass('rotate-180')) {\n $('.holder-about .nav-slice').click(function() {\n $('.holder-about .screen-this').fadeOut();\n $('.holder-about .nav-open').removeClass('rotate-180');\n $('.holder-about .about-nav').removeClass('about-nav-expand');\n });\n }\n }\n });\n }\n\n}\n","// @flow\nimport BaseComponent from '../../base_component/base_component'\n\nexport default class DownloadDocuments extends BaseComponent {\n download() {\n $(this.component)\n .closest('.data-table-component')\n .find('input[type=\"checkbox\"]:checked')\n .each((i: number, element: Element) => {\n let name = element.getAttribute('data-filename');\n let id = element.getAttribute('data-id');\n if (!name || !id) return;\n\n window.open(`/file/${name}?docRef=${id}`);\n })\n }\n}\n","// @flow\nimport BaseComponent from '../../base_component/base_component'\nimport componentLocator from '../../../assets/javascripts/component_locator'\n\nexport default class SearchBar extends BaseComponent {\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n this.enableFilters();\n }\n\n enableFilters() {\n let filtersActive = false;\n let $filterIcon = $(this.component).find('.filter-icon')\n componentLocator.getAll('filter_panel').then((filters: any[]) => {\n $filterIcon.click(() => {\n filtersActive = !filtersActive;\n filters.forEach((filter: any) => filter.toggle(filtersActive));\n $filterIcon.toggleClass('active', filtersActive);\n })\n filters.forEach(f => f.callbacks.push(isActive => {\n filtersActive = isActive;\n $filterIcon.toggleClass('active', isActive);\n }))\n });\n }\n}","// @flow\nimport BaseComponent from '../../base_component/base_component';\nimport {deferrablePost} from '../../../assets/javascripts/offline_handler';\n\nexport default class DownloadDocuments extends BaseComponent {\n save() {\n let selectedProducts = $('input[type=\"checkbox\"][data-type=\"product\"]:checked')\n .map((i, e) => `${$(e).data('id')}`).get();\n let availableProducts = $('input[type=\"checkbox\"][data-type=\"product\"]')\n .map((i, e) => `${$(e).data('id')}`).get();\n\n let updateData = {\n 'available_products': availableProducts,\n 'selected_products': selectedProducts\n }\n let headers: any = { 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content') };\n\n this.find('.title').hide();\n this.find('.fa-spinner').show();\n\n deferrablePost('/update_cris', updateData, headers).then(deferred => {\n setTimeout(() => {\n this.find('.fa-spinner').hide();\n this.find('.title').show();\n }, deferred ? 200 : 0);\n });\n }\n}\n","function scrollToElement(elements, inverse=false, outer='main') {\n let $outer = $(outer)\n let viewportScroll = $outer.scrollTop();\n let viewportTop = $outer.offset().top;\n let found = false;\n elements.each((_, dt) => {\n if (found) return;\n let elementTop = $(dt).offset().top;\n if (((elementTop - 1) > viewportTop && !inverse) ||\n ((elementTop + 1) < viewportTop && inverse)) {\n found = true;\n $outer.animate({scrollTop: (viewportScroll + elementTop - viewportTop)}, 500);\n }\n });\n}\n\nexport default function (id, _name, options) {\n let wrapper = options.wrapper || '.main-content__inner'\n let outer = options.outer || 'main'\n $(`#wrapper_${id}`).find('.scroll-holder.down').click(() => {\n scrollToElement($(wrapper), false, outer);\n });\n\n $(`#wrapper_${id}`).find('.scroll-holder.up').click(() => {\n scrollToElement($($(wrapper).get().reverse()), true, outer);\n });\n}\n","export default (id, _name, options) => {\n $(`#wrapper_${id}`).find('.toggle-holder').click(function() {\n $(this).toggleClass('active');\n let chevron = $(this).find('i');\n chevron.toggleClass('fa-chevron-left');\n chevron.toggleClass('fa-chevron-right');\n $(options.target).toggleClass('hidden');\n $(window).trigger('resize');\n });\n}\n","import BaseComponent from '../base_component/base_component'\n\nexport default class AjaxError extends BaseComponent {\n\n initialize() {\n this.errorCount = 0;\n this.find('.error-notification').click(() => {\n this.find('.error-container').show();\n })\n }\n\n functions() {\n return {\n handleAjaxError: this.addError.bind(this)\n }\n }\n\n close() {\n this.find('.error-container').hide();\n }\n\n addError(body, component) {\n this._injectError(body, component.name);\n this.find('.error-container style').remove();\n\n this.errorCount += 1;\n this.find('.error-notification .count').text(this.errorCount);\n this.find('.error-notification').show();\n }\n\n _injectError(body, name) {\n let id = `${this.id}_collapse${this.errorCount}`\n let template = `\n <div class=\"panel-heading\">\n <h4 class=\"panel-title\">\n <a data-toggle=\"collapse\" data-parent=\"${this.id}_accordion\" href=\"#${id}\">\n <span class=panel-title>${name.replace(/_/g, ' ')}</span>\n </a>\n </h4>\n </div>\n <div id=\"${id}\" class=\"panel-collapse collapse${this.errorCount == 0 ? ' in' : ''}\">\n <div class=\"panel-body\">\n ${body}\n </div>\n </div>\n `\n this.find('.panel-default').append(template);\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component';\nimport {deferrablePost} from '../../assets/javascripts/offline_handler';\n\nexport default class AvailableProducts extends BaseComponent {\n functions() {\n return {\n addSearch: (term: string) => this.filterBy(term),\n removeSearch: () => this.find('.product').show()\n }\n }\n\n filterBy(term: string) {\n this.find('.product').each((i, product) => {\n if ($(product).data('name').includes(term)) return;\n\n $(product).hide();\n })\n }\n\n request() {\n let requestedProducts = this.find('input[type=\"checkbox\"][data-type=\"product\"]:checked')\n .map((i, e) => `${$(e).data('name')}`).get();\n let headers: any = { 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content') };\n if (requestedProducts.length == 0) return;\n\n let paramsData = {products: requestedProducts}\n this.find('.title').hide();\n this.find('.fa-spinner').show();\n deferrablePost('/request_products', paramsData, headers).then(deferred => {\n this.find('.fa-spinner').hide();\n this.find('.title').show();\n this.find('.success-overlay').show();\n this.find(`.request-sent-${deferred ? 'off' : 'on'}line`).show();\n this.find(`.request-sent-${deferred ? 'on' : 'off'}line`).hide();\n })\n }\n\n hide() {\n this.find('.success-overlay').hide();\n }\n}","export default class BaseComponent {\n\n constructor(id, component_name, options = {}, extra_params = {}) {\n this.id = id;\n this.component_name = component_name;\n let component = document.getElementById('wrapper_' + this.id);\n this.options = options;\n this.extra_params = extra_params;\n \n if (component) {\n this.component = component\n };\n this.initialize();\n }\n\n // Called when the component is first created.\n initialize() {}\n\n find(selector) {\n return $(this.component).find(selector);\n }\n\n // Called when the component is removed from the page.\n finalize() {}\n\n // Called when the component has been loaded onto the page.\n onLoad() {}\n\n // Called once *all* components have bee loaded onto the page.\n onReady() {}\n\n // Functions exposed by the component (call via componentLocator.f.functionName(arg, ar2).\n functions() {\n return {};\n }\n\n // Called to remove the object from the page. Usually best left as-is.\n dismount() {\n this.component.innerHTML = '';\n }\n\n // Loads the component onto the page (calling the controller).\n // Use for deferred or updated components.\n rerender(asRerender = true) {\n window.__componentAdapter.render(this.id, asRerender);\n }\n\n // Sets an extraParam value for the component (injected via constructor).\n setParam(key, value) {\n window.__componentAdapter.setExtraParam(this.id, key, value);\n }\n}\n","// @flow\nimport BaseComponent from '../base_component/base_component'\nimport 'slick-carousel/slick/slick.css';\nimport 'slick-carousel/slick/slick-theme.css';\nimport 'slick-carousel';\nimport {isEqual, snakeCase} from \"lodash-es\";\n\nexport default class Carosel extends BaseComponent {\n carosel: JQuery;\n data: Array;\n\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n\n this.load(true);\n }\n\n load(initialLoad=false) {\n let self = this;\n var headers: any = {'Component-Initial-Table-Load': initialLoad.toString()};\n $.ajax({\n dataType: 'json',\n headers: headers,\n url: this.options.controller,\n success: (response) => { self.initCarosel(response); }\n });\n\n }\n\n initCarosel(data) {\n let container = $(this.component).find('.carosel-container');\n if (this.options.height) {\n container.css('height', this.options.height);\n }\n if (this.options.centerMode != false && !this.options.hero) {\n container.addClass('centered');\n }\n if (this.options.hero) {\n container.addClass('hero');\n }\n if (!this.options.hero && !this.options.responsive) {\n this.options.responsive = [\n {\n breakpoint: 600,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2\n }\n },\n {\n breakpoint: 480,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1\n }\n }\n ]\n }\n\n let carosel = $(this.component).find('.carosel')\n this.data = data.data;\n if (this.data.length > 0) {\n this.setContent(this.data)\n this.carosel = carosel.slick(this.getOptions(this.options))\n } else {\n this.setContent(\n `<div class='no-content-message'>\n <span>No data available</span>\n </div>`\n );\n }\n\n $(this.component).find('.carosel-spinner').hide();\n }\n\n setContent(content) { $(this.component).find('.carosel').html(content) }\n\n getOptions(options) {\n let slidesToShow, slidesToScroll, centerMode;\n if (options.hero) {\n slidesToShow = 1;\n slidesToScroll = 1;\n centerMode = false;\n } else {\n slidesToShow = options.slidesToShow ? options.slidesToShow : 3;\n slidesToScroll = options.slidesToScroll ? options.slidesToScroll : 3;\n centerMode = options.centerMode ? options.centerMode : true;\n if (slidesToShow > this.data.length) {\n slidesToShow = this.data.length;\n slidesToScroll = slidesToShow;\n centerMode = false;\n }\n }\n return {\n dots: options.dots ? options.dots : true,\n infinite: true,\n slidesToShow: slidesToShow,\n slidesToScroll: slidesToScroll,\n centerMode: centerMode,\n centerPadding: '60px',\n responsive: options.responsive\n }\n }\n}","import BaseComponent from '../base_component/base_component'\nimport {validatePassword} from '../scripts/validate_password/validate_password'\n\nexport default class ChangePassword extends BaseComponent {\n constructor(id: number, component_name: string) {\n super(id, component_name);\n $(this.component).find('#old_password').focus();\n this.addAsyncHooks();\n }\n\n addAsyncHooks() {\n this.find('#confirm').keyup(event => {\n let oldPassword = $('#new_password').val();\n let isMatch = oldPassword === $(event.target).val();\n this.whenInactiveFor(300, () => {\n let hint = this.find('#change_password_error');\n hint.text(isMatch ? '' : 'Password and confirmed password must be the same.');\n hint.toggle(!isMatch);\n });\n });\n this.find('#new_password').keyup(event => {\n let password = $(event.target).val();\n let result = password.length < 3 ? null : validatePassword(password);\n this.whenInactiveFor(300, () => {\n let hint = this.find('#change_password_error');\n hint.text(result);\n hint.toggle(!!result);\n });\n });\n }\n\n whenInactiveFor(time, callback) {\n let timeout = this.timeoutId = setTimeout(() => {\n this.timeoutId == timeout ? callback() : null\n }, time)\n }\n\n validate($this: JQuery, $: JQueryStatic) {\n $ = $ || window.$;\n $this = $this || $(this.component);\n var old_password = $.trim(($this.find('#old_password').val(): any));\n var new_password = $.trim(($this.find('#new_password').val(): any));\n var confirm = $.trim(($this.find('#confirm').val(): any));\n let validationResult = validatePassword(new_password);\n if (old_password == '') {\n $this.find('#change_password_error').show();\n $this.find('#change_password_error').text(\"You must enter your old password.\");\n $this.find('#old_password').focus();\n return false;\n } else if (validationResult) {\n $this.find('#change_password_error').text(validationResult);\n this.clearPasswords($this);\n return false;\n } else if (new_password != confirm) {\n $this.find('#change_password_error').text(\"Password and confirmed password must be the same.\");\n this.clearPasswords($this);\n return false;\n } else {\n $this.find('#change_password_error').hide();\n $this.find('button#change_password').prop('disabled', true);\n return true;\n }\n }\n\n clearPasswords($this: JQuery) {\n $this.find('#change_password_error').show();\n $this.find('#new_password').val('');\n $this.find('#confirm').val('');\n $this.find('#password').focus();\n }\n}","import BaseComponent from '../base_component/base_component'\n\nexport default class Confirmation extends BaseComponent {\n result: boolean;\n\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n }\n\n ok(){\n getComponent('modal').close();\n this.result = true;\n }\n\n cancel(){\n getComponent('modal').close();\n this.result = false;\n }\n\n getConfirmationResult(){\n return this.result;\n // return 5;\n }\n\n functions() {\n return {\n getConfirmationResult: () => this.getConfirmationResult()\n }\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\n\nexport default class ConsentBanner extends BaseComponent {\n constructor(id: number, component_name: string) {\n super(id, component_name);\n this.acceptCookies();\n this.setCookiesOnScroll();\n this.hideCookieMessage();\n }\n\n setCookie() {\n document.cookie = 'acceptedSingletrackCookies=1';\n document.cookie = \"path=''\";\n }\n\n hideCookieMessage() {\n const self = this;\n if (document.cookie.includes('acceptedSingletrackCookies=1')) {\n self.hideClass('.cookieMessage');\n }\n }\n\n hideClass(class_name: string) {\n $(class_name).hide();\n }\n\n acceptCookies() {\n const self = this;\n $('#acceptCookies').click(function() {\n self.setCookie();\n self.hideClass('.cookieMessage')\n });\n }\n\n setCookiesOnScroll() {\n const self = this;\n $(window).scroll( function () {\n if ($(window).scrollTop() > 50) {\n self.setCookie();\n self.hideClass('.cookieMessage')\n }\n });\n }\n}\n","\nimport BaseComponent from '../base_component/base_component'\nimport componentLocator from \"../../assets/javascripts/component_locator\";\n\nexport default class ContactActions extends BaseComponent {\n\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n }\n\n getSelectedContacts() {\n let selectedContacts = [];\n let selectedContactsMap = new Map();\n\n $(this.component)\n .closest('.data-table-component')\n .find('input[type=\"checkbox\"]:checked')\n .each((i: number, element: Element) => {\n let contactId = element.getAttribute('data-contact-id');\n let contactName = element.getAttribute('data-contact-name');\n if (contactId){\n selectedContacts.push(contactId);\n if(contactName){\n selectedContactsMap.set(contactId, contactName);\n }\n }\n });\n return selectedContactsMap;\n }\n\n expireContacts(){\n\n let contactsMap = this.getSelectedContacts();\n let contactIds = [ ...contactsMap.keys() ];\n let contactNames = [ ...contactsMap.values() ];\n getComponent('modal').show('confirmation', {title: 'Confirm Deactivation', message: `Are you sure you want to deactivate these contacts?\\n\\n${contactNames.join('\\n')}`});\n let result = false;\n /*componentLocator.waitUntilLoaded().then(async () => {\n result = componentLocator.f.getConfirmationResult();\n debugger;\n });*/\n\n // if(!result)\n // return;\n\n let headers: {[string]: any} = {\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')\n };\n $.ajax({\n type: \"POST\",\n url: '/expire_contacts',\n data: JSON.stringify({\n 'contact_ids': contactIds\n }),\n dataType: 'json',\n contentType: 'application/json',\n headers: headers,\n success: function(data) {\n console.log('Successfully deactivated contacts');\n componentLocator.f.reloadData()\n return data;\n },\n error: function() {\n console.log('Error: unable to deactivate contacts');\n }\n });\n\n }\n\n}","//@flow\nimport BaseComponent from '../base_component/base_component'\n\nexport default class ContactUs extends BaseComponent {\n\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n\n $('body').on('click', '#contact-form-submit', () => {\n if (this.validForm()) {\n this.startRequest();\n this.submitForm().done( () => { this.finishRequest() });\n }\n return false;\n })\n }\n\n validForm() {\n let acceptedPrivacyPolicy = $('#compliance-1').is(\":checked\");\n let hasEmail = $('#contact_email').val();\n if (!hasEmail) {\n this.displayRequiredLabel('#email-required-span');\n $('#contact_email').css({\"border\": \"2px solid red\"});\n return false;\n } else if (!acceptedPrivacyPolicy) {\n this.displayRequiredLabel('#compliance-required-span');\n return false;\n }\n return true;\n }\n\n displayRequiredLabel(id: string) {\n $(id).css(\"display\", \"inline-block\");\n }\n\n startRequest() {\n $('#contact-form-submit i').remove();\n $('#contact-form-submit').append(' <i class=\"fa fa-spinner fa-spin\" aria-hidden=\"true\"></i>')\n }\n\n submitForm(){\n let firstName = $('#contact_first_name').val();\n let lastName = $('#contact_last_name').val();\n let email = $('#contact_email').val();\n let company = $('#contact_company').val();\n let mobileNumber = $('#contact_mobile_number').val();\n let message = $('#contact_message').val();\n let acceptedPrivacyPolicy = $('#compliance-1').is(\":checked\");\n let acceptedMbMarketing = $('#compliance-2').is(\":checked\");\n let acceptedMbGroupMarketing = $('#compliance-3').is(\":checked\");\n\n let headers: {[string]: any} = {\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')\n };\n return $.ajax({\n type: \"POST\",\n url: '/contact_us',\n dataType: 'json',\n data: JSON.stringify({\n 'first_name': firstName,\n 'last_name': lastName,\n 'email': email,\n 'company': company,\n 'mobile_number': mobileNumber,\n 'message': message,\n 'accepted_privacy_policy': acceptedPrivacyPolicy\n }),\n contentType: 'application/json',\n headers: headers\n });\n }\n\n finishRequest() {\n $('.contact-form-inner').html(`\n <h2 class=\"form-title\">Thank you for email, someone will reach out to you soon.</h2>\n `)\n }\n}\n","// @flow\nimport BaseComponent from '../base_component/base_component';\nimport componentLocator from '../../assets/javascripts/component_locator';\nimport {deferrablePost} from '../../assets/javascripts/offline_handler';\nimport startCase from 'lodash-es/startCase';\n\nvar rowTemplate = `\n <div class=\"empty row custom-row item-group x12 s6\">\n <div class=mover></div>\n <div class=remove-row><i class=\"fa fa-close\"></i></div>\n <div class=add-item><i class=\"fa fa-plus\"></i></div>\n <div class=\"row-items item-container h-12\"></div>\n </div>\n`;\n\nvar cols = [[12], [6, 6], [4, 4, 4], [3, 3, 3, 3],\n [2, 3, 2, 3, 2], [2, 2, 2, 2, 2]];\n\nexport default class CustomDashboard extends BaseComponent {\n\n initialize() {\n this.isEditing = false;\n this.handlers = {};\n this.activeMenu = null;\n this.attachHandlers();\n this.handleMovers();\n this.find('.item-container .wrapper').each((_, e) => {\n let parts = $(e).attr('id').split('_');\n window.__componentAdapter.render(parts[parts.length - 1], false);\n });\n }\n\n attachHandlers() {\n this.find('.custom-dashboard').on('click', '.remove-item', (e: JQueryEventObject) => {\n this._removeComponent(e.target);\n })\n this.find('.custom-dashboard').on('click', '.remove-row', (e: JQueryEventObject) => {\n this._removeRow(e.target);\n })\n this.handlers.addMenuItem = (e: JQueryEventObject) => {\n this._openAddMenu($(e.target));\n e.stopPropagation();\n }\n this.find('.custom-dashboard').on('click', '.add-item', this.handlers.addMenuItem);\n this.find('.add-row').click(() => {\n if (this.find('.rows > .row').length >= 4) return;\n\n this.find('.rows').append(rowTemplate);\n this._fixRowHeight();\n });\n this.find('.create-sidebar, .remove-sidebar').click(() => {\n this.find('.sidebar-content').toggle();\n this.find('.create-sidebar').toggle();\n });\n }\n\n _removeComponent(element: EventTarget) {\n let $wrapper = $(element).closest('.remove-item').next();\n let component = window.getComponent($wrapper[0]);\n if (component) {\n component.dismount();\n componentLocator.deleteComponent(\n parseInt($wrapper.first().attr('data-component-id')));\n }\n let $outer = $wrapper.closest('.outer-item-group');\n $outer.removeClass('full');\n $outer.closest('.custom-dashboard').removeClass(`${$outer.attr('class').split(' ')[0]}-full`);\n\n let $row = $wrapper.closest('.row');\n $wrapper.parent().remove();\n if ($row.find('.col').length === 0) {\n $row.find('.remove-row').show();\n $row.addClass('empty');\n } else {\n this._fixColWidth($row);\n }\n }\n\n _removeRow(element: EventTarget) {\n $(element).closest('.row').remove();\n this._fixRowHeight();\n }\n\n _openAddMenu($element: JQuery) {\n if (this.activeMenu && this.activeMenu.is($element.closest('.add-item'))) {\n return this._addItem($element);\n } else if (this.activeMenu) {\n this._closeAddMenu();\n }\n $element = $element.closest('.add-item');\n $element.addClass('active');\n $element.find('.option').remove();\n this._getPossibleElements($element.closest('.outer-item-group')).forEach(component => {\n $element.append(`<div class=option data-val=${component}>` +\n `${startCase(component)}</div>`);\n });\n\n this.activeMenu = $element;\n this.handlers.closeMenu = this._closeAddMenu.bind(this);\n $(document).on('click', this.handlers.closeMenu);\n }\n\n _getPossibleElements(itemGroup: JQuery): Array<any> {\n let activeElements = itemGroup.find('.item-container .col')\n .map((_, e) => $(e).attr('data-name')).toArray();\n return this.options[itemGroup.attr('data-items')].filter(e => !activeElements.includes(e));\n }\n\n _closeAddMenu() {\n $(document).off('click', this.handlers.closeMenu);\n\n if (this.activeMenu === null || this.activeMenu === undefined) return;\n\n this.activeMenu.removeClass('active');\n this.activeMenu = null;\n }\n\n _addItem($element: JQuery) {\n if (!$element.is('.option')) return;\n\n let $row = $element.closest('.item-group');\n let $rows = $element.closest('.outer-item-group');\n let name = $element.attr('data-val');\n let id = this.options[name].toString();\n let element = this._generateElement(id, name);\n $row.find('.item-container').append(element);\n window.__componentAdapter.render(id, false);\n\n let isFull = $rows.is($row) || this._getPossibleElements($rows).length == 0;\n $rows.toggleClass('full', isFull);\n $rows.closest('.custom-dashboard').toggleClass(`${$rows.attr('class').split(' ')[0]}-full`, isFull);\n\n $row.removeClass('empty');\n this._fixColWidth($row);\n this._closeAddMenu();\n }\n\n _generateElement(id: string, name: string) {\n return `<div class=\"col x12 s12 h-12\" data-name=\"${name}\">\n <div class=\"remove-item\"><i class=\"fa fa-close\"></i></div>\n <div class=\"wrapper\" id=\"wrapper_${id}\" data-component-id=\"${id}\"></div>\n </div>`;\n }\n\n handleMovers() {\n let $component = $(this.component);\n let originalY = 0; // MouseY at move\n let netChange = 0;\n let [upperElement, upperHeight, upperH] = [$(), 0, 0];\n let [lowerElement, lowerHeight, lowerH] = [$(), 0, 0];\n\n let dragger = event => {\n let distanceMoved = event.pageY - originalY;\n if (distanceMoved > 0) {\n netChange = (distanceMoved / lowerHeight) * lowerH;\n } else if (distanceMoved < 0) {\n netChange = (distanceMoved / upperHeight) * upperH;\n }\n if (Math.abs(netChange) <= 0.8) return; \n netChange = Math.round(netChange);\n\n let newUpperH = Math.max(1, Math.min(upperH + lowerH - 1, upperH + netChange));\n let newLowerH = Math.max(1, Math.min(upperH + lowerH - 1, lowerH - netChange));\n this._setRowClass(upperElement, newUpperH);\n this._setRowClass(lowerElement, newLowerH);\n };\n let onMouseUp = () => {\n $(window).off('mouseup', onMouseUp);\n $component.off('mousemove', dragger);\n }\n this.find('.custom-dashboard').on('mousedown', '.mover', (event: JQueryEventObject) => {\n lowerElement = $(event.target).parent();\n upperElement = lowerElement.prev();\n\n originalY = event.pageY;\n\n lowerH = this._getHClass(lowerElement);\n lowerHeight = lowerElement.height();\n upperH = this._getHClass(upperElement);\n upperHeight = upperElement.height();\n\n $(window).on('mouseup', onMouseUp);\n $component.on('mousemove', dragger);\n })\n }\n\n _getHClass(element: JQuery) {\n let hClass = element.attr('class').split(/\\s+/)\n .filter(c => c.match(/s[0-9]{1,2}/))[0].substr(1);\n return parseInt(hClass);\n }\n\n _fixColWidth(row: JQuery) {\n let rowItems = row.find('.row-items').children();\n let colWidths = cols[rowItems.length - 1];\n rowItems.each((i, child) => this._setRowClass($(child), colWidths[i]));\n }\n\n _fixRowHeight(ignoreEmpty:boolean=false) {\n let rowCount = this.find(`.rows > .row${ignoreEmpty ? ':not(.empty)' : ''}`).length;\n this.find(`.rows > .row${ignoreEmpty ? ':not(.empty)' : ''}`).each((_, element) => {\n this._setRowClass($(element), 12 / rowCount)\n })\n this.find('.add-row').toggleClass('hide', this.find('.rows > .row').length === 4);\n }\n\n _setRowClass($row: JQuery, newValue: (string|number)) {\n $row.removeClass((_, name) => (name.match (/s[0-9]{1,2}/g) || []).join(' '))\n .addClass(`s${newValue}`);\n }\n\n functions() {\n return {\n toggle: (mode: string) => mode == 'EditLayout' ? this.toggleEditMode() : null\n }\n }\n\n toggleEditMode() {\n this.isEditing = !this.isEditing;\n this.find('.custom-dashboard').toggleClass('editing', this.isEditing);\n this._fixRowHeight(!this.isEditing);\n\n if (!this.isEditing) {\n this.saveStructure();\n };\n }\n\n saveStructure() {\n let sidebarName = $('.sidebar-items .col').attr('data-name');\n let topbarName = $('.topbar-items .col').attr('data-name');\n let layout = {sidebar: (sidebarName || null), top: (topbarName || null), rows: []}\n this.find('.rows > .row').each((_, row) => {\n let heightClass = row.className.match(/(?:^| )(s[0-9]{1,2})(?:$| )/)\n layout.rows.push({\n height: heightClass ? heightClass[1].substr(1) : '12',\n components: $(row).find('.row-items > .col[data-name]')\n .map((_, e) => $(e).attr('data-name')).toArray()\n })\n });\n deferrablePost('/save_layout', {layout: JSON.stringify(layout)});\n }\n}","export default class DtStub {\n constructor() {\n this.col = null;\n this.term = null;\n this.drawn = false;\n this.isVisible = null;\n }\n\n column(col) {\n this.col = col;\n return this;\n }\n\n columns() {\n return this;\n }\n\n search(term, regex?, smart?) {\n this.term = term;\n return this;\n }\n\n draw() {\n this.drawn = true;\n }\n\n visible(val) {\n this.isVisible = val;\n return val;\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\nimport {snakeCase, camelCase, isEqual} from 'lodash-es'\nimport formatters from './formatters';\nimport 'datatables.net';\nimport FilterContext from './filter_context';\n\nimport type {FilterFunctions} from './filter_context'\nimport type DataTables from 'datatables.net';\n\nexport default class DataTable extends BaseComponent {\n columnIndexes: {[string]: number};\n filterContext: FilterContext;\n params\n dismounting: boolean;\n currentRequest: object;\n reloadTimeout: ?TimeoutID\n\n constructor(id: number, component_name: string, options: any, extra_params: {}) {\n super(id, component_name, options, extra_params);\n let callback = this._handleFiltered.bind(this);\n this.filterContext = new FilterContext(this.id, null, callback, this.options.sync_only);\n this.load(true);\n }\n\n onReady() {\n if (this.filterContext.table) {\n this.filterContext.table.draw();\n }\n }\n\n _handleFiltered() {\n if (this.options.reload) {\n this.reload();\n }\n if (window._functions.dataTableModified) {\n window._functions.dataTableModified();\n }\n }\n\n reload() {\n $(this.component).find('.dataTables_scrollBody .loading').remove();\n $(this.component).find('.dataTables_scrollBody')\n .append('<div class=\"loading\">Loading more results</div>');\n if (this.reloadTimeout) clearTimeout(this.reloadTimeout);\n this.reloadTimeout = setTimeout(() => {\n this.reloadTimeout = null;\n this.load(false, true);\n }, 400);\n }\n\n addFilter(column: ?string): FilterFunctions {\n return this.filterContext.add(column);\n }\n\n setFilter(column: ?string): FilterFunctions {\n return this.filterContext.set(column);\n }\n\n toggleFilter(column: ?string, isSet: boolean) {\n return isSet ? this.addFilter(column) : this.removeFilter(column);\n }\n\n removeFilter(column: ?string): FilterFunctions {\n return this.filterContext.clear(column);\n }\n\n removeFilters(column: ?string): void {\n this.filterContext.clearAll(column);\n }\n\n clear() {\n if (!this.filterContext.table) return;\n this.filterContext.table.destroy();\n $(this.component).find('table').html('');\n }\n\n\n functions() {\n return {\n addSearch: (term: string, col: ?string) => this.addFilter(col).search(term),\n removeSearch: (term: ?string, col: ?string) => this.removeFilter(col).search(term),\n showColumn: (name: string) => this.filterContext.toggleColumn(name, true),\n hideColumn: (name: string) => this.filterContext.toggleColumn(name, false),\n addDateFilter: (startDate: any, endDate: any) => this.addFilter('Date').dateRange(startDate, endDate),\n removeDateFilter: () => this.filterContext.table ? this.removeFilter('Date').dateRange() : null,\n toggleTag: (value: string, category: string, checked: boolean) => this\n .toggleFilter('Tags', checked).tagSearch(value, category),\n reloadData: () => this.load()\n }\n }\n\n load(initialLoad:boolean=false, isReload:boolean=false) {\n let self = this;\n let description = self.filterContext.getDescription();\n if (this.params && isEqual(description, this.params)) return;\n this.params = Object.assign( {}, this.getParams(), description );\n var headers: any = {'Component-Initial-Table-Load': initialLoad.toString()};\n self.currentRequest = $.ajax({\n dataType: 'json',\n headers: headers,\n url: this.options.controller,\n data: this.params,\n beforeSend : function() {\n if (self.currentRequest != null) self.currentRequest.abort();\n },\n success: (response) => {\n if (self.dismounting) return;\n self.finishedLoading();\n let options = self.getDefaultOptions(response);\n let $component = $(self.component);\n self.clear();\n response.columns.forEach(column => {\n $component.find('.headers').append(\n `<th class=\"col_${snakeCase(column[0])}\">${column[0]}</th>`);\n self.handleFormatters(column, options, $component);\n });\n\n if (self.dismounting) return;\n self.filterContext.table = $(self.component).find('table').DataTable(options);\n self.filterContext.columnIndexes = self.columnIndexes;\n self.filterContext.apply(isReload);\n self.addIcons();\n let trs = self.filterContext.table.$('tr');\n Object.entries(response.extraClasses || {}).forEach(([className, rows: any]) => {\n rows.forEach(i => $(trs[i]).addClass(className));\n });\n $component.find('.action-wrapper').show();\n\n if (window._functions && window._functions.dataTableModified) {\n window._functions.dataTableModified();\n }\n // Hide the header containing the page size options\n $('.dataTables_length').hide();\n }});\n }\n \n finalize() {\n this.dismounting = true;\n this.filterContext.dismount();\n }\n\n handleFormatters(column: Array<Map<String, String> | String>, options: any, $component: JQuery) {\n column.slice(1).forEach((formatter) => {\n let config = null;\n if (typeof(formatter) == 'object') {\n Object.keys(formatter).forEach( (fm) => {\n config = formatter[fm]\n this.handleFormatter(column, config, fm, options, $component)\n });\n } else {\n this.handleFormatter(column, config, formatter, options, $component)\n }\n }, this);\n }\n\n handleFormatter(column: Array<Map<String, String> | String>, config: any, formatter: any, options: any, $component: JQuery) {\n let formatterFunc = formatters[camelCase(formatter)];\n if (!formatterFunc) {\n throw `Could not find formatter with name ${camelCase(formatter)}`;\n }\n formatterFunc(column[0], config, options, $component);\n }\n\n getDefaultOptions(response: any): DataTables$Settings {\n this.columnIndexes = response.columns.reduce((acc, column, index) => {\n acc[column[0]] = index;\n return acc;\n }, {});\n let stripes = this.options.stripe ? this.options.stripe.split(';') : ['odd', 'even']\n stripes = stripes.map(name => `stripe_${this.id} ${name}`)\n return {\n data: response.data,\n columns: response.columns.map(column =>\n ({name: column[0], title: column[0], orderable: false})),\n paging: !!this.options.paging,\n pagingType: this.options.paging,\n pageLength: this.options.page_length,\n destroy: true,\n scrollX: true,\n scrollY: this.options.height ? `${this.options.height}` : '100%',\n scrollCollapse: false,\n stripeClasses: stripes,\n order: ([]: any),\n oLanguage: {\n sEmptyTable: this.options.empty_message ? this.options.empty_message : 'No data available'\n },\n dom: 'lrtp'\n };\n }\n\n getParams() {\n let opts = Object.assign({}, this.options);\n opts.async = true;\n Object.keys(this.extra_params || {}).forEach((param) => {\n opts[`param_${param}`] = this.extra_params[param]\n })\n return Object.keys(opts).filter( key => key.startsWith('param_') )\n .reduce((params, key) => {\n params[key] = opts[key]; \n return params\n }, {})\n }\n\n addIcons() {\n let $component = $(this.component);\n $component.find('.file_type').html('<i class=\"fa fa-file-o\" aria-hidden=\"true\"></i>');\n $component.find('.file_type.application_pdf').html('<i class=\"fa fa-file-pdf-o\" aria-hidden=\"true\"></i>');\n $component.find('.file_type.text_html').html('<i class=\"fa fa-file-code-o\" aria-hidden=\"true\"></i>');\n $component.find('.file_type.text_plain').html('<i class=\"fa fa-file-o\" aria-hidden=\"true\"></i>');\n $component.find('.file_type.video_mp4').html('<i class=\"fa fa-file-video-o\" aria-hidden=\"true\"></i>');\n $component.find('.file_type.image_jpeg, .file_type.image_gif, .file_type.image_png')\n .html('<i class=\"fa fa-file-image-o\" aria-hidden=\"true\"></i>');\n $component.find('.file_type.application_vnd_ms_excel, .file_type.application_vnd_openxmlformats_officedocument_spreadsheetml_sheet')\n .html('<i class=\"fa fa-file-excel-o\" aria-hidden=\"true\"></i>');\n }\n\n finishedLoading() {\n $(this.component).find('.loading-content').hide()\n }\n}\n","//@flow\n\nimport Search from \"./filters/search\";\nimport DateRange from \"./filters/date_range\";\nimport TagSearch from \"./filters/tag_search\";\n\nimport type DataTables from 'datatables.net';\nimport type BaseFilter from './filters/base_filter';\n\nexport type FilterFunctions = {\n search: (searchText: ?string) => void,\n tagSearch: (value: ?string, category: ?string) => void,\n dateRange: (minDate: ?Date, maxDate: ?Date) => void\n}\n\nexport default class FilterContext {\n id: number;\n async: boolean;\n table: DataTables.Api;\n filters: {search: Search, dateRange: DateRange, tagSearch: TagSearch};\n columnIndexes: {[string]: number};\n functions: ((settings: any, data: string[],\n dataIndex: number, columnIndex: {[string]: number}) => boolean)[];\n filterFunc: (settings: any, data: any, dataIndex: number) => void;\n callback: () => void;\n\n constructor(id: number, table: DataTables.Api, callback: () => void, sync_only:boolean=false) {\n this.table = table;\n this.id = id;\n this.functions = [];\n this.callback = callback;\n this.async = !sync_only;\n \n this.filters = this.getFilters(this.apply.bind(this));\n this.filterFunc = this.filterFunction.bind(this);\n $.fn.dataTable.ext.search.push(this.filterFunc);\n }\n\n getFilters(apply: () => void) {\n return {\n search: new Search(apply),\n dateRange: new DateRange(apply),\n tagSearch: new TagSearch(apply)\n }\n }\n\n toggleColumn(name: string, visible: ?boolean = undefined) {\n let column = this.table.column(this.columnIndexes[name]);\n visible = visible == undefined ? !column.visible() : visible;\n column.visible(visible);\n }\n\n getContexts(): FilterFunctions {\n if (this.callback) this.callback();\n \n return {\n search: this.filters.search.context,\n dateRange: this.filters.dateRange.context,\n tagSearch: this.filters.tagSearch.context\n }\n }\n\n add(column: ?string): FilterFunctions {\n Object.values(this.filters).forEach((filter: any) => {\n filter.prime(column, filter.addFilter);\n })\n return this.getContexts();\n }\n\n set(column: ?string): FilterFunctions {\n Object.values(this.filters).forEach((filter: any) => {\n filter.prime(column, filter.setFilter);\n })\n return this.getContexts();\n }\n\n clear(column: ?string): FilterFunctions {\n Object.values(this.filters).forEach((filter: any) => {\n filter.prime(column, filter.clearFilter);\n })\n return this.getContexts();\n }\n\n clearAll(column: ?string): void {\n Object.values(this.filters).forEach((filter: any) =>\n filter.prime(undefined, filter.clearFilter).call());\n }\n\n apply(isReload: boolean=false) {\n this.table.search('').columns().search('');\n this.functions = [];\n if (this.async && !isReload) {\n Object.values(this.filters).forEach((filter: any) => {\n let func = filter.asFunction();\n if (func) {\n this.functions.push(func);\n } else {\n filter.apply(this.table);\n }\n }, this);\n }\n this.table.draw();\n }\n\n dismount() {\n let funcIndex = $.fn.dataTable.ext.search.indexOf(this.filterFunc);\n if (funcIndex !== -1) {\n $.fn.dataTable.ext.search.splice(funcIndex, 1);\n }\n }\n\n filterFunction(settings: any, data: any, dataIndex: number) {\n return this.functions.every(f => f(settings, data, dataIndex, this.columnIndexes));\n }\n\n getDescription() {\n return (Object.values(this.filters)).reduce((array, filter: any) =>\n ({...array, ...filter.getDescription()}), {});\n }\n}","//@flow\nimport type DataTables from 'datatables.net';\n\nexport default class BaseFilter {\n callback: () => void;\n invoke: () => void;\n column: ?string;\n\n constructor(callback: () => void) {\n this.callback = callback;\n this.column = null;\n }\n\n prime(column: ?string, func: () => void) {\n this.invoke = () => {\n this.column = column;\n func.bind(this)();\n this.callback();\n }\n return this;\n }\n\n addFilter(): void {\n throw 'addFilter is not defined for this filter.';\n }\n setFilter(): void {\n throw 'setFilter is not defined for this filter.';\n }\n clearFilter(): void {\n throw 'clearFilter is not defined for this filter.';\n }\n\n apply(dataTable: DataTables.Api) {}\n asFunction(): (void | ((settings: any, data: any, dataIndex: number,\n columnIndex: {[string]: number}) => boolean)) {}\n\n getDescription() {\n return {}\n }\n}","//@flow\nimport BaseFilter from './base_filter'\nimport type DataTables from 'datatables.net';\n\nexport default class DateRange extends BaseFilter {\n filters: {[string]: [?Date, ?Date]}\n minDate: ?Date\n maxDate: ?Date\n context: (minDate: ?Date, maxDate: ?Date) => void\n\n constructor(callback: () => void) {\n super(callback);\n this.filters = {}\n this.context = this.call.bind(this);\n }\n\n call(minDate: ?Date, maxDate: ?Date): void {\n this.minDate = minDate;\n this.maxDate = maxDate;\n this.invoke()\n }\n\n addFilter(): void {\n return this.setFilter();\n }\n\n setFilter(): void {\n if (!this.column) throw 'Cannot filter date across all columns';\n this.filters[this.column] = [this.minDate, this.maxDate];\n }\n\n clearFilter(): void {\n if (this.column) {\n delete this.filters[this.column];\n } else {\n this.filters = {}\n }\n }\n\n asFunction(): (void | ((settings: any, data: string[], dataIndex: number,\n columnIndex: {[string]: number}) => boolean)) {\n let filters = this.filters;\n if (Object.keys(filters).length === 0) return undefined;\n return (settings, data: string[], dataIndex: number, columnIndex: {[string]: number}) => {\n return Object.keys(filters).every(column => {\n let [minDate, maxDate] = filters[column];\n let foundDate = new Date(data[columnIndex[column]].substring(0, 10));\n return (minDate || new Date(0)) <= foundDate &&\n foundDate <= (maxDate || new Date(9999, 1));\n })\n };\n }\n\n getDescription(): any {\n let keys = Object.keys(this.filters);\n if (keys.length === 0) return {};\n if (keys.length === 1) {\n let [startDate, endDate] = this.filters[keys[0]];\n let result = {};\n if (endDate) {\n endDate.setHours(23,59,59,999);\n }\n if (startDate) result.start_date = startDate.toISOString();\n if (endDate) result.end_date = endDate.toISOString();\n return result;\n } \n return {dateFilters: this.filters}\n }\n}","//@flow\nimport BaseFilter from './base_filter'\nimport type DataTables from 'datatables.net';\n\nexport default class Search extends BaseFilter {\n filters: {[string|null|void]: Set<string>}\n searchText: ?string\n context: (searchText: ?string) => void\n\n constructor(callback: () => void) {\n super(callback);\n this.filters = {}\n this.searchText = null;\n this.context = this.call.bind(this);\n }\n\n call(searchText: ?string): void {\n this.searchText = searchText;\n this.invoke()\n }\n\n addFilter(): void {\n this.filters[this.column] = this.filters[this.column] || new Set();\n this.filters[this.column].add(this.searchText ||'');\n }\n\n setFilter(): void {\n this.filters[this.column] = new Set([this.searchText || '']);\n }\n\n clearFilter(): void {\n if (this.searchText) {\n if (this.filters[this.column]) {\n this.filters[this.column].delete(this.searchText);\n }\n return;\n }\n if (this.column) {\n this.filters[this.column] = new Set();\n } else {\n this.filters = {}\n }\n }\n\n apply(dataTable: DataTables.Api): void {\n Object.keys(this.filters).forEach(filter => {\n if (this.filters[filter].size === 0) return;\n let filterText = `${Array.from(this.filters[filter]).join(' ')}`;\n\n if (filter !== 'undefined') {\n dataTable.column(`${filter}:name`)\n .search(filterText, false, true);\n } else {\n dataTable.search(filterText, false, true);\n }\n }, this);\n }\n\n getDescription(): any {\n let keys = Object.keys(this.filters);\n switch(keys.length) {\n case 0: return {}\n case 1: return {text: Array.from(this.filters[keys[0]]).join(' ')}\n default: return {text: this.filters}\n }\n }\n}\n","//@flow\nimport BaseFilter from './base_filter'\nimport type DataTables from 'datatables.net';\n\nexport default class TagSearch extends BaseFilter {\n filters: {[string|null|void]: {[string]: Set<string>}};\n searchText: ?string;\n category: ?string;\n context: (searchText: ?string) => void;\n\n constructor(callback: () => void) {\n super(callback);\n this.filters = {}\n this.searchText = this.category = null;\n this.context = this.call.bind(this);\n }\n\n call(searchText: ?string, category: ?string): void {\n this.searchText = searchText;\n this.category = category;\n this.invoke()\n }\n\n addFilter(): void {\n let cat = this.category || ''\n if (!this.filters[this.column] || !this.filters[this.column][cat]) {\n return this.setFilter();\n }\n\n this.filters[this.column][cat].add(this.searchText ||'');\n }\n\n setFilter(): void {\n let col = this.filters[this.column] = this.filters[this.column] || {};\n col[this.category || ''] = new Set([this.searchText || '']);\n }\n\n clearFilter(): void {\n if (this.searchText) {\n let set = this.filters[this.column][this.category || ''];\n set.delete(this.searchText);\n if (set.size === 0) {\n delete this.filters[this.column][this.category || '']\n }\n return;\n }\n if (this.column) {\n this.filters[this.column] = {};\n } else {\n this.filters = {}\n }\n }\n\n apply(dataTable: DataTables.Api): void {\n Object.keys(this.filters).forEach(filter => {\n if (!this.filters[filter] ||\n Object.keys(this.filters[filter]).length === 0) return;\n let filterTags = new Set();\n Object.values(this.filters[filter]).forEach((tags: any) =>\n tags.forEach(t => filterTags.add(t)));\n let filterText = `((^|,|;)(${Array.from(filterTags).join('|')})($|,|;))`;\n\n if (filter !== 'undefined') {\n dataTable.column(`${filter}:name`).search(filterText, true, false);\n } else {\n dataTable.search(filterText, true, false);\n }\n }, this);\n }\n\n getDescription(): any {\n let tagFilters = {}\n Object.values(this.filters).forEach((tags: any) => {\n Object.keys(tags).forEach((category: string) => {\n let cat = tagFilters[category] = tagFilters[category] || new Set();\n tags[category].forEach(tag => cat.add(tag));\n })\n })\n let categories = Object.keys(tagFilters);\n if (categories.length === 0) return {};\n categories.forEach(category => {\n tagFilters[category] = Array.from(tagFilters[category]).join(';');\n })\n return {tag_filters: tagFilters}\n }\n}","// @flow\nimport dateFormat from \"./formatters/date_format\";\nimport orderable from \"./formatters/orderable\";\nimport preview from './formatters/preview';\nimport style from './formatters/style';\nimport rating from './formatters/rating';\nimport order from './formatters/order';\nimport className from './formatters/class_name';\nimport roadshowRequestSlot from './formatters/roadshow_request_slot';\n\nexport default {\n dateFormat: dateFormat,\n orderable: orderable,\n preview: preview,\n style: style,\n rating: rating,\n order: order,\n roadshowRequestSlot: roadshowRequestSlot,\n className: className\n};","// @flow\nimport type {DataTables} from 'datatables.net';\n\nexport default function className(column: String, options: any,\n dtSettings: DataTables.Settings, component: JQuery) {\n let col = dtSettings.columns.find(c => c.title == column);\n col.className = options;\n}","// @flow\nimport type {DataTables} from 'datatables.net';\n\nexport default function dateFormat(column: String, options: any,\n dtSettings: DataTables.Settings, component: JQuery) {\n}","// @flow\nimport type {DataTables} from 'datatables.net';\n\nexport default function order(column: String, options: any,\n dtSettings: DataTables.Settings, component: JQuery) {\n let col = dtSettings.columns.find(c => c.title == column);\n let colIndex = dtSettings.columns.indexOf(col);\n dtSettings.order.push([colIndex, options]);\n}","// @flow\nimport type {DataTables} from 'datatables.net';\n\nexport default function orderable(column: String, options: any,\n dtSettings: DataTables.Settings, component: JQuery) {\n dtSettings.columns.find(c => c.title == column).orderable = (options == null ? true : options);\n}","// @flow\nimport type {DataTables} from 'datatables.net';\n\nexport default function preview(column: String, options: any,\n dtSettings: DataTables.Settings, component: JQuery) {\n dtSettings.columns.find(c => c.title == column).visible = (options == null ? false : !options);\n}","// @flow\nimport type {DataTables} from 'datatables.net';\n\nexport default function rating(column: String, options: any, dtSettings: DataTables.Settings, component: JQuery) {\n dtSettings.columns.find(c => c.title == column).rating = (options == null ? true : options);\n $('body').on('mouseover', '.activity-rating-star', function () {\n $(this).addClass('selected')\n $(this).prevAll().addClass('selected')\n })\n\n $('body').on('mouseout', '.activity-rating-star', function () {\n $(this).removeClass('selected')\n $(this).prevAll().removeClass('selected')\n })\n}","// @flow\nimport type {DataTables} from 'datatables.net';\n\nexport default function roadshowRequestSlot(column: String, options: any, dtSettings: DataTables.Settings, component: JQuery) {\n dtSettings.columns.find(c => c.title == column).roadshowRequestSlot = (options == null ? true : options);\n $('body').on('click', '.request-slot', function () {\n let roadshowId = $(this).data('roadshow-id')\n \n let buttonContent = $(this).text()\n $(this).html(buttonContent + ' <i class=\"fa fa-spinner fa-spin\" aria-hidden=\"true\"></i>')\n\n function requestDone(button){\n button.addClass('btn-success')\n button.html('Request Sent! <i class=\"fa fa-check\" aria-hidden=\"true\"></i>')\n }\n setTimeout(requestDone, 1500, $(this));\n })\n}","// @flow\nimport snakeCase from 'lodash-es/snakeCase';\nimport type {DataTables} from 'datatables.net';\n\nexport default function style(column: String, options: any,\n dtSettings: DataTables.Settings, component: JQuery) {\n let dtColumn= dtSettings.columns.find(c => c.title == column);\n Object.keys(options).forEach(option => dtColumn[snakeCase(option)] = options[option]);\n}","export default class Dialogue extends BaseComponent {\n functions() {\n return {\n setDialogHeader: text => this.find('.dialogue-header').text(text),\n setDialogText: this.setText.bind(this),\n showDialog: name => this.show(name),\n hideDialog: this.hide.bind(this),\n completeDialogLoading: () => this.find('.loading').removeClass('loading')\n }\n }\n\n setTitle(text) {\n this.find('.title-text').html(text + '<div class=title-triangle></div>')\n }\n\n setText(text) {\n this.find('.dialogue-text').html(text)\n }\n\n show(name) {\n if (name && this.options.name != name) {\n return;\n }\n this.find('.dialogue-container').removeAttr('hidden');\n }\n\n hide() {\n this.find('.dialogue-container').attr('hidden', 'hidden');\n }\n\n handleOk() {\n if (_functions.handleDialogOk) {\n _functions.handleDialogOk(this.options.name);\n }\n this.hide();\n }\n\n handleCancel() {\n if (_functions.handleDialogCancel) {\n _functions.handleDialogCancel(this.options.name);\n }\n this.hide();\n }\n}","\n//@flow\nimport BaseComponent from '../base_component/base_component'\nimport componentLocator from '../../assets/javascripts/component_locator'\nimport TagSection from './tag_section'\nimport 'bootstrap-datepicker';\n\nimport type DataTable from '../data_Table/data_table'\n\nexport default class FilterPanel extends BaseComponent {\n isOpen: boolean;\n dateSet: boolean;\n $component: JQuery;\n datePickers: JQuery;\n tagContainer: JQuery;\n tagSections: TagSection[];\n dataTables: DataTable[]\n callbacks: (boolean => void)[]\n\n // TODO: Filter panel takes 100ms to initialise due to a *lot* of jquery selectors.\n // These can be significantly reduced via n+1 techniques,\n // but it's probably not a priority for now.\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n this.isOpen = false;\n this.$component = $(this.component);\n this.dataTables = [];\n this.callbacks = [];\n\n this.initPanel();\n this.initFiltering(options['tag_filters']);\n }\n\n finalize() {\n this.resetDateFilter();\n $(this.component).find('input[type=\"checkbox\"]:checked').click();\n }\n\n initPanel() {\n this.datePickers = this.$component.find('.datepicker');\n this.datePickers.on('keydown', (e) => {\n if (e.key === 'Backspace') {\n this.resetDateFilter();\n }\n });\n this.tagContainer = this.$component.find('.selected-tags');\n\n this.initDatePicker();\n this.$component.find('.screen,.search-button').on('click', () => this.closePanel());\n this.$component.find('.clear-button').on('click', () => this.closePanel(true));\n }\n\n initDatePicker() {\n this.$component.find('.datepicker-container').datepicker({\n inputs: this.datePickers,\n format: (this.options.date_format || 'dd/mm/yyyy'),\n autoclose: true,\n keepEmptyValues: true,\n orientation: 'bottom'\n });\n }\n\n async initFiltering(tagFilters: {[string]: string[]}[]) {\n this.dataTables = await componentLocator.getAll('data_table');\n this.tagSections = $(this.$component).find('.tag_filters').children().toArray().map(element => {\n let name = element.getAttribute('data-group-name') || '';\n return new TagSection(name, this, element);\n })\n\n this.datePickers.change(this.filterDates.bind(this));\n }\n\n filterDates(picker) {\n let start = $(this.datePickers[0]);\n let end = $(this.datePickers[1]);\n if (start.val() === '' && end.val() === '') {\n return this.removePill('dateRange');\n };\n if (start.val() === '' || end.val() == '') {\n (start.val() == '' ? start : end).datepicker('show');\n return;\n }\n this.dateSet = true;\n\n let startDate = start.datepicker('getUTCDate');\n let endDate = end.datepicker('getUTCDate');\n this.showPill('dateRange',\n `${(start.val(): any)} - ${(end.val(): any)}`,\n this.resetDateFilter.bind(this));\n this.dataTables.forEach(dt => dt.addFilter('Date').dateRange(startDate, endDate));\n }\n\n showPill(key: string, text: string, callback: () => any) {\n this.removePill(key, true);\n let pill = `\n <button class=\"btn btn-default\" type=\"button\" data-key=\"${key}\">\n <span class=\"glyphicon glyphicon-remove\"></span> ${text}\n </button>\n `\n let $tags = this.tagContainer.append(pill);\n $tags.find(`[data-key=\"${key}\"]`).click(callback);\n }\n\n removePill(key: string, adding: boolean = false) {\n let pill = $(this.component).find(`[data-key=\"${key}\"]`)\n this.tagContainer.toggleClass('empty',\n !!(pill.length && this.tagContainer.children().length <= 1 && !adding));\n return pill.remove();\n }\n \n closePanel(reset: boolean = false) {\n this.toggle(false);\n\n if (reset) this.finalize();\n\n this.tagSections && this.tagSections.forEach(section => section.toggle(false));\n }\n\n resetDateFilter() {\n this.datePickers.datepicker('clearDates');\n this.dataTables.forEach(dt => dt.removeFilter('Date').dateRange());\n this.removePill('dateRange');\n this.dateSet = false;\n }\n\n toggle(isOpen: ?boolean) {\n this.isOpen = isOpen == null ? !this.isOpen : isOpen;\n this.$component.find('.filters-panel').toggleClass('active', this.isOpen);\n this.$component.find('.screen').toggleClass('active', this.isOpen);\n this.callbacks.forEach(callback => callback(this.isOpen));\n if (isOpen) {\n componentLocator.getAll('user_panel')\n .then(panel => panel.forEach((p: any) => p.toggle(false)));\n }\n }\n}","//@flow\nimport componentLocator from '../../assets/javascripts/component_locator'\nimport type DataTable from '../data_table/data_table'\nimport type FilterPanel from './filter_panel';\n\nexport default class TagSection {\n groupName: string;\n dataTables: DataTable[];\n panel: FilterPanel;\n isOpen: boolean;\n header: JQuery\n content: JQuery\n checkboxes: JQuery\n accordion: JQuery\n\n constructor(groupName: string, panel: FilterPanel, element: Element) {\n this.groupName = groupName;\n this.isOpen = false;\n this.panel = panel;\n\n this.findChildren(element);\n this.initEvents(panel);\n }\n\n findChildren(element: Element) {\n this.header = $(element.children[0]);\n this.accordion = this.header.find('.accordion');\n this.accordion_i = this.accordion.find('i')\n this.content = $(element.children[1]);\n this.checkboxes = this.content.find('li');\n }\n\n initEvents(panel: FilterPanel) {\n this.accordion.on('click', () => this.toggle());\n this.header.find('input').keyup(e => this.filter(($(e.target).val(): string)));\n\n this.checkboxes.each((i, checkbox) => {\n $(checkbox).find('input').change(e => {\n this.handleCheckboxChecked(panel, e);\n })\n });\n }\n\n handleCheckboxChecked(panel: FilterPanel, e: Event) {\n let filter = decodeURIComponent($(e.target).attr('data-value'));\n let checked = $(e.target).prop('checked');\n panel.dataTables.forEach(dt =>\n dt.toggleFilter('Tags', checked).tagSearch(filter, this.groupName));\n let key = `${this.groupName}-${filter}`;\n if (checked) {\n panel.showPill(key, filter, () => $(e.target).click());\n } else {\n panel.removePill(key);\n }\n }\n\n toggle(isOpen: ?boolean) {\n isOpen = this.isOpen = isOpen == null ? !this.isOpen : isOpen;\n\n this.content.toggleClass('hidden', !isOpen);\n this.accordion_i.toggleClass('fa-angle-down', !isOpen);\n this.accordion_i.toggleClass('fa-angle-up', isOpen);\n if (!isOpen) return;\n\n this.panel.tagSections.forEach(section => {\n if (section !== this) section.toggle(false);\n });\n }\n\n\n filter(filterText: string) {\n this.toggle(true);\n this.checkboxes.each((i, checkbox) => {\n let label = $(checkbox).find('label').text().toLowerCase().trim();\n $(checkbox).toggleClass('hidden', !label.includes(filterText.toLowerCase()));\n })\n }\n}","import BaseComponent from '../base_component/base_component';\n\nexport default class Footer extends BaseComponent {\n\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n this.load(true);\n }\n\n load(initialLoad= false) {\n $('.user-panel-component').find('.user-panel__minimise').click(() => this.toggleFooterSize());\n $('.close-footer').click(() => this.closeFooter());\n }\n\n toggleFooterSize() {\n let footer = $('.footer-component footer');\n if (footer.hasClass('minimised')) {\n footer.removeClass('minimised');\n } else {\n footer.addClass('minimised');\n }\n }\n\n closeFooter() {\n $('.footer-component footer').addClass('hidden');\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\n\nexport default class GridViewPage extends BaseComponent {\n\n initialize() {\n this.isGridView = false;\n this.cold = true;\n this.previousData = null;\n if (typeof(Storage) !== \"undefined\") {\n this.pricingData = JSON.parse(window.localStorage.getItem('pricingData')) || {}\n } else {\n this.pricingData = {}; // TODO: LocalStorage\n }\n }\n\n functions() {\n return {\n toggle: (type: string) => type == 'GridView' ? this.toggleGridView() : null,\n dataTableModified: () => this.isGridView ? this._refreshData() : null\n }\n }\n\n toggleGridView() {\n this.isGridView = !this.isGridView;\n this.find('.table-view').toggle(!this.isGridView);\n let gridView = this.find('.grid-view');\n gridView.toggle(this.isGridView);\n\n if (this.isGridView && this.cold) {\n this._refreshData();\n }\n }\n\n _refreshData() {\n let gridView = $('.grid-view');\n let templateHTML = gridView.find('.template')[0].outerHTML;\n let rows = this.find('.dataTables_wrapper .dataTables_scrollBody table.dataTable')\n .DataTable().rows({ filter : 'applied'}).data().toArray();\n if (this.previousData == rows.toString()) {\n return this.previousData = rows.toString();\n }\n \n gridView.find('.grid-item:not(.template)').remove();\n this.previousData = rows.toString();\n rows.forEach(([\n star, img, company, __, date, content_icon, ticker, title, summary\n ]) => {\n let newHTML: any = new String(templateHTML);\n newHTML = newHTML.replace('[[COMPANY]]',\n company.match('company_name\">\\\\s*([^\\\\n]*)')[1].trim() + '\\n' +\n star);\n newHTML = newHTML\n .replace('[[DATE]]', date || '')\n .replace('[[TICKER_NAME]]', (ticker || '').toLowerCase().replace(' ', '_'))\n .replace('[[TICKER]]', ticker || '')\n .replace('[[IMAGE]]', img)\n .replace(' template\"', '\"');\n\n let url = (content_icon || '').match(/href=\"([^\"]*)\"/);\n if (url) {\n newHTML = newHTML\n .replace('[[URL]]', url[1])\n .replace('[[TITLE]]', title || '')\n .replace('[[BODY]]', summary || '')\n } else {\n newHTML = newHTML.replace('grid-item', 'grid-item no-doc')\n }\n \n this.cold = false;\n gridView.append(newHTML);\n if (ticker && ticker !== '' ) { this._getPricingData(ticker) }; // !== ''\n });\n }\n\n _getPricingData(ticker: string) {\n let outDatedTime = new Date();\n outDatedTime.setMinutes(outDatedTime.getMinutes() - 5);\n let checkedTime = this.pricingData[ticker] && this.pricingData[ticker].time;\n if (typeof(checkedTime) === 'string') checkedTime = new Date(Date.parse(checkedTime));\n\n if (!this.pricingData[ticker] || checkedTime < outDatedTime) {\n $.get(this._getPricingApi(ticker), result => {\n if (result['Error Message'] || !result['Global Quote']) {\n this.pricingData[ticker] = {\n result: result['Error Message'] || 'No result found.',\n time: new Date()\n }\n } else {\n this.pricingData[ticker] = {\n result: 'Success',\n prev: result['Global Quote']['08. previous close'].match(/[0-9]*\\.?[0-9]/)[0],\n now: result['Global Quote']['05. price'].match(/[0-9]*\\.?[0-9]/)[0],\n change: parseFloat(result['Global Quote']['09. change']),\n time: new Date()\n }\n if (typeof(Storage) !== \"undefined\") {\n window.localStorage.setItem('pricingData', JSON.stringify(this.pricingData))\n }\n };\n this._updateTicker(ticker);\n });\n } else {\n this._updateTicker(ticker);\n }\n }\n\n _getPricingApi(ticker: string) {\n return `https://www.alphavantage.co/query?function=GLOBAL_QUOTE` +\n `&symbol=${ticker}&apikey=${this.options.api_key}`;\n }\n\n _updateTicker(ticker: string) {\n let pricingData = this.pricingData[ticker];\n if (pricingData.result !== 'Success') return;\n\n let $element = this.find(`.${ticker.toLowerCase().replace(' ', '_')}-pricing`);\n $element.children().first().html(`<span class=visible-lg-blockx>Prev: </span>$${pricingData.prev}`);\n let $currentData = $element.children().last();\n\n $currentData.html(`<span class=visible-lg-blockx>Now: </span>$${pricingData.now}`);\n $currentData.toggleClass('up', pricingData.change > 0);\n $currentData.toggleClass('down', pricingData.change < 0);\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\n\nexport default class Hero extends BaseComponent {\n\n constructor(id: number, component_name: string) {\n super(id, component_name);\n this.addAndRemoveBackground();\n this.overrideLoginBehaviour();\n }\n\n // Captures the ?r= param.\n overrideLoginBehaviour() {\n let $form = $(this.component).find('#login-form')\n let redirectString = this._getRedirectString();\n $form.submit((event: JQueryEventObject) => {\n if (!redirectString) return;\n\n $form.attr('action', `/login?r=${redirectString}`);\n })\n }\n\n _getRedirectString(): ?string {\n let match = window.location.href.match(/[\\?&]r=([^$\\&]*)/);\n return match ? match[1] : null;\n }\n\n scrollTo(target: string) {\n let $target = $(`#${target}`);\n if ($target.length === 0) {\n return window.location.href = `/landing_page#${target}`\n }\n $('html, body').animate({\n scrollTop: $target.offset().top\n }, 'slow');\n return false;\n }\n\n addAndRemoveBackground() {\n $(window).scroll( function (event) {\n if ($(window).scrollTop() > 50) {\n $('.nimbus-securities-logo').addClass('logo-shrink');\n $('.hero-login-mobile').addClass('logo-shrink');\n $('.header-fixed').css({'position': 'fixed', 'background':'#eea200', 'transition':'0.5s'});\n } else {\n $('.nimbus-securities-logo').removeClass('logo-shrink');\n $('.hero-login-mobile').removeClass('logo-shrink');\n $('.header-fixed').css({'position': 'fixed', 'background': '', 'z-index': '', 'transition': ''});\n };\n });\n }\n\n showLogin() {\n if ($('#about').length === 0) {\n return window.location.href = `/landing_page#home`\n }\n $(this.component).find('.hero-login').attr('style', '');\n this.scrollTo('home');\n }\n\n showForm(name: string) {\n $(this.component).find('#login-form').toggleClass('hidden', name === 'reset');\n $(this.component).find('#reset-password-form').toggleClass('hidden', name === 'login');\n $(this.component).find('.submitted-message').addClass('hidden');\n return false;\n }\n\n resetPassword() {\n $.post('/resend_email', $('#reset-password-form').serialize(), () => {\n $(this.component).find('#reset-password-form').addClass('hidden');\n $('.submitted-message').removeClass('hidden');\n });\n return false;\n }\n}","import BaseComponent from '../../base_component/base_component'\n\nexport default class Tabs extends BaseComponent {\n initialize() {\n $(this.component).find('[data-toggle=\"tab\"]').on('shown.bs.tab', function() {\n let $target = $($(this).attr('href'));\n let newUrl = window.location.href.replace(\n /(#.*)?$/, '#' + $(this).attr('data-name'));\n window.history.pushState({urlPath: newUrl}, {}, newUrl);\n let tables = $target.find('.dataTables_scrollBody table');\n if (tables && tables.DataTable) {\n tables.DataTable().draw();\n }\n });\n if (window.location.href.includes('#')) {\n let tabName = window.location.href.split('#')[1];\n this.loadTab(tabName);\n }\n }\n\n functions() {\n return {loadTab: tabName => this.loadTab(tabName)}\n }\n\n loadTab(tabName) {\n let tab = this.find(`[data-name=\"${tabName}\"`);\n if (tab.length) {\n tab.first().click();\n }\n }\n}","// @flow\nimport BaseComponent from '../../base_component/base_component'\n\nexport default class Tile extends BaseComponent {\n initialize() {\n $.getJSON(this.options.controller, this.initTiles.bind(this));\n }\n\n initTiles(data) {\n this.find('.tile-spinner').hide();\n\n if (data.length === 0) {\n return $('.no-content-message').removeAttr('hidden');\n }\n let tiles = this.find('.tile');\n\n data.forEach((element, i) => {\n this.setTileContent($(tiles[i]), element);\n });\n }\n\n setTileContent(tile, element) {\n tile.css('visibility', 'visible');\n tile.find('.title').html(element.title);\n tile.find('.description').html(element.description);\n if (element.thumbnail_url) {\n tile.find('.title-thumbnail').css(\n 'background-image', `url(${element.thumbnail_url})`);\n tile.find('.hidden-image').attr('src', element.thumbnail_url);\n }\n }\n}","import BaseComponent from '../base_component/base_component'\n\nexport default class Loading extends BaseComponent {\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n\n document.addEventListener('ComponentRendered', event => {\n if (event.componentId !== options.content) return;\n $(this.component).find('>.loading_bar').hide();\n })\n\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\nimport componentLocator from '../../assets/javascripts/component_locator'\nimport kebabCase from 'lodash-es/kebabCase'\n\nexport default class Modal extends BaseComponent {\n currentComponent: ?string;\n $modal: JQuery;\n open: Boolean;\n $panels: JQuery;\n persist: Array<string>;\n locked: boolean;\n queue: Array<Function>;\n\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n this.currentComponent = null;\n this.queue = [];\n\n this.persist = [].concat(this.options.persist || []);\n this.persist.forEach(panel => {\n $(`#wrapper_${this.options[panel]}`).hide();\n });\n this.$modal = $(this.component).find('.modal');\n this.$panels = $(this.component).find('.modal-content > .wrapper');\n $(document.body).on('keydown', event => this._trapTabInput(event));\n this.addCloseHandler();\n this.addImplicitSupport();\n }\n\n addCloseHandler() {\n let self = this;\n let mouseOffContent = false;\n this.$modal.mousedown(event => {\n mouseOffContent = !$(this.component).has(event.target).length;\n });\n this.$modal.mouseup(() => {\n if ($(this.component).find('.modal-content:hover').length === 0 &&\n mouseOffContent) {\n this.close();\n }\n mouseOffContent = false;\n });\n $(this.component).find('.close-modal').click(() => { this.close(); });\n }\n\n addImplicitSupport() { // Because bootstrap does.\n let self = this;\n $(document).on('click', '[data-target=\"#modal\"]', (e: JQueryEventObject) => {\n let remote = $(e.target).closest('[data-target]').attr('data-remote');\n let [_, path, args] = remote.match(/\\/(.*)\\?(.*)/) || [null, null];\n if (path === null || args === null) return;\n\n let argHash = args.split('&').reduce((hash, arg) => {\n let [key, value] = arg.split('=');\n hash[key] = value;\n return hash;\n }, {});\n self.show(path, argHash);\n });\n\n let paramsArray: any = location.search.match(/([?\\&])([^=]*)=[^$\\&#]*/g);\n if (!paramsArray) return;\n\n let params: Map<string, string> = new Map(paramsArray.map(v => v.substr(1).split('=')));\n if (!params.has('modal')) return;\n \n componentLocator.waitUntilLoaded().then(() => {\n this.show(params.get('modal') || '', Object.fromEntries(params));\n });\n }\n\n changeModalSize(ref: string) {\n if (ref) {\n $(\"#modal-id\").addClass(\"document-preview-modal-lg\");\n } else {\n $(\"#modal-id\").removeClass(\"document-preview-modal-lg\");\n }\n }\n\n show(panelName: string, extraParams: {[string]: any}={}) {\n this.changeModalSize(extraParams['ref']);\n let closedAComponent = this._closeExisting();\n\n if (this._acquireLock() === false) {\n this.queue.push(() => this.show(panelName, extraParams));\n return;\n }\n\n let componentId = this._getComponentId(panelName);\n this.currentComponent = panelName;\n\n if (this.persist.includes(panelName)) {\n $(`#wrapper_${componentId}`).show();\n } else {\n this._renderComponent(componentId, extraParams);\n }\n\n this.$modal.addClass(`${kebabCase(panelName.replace(' ', '-'))}-modal`);\n this._mountModal(closedAComponent);\n }\n\n _trapTabInput(event: JQueryEvent, filterIndex=true) {\n if (!this.open || event.which != 9) return;\n\n let items = $(this.component).find('a, button, input, textarea, select, details');\n if (filterIndex) {\n items = items.filter(':not([tabindex=\"-1\"])').toArray();\n }\n let focussed = $(this.component).find(':focus')[0];\n let focusIndex = items.indexOf(focussed);\n let nextItem = null;\n if (event.shiftKey) {\n focusIndex = Math.max(focusIndex, 0); // -1 means 'not selected' - reset this to 0.\n nextItem = items[(focusIndex + items.length - 1) % items.length];\n } else {\n nextItem = items[(focusIndex + 1) % items.length];\n }\n if (nextItem) nextItem.focus();\n return false;\n }\n\n _closeExisting(): boolean {\n if (this.currentComponent === null) return false;\n\n this.close(false);\n return true;\n }\n\n _getComponentId(panelName: string): number {\n if (!this.options[panelName]) {\n throw `Could not find a modal panel named ${panelName}`;\n }\n return this.options[panelName];\n }\n\n _renderComponent(componentId: number, extraParams: {[string]: any}) {\n Object.keys(extraParams).forEach(param => {\n window.__componentAdapter.setExtraParam(\n componentId, param, extraParams[param]);\n });\n\n // Render the component, once, then call getReady\n let setReady = false;\n window.__componentAdapter.render(componentId, false, () => {\n if (setReady) return;\n setReady = true;\n componentLocator.getById(componentId).then(c => (c ? c.onReady() : null));\n });\n }\n \n close(closeModal: boolean=true) {\n if (this._acquireLock() === false) {\n this.queue.push(() => this.close(closeModal));\n return;\n }\n\n let currentComponent = this.currentComponent;\n this.$modal.removeClass(`${kebabCase(currentComponent.replace(' ', '-'))}-modal`);\n if (closeModal && this.$modal.hasClass('in')) {\n this.$modal.modal('hide');\n this._handleEvent('hidden.bs.modal', () => {\n this.open = false;\n this._dismountModal(currentComponent);\n });\n } else {\n this._dismountModal(currentComponent);\n }\n this.currentComponent = null;\n }\n\n _handleEvent(eventName: string, callback: Function) {\n this.$modal.off(eventName);\n this.$modal.on(eventName, callback);\n }\n\n _mountModal(closedAComponent: boolean) {\n this.$modal.modal('show');\n if (closedAComponent) {\n this._releaseLock()\n } else {\n this._handleEvent('shown.bs.modal', () => {\n this.open = true;\n this._releaseLock()\n });\n }\n }\n\n _dismountModal(currentComponent: ?string) {\n let componentId = this.options[currentComponent];\n let childComponent = window.getComponent(componentId);\n\n if (this.persist.includes(currentComponent)) {\n $(`#wrapper_${componentId}`).hide();\n } else if (childComponent) {\n childComponent.dismount();\n } else {\n $(`#wrapper_${componentId}`).html('');\n }\n this._releaseLock();\n }\n\n _acquireLock(): boolean {\n if (!this.locked) {\n this.locked = true;\n return true;\n } else {\n return false;\n }\n }\n\n _releaseLock() {\n this.locked = false;\n if (this.queue.length > 0) {\n this.queue.pop()();\n }\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\n\nexport default class Navbar extends BaseComponent {\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n //this.addAndRemoveBackground();\n }\n\n // scrollTo(target: string) {\n // $('html, body').animate({\n // scrollTop: $(`#${target}`).offset().top\n // }, 'slow');\n // return false;\n // }\n\n // addAndRemoveBackground() {\n // $(window).scroll( function (event) {\n // $('.logo-image').addClass('logo-shrink');\n // $('.hero-login-mobile').addClass('logo-shrink');\n // $('.header-fixed').css({'position': 'fixed', 'background':'#003366', 'transition': '0.5s'});\n // });\n // }\n\n // showLogin() {\n // $(this.component).find('.hero-login').attr('style', '');\n // this.scrollTo('home');\n // }\n}\n","export default class PreferenceCenter extends BaseComponent {\n initialize() {\n this.setupChevrons();\n }\n\n functions() {\n return {\n addSearch: term => this.addSearch(term),\n removeSearch: term => this.removeSearch(term)\n }\n }\n\n addSearch(term) {\n this.removeSearch(term);\n this.find('.child-holder')\n .filter((i, tag) => !$(tag).text().toLowerCase().includes(term.toLowerCase()))\n .attr('hidden', 'hidden');\n this.find('.tag-group').filter((i, group) => {\n return $(group).find('.child-holder:not([hidden])').length === 0\n }).attr('hidden', 'hidden');\n this.find('.preference-section').filter((i, section) => {\n return $(section).find('.tag-group:not([hidden])').length === 1\n }).find('.tag-group:not([hidden]) .chevron-holder .fa-chevron-down').each((i, element) => {\n let target = $(element)\n target.attr('class', 'fa fa-chevron-up');\n target.closest('.tag-group').find('.child-tags').show();\n })\n }\n\n removeSearch(term) {\n this.find('.tag-group').removeAttr('hidden');\n this.find('.child-holder').removeAttr('hidden');\n }\n\n setupChevrons() {\n $(this.component).on('click', '.chevron-holder .fa-chevron-down', event => {\n this.find('.chevron-holder .fa-chevron-up').click();\n let target = $(event.target);\n target.attr('class', 'fa fa-chevron-up');\n target.closest('.tag-group').find('.child-tags').show();\n });\n $(this.component).on('click', '.chevron-holder .fa-chevron-up', event => {\n let target = $(event.target);\n target.attr('class', 'fa fa-chevron-down');\n target.closest('.tag-group').find('.child-tags').hide();\n });\n $(this.component).on('click', '.toggle-category .fa-chevron-down', event => {\n let target = $(event.target);\n target.attr('class', 'fa fa-chevron-up');\n target.closest('.preference-section').addClass('closed')\n target.closest('.preference-section').find('.tag-groups').addClass('hidden-xs hidden-sm');\n });\n $(this.component).on('click', '.toggle-category .fa-chevron-up', event => {\n let target = $(event.target);\n target.attr('class', 'fa fa-chevron-down');\n target.closest('.preference-section').removeClass('closed')\n target.closest('.preference-section').find('.tag-groups').removeClass('hidden-xs hidden-sm');\n });\n $(this.component).on('click', '.tag-group-header .checkbox', event => {\n let target = $(event.target);\n let checked = target.prop('checked');\n target.closest('.tag-group').find('.child-tags .checkbox').prop('checked', checked);\n });\n $(this.component).on('click', '.child-holder .checkbox', event => {\n let target = $(event.target);\n let checked = target.prop('checked');\n this.find(`[name=\"${target.attr('name')}\"]`).prop('checked', checked);\n });\n }\n\n acknowledge() {\n $.post('/acknowledge_preference_message');\n this.find('.notification').hide();\n }\n}","import componentLocator from '../../../assets/javascripts/component_locator'\n\nexport default class Register extends BaseComponent {\n initialize() {\n this.bindTermsCheckbox();\n }\n\n bindTermsCheckbox() {\n this.find('input[name=\"accepted-terms\"]').change(() => this.updateSubmitButton());\n this.find('select[name=\"address-country\"]').change(() => this.updateSubmitButton());\n }\n\n updateSubmitButton() {\n let acceptsTerms = this.find('input[name=\"accepted-terms\"]');\n let country = this.find('select[name=\"address-country\"] option:selected').val();\n if (country != 'Select Country' && acceptsTerms.prop('checked')) {\n this.find('.submit-registration').removeAttr('disabled');\n } else {\n this.find('.submit-registration').attr('disabled', 'disabled');\n }\n }\n\n submit() {\n this.find('[name=\"email\"]')[0].setCustomValidity('');\n if (!this.find('input,select').toArray().every(e => e.reportValidity())) {\n return false;\n }\n $.post('/register', this.find('form').serialize())\n .done(data => window.location.href = data.redirect)\n .fail(error => {\n if (error.status == 409) {\n this.flashError(\n this.find('[name=\"email\"]')[0],\n 'A contact already exists with this email address.'\n )\n }\n })\n }\n\n flashError(element, message) {\n element.setCustomValidity(message);\n element.reportValidity();\n }\n}","import BaseComponent from '../base_component/base_component'\n\nexport default class ResearchDocumentSummary extends BaseComponent {\n\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options)\n \n this.$component = $(this.component)\n \n $('.read-report-button').on('click', () => { this.showPopup() })\n }\n\n showPopup() {\n let contactEmail = $('#research-preview-contact-email').text()\n let popupHtml = `<div class=\"upgrade-popup\">\n <i class=\"upgrade-popup-quit fa fa-times-circle\"></i>\n <div class=\"upgrade-popup-message\">\n <h3>You'll need to upgrade your subscription plan</h3>\n <p>Please contact: <a href=\"mailto:${contactEmail}\">${contactEmail}</a></p>\n </div>\n <div class=\"upgrade-popup-controls\">\n <button class=\"upgrade-popup-cancel\">Cancel</button>\n <a href=\"mailto:${contactEmail}\">\n <button class=\"upgrade-popup-email\">Email</button>\n </a>\n </div>\n </div>`\n $('body').prepend(popupHtml)\n $('.upgrade-popup-quit, .upgrade-popup-cancel').on('click', () => { this.hidePopup() })\n }\n\n hidePopup() {\n $('.upgrade-popup').remove()\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\nimport {validatePassword} from '../scripts/validate_password/validate_password'\n\nexport default class ResetPassword extends BaseComponent {\n constructor(id: number, component_name: string) {\n super(id, component_name);\n $(this.component).find('#password').focus();\n $(this.component).find('#old_password').focus();\n this.addAsyncHooks();\n }\n\n addAsyncHooks() {\n this.find('#confirm').keyup(event => {\n let oldPassword = $('#new_password').val();\n let isMatch = oldPassword === $(event.target).val();\n this.whenInactiveFor(300, () => {\n let hint = this.find('#change_password_error');\n hint.text(isMatch ? '' : 'Password and confirmed password must be the same.');\n hint.toggle(!isMatch);\n });\n });\n this.find('#new_password').keyup(event => {\n let password = $(event.target).val();\n let result = password.length < 3 ? null : validatePassword(password);\n this.whenInactiveFor(300, () => {\n let hint = this.find('#change_password_error');\n hint.text(result);\n hint.toggle(!!result);\n });\n });\n }\n\n whenInactiveFor(time, callback) {\n let timeout = this.timeoutId = setTimeout(() => {\n this.timeoutId == timeout ? callback() : null\n }, time)\n }\n\n validate($this: JQuery, $: JQueryStatic) {\n $ = $ || window.$;\n $this = $this || $(this.component);\n var old_password = $.trim(($this.find('#old_password').val(): any));\n var new_password = $.trim(($this.find('#new_password').val(): any));\n var confirm = $.trim(($this.find('#confirm').val(): any));\n let validationResult = validatePassword(new_password);\n if (validationResult) {\n $this.find('#reset_password_error').text(validationResult);\n this.clearPasswords($this);\n return false;\n } else if (new_password != confirm) {\n $this.find('#reset_password_error').text(\"Password and confirmed password must be the same.\");\n this.clearPasswords($this);\n return false;\n } else {\n $this.find('#reset_password_error').text(\"\");\n $this.find('button#reset_password').prop('disabled', true);\n return true;\n }\n }\n\n validateEmail() {\n var email = this.find('#email').val().toString();\n if (email == '') {\n this.find('#reset_password_error').text(\"You must enter an Email Address.\");\n this.find('#email').focus();\n return false;\n } else {\n this.find('#reset_password_error').text(\"\");\n this.find('button#reset_password').prop('disabled', true);\n return true;\n }\n }\n\n clearPasswords($this: JQuery) {\n $this.find('#new_password').val('');\n $this.find('#confirm').val('');\n $this.find('#password').focus();\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\n\nexport default class RoadshowCalendar extends BaseComponent {\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n }\n\n onLoad() {\n this.normaliseHeight();\n }\n\n normaliseHeight() {\n let rows = $(this.component).find('.simple-calendar>table>tbody>tr');\n let numRows = rows.length;\n rows.css('height', `calc((100vh - 221px) / ${numRows})`);\n }\n\n navigate(date: string) {\n this.setParam('roadshow_current_date', date);\n this.rerender();\n }\n\n showTooltip(id: string) {\n $(this.component).find(`.roadshow-event-tooltip[data-id=\"${id}\"]`).show();\n }\n\n hideTooltip(id: string) {\n $(this.component).find(`.roadshow-event-tooltip[data-id=\"${id}\"]`).hide();\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\n\nexport default class RoadshowDetails extends BaseComponent {\n\n initialize() {\n $( \"#accordion\" ).accordion({\n collapsible: true,\n event: \"click\",\n animate:400,\n active: 0,\n heightStyle: true,\n header: '.accordion-header',\n icons:{header:\"ui-icon-caret-1-s\",activeHeader:\"ui-icon-caret-1-n\"}\n });\n let headers = this.headers = new Map();\n $(this.component).find('.accordion-header').each(function() {\n headers.set(new Date(Date.parse($(this).text())), $(this).parent());\n });\n this.tagFilters = new Set();\n }\n\n functions() {\n return {\n reloadData: () => {},\n addDateFilter: (startDate: any, endDate: any) => this.setDateRange(startDate, endDate),\n removeDateFilter: () => this.setDateRange(),\n toggleTag: (value: string, category: string, checked: boolean) => this\n .toggleTag(category, value, checked)\n }\n }\n\n setDateRange(start: ?Date, end: ?Date) {\n if (!start || !end) {\n for(let header of this.headers.values()) {\n header.removeClass('hidden-date');\n }\n return;\n }\n\n for (let [date, element] of this.headers.entries()) {\n let displayed = (date >= start) && (date <= end);\n element.toggleClass('hidden-date', !displayed);\n }\n }\n\n toggleTag(category: string, value: string, checked: boolean) {\n // Quite a naive approach, but very flexible to changes in the .liquid.\n if (checked) {\n this.tagFilters.add(value);\n } else {\n this.tagFilters.delete(value);\n }\n this._updateTagFilters();\n }\n\n _updateTagFilters() {\n let filters = this.tagFilters;\n for (let section of this.headers.values()) {\n let allHidden = true;\n let skipped = false;\n section.children().last().find('tr').each(function() {\n if (!skipped) return (skipped = true);\n let matched = filters.size === 0;\n for (let filter of filters) {\n matched = matched || $(this).text().includes(filter);\n }\n $(this).closest('table').toggleClass('hidden-tag', !matched);\n allHidden = allHidden && !matched;\n })\n\n section.toggleClass('hidden-tag', allHidden);\n }\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\n\nexport default class RoadshowRequest extends BaseComponent {\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n \n const self = this\n $('body').on('click', '.request-roadshow-slots-toggle', function () {\n $(this).toggleClass('expanded')\n $(this).siblings('.request-roadshow-slots').toggleClass('expanded')\n })\n\n $('body').on('click', '.request-roadshow-slot', function () {\n self.requestRoadshowSlot($(this))\n })\n\n $('body').on('click', '.request-specific-roadshow-slot-active', function () {\n self.requestSpecificRoadshowSlot($(this))\n })\n }\n\n requestRoadshowSlot(button: JQuery) {\n button.removeClass('request-roadshow-slot')\n button.append(' <i class=\"fa fa-spinner fa-spin\" aria-hidden=\"true\"></i>')\n\n let roadshowId = button.closest('.request-roadshow').data('roadshow-id')\n this.requestSlot(roadshowId, undefined).done( () => {\n button.removeClass('btn-primary')\n button.addClass('btn-success')\n button.html('Request Sent! <i class=\"fa fa-check\" aria-hidden=\"true\"></i>')\n })\n }\n\n requestSpecificRoadshowSlot(button: JQuery){\n button.removeClass('request-specific-roadshow-slot request-specific-roadshow-slot-active')\n let otherSlots = button.closest('.request-roadshow').find('.request-specific-roadshow-slot')\n otherSlots.addClass('disabled')\n otherSlots.removeClass('request-specific-roadshow-slot-active')\n button.append(' <i class=\"fa fa-spinner fa-spin\" aria-hidden=\"true\"></i>')\n\n let roadshowId = button.closest('.request-roadshow').data('roadshow-id')\n let roadshowSlotId = button.data('roadshow-slot-id')\n this.requestSlot(roadshowId, roadshowSlotId).done( () => {\n button.addClass('btn-success')\n button.html('Request Sent! <i class=\"fa fa-check\" aria-hidden=\"true\"></i>')\n })\n }\n\n requestSlot(roadshowId: string, slotId: ?string) {\n let headers: {[string]: any} = {\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')\n };\n return $.ajax({\n type: \"POST\",\n url: '/request_slot',\n data: JSON.stringify({\n 'roadshow_id': roadshowId,\n 'roadshow_slot_id': slotId\n }),\n dataType: 'json',\n contentType: 'application/json',\n headers: headers\n });\n }\n}","import BaseComponent from '../base_component/base_component';\n\nexport default class RoadshowSlots extends BaseComponent {\n initialize() {\n this.openFirstSection();\n $(this.component).find('.panel-heading').click((e) => {\n $('.collapse').collapse('hide');\n let accordion = $(e.target).closest('.panel-heading').find('.fa.accordion');\n if ($(e.target).closest('.panel-default').find('.panel-body.in').length === 0) {\n accordion.removeClass('fa-angle-down');\n accordion.addClass('fa-angle-up');\n } else {\n accordion.addClass('fa-angle-down');\n accordion.removeClass('fa-angle-up');\n }\n });\n }\n\n openFirstSection() {\n $('.panel-default').children()[0].click()\n }\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\nrequire( 'jszip' );\nrequire( 'pdfmake' );\nrequire( 'datatables.net' );\nrequire( 'datatables.net-dt' );\nrequire( 'datatables.net-buttons-dt' );\nrequire( 'datatables.net-buttons/js/buttons.colVis.js' );\nrequire( 'datatables.net-buttons/js/buttons.html5.js' );\nrequire( 'datatables.net-buttons/js/buttons.flash.js' );\nrequire( 'datatables.net-buttons/js/buttons.print.js' );\n\n\nexport default class Scorecard extends BaseComponent {\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n this.load();\n $('#segment_select').on('change', (e) => {\n this.changeScorecard(e)\n });\n }\n\n load(){\n let self = this;\n $(self.component).find('#score-card-table').DataTable({\n \"ordering\": false,\n \"searching\": false,\n \"autoWidth\": true,\n \"fixedHeader\": true,\n \"paging\": false,\n \"info\": false,\n \"dom\": 'Bft',\n \"buttons\": {\n buttons: [\n {extend: 'csv', className: 'btn btn-primary'},\n {extend: 'excel', className: 'btn btn-primary'},\n // {extend: 'pdf', className: 'btn btn-primary'},\n {extend: 'print', className: 'btn btn-primary'}]\n }\n });\n\n $(self.component).find('#vote-breakdown-table').DataTable({\n \"ordering\": true,\n \"searching\": true,\n \"autoWidth\": true,\n \"fixedHeader\": true,\n \"paging\": true,\n \"info\": false,\n \"dom\": 'Bft',\n \"buttons\": {\n buttons: [\n {extend: 'csv', className: 'btn btn-primary'},\n {extend: 'excel', className: 'btn btn-primary'},\n // {extend: 'pdf', className: 'btn btn-primary'},\n {extend: 'print', className: 'btn btn-primary'}]\n }\n });\n }\n\n changeScorecard(e){\n window.location.href = '/scorecard?segment_id='+e.currentTarget.value;\n }\n}","import {deferrablePost} from '../../../assets/javascripts/offline_handler';\n\nexport default function() {\n $('body').off('click', '.star-holder');\n $('body').on('click', '.star-holder', function() {\n let tag = {category: $(this).attr('data-category'), value: $(this).attr('data-name')}\n let route = $(this).hasClass('selected') ? '/remove_favourite_tag' : '/add_favourite_tag'\n deferrablePost(route, {tag: JSON.stringify(tag)});\n $(this).toggleClass('selected');\n $(this).closest('.tag-panel').remove();\n })\n}\n","export function validatePasswordInputs(oldPassword, newPassword, confirmed) {\n if (oldPassword == '') {\n return 'Please enter your old password.';\n }\n if (newPassword == '') {\n return 'Please enter your new password.';\n }\n if (confirmed != newPassword) {\n return 'Password and confirmed password must be the same.';\n }\n\n return validatePassword(newPassword);\n}\n\nexport function validatePassword(password) {\n if (password.length < 8) {\n return 'Password must be at least 8 characters.';\n }\n let hasLowerCase = !!password.match(/[a-z]/);\n let hasUpperCase = !!password.match(/[A-Z]/);\n let hasNumber = !!password.match(/[0-9]/);\n let hasSymbol = !!password.match(/[$-/:-?{-~!\"^_`\\[\\]]/);\n\n if (hasLowerCase + hasUpperCase + hasNumber + hasSymbol >= 3) {\n return;\n }\n\n // Not technically true, but it's easier to understand this way.\n if (hasLowerCase && hasUpperCase) {\n return 'Password must contain at least one number or symbol.';\n }\n if (hasLowerCase && hasNumber) {\n return 'Password must contain at least one upper case letter or symbol.';\n }\n if (hasLowerCase && hasSymbol) {\n return 'Password must contain at least one upper case letter or number.';\n }\n return 'Password should contain at least three of: ' +\n 'a lower case letter; an upper case number; a symbol or a number.'\n}","// @flow\nimport BaseComponent from '../base_component/base_component'\nimport componentLocator from '../../assets/javascripts/component_locator'\n\nexport default class SearchBar extends BaseComponent {\n filtersActive: boolean\n previousSearch: Array<string>\n target: any\n\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n\n this.find('.quick-search-input').keyup(() => this.handleSearch());\n this.previousSearch = [];\n if (options.target) {\n componentLocator.getSingle(options.target).then(c => {\n this.target = c.functions()\n });\n } else {\n this.target = componentLocator.f; // All searchables.\n }\n }\n \n handleSearch() {\n let $searchBar = this.find('.quick-search-input');\n\n let text: any = ($searchBar.val() || '');\n if (text) {\n this.target.removeSearch();\n (text || '').split(' ').forEach(word => {\n this.target.addSearch(word)\n });\n } else {\n this.target.removeSearch();\n }\n }\n}","// @flow\nimport DataTable from '../data_table/data_table'\nimport {snakeCase, isEqual} from 'lodash-es'\nimport type FilterContext from '../data_table/filter_context'\n\nexport default class TabbedDataTable extends DataTable {\n\n constructor(id: number, component_name: string, options: any, extra_params: {}) {\n super(id, component_name, options, extra_params);\n $(this.component).find('[data-toggle=\"tab\"]').on('shown.bs.tab', function() {\n let $target = $($(this).attr('href'));\n $target.find('.dataTables_scrollBody table').DataTable().draw();\n });\n }\n\n load() {\n let self = this;\n let description = self.filterContext.getDescription();\n if (this.params && isEqual(description, this.params)) return;\n this.params = Object.assign( {}, this.getParams(), description );\n $.getJSON(this.options.controller, this.params, (response) => {\n if (self.dismounting) return;\n\n self.finishedLoading();\n let $component = $(self.component);\n self.clear();\n \n let tabIndex = 0;\n for (const tabName of Object.keys(response)) {\n let tableData = response[tabName]\n let tabClass = `.tab-${tabIndex}`\n let options = self.getDefaultOptions(tableData);\n tableData.columns.forEach(column => {\n $component.find(tabClass).find('.headers').append(\n `<th class=\"col_${snakeCase(column[0])}\">${column[0]}</th>`);\n self.handleFormatters(column, options, $component);\n });\n if (self.dismounting) return;\n self.filterContext.table = $(self.component).find(tabClass).DataTable(options);\n self.filterContext.columnIndexes = self.columnIndexes;\n self.filterContext.apply();\n self.addIcons();\n $component.find('.action-wrapper').show();\n tabIndex++;\n\n }\n })\n }\n}\n","import BaseComponent from '../base_component/base_component'\n\nexport default class Team extends BaseComponent {\n constructor(id: number, component_name: string, options: any, extra_params: {}) {\n super(id, component_name, options, extra_params);\n }\n\n showPopup(id) {\n $(`#team-member-popup-overlay-${id}`).show()\n $(`#team-member-popup-${id}`).show('fast')\n }\n\n hidePopup(id) {\n $(`#team-member-popup-overlay-${id}`).hide()\n $(`#team-member-popup-${id}`).hide('fast')\n }\n}\n","// @flow\nimport BaseComponent from '../base_component/base_component';\nimport offlineHandler from '../../assets/javascripts/offline_handler';\n\nexport default class UserPanel extends BaseComponent {\n minimised: ?boolean;\n $userPanel: JQuery;\n\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n\n this.minimised = options.minimised || window.innerWidth < 768;\n this.$userPanel = $(this.component).find('.user-panel');\n\n if (this.minimised) {\n this.$userPanel.toggleClass('minimised', this.minimised);\n }\n setTimeout(() => this.$userPanel.removeClass('loading'), 10);\n let resizeTimer, width = window.innerWidth, delay = 500;\n $(window).on('resize', () => {\n clearTimeout(resizeTimer);\n resizeTimer = setTimeout(() => {\n if ((width < 768 && window.innerWidth >= 768 && this.minimised) ||\n (window.innerWidth < 768 && width >= 768 && !this.minimised)) {\n this.toggle()\n }\n width = window.innerWidth\n }, 150);\n });\n if(!options.disable_resize) {\n $(this.component).find('.user-panel__minimise').click(() => this.toggle());\n }\n }\n\n loadPage(pageName: string) {\n if(navigator.onLine) {\n window.loadPage(pageName);\n } else {\n window.location.href = `/${pageName}`\n }\n return false;\n }\n\n functions() {\n return {\n selectPage: (name: string) => this.setSelected(name),\n onOnline: () => this.setOnline(),\n onOffline: () => this.setOffline()\n }\n }\n\n toggle(isOpen: ?boolean) {\n this.minimised = isOpen == null ? !this.minimised : !isOpen;\n this.$userPanel.toggleClass('minimised', this.minimised);\n setTimeout(() => $(window).trigger('resize'), 500);\n }\n\n setSelected(menuItem: string) {\n this.$userPanel.find('[data-page].active').removeClass('active');\n this.$userPanel.find(`[data-page=\"${menuItem}\"]`).addClass('active');\n }\n\n setOnline() {\n this.find('.nav-pill').removeClass('offline');\n }\n\n async setOffline() {\n if (!('serviceWorker' in navigator)) return;\n\n const cachedPages = await offlineHandler.getCachedPages();\n this.find('[data-page]').each((i: number, element: Element) => {\n let $element = $(element);\n if (!cachedPages.includes($element.attr('data-page'))) {\n $element.addClass('offline');\n }\n });\n }\n}\n","import BaseComponent from '../base_component/base_component'\nimport VideoEventHandler from './video_event_handler'\n\nexport default class Video extends BaseComponent {\n\n constructor(id: number, component_name: string, options: any) {\n super(id, component_name, options);\n \n this.$component = $(this.component);\n\n this.player = this.$component.find('video')\n this.initEventHandler(this.player);\n }\n\n initEventHandler() {\n this.eventHandler = new VideoEventHandler(this.player);\n }\n}","export default class VideoEventHandler {\n\n constructor(player) {\n this.player = player\n\n this.initEventListener()\n }\n\n initEventListener() {\n this.player.on('play', (event) => {\n console.log(`\"play\" event - time: ${this.currentTime()} secs`)\n })\n this.player.on('pause', (event) => {\n console.log(`\"pause\" event - time: ${this.currentTime()} secs`)\n })\n this.player.on('timeupdate', (event) => {\n console.log(`\"timeupdate\" event - time: ${this.currentTime()} secs`)\n })\n this.player.on('seeking', (event) => {\n console.log(`\"seeking\" event - time: ${this.currentTime()} secs`)\n })\n this.player.on('seeked', (event) => {\n console.log(`\"seeked\" event - time: ${this.currentTime()} secs`)\n })\n }\n\n currentTime() {\n return this.player[0].currentTime\n }\n}","import useServiceWorker from '../../assets/javascripts/configuration.js.erb';\nconst DOCS = 'pdf-v0'; // Make sure this lines up with service_worker\n\n// TODO: Online behaviour.\nexport default class YourResearch extends BaseComponent {\n initialize() {\n this.find('.document-select').change(element =>\n this.loadPdf($(element.target).find(':selected')));\n if (useServiceWorker) {\n this.populateFromCache();\n }\n }\n\n async populateFromCache() {\n let cache = await caches.open(DOCS);\n let keys = await cache.keys();\n let select = this.find('.document-select');\n keys.forEach(async key => {\n let title = await (await cache.match(key)).headers.get('Document-Title')\n select.append(`\n <option data-url=${key.url} class=\"offline-only\">${title}</option>\n `.trim());\n });\n }\n\n loadPdf(element) {\n this.find('.viewer').removeClass('hidden');\n _functions.loadPdf(element.attr('data-url'));\n }\n}\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","constructor","_defineProperty","this","awaiters","clear","componentFactories","Map","componentsById","componentsByName","functions","window","_functions","f","functionList","getComponent","$","closest","attr","get","parseInt","isNaN","components","length","_loaded","loaded","isLoaded","forEach","awaiter","componentId","__componentAdapter","latestBatch","component","onReady","handleAjaxError","ajaxErrors","waitUntilLoaded","_this","_asyncToGenerator","Promise","push","registerComponentFactory","name","factory","set","upperFirst","camelCase","createComponent","options","extra_params","jsc","getFactory","BaseComponent","existingComponents","func","addFunction","deleteComponent","_this2","delete","byName","component_name","splice","indexOf","finalize","then","_this3","_len","arguments","args","Array","_key","fallbackClass","titleizedName","require","default","getById","_this4","getAll","componentName","_this5","getSingle","_this6","allComponents","PAGES","POST_REQUESTS","handlingPostRequests","handler","initialize","useServiceWorker","on","toggleOfflineClass","componentLocator","onOffline","handlePostRequests","onOnline","navigator","onLine","toggleClass","caches","cacheComponents","isOnline","path","location","protocol","host","pathname","compPath","match","cache","open","put","Response","JSON","stringify","getCachedPages","_listCachedPages","concat","cache_name","key","url","filter","includes","parts","split","clearCaches","cacheNames","all","_ref","cacheName","cacheKeys","_ref2","_x2","apply","_x","_ref3","response","headers","body","json","deferrablePost","_x3","uri","undefined","ajax","type","data","dataType","contentType","always","document","ready","ComponentBuilder","getLocator","execute","active","queued","buildComponents","assign","clearedKeys","wrapper","getElementById","_renderComponent","setTimeout","_createComponentObjects","_scrollToElement","href","className","replace","oldClass","newClass","innerHTML","children","child","componentsWaiting","_countChildren","_createJavascriptClass","subcomponents","_dispatchRenderEvent","_handleJavascriptOnlyComponents","jwtDecode","newComponent","onLoad","c","controller","result","deferred","substr","$element","slice","scrollIntoView","renderedEvent","Event","dispatchEvent","addEventListener","componentBuilder","runner","latestPageRequest","ComponentReloader","new_components","oldComponents","groupById","componentsToReload","Set","reload","recursiveDelete","rerender","fragments","render","html","items","reduce","loadPage","page","_waitUntilReady","getJSON","_","xhr","getResponseHeader","updateDocumentMetadata","fail","toLowerCase","str","charAt","toUpperCase","substring","join","oldBodyClass","history","pushState","st_async","encodeURIComponent","selectPage","requestId","Math","random","fallbackTimer","race","router","bind","AboutUs","super","navActivate","find","click","hasClass","fadeOut","removeClass","fadeIn","addClass","DownloadDocuments","download","each","i","element","getAttribute","SearchBar","enableFilters","filtersActive","$filterIcon","filters","toggle","callbacks","isActive","save","selectedProducts","updateData","hide","show","scrollToElement","elements","inverse","$outer","viewportScroll","scrollTop","viewportTop","offset","top","found","dt","elementTop","animate","_name","outer","reverse","chevron","target","trigger","AjaxError","errorCount","addError","close","_injectError","remove","text","template","append","AvailableProducts","addSearch","term","filterBy","removeSearch","product","request","requestedProducts","paramsData","products","selector","dismount","asRerender","setParam","value","setExtraParam","Carosel","load","self","toString","success","initCarosel","container","height","css","centerMode","hero","responsive","breakpoint","settings","slidesToShow","slidesToScroll","carosel","setContent","slick","getOptions","content","dots","infinite","centerPadding","ChangePassword","focus","addAsyncHooks","keyup","event","isMatch","val","whenInactiveFor","hint","password","validatePassword","time","callback","timeout","timeoutId","validate","$this","old_password","trim","new_password","confirm","validationResult","clearPasswords","prop","Confirmation","ok","cancel","getConfirmationResult","ConsentBanner","acceptCookies","setCookiesOnScroll","hideCookieMessage","setCookie","cookie","hideClass","class_name","scroll","ContactActions","getSelectedContacts","selectedContacts","selectedContactsMap","contactId","contactName","expireContacts","contactsMap","contactIds","contactNames","values","title","message","console","log","reloadData","error","ContactUs","validForm","startRequest","submitForm","done","finishRequest","acceptedPrivacyPolicy","is","displayRequiredLabel","firstName","lastName","email","company","mobileNumber","cols","CustomDashboard","isEditing","handlers","activeMenu","attachHandlers","handleMovers","_removeComponent","_removeRow","addMenuItem","_openAddMenu","stopPropagation","_fixRowHeight","$wrapper","next","first","$row","parent","_fixColWidth","_addItem","_closeAddMenu","_getPossibleElements","startCase","closeMenu","itemGroup","activeElements","toArray","off","$rows","_generateElement","isFull","$component","originalY","netChange","upperElement","upperHeight","upperH","lowerElement","lowerHeight","lowerH","dragger","distanceMoved","pageY","abs","round","newUpperH","max","min","newLowerH","_setRowClass","onMouseUp","prev","_getHClass","hClass","row","rowItems","colWidths","ignoreEmpty","rowCount","newValue","mode","toggleEditMode","saveStructure","layout","sidebar","rows","heightClass","DtStub","col","drawn","isVisible","column","columns","search","regex","smart","draw","visible","DataTable","_handleFiltered","filterContext","FilterContext","sync_only","table","dataTableModified","reloadTimeout","clearTimeout","addFilter","add","setFilter","toggleFilter","isSet","removeFilter","removeFilters","clearAll","destroy","showColumn","toggleColumn","hideColumn","addDateFilter","startDate","endDate","dateRange","removeDateFilter","toggleTag","category","checked","tagSearch","initialLoad","isReload","description","getDescription","params","isEqual","getParams","currentRequest","beforeSend","abort","dismounting","finishedLoading","getDefaultOptions","snakeCase","handleFormatters","columnIndexes","addIcons","trs","entries","extraClasses","formatter","config","fm","handleFormatter","formatterFunc","formatters","acc","index","stripes","stripe","orderable","paging","pagingType","pageLength","page_length","scrollX","scrollY","scrollCollapse","stripeClasses","order","oLanguage","sEmptyTable","empty_message","dom","opts","async","param","startsWith","getFilters","filterFunc","filterFunction","fn","dataTable","ext","Search","DateRange","TagSearch","getContexts","context","prime","clearFilter","call","asFunction","funcIndex","dataIndex","every","array","_objectSpread","BaseFilter","invoke","minDate","maxDate","columnIndex","foundDate","Date","setHours","start_date","toISOString","end_date","dateFilters","searchText","size","filterText","from","cat","filterTags","tags","t","tagFilters","tag","categories","tag_filters","dateFormat","preview","style","rating","roadshowRequestSlot","dtSettings","colIndex","prevAll","buttonContent","button","dtColumn","option","Dialogue","setDialogHeader","setDialogText","setText","showDialog","hideDialog","completeDialogLoading","setTitle","removeAttr","handleOk","handleDialogOk","handleCancel","handleDialogCancel","FilterPanel","isOpen","dataTables","initPanel","initFiltering","resetDateFilter","datePickers","tagContainer","initDatePicker","closePanel","datepicker","inputs","format","date_format","autoclose","keepEmptyValues","orientation","tagSections","TagSection","change","filterDates","picker","start","end","removePill","dateSet","showPill","pill","adding","reset","section","panel","p","groupName","findChildren","initEvents","header","accordion","accordion_i","checkboxes","checkbox","handleCheckboxChecked","decodeURIComponent","label","Footer","toggleFooterSize","closeFooter","footer","GridViewPage","isGridView","cold","previousData","Storage","pricingData","parse","localStorage","getItem","toggleGridView","_refreshData","gridView","templateHTML","outerHTML","star","img","__","date","content_icon","ticker","summary","newHTML","String","_getPricingData","outDatedTime","setMinutes","getMinutes","checkedTime","_getPricingApi","now","parseFloat","setItem","_updateTicker","api_key","$currentData","last","Hero","addAndRemoveBackground","overrideLoginBehaviour","$form","redirectString","_getRedirectString","submit","scrollTo","$target","showLogin","showForm","resetPassword","post","serialize","Tabs","newUrl","urlPath","tables","tabName","loadTab","tab","Tile","initTiles","tiles","setTileContent","tile","thumbnail_url","Loading","Modal","currentComponent","queue","persist","$modal","$panels","_trapTabInput","addCloseHandler","addImplicitSupport","mouseOffContent","mousedown","has","mouseup","remote","argHash","hash","arg","paramsArray","v","fromEntries","changeModalSize","ref","panelName","extraParams","closedAComponent","_closeExisting","_acquireLock","_getComponentId","kebabCase","_mountModal","filterIndex","which","focussed","focusIndex","nextItem","shiftKey","setReady","closeModal","modal","_handleEvent","_dismountModal","eventName","_releaseLock","childComponent","locked","pop","Navbar","PreferenceCenter","setupChevrons","group","acknowledge","Register","bindTermsCheckbox","updateSubmitButton","acceptsTerms","setCustomValidity","reportValidity","redirect","status","flashError","ResearchDocumentSummary","showPopup","contactEmail","popupHtml","prepend","hidePopup","ResetPassword","validateEmail","RoadshowCalendar","normaliseHeight","numRows","navigate","showTooltip","hideTooltip","RoadshowDetails","collapsible","heightStyle","icons","activeHeader","setDateRange","displayed","_updateTagFilters","allHidden","skipped","matched","RoadshowRequest","siblings","requestRoadshowSlot","requestSpecificRoadshowSlot","roadshowId","requestSlot","otherSlots","roadshowSlotId","slotId","RoadshowSlots","openFirstSection","collapse","Scorecard","changeScorecard","buttons","extend","currentTarget","route","validatePasswordInputs","oldPassword","newPassword","confirmed","hasLowerCase","hasUpperCase","hasNumber","hasSymbol","handleSearch","previousSearch","word","TabbedDataTable","tabIndex","tableData","tabClass","Team","UserPanel","minimised","innerWidth","$userPanel","resizeTimer","width","disable_resize","pageName","setSelected","setOnline","setOffline","menuItem","cachedPages","offlineHandler","Video","player","initEventHandler","eventHandler","VideoEventHandler","initEventListener","currentTime","YourResearch","loadPdf","populateFromCache","select"],"sourceRoot":""}