{"version":3,"file":"807.379eef2ca29766d09a00.js","mappings":"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","sources":["webpack://raygun-website/./scripts/react/app/theme/material.ts","webpack://raygun-website/./scripts/react/components/center.tsx","webpack://raygun-website/./scripts/react/components/ds/dropdown/menu/items/item.tsx","webpack://raygun-website/./scripts/react/components/ds/tags/index.tsx","webpack://raygun-website/./scripts/react/components/ds/filters/index.tsx","webpack://raygun-website/./scripts/react/components/errorBoundary.tsx","webpack://raygun-website/./scripts/react/components/modal/modal/message.tsx","webpack://raygun-website/./scripts/react/components/module/inner.tsx","webpack://raygun-website/./scripts/react/components/page/banner.tsx","webpack://raygun-website/./scripts/react/components/page/container.tsx","webpack://raygun-website/./scripts/react/components/paywall/featureGating/gatedFeatureModal.tsx","webpack://raygun-website/./scripts/react/components/paywall/featureGating/styles.tsx","webpack://raygun-website/./scripts/react/constants/dateTimeFilter.ts","webpack://raygun-website/./scripts/react/legacy/components/topLevelFilters/actions.ts","webpack://raygun-website/./scripts/react/legacy/components/topLevelFilters/component.tsx","webpack://raygun-website/./scripts/react/legacy/components/topLevelFilters/selectors.ts","webpack://raygun-website/./scripts/react/modules/dashboard/models/text.ts","webpack://raygun-website/./scripts/react/modules/dashboard/models/types.ts","webpack://raygun-website/./scripts/react/modules/time/models/converters.ts","webpack://raygun-website/./scripts/react/modules/time/models/index.ts","webpack://raygun-website/./scripts/react/modules/time/models/types.ts","webpack://raygun-website/./scripts/react/modules/time/selectors/index.ts"],"sourcesContent":["/** @format */\n\nexport type BLUE_TYPES = {\n blue50: '#E3F2FD';\n blue100: '#BBDEFB';\n blue200: '#90CAF9';\n blue300: '#E64b5F6';\n blue400: '#42A5F5';\n blue500: '#2196F3';\n blue600: '#1E88E5';\n blue700: '#1976D2';\n blue800: '#1A77BE';\n blue900: '#0D47A1';\n};\n\nexport const BLUE: BLUE_TYPES = {\n blue50: '#E3F2FD',\n blue100: '#BBDEFB',\n blue200: '#90CAF9',\n blue300: '#E64b5F6',\n blue400: '#42A5F5',\n blue500: '#2196F3',\n blue600: '#1E88E5',\n blue700: '#1976D2',\n blue800: '#1A77BE',\n blue900: '#0D47A1',\n};\n\nexport type GREY_TYPES = {\n grey100: '#F5F5F5';\n grey200: '#EEEEEE';\n grey300: '#E0E0E0';\n grey400: '#BDBDBD';\n grey500: '#D3D3D3';\n grey600: '#757575';\n grey700: '#616161';\n grey800: '#424242';\n grey900: '#212121';\n};\n\nexport const GREY: GREY_TYPES = {\n grey100: '#F5F5F5',\n grey200: '#EEEEEE',\n grey300: '#E0E0E0',\n grey400: '#BDBDBD',\n grey500: '#D3D3D3',\n grey600: '#757575',\n grey700: '#616161',\n grey800: '#424242',\n grey900: '#212121',\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 GREEN_TYPES = {\n green50: '#E8F5E9';\n green100: '#C8E6C9';\n green200: '#A5D6A7';\n green300: '#81C784';\n green400: '#66BB6A';\n green500: '#4CAF50';\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 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 AMBER_TYPES = {\n amber50: '#FFF8E1';\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: '#FF6F00';\n};\n\nexport const AMBER: AMBER_TYPES = {\n amber50: '#FFF8E1',\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: '#FF6F00',\n};\n\nexport type YELLOW_TYPES = {\n yellow50: '#FFFDE7';\n yellow100: '#FFF9C4';\n yellow200: '#FFF59D';\n yellow300: '#FFF176';\n yellow400: '#FFEE58';\n yellow500: '#FFEB3B';\n yellow600: '#FDD835';\n yellow700: '#FBC02D';\n yellow800: '#F9A825';\n yellow900: '#F57F17';\n};\n\nexport const YELLOW: YELLOW_TYPES = {\n yellow50: '#FFFDE7',\n yellow100: '#FFF9C4',\n yellow200: '#FFF59D',\n yellow300: '#FFF176',\n yellow400: '#FFEE58',\n yellow500: '#FFEB3B',\n yellow600: '#FDD835',\n yellow700: '#FBC02D',\n yellow800: '#F9A825',\n yellow900: '#F57F17',\n};\n\nexport type SOCIAL_TYPES = {\n facebook: '#3B5998';\n github: '#353535';\n google: '#DC493C';\n twitter: '#00ACEE';\n};\n\nexport const SOCIAL: SOCIAL_TYPES = {\n facebook: '#3B5998',\n github: '#353535',\n google: '#DC493C',\n twitter: '#00ACEE',\n};\n","/** @format */\n\nimport * as React from 'react';\nimport classnames from 'classnames';\n\nexport type WIDTHS =\n | 1400\n | 1920\n | 1640\n | 1240\n | 1120\n | 960\n | 916\n | 800\n | 780\n | 704\n | 640\n | 624\n | 592\n | 576\n | 440\n | 360\n | 'full'\n | 'max'\n | 'none'\n | 'full-90'\n | '100%';\n\ninterface Props {\n width?: WIDTHS;\n}\n\nexport const Center: React.FunctionComponent = props => {\n const classes = classnames(`center`, {\n 'center-full': props.width === 'full' || props.width === 'none',\n 'center--max': props.width === 'max',\n 'center--full-90': props.width === 'full-90',\n 'center--max-100': props.width === '100%',\n [`center--${props.width}`]: typeof props.width === 'number',\n });\n\n return
{props.children}
;\n};\n\nCenter.defaultProps = {\n width: 'max',\n};\n","/** @format **/\n\nimport React from 'react';\nimport { IStyle } from 'fela';\nimport { createComponent, createComponentWithProxy } from 'react-fela';\nimport { isNil } from 'lodash';\n\nimport { ThemeType } from 'app/theme';\nimport { applyModifiers } from 'fela-rules/modifiers';\nimport { Switch } from 'components/ds/selection';\nimport { Icon } from 'components/icon';\n\nimport { Helptip, HelptipProps } from '../../../tooltip';\n\ntype ContainerProps = {\n checkbox?: boolean;\n icon?: boolean;\n withSwitch?: boolean;\n selected?: boolean;\n disabled?: boolean;\n spacing?: boolean;\n};\n\nconst StyledMenuItemContainer = (props: ContainerProps & ThemeType): IStyle =>\n applyModifiers(\n [\n props.spacing && !props.checkbox && !props.icon,\n {\n paddingLeft: '16px',\n },\n ],\n [\n props.icon,\n {\n paddingLeft: 0,\n },\n ],\n [\n props.selected,\n {\n backgroundColor: props.theme.ds.getColorByName('blue100'),\n },\n ],\n [\n props.withSwitch,\n {\n paddingRight: '48px',\n position: 'relative',\n },\n ],\n [\n props.disabled,\n {\n color: props.theme.ds.getColorByName('grey400'),\n cursor: 'not-allowed',\n ':hover': {\n backgroundColor: 'none',\n },\n ':focus': {\n backgroundColor: 'none',\n },\n ':active': {\n backgroundColor: 'none',\n },\n },\n ],\n )({\n display: 'flex',\n alignItems: 'center',\n backgroundColor: 'white',\n paddingLeft: '8px',\n paddingRight: '16px',\n minHeight: '40px',\n cursor: 'pointer',\n ':hover': {\n backgroundColor: '#E8F5FF',\n },\n ':focus': {\n backgroundColor: props.theme.ds.getColorByName('blueGrey100'),\n },\n });\n\nconst MenuItemContainer = createComponentWithProxy(StyledMenuItemContainer, 'div');\n\ntype MenuItemLabel = {\n fontWeight?: number;\n textEllipsis?: boolean;\n disabled?: boolean;\n};\n\nconst StyledMenuItemLabel = (props: MenuItemLabel & ThemeType): IStyle =>\n applyModifiers(\n [\n !!props.fontWeight,\n {\n fontWeight: props.fontWeight,\n },\n ],\n [\n !!props.textEllipsis,\n {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n ],\n [\n props.disabled,\n {\n color: props.theme.ds.getColorByName('grey400'),\n cursor: 'not-allowed',\n ':hover': {\n color: 'none',\n },\n ':active': {\n color: 'none',\n },\n },\n ],\n )({\n lineHeight: '20px',\n padding: '10px 0',\n display: 'block',\n color: '#333',\n width: '100%',\n ':hover': {\n color: props.theme.ds.getColorByName('grey800'),\n },\n ':active': {\n color: props.theme.ds.getColorByName('grey800'),\n },\n });\n\nconst MenuItemLabel = createComponent(StyledMenuItemLabel, 'span');\n\ntype MenuItemProps = {\n label: string;\n labelFontWeight?: number;\n value?: any;\n checkbox?: boolean;\n icon?: boolean;\n textEllipsis?: boolean;\n disabled?: boolean;\n helpTipOptions?: HelptipProps;\n rightIcon?: boolean;\n selected?: boolean;\n spacing?: boolean;\n} & React.HTMLProps;\n\nconst MenuItem: React.FunctionComponent = ({\n label,\n labelFontWeight,\n value,\n onClick,\n textEllipsis,\n children,\n disabled,\n helpTipOptions,\n rightIcon,\n checkbox,\n selected,\n spacing,\n ...baseProps\n}) => {\n const menuItem = (\n <>\n {children}\n \n {label}\n \n \n );\n\n return (\n \n {/*\n We want to display the helptip if - The helptip exists and the menu item is disabled.\n Otherwise, if only the right icon exists we want to display just the right icon.\n Otherwise, just return a regular menu item look.\n\n TODO: Be able to pass any icon instead of hard coding the icon (for now, we can safely assume that the crown\n icon is only ever render on the right.\n */}\n\n {disabled && !isNil(helpTipOptions) ? (\n \n {menuItem}\n \n ) : (!!rightIcon) ? (\n <>{menuItem} \n ) : (menuItem\n )}\n \n );\n};\nMenuItem.defaultProps = {\n labelFontWeight: 400,\n};\nexport { MenuItem, MenuItemProps };\n\nconst StyledSwitchWrapper = (): IStyle => ({\n position: 'absolute',\n top: '0px',\n right: '0',\n});\n\nconst SwitchWrapper = createComponent(StyledSwitchWrapper);\n\ntype MenuItemWithSwitchProps = MenuItemProps & {\n onChange: () => void;\n checked: boolean;\n} & React.HTMLProps;\n\nexport const MenuItemWithSwitch: React.FunctionComponent = ({\n label,\n checked,\n onClick,\n onChange,\n ...baseProps\n}) => (\n {\n e.stopPropagation();\n const _ignored = onClick && onClick(e);\n }}\n {...baseProps}\n >\n {label}\n \n \n \n \n);\n","/**\n * @prettier\n */\n/* tslint:disable:max-classes-per-file */\n\nimport * as React from 'react';\nimport { DefaultProps } from './base';\nimport { BaseWrapper, BaseWrapperProps } from './base/wrapper';\nimport { BaseTextProps, BaseText } from './base/text';\nimport { BaseIconProps, BaseIcon } from './base/icon';\nimport { BaseTrackProps, BaseTrack } from './track';\n\nexport class Tag extends React.Component {\n render() {\n const { children, ...props } = this.props;\n return {children};\n }\n}\n\ntype DefaultTagTextPropKeys =\n | 'textColor'\n | 'disabledTextColor'\n | 'backgroundColor'\n | 'hoverBackgroundColor'\n | 'pressedBackgroundColor'\n | 'disabledBackgroundColor'\n | keyof BaseTextProps;\n\nexport class TagText extends React.Component {\n static defaultProps: Pick = {\n ...DefaultProps,\n textColor: 'white',\n fontWeight: 600,\n underline: false,\n disabledTextColor: 'grey400',\n disabledBackgroundColor: 'grey200',\n backgroundColor: 'blue1000',\n hoverBackgroundColor: 'blue1200',\n pressedBackgroundColor: 'blue1300',\n };\n\n render() {\n const { children, ...props } = this.props;\n return {children};\n }\n}\n\ntype DefaultTagIconPropKeys =\n | 'textColor'\n | 'disabledTextColor'\n | 'backgroundColor'\n | 'hoverBackgroundColor'\n | 'pressedBackgroundColor'\n | 'disabledBackgroundColor'\n | keyof BaseIconProps;\n\nexport class TagIcon extends React.Component {\n static defaultProps: Pick = {\n ...DefaultProps,\n icon: 'cross',\n textColor: 'white',\n disabledBackgroundColor: 'grey200',\n disabledTextColor: 'grey200',\n backgroundColor: 'blue1000',\n hoverBackgroundColor: 'blue1200',\n pressedBackgroundColor: 'blue1300',\n };\n\n render() {\n return ;\n }\n}\n\ntype DefaultTagCloseIconPropKeys =\n | 'textColor'\n | 'disabledTextColor'\n | 'backgroundColor'\n | 'hoverBackgroundColor'\n | 'pressedBackgroundColor'\n | 'disabledBackgroundColor'\n | keyof BaseIconProps;\n\nexport class TagCloseIcon extends React.Component {\n static defaultProps: Pick = {\n ...DefaultProps,\n icon: 'cross',\n textColor: 'white',\n disabledBackgroundColor: 'grey200',\n disabledTextColor: 'grey200',\n backgroundColor: 'blue1000',\n hoverBackgroundColor: 'blue1200',\n pressedBackgroundColor: 'blue1300',\n };\n\n render() {\n return ;\n }\n}\n\nexport class TagTrack extends React.Component {\n static defaultProps: Pick = {\n backgroundColor: 'blueGrey50',\n };\n\n render() {\n const { children, ...props } = this.props;\n return {children};\n }\n}\n","/**\n * @prettier\n */\n/* tslint:disable:max-classes-per-file */\n\nimport * as React from 'react';\nimport { DefaultProps, BaseDefaultProps } from '../tags/base';\nimport { BaseWrapper, BaseWrapperProps } from '../tags/base/wrapper';\nimport { BaseTextProps, BaseText } from '../tags/base/text';\nimport { BaseIconProps, BaseIcon } from '../tags/base/icon';\n\nimport { FilterPending, FilterPendingProps } from './pending';\nimport { TagTrack } from '../tags';\n\nexport { DefaultProps, BaseDefaultProps };\n\nexport class Filter extends React.Component {\n static defaultProps: Pick = {\n ...DefaultProps,\n };\n\n render() {\n const { children, ...props } = this.props;\n return {children};\n }\n}\n\ntype DefaultFilterTextPropKeys =\n | 'textColor'\n | 'disabledTextColor'\n | 'backgroundColor'\n | 'hoverBackgroundColor'\n | 'pressedBackgroundColor'\n | 'disabledBackgroundColor'\n | keyof BaseTextProps;\n\nexport class FilterText extends React.Component {\n static defaultProps: Pick = {\n ...DefaultProps,\n textColor: 'white',\n fontWeight: 500,\n underline: false,\n disabledTextColor: 'white',\n disabledBackgroundColor: 'grey400',\n backgroundColor: 'blue1100',\n hoverBackgroundColor: 'blue1200',\n pressedBackgroundColor: 'blue1300',\n };\n\n render() {\n const { children, ...props } = this.props;\n return {children};\n }\n}\n\ntype DefaultFilterIconPropKeys =\n | 'textColor'\n | 'disabledTextColor'\n | 'backgroundColor'\n | 'hoverBackgroundColor'\n | 'pressedBackgroundColor'\n | 'disabledBackgroundColor'\n | keyof BaseIconProps;\n\nexport class FilterIcon extends React.Component {\n static defaultProps: Pick = {\n ...DefaultProps,\n icon: 'cross',\n textColor: 'white',\n disabledTextColor: 'grey400',\n disabledBackgroundColor: 'grey300',\n backgroundColor: 'blue1000',\n hoverBackgroundColor: 'blue1100',\n pressedBackgroundColor: 'blue1200',\n };\n\n render() {\n return ;\n }\n}\n\ntype DefaultFilterCloseIconPropKeys =\n | 'textColor'\n | 'backgroundColor'\n | 'disabledTextColor'\n | 'hoverBackgroundColor'\n | 'pressedBackgroundColor'\n | 'disabledBackgroundColor'\n | keyof BaseIconProps;\n\nexport class FilterCloseIcon extends React.Component {\n static defaultProps: Pick = {\n ...DefaultProps,\n icon: 'cross',\n textColor: 'white',\n disabledTextColor: 'grey400',\n disabledBackgroundColor: 'grey300',\n backgroundColor: 'blue1000',\n hoverBackgroundColor: 'blue1100',\n pressedBackgroundColor: 'blue1200',\n };\n\n render() {\n return ;\n }\n}\n\ntype DefaultFilterAddIconPropKeys =\n | 'textColor'\n | 'backgroundColor'\n | 'disabledTextColor'\n | 'hoverBackgroundColor'\n | 'pressedBackgroundColor'\n | 'disabledBackgroundColor'\n | keyof BaseIconProps;\n\nexport class FilterAddIcon extends React.Component {\n static defaultProps: Pick = {\n ...DefaultProps,\n icon: 'plus',\n textColor: 'white',\n disabledTextColor: 'grey400',\n disabledBackgroundColor: 'grey300',\n backgroundColor: 'blue1000',\n hoverBackgroundColor: 'blue1100',\n pressedBackgroundColor: 'blue1200',\n };\n\n render() {\n return ;\n }\n}\n\ntype DefaultFilterPendingPropKeys =\n | 'iconColor'\n | 'backgroundColor'\n | 'hoverBackgroundColor'\n | 'pressedBackgroundColor'\n | keyof FilterPendingProps;\n\nexport class FilterPendingIcon extends React.Component {\n static defaultProps: Pick = {\n iconColor: 'white',\n backgroundColor: 'blue1000',\n hoverBackgroundColor: 'blue1100',\n pressedBackgroundColor: 'blue1200',\n };\n render() {\n return ;\n }\n}\n\nexport const FilterTrack = TagTrack;\n","/**\n * @prettier\n */\nimport React from 'react';\nimport { isNil } from 'lodash';\n\nimport { Error, Props as ErrorProps } from './error';\n\ndeclare const rg4js: any;\n\ntype Props = {\n blackhole?: boolean;\n} & Partial;\n\nexport class ErrorBoundary extends React.Component {\n constructor(props: Props) {\n super(props);\n\n this.state = { error: undefined };\n }\n\n componentDidCatch(e: Error, _info: any) {\n if ((window as any).TESTING) {\n throw e;\n }\n\n this.setState({ error: e });\n\n const _ignored = !isNil((window as any).rg4js) && rg4js('send', { error: e, tags: ['React'] });\n }\n\n render() {\n if (this.state.error) {\n if (this.props.blackhole) {\n return null;\n }\n\n return ;\n }\n\n return this.props.children;\n }\n}\n","/** @format */\n\nimport * as React from 'react';\nimport { IStyle } from 'fela';\nimport { createComponent } from 'react-fela';\nimport { ThemeType } from 'app/theme';\nimport { applyModifiers } from 'fela-rules/modifiers';\n\ntype ModalMessageProps = {\n color: 'yellow' | 'grey' | 'blue';\n};\n\nconst StyledModalMessageProps = (props: ModalMessageProps & ThemeType): IStyle =>\n applyModifiers(\n [\n props.color === 'yellow',\n {\n backgroundColor: props.theme.colors.lightning.highlight,\n },\n ],\n [\n props.color === 'blue',\n {\n backgroundColor: props.theme.colors.standard.azureHighlight,\n },\n ],\n [\n props.color === 'grey',\n {\n backgroundColor: props.theme.colors.grey.light,\n },\n ],\n )({\n padding: '12px 24px',\n borderBottom: `1px solid ${props.theme.colors.border.standard}`,\n });\n\nexport const ModalMessage = createComponent(StyledModalMessageProps);","/** @format */\n\nimport * as React from 'react';\nimport { IStyle } from 'fela';\nimport { createComponent } from 'react-fela';\nimport { ThemeType } from 'app/theme';\n\nconst StyledModuleInner = (props: ThemeType): IStyle => ({\n backgroundColor: `${props.theme.colors.grey.lighter}`,\n padding: `16px`,\n});\n\nexport const ModuleInner = createComponent(StyledModuleInner);\n","/** @format */\n\nimport * as React from 'react';\nimport classnames from 'classnames';\n\nimport { Icon } from 'components/icon';\n\ninterface Props {\n color?: 'yellow' | 'blue' | 'red' | null;\n dismissable?: boolean;\n onDismiss?: (e: React.MouseEvent) => void;\n}\n\nconst DismissButton: React.FunctionComponent = props => {\n if (props.dismissable) {\n return (\n \n \n \n );\n } else {\n return null;\n }\n};\n\nexport const Banner: React.FunctionComponent = props => {\n const className = classnames('page-banner page-banner--above', {\n 'page-banner--yellow': props.color === 'yellow',\n 'page-banner--blue': props.color === 'blue',\n 'page-banner--red': props.color === 'red',\n 'page-banner--dismissable': props.dismissable,\n });\n\n return (\n
\n \n {props.children}\n
\n );\n};\n\nBanner.defaultProps = {\n color: null,\n dismissable: false,\n};\n\nexport default Banner;\n","/**\n * @prettier\n */\n\nimport * as React from 'react';\nimport classnames from 'classnames';\n\ntype Props = {\n removeVerticalPadding?: boolean;\n removeTopPadding?: boolean;\n};\n\nexport const Container: React.FunctionComponent = props => {\n const classes = classnames('page-container', {\n ['page-container--no-padding-vertical']: props.removeVerticalPadding,\n ['page-container--no-padding-top']: props.removeTopPadding,\n });\n\n return
{props.children}
;\n};\n","/** @format **/\n\nimport React, { FunctionComponent } from 'react';\nimport { connect } from \"react-redux\";\nimport Link from \"redux-first-router-link\";\n\nimport { Module, ModuleBody, ModuleHeaderWithButton } from \"components/ds/module\";\nimport { Dialog, ModalProps } from 'components/ds/dialog';\nimport { H1, H4 } from 'components/ds/text';\nimport { EmphasisButton, UtilityIconButton } from \"components/ds/button\";\nimport { SnowplowLink } from 'components/snowplow';\n\nimport { HorizontalRule } from 'components/horizontalRule';\nimport { Column, Row } from \"components/grid\";\nimport { Padding } from \"components/layout\";\nimport { Icon } from \"components/icon\";\n\nimport { getPlanIdentifier } from \"app/selectors/configuration\";\nimport { ProductPagesState } from \"sections/productpages\";\nimport {\n IconWrapper,\n FeatureListContainer,\n HeaderPadding,\n BottomSectionContainer,\n GetFeatureText,\n UpgradeButtonWrapper,\n ModalImagesContainer,\n ModalImage,\n} from \"./styles\";\n\nimport { isLaptopSize, isDesktopSize, calculateMaxWidth, calculateMaxWidthForBasicModal } from \"./utils\";\n\ntype StateProps = {\n planIdentifier: string;\n};\n\ntype PassedProps = {\n heading: string;\n docsLink: string;\n spId: string;\n featureName: string;\n featureImage?: string;\n};\n\ntype Props = StateProps & PassedProps & ModalProps;\n\nconst UnconnectedGatedFeatureModal: FunctionComponent = props => {\n const isHeroImageVersion = !!props.featureImage && (isLaptopSize() || isDesktopSize());\n const isBasicModal = !props.featureImage;\n\n return (\n \n \n \n \n \n props.close(props.id)}/>\n \n \n \n \n \n \n \n

\n \n \n \n Upgrade to use this feature\n

\n \n

{props.heading}

\n
\n
    \n {props.children}\n
\n
\n\n \n\n \n Get {props.featureName} and more from $80.00/month on Team and Business plans.\n\n \n \n props.close(props.id)}>\n See upgrade options\n \n \n \n\n \n \n Learn more in the docs\n \n \n \n
\n\n {isHeroImageVersion && (\n \n \n \n \n \n )}\n
\n
\n
\n
\n );\n};\n\nconst ConnectedGatedFeatureModal = connect(\n state => ({\n planIdentifier: getPlanIdentifier(state),\n }),\n)(UnconnectedGatedFeatureModal);\n\nexport { ConnectedGatedFeatureModal as GatedFeatureModal };","/** @format **/\n\nimport { IStyle } from 'fela';\nimport { createComponentWithProxy } from 'react-fela';\nimport { makeMediaQuery, screenSmallOnly } from 'fela-rules/breakpoints';\nimport { applyModifiers } from 'fela-rules/modifiers';\n\ntype GatedFeatureModalProps = {\n isBasicModal: boolean;\n};\nconst StyledIconWrapper = (): IStyle => ({\n paddingRight: '8px',\n});\nexport const IconWrapper = createComponentWithProxy(StyledIconWrapper, 'span');\n\nconst StyledFeatureListContainer = (props: GatedFeatureModalProps): IStyle => applyModifiers(\n [\n props.isBasicModal,\n {\n ...makeMediaQuery(\n {\n padding: '48px',\n },\n 1061,\n ),\n }\n ]\n)({\n ...makeMediaQuery(\n {\n padding: '24px 48px 24px 24px',\n },\n 0,\n 641,\n ),\n ...makeMediaQuery(\n {\n padding: '32px',\n },\n 640,\n 1181,\n ),\n ...makeMediaQuery(\n {\n padding: '48px',\n },\n 1181,\n ),\n display: 'block',\n width: '100%',\n maxWidth: '912px',\n overflowY: 'auto',\n});\nexport const FeatureListContainer = createComponentWithProxy(StyledFeatureListContainer);\n\nconst StyledProductDescriptionListItem = (): IStyle => ({\n lineHeight: '25px',\n listStyleType: 'none',\n display: 'flex',\n fontSize: '14px',\n ['::before' as any]: {\n content: '\"\\\\2022\"',\n fontSize: '15px',\n color: 'black',\n marginRight: '10px',\n }\n});\nexport const ProductDescriptionListItem = createComponentWithProxy(StyledProductDescriptionListItem, 'li');\n\nconst StyledHeaderPadding = (): IStyle => ({\n ...screenSmallOnly(\n {\n paddingTop: '16px',\n paddingBottom: '16px',\n },\n ),\n\n paddingTop: '24px',\n paddingBottom: '24px',\n});\nexport const HeaderPadding = createComponentWithProxy(StyledHeaderPadding);\n\nconst StyledBottomSectionContainer = (props: GatedFeatureModalProps): IStyle => applyModifiers(\n [\n props.isBasicModal,\n {\n ...makeMediaQuery(\n {\n paddingTop: '40px',\n paddingBottom: '40px',\n },\n 1061,\n ),\n }\n ]\n)({\n ...screenSmallOnly({\n padding: '24px',\n }),\n\n ...makeMediaQuery(\n {\n padding: '32px',\n },\n 640,\n 1181,\n ),\n\n // XLarge and above screens\n padding: '40px 48px 48px 48px'\n});\nexport const BottomSectionContainer = createComponentWithProxy(StyledBottomSectionContainer);\n\nconst StyledGetFeatureText = (): IStyle => ({\n fontSize: '1.3rem',\n lineHeight: '22px',\n});\nexport const GetFeatureText = createComponentWithProxy(StyledGetFeatureText, 'p');\n\nconst StyledUpgradeButtonWrapper = (): IStyle => ({\n ...makeMediaQuery(\n {\n paddingTop: '16px',\n },\n 0,\n 1181,\n ),\n ...makeMediaQuery(\n {\n paddingTop: '24px',\n },\n 1181\n ),\n paddingBottom: '24px',\n});\nexport const UpgradeButtonWrapper = createComponentWithProxy(StyledUpgradeButtonWrapper);\n\nconst StyledModalImagesContainer = (): IStyle => ({\n ...makeMediaQuery(\n {\n display: 'flex',\n },\n 844,\n 1181,\n ),\n height: '100%',\n backgroundImage: 'url(\"/Content/Images/product-screenshots/feature-gating/feature-gating-backdrop.png\")',\n backgroundSize: 'cover',\n});\nexport const ModalImagesContainer = createComponentWithProxy(StyledModalImagesContainer);\n\nconst StyledModalImage = (): IStyle => ({\n ...makeMediaQuery(\n {\n height: '555.15px',\n width:' 389.97px',\n alignSelf: 'center',\n },\n 844,\n 1181,\n ),\n});\nexport const ModalImage = createComponentWithProxy(StyledModalImage, 'img');","/** @format */\n\nexport const ONE_HOUR: '1h' = '1h';\nexport const SIX_HOUR: '6h' = '6h';\nexport const ONE_DAY: '1d' = '1d';\nexport const SEVEN_DAYS: '7d' = '7d';\nexport const THIRTY_DAYS: '30d' = '30d';\n\nexport const CUSTOM: 'custom' = 'custom';\n\nexport type DateTimeFilterPredefinedRange = typeof ONE_DAY | typeof SEVEN_DAYS | typeof THIRTY_DAYS;\n\nexport const DEFAULT_DATE_TIME_FILTER_RANGE = SEVEN_DAYS;\n","/** @format */\n\nimport createActionFactory from 'typescript-fsa';\nimport { ThunkAction } from 'redux-thunk';\nimport { ToplevelFiltersState } from './state';\nimport * as Selectors from './selectors';\nimport * as Models from './models';\nimport { postToAPI } from 'utils/fetching';\nimport { isNil } from 'lodash';\n\nconst createAction = createActionFactory('toplevel-filters');\n\nexport const addFilter = createAction('ADD_FILTER');\nexport const editFilter = createAction('EDIT_FILTER');\nexport const removeFilter = createAction('REMOVE_FILTER');\nexport const setFilters = createAction('SET_FILTERS');\nexport const resetFilters = createAction('RESET_FILTERS');\n\nexport const setDimensions = createAction('SET_DIMENSIONS');\n\nexport type UpdateAddFilterStatePayload = {\n selectedDimensionId?: string;\n selectedComparatorId?: string;\n currentQuery?: string;\n currentMode?: Models.Mode;\n};\n\nexport type UpdateEditFilterStatePayload = {\n selectedFilterId?: string;\n selectedMode?: Models.Mode;\n openDropdown?: boolean;\n showComparatorDropdown?: boolean;\n showValuesDropdown?: boolean;\n};\n\nexport type UpdateComponentStatePayload = {\n collapse?: boolean;\n showToggleButton?: boolean;\n advancedSearchActive?: boolean;\n};\n\nexport const updateAddFilterState = createAction(\n 'UPDATE_ADD_FILTER_STATE',\n);\nexport const updateEditFilterState = createAction(\n 'UPDATE_EDIT_FILTER_STATE',\n);\nexport const updateComponentState = createAction(\n 'UPDATE_COMPONENT_STATE',\n);\n\nexport type UpdateExternalConfigurationPayload = {\n applicationIdentifier?: string;\n endpoint?: string;\n fromDate?: string;\n toDate?: string;\n apiKey?: string;\n theme?: string;\n addFilterText?: string;\n noResultsText?: string;\n supportAdvancedSearch?: boolean;\n};\nexport const updateExternalConfiguration = createAction(\n 'UPDATE_EXTERNAL_CONFIGURATION',\n);\n\nexport type FetchValuesForDimensionStartedPayload = { dimension: string };\nexport const fetchValuesForDimensionStarted = createAction(\n 'FETCH_VALUES_FOR_DIMENSION_STARTED',\n);\n\nexport type FetchValuesForDimensionFailedPayload = { dimension: string; error: Error };\nexport const fetchValuesForDimensionFailed = createAction(\n 'FETCH_VALUES_FOR_DIMENSION_FAILED',\n);\n\nexport type FetchValuesForDimensionSucceededPayload = {\n dimension: string;\n values: Models.FilterValue[];\n};\nexport const fetchValuesForDimensionSucceeded = createAction<\n FetchValuesForDimensionSucceededPayload\n>('FETCH_VALUES_FOR_DIMENSION_SUCCESS');\n\nexport type AddValuesForDimensionPayload = { dimension: string; values: Models.FilterValue[] };\nexport const addValuesForDimension = createAction(\n 'ADD_VALUES_FOR_DIMENSION',\n);\n\ntype FetchDimensionsResponse = {\n dimensionName: string;\n values: Models.FilterValue[];\n};\n\ntype PostToValuesApiParams = {\n signal: AbortSignal,\n state: ToplevelFiltersState;\n dispatch: any;\n dimension: Models.Dimension;\n comparator: Models.Comparator;\n currentQuery: string;\n};\n\nexport const fetchDimensionValues = (\n signal: AbortSignal,\n ignoreQueryText?: boolean,\n): ThunkAction => (dispatch, getState) => {\n const state = getState();\n const { currentQuery } = Selectors.getAddFilterState(state);\n const comparator = Selectors.getActiveComparator(state);\n const dimension = Selectors.getActiveDimension(state);\n\n postToValuesApi({\n signal,\n dimension,\n comparator,\n state,\n dispatch,\n currentQuery: ignoreQueryText ? '' : currentQuery,\n });\n};\n\nexport const fetchDimensionValuesByFilter = (\n signal: AbortSignal,\n currentFilter: Models.Filter,\n currentQuery: string = '',\n): ThunkAction => (dispatch, getState) => {\n const state = getState();\n\n postToValuesApi({\n signal,\n dimension: currentFilter.dimension,\n comparator: currentFilter.comparator,\n state,\n dispatch,\n currentQuery,\n });\n};\n\nfunction postToValuesApi(params: PostToValuesApiParams) {\n const { signal, state, dispatch, dimension, comparator, currentQuery } = params;\n const {\n applicationIdentifier,\n endpoint,\n fromDate,\n toDate,\n apiKey,\n } = Selectors.getExternalConfiguration(state);\n\n if (!dimension) {\n return;\n }\n\n const selectedDimensionId = dimension.id;\n dispatch(fetchValuesForDimensionStarted({ dimension: selectedDimensionId }));\n\n const requestParams = {\n fromDate,\n toDate,\n applicationIdentifier,\n query: currentQuery,\n comparator: isNil(comparator) ? '' : comparator.id,\n dimensionName: dimension.id,\n };\n\n postToAPI(endpoint, apiKey, requestParams, signal).then(\n (response: FetchDimensionsResponse) => {\n dispatch(\n fetchValuesForDimensionSucceeded({\n dimension: selectedDimensionId,\n values: response.values,\n }),\n );\n },\n (error: Error) => {\n if(!signal.aborted){\n dispatch(fetchValuesForDimensionFailed({ dimension: selectedDimensionId, error }));\n }\n },\n );\n}\n","/**\n * @prettier\n */\n\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport classnames from 'classnames';\nimport { reduce, isEmpty, has, isNil } from 'lodash';\n\nimport { Icon } from 'components/icon';\nimport { ErrorBoundary } from 'components/errorBoundary';\n\nimport { ActiveFilters } from './activeFilters/index';\n\nimport { ToplevelFiltersState } from './state';\nimport * as Actions from './actions';\nimport * as Models from './models';\nimport * as Selectors from './selectors';\n\ntype DispatchProps = {\n updateExternalConfiguration: (newOptions: Actions.UpdateExternalConfigurationPayload) => void;\n updateComponentState: (state: Actions.UpdateComponentStatePayload) => void;\n resetFilters: () => void;\n};\ntype StateProps = {\n numberOfFilters: number;\n collapse: boolean;\n showToggleButton: boolean;\n advancedSearchActive: boolean;\n};\ntype SuppliedProps = {\n containerHeight?: 32 | 48;\n theme?: 'border';\n addFilterText?: string;\n noResultsText?: string;\n applicationIdentifier?: string;\n endpoint?: string;\n fromDate?: string;\n toDate?: string;\n apiKey?: string;\n transformValue?: (value: Models.FilterValue, dimension?: Models.Dimension) => Models.FilterValue;\n noMargin?: boolean;\n supportAdvancedSearch?: boolean;\n showNoResultsText?: boolean;\n};\ntype Props = DispatchProps & StateProps & SuppliedProps;\n\ntype State = {\n advancedSearchActive: boolean;\n};\n\nclass UnconnectedTopLevelFilters extends React.Component {\n constructor(props: Props) {\n super(props);\n\n this.checkFilterListWrapping = this.checkFilterListWrapping.bind(this);\n this.handleContainerToggle = this.handleContainerToggle.bind(this);\n this.handleAdvancedSearch = this.handleAdvancedSearch.bind(this);\n this.onReload = this.onReload.bind(this);\n }\n\n static externalConfigurationProps = [\n 'applicationIdentifier',\n 'endpoint',\n 'fromDate',\n 'toDate',\n 'apiKey',\n 'addFilterText',\n 'noResultsText',\n 'theme',\n 'containerHeight',\n 'supportAdvancedSearch',\n ];\n\n static defaultProps: Partial = {\n containerHeight: 32,\n supportAdvancedSearch: false,\n transformValue: (value: Models.FilterValue) => value,\n };\n\n state: State = {\n advancedSearchActive: false,\n };\n\n checkFilterListWrapping(listElement: Element, listWrapperElement: Element) {\n if (listElement && listWrapperElement) {\n if (isNil(listElement) || isNil(listWrapperElement)) {\n return false;\n }\n // Show the toggle button if the list element is taller than the set container height\n // OR the list element's width is greater than the wrapper's width\n const wrap =\n listElement.clientHeight > this.props.containerHeight ||\n listElement.clientWidth > listWrapperElement.clientWidth;\n\n this.props.updateComponentState({\n showToggleButton: wrap,\n });\n }\n }\n\n // Lifecycle\n\n componentDidMount() {\n const thisPropsAny = this.props as any;\n\n const suppliedConfigurationOptions = reduce(\n UnconnectedTopLevelFilters.externalConfigurationProps,\n (payload, prop) => {\n if (has(thisPropsAny, prop)) {\n return { ...payload, [prop]: thisPropsAny[prop] };\n }\n\n return payload;\n },\n {},\n );\n\n if (!isEmpty(suppliedConfigurationOptions)) {\n this.props.updateExternalConfiguration(suppliedConfigurationOptions);\n }\n }\n\n componentWillReceiveProps(nextProps: Props) {\n const nextPropsAny = nextProps as any;\n const thisPropsAny = this.props as any;\n\n const changedConfigurationOptions = reduce(\n UnconnectedTopLevelFilters.externalConfigurationProps,\n (payload, prop) => {\n if (nextPropsAny[prop] !== thisPropsAny[prop]) {\n return { ...payload, [prop]: nextPropsAny[prop] };\n }\n\n return payload;\n },\n {},\n );\n\n if (!isEmpty(changedConfigurationOptions)) {\n this.props.updateExternalConfiguration(changedConfigurationOptions);\n }\n\n // Expand the component manually if there are no filters (e.g. Proton tab change)\n if (nextProps.numberOfFilters === 0) {\n this.props.updateComponentState({\n collapse: false,\n });\n }\n }\n\n handleContainerToggle() {\n this.props.updateComponentState({\n collapse: !this.props.collapse,\n });\n }\n\n handleAdvancedSearch(_query: string) {\n if (this.props.supportAdvancedSearch) {\n this.props.updateComponentState({\n advancedSearchActive: !this.props.advancedSearchActive,\n });\n }\n }\n\n onReload(event: React.MouseEvent) {\n event.preventDefault();\n this.props.resetFilters();\n }\n\n render() {\n const containerClassNames = classnames('top-level-filters-container', {\n 'top-level-filters-container--scroll': this.props.collapse,\n });\n\n const containerTitleText: string = this.props.collapse\n ? 'Click to expand'\n : 'Click to collapse';\n\n const toggleButtonClassNames = classnames(\n 'active-filter-arrow-button active-filter-arrow-button--active active-filter-arrow-button--next',\n {\n hidden: !this.props.showToggleButton,\n },\n );\n\n const toggleButtonIconClassNames = classnames('icon-16', {\n 'raygun-icon icon--chevron-right': this.props.collapse,\n 'flat-icon arrowup-icon': !this.props.collapse,\n });\n\n const helpIconClassNames = classnames(\n 'advanced-search-help-icon simple-tooltip simple-tooltip--width-200',\n {\n 'advanced-search-help-icon--offset': this.props.showToggleButton,\n 'advanced-search-help-icon--active': this.props.supportAdvancedSearch,\n },\n );\n\n const rootClassNames = classnames(\n 'top-level-filters-root',\n `top-level-filters-root--height-${this.props.containerHeight}`,\n {\n 'top-level-filters-root--no-margin-bottom': this.props.noMargin,\n 'top-level-filters-root--border-theme': this.props.theme === 'border',\n },\n );\n\n return (\n
\n
\n \n
\n \n
\n \n \n \n \n \n \n
\n
\n
\n );\n }\n}\n\nexport const TopLevelFilters = connect(\n (state: ToplevelFiltersState) => ({\n numberOfFilters: Selectors.getFilters(state).length,\n collapse: Selectors.getComponentState(state).collapse,\n showToggleButton: Selectors.getComponentState(state).showToggleButton,\n advancedSearchActive: Selectors.getComponentState(state).advancedSearchActive,\n }),\n (dispatch: Dispatch) => ({\n updateExternalConfiguration: (newOptions: Actions.UpdateExternalConfigurationPayload) =>\n dispatch(Actions.updateExternalConfiguration(newOptions)),\n updateComponentState: (newState: Actions.UpdateComponentStatePayload) =>\n dispatch(Actions.updateComponentState(newState)),\n resetFilters: () => dispatch(Actions.resetFilters()),\n }),\n)(UnconnectedTopLevelFilters);\n","/** @format */\n\nimport { createSelector } from 'reselect';\nimport { reduce, uniqBy, flatten, has } from 'lodash';\n\nimport * as Models from './models';\nimport { ToplevelFiltersState } from './state';\n\nconst stateSelector = (state: ToplevelFiltersState) => state.toplevelFilters;\n\nexport const getFilters = createSelector(\n stateSelector,\n state => state.filters,\n);\n\nexport const getDimensions = createSelector(\n stateSelector,\n state => state.dimensions,\n);\n\nexport const getAddFilterState = createSelector(\n stateSelector,\n state => state.addFilter,\n);\n\nexport const getEditFilterState = createSelector(\n stateSelector,\n state => state.editFilter,\n);\n\nexport const getComponentState = createSelector(\n stateSelector,\n state => state.component,\n);\n\nexport const getExternalConfiguration = createSelector(\n stateSelector,\n state => state.externalConfiguration,\n);\n\nexport const getValues = createSelector(\n stateSelector,\n state => state.values,\n);\n\nexport const getCurrentDimensionValue = createSelector(\n getValues,\n getAddFilterState,\n (values, addFilterState) => {\n const { selectedDimensionId } = addFilterState;\n\n if (!has(values, selectedDimensionId)) {\n return { loading: false, error: null, values: [] };\n }\n\n return values[selectedDimensionId];\n },\n);\n\nexport const getCurrentValues = createSelector(\n getCurrentDimensionValue,\n value => value.values,\n);\n\nexport const areValuesLoading = createSelector(\n getCurrentDimensionValue,\n value => value.loading,\n);\n\nexport const getDimensionsById = createSelector(\n getDimensions,\n dimensions =>\n reduce(\n dimensions,\n (indexedDimensions, dimension) => ({\n ...indexedDimensions,\n [dimension.id]: dimension,\n }),\n {},\n ) as { [dimensionId: string]: Models.DimensionWithComparators },\n);\n\nexport const getComparatorsById = createSelector(\n getDimensions,\n dimensions => {\n const uniqueComparators = uniqBy(\n flatten(dimensions.map(dimension => dimension.availableComparators)),\n comparator => comparator.id,\n );\n\n return reduce(\n uniqueComparators,\n (indexedComparators, comparator) => ({\n ...indexedComparators,\n [comparator.id]: comparator,\n }),\n {},\n ) as { [comparatorId: string]: Models.Comparator };\n },\n);\n\nexport const getActiveDimension = createSelector(\n getDimensionsById,\n getAddFilterState,\n (dimensions, addFilterState) => {\n const { selectedDimensionId } = addFilterState;\n\n if (selectedDimensionId == null) {\n return null;\n }\n\n return dimensions[selectedDimensionId];\n },\n);\n\nexport const getActiveComparator = createSelector(\n getComparatorsById,\n getAddFilterState,\n (comparators, addFilterState) => {\n const { selectedComparatorId } = addFilterState;\n\n if (selectedComparatorId == null) {\n return null;\n }\n\n return comparators[selectedComparatorId];\n },\n);\n","export enum TextAlignment {\n LEFT = 'left',\n CENTER = 'center',\n RIGHT = 'right',\n}","/** @format */\n\nimport { Action } from 'typescript-fsa';\nimport React from 'react';\n\nimport { Application } from 'interfaces/application';\nimport { Products } from 'interfaces/products';\nimport { Plan } from 'interfaces/plan';\nimport * as DateTimeRanges from 'constants/dateTimeFilter';\nimport { SortDirection } from 'constants/sorting';\n\nimport { QueryParameters } from 'utils/fetching/utils';\n\nimport { FetchDataPayload } from '../actions';\nimport { TextAlignment } from './text';\n\nexport type DisplayMode = 'number' | 'raw' | 'percent' | 'duration';\n\nexport type TileMetadata = {\n MinWidth?: number;\n MinHeight?: number;\n DefaultWidth?: number;\n DefaultHeight?: number;\n DisplayMode?: DisplayMode;\n SupportsAppColors?: boolean;\n SupportsSettings?: boolean;\n Live?: boolean;\n QueryString?: QueryParameters | { (state: TileState, settings: TileSettings): QueryParameters };\n HideHeader?: boolean;\n DataFetching?: {\n dataOnWebApi?: boolean;\n needsPlanIdentifier?: boolean;\n apmEndpoint?: boolean;\n };\n SortableFields?: { [key: string]: string };\n SingleApplicationOnly?: boolean;\n TimeboardSupport?: boolean;\n};\nexport type TileSettings = {\n Title: string;\n DateRange?: string;\n StatusFilter?: string;\n TableSortingField?: string;\n TableSortingDirection?: SortDirection;\n Granularity?: string;\n ResourceType?: string;\n Applications?: string;\n Actions?: string;\n TileColor?: string;\n Text?: string;\n} & TextSettings;\n\nexport type TileHelpTips = {\n HelpTipText: string;\n};\n\nexport const TileTransparent = 'transparent';\n\nexport const TextBold = 'bold';\n\nexport const TextItalic = 'italic';\n\nexport const TextUnderline = 'underline';\n\nexport const isTextBold = (weight: typeof TextBold) => weight === TextBold;\n\nexport const isTextItalic = (italic: typeof TextItalic) => italic === TextItalic;\n\nexport const isTextUnderline = (underline: typeof TextUnderline) => underline === TextUnderline;\n\nexport type TextSettings = {\n TextSize?: string;\n TextAlignment?: TextAlignment;\n TextBold?: typeof TextBold;\n TextItalic?: typeof TextItalic;\n TextUnderline?: typeof TextUnderline;\n TextColor?: string;\n};\n\nexport type TileData = {\n data: FetchDataPayload;\n loading: boolean;\n error: Error;\n};\n\nexport type TileState = {\n isDrilledDown: boolean;\n viewingApplication?: number;\n sorting?: {\n sortField: string;\n sortDirection: SortDirection;\n };\n pageIndex?: number;\n};\n\nexport type SelectedErrorGroup = {\n applicationId: number;\n errorGroupId: number;\n};\n\nexport type SortingState = {\n sortField: string;\n sortDirection: SortDirection;\n};\n\nexport type Tile = {\n InstanceId: string;\n Settings: TileSettings;\n Metadata: TileMetadata;\n Type: string;\n X: number;\n Y: number;\n Height: number;\n Width: number;\n};\n\nexport enum DashboardTypes {\n Screenboard = \"Screenboard\",\n Timeboard = \"Timeboard\"\n}\n\nexport type TimeboardTimeRanges =\n | typeof DateTimeRanges.ONE_HOUR\n | typeof DateTimeRanges.SIX_HOUR\n | typeof DateTimeRanges.ONE_DAY\n | typeof DateTimeRanges.SEVEN_DAYS\n | typeof DateTimeRanges.THIRTY_DAYS;\n\nexport type DashboardDefinition = {\n Title: string;\n Colors: { [key: string]: string };\n Tiles: Tile[];\n Type: DashboardTypes;\n Applications: string[];\n TimeRange: TimeboardTimeRanges;\n};\n\nexport type TileProps = {\n instanceId: string;\n type: string;\n} & { settings: TileSettings } & { metadata: TileMetadata };\n\nexport type FooterTypes = React.ReactNode | React.Component<{ id: string }>;\n\nexport type RenderFooterCallback = (state: any, id: string) => boolean;\n\nexport type ModuleProps = {\n footer: FooterTypes;\n renderFooter: RenderFooterCallback;\n id: string;\n noScrolling: boolean;\n overflow: boolean;\n contentAbove: boolean;\n noPadding: boolean;\n};\n\nexport type TileComponent = {\n moduleProps?: Partial;\n} & React.ComponentType;\n\nexport enum ActionFilterType {\n Error = 'Error',\n Application = 'Application',\n Plan = 'Plan',\n}\n\nexport type TileCategories = 'free-text' | 'list' | 'value' | 'chart';\n\nexport type TileRequirement = (app: Application, plan?: Plan) => boolean;\n\nexport type TileDefinition = {\n id: string;\n name: string;\n component: TileComponent;\n fetchAction: (payload: FetchActionPayload) => FetchAction[];\n apiEndpoint?: string;\n category: TileCategories;\n icon: string;\n products: (keyof typeof Products)[];\n requirements?: TileRequirement[];\n defaultSettings?: Partial;\n metadata?: TileMetadata;\n helpTips?: TileHelpTips;\n};\n\nexport type FetchActionPayload = {\n instanceId: string;\n};\ntype FetchAction = Action;\n\nexport type getTileInfo = () => TileDefinition[];\n\nexport type getDefinitionForTile = (id: string) => TileDefinition;\n\nexport type getComponentForTile = (id: string) => TileComponent;\n\nexport type getFetchActionsForTile = (id: string) => (payload: FetchActionPayload) => FetchAction[];\n\nexport type getIconForTile = (id: string) => React.ReactNode;\n\nexport type getApiEndpointForTile = (id: string) => string;\n\nexport type getTilesByTileCategory = (id: TileCategories) => TileDefinition[];\n\nexport type TileMap = {\n getTileInfo: getTileInfo;\n getDefinitionForTile: getDefinitionForTile;\n getComponentForTile: getComponentForTile;\n getFetchActionsForTile: getFetchActionsForTile;\n getIconForTile: getIconForTile;\n getApiEndpointForTile: getApiEndpointForTile;\n getTilesByTileCategory: getTilesByTileCategory;\n};\n\n// This must match the following enums: \n// - backend at src/App/Mindscape.Raygun.Api/Resources/Errors/IgnoredType.cs\n// - frontend/marionette at src/App/Raygun.Website/Scripts/Raygun/modules/global/constants.js\nexport enum IgnoredType {\n IgnoreByOccurrences = 0,\n IgnoreForDuration = 1,\n IgnoreByOccurrencesInDuration = 2,\n}","import { DateRange, DateRangeParam, Granularities, Intervals } from './types';\n\nexport function paramToDateRange(range: DateRangeParam) {\n switch (range) {\n case '1d':\n return DateRange.OneDay;\n case '7d':\n return DateRange.SevenDays;\n case '30d':\n return DateRange.ThirtyDays;\n default:\n const _ec: never = range;\n }\n}\n\nexport function dateRangeToParam(range: DateRange): DateRangeParam {\n switch (range) {\n case DateRange.OneDay:\n return '1d';\n case DateRange.SevenDays:\n return '7d';\n case DateRange.ThirtyDays:\n return '30d';\n default:\n const _ec: never = range;\n }\n}\n\nexport function granularityToInterval(granularity: Granularities): Intervals {\n switch (granularity) {\n case Granularities.Minute:\n return '1m';\n case Granularities.TenMinute:\n return '10m';\n case Granularities.Hour:\n return '1h';\n case Granularities.Day:\n return '1d';\n case Granularities.Week:\n return '1w';\n }\n}\n\nexport function intervalToGranularity(interval: Intervals): Granularities {\n switch (interval) {\n case '1m':\n return Granularities.Minute;\n case '10m':\n return Granularities.TenMinute;\n case '1h':\n return Granularities.Hour;\n case '1d':\n return Granularities.Day;\n case '1w':\n return Granularities.Week;\n }\n}\n","/** @format **/\n\nimport moment, { Moment } from 'moment';\n\nimport { DateRange, DateRangeParam, isDateRange } from './types';\nimport * as DurationFormatting from './durationFormatting';\nimport * as Converters from './converters';\n\nexport { DurationFormatting, Converters };\nexport * from './types';\n\nexport function unpackRange(range: DateRangeParam | DateRange): { from: Moment; to: Moment } {\n const dateRangeParam = isDateRange(range) ? Converters.dateRangeToParam(range) : range;\n\n let from: Moment;\n switch (dateRangeParam) {\n case '1d':\n from = moment().subtract(1, 'days');\n break;\n case '7d':\n from = moment().subtract(7, 'days');\n break;\n case '30d':\n from = moment().subtract(30, 'days');\n break;\n default:\n const _ec: never = dateRangeParam;\n }\n\n return { from, to: moment() };\n}\n","/** @format **/\n\nexport enum DateRange {\n OneDay,\n SevenDays,\n ThirtyDays,\n}\n\nexport enum Granularities {\n Minute = 'Minute',\n TenMinute = 'TenMinute',\n Hour = 'Hour',\n Day = 'Day',\n Week = 'Week',\n}\n\nexport type DateFormat = 'time-ago' | 'date' | 'date-time' | 'custom' | 'duration';\nexport type Intervals = '1m' | '10m' | '1h' | '1d' | '1w';\nexport type DateRangeParam = '1d' | '7d' | '30d';\n\nexport function isDateRange(input: any): input is DateRange {\n if (typeof input === 'number') {\n return true;\n }\n\n return false;\n}\n","/** @format **/\n\nimport { createSelector } from 'reselect';\nimport moment from 'moment';\n\nimport { getTimeZoneName } from 'selectors/time';\nimport { TimeStateAtom } from '../state';\n\nconst timeSelector = (state: TimeStateAtom) => state.time;\n\nexport const getActiveDateRange = createSelector(\n timeSelector,\n time => ({ dateFrom: moment(time.from), dateTo: moment(time.to) }),\n);\n\nexport const getDateTimeQs = createSelector(\n getActiveDateRange,\n getTimeZoneName,\n ({ dateFrom, dateTo }, timeZoneName) => ({\n dateFrom: dateFrom.utc().format(),\n dateTo: dateTo.utc().format(),\n timeZoneName,\n }),\n);\n"],"names":["BLUE","blue50","blue100","blue200","blue300","blue400","blue500","blue600","blue700","blue800","blue900","GREY","grey100","grey200","grey300","grey400","grey500","grey600","grey700","grey800","grey900","RED","red50","red100","red200","red300","red400","red500","red600","red700","red800","red900","GREEN","green50","green100","green200","green300","green400","green500","green600","green700","green800","green900","GREENL","greenL500","AMBER","amber50","amber100","amber200","amber300","amber400","amber500","amber600","amber700","amber800","amber900","YELLOW","yellow50","yellow100","yellow200","yellow300","yellow400","yellow500","yellow600","yellow700","yellow800","yellow900","SOCIAL","facebook","github","google","twitter","Center","props","classes","width","className","children","defaultProps","MenuItemContainer","spacing","checkbox","icon","paddingLeft","selected","backgroundColor","theme","ds","getColorByName","withSwitch","paddingRight","position","disabled","color","cursor","display","alignItems","minHeight","MenuItemLabel","fontWeight","textEllipsis","overflow","textOverflow","lineHeight","padding","MenuItem","label","labelFontWeight","onClick","helpTipOptions","rightIcon","baseProps","menuItem","isNil","showOnRight","alignCenter","fullWidthTrigger","size","set","type","dsColor","inline","top","right","render","this","textColor","underline","disabledTextColor","disabledBackgroundColor","hoverBackgroundColor","pressedBackgroundColor","iconColor","state","error","undefined","componentDidCatch","e","_info","window","TESTING","setState","rg4js","tags","blackhole","colors","lightning","highlight","standard","azureHighlight","grey","light","borderBottom","border","lighter","DismissButton","dismissable","href","onMouseUp","onDismiss","title","Banner","Container","removeVerticalPadding","removeTopPadding","ConnectedGatedFeatureModal","connect","planIdentifier","isHeroImageVersion","featureImage","isBasicModal","forDialog","forButton","clearHeader","overlapContent","interactionId","spId","close","id","small","noPadding","H4","H1","heading","featureName","to","docsLink","target","src","alt","IconWrapper","FeatureListContainer","maxWidth","overflowY","ProductDescriptionListItem","listStyleType","fontSize","content","marginRight","HeaderPadding","paddingTop","paddingBottom","BottomSectionContainer","GetFeatureText","UpgradeButtonWrapper","ModalImagesContainer","height","backgroundImage","backgroundSize","ModalImage","alignSelf","ONE_DAY","SEVEN_DAYS","THIRTY_DAYS","DEFAULT_DATE_TIME_FILTER_RANGE","createAction","addFilter","editFilter","removeFilter","setFilters","resetFilters","setDimensions","updateAddFilterState","updateEditFilterState","updateComponentState","updateExternalConfiguration","fetchValuesForDimensionStarted","fetchValuesForDimensionFailed","fetchValuesForDimensionSucceeded","addValuesForDimension","fetchDimensionValues","signal","ignoreQueryText","dispatch","getState","currentQuery","comparator","dimension","postToValuesApi","fetchDimensionValuesByFilter","currentFilter","params","applicationIdentifier","endpoint","fromDate","toDate","apiKey","selectedDimensionId","requestParams","query","dimensionName","then","response","values","aborted","advancedSearchActive","checkFilterListWrapping","bind","handleContainerToggle","handleAdvancedSearch","onReload","listElement","listWrapperElement","wrap","clientHeight","containerHeight","clientWidth","showToggleButton","componentDidMount","thisPropsAny","suppliedConfigurationOptions","reduce","UnconnectedTopLevelFilters","externalConfigurationProps","payload","prop","has","isEmpty","componentWillReceiveProps","nextProps","nextPropsAny","changedConfigurationOptions","numberOfFilters","collapse","_query","supportAdvancedSearch","event","preventDefault","containerClassNames","containerTitleText","toggleButtonClassNames","hidden","toggleButtonIconClassNames","helpIconClassNames","rootClassNames","noMargin","reload","reloadText","singleLine","transformValue","showNoResultsText","value","length","newOptions","newState","stateSelector","toplevelFilters","getFilters","filters","getDimensions","dimensions","getAddFilterState","getEditFilterState","getComponentState","component","getExternalConfiguration","externalConfiguration","getValues","getCurrentDimensionValue","addFilterState","loading","getCurrentValues","areValuesLoading","getDimensionsById","indexedDimensions","getComparatorsById","uniqueComparators","uniqBy","flatten","map","availableComparators","indexedComparators","getActiveDimension","getActiveComparator","comparators","selectedComparatorId","TextAlignment","DashboardTypes","ActionFilterType","IgnoredType","dateRangeToParam","range","OneDay","SevenDays","ThirtyDays","unpackRange","from","subtract","DateRange","Granularities","isDateRange","input","getActiveDateRange","time","dateFrom","dateTo","timeZoneName","utc","format"],"sourceRoot":""}