{"version":3,"file":"40.12b6a6cecb6d6b2074da.js","mappings":"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","sources":["webpack://raygun-website/./scripts/react/app/chrome/index.tsx","webpack://raygun-website/./scripts/react/app/index.tsx","webpack://raygun-website/./scripts/react/app/notifications/actions.ts","webpack://raygun-website/./scripts/react/app/notifications/utils.ts","webpack://raygun-website/./scripts/react/app/providers.tsx","webpack://raygun-website/./scripts/react/app/reducers/screen.tsx","webpack://raygun-website/./scripts/react/app/sagas.ts","webpack://raygun-website/./scripts/react/app/selectors/topLevelFilters.ts","webpack://raygun-website/./scripts/react/app/store.tsx","webpack://raygun-website/./scripts/react/app/theme/materialDS.ts","webpack://raygun-website/./scripts/react/app/webpackPublicPath.ts","webpack://raygun-website/./scripts/react/components/ds/selection/switch/index.tsx","webpack://raygun-website/./scripts/react/components/layout/float.tsx","webpack://raygun-website/./scripts/react/interfaces/sorting.tsx","webpack://raygun-website/./scripts/react/modules/inviteTeamModal/reducer.ts","webpack://raygun-website/./scripts/react/modules/inviteTeamModal/components/sidebar/index.tsx","webpack://raygun-website/./scripts/react/modules/permissions/manager.ts","webpack://raygun-website/./scripts/react/modules/resources/models/index.ts","webpack://raygun-website/./scripts/react/modules/resources/models/utils.ts","webpack://raygun-website/./scripts/react/modules/resources/reducers/index.ts","webpack://raygun-website/./scripts/react/modules/time/reducer/index.ts","webpack://raygun-website/./scripts/react/modules/whatsnew/components/menuItem.tsx","webpack://raygun-website/./scripts/react/sections/productpages/routing/users.ts","webpack://raygun-website/./scripts/react/utils/application/index.ts","webpack://raygun-website/./scripts/react/utils/cookies.ts","webpack://raygun-website/./scripts/react/utils/date/formatting.ts","webpack://raygun-website/./scripts/react/utils/marionette.ts"],"sourcesContent":["/** @format **/\n\nimport React from 'react';\n\nimport { Chrome as ClassicChrome } from './classic';\n\nexport const Chrome: React.FunctionComponent<{}> = ({ children }) => (\n {children}\n);\n","/** @format */\n\nimport './webpackPublicPath';\nimport './polyfills';\n\nimport * as React from 'react';\nimport { Middleware, Reducer } from 'redux';\nimport { get } from 'lodash';\nimport { SagaIterator } from 'redux-saga';\nimport { ReducerBuilder } from 'typescript-fsa-reducers';\n\nimport { RoutePreEntryCallback } from 'utils/routing';\nimport { setBaseUri } from 'utils/sagas';\nimport createReduxStoreForSection from 'app/store';\n\nimport { ErrorBoundary } from 'components/errorBoundary';\n\nimport { createRenderer } from './fela';\n\nimport { Providers } from './providers';\nimport { Chrome } from './chrome';\nimport { ScreenState } from './reducers';\n\nconst AppFactory = (\n sectionName: string,\n sectionReducers: Reducer,\n sectionSagas: (() => SagaIterator)[],\n sectionBaseRoute: string,\n sectionRoutes: {\n [type: string]: { path: string; beforeEntryCallback?: RoutePreEntryCallback };\n },\n sectionRouteReducers: ((\n builder: ReducerBuilder,\n ) => ReducerBuilder)[],\n options: {\n apiBaseUri?: string;\n extraTopLevelReducers?: { [key: string]: Reducer };\n middleware?: Middleware[];\n } = {},\n) => {\n // TODO: Move into store and use selector instead\n setBaseUri(get(options, 'apiBaseUri', ''));\n\n const { store, reducers } = createReduxStoreForSection(\n sectionName,\n sectionReducers,\n sectionSagas,\n sectionBaseRoute,\n sectionRoutes,\n sectionRouteReducers,\n get(options, 'extraTopLevelReducers', {}),\n get(options, 'middleware', []),\n );\n const renderer = createRenderer();\n\n const App: React.FunctionComponent<{}> = ({ children }) => (\n \n \n {children}\n \n \n );\n\n return {\n App,\n reducers,\n };\n};\n\nexport default AppFactory;\n","/** @format */\n\nimport * as Models from './models';\nimport { uuid } from 'utils/generators';\n\nimport createActionFactory from 'typescript-fsa';\nconst createAction = createActionFactory('notifications');\n\ntype NotificationId = string;\n\nexport type AddNotification = {\n id?: NotificationId;\n disableDismiss?: boolean;\n type: Models.TYPES;\n message: string;\n position: Models.Position;\n};\n\nexport type UpdateNotification = {\n id: NotificationId;\n type: Models.TYPES;\n message: string;\n disableDismiss?: boolean;\n};\n\nexport const show = createAction('ADD_NOTIFICATION');\nexport const remove = createAction('REMOVE_NOTIFICATION');\nexport const update = createAction('UPDATE_NOTIFICATION');\n\nexport const getID = () => uuid();\n\nexport const createPayload = (\n type: Models.TYPES,\n message: string,\n disableDismiss: boolean = false,\n position: Models.Position = Models.Position.CENTRE_TOP,\n): AddNotification => ({ type, message, disableDismiss, id: getID(), position });\n","/** @format **/\n\nimport { isNil } from 'lodash';\nimport { getTargetFromCookie } from 'utils/cookies';\nimport * as Models from './models';\n\n// Get the notification from cookies\nexport function getNotificationFromCookie(cookie: string = document.cookie): Models.Notification {\n const notificationInCookie = getTargetFromCookie(cookie, 'Notification');\n\n if (!(isNil(notificationInCookie) || cookie === '')) {\n // notification key looks like \"Notification.[Success|Error|Warning|Info]\"\n const notificationName = notificationInCookie.split('=')[0];\n const notificationType = notificationName.split('.')[1];\n const notificationMessage = decodeURIComponent(notificationInCookie.split('=')[1]);\n\n let enumNotificationType: Models.TYPES;\n switch (notificationType) {\n case 'Success':\n enumNotificationType = Models.TYPES.SUCCESS;\n break;\n case 'Error':\n enumNotificationType = Models.TYPES.ERROR;\n break;\n case 'Warning':\n enumNotificationType = Models.TYPES.WARNING;\n break;\n default:\n const _ec: never = notificationType as never;\n }\n\n if (!isNil(enumNotificationType)) {\n return {\n id: notificationName,\n message: notificationMessage,\n type: enumNotificationType,\n created: Date.now(),\n position: Models.Position.CENTRE_TOP,\n };\n }\n }\n\n return null;\n}\n\n// clear notification from cookie\nexport function clearNotificationFromCookie(notificationName: string) {\n document.cookie = `${notificationName}= ; ; expires = Thu, 01 Jan 1970 00:00:00 GMT; path=/`;\n}\n","/** @format */\n\nimport * as React from 'react';\n\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { RendererProvider, ThemeProvider } from 'react-fela';\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { ReactQueryDevtools } from 'react-query/devtools';\n\nimport { Theme } from 'app/theme';\n\nconst queryClient = new QueryClient();\n\nexport type ProviderDetails = {\n store: any;\n renderer: any;\n};\n\ntype Props = {} & ProviderDetails;\n\nexport const Providers: React.FunctionComponent = ({ children, store, renderer }) => {\n return (\n \n \n \n {children}\n \n\n {/* This component internally stops itself from being rendered in production environments. */}\n \n \n \n );\n};\n\nexport default Providers;\n","/** @format */\n\nimport { ComponentClass, FunctionComponent } from 'react';\nimport { NotFound } from 'components/notFound';\n\nimport { reducerWithInitialState } from 'typescript-fsa-reducers';\nimport { notFound } from 'utils/routing';\n\nexport type ScreenState = {\n type: string;\n component: ComponentClass<{}> | FunctionComponent<{}>;\n meta?: { [key: string]: any };\n layout?: ComponentClass<{}> | FunctionComponent<{}>;\n};\n\nexport const ScreenReducer = reducerWithInitialState({\n component: null,\n type: undefined,\n layout: null,\n}).case(notFound, state => {\n return { ...state, component: NotFound };\n});\n","/** @format */\n\nimport { call, fork, select, take, takeEvery } from 'redux-saga/effects';\n\nimport { trackPage } from 'utils/raygun';\nimport { ROUTE_ACTION_BASE } from 'utils/routing';\nimport { AppState } from 'interfaces/appState';\nimport { getLocation } from 'selectors/router';\n\nimport { HydrateNotificationsFromCookie } from 'app/notifications/sagas';\n\nfunction* postRouteToRaygun() {\n yield call(trackPage);\n}\n\nfunction* trackSpaCallsRaygun() {\n // Omit the first route action before posting for all routes, this stops duplicate entries coming through.\n yield take(routeAction);\n yield takeEvery(routeAction, postRouteToRaygun);\n}\n\nexport function* scrollBackToTop(action: Action) {\n const state: AppState = yield select();\n const lastLocation = getLocation(state);\n\n if (lastLocation !== action.type) {\n yield call(window.scrollTo, 0, 0);\n }\n}\n\ntype Action = { type: string };\nconst routeAction = ({ type }: Action) => type.indexOf(ROUTE_ACTION_BASE) > -1;\n\nexport function* AppSaga() {\n yield fork(trackSpaCallsRaygun);\n yield fork(HydrateNotificationsFromCookie);\n yield takeEvery(routeAction, scrollBackToTop);\n}\n","/** @format **/\n\nimport { createSelector } from 'reselect';\n\nimport { Filter, ServerTopLevelFilter } from 'legacy/components/topLevelFilters/models';\nimport { getFilters } from 'legacy/components/topLevelFilters/selectors';\n\nexport const getTopLevelFilterQueryString = createSelector(\n getFilters,\n (topLevelFilters: Filter[]): { topLevelFilters?: string } => {\n if (!topLevelFilters) {\n return {};\n }\n\n const filtered: ServerTopLevelFilter[] = topLevelFilters.map(t => ({\n Dimension: {\n Id: t.dimension.id,\n DisplayName: t.dimension.displayName,\n IsBoolean: t.dimension.isBoolean,\n },\n Comparator: {\n Id: t.comparator.id,\n DisplayName: t.comparator.displayName,\n MultiSelect: t.comparator.multiSelect,\n AllowFreeText: t.comparator.allowFreeText,\n },\n Values: t.values.map(v => v.id),\n }));\n\n const json = JSON.stringify(filtered);\n\n return {\n topLevelFilters: json,\n };\n },\n);\n","/**\n * @prettier\n */\n\nimport { createStore, applyMiddleware, combineReducers, Reducer, compose, Middleware } from 'redux';\nimport { addRoutes as RfRAddRoutes, connectRoutes } from 'redux-first-router';\nimport { Store } from 'redux';\nimport * as querySerializer from 'qs';\nimport { createBrowserHistory, createMemoryHistory } from 'history';\nimport createSagaMiddleware, { SagaIterator } from 'redux-saga';\nimport thunk from 'redux-thunk';\nimport { assign, mapValues, forEach, isNil } from 'lodash';\nimport { ReducerBuilder } from 'typescript-fsa-reducers';\nimport dynamicMiddlewares, { addMiddleware } from 'redux-dynamic-middlewares';\n\nimport { RoutePreEntryCallback } from 'utils/routing';\n\nimport {\n ConfigurationReducer,\n PageDataReducer,\n ScreenReducer,\n ScreenState,\n MessagesReducer,\n ChromeReducer,\n} from 'app/reducers';\n\nimport { Reducer as WhatsNewReducer, Saga as WhatsNewSaga } from 'modules/whatsnew';\nimport * as Time from 'modules/time';\nimport * as Resources from 'modules/resources';\nimport { PermissionManager } from 'modules/permissions';\nimport { Reducer as InviteTeamModalReducer } from 'modules/inviteTeamModal';\n\nimport { Reducer as TopLevelFilterReducer } from 'legacy/components/topLevelFilters';\n\nimport { NotificationReducer } from './notifications/reducer';\nimport { PopupReducer } from './popups/reducer';\nimport { AppSaga } from './sagas';\n\ndeclare const process: any;\ndeclare const rg4js: any;\nconst isTest = process.env.NODE_ENV === 'test';\ntype AsyncReducers = {\n [key: string]: Reducer;\n};\ntype Route = { path: string; beforeEntryCallback?: RoutePreEntryCallback };\ntype RoutesMap = {\n [type: string]: Route;\n};\n\nlet reducers: Reducer;\nlet store: Store;\n\nexport function getReducers() {\n return reducers;\n}\n\nexport function getStore() {\n return store as Store;\n}\n\nexport default function createReduxStoreForSection(\n sectionName: string,\n sectionReducers: Reducer,\n sectionSagas: (() => SagaIterator)[],\n sectionBaseRoute: string,\n sectionRoutes: RoutesMap,\n sectionRouteReducers: ((\n builder: ReducerBuilder,\n ) => ReducerBuilder)[],\n extraTopLevelReducers: { [key: string]: Reducer } = {},\n middleware: Middleware[] = [],\n) {\n const routesWithBasenameAdded = mapValues(sectionRoutes, mapping => ({\n ...mapping,\n path: `${sectionBaseRoute}${mapping.path}`,\n }));\n\n const builtScreenReducer = sectionRouteReducers.reduce(\n (accumulator, routeReducer) => routeReducer(accumulator),\n ScreenReducer,\n );\n\n const sagas = [AppSaga, WhatsNewSaga, Time.Saga, Resources.Sagas, ...sectionSagas];\n\n const storeStuff = createReduxStore();\n store = storeStuff.store;\n\n middleware.forEach(m => addMiddleware(m));\n storeStuff.registerReducer('screens', builtScreenReducer);\n forEach(extraTopLevelReducers, (reducer, name) => storeStuff.registerReducer(name, reducer));\n storeStuff.registerReducer(sectionName, sectionReducers);\n\n // Init the Permission manager, gives it access to the store\n PermissionManager.setStore(storeStuff.store);\n\n if (!isTest) {\n sagas.forEach(saga => storeStuff.registerSaga(saga));\n\n storeStuff.addRoutes(routesWithBasenameAdded);\n }\n\n Resources.Models.setStore(storeStuff.store);\n\n storeStuff.initialDispatch();\n\n return storeStuff;\n}\n\nconst asyncReducers: AsyncReducers = {};\nexport function createReduxStore(\n initialReducers: { [key: string]: Reducer } = {},\n initialState: any = undefined,\n useMemoryHistory: boolean = false,\n) {\n const routesMap: RoutesMap = {};\n\n const {\n reducer: locationReducer,\n middleware: navigationMiddleware,\n enhancer,\n initialDispatch,\n } = connectRoutes(\n useMemoryHistory ? createMemoryHistory() : createBrowserHistory(),\n {},\n {\n querySerializer,\n initialDispatch: false,\n notFoundPath: null,\n onBeforeChange: (dispatch, getState, action) => {\n const mapping = routesMap[action.action.type];\n const cb = mapping ? mapping.beforeEntryCallback : undefined;\n\n if (cb) {\n cb(dispatch, getState, action.action);\n }\n },\n },\n );\n\n reducers = createReducers({ ...initialReducers, location: locationReducer });\n\n const devtoolsCompose = (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;\n const composeEnhancers = devtoolsCompose\n ? devtoolsCompose({\n name: 'Raygun App',\n maxAge: 150,\n })\n : compose;\n const sagaMiddleware = createSagaMiddleware();\n const store = createStore(\n reducers,\n initialState,\n composeEnhancers(\n enhancer,\n applyMiddleware(thunk, navigationMiddleware, sagaMiddleware, dynamicMiddlewares),\n ),\n );\n\n function registerReducer(name: string, reducer: Reducer) {\n asyncReducers[name] = reducer;\n\n reducers = createReducers({ ...initialReducers, location: locationReducer, ...asyncReducers });\n store.replaceReducer(reducers);\n }\n\n function registerSaga(saga: () => SagaIterator) {\n const errorHandler: any = (err: any) => {\n const _ignored = !isNil(rg4js) && rg4js('send', { error: err, tags: ['Saga'] });\n\n window.setTimeout(() => {\n const sagaTask = sagaMiddleware.run(saga);\n\n sagaTask.done.catch(errorHandler);\n }, 1000);\n };\n const sagaTask = sagaMiddleware.run(saga);\n\n sagaTask.done.catch(errorHandler);\n }\n\n function addRoutes(routes: RoutesMap) {\n forEach(routes, (path, type) => (routesMap[type] = path));\n const routesWithoutCallbacks = mapValues(routes, mapping => mapping.path);\n\n store.dispatch(RfRAddRoutes(routesWithoutCallbacks));\n }\n\n return {\n store,\n reducers,\n registerReducer,\n registerSaga,\n addRoutes,\n initialDispatch,\n };\n}\n\nexport function createReducers(extraReducers: { [key: string]: Reducer } = {}) {\n const AppReducer = combineReducers({\n configuration: ConfigurationReducer,\n pageData: PageDataReducer,\n notifications: NotificationReducer,\n popups: PopupReducer,\n messages: MessagesReducer,\n chrome: ChromeReducer,\n });\n\n return combineReducers(\n assign({}, extraReducers, {\n app: AppReducer,\n toplevelFilters: TopLevelFilterReducer,\n whatsnew: WhatsNewReducer,\n inviteTeamModal: InviteTeamModalReducer,\n time: Time.Reducer,\n resources: Resources.Reducer,\n }),\n );\n}\n","/**\n * @prettier\n */\n/* tslint:disable:max-file-line-count */\n\n/**\n * Design system based colours\n */\n\nexport type BLUE_TYPES = {\n blue100: '#E8F4FD';\n blueLA100: '#80D8FF';\n blue200: '#D0E8FB';\n blue300: '#B9DDFA';\n blue400: '#A1D2F8';\n blueL400: '#29B6F6';\n blue500: '#8AC7F7';\n blue600: '#72BBF5';\n blueL600: '#039BE5';\n blue700: '#5BB0F3';\n blue800: '#43A5F2';\n blue900: '#2C9AF0';\n blue1000: '#158FEF';\n blue1100: '#1280D6';\n blue1200: '#1072BF';\n blue1300: '#0E63A6';\n blue1400: '#0C558F';\n blue1500: '#0A4777';\n blue1600: '#08395F';\n blue1700: '#062A47';\n blueRG1000: '#158FEF';\n blueRG1050: '#0478D2';\n blueRG1100: '#1280D6';\n blueRG1200: '#1072BF';\n};\n\nexport const BLUE: BLUE_TYPES = {\n blue100: '#E8F4FD',\n blueLA100: '#80D8FF',\n blue200: '#D0E8FB',\n blue300: '#B9DDFA',\n blue400: '#A1D2F8',\n blueL400: '#29B6F6',\n blue500: '#8AC7F7',\n blue600: '#72BBF5',\n blueL600: '#039BE5',\n blue700: '#5BB0F3',\n blue800: '#43A5F2',\n blue900: '#2C9AF0',\n blue1000: '#158FEF',\n blue1100: '#1280D6',\n blue1200: '#1072BF',\n blue1300: '#0E63A6',\n blue1400: '#0C558F',\n blue1500: '#0A4777',\n blue1600: '#08395F',\n blue1700: '#062A47',\n blueRG1000: '#158FEF',\n blueRG1050: '#0478D2',\n blueRG1100: '#1280D6',\n blueRG1200: '#1072BF',\n};\n\nexport type BLUE_GREY_TYPES = {\n blueGrey5: '#F8F9FA';\n blueGrey10: '#F4F6F8';\n blueGrey20: '#F0F2F4';\n blueGrey50: '#ECEFF1';\n blueGrey75: '#E2E8EB';\n blueGrey100: '#CFD8DC';\n blueGrey200: '#B0BEC5';\n blueGrey300: '#90A4AE';\n blueGrey400: '#78909C';\n blueGrey500: '#607D8B';\n blueGrey600: '#546E7A';\n blueGrey700: '#455A64';\n blueGrey800: '#37474F';\n blueGrey900: '#263238';\n};\n\nexport const BLUE_GREY: BLUE_GREY_TYPES = {\n blueGrey5: '#F8F9FA',\n blueGrey10: '#F4F6F8',\n blueGrey20: '#F0F2F4',\n blueGrey50: '#ECEFF1',\n blueGrey75: '#E2E8EB',\n blueGrey100: '#CFD8DC',\n blueGrey200: '#B0BEC5',\n blueGrey300: '#90A4AE',\n blueGrey400: '#78909C',\n blueGrey500: '#607D8B',\n blueGrey600: '#546E7A',\n blueGrey700: '#455A64',\n blueGrey800: '#37474F',\n blueGrey900: '#263238',\n};\n\nexport type GREY_TYPES = {\n grey50: '#FAFAFA';\n grey100: '#F5F5F5';\n grey200: '#EEEEEE';\n grey300: '#E0E0E0';\n grey350: '#DDDDDD';\n grey400: '#BDBDBD';\n grey500: '#9E9E9E';\n grey600: '#757575';\n grey700: '#616161';\n grey800: '#424242';\n grey900: '#212121';\n};\n\nexport const GREY: GREY_TYPES = {\n grey50: '#FAFAFA',\n grey100: '#F5F5F5',\n grey200: '#EEEEEE',\n grey300: '#E0E0E0',\n grey350: '#DDDDDD',\n grey400: '#BDBDBD',\n grey500: '#9E9E9E',\n grey600: '#757575',\n grey700: '#616161',\n grey800: '#424242',\n grey900: '#212121',\n};\n\nexport type CYAN_TYPES = {\n cyan100: '#B2EBF2';\n cyan200: '#80DEEA';\n cyan300: '#4DD0E1';\n cyan400: '#26C6DA';\n cyan500: '#00BCD4';\n cyan600: '#00ACC1';\n cyan700: '#0097A7';\n cyan800: '#00838F';\n cyan900: '#006064';\n};\n\nexport const CYAN: CYAN_TYPES = {\n cyan100: '#B2EBF2',\n cyan200: '#80DEEA',\n cyan300: '#4DD0E1',\n cyan400: '#26C6DA',\n cyan500: '#00BCD4',\n cyan600: '#00ACC1',\n cyan700: '#0097A7',\n cyan800: '#00838F',\n cyan900: '#006064',\n};\n\nexport type TEAL_TYPES = {\n teal50: '#E0F2F1';\n teal100: '#B2DFDB';\n teal200: '#80CBC4';\n teal300: '#4DB6AC';\n teal400: '#28B3AA';\n teal500: '#00A59A';\n teal600: '#00998E';\n teal700: '#008A7E';\n teal800: '#00695C';\n teal900: '#004D40';\n};\n\nexport const TEAL: TEAL_TYPES = {\n teal50: '#E0F2F1',\n teal100: '#B2DFDB',\n teal200: '#80CBC4',\n teal300: '#4DB6AC',\n teal400: '#28B3AA',\n teal500: '#00A59A',\n teal600: '#00998E',\n teal700: '#008A7E',\n teal800: '#00695C',\n teal900: '#004D40',\n};\n\nexport type RED_TYPES = {\n red50: '#FFEBEE';\n red100: '#FFCDD2';\n red200: '#EF9A9A';\n red300: '#E57373';\n red400: '#EF5350';\n red500: '#F44336';\n red600: '#E53935';\n red700: '#D32F2F';\n red800: '#C62828';\n red900: '#B71C1C';\n};\n\nexport const RED: RED_TYPES = {\n red50: '#FFEBEE',\n red100: '#FFCDD2',\n red200: '#EF9A9A',\n red300: '#E57373',\n red400: '#EF5350',\n red500: '#F44336',\n red600: '#E53935',\n red700: '#D32F2F',\n red800: '#C62828',\n red900: '#B71C1C',\n};\n\nexport type LIME_TYPES = {\n lime400: '#D4E157';\n};\n\nexport const LIME: LIME_TYPES = {\n lime400: '#D4E157',\n};\n\nexport type GREEN_TYPES = {\n green50: '#E8F5E9';\n green100: '#C8E6C9';\n green200: '#A5D6A7';\n green300: '#81C784';\n green400: '#66BB6A';\n green500: '#4CAF50';\n greenL500: '#8BC34A';\n green600: '#43A047';\n green700: '#388E3C';\n green800: '#2E7D32';\n green900: '#1B5E20';\n};\n\nexport const GREEN: GREEN_TYPES = {\n green50: '#E8F5E9',\n green100: '#C8E6C9',\n green200: '#A5D6A7',\n green300: '#81C784',\n green400: '#66BB6A',\n green500: '#4CAF50',\n greenL500: '#8BC34A',\n green600: '#43A047',\n green700: '#388E3C',\n green800: '#2E7D32',\n green900: '#1B5E20',\n};\n\nexport type GREENL_TYPES = {\n greenL500: '#8BC34A';\n};\n\nexport const GREENL: GREENL_TYPES = {\n greenL500: '#8BC34A',\n};\n\nexport type PURPLE_TYPES = {\n purple50: '#EDE7F6';\n purple100: '#D1C4E9';\n purple200: '#B39DDB';\n purple300: '#A78CD7';\n purple400: '#9170CD';\n purpleL400: '#AB47BC';\n purple500: '#7B54C4';\n purple600: '#724EBF';\n purple700: '#6545B7';\n purpleD700: '#512DA8';\n purpleDA700: '#651FFF';\n purple800: '#583EB0';\n purple900: '#311B92';\n};\n\nexport const PURPLE: PURPLE_TYPES = {\n purple50: '#EDE7F6',\n purple100: '#D1C4E9',\n purple200: '#B39DDB',\n purple300: '#A78CD7',\n purple400: '#9170CD',\n purpleL400: '#AB47BC',\n purple500: '#7B54C4',\n purple600: '#724EBF',\n purple700: '#6545B7',\n purpleD700: '#512DA8',\n purpleDA700: '#651FFF',\n purple800: '#583EB0',\n purple900: '#311B92',\n};\n\nexport type PINK_TYPES = {\n pink100: '#F8BBD0';\n pink300: '#F06292';\n};\n\nexport const PINK: PINK_TYPES = {\n pink100: '#F8BBD0',\n pink300: '#F06292',\n};\n\nexport type INDIGO_TYPES = {\n indigo600: '#3F51B5';\n};\n\nexport const INDIGO: INDIGO_TYPES = {\n indigo600: '#3F51B5',\n};\n\nexport type YELLOW_TYPES = {\n yellow300: '#FFF176';\n yellow700: '#FBC02D';\n};\n\nexport const YELLOW: YELLOW_TYPES = {\n yellow300: '#FFF176',\n yellow700: '#FBC02D',\n};\n\nexport type ORANGE_TYPES = {\n orange400: '#FFA726';\n orangeD400: '#FFA726';\n};\n\nexport const ORANGE: ORANGE_TYPES = {\n orange400: '#FFA726',\n orangeD400: '#FFA726',\n};\n\nexport type AMBER_TYPES = {\n amber50: '#FFF8E1';\n amber75: '#FFF2CB';\n amber100: '#FFECB3';\n amber200: '#FFE082';\n amber300: '#FFD54F';\n amber400: '#FFCA28';\n amber500: '#FFC107';\n amber600: '#FFB300';\n amber700: '#FFA000';\n amber800: '#FF8F00';\n amber900: '#FF8400';\n};\n\nexport const AMBER: AMBER_TYPES = {\n amber50: '#FFF8E1',\n amber75: '#FFF2CB',\n amber100: '#FFECB3',\n amber200: '#FFE082',\n amber300: '#FFD54F',\n amber400: '#FFCA28',\n amber500: '#FFC107',\n amber600: '#FFB300',\n amber700: '#FFA000',\n amber800: '#FF8F00',\n amber900: '#FF8400',\n};\n\nexport type SEMANTIC_TYPES = {\n attention: BLUE_TYPES['blue1000'];\n attentionLight: BLUE_TYPES['blue100'];\n warning: AMBER_TYPES['amber700'];\n warningLight: AMBER_TYPES['amber50'];\n success: GREEN_TYPES['green500'];\n successLight: GREEN_TYPES['green50'];\n danger: RED_TYPES['red600'];\n dangerLight: RED_TYPES['red50'];\n};\n\nexport const SEMANTIC: SEMANTIC_TYPES = {\n attention: BLUE.blue1000,\n attentionLight: BLUE.blue100,\n warning: AMBER.amber700,\n warningLight: AMBER.amber50,\n success: GREEN.green500,\n successLight: GREEN.green50,\n danger: RED.red600,\n dangerLight: RED.red50,\n};\n\nexport type SPECIAL_TYPES = {\n white: '#FFFFFF';\n transparent: 'transparent';\n black: '#000000';\n body: '#F5F7F8';\n};\n\nexport const SPECIAL: SPECIAL_TYPES = {\n transparent: 'transparent',\n white: '#FFFFFF',\n black: '#000000',\n body: '#F5F7F8',\n};\n\nexport type COLORS =\n | keyof AMBER_TYPES\n | keyof PINK_TYPES\n | keyof INDIGO_TYPES\n | keyof LIME_TYPES\n | keyof YELLOW_TYPES\n | keyof ORANGE_TYPES\n | keyof PURPLE_TYPES\n | keyof GREEN_TYPES\n | keyof RED_TYPES\n | keyof TEAL_TYPES\n | keyof CYAN_TYPES\n | keyof GREY_TYPES\n | keyof BLUE_TYPES\n | keyof BLUE_GREY_TYPES\n | keyof SPECIAL_TYPES;\n","declare var __webpack_public_path__: string;\n\n/**\n * Set's the `__webpack_public_path__` based on either the documents current script or \n * By finding the `webpack/vendors` file and using that documents base url\n */\nfunction getCurrentScriptDirectory() {\n let src;\n\n if(document.currentScript) {\n src = (document.currentScript as HTMLScriptElement).src;\n } else {\n // IE 11 support\n const scripts = document.getElementsByTagName('script');\n for(let i = 0; i < scripts.length; i++) {\n const s = scripts[i];\n if(s.src && s.src.indexOf('webpack/vendors')) {\n src = s.src;\n break;\n }\n }\n }\n\n if(!src) {\n throw new Error('Could not resolve default script.');\n }\n\n const length = src.lastIndexOf('/');\n return src.substring(0, length) + '/';\n}\n\nconst isTestEnviroment = (window as any)[\"TESTING\"];\n\nif(!isTestEnviroment && !__webpack_public_path__) {\n __webpack_public_path__ = getCurrentScriptDirectory();\n}","/** @format **/\n\nimport React from 'react';\n\nimport { Omit } from 'utils/types';\n\nimport {\n TrackFelaProps,\n ThumbFelaProps,\n FelaProps,\n SwitchWrapper,\n SwitchTrack,\n SwitchThumb,\n SwitchInput,\n} from './components';\n\ntype PublicProps = {\n onChange: (checked: boolean) => void;\n disabled: boolean;\n checked: boolean;\n small: boolean;\n forMenuItem?: boolean;\n} & FelaProps &\n Omit &\n Omit;\n\nexport class Switch extends React.Component {\n static defaultProps: Pick<\n PublicProps,\n | 'disabled'\n | 'thumbColor'\n | 'focusCheckedColor'\n | 'focusUncheckedColor'\n | 'hoverCheckedColor'\n | 'hoverUncheckedColor'\n | 'small'\n | 'trackCheckedColor'\n | 'trackUncheckedColor'\n | 'trackCheckedDisabledColor'\n | 'trackUncheckedDisabledColor'\n | 'trackUncheckedFocusColor'\n > = {\n disabled: false,\n small: false,\n thumbColor: 'white',\n focusCheckedColor: 'green100',\n focusUncheckedColor: 'blueGrey100',\n hoverCheckedColor: 'green50',\n hoverUncheckedColor: 'blueGrey50',\n trackCheckedColor: 'green500',\n trackCheckedDisabledColor: 'green200',\n trackUncheckedColor: 'blueGrey200',\n trackUncheckedDisabledColor: 'grey200',\n trackUncheckedFocusColor: 'blueGrey300',\n };\n\n render() {\n const { disabled, small, checked, forMenuItem, id, className } = this.props;\n\n return (\n \n ) =>\n this.props.onChange(e.currentTarget.checked)\n }\n />\n \n \n \n );\n }\n}\n","/**\n * @prettier\n */\n\nimport React from 'react';\nimport { createComponent } from 'react-fela';\nimport { IStyle } from 'fela';\n\nimport { applyModifiers } from 'fela-rules/modifiers';\nimport { screenMediumAndAbove } from 'fela-rules/breakpoints';\n\ntype Props = {\n left?: boolean;\n right?: boolean;\n rightForMediumAndAbove?: boolean;\n};\n\nconst StyledFloat = (props: Props): IStyle =>\n applyModifiers(\n [props.left, { float: 'left' }],\n [props.right, { float: 'right' }],\n [props.rightForMediumAndAbove, screenMediumAndAbove({ float: 'right' })],\n )({});\n\nexport const Float = createComponent(StyledFloat, 'div');\n","/** @format **/\n\nexport enum SORTING_DIRECTION {\n Ascending = 'Ascending',\n Descending = 'Descending',\n}\n\nexport function getOppositeSortDirection(direction: SORTING_DIRECTION): SORTING_DIRECTION {\n switch (direction) {\n case SORTING_DIRECTION.Ascending:\n return SORTING_DIRECTION.Descending;\n\n case SORTING_DIRECTION.Descending:\n return SORTING_DIRECTION.Ascending;\n\n default:\n const _never: never = direction;\n }\n}\n\nexport function getDirectionShorthand(direction: SORTING_DIRECTION) {\n switch (direction) {\n case SORTING_DIRECTION.Descending:\n return 'desc';\n case SORTING_DIRECTION.Ascending:\n default:\n return 'asc';\n }\n}\n","/** @format **/\n\nimport { reducerWithInitialState } from 'typescript-fsa-reducers';\nimport { keys, isNil } from 'lodash';\n\nimport { nestedReducerUpdate, reducerUpdate } from 'utils/reducerUpdate';\n\nimport { SystemTeams } from 'interfaces/teams';\n\nimport { LocalStorageUtil } from '../../utils/storage';\nimport * as Actions from './actions';\nimport * as Models from './models';\nimport { InviteTeamModalState } from './state';\n\nconst defaultRecipient: Models.Recipient = {\n id: '0',\n emailAddress: '',\n accessLevel: SystemTeams.Users,\n};\n\nexport const initialState: InviteTeamModalState = {\n recipientData: {\n '0': {\n ...defaultRecipient,\n id: '0',\n },\n '1': {\n ...defaultRecipient,\n id: '1',\n },\n '2': {\n ...defaultRecipient,\n id: '2',\n },\n },\n seenInviteModal: !isNil(LocalStorageUtil.getItem('inviteteam:notification')),\n};\n\nexport const InviteTeamModalReducer = reducerWithInitialState(initialState)\n .case(Actions.addRecipient, state => {\n const id = keys(state.recipientData).length.toString();\n\n return nestedReducerUpdate(state, 'recipientData', {\n [id]: {\n ...defaultRecipient,\n id,\n },\n });\n })\n .case(Actions.updateRecipient, (state, payload) =>\n nestedReducerUpdate(state, 'recipientData', {\n [payload.id]: {\n emailAddress: payload.emailAddress,\n accessLevel: payload.accessLevel || SystemTeams.Users,\n id: payload.id,\n },\n }),\n )\n .case(Actions.resetRecipients, state => {\n return nestedReducerUpdate(state, 'recipientData', initialState.recipientData);\n })\n .case(Actions.seenInviteTeam, state => {\n localStorage.setItem('inviteteam:notification', 'true');\n return reducerUpdate(state, { seenInviteModal: true });\n });\n","import * as React from 'react';\n\nimport { connect } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport { getPlanIdentifier } from 'app/selectors/configuration';\nimport { AppState } from 'interfaces/appState';\n\nimport { openModal } from 'components/modal';\nimport {SnowplowLink} from \"components/snowplow\";\nimport { preventDefault } from 'utils/events';\nimport { seenInviteTeam } from 'modules/inviteTeamModal/actions';\n\nimport { InviteTeamModal } from '../modal';\n\ntype StateProps = {\n planIdentifier: string;\n};\n\ntype DispatchProps = {\n openInviteModal: () => void;\n seenInviteModal: () => void;\n};\n\ntype PassedProps = {\n marionette?: boolean;\n onClick?: () => void;\n};\n\ntype MappedProps = {\n onClick: () => void;\n};\n\ntype Props = StateProps & DispatchProps & PassedProps & MappedProps;\n\nconst UnconnectedInviteTeamSidebar: React.FunctionComponent = ({\n planIdentifier,\n onClick\n}) => (\n
  • \n \n \n \n \n \n \n Invite team\n \n \n \n
  • \n);\n\nconst ConnectedInviteTeamSidebar = connect(\n (state: AppState) => ({\n planIdentifier: getPlanIdentifier(state)\n }),\n (dispatch: Dispatch) => ({\n openInviteModal: () => dispatch(openModal(InviteTeamModal)),\n seenInviteModal: () => dispatch(seenInviteTeam())\n }),\n (stateProps: StateProps, dispatchProps: DispatchProps, passedProps: PassedProps) => ({\n ...stateProps,\n ...dispatchProps,\n ...passedProps,\n onClick: () => {\n // Handles opening the Modal in Marionette since the modal itself is in that context as well\n if(passedProps.marionette) {\n passedProps.onClick();\n } else {\n dispatchProps.openInviteModal();\n }\n dispatchProps.seenInviteModal();\n },\n })\n)(UnconnectedInviteTeamSidebar);\n\nexport { ConnectedInviteTeamSidebar as InviteTeamSidebar };\n","/** @format **/\n\nimport { Store } from 'redux';\nimport { isNil } from 'lodash';\n\nimport { AppState } from 'interfaces/appState';\n\nimport { getPlanId, getAppId, isInOwnersTeam } from 'app/selectors/configuration';\n\nimport {\n ApplicationPermissions,\n PermissionCategory,\n PermissionTypes,\n PlanPermissions,\n} from './models';\nimport * as Selectors from './selectors';\n\nlet _store: Store;\nlet _state: AppState;\n\nexport function setStore(store: Store) {\n _store = store;\n _state = store.getState();\n}\n\n/**\n * Used only to make the manager testable\n * @param state: AppState\n */\nexport function setState(state: AppState) {\n _state = state;\n}\n\n/**\n * Handles Plan based permissions\n * @param planPermissions, all plan permissions user currently has\n * @param permissionRequired, the permission that we are checking for\n * @param planId?, optional target plan to check permission on.\n */\nfunction hasPlanPermission(\n planPermissions: { [key: number]: PlanPermissions },\n permissionRequired: PermissionTypes,\n planId: number,\n) {\n const targetPlanId = planId ? planId : getPlanId(_state);\n const currentPlanPermissions = planPermissions[targetPlanId];\n return !isNil(currentPlanPermissions) && currentPlanPermissions.indexOf(permissionRequired) > -1;\n}\n\n/**\n * Handles Application based permissions\n * @param applicationPermissions, all plan permissions user currently has\n * @param permissionRequired, the permission that we are checking for\n * @param appId? optional target app to check permission on.\n */\nfunction hasApplicationPermission(\n applicationPermissions: { [key: number]: ApplicationPermissions },\n permissionRequired: PermissionTypes,\n appId: number,\n) {\n const targetAppId = appId ? appId : getAppId(_state);\n const currentAppPermissions = applicationPermissions[targetAppId];\n return !isNil(currentAppPermissions) && currentAppPermissions.indexOf(permissionRequired) > -1;\n}\n\n/**\n * Main permission checking function\n * @param permissionRequired\n * @param category, type of permission i.e PLAN or APPLICATION.\n * @param appId, target app to check\n * @param planId, target plan to check\n */\nexport function can(\n permissionRequired: PermissionTypes,\n category: PermissionCategory = PermissionCategory.ALL,\n appId: number = null,\n planId: number = null,\n): boolean {\n const targetPlanId = planId ? planId : getPlanId(_state);\n const permissions = Selectors.getPermissions(_state);\n const { PlanPermissions, ApplicationPermissions } = permissions;\n\n if (category === PermissionCategory.PLAN) {\n return hasPlanPermission(PlanPermissions, permissionRequired, targetPlanId);\n } else if (category === PermissionCategory.APPLICATION) {\n return hasApplicationPermission(ApplicationPermissions, permissionRequired, appId);\n }\n\n const planPermission = hasPlanPermission(PlanPermissions, permissionRequired, targetPlanId);\n const applicationPermission = hasApplicationPermission(\n ApplicationPermissions,\n permissionRequired,\n appId,\n );\n return planPermission || applicationPermission;\n}\n","/** @format **/\n/* tslint:disable:max-file-line-count */\n\nimport { forEach, get, has, identity, isEmpty, isFunction, isNil, map } from 'lodash';\nimport { Store } from 'redux';\nimport { Action } from 'typescript-fsa';\n\nimport { Omit } from 'utils/types';\nimport { SORTING_DIRECTION } from 'interfaces/sorting';\n\nimport * as Actions from '../actions';\nimport {\n CreateActions,\n DeleteActions,\n FetchActions,\n FilteringActions,\n PaginationActions,\n PaginationDirection,\n PatchActions,\n PerformActions,\n Resource,\n ResourceActions,\n ResourceCapabilities,\n ResourceId,\n ResourceObject,\n SortingActions,\n} from './types';\nimport { PAGINATION_NO_MORE_RESULTS_CURSOR } from './constants';\nimport { ResourceContainer, ResourcesStateAtom } from '../state';\n\nexport { getNetworkErrorString, hasNetworkError } from './utils';\n\nexport * from './types';\nexport * from './constants';\n\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities: ResourceCapabilities.Fetching,\n): ResourceActions & FetchActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities: ResourceCapabilities.Patching,\n): ResourceActions & PatchActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities: ResourceCapabilities.Deleting,\n): ResourceActions & DeleteActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities: ResourceCapabilities.Actions,\n): ResourceActions & PerformActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities: ResourceCapabilities.Fetching | ResourceCapabilities.Patching,\n): ResourceActions & PatchActions & FetchActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities: ResourceCapabilities.Fetching | ResourceCapabilities.Deleting,\n): ResourceActions & FetchActions & DeleteActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities: ResourceCapabilities.Fetching | ResourceCapabilities.Pagination,\n): ResourceActions & FetchActions & PaginationActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities: ResourceCapabilities.Fetching | ResourceCapabilities.Filtering,\n): ResourceActions & FetchActions & FilteringActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities: ResourceCapabilities.Fetching | ResourceCapabilities.Sorting,\n): ResourceActions & FetchActions & SortingActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities:\n | ResourceCapabilities.Fetching\n | ResourceCapabilities.Pagination\n | ResourceCapabilities.Sorting,\n): ResourceActions & FetchActions & PaginationActions & SortingActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities:\n | ResourceCapabilities.Fetching\n | ResourceCapabilities.Pagination\n | ResourceCapabilities.Filtering,\n): ResourceActions & FetchActions & PaginationActions & FilteringActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities:\n | ResourceCapabilities.Fetching\n | ResourceCapabilities.Pagination\n | ResourceCapabilities.Filtering\n | ResourceCapabilities.Sorting,\n): ResourceActions &\n FetchActions &\n PaginationActions &\n FilteringActions &\n SortingActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities:\n | ResourceCapabilities.Fetching\n | ResourceCapabilities.Pagination\n | ResourceCapabilities.Sorting\n | ResourceCapabilities.Actions,\n): ResourceActions &\n FetchActions &\n PaginationActions &\n SortingActions &\n PerformActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities:\n | ResourceCapabilities.Fetching\n | ResourceCapabilities.Creating\n | ResourceCapabilities.Deleting,\n): ResourceActions & FetchActions & CreateActions & DeleteActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities:\n | ResourceCapabilities.Fetching\n | ResourceCapabilities.Creating\n | ResourceCapabilities.Deleting\n | ResourceCapabilities.Actions,\n): ResourceActions &\n FetchActions &\n CreateActions &\n DeleteActions &\n PerformActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities:\n | ResourceCapabilities.Fetching\n | ResourceCapabilities.Patching\n | ResourceCapabilities.Deleting,\n): ResourceActions & FetchActions & PatchActions & DeleteActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities:\n | ResourceCapabilities.Fetching\n | ResourceCapabilities.Patching\n | ResourceCapabilities.Creating,\n): ResourceActions & FetchActions & PatchActions & CreateActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities:\n | ResourceCapabilities.Fetching\n | ResourceCapabilities.Pagination\n | ResourceCapabilities.Deleting,\n): ResourceActions & FetchActions & PaginationActions & DeleteActions;\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS = OS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities:\n | ResourceCapabilities.Fetching\n | ResourceCapabilities.Pagination\n | ResourceCapabilities.Patching,\n): ResourceActions & FetchActions & PaginationActions & PatchActions;\n\nexport function registerResource<\n ST,\n OS extends ResourceObject,\n EU,\n RS,\n CS = Omit,\n A extends string = any\n>(\n resource: Resource,\n capabilities: ResourceCapabilities,\n):\n | (ResourceActions & FetchActions)\n | (ResourceActions & PatchActions)\n | (ResourceActions & DeleteActions)\n | (ResourceActions & CreateActions)\n | (ResourceActions & PerformActions)\n | (ResourceActions & FetchActions & FilteringActions)\n | (ResourceActions & FetchActions & PaginationActions)\n | (ResourceActions & FetchActions & SortingActions)\n | (ResourceActions & FetchActions & PaginationActions & SortingActions)\n | (ResourceActions &\n FetchActions &\n PaginationActions &\n FilteringActions &\n SortingActions)\n | (ResourceActions & FetchActions & PatchActions)\n | (ResourceActions & FetchActions & DeleteActions)\n | (ResourceActions & FetchActions & CreateActions)\n | (ResourceActions & FetchActions & PaginationActions & DeleteActions)\n | (ResourceActions & FetchActions & PaginationActions & PatchActions)\n | (ResourceActions &\n FetchActions &\n CreateActions &\n DeleteActions &\n PerformActions &\n PatchActions) {\n if (has(resourceMap, resource.name)) {\n throw new Error(`Resource ${resource.name} already registered`);\n }\n\n resourceMap[resource.name] = resource;\n const resourceName = resource.name;\n const actions: Partial<\n ResourceActions &\n FetchActions &\n PatchActions &\n CreateActions &\n PerformActions &\n DeleteActions &\n PaginationActions &\n SortingActions &\n FilteringActions\n > = {};\n\n if (capabilities & ResourceCapabilities.Fetching) {\n actions.fetch = (resourceId, completionCallback) =>\n dispatch(Actions.fetchingResourceStarted({ resourceId, resourceName, completionCallback }));\n actions.fetchList = completionCallback => {\n dispatch(Actions.resetPagination({ resourceName, resetBatchSize: false }));\n dispatch(\n Actions.fetchingListResourceStarted({\n resourceName,\n completionCallback,\n replaceResources: true,\n }),\n );\n };\n\n actions.isLoading = (resourceId, state) =>\n get(getResourceById(resourceName, resourceId, state), 'isFetching', false);\n actions.isListLoading = state =>\n get(getResourceFromStore(resourceName, state), 'isFetching', false);\n }\n\n if (capabilities & ResourceCapabilities.Patching) {\n actions.patch = (resourceId, updates, completionCallback) =>\n dispatch(\n Actions.patchingResourceStarted({ updates, resourceName, resourceId, completionCallback }),\n );\n actions.isPatching = (resourceId, state) =>\n get(getResourceById(resourceName, resourceId, state), 'isPatching', false);\n }\n\n if (capabilities & ResourceCapabilities.Creating) {\n actions.create = (updates, completionCallback) =>\n dispatch(Actions.postingResourceStarted({ resourceName, updates, completionCallback }));\n actions.isCreating = state =>\n get(getResourceFromStore(resourceName, state), 'isCreating', false);\n }\n\n if (capabilities & ResourceCapabilities.Actions) {\n actions.perform = (type, payload, completionCallback) =>\n dispatch(Actions.resourceActionStarted({ resourceName, type, payload, completionCallback }));\n actions.isPerformingAction = (type, state) =>\n get(getResourceFromStore(resourceName, state), `isPerformingAction.${type}`, false);\n }\n\n if (capabilities & ResourceCapabilities.Deleting) {\n actions.deleteItem = (resourceId, completionCallback) =>\n dispatch(Actions.deletingResourceStarted({ resourceName, resourceId, completionCallback }));\n actions.isDeleting = (resourceId, state) =>\n get(getResourceById(resourceName, resourceId, state), 'isDeleting', false);\n }\n\n if (capabilities & ResourceCapabilities.Sorting) {\n actions.sortBy = (attribute, direction) => {\n dispatch(\n Actions.updateSorting({\n resourceName,\n attribute,\n sortDirection: direction,\n }),\n );\n };\n actions.getSortDirection = state =>\n get(getResourceFromStore(resourceName, state), 'sorting.direction', null);\n actions.getSortAttribute = state =>\n get(getResourceFromStore(resourceName, state), 'sorting.attributeName', null);\n }\n\n if (capabilities & ResourceCapabilities.Pagination) {\n actions.setBatchSize = size =>\n dispatch(Actions.updatePaginationBatchSize({ resourceName, batchSize: size }));\n actions.loadMore = completionCallback => {\n if (actions.canLoadMore(store.getState())) {\n dispatch(\n Actions.fetchingListResourceStarted({\n resourceName,\n completionCallback,\n replaceResources: false,\n }),\n );\n }\n };\n actions.nextPage = completionCallback => {\n if (actions.canLoadMore(store.getState())) {\n dispatch(\n Actions.fetchingListResourceStarted({\n resourceName,\n completionCallback,\n replaceResources: true,\n paginationDirection: PaginationDirection.FORWARDS,\n }),\n );\n }\n };\n actions.previousPage = completionCallback => {\n if (actions.canPaginateBackwards(store.getState())) {\n dispatch(\n Actions.fetchingListResourceStarted({\n resourceName,\n completionCallback,\n replaceResources: true,\n paginationDirection: PaginationDirection.BACKWARDS,\n }),\n );\n }\n };\n actions.resetPagination = () =>\n dispatch(Actions.resetPagination({ resourceName, resetBatchSize: true }));\n actions.canLoadMore = state =>\n get(getResourceFromStore(resourceName, state), 'pagination.nextCursor', '') !==\n PAGINATION_NO_MORE_RESULTS_CURSOR;\n actions.canPaginateBackwards = state => {\n const prevCursor = get(\n getResourceFromStore(resourceName, state),\n 'pagination.prevCursor',\n '',\n );\n return !isNil(prevCursor) && !isEmpty(prevCursor);\n };\n actions.getTotalNumberOfRecords = state =>\n get(getResourceFromStore(resourceName, state), 'pagination.totalRecords', null);\n actions.getBatchSize = state =>\n get(getResourceFromStore(resourceName, state), 'pagination.batchSize', null);\n actions.getNextCursor = state =>\n get(getResourceFromStore(resourceName, state), 'pagination.nextCursor', null);\n }\n\n if (capabilities & ResourceCapabilities.Filtering) {\n actions.updateFilters = (filters, triggerFetch = false, completionCallback) => {\n dispatch(Actions.updateFilters({ resourceName, filters }));\n if (triggerFetch) {\n dispatch(Actions.resetPagination({ resourceName, resetBatchSize: true }));\n dispatch(\n Actions.fetchingListResourceStarted({\n resourceName,\n completionCallback,\n replaceResources: true,\n }),\n );\n }\n };\n actions.getFilters = state =>\n get(getResourceFromStore(resourceName, state), 'filtering.filters', []);\n }\n\n const notificationAction = Actions.createNotificationSagaForResource({ resource });\n const initAction = Actions.initializeResource({\n resourceName: resource.name,\n paginated: (capabilities & ResourceCapabilities.Pagination) > 0,\n sortable: (capabilities & ResourceCapabilities.Sorting) > 0,\n filterable: (capabilities & ResourceCapabilities.Filtering) > 0,\n });\n if (isNil(store)) {\n dispatchQueue.push(notificationAction);\n dispatchQueue.push(initAction);\n } else {\n dispatch(notificationAction);\n dispatch(initAction);\n }\n\n const getResourceObjects = (resources: ResourceContainer['resources']) =>\n map(resources, r => ((r as any).object as unknown) as OS);\n const fullActions: typeof actions = {\n getError: (resourceId, state) =>\n get(getResourceById(resourceName, resourceId, state), 'errors', null),\n isActive: (resourceId, state) => {\n const r = getResourceById(resourceName, resourceId, state);\n\n if (r === null) {\n return false;\n }\n\n return r.isFetching || r.isPatching || r.isDeleting;\n },\n store: (resourceObject, transform = true) => {\n const transformer = getResourceByName(resourceName).transformer || identity;\n const object = transform ? transformer(resourceObject) : resourceObject;\n\n dispatch(Actions.storeResource({ resourceName, object }));\n },\n getGlobalError: state => get(getResourceFromStore(resourceName, state), 'errors', null),\n clear: () => dispatch(Actions.clearResources({ resourceName })),\n get: (resourceId, state) =>\n (get(getResourceById(resourceName, resourceId, state), 'object', undefined) as unknown) as OS,\n getAll: state => {\n const resourceContainer = getResourceFromStore(resourceName, state);\n const resources = get(resourceContainer, 'resources', {});\n const resourceList = getResourceObjects(resources);\n\n if (ResourceCapabilities.Sorting) {\n const sorting: any = get(resourceContainer, 'sorting', null);\n\n if (sorting && sorting.enabled) {\n const { attributeName, direction } = sorting;\n\n resourceList.sort((a, b) => {\n if (direction === SORTING_DIRECTION.Ascending) {\n return a[attributeName] > b[attributeName] ? 1 : -1;\n }\n\n return a[attributeName] < b[attributeName] ? 1 : -1;\n });\n }\n }\n\n return resourceList;\n },\n ...actions,\n };\n\n return fullActions as any;\n}\n\nlet resourceMap: { [resourceName: string]: Resource } = {};\n\nexport function getResourceByName(\n name: string,\n): Resource {\n if (!has(resourceMap, name)) {\n throw new Error(`Resource ${name} not registered`);\n }\n\n return resourceMap[name];\n}\n\nconst dispatchQueue: Action[] = [];\nlet store: Store;\n\nexport function setStore(s: Store) {\n store = s;\n\n forEach(dispatchQueue, action => store.dispatch(action));\n}\n\nfunction dispatch(a: Action) {\n if (store) {\n store.dispatch(a);\n } else {\n dispatchQueue.push(a);\n }\n}\n\nexport function clearResources() {\n resourceMap = {};\n}\n\nfunction getResourceFromStore(resourceName: string, state: ResourcesStateAtom) {\n if (isNil(state) || !has(state.resources, resourceName)) {\n // ignore coverage\n return null;\n }\n\n return state.resources[resourceName];\n}\n\nfunction getResourceById(resourceName: string, resourceId: ResourceId, state: ResourcesStateAtom) {\n const resource = getResourceFromStore(resourceName, state);\n\n if (resource === null || !has(resource.resources, resourceId)) {\n return null;\n }\n\n return resource.resources[resourceId];\n}\n","/** @format **/\n\nimport { find, get, isFunction, isNil, some } from 'lodash';\nimport moment from 'moment';\n\nimport { AppState } from 'interfaces/appState';\nimport { QueryParameters } from 'utils/fetching/utils';\n\nimport { getTopLevelFilterQueryString } from 'app/selectors/topLevelFilters';\nimport { getTimeZoneName } from 'selectors/time';\nimport { getHeadlineForError } from 'components/error';\n\nimport {\n GenericResourceErrors,\n NetworkError,\n PaginationDirection,\n ResourceAction,\n ResourceError,\n} from './types';\nimport * as Models from './';\n\nexport function getEndpointForAction(\n endpoint: string,\n action: ResourceAction,\n resourceId?: string,\n): string {\n switch (action) {\n case ResourceAction.FetchingSingle:\n case ResourceAction.Patching:\n case ResourceAction.Deleting:\n if (endpoint.indexOf(':resourceId') > -1) {\n return endpoint.replace(':resourceId', resourceId);\n }\n return `${endpoint}/${resourceId}`;\n case ResourceAction.Creating:\n case ResourceAction.FetchingAll:\n case ResourceAction.Action:\n return endpoint;\n default:\n // ignore coverage\n const _ec: never = action;\n }\n}\n\nfunction isNetworkError(error: ResourceError): error is NetworkError {\n if (isNil(error)) {\n return false;\n }\n\n return error.errorCode === GenericResourceErrors.NetworkError;\n}\n\nexport function getNetworkError(errors: ResourceError[]): Error {\n return get(find(errors, isNetworkError), 'meta.error', undefined);\n}\n\n// ignore coverage\nexport function getNetworkErrorString(errors: ResourceError[]): string {\n // ignore coverage\n return getHeadlineForError(getNetworkError(errors));\n}\n\nexport function hasNetworkError(errors: ResourceError[]) {\n return some(errors, isNetworkError);\n}\n\nexport function generateInjectedQueryString(\n resource: Models.Resource,\n state: AppState,\n action: Models.ResourceAction,\n paginationDirection?: PaginationDirection,\n): QueryParameters {\n let qs = {};\n const meta = resource.meta;\n\n if (meta) {\n const injectTopLevelFilters = isFunction(meta.injectTopLevelFilters)\n ? meta.injectTopLevelFilters()\n : meta.injectTopLevelFilters;\n\n if (meta.injectDateTime) {\n qs = {\n ...qs,\n dateFrom: moment(state.time.from)\n .utc()\n .format(),\n dateTo: moment(state.time.to)\n .utc()\n .format(),\n timeZoneName: getTimeZoneName(),\n };\n }\n\n if (injectTopLevelFilters) {\n qs = {\n ...qs,\n ...getTopLevelFilterQueryString(state),\n };\n }\n }\n\n if (action === ResourceAction.FetchingAll) {\n const sorting = state.resources[resource.name].sorting;\n const pagination = state.resources[resource.name].pagination;\n const filtering = state.resources[resource.name].filtering;\n\n if (pagination && pagination.enabled) {\n const cursor =\n paginationDirection === PaginationDirection.BACKWARDS\n ? pagination.prevCursor\n : pagination.nextCursor;\n\n qs = {\n ...qs,\n count: pagination.batchSize,\n cursor,\n };\n }\n\n if (sorting && sorting.enabled) {\n const { attributeName: sortAttribute, direction: sortDirection } = sorting;\n\n qs = {\n ...qs,\n sortDirection,\n sortAttribute,\n };\n }\n\n if (filtering && filtering.enabled) {\n const { filters } = filtering;\n\n /**\n * The filters must be stringified with the JSON library at this point, as the fetch operation uses qs.stringify before the request is made. The qs implementation will loop over the array if it is not turned into a string before hand causing the query string to contain multiple 'filter' entries, one for each item in the array. Also shortens the query string.\n */\n qs = {\n ...qs,\n filters: JSON.stringify(filters),\n };\n }\n }\n\n return qs;\n}\n","/** @format **/\n/* tslint:disable:max-file-line-count */\n\nimport { reducerWithInitialState } from 'typescript-fsa-reducers';\nimport { cloneDeep, get, has, isFinite, isNil, keyBy, map, omit, some, values } from 'lodash';\nimport { produce } from 'immer';\n\nimport { SORTING_DIRECTION } from 'interfaces/sorting';\n\nimport * as Actions from '../actions';\nimport { ResourceId, ResourceObject } from '../models';\nimport { ResourceContainer, ResourcesState, StoredResource } from '../state';\n\nexport const defaultState: ResourcesState = Object.freeze({});\n\nexport const defaultContainer: ResourceContainer = Object.freeze({\n isCreating: false,\n isFetching: false,\n isPerformingAction: {},\n errors: null,\n resources: Object.freeze({}),\n pagination: Object.freeze({\n enabled: false,\n batchSize: 10,\n prevCursor: undefined,\n nextCursor: undefined,\n totalRecords: undefined,\n }),\n sorting: Object.freeze({\n enabled: false,\n direction: undefined,\n attributeName: undefined,\n }),\n filtering: Object.freeze({\n enabled: false,\n filters: [],\n }),\n});\nconst getDefaultContainer = (): ResourceContainer => cloneDeep(defaultContainer);\n\nexport const defaultResource: StoredResource = Object.freeze({\n isDeleting: false,\n isFetching: false,\n isPatching: false,\n isCreating: false,\n lastFetchedAt: null,\n object: null,\n errors: null,\n});\n\nfunction getContainer(state: ResourcesState, { resourceName }: { resourceName: string }) {\n return state[resourceName];\n}\n\nfunction getResource(\n state: ResourcesState,\n { resourceName, resourceId }: { resourceName: string; resourceId: ResourceId },\n): StoredResource {\n return get(getContainer(state, { resourceName }), `resources[${resourceId}]`, null);\n}\n\nfunction setResource(\n state: ResourcesState,\n resource: StoredResource,\n { resourceName, resourceId }: { resourceName: string; resourceId: ResourceId },\n) {\n state[resourceName].resources[resourceId] = resource;\n}\n\nfunction deleteResource(\n state: ResourcesState,\n { resourceName, resourceId }: { resourceName: string; resourceId: ResourceId },\n) {\n state[resourceName].resources = omit(state[resourceName].resources, [resourceId]);\n}\n\nfunction populateResources(\n container: ResourceContainer,\n response: ResourceObject[],\n removeExistingResources: boolean,\n) {\n if (some(response, resource => !has(resource, 'id'))) {\n throw new Error(`Property \"id\" is required for all resources sent back from the server`);\n }\n\n const existingResources = values(container.resources);\n const fullResponseResources = map(response, r => ({\n ...defaultResource,\n object: r,\n lastFetchedAt: new Date(),\n }));\n\n const mergedResources = [\n ...(removeExistingResources ? [] : existingResources),\n ...fullResponseResources,\n ];\n\n container.resources = keyBy(mergedResources, r => r.object.id) as any;\n}\n\nexport const ResourcesReducer = reducerWithInitialState(defaultState)\n .case(Actions.fetchingResourceStarted, (state, payload) =>\n produce(state, draft => {\n const resource = getResource(draft, payload) || { ...defaultResource };\n resource.isFetching = true;\n\n setResource(draft, resource, payload);\n }),\n )\n .case(Actions.fetchingResourceSucceeded, (state, payload) =>\n produce(state, draft => {\n const resource = getResource(draft, payload);\n\n resource.lastFetchedAt = new Date();\n resource.object = payload.response[0];\n resource.isFetching = false;\n resource.errors = null;\n }),\n )\n .case(Actions.fetchingResourceFailed, (state, payload) =>\n produce(state, draft => {\n const resource = getResource(draft, payload);\n\n resource.lastFetchedAt = new Date();\n resource.errors = payload.errors;\n resource.isFetching = false;\n }),\n )\n .case(Actions.postingResourceStarted, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.isCreating = true;\n }),\n )\n .case(Actions.postingResourceSucceeded, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.isCreating = false;\n container.errors = null;\n\n populateResources(container, payload.response, false);\n }),\n )\n .case(Actions.postingResourceFailed, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.isCreating = false;\n container.errors = payload.errors;\n }),\n )\n .case(Actions.resourceActionStarted, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.isPerformingAction[payload.type] = true;\n }),\n )\n .case(Actions.resourceActionSucceeded, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.isPerformingAction[payload.type] = false;\n container.errors = null;\n }),\n )\n .case(Actions.resourceActionFailed, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.isPerformingAction[payload.type] = false;\n container.errors = payload.errors;\n }),\n )\n .case(Actions.patchingResourceStarted, (state, payload) => {\n if (isNil(getResource(state, payload))) {\n throw new Error(\n 'The resource you are attempting to patch has not been fetched yet. Please fetch it first',\n );\n }\n\n return produce(state, draft => {\n const existingResource = getResource(draft, payload);\n\n existingResource.isPatching = true;\n });\n })\n .case(Actions.patchingResourceSucceeded, (state, payload) =>\n produce(state, draft => {\n const existingResource = getResource(draft, payload);\n\n existingResource.isPatching = false;\n existingResource.errors = null;\n existingResource.object = {\n ...existingResource.object,\n ...payload.response[0],\n };\n }),\n )\n .case(Actions.patchingResourceFailed, (state, payload) =>\n produce(state, draft => {\n const existingResource = getResource(draft, payload);\n\n existingResource.errors = payload.errors;\n existingResource.isPatching = false;\n }),\n )\n .case(Actions.deletingResourceStarted, (state, payload) =>\n produce(state, draft => {\n const existingResource = getResource(draft, payload);\n\n if (!isNil(existingResource)) {\n existingResource.isDeleting = true;\n } else {\n const container = getContainer(draft, payload);\n container.resources[payload.resourceId] = cloneDeep(defaultResource);\n\n const createdResource = getResource(draft, payload);\n createdResource.isDeleting = true;\n }\n }),\n )\n .case(Actions.deletingResourceSucceeded, (state, payload) =>\n produce(state, draft => {\n deleteResource(draft, payload);\n }),\n )\n .case(Actions.deletingResourceFailed, (state, payload) =>\n produce(state, draft => {\n const existingResources = getResource(draft, payload);\n\n existingResources.isDeleting = false;\n existingResources.errors = payload.errors;\n }),\n )\n .case(Actions.fetchingListResourceStarted, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.isFetching = true;\n }),\n )\n .case(Actions.fetchingListResourceFailed, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.errors = payload.errors;\n container.isFetching = false;\n }),\n )\n .case(Actions.fetchingListResourceSucceeded, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n const response = get(payload, 'response', []);\n\n container.isFetching = false;\n container.errors = null;\n\n populateResources(container, response, payload.replaceResources);\n }),\n )\n .case(Actions.initializeResource, (state, { resourceName, paginated, sortable, filterable }) =>\n produce(state, draft => {\n if (isNil(draft[resourceName])) {\n draft[resourceName] = getDefaultContainer();\n draft[resourceName].pagination.enabled = paginated;\n draft[resourceName].sorting.enabled = sortable;\n draft[resourceName].filtering.enabled = filterable;\n }\n }),\n )\n .case(Actions.updateSorting, (state, { attribute, sortDirection, ...payload }) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.sorting.attributeName = attribute;\n container.sorting.direction = sortDirection || SORTING_DIRECTION.Descending;\n }),\n )\n .case(Actions.updatePaginationBatchSize, (state, { batchSize, ...payload }) => {\n if (isNil(batchSize) || !isFinite(batchSize)) {\n throw new Error(`batchSize is nil or a non-finite number! ${batchSize}`);\n }\n\n return produce(state, draft => {\n getContainer(draft, payload).pagination.batchSize = batchSize;\n });\n })\n .case(Actions.updatePagination, (state, { nextCursor, prevCursor, totalRecords, ...payload }) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.pagination.nextCursor = nextCursor;\n container.pagination.prevCursor = prevCursor;\n container.pagination.totalRecords = totalRecords;\n }),\n )\n .case(Actions.clearResources, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.resources = {};\n }),\n )\n .case(Actions.resetPagination, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n if (payload.resetBatchSize) {\n container.pagination.batchSize = 10;\n }\n\n container.pagination.nextCursor = undefined;\n container.pagination.prevCursor = undefined;\n }),\n )\n .case(Actions.updateFilters, (state, { filters, ...payload }) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n container.filtering.filters = filters;\n }),\n )\n .case(Actions.storeResource, (state, payload) =>\n produce(state, draft => {\n const container = getContainer(draft, payload);\n\n container.resources[payload.object.id] = { ...defaultResource, object: payload.object };\n }),\n );\n","/** @format **/\n\nimport moment, { Moment } from 'moment';\nimport { isNil } from 'lodash';\nimport { reducerWithInitialState } from 'typescript-fsa-reducers';\n\nimport { getQueryStringParam } from 'utils/routing/queryString';\n\nimport * as Actions from '../actions';\nimport { TimeState } from '../state';\n\nconst ONE_EIGHTY_DAYS = '180 day';\nconst ONE_MONTH = '1 month';\nconst ONE_DAY = '1 day';\n\n/**\n * Check the query string for the `range` param, and add return the date from and to - only if the range has been set\n */\nfunction getDateParamsFromRange(): { dateFrom: string | undefined; dateTo: string | undefined } {\n const range = getQueryStringParam('range');\n let dateFrom: Moment;\n\n switch (range) {\n case ONE_EIGHTY_DAYS:\n dateFrom = moment().subtract('180', 'days');\n break;\n case ONE_MONTH:\n dateFrom = moment().subtract('1', 'month');\n break;\n case ONE_DAY:\n dateFrom = moment().subtract('1', 'day');\n break;\n default:\n dateFrom = moment().subtract('1', 'week');\n break;\n }\n\n return {\n dateFrom: !isNil(dateFrom) ? dateFrom.toISOString() : undefined,\n dateTo: !isNil(range) ? moment().toISOString() : undefined,\n };\n}\n\nconst dateRangeParams = getDateParamsFromRange();\nconst dateFrom = getQueryStringParam('dateFrom', dateRangeParams.dateFrom);\nconst dateTo = getQueryStringParam('dateTo', dateRangeParams.dateTo);\n\nexport const defaultState: TimeState = {\n from: dateFrom ? moment(dateFrom).format() : undefined,\n to: dateTo ? moment(dateTo).format() : undefined,\n};\n\nexport const TimeReducer = reducerWithInitialState(defaultState).case(\n Actions.updateTimeRange,\n (_state, { from, to }) => ({\n from: from.format(),\n to: to.format(),\n }),\n);\n","/** @format **/\n\nimport React, { useEffect } from 'react';\nimport { IStyle } from 'fela';\nimport { createComponent } from 'react-fela';\nimport { connect } from 'react-redux';\nimport { isNil } from 'lodash';\n\nimport { getPathname } from 'selectors/router';\n\nimport { toIdentifier } from 'utils/linking';\n\nimport { ThemeType } from 'app/theme';\nimport { getCurrentApplication } from 'app/selectors/application';\n\nimport { ErrorBoundary } from 'components/errorBoundary';\n\nimport { SnowplowLink } from 'components/snowplow';\n\nimport * as WhatsNewActions from 'modules/whatsnew/actions';\n\nimport { ProductPagesState } from 'sections/productpages';\n\nimport * as Selectors from '../selectors';\nimport { SlopeHover } from '../hoc/slopeHover';\n\ntype StateProps = {\n unreadCount: number;\n applicationIdentifier: string;\n pathname: string;\n};\n\ntype DispatchProps = {\n fetchWhatsNewItems: () => void;\n};\n\ntype SuppliedProps = {};\ntype Props = StateProps & DispatchProps & SuppliedProps;\n\nconst StyledUnreadCount = (props: ThemeType): IStyle => ({\n backgroundColor: props.theme.colors.green.success,\n padding: '0.4rem 0.5rem',\n marginRight: '1.2rem',\n borderRadius: '0.3rem',\n color: '#fff',\n fontSize: '1rem',\n fontWeight: 700,\n});\nconst UnreadCount = createComponent(StyledUnreadCount, 'span');\n\nconst StyledNavItem = (): IStyle => ({ position: 'relative' });\nconst NavItem = createComponent(StyledNavItem, 'li', ['onMouseOver', 'onMouseLeave']);\n\nexport const UnconnectedMenuItem: React.FunctionComponent = ({\n applicationIdentifier,\n fetchWhatsNewItems,\n unreadCount,\n pathname,\n}) => {\n useEffect(() => {\n fetchWhatsNewItems();\n }, []);\n\n if (isNil(applicationIdentifier)) {\n return null;\n }\n\n const NavItemLinkClass =\n pathname === '/whats-new' ? 'sidebar-button is-active' : 'sidebar-button';\n\n return (\n \n \n {(onHover, onLeave) => (\n \n \n \n \n \n \n \n What's New\n \n {unreadCount > 0 && {unreadCount}}\n \n \n \n )}\n \n \n );\n};\n\nconst ConnectedMenuItem = connect(\n state => {\n const currentApplication = getCurrentApplication(state);\n\n return {\n unreadCount: Selectors.unreadItemCount(state),\n applicationIdentifier: !isNil(currentApplication)\n ? toIdentifier(currentApplication.id)\n : null,\n pathname: getPathname(state),\n };\n },\n dispatch => ({\n fetchWhatsNewItems: () => dispatch(WhatsNewActions.fetchWhatsNewItems()),\n }),\n)(UnconnectedMenuItem);\n\nexport { ConnectedMenuItem as MenuItem };\n","/** @format */\n\nimport { createRoutingAction } from 'utils/routing';\n\nexport const GoToAffectedUsers = createRoutingAction<{ applicationIdentifier: string }>(\n 'GO_TO_AFFECTED_USERS',\n);\n\nexport const GoToAffectedUsersAfterDataIsSent = createRoutingAction<{\n applicationIdentifier: string;\n}>('GO_TO_AFFECTED_USERS_AFTER_DATA_IS_SENT');\n\nexport const GoToAffectedUser = createRoutingAction<{\n applicationIdentifier: string;\n userIdentifier: string;\n}>('GO_TO_AFFECTED_USER');\n","/** @format */\nimport { get, isNil, find } from 'lodash';\n\nimport { Application } from 'interfaces/application';\n\nimport { toId } from 'utils/linking';\n\nfunction getApplicationsFromPageData(): Application[] {\n return get(window, 'RaygunPageData.Applications', []);\n}\n\nexport function getApplicationForPage(): Application {\n const applicationId: number = get(window, 'RaygunConfiguration.ApplicationId', null);\n\n if (!isNil(applicationId)) {\n const applications = getApplicationsFromPageData();\n const matchingApplication = find(applications, a => a.id === applicationId);\n\n if (!isNil(matchingApplication)) {\n return matchingApplication;\n }\n }\n\n return null;\n}\n\nexport function getApplicationNameByIdentifier(appIdentifier: string) {\n const appId = toId(appIdentifier);\n const applications = getApplicationsFromPageData();\n const applicationDetails = find(applications, app => app.id === appId);\n\n if (!isNil(applicationDetails)) {\n return applicationDetails.name;\n }\n\n return null;\n}\n\nexport function getApplicationIdentifier() {\n return get(window, 'RaygunConfiguration.ApplicationIdentifier');\n}\n","/** @format **/\n\nimport { includes } from 'lodash';\n\nexport const getTargetFromCookie = (cookie: string = document.cookie, target: string) => {\n return ('; ' + cookie).split('; ').filter(c => includes(c, target))[0];\n};\n\nexport const getTargetValueFromCookie = (cookie: string = document.cookie, target: string) => {\n const retrievedTarget = getTargetFromCookie(cookie, target);\n return retrievedTarget && retrievedTarget.split('=')[1];\n};\n","/** @format */\n\nimport { isNil } from 'lodash';\nimport moment from 'moment';\n\nimport { get24HourDisplay } from 'selectors/time';\nimport { DateInput } from 'utils/types';\n\nimport { convertUtcToUsersMoment } from './conversion';\n\n/**\n * Format tokens can be found on the momentjs documentation\n * https://momentjs.com/docs/#/displaying/format/\n */\nexport function format(\n date: DateInput,\n twelveHourFormat: string,\n twentyFourHourFormat: string = twelveHourFormat,\n): string {\n if (isNil(date)) {\n return '-';\n }\n\n const displayAs24Hour = get24HourDisplay();\n return convertUtcToUsersMoment(date).format(\n displayAs24Hour ? twentyFourHourFormat : twelveHourFormat,\n );\n}\n\nexport function formatAsTimeAgo(date: DateInput, omitSuffix: boolean = false): string {\n const m = convertUtcToUsersMoment(date);\n return m.fromNow(omitSuffix);\n}\n\nexport function formatAsISOString(date: DateInput) {\n const m = convertUtcToUsersMoment(date);\n return m.toISOString();\n}\n\n/**\n * See {@link https://momentjs.com/docs/#/durations/humanize/|Moment humanize() docs} for more information\n *\n * @param timeSpan\n */\nexport function formatAsDuration(timeSpan: DateInput): string {\n return moment.duration(timeSpan).humanize();\n}\n\n/**\n * Legacy date formatters\n */\n\nexport function legacyFormatDate(date: DateInput): string {\n return format(date, 'MMMM Do, YYYY');\n}\n\nexport function legacyFormatLongDateTime(date: DateInput, includeTime = true): string {\n if (includeTime) {\n return format(date, 'MMMM Do YYYY, h:mm:ss a', 'MMMM Do YYYY, HH:mm:ss');\n } else {\n return format(date, 'MMMM Do YYYY, h:mm a', 'MMMM Do YYYY, HH:mm');\n }\n}\n\nexport function legacyFormatMediumDateTime(date: DateInput): string {\n return format(date, 'MMM Do h:mm:ss a', 'MMM Do HH:mm:ss');\n}\n\nexport function legacyFormatTimeForChart(date: DateInput, withDate: boolean = true): string {\n const m = convertUtcToUsersMoment(date);\n const addDate = withDate && m.hour() == 0 ? '\\nD MMM' : '';\n return format(date, `h:mm a${addDate}`, `HH:mm${addDate}`);\n}\n","/** @format **/\n\n/**\n * Creates and dispatches events that can be listened to in marionette\n * @param event, name corresponding to marionette event name\n * @param customData, data that may need to be accessed in marionette\n */\nexport function dispatchEvent(event: string, customData?: T) {\n const payload = {\n detail: customData,\n };\n\n const marionetteEvent = new CustomEvent(event, payload);\n window.dispatchEvent(marionetteEvent);\n}\n\n/**\n * Used to listen for events which are dispatched on the window.\n * Generally these events are called by Marionette and so this method acts\n * as a bridge allowing communication from Marionette to lower sections React\n * without having to pass them through as properties.\n */\nexport function addEventListener(\n event: string,\n callback: (props: CustomEvent) => void,\n): () => void {\n window.addEventListener(event, callback);\n\n return () => {\n window.removeEventListener(event, callback);\n };\n}\n"],"names":["Chrome","children","sectionName","sectionReducers","sectionSagas","sectionBaseRoute","sectionRoutes","sectionRouteReducers","options","get","store","reducers","renderer","App","createAction","show","remove","update","getID","u","createPayload","type","message","disableDismiss","position","CENTRE_TOP","id","getNotificationFromCookie","cookie","document","notificationInCookie","isNil","notificationName","split","notificationType","notificationMessage","decodeURIComponent","enumNotificationType","SUCCESS","ERROR","WARNING","created","Date","now","clearNotificationFromCookie","queryClient","Providers","QueryClientProvider","client","theme","ReactQueryDevtools","initialIsOpen","ScreenReducer","reducerWithInitialState","component","undefined","layout","case","state","postRouteToRaygun","trackSpaCallsRaygun","routeAction","scrollBackToTop","action","window","scrollTo","indexOf","AppSaga","getTopLevelFilterQueryString","getFilters","topLevelFilters","filtered","map","t","Dimension","Id","dimension","DisplayName","displayName","IsBoolean","isBoolean","Comparator","comparator","MultiSelect","multiSelect","AllowFreeText","allowFreeText","Values","values","v","JSON","stringify","isTest","createReduxStoreForSection","extraTopLevelReducers","middleware","routesWithBasenameAdded","mapValues","mapping","path","builtScreenReducer","reduce","accumulator","routeReducer","sagas","storeStuff","initialReducers","initialState","useMemoryHistory","routesMap","connectRoutes","querySerializer","initialDispatch","notFoundPath","onBeforeChange","dispatch","getState","cb","beforeEntryCallback","locationReducer","navigationMiddleware","enhancer","createReducers","location","devtoolsCompose","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","composeEnhancers","name","maxAge","compose","sagaMiddleware","createStore","applyMiddleware","registerReducer","reducer","asyncReducers","replaceReducer","registerSaga","saga","errorHandler","err","rg4js","error","tags","setTimeout","run","done","catch","addRoutes","routes","forEach","routesWithoutCallbacks","createReduxStore","m","extraReducers","AppReducer","combineReducers","configuration","pageData","notifications","popups","messages","chrome","assign","app","toplevelFilters","whatsnew","inviteTeamModal","time","resources","BLUE","blue100","blueLA100","blue200","blue300","blue400","blueL400","blue500","blue600","blueL600","blue700","blue800","blue900","blue1000","blue1100","blue1200","blue1300","blue1400","blue1500","blue1600","blue1700","blueRG1000","blueRG1050","blueRG1100","blueRG1200","BLUE_GREY","blueGrey5","blueGrey10","blueGrey20","blueGrey50","blueGrey75","blueGrey100","blueGrey200","blueGrey300","blueGrey400","blueGrey500","blueGrey600","blueGrey700","blueGrey800","blueGrey900","GREY","grey50","grey100","grey200","grey300","grey350","grey400","grey500","grey600","grey700","grey800","grey900","CYAN","cyan100","cyan200","cyan300","cyan400","cyan500","cyan600","cyan700","cyan800","cyan900","TEAL","teal50","teal100","teal200","teal300","teal400","teal500","teal600","teal700","teal800","teal900","RED","red50","red100","red200","red300","red400","red500","red600","red700","red800","red900","LIME","lime400","GREEN","green50","green100","green200","green300","green400","green500","greenL500","green600","green700","green800","green900","GREENL","PURPLE","purple50","purple100","purple200","purple300","purple400","purpleL400","purple500","purple600","purple700","purpleD700","purpleDA700","purple800","purple900","PINK","pink100","pink300","INDIGO","indigo600","YELLOW","yellow300","yellow700","ORANGE","orange400","orangeD400","AMBER","amber50","amber75","amber100","amber200","amber300","amber400","amber500","amber600","amber700","amber800","amber900","SEMANTIC","attention","attentionLight","warning","warningLight","success","successLight","danger","dangerLight","SPECIAL","transparent","white","black","body","src","currentScript","scripts","getElementsByTagName","i","length","s","Error","lastIndexOf","substring","getCurrentScriptDirectory","render","this","props","disabled","small","checked","forMenuItem","className","as","onChange","e","currentTarget","hoverUncheckedColor","hoverCheckedColor","focusCheckedColor","focusUncheckedColor","thumbColor","trackUncheckedDisabledColor","trackCheckedDisabledColor","trackUncheckedColor","trackCheckedColor","trackUncheckedFocusColor","defaultProps","left","float","right","rightForMediumAndAbove","SORTING_DIRECTION","defaultRecipient","emailAddress","accessLevel","Users","recipientData","seenInviteModal","getItem","InviteTeamModalReducer","keys","toString","payload","localStorage","setItem","reducerUpdate","ConnectedInviteTeamSidebar","connect","planIdentifier","openInviteModal","stateProps","dispatchProps","passedProps","onClick","marionette","interactionId","href","xmlnsXlink","xlinkHref","_state","setStore","setState","hasPlanPermission","planPermissions","permissionRequired","planId","currentPlanPermissions","hasApplicationPermission","applicationPermissions","appId","currentAppPermissions","can","category","PermissionCategory","ALL","targetPlanId","permissions","PlanPermissions","ApplicationPermissions","PLAN","APPLICATION","planPermission","applicationPermission","registerResource","resource","capabilities","has","resourceMap","resourceName","actions","Fetching","fetch","resourceId","completionCallback","fetchList","resetBatchSize","replaceResources","isLoading","getResourceById","isListLoading","getResourceFromStore","Patching","patch","updates","isPatching","Creating","create","isCreating","Actions","perform","isPerformingAction","Deleting","deleteItem","isDeleting","Sorting","sortBy","attribute","direction","sortDirection","getSortDirection","getSortAttribute","Pagination","setBatchSize","size","batchSize","loadMore","canLoadMore","nextPage","paginationDirection","FORWARDS","previousPage","canPaginateBackwards","BACKWARDS","resetPagination","P","prevCursor","isEmpty","getTotalNumberOfRecords","getBatchSize","getNextCursor","Filtering","updateFilters","filters","triggerFetch","notificationAction","initAction","paginated","sortable","filterable","dispatchQueue","push","getError","isActive","r","isFetching","resourceObject","transform","transformer","getResourceByName","identity","object","getGlobalError","clear","getAll","resourceContainer","resourceList","sorting","enabled","sort","a","b","Ascending","clearResources","getEndpointForAction","endpoint","FetchingSingle","replace","FetchingAll","Action","isNetworkError","errorCode","NetworkError","getNetworkErrorString","errors","find","getNetworkError","hasNetworkError","some","generateInjectedQueryString","qs","meta","injectTopLevelFilters","isFunction","injectDateTime","dateFrom","from","utc","format","dateTo","to","timeZoneName","pagination","filtering","cursor","nextCursor","count","sortAttribute","defaultState","Object","freeze","defaultContainer","totalRecords","attributeName","defaultResource","lastFetchedAt","getContainer","getResource","populateResources","container","response","removeExistingResources","existingResources","mergedResources","keyBy","ResourcesReducer","draft","setResource","existingResource","cloneDeep","omit","deleteResource","Descending","isFinite","dateRangeParams","range","subtract","toISOString","getDateParamsFromRange","TimeReducer","UnreadCount","createComponent","backgroundColor","colors","green","padding","marginRight","borderRadius","color","fontSize","fontWeight","NavItem","ConnectedMenuItem","currentApplication","unreadCount","applicationIdentifier","pathname","fetchWhatsNewItems","useEffect","NavItemLinkClass","onHover","onLeave","onMouseOver","onMouseLeave","getApplicationForPage","applicationId","applications","matchingApplication","getTargetFromCookie","target","filter","c","includes","getTargetValueFromCookie","retrievedTarget","date","twelveHourFormat","twentyFourHourFormat","displayAs24Hour","formatAsTimeAgo","omitSuffix","fromNow","formatAsISOString","formatAsDuration","timeSpan","humanize","legacyFormatDate","legacyFormatLongDateTime","includeTime","legacyFormatMediumDateTime","legacyFormatTimeForChart","withDate","addDate","hour","addEventListener","event","callback","removeEventListener"],"sourceRoot":""}