{"version":3,"file":"211.8548435083a032be3d79.js","mappings":"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","sources":["webpack://raygun-website/./scripts/react/app/chrome/classic/switcher/components/dashboards.tsx","webpack://raygun-website/./scripts/react/app/chrome/classic/switcher/components/favouriteButton.tsx","webpack://raygun-website/./scripts/react/app/chrome/classic/switcher/components/noData.tsx","webpack://raygun-website/./scripts/react/components/button/button.tsx","webpack://raygun-website/./scripts/react/components/checkbox/index.tsx","webpack://raygun-website/./scripts/react/components/ds/dropdown/menu/items/icon.tsx","webpack://raygun-website/./scripts/react/components/ds/dropdown/menu/search.tsx","webpack://raygun-website/./scripts/react/components/ds/inputs/index.tsx","webpack://raygun-website/./scripts/react/components/grid.tsx","webpack://raygun-website/./scripts/react/components/link.tsx","webpack://raygun-website/./scripts/react/components/module/listItem.tsx","webpack://raygun-website/./scripts/react/components/page/header/title.tsx","webpack://raygun-website/./scripts/react/components/paywall/paywallWrapper/index.tsx","webpack://raygun-website/./scripts/react/components/snowplow/link/index.tsx","webpack://raygun-website/./scripts/react/components/supportLink/index.tsx","webpack://raygun-website/./scripts/react/components/text/alignText.tsx","webpack://raygun-website/./scripts/react/interfaces/environments.tsx","webpack://raygun-website/./scripts/react/interfaces/plan.tsx","webpack://raygun-website/./scripts/react/interfaces/teams.tsx","webpack://raygun-website/./scripts/react/modules/inviteTeamModal/components/modal.tsx","webpack://raygun-website/./scripts/react/modules/resources/index.ts","webpack://raygun-website/./scripts/react/modules/time/components/date/index.tsx","webpack://raygun-website/./scripts/react/modules/whatsnew/reducer.ts","webpack://raygun-website/./scripts/react/modules/whatsnew/sagas.ts","webpack://raygun-website/./scripts/react/modules/whatsnew/navigation.ts","webpack://raygun-website/./scripts/react/sections/productpages/routing/alerting.ts","webpack://raygun-website/./scripts/react/sections/productpages/routing/api.ts","webpack://raygun-website/./scripts/react/sections/productpages/routing/apmsettings.ts","webpack://raygun-website/./scripts/react/sections/productpages/routing/integrations.ts","webpack://raygun-website/./scripts/react/sections/productpages/routing/landing.ts","webpack://raygun-website/./scripts/react/sections/productpages/routing/legacyDashboardMigration.ts","webpack://raygun-website/./scripts/react/sections/productpages/routing/onboarding.ts","webpack://raygun-website/./scripts/react/sections/productpages/routing/paywall.ts","webpack://raygun-website/./scripts/react/sections/productpages/routing/planSettings.ts","webpack://raygun-website/./scripts/react/sections/productpages/routing/teams.ts","webpack://raygun-website/./scripts/react/utils/constants.ts","webpack://raygun-website/./scripts/react/utils/routing/anonymous.ts"],"sourcesContent":["/** @format */\n\nimport * as React from 'react';\nimport classnames from 'classnames';\n\nimport { Dashboard } from 'interfaces/dashboard';\nimport { Icon } from \"components/icon\";\n\nimport { Favourite } from './favouriteButton';\nimport { NoData } from './noData';\n\nconst PRIMARY_ID = 1;\nconst MAX_DASHBOARD_APP_IMAGES = 3;\n\ninterface Props {\n dashboards: Dashboard[];\n isFeatureGated: boolean;\n isOnTrial: boolean;\n openFeatureGatingModal: () => void;\n}\n\ninterface DashboardItemProps {\n dashboard: Dashboard;\n isFeatureGated: boolean;\n isOnTrial: boolean;\n openFeatureGatingModal: () => void;\n}\n\n// Note: This is a port of existing dashboard logic and is in a need a of a little refactoring. You should not base your architecture off of this file.\n\nfunction getApplicationImages(dash: Dashboard, listItemSize: boolean = false) {\n // Rewrite...\n\n const id = dash.id;\n const applicationCount = dash.applicationCount;\n const avatarUrls = dash.avatarUrls && dash.avatarUrls.length > 0 ? dash.avatarUrls : ['/Content/Images/icons/avatars/2.png'];\n const listItemClass = classnames('dashboard-application-images__item', {\n 'dashboard-application-images__item--24': listItemSize,\n });\n const imgClass = classnames('dashboard-application-image', {\n 'dashboard-application-image--24': listItemSize,\n });\n const textClass = classnames('dashboard-application-image-text', {\n 'dashboard-application-image-text--24': listItemSize,\n });\n\n if (avatarUrls && applicationCount) {\n const apps = avatarUrls\n .filter((_url: any, index: any) => index < MAX_DASHBOARD_APP_IMAGES)\n .map((url: any, index: any) => {\n return (\n
  • \n \"Application\n
  • \n );\n });\n\n if (apps.length !== avatarUrls.length) {\n apps.push(\n
  • \n {`+ ${applicationCount - MAX_DASHBOARD_APP_IMAGES}`}\n
  • ,\n );\n }\n\n return apps;\n } else if (id === PRIMARY_ID) {\n return (\n
  • \n \n
  • \n );\n }\n\n return (\n
  • \n 0\n
  • \n );\n}\n\nconst DashboardListItem: React.FunctionComponent = props => {\n const appImages = getApplicationImages(props.dashboard, true);\n let url = `/tiledashboard/${props.dashboard.id.toString(36)}/display`;\n\n if (props.dashboard.isPrimary) {\n url = `/tiledashboard/${props.dashboard.planId.toString(36)}/primary`;\n }\n\n return (\n
  • \n (props.isFeatureGated) && props.openFeatureGatingModal()}\n className={'context-list-item'}\n tabIndex={1}\n title={props.dashboard.name}\n >\n
    \n \n
    \n
    \n
    \n
    \n {(props.isOnTrial || props.isFeatureGated) && (\n \n )}\n
    \n
      {appImages}
    \n
    \n
    \n

    \n {props.dashboard.name}\n

    \n \n
  • \n );\n};\n\nconst Dashboards: React.FunctionComponent = props => {\n const dashboards = props.dashboards.map(dash => {\n return (\n props.openFeatureGatingModal()}\n />\n );\n });\n\n const dashboardView = dashboards.length ? dashboards : ;\n\n return
      {dashboardView}
    ;\n};\n\nexport { Dashboards, getApplicationImages };","/** @format **/\n\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport classnames from 'classnames';\n\nimport { AppState } from 'interfaces/appState';\nimport { favouriteApp, favouriteDashboard } from 'app/actions/pageData';\n\nimport { Icon } from 'components/icon';\nimport { trackLinkClick } from 'components/snowplow';\n\ntype StateProps = {};\n\ntype DispatchProps = {\n onFavourite: () => void;\n};\n\ntype PassedProps = {\n name: string;\n active: boolean;\n applicationId?: number;\n dashboardId?: number;\n planId?: number;\n};\n\ntype Props = {} & StateProps & PassedProps & DispatchProps;\n\nconst DumbFavourite: React.FunctionComponent = props => {\n const iconType = props.active ? 'favourite-solid' : 'favourite-stroke';\n\n const classes = classnames('context-favourite-button', {\n 'context-favourite-button--favourite': props.active,\n });\n\n const title = props.active ? `Unfavourite ${props.name}` : `Favourite ${props.name}`;\n\n const onFavourite = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n props.onFavourite();\n };\n\n return (\n
    \n \n
    \n );\n};\n\nexport const DisabledFavourite: React.FunctionComponent = props => {\n const iconType = props.active ? 'favourite-solid' : 'favourite-stroke';\n\n const classes = classnames('context-favourite-button__disabled', {\n 'context-favourite-button__disabled--favourite': props.active,\n });\n\n const title = props.active ? `Unfavourite ${props.name}` : `Favourite ${props.name}`;\n\n return (\n
    \n \n
    \n );\n};\n\nexport const Favourite = connect(\n undefined,\n (dispatch: Dispatch, passedProps: PassedProps) => ({\n onFavourite: () => {\n if (passedProps.applicationId) {\n dispatch(favouriteApp({\n id: passedProps.applicationId,\n favourite: !passedProps.active,\n }) as any);\n trackLinkClick('sp-app-chrome-switcher-clickFavouriteApplication');\n } else {\n dispatch(favouriteDashboard({\n dashboardId: passedProps.dashboardId,\n planId: passedProps.planId,\n favourite: !passedProps.active,\n }) as any);\n trackLinkClick('sp-app-chrome-switcher-clickFavouriteDashboard');\n }\n },\n }),\n)(DumbFavourite);\n","/** @format **/\n\nimport * as React from 'react';\n\nimport Panel from 'components/panel';\n\ninterface Props {\n text: string;\n}\n\nexport const NoData: React.FunctionComponent = props => {\n return (\n \n

    \n {props.text}\n

    \n
    \n );\n};\n","/**\n * @prettier\n */\nimport * as React from 'react';\nimport classnames from 'classnames';\nimport { isNil } from 'lodash';\n\nexport type BUTTON_TYPES =\n | 'white'\n | 'grey'\n | 'light-grey'\n | 'blue'\n | 'green'\n | 'red'\n | 'yellow'\n | 'plain'\n | 'subtle'\n | 'purple'\n | 'transparent-blue';\n\nexport type BUTTON_SIZES = 24 | 32 | 36 | 40 | 42 | 48 | 56;\n\nexport interface Props {\n title?: string;\n url?: string;\n size?: BUTTON_SIZES;\n type?: BUTTON_TYPES;\n block?: boolean;\n extraClasses?: string;\n active?: boolean;\n disabled?: boolean;\n hasIconAfter?: boolean;\n hasIconBefore?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n id?: string;\n}\n\nexport const Button: React.FunctionComponent = props => {\n const className = classnames(\n `button button-${props.size}`,\n {\n [`button-${props.type}`]: !isNil(props.type),\n 'button-after': props.hasIconAfter,\n 'button-before': props.hasIconBefore,\n 'button-block': props.block,\n 'button--disabled': props.disabled,\n 'is-active': props.active,\n },\n `${props.extraClasses}`,\n );\n\n if (props.url) {\n return (\n \n {props.children}\n \n );\n } else {\n return (\n \n {props.children}\n \n );\n }\n};\n\nButton.defaultProps = {\n url: '',\n extraClasses: '',\n size: 32,\n block: false,\n hasIconAfter: false,\n hasIconBefore: false,\n disabled: false,\n active: false,\n};\n\nexport default Button;\n","/**\n * @prettier\n */\n\nimport * as React from 'react';\nimport { CheckboxIcon } from './icon';\nimport { CheckboxInput } from './input';\nimport { CheckboxLabel } from './label';\nimport { CheckboxWrapper, RuleProps } from './wrapper';\nimport { omit } from 'lodash';\n\nexport type Props = {\n isChecked?: boolean;\n isHovered?: boolean;\n onToggled?: (isChecked: boolean) => void;\n id?: string;\n onMouseEnter?: (e: React.MouseEvent) => void;\n isRadioButton?: boolean;\n disabled?: boolean;\n checkedBoxColor?: string;\n} & RuleProps;\n\ninterface State {\n isChecked: boolean;\n isHovered: boolean;\n}\n\nexport class Checkbox extends React.Component {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n isChecked: props.isChecked,\n isHovered: props.isHovered,\n };\n\n this.handleClick = this.handleClick.bind(this);\n this.triggerHover = this.triggerHover.bind(this);\n this.disableHover = this.disableHover.bind(this);\n }\n\n static defaultProps: Partial = {\n noPadding: false,\n dropdown: false,\n };\n\n componentWillReceiveProps(nextProps: Props) {\n if (nextProps.isChecked != this.props.isChecked) {\n this.setState({ isChecked: nextProps.isChecked });\n }\n\n if (nextProps.isHovered != this.props.isHovered) {\n this.setState({ isHovered: nextProps.isHovered });\n }\n }\n\n handleClick() {\n this.setState(prevState => {\n const isChecked = !prevState.isChecked;\n\n if (this.props.onToggled) {\n this.props.onToggled(isChecked);\n }\n\n return { isChecked };\n });\n }\n\n triggerHover() {\n this.setState({ isHovered: true });\n }\n\n disableHover() {\n this.setState({ isHovered: false });\n }\n\n renderLabel() {\n const children = this.props.children;\n\n if (children) {\n return {children};\n }\n }\n\n render() {\n const wrapperProps = omit(this.props, 'children', 'isChecked', 'onToggled');\n\n return (\n \n \n \n {this.renderLabel()}\n \n );\n }\n}\n\nexport default Checkbox;\n","/** @format **/\n\nimport React from 'react';\nimport { isNil } from 'lodash';\n\nimport { IconProps } from 'components/icon';\n\nimport { Checkbox } from 'components/ds/selection';\n\nimport { MenuItem, MenuItemProps } from './item';\nimport { SvgProps } from 'components/svg';\nimport { createComponent } from 'react-fela';\nimport { IStyle } from 'fela';\nimport { applyModifiers } from 'fela-rules/modifiers';\n\ntype IconContainerProps = {\n height: number;\n spacing?: boolean;\n leftSpacing?: boolean;\n};\nconst StyledIconContainer = (props: IconContainerProps): IStyle =>\n applyModifiers(\n [\n props.spacing && isNil(props.leftSpacing),\n {\n marginLeft: '16px',\n marginTop: '8px',\n },\n ],\n [\n props.leftSpacing && isNil(props.spacing),\n {\n marginLeft: '16px',\n },\n ],\n )({\n height: `${props.height}px`,\n marginLeft: '8px',\n marginRight: '8px',\n });\nexport const IconContainer = createComponent(StyledIconContainer, 'div');\n\nexport type MenuItemWithIconProps = {\n Icon: React.ReactElement | React.ReactElement;\n iconHeight?: number;\n spacing?: boolean;\n leftSpacing?: boolean;\n} & MenuItemProps;\n\nexport const MenuItemWithIcon: React.FunctionComponent = ({\n Icon,\n iconHeight,\n spacing,\n leftSpacing,\n ...menuItemProps\n}) => {\n return (\n \n \n {React.cloneElement(Icon as any, {\n size: iconHeight,\n width: iconHeight,\n height: iconHeight,\n })}\n \n \n );\n};\n\nMenuItemWithIcon.defaultProps = {\n iconHeight: 24,\n};\n","/** @format **/\n\nimport React, { useState } from 'react';\nimport { IStyle } from 'fela';\nimport { createComponent } from 'react-fela';\nimport { reduce, every, isNil } from 'lodash';\n\nimport { Theme, ThemeType } from 'app/theme';\nimport { scrollbar } from 'fela-rules/scrollbar';\n\nimport { Helptip } from 'components/ds/tooltip';\nimport { SearchInput } from 'components/ds/inputs';\nimport { MenuItemCheckbox } from 'components/ds/dropdown/menu/items';\nimport { EmphasisButton, TextButton } from 'components/ds/button';\nimport { Flex } from 'components/flex';\n\nimport { Padding } from '../../../layout';\n\nexport type ChildItem = {\n label: string;\n checked: boolean;\n item?: T;\n disabled?: boolean;\n helptipLabel?: string;\n rightIcon?: boolean;\n};\n\ntype PassedProps = {\n allSelected: boolean;\n onSelectAll: (searchQuery?: string) => void;\n onChangeOfSearch?: (searchQuery?: string) => void;\n onSubmit?: (searchQuery?: string) => void;\n onCancel?: () => void;\n childItems: ChildItem[];\n onChange: (item: T, searchQuery: string) => void;\n sortFunc?: (items: ChildItem[]) => ChildItem[];\n clearableSearch?: boolean;\n includeFooter?: boolean;\n};\ntype StateProps = {};\ntype DispatchProps = {};\n\ntype Props = PassedProps & StateProps & DispatchProps & ThemeType;\n\nexport function SearchableDropdownMenu({ onChange, sortFunc, ...props }: Props) {\n const [searchQuery, setSearchQuery] = useState('');\n\n const searchOnChange = (value: string) => {\n setSearchQuery(value);\n\n if (!isNil(props.onChangeOfSearch)) {\n props.onChangeOfSearch(value);\n }\n };\n\n let childItems = props.childItems;\n\n if (sortFunc) {\n childItems = sortFunc(childItems);\n }\n\n const menuItems = childItems.map((c, idx) => {\n return c.label.toLowerCase().indexOf(searchQuery.toLowerCase()) !== -1 ? (\n !isNil(c.helptipLabel) ? (\n \n onChange(c.item, searchQuery)}\n textEllipsis\n selected={c.checked}\n spacing\n disabled={c.disabled}\n rightIcon={c.rightIcon}\n />\n \n ) : (\n onChange(c.item, searchQuery)}\n textEllipsis\n selected={c.checked}\n spacing\n disabled={c.disabled}\n rightIcon={c.rightIcon}\n />\n )\n ) : null;\n });\n\n return (\n \n searchOnChange(e.target.value)}\n borderColor=\"transparent\"\n autoFocus\n clearable={props.clearableSearch}\n />\n\n \n\n \n {!every(menuItems, i => i == null) ? (\n <>\n props.onSelectAll(searchQuery)}\n selected={props.allSelected}\n spacing\n />\n {menuItems}\n \n ) : (\n No matches found\n )}\n \n\n {props.includeFooter && (\n \n \n {props.onCancel && (\n \n Cancel\n \n )}\n props.onSubmit(searchQuery)}>\n Select ({reduce(props.childItems, (acc, { checked }) => (checked ? acc + 1 : acc), 0)}\n )\n \n \n \n )}\n \n );\n}\n\nconst StyledSearchableDropdownNoResultsText = (): IStyle => ({\n textAlign: 'center',\n minHeight: '40px',\n paddingTop: '1rem',\n paddingBottom: '1rem',\n});\nexport const SearchableDropdownNoResultsText = createComponent(\n StyledSearchableDropdownNoResultsText,\n);\n\ntype SearchableDropdownDivider = {};\nconst StyledSearchableDropdownDivider = (\n _props: SearchableDropdownDivider & ThemeType,\n): IStyle => ({\n width: '100%',\n height: '1px',\n backgroundColor: Theme.ds.colors.blueGrey.blueGrey100,\n});\nexport const SearchableDropdownDivider = createComponent(StyledSearchableDropdownDivider);\n\ntype SearchableDropdownMenuContainer = {};\nconst StyledSearchableDropdownMenuContainer = (\n _props: SearchableDropdownMenuContainer & ThemeType,\n): IStyle => ({\n width: '100%',\n maxHeight: '408px',\n display: 'block',\n backgroundColor: Theme.colors.standard.white,\n});\nconst SearchableDropdownMenuContainer = createComponent(StyledSearchableDropdownMenuContainer);\n\ntype SearchableDropdownControls = {};\nconst StyledSearchableDropdownControls = (\n _props: SearchableDropdownControls & ThemeType,\n): IStyle => ({\n borderTop: '1px solid',\n borderColor: Theme.ds.colors.blueGrey.blueGrey100,\n padding: '16px',\n});\nconst SearchableDropdownControls = createComponent(StyledSearchableDropdownControls);\n\ntype SearchableDropdownItemsWrapper = {};\nconst StyledSearchableDropdownItemsWrapper = (\n _props: SearchableDropdownItemsWrapper & ThemeType,\n): IStyle =>\n scrollbar({\n maxHeight: '294px',\n overflowY: 'auto',\n paddingTop: '8px',\n paddingBottom: '8px',\n });\nconst SearchableDropdownItemsWrapper = createComponent(StyledSearchableDropdownItemsWrapper);\n","/**\n * @prettier\n */\n/* tslint:disable:max-classes-per-file */\n\nimport React from 'react';\n\nimport { Omit } from 'utils/types';\n\nimport { Icon } from 'components/icon';\nimport { Actiontip } from 'components/ds/tooltip';\n\nimport { BaseInput, BaseInputProps, BaseDefaultProps, DefaultProps } from './base';\n\ntype InputProps = Omit;\nexport class Input extends React.Component {\n static defaultProps: BaseDefaultProps = DefaultProps;\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n\ntype SearchInputProps = Omit;\nexport class SearchInput extends React.Component {\n static defaultProps: BaseDefaultProps & Pick = {\n ...DefaultProps,\n iconLeft: ,\n };\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n\ntype State = {\n actionTipVisibility: boolean;\n};\n\ntype CredentialsInputProps = Omit;\nexport class CredentialsInput extends React.Component {\n static defaultProps: BaseDefaultProps & Pick = {\n ...DefaultProps,\n borderColor: 'blueRG1050',\n };\n\n constructor(props: CredentialsInputProps) {\n super(props);\n\n this.setActionTipVisibility = this.setActionTipVisibility.bind(this);\n\n this.state = {\n actionTipVisibility: false,\n };\n }\n\n setActionTipVisibility() {\n this.setState({ actionTipVisibility: true });\n setTimeout(() => {\n this.setState({ actionTipVisibility: false });\n }, 1500);\n }\n\n getMaskedValue(credentials: string) {\n let result = credentials.substring(0, 2);\n for (let i = 2; i < credentials.length - 2; i++) {\n result = result.concat('•');\n }\n result = result.concat(credentials.substring(credentials.length - 2, credentials.length));\n return result;\n }\n\n render() {\n const { children, ...props } = this.props;\n const maskedValue = this.getMaskedValue(this.props.value);\n\n return (\n \n \n {children}\n \n \n );\n }\n}\n\ntype TextAreaProps = Omit;\nexport class TextArea extends React.Component {\n static defaultProps: BaseDefaultProps = {\n ...DefaultProps,\n required: false,\n };\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","/** @format */\n\nimport React from 'react';\nimport cx from 'classnames';\n\nfunction isDefined(value: any) {\n return typeof value !== 'undefined';\n}\n\nconst HorizontalAlignments = {\n CENTER: 'center',\n RIGHT: 'right',\n JUSTIFY: 'justify',\n SPACED: 'spaced',\n};\n\nconst VerticalAlignments = {\n TOP: 'top',\n MIDDLE: 'middle',\n BOTTOM: 'bottom',\n STRETCH: 'stretch',\n};\n\ntype RowProps = {\n className?: string;\n upOnSmall?: number;\n upOnMedium?: number;\n upOnLarge?: number;\n horizontalAlignment?: 'center' | 'right' | 'justify' | 'spaced';\n verticalAlignment?: 'top' | 'middle' | 'bottom' | 'stretch';\n unstackOnSmall?: boolean;\n unstackOnMedium?: boolean;\n unstackOnLarge?: boolean;\n collapseOnSmall?: boolean;\n collapseOnMedium?: boolean;\n collapseOnLarge?: boolean;\n collapseOnAll?: boolean;\n uncollapseOnSmall?: boolean;\n uncollapseOnMedium?: boolean;\n uncollapseOnLarge?: boolean;\n isCollapsed?: boolean;\n isExpanded?: boolean;\n isColumn?: boolean;\n noDefaultClassName?: boolean;\n overflow?: string;\n backgroundColor?: string;\n};\n\nexport const Row: React.FunctionComponent = props => {\n const className = cx(\n props.noDefaultClassName ? null : 'row',\n props.className,\n isDefined(props.upOnSmall) ? `small-up-${props.upOnSmall}` : null,\n isDefined(props.upOnMedium) ? `medium-up-${props.upOnMedium}` : null,\n isDefined(props.upOnLarge) ? `large-up-${props.upOnLarge}` : null,\n isDefined(props.overflow) ? `overflow--${props.overflow}` : null,\n {\n 'align-right': props.horizontalAlignment === HorizontalAlignments.RIGHT,\n 'align-center': props.horizontalAlignment === HorizontalAlignments.CENTER,\n 'align-justify': props.horizontalAlignment === HorizontalAlignments.JUSTIFY,\n 'align-spaced': props.horizontalAlignment === HorizontalAlignments.SPACED,\n 'align-top': props.verticalAlignment === VerticalAlignments.TOP,\n 'align-middle': props.verticalAlignment === VerticalAlignments.MIDDLE,\n 'align-bottom': props.verticalAlignment === VerticalAlignments.BOTTOM,\n 'align-stretch': props.verticalAlignment === VerticalAlignments.STRETCH,\n 'small-unstack': props.unstackOnSmall,\n 'medium-unstack': props.unstackOnMedium,\n 'large-unstack': props.unstackOnLarge,\n 'small-collapse': props.collapseOnSmall || props.collapseOnAll,\n 'medium-collapse': props.collapseOnMedium || props.collapseOnAll,\n 'large-collapse': props.collapseOnLarge || props.collapseOnAll,\n 'small-uncollapse': props.uncollapseOnSmall,\n 'medium-uncollapse': props.uncollapseOnMedium,\n 'large-uncollapse': props.uncollapseOnLarge,\n collapse: props.isCollapsed,\n expanded: props.isExpanded,\n column: props.isColumn,\n },\n );\n\n const style = {\n overflow: isDefined(props.overflow) ? props.overflow : '',\n backgroundColor: isDefined(props.backgroundColor) ? props.backgroundColor : '',\n };\n\n return (\n
    \n {props.children}\n
    \n );\n};\n\ntype ColumnProps = {\n className?: string;\n small?: number;\n medium?: number;\n large?: number;\n xLarge?: number;\n offsetOnSmall?: number;\n offsetOnMedium?: number;\n offsetOnLarge?: number;\n offsetOnXLarge?: number;\n pushOnSmall?: number;\n pushOnMedium?: number;\n pushOnLarge?: number;\n pushOnXLarge?: number;\n pullOnSmall?: number;\n pullOnMedium?: number;\n pullOnLarge?: number;\n orderOnSmall?: number;\n orderOnMedium?: number;\n orderOnLarge?: number;\n orderOnXLarge?: number;\n centerOnSmall?: boolean;\n centerOnMedium?: boolean;\n centerOnLarge?: boolean;\n centerOnXLarge?: boolean;\n uncenterOnSmall?: boolean;\n uncenterOnMedium?: boolean;\n uncenterOnLarge?: boolean;\n uncenterOnXLarge?: boolean;\n expandOnSmall?: boolean;\n expandOnMedium?: boolean;\n expandOnLarge?: boolean;\n expandOnXLarge?: boolean;\n isShrunk?: boolean;\n isLast?: boolean;\n isColumn?: boolean;\n noDefaultClassName?: boolean;\n backgroundColor?: string;\n fullHeight?: boolean;\n fullHeightMediumUp?: boolean;\n hideOnSmall?: boolean;\n hideOnMedium?: boolean;\n showOnSmall?: boolean;\n overflow?: boolean;\n noPadding?: boolean;\n flex?: boolean;\n};\n\nexport const Column: React.FunctionComponent = props => {\n const defaultClassName = props.isColumn ? 'column' : 'columns';\n const className = cx(\n props.noDefaultClassName ? null : defaultClassName,\n props.className,\n props.small ? `small-${props.small}` : 'small-12',\n props.medium ? `medium-${props.medium}` : null,\n props.large ? `large-${props.large}` : null,\n props.xLarge ? `extra-large-${props.xLarge}` : null,\n props.hideOnSmall ? `hide-mob` : null,\n props.showOnSmall ? `hide show-mob` : null,\n props.hideOnMedium ? `hide-min` : null,\n props.fullHeight ? `height-100vh` : null,\n props.fullHeightMediumUp ? `height-100vh--medium-up` : null,\n props.overflow === false ? 'overflow--hidden' : null,\n props.flex ? 'flex-container' : null,\n isDefined(props.offsetOnSmall) ? `small-offset-${props.offsetOnSmall}` : null,\n isDefined(props.offsetOnMedium) ? `medium-offset-${props.offsetOnMedium}` : null,\n isDefined(props.offsetOnLarge) ? `large-offset-${props.offsetOnLarge}` : null,\n isDefined(props.offsetOnXLarge) ? `extra-large-offset-${props.offsetOnXLarge}` : null,\n isDefined(props.pushOnSmall) ? `small-offset-${props.pushOnSmall}` : null,\n isDefined(props.pushOnMedium) ? `medium-offset-${props.pushOnMedium}` : null,\n isDefined(props.pushOnLarge) ? `large-offset-${props.pushOnLarge}` : null,\n isDefined(props.pushOnXLarge) ? `extra-large-offset-${props.pushOnXLarge}` : null,\n isDefined(props.pullOnSmall) ? `small-pull-${props.pullOnSmall}` : null,\n isDefined(props.pullOnMedium) ? `medium-pull-${props.pullOnMedium}` : null,\n isDefined(props.orderOnSmall) ? `small-order-${props.orderOnSmall}` : null,\n isDefined(props.orderOnMedium) ? `medium-order-${props.orderOnMedium}` : null,\n isDefined(props.orderOnLarge) ? `large-order-${props.orderOnLarge}` : null,\n isDefined(props.orderOnXLarge) ? `large-order-${props.orderOnXLarge}` : null,\n {\n 'small-centered': props.centerOnSmall,\n 'medium-centered': props.centerOnMedium,\n 'large-centered': props.centerOnLarge,\n 'extra-large-centered': props.centerOnXLarge,\n 'small-uncentered': props.uncenterOnSmall,\n 'medium-uncentered': props.uncenterOnMedium,\n 'large-uncentered': props.uncenterOnLarge,\n 'extra-large-uncentered': props.uncenterOnXLarge,\n 'small-expand': props.expandOnSmall,\n 'medium-expand': props.expandOnMedium,\n 'large-expand': props.expandOnLarge,\n 'extra-large-expand': props.expandOnXLarge,\n shrink: props.isShrunk,\n end: props.isLast,\n },\n );\n\n const style = {\n backgroundColor: isDefined(props.backgroundColor) ? props.backgroundColor : '',\n paddingLeft: props.noPadding ? '0' : undefined,\n paddingRight: props.noPadding ? '0' : undefined,\n };\n\n return (\n
    \n {props.children}\n
    \n );\n};\n","/** @format */\n\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { cloneDeep, isNil, omit } from 'lodash';\nimport RouterLink, { Props as LinkProps } from 'redux-first-router-link';\nimport { IStyle } from 'fela';\nimport { createComponent } from 'react-fela';\n\nimport { Theme } from 'app/theme';\nimport { DateTimeFilterProps, getDateTimeRaw } from 'selectors/router';\nimport { AppState } from 'interfaces/appState';\n\ntype StateProps = DateTimeFilterProps;\n\ntype SuppliedProps = {\n includeDateTimeFilter?: boolean;\n linkBlock?: boolean;\n title?: string;\n} & LinkProps;\n\ntype Props = StateProps & SuppliedProps;\n\ntype StyledRouterLinkWrapperProps = {\n linkBlock?: boolean;\n};\n\nconst StyledRouterLinkWrapper = (props: StyledRouterLinkWrapperProps): IStyle => ({\n ['> a' as any]: {\n display: props.linkBlock && 'block',\n ':hover': {\n color: `${Theme.ds.getColorByName('blue1500')}`,\n },\n },\n});\nexport const RouterLinkWrapper = createComponent(StyledRouterLinkWrapper);\n\n// TODO: Crazy errors when props isn't any, something to do with Refs\nconst UnconnectedLink: React.FunctionComponent = props => {\n const passableProps: any = omit(props, 'range', 'dateFrom', 'dateTo', 'includeDateTimeFilter');\n\n if (props.includeDateTimeFilter) {\n const to: any = cloneDeep(props.to);\n\n if (typeof to === 'object') {\n const meta = to.meta || {};\n const query = meta.query || {};\n\n to.meta = {\n ...meta,\n query: {\n range: props.range,\n dateFrom: props.dateFrom,\n dateTo: props.dateTo,\n ...query,\n },\n };\n }\n\n passableProps.to = to;\n }\n\n return (\n \n \n \n );\n};\n\nconst ConnectedLink = connect((state: AppState) => ({\n ...getDateTimeRaw(state),\n}))(UnconnectedLink);\n\nexport class Link extends React.Component {\n static defaultProps: Partial = {\n includeDateTimeFilter: true,\n };\n static contextTypes = {\n store: (): any => null,\n };\n\n render() {\n // The latest @types/react don't seem to support this type of context using\n // But as far as I know it's the only way to consume the redux context so we need to use it\n if (isNil((this as any).context.store)) {\n return {this.props.children};\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';\n\nconst StyledModuleListItem = (props: ThemeType): IStyle => ({\n backgroundColor: `${props.theme.colors.standard.white}`,\n borderBottom: `1px solid ${props.theme.colors.grey.lighter}`,\n ':last-child': {\n borderBottom: 'none',\n },\n});\n\nexport const ModuleListItem = createComponent(StyledModuleListItem);\n","/** @format */\n\nimport * as React from 'react';\nimport cx from 'classnames';\nimport { Icon, IconAfter } from 'components/icon';\n\ninterface Props {\n title: React.ReactNode;\n left?: boolean;\n ellipsis?: boolean;\n docsLink?: string;\n designSystemHeight?: boolean;\n}\n\nexport const Title: React.FunctionComponent = props => {\n const classes = cx('page-header__title', {\n 'page-header__title--left': props.left,\n 'page-header__title--ds-height': props.designSystemHeight,\n });\n\n const h1Classes = cx('heading-size-3', 'text-bold', {\n 'text-ellipsis': props.ellipsis,\n });\n\n if (!props.docsLink) {\n return (\n
    \n

    {props.title}

    \n
    \n );\n }\n\n return (\n
    \n

    \n \n \n \n }\n >\n {props.title}\n \n

    \n
    \n );\n};\n\nTitle.defaultProps = {\n ellipsis: true,\n designSystemHeight: false,\n docsLink: null,\n};\n","/** @format **/\n\nimport React from 'react';\nimport { createComponent } from 'react-fela';\nimport { IStyle } from 'fela';\n\nimport { screenMediumAndAbove, screenSmallOnly } from 'fela-rules/breakpoints';\n\nconst StyledPaywallContainer = (): IStyle => ({\n boxShadow: '0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.25)',\n backgroundColor: 'white',\n padding: '7rem 10.4rem',\n borderRadius: '4px',\n width: '572px',\n marginLeft: 'auto',\n marginRight: 'auto',\n\n ...screenSmallOnly({\n width: '100%',\n minWidth: '296px',\n paddingLeft: '2.4rem',\n paddingRight: '2.4rem',\n }),\n});\n\nexport const PaywallContainer = createComponent(StyledPaywallContainer);\n\nexport const PaywallWrapper: React.FunctionComponent<{}> = ({ children }) => (\n {children}\n);\n","/** @format **/\n\nimport React from 'react';\nimport { IStyle } from 'fela';\nimport { createComponentWithProxy } from 'react-fela';\n\nimport { trackLinkClick } from '../utils';\n\ntype Props = {\n interactionId: string;\n};\n\nconst StyledGhostElement = ({}): IStyle => ({\n display: 'contents',\n});\n\nconst GhostElement = createComponentWithProxy(StyledGhostElement, 'span', ['onClick']);\n\nexport const SnowplowLink: React.FunctionComponent = ({ interactionId, children }) => (\n trackLinkClick(interactionId)}>{children}\n);\n","/** @format **/\n\nimport React from 'react';\n\nimport { useHubSpotLoaded } from \"hooks/useHubSpotLoaded\";\n\nimport { CONTACT_EMAIL, CONTACT_US_URL, SALES_EMAIL, SUPPORT_CLASS } from 'utils/constants';\n\nimport { SupportLinkWrapper } from './styles';\n\ntype SupportLinkProps = {\n key?: string;\n forSales?: boolean;\n};\n\nexport const SupportLink: React.FunctionComponent = props => {\n const isHubSpotLoaded = useHubSpotLoaded();\n\n const link = isHubSpotLoaded\n ? `mailto:${props.forSales ? SALES_EMAIL : CONTACT_EMAIL}`\n : CONTACT_US_URL;\n\n return (\n \n {props.children}\n \n );\n};\n","/**\n * @prettier\n */\n\nimport React from 'react';\nimport { createComponent } from 'react-fela';\nimport { IStyle } from 'fela';\n\ntype AlignTextProps = {\n textAlign: 'left' | 'center' | 'right';\n verticalAlign?: 'top' | 'middle' | 'bottom';\n};\nexport const AlignText = createComponent((props: AlignTextProps): IStyle => ({ ...props }));\n\nAlignText.defaultProps = {\n textAlign: 'left',\n};\n","/** @format */\n/* tslint:disable:max-file-line-count */\n\nimport { filter, find, isNil } from \"lodash\";\nimport { Products } from \"sections/productpages/setupinstructions/models\";\nimport { APM, CrashReporting, RealUserMonitoring } from \"interfaces/products\";\n\nexport enum EnvironmentIdEnum {\n PHP = 1,\n JavaScript = 2,\n NodeJs = 3,\n Java = 4,\n RubyOnRails = 5,\n ColdFusion = 6,\n ASPNETFramework = 7,\n WPF = 8,\n WinRT = 9,\n WindowsPhone = 10,\n Nancy = 11,\n XamarinIOs = 12,\n XamarinAndroid = 13,\n WordPress = 14,\n Android = 15,\n Python = 16,\n Apple = 17,\n Unity3D = 18,\n XamarinMac = 19,\n ASPNETMVC = 20,\n ASPNETWebAPI = 21,\n WinForms = 22,\n WindowsStore = 23,\n DotNETFramework = 24,\n Go = 25,\n /**\n * @deprecated\n */\n MacOS = 26,\n Angular = 27,\n React = 28,\n ASPNET = 29,\n CPP = 30, // C++ key is renamed to CPP because in enum keys needs to be valid identifiers\n DotNET6Plus = 31,\n Swift = 32,\n XamarinForms = 33,\n UWP = 34,\n Ruby = 35,\n ReactNative = 36,\n Flutter = 37,\n MAUI = 38,\n DotNETForAzure = 39,\n SerilogSinks = 40,\n Svelte = 41,\n NuxtJS = 42,\n VueJS = 43,\n NextJS = 44,\n Blazor = 45,\n Remix = 46,\n Laravel = 47,\n Aspire = 48,\n Magento = 49,\n Elixir = 50,\n SpringBoot = 51,\n Other = 100,\n NotSelected = 1000,\n}\n\ntype EnvironmentFeatures = {\n // Providing a string reference allows us to override \n // with a different instruction set for the product.\n supportedProducts: {\n [product in Products]: boolean | string;\n };\n userTrackingSupport: boolean | string;\n};\n\nexport type Environment = {\n id: EnvironmentIdEnum;\n name: string;\n icon: string;\n instructions: string | null;\n features: EnvironmentFeatures;\n};\n\nexport const Angular: Environment = {\n id: EnvironmentIdEnum.Angular,\n name: 'Angular',\n icon: 'platform-angular',\n instructions: 'angular',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const Android: Environment = {\n id: EnvironmentIdEnum.Android,\n name: 'Android',\n icon: 'platform-android',\n instructions: 'android',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const AspDotNetFramework: Environment = {\n id: EnvironmentIdEnum.ASPNETFramework,\n name: 'ASP.NET Framework',\n icon: 'platform-asp-net',\n instructions: 'aspnet-framework',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: 'aspnet',\n [APM]: true,\n },\n userTrackingSupport: 'aspnet',\n },\n};\nexport const AspDotNet: Environment = {\n id: EnvironmentIdEnum.ASPNET,\n name: 'ASP.NET',\n icon: 'platform-asp-net',\n instructions: 'aspnet',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: 'dotnet-core',\n },\n userTrackingSupport: true,\n },\n};\nexport const AspDotNetWebApi: Environment = {\n id: EnvironmentIdEnum.ASPNETWebAPI,\n name: 'ASP.NET WebAPI',\n icon: 'platform-asp-net',\n instructions: 'aspnet-webapi',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: 'dotnet-core',\n },\n userTrackingSupport: 'aspnet',\n },\n};\nexport const AspDotNetMvc: Environment = {\n id: EnvironmentIdEnum.ASPNETMVC,\n name: 'ASP.NET MVC',\n icon: 'platform-asp-net',\n instructions: 'aspnet-mvc',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: 'dotnet-core',\n },\n userTrackingSupport: 'aspnet',\n },\n};\nexport const Aspire: Environment = {\n id: EnvironmentIdEnum.Aspire,\n name: '.NET Aspire',\n icon: 'platform-aspire',\n instructions: 'aspire',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\nexport const Blazor: Environment = {\n id: EnvironmentIdEnum.Blazor,\n name: 'Blazor',\n icon: 'platform-dot-net',\n instructions: 'blazor',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\nexport const CPlusPlus: Environment = {\n id: EnvironmentIdEnum.CPP,\n name: 'C++',\n icon: 'platform-c-plus-plus',\n instructions: 'cpp',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\nexport const ColdFusion: Environment = {\n id: EnvironmentIdEnum.ColdFusion,\n name: 'ColdFusion',\n icon: 'platform-cold-fusion',\n instructions: 'coldfusion',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: 'javascript',\n [APM]: false,\n },\n userTrackingSupport: 'javascript',\n },\n};\n\nexport const Elixir: Environment = {\n id: EnvironmentIdEnum.Elixir,\n name: 'Elixir',\n icon: 'platform-elixir',\n instructions: 'elixir',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\n\nexport const DotNetForAzure: Environment = {\n id: EnvironmentIdEnum.DotNETForAzure,\n name: '.NET for Azure',\n icon: 'platform-azure-app-service',\n instructions: 'dotnet-azure',\n features: {\n supportedProducts: {\n [CrashReporting]: false,\n [RealUserMonitoring]: false,\n [APM]: true,\n },\n userTrackingSupport: 'aspnet',\n },\n};\nexport const DotNetFramework: Environment = {\n id: EnvironmentIdEnum.DotNETFramework,\n name: '.NET Framework',\n icon: 'platform-dot-net',\n instructions: 'dotnet-framework',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: 'javascript',\n [APM]: true,\n },\n userTrackingSupport: 'javascript',\n },\n};\nexport const DotNetCore: Environment = {\n id: EnvironmentIdEnum.DotNET6Plus,\n name: '.NET 6+',\n icon: 'platform-dot-net',\n instructions: 'dotnet-core',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: 'javascript',\n [APM]: true,\n },\n userTrackingSupport: true,\n },\n};\nexport const Flutter: Environment = {\n id: EnvironmentIdEnum.Flutter,\n name: 'Flutter',\n icon: 'platform-flutter',\n instructions: 'flutter',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const Go: Environment = {\n id: EnvironmentIdEnum.Go,\n name: 'Go',\n icon: 'platform-go-lang',\n instructions: 'go',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: 'javascript',\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const Apple: Environment = {\n id: EnvironmentIdEnum.Apple,\n name: 'Apple',\n icon: 'platform-apple',\n instructions: 'apple',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const Java: Environment = {\n id: EnvironmentIdEnum.Java,\n name: 'Java',\n icon: 'platform-java',\n instructions: 'java',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const JavaScript: Environment = {\n id: EnvironmentIdEnum.JavaScript,\n name: 'JavaScript',\n icon: 'platform-javascript',\n instructions: 'javascript',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const Laravel: Environment = {\n id: EnvironmentIdEnum.Laravel,\n name: 'Laravel',\n icon: 'platform-laravel',\n instructions: 'laravel',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\nexport const Magento: Environment = {\n id: EnvironmentIdEnum.Magento,\n name: 'Magento',\n icon: 'platform-magento',\n instructions: 'magento',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\nexport const Maui: Environment = {\n id: EnvironmentIdEnum.MAUI,\n name: 'MAUI',\n icon: 'platform-dot-net',\n instructions: 'maui',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\nexport const Nancy: Environment = {\n id: EnvironmentIdEnum.Nancy,\n name: 'Nancy',\n icon: 'platform-nancy',\n instructions: 'nancy',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: 'javascript',\n [APM]: false,\n },\n userTrackingSupport: 'javascript',\n },\n};\nexport const NextJs: Environment = {\n id: EnvironmentIdEnum.NextJS,\n name: 'Next.js',\n icon: 'platform-nextjs',\n instructions: 'nextjs',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: 'javascript',\n },\n};\nexport const NodeJs: Environment = {\n id: EnvironmentIdEnum.NodeJs,\n name: 'Node.js',\n icon: 'platform-nodejs',\n instructions: 'nodejs',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: true,\n },\n userTrackingSupport: true,\n },\n};\nexport const NuxtJs: Environment = {\n id: EnvironmentIdEnum.NuxtJS,\n name: 'Nuxt.js',\n icon: 'platform-nuxtjs',\n instructions: 'nuxtjs',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: 'javascript',\n },\n};\nexport const Php: Environment = {\n id: EnvironmentIdEnum.PHP,\n name: 'PHP',\n icon: 'platform-php',\n instructions: 'php',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: 'javascript',\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const Python: Environment = {\n id: EnvironmentIdEnum.Python,\n name: 'Python',\n icon: 'platform-python',\n instructions: 'python',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: 'javascript',\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const React: Environment = {\n id: EnvironmentIdEnum.React,\n name: 'React',\n icon: 'platform-react',\n instructions: 'javascript',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const ReactNative: Environment = {\n id: EnvironmentIdEnum.ReactNative,\n name: 'React Native',\n icon: 'platform-react',\n instructions: 'react-native',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const Remix: Environment = {\n id: EnvironmentIdEnum.Remix,\n name: 'Remix',\n icon: 'platform-remix',\n instructions: 'remix',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: 'javascript',\n },\n};\nexport const Ruby: Environment = {\n id: EnvironmentIdEnum.Ruby,\n name: 'Ruby',\n icon: 'platform-ruby-alt',\n instructions: 'ruby',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: 'javascript',\n [APM]: true,\n },\n userTrackingSupport: false,\n },\n};\nexport const RubyOnRails: Environment = {\n id: EnvironmentIdEnum.RubyOnRails,\n name: 'Ruby on Rails',\n icon: 'platform-rails',\n instructions: 'ruby-on-rails',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: 'javascript',\n [APM]: true,\n },\n userTrackingSupport: true,\n },\n};\n\nexport const SerilogSinks: Environment = {\n id: EnvironmentIdEnum.SerilogSinks,\n name: 'Serilog Sinks',\n icon: 'platform-serilog-sinks',\n instructions: 'serilog-sinks',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\n\nexport const SpringBoot: Environment = {\n id: EnvironmentIdEnum.SpringBoot,\n name: 'Spring Boot',\n icon: 'platform-spring-boot',\n instructions: 'spring-boot',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\n\nexport const Swift: Environment = {\n id: EnvironmentIdEnum.Swift,\n name: 'Swift',\n icon: 'platform-swift',\n instructions: 'swift',\n features: {\n supportedProducts: {\n [CrashReporting]: 'apple',\n [RealUserMonitoring]: 'apple',\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const Svelte: Environment = {\n id: EnvironmentIdEnum.Svelte,\n name: 'Svelte',\n icon: 'platform-svelte',\n instructions: 'javascript',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const Unity: Environment = {\n id: EnvironmentIdEnum.Unity3D,\n name: 'Unity 3D',\n icon: 'platform-unity',\n instructions: 'unity',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: 'aspnet',\n },\n};\nexport const Uwp: Environment = {\n id: EnvironmentIdEnum.UWP,\n name: 'UWP',\n icon: 'platform-windows-8',\n instructions: 'uwp',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const VueJs: Environment = {\n id: EnvironmentIdEnum.VueJS,\n name: 'Vue.js',\n icon: 'platform-vuejs',\n instructions: 'vuejs',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\nexport const WinForms: Environment = {\n id: EnvironmentIdEnum.WinForms,\n name: 'WinForms',\n icon: 'platform-winforms',\n instructions: 'winforms',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: 'aspnet',\n },\n};\n// TODO: Candidate for removal?\nexport const WindowsPhone: Environment = {\n id: EnvironmentIdEnum.WindowsPhone,\n name: 'Windows Phone',\n icon: 'platform-windows-8',\n instructions: 'windows-phone',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: 'aspnet',\n },\n};\n// TODO: Candidate for removal?\nexport const WindowsStore: Environment = {\n id: EnvironmentIdEnum.WindowsStore,\n name: 'Windows Store',\n icon: 'platform-windows-store',\n instructions: 'windows-store',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: 'aspnet',\n },\n};\nexport const WinRT: Environment = {\n id: EnvironmentIdEnum.WinRT,\n name: 'WinRT',\n icon: 'platform-windows-8',\n instructions: 'winrt',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: 'aspnet',\n },\n};\n\nexport const WordPress: Environment = {\n id: EnvironmentIdEnum.WordPress,\n name: 'WordPress',\n icon: 'platform-wordpress',\n instructions: 'wordpress',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const Wpf: Environment = {\n id: EnvironmentIdEnum.WPF,\n name: 'WPF',\n icon: 'platform-windows-8',\n instructions: 'wpf',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\n// TODO: Candidate for removal?\nexport const XamarinAndroid: Environment = {\n id: EnvironmentIdEnum.XamarinAndroid,\n name: 'Xamarin.Android',\n icon: 'platform-xamarin',\n instructions: 'xamarin-android',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: 'xamarin-forms',\n },\n};\nexport const XamarinIOs: Environment = {\n id: EnvironmentIdEnum.XamarinIOs,\n name: 'Xamarin.iOS',\n icon: 'platform-xamarin',\n instructions: 'xamarin-ios',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: 'xamarin-forms',\n },\n};\nexport const XamarinMac: Environment = {\n id: EnvironmentIdEnum.XamarinMac,\n name: 'Xamarin.Mac',\n icon: 'platform-xamarin',\n instructions: 'xamarin-mac',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: false, \n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\nexport const XamarinForms: Environment = {\n id: EnvironmentIdEnum.XamarinForms,\n name: 'Xamarin.Forms',\n icon: 'platform-xamarin',\n instructions: 'xamarin-forms',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: true,\n },\n};\nexport const Other: Environment = {\n id: EnvironmentIdEnum.Other,\n name: 'Other',\n icon: 'platform-other',\n instructions: 'other',\n features: {\n supportedProducts: {\n [CrashReporting]: true,\n [RealUserMonitoring]: true,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\nexport const NotSelected: Environment = {\n id: EnvironmentIdEnum.NotSelected,\n name: 'NotSelected',\n icon: 'question',\n instructions: null,\n features: {\n supportedProducts: {\n [CrashReporting]: false,\n [RealUserMonitoring]: false,\n [APM]: false,\n },\n userTrackingSupport: false,\n },\n};\n\nexport const Environments: Environment[] = [\n Angular,\n AspDotNet,\n AspDotNetFramework,\n AspDotNetWebApi,\n AspDotNetMvc,\n Apple,\n Android,\n Blazor,\n CPlusPlus,\n ColdFusion,\n Elixir,\n Flutter,\n Go,\n Java,\n JavaScript,\n Laravel,\n Nancy,\n Aspire,\n DotNetCore,\n DotNetFramework,\n DotNetForAzure,\n NextJs,\n NodeJs,\n NuxtJs,\n Magento,\n Maui,\n Php,\n Python,\n React,\n ReactNative,\n Remix,\n Ruby,\n RubyOnRails,\n SerilogSinks,\n SpringBoot,\n Svelte,\n Swift,\n Unity,\n Uwp,\n VueJs,\n WinForms,\n WindowsPhone,\n WindowsStore,\n WinRT,\n WordPress,\n Wpf,\n XamarinForms,\n XamarinAndroid,\n XamarinIOs,\n XamarinMac,\n Other,\n NotSelected,\n];\n\nexport const getEnvironmentById = (id: number) => {\n const environment = find(Environments, e => e.id === id);\n\n if (isNil(environment)) {\n throw new Error(`Environment with id ${id} does not exist`);\n }\n\n return environment;\n};\n\nexport const getEnvironmentByInstructions = (instructions: string) => {\n const environment = find(Environments, e => e.instructions === instructions);\n\n if (isNil(environment)) {\n throw new Error(`Environment with name ${name} does not exist`);\n }\n\n return environment;\n};\n\n// Environment features can be bools or strings, \n// by using !! we are able to assert truthy values at the same time.\nexport const getEnvironmentsForProduct = (product: Products): Environment[] => {\n return Environments.filter(env => {\n if (env.id !== EnvironmentIdEnum.NotSelected) {\n switch (product) {\n case CrashReporting:\n return !!env.features.supportedProducts[CrashReporting];\n case RealUserMonitoring:\n return !!env.features.supportedProducts[RealUserMonitoring];\n case APM:\n return !!env.features.supportedProducts[APM];\n default:\n throw new Error(`Product ${product} is not supported`);\n }\n }\n });\n};\n\nexport const getEnvironmentsWithUserTracking = (): Environment[] => {\n return filter(Environments, env => !!env.features.userTrackingSupport);\n};","/** @format */\n\nexport enum PlanLevel {\n Micro = 5,\n Small = 10,\n Medium = 20,\n Large = 30,\n FreeAndTrial = 40,\n Enterprise = 50,\n Basic = 70,\n Team = 85,\n Business = 100,\n}\n\nexport enum PlanLevelName {\n SideProject = 'Side Project',\n Startup = 'Startup',\n SmallBusiness = 'Small Business',\n Business = 'Business',\n FreeAndTrial = 'Trial',\n Enterprise = 'Enterprise',\n Basic = 'Basic',\n Team = 'Team',\n}\n\nexport function getPlanLevelEnum(planLevelName: string): PlanLevel {\n switch (planLevelName) {\n case PlanLevelName.SideProject:\n case 'Side Project':\n return PlanLevel.Micro;\n case PlanLevelName.Startup:\n case 'Startup':\n return PlanLevel.Medium;\n case PlanLevelName.SmallBusiness:\n case 'Small Business':\n return PlanLevel.Large;\n case PlanLevelName.FreeAndTrial:\n case 'Free and Trial':\n return PlanLevel.FreeAndTrial;\n case PlanLevelName.Enterprise:\n case 'Enterprise':\n return PlanLevel.Enterprise;\n case PlanLevelName.Basic:\n case 'Basic':\n return PlanLevel.Basic;\n case PlanLevelName.Team:\n case 'Team':\n return PlanLevel.Team;\n case PlanLevelName.Business:\n case 'Business':\n return PlanLevel.Business;\n default:\n throw new Error('Plan level name does not exist.');\n }\n}\n\nexport function getPlanLevelName(planLevel: PlanLevel): PlanLevelName {\n switch (planLevel) {\n case PlanLevel.Micro:\n return PlanLevelName.SideProject;\n case PlanLevel.Small:\n return PlanLevelName.Startup;\n case PlanLevel.Medium:\n return PlanLevelName.SmallBusiness;\n case PlanLevel.Large:\n return PlanLevelName.Business;\n case PlanLevel.FreeAndTrial:\n return PlanLevelName.FreeAndTrial;\n case PlanLevel.Enterprise:\n return PlanLevelName.Enterprise;\n case PlanLevel.Basic:\n return PlanLevelName.Basic;\n case PlanLevel.Team:\n return PlanLevelName.Team;\n case PlanLevel.Business:\n return PlanLevelName.Business;\n default:\n const _never: never = planLevel;\n }\n}\n\nexport type Plan = {\n ApplicationCount: number;\n Avatar: string;\n Id: number;\n IsPlatformPlan: boolean;\n MemberCount: number;\n Order: number;\n PlanLevel: PlanLevel;\n PlanLevelEnum: string;\n PlanLink: string;\n PlanName: string;\n ProductCount: number;\n HasPermissionsFeatureFlag: boolean;\n HasReachedDashboardLimit: boolean;\n HasReachedAppLimit: boolean;\n IsUsingExternalProvider: boolean;\n IsHeroku: boolean;\n};\n\nexport type PlanIntegrationStatus = {\n Id: number;\n PlanName: string;\n HasMicrosoftTeamsIntegration: boolean;\n};\n\nexport enum PlanProductStatus {\n Operational = 0,\n TrialExpired = 2,\n Trial = 3,\n Cancelled = 4,\n}\n\nexport function stringToPlanProductStatus(status: string): PlanProductStatus {\n switch (status) {\n case 'Operational':\n return PlanProductStatus.Operational;\n case 'TrialExpired':\n return PlanProductStatus.TrialExpired;\n case 'Trial':\n return PlanProductStatus.Trial;\n case 'Cancelled':\n return PlanProductStatus.Cancelled;\n }\n}\n\nexport enum ProductType {\n PLATFORM = 'Platform',\n CRASH_REPORTING = 'CrashReporting',\n RUM = 'Pulse',\n APM = 'APM',\n USAGE_CAPPING = 'UsageCapping',\n SINGLE_SIGN_ON = 'SingleSignOn'\n}\n\n// Used to order products in cart views\nexport const productTypeRank = {\n CrashReporting: 0,\n Pulse: 1,\n APM: 2,\n Platform: 3,\n UsageCapping: 4,\n SingleSignOn: 5,\n};\n\nexport function isUsageBasedProductType(productType: ProductType): boolean {\n return productType == ProductType.CRASH_REPORTING\n || productType == ProductType.RUM\n || productType == ProductType.APM\n || productType == ProductType.PLATFORM;\n}\nexport function isAddOnProductType(productType: ProductType): boolean {\n return productType == ProductType.USAGE_CAPPING || productType == ProductType.SINGLE_SIGN_ON;\n}\n\nexport function getNameForProductType(productType: ProductType): string {\n switch (productType) {\n case ProductType.PLATFORM:\n return 'Full Platform';\n case ProductType.APM:\n return 'APM';\n case ProductType.CRASH_REPORTING:\n return 'Crash Reporting';\n case ProductType.RUM:\n return 'Real User Monitoring';\n case ProductType.USAGE_CAPPING:\n return 'Usage Capping';\n case ProductType.SINGLE_SIGN_ON:\n return 'SAML SSO';\n default:\n throw new Error('Product type does not exist.');\n }\n}\n\nexport function getPricingUrlForProductType(productType: ProductType): string {\n switch (productType) {\n case ProductType.PLATFORM:\n return 'https://raygun.com/pricing#platform';\n case ProductType.APM:\n return 'https://raygun.com/pricing#apm';\n case ProductType.CRASH_REPORTING:\n return 'https://raygun.com/pricing#crash';\n case ProductType.RUM:\n return 'https://raygun.com/pricing#rum';\n case ProductType.USAGE_CAPPING:\n case ProductType.SINGLE_SIGN_ON:\n return 'https://raygun.com/pricing#add-ons';\n default:\n const _never: never = productType;\n }\n}\n\nexport function getEventNameForProductType(type: ProductType): string {\n switch (type) {\n case ProductType.PLATFORM:\n return 'event';\n case ProductType.APM:\n return 'trace';\n case ProductType.CRASH_REPORTING:\n return 'error';\n case ProductType.RUM:\n return 'session';\n default:\n throw new Error(`${type} event name doesn't exist`);\n }\n}\n\nexport function getPluralEventNameForProductType(type: ProductType): string {\n switch (type) {\n case ProductType.PLATFORM:\n return 'events';\n case ProductType.APM:\n return 'traces';\n case ProductType.CRASH_REPORTING:\n return 'errors';\n case ProductType.RUM:\n return 'sessions';\n default:\n throw new Error(`${type} plural event name doesn't exist`);\n }\n}\n","export enum SystemTeams {\n Users = 'Users',\n Owners = 'Owners'\n}","/** @format **/\n\nimport React from 'react';\n\nimport { Dialog, ModalProps } from 'components/ds/dialog';\nimport { InviteTeamModule } from './module';\n\ntype Props = ModalProps;\n\nexport const InviteTeamModal: React.FunctionComponent = props => (\n \n props.close(props.id)} />\n \n);\n","/** @format **/\n\nimport * as Actions from './actions';\nimport * as Models from './models';\nimport { ResourcesSagas as Sagas } from './sagas';\nimport { ResourcesReducer as Reducer } from './reducers';\nimport { ResourcesState as State } from './state';\n\nconst { ResourceCapabilities } = Models;\n\nexport { Actions, Models, Sagas, Reducer, State, ResourceCapabilities };\n","/** @format */\n\nimport React from 'react';\n\nimport { Formatting } from 'utils/date';\nimport { DateInput } from 'utils/types';\n\nimport { DateFormat } from '../../models';\n\ntype SuppliedProps = {\n children: DateInput;\n format?: DateFormat;\n dateFormat?: string;\n omitSuffix?: boolean;\n};\ntype Props = SuppliedProps;\n\nexport const DateFormatter: React.FunctionComponent = ({\n children,\n format,\n dateFormat,\n omitSuffix,\n}) => {\n switch (format) {\n case 'date-time':\n return <>{Formatting.legacyFormatMediumDateTime(children)};\n case 'date':\n return <>{Formatting.legacyFormatDate(children)};\n case 'time-ago':\n return <>{Formatting.formatAsTimeAgo(children, omitSuffix)};\n case 'custom':\n return <>{Formatting.format(children, dateFormat)};\n case 'duration':\n return <>{Formatting.formatAsDuration(children)};\n }\n};\n\nDateFormatter.defaultProps = {\n format: 'date',\n};\n","/**\n * @prettier\n */\n\nimport { reducerWithInitialState } from 'typescript-fsa-reducers';\nimport moment from 'moment';\n\nimport { nestedReducerUpdate, reducerUpdate } from 'utils/reducerUpdate';\n\nimport { WhatsNewState } from './state';\nimport * as Actions from './actions';\nimport { NetworkWhatsNewItem, parseWhatsNewCategory, WhatsNewCategory } from './models';\n\nconst initialState: WhatsNewState = {\n lastViewedItemDate: new Date(),\n whatsNewItems: [],\n fetching: {\n error: null,\n hasErrored: false,\n isFetching: false,\n },\n filters: {\n categories: {\n [WhatsNewCategory.Platform]: true,\n [WhatsNewCategory.Providers]: true,\n [WhatsNewCategory.RealUserMonitoring]: true,\n [WhatsNewCategory.CrashReporting]: true,\n [WhatsNewCategory.APM]: true,\n [WhatsNewCategory.Integrations]: true,\n },\n tags: [],\n },\n banner: {\n bannerImgSrc: '',\n bannerImgAlt: '',\n bannerLink: '',\n bannerEnabled: false,\n },\n};\n\nexport const WhatsNewReducer = reducerWithInitialState(initialState)\n .case(Actions.whatsNewItemFetchingStarted, state =>\n nestedReducerUpdate(state, 'fetching', { isFetching: true, hasErrored: false, error: null }),\n )\n .case(Actions.updateWhatsNewItems, (state, whatsNewItems) => {\n const parsedItems =\n typeof whatsNewItems === 'string' ? JSON.parse(whatsNewItems) : whatsNewItems;\n\n return reducerUpdate(state, {\n whatsNewItems: parsedItems.map((i: NetworkWhatsNewItem) => ({\n ...i,\n relativePermalink: i.relativePermalink.slice(1),\n date: moment(i.date).toDate(),\n type: parseWhatsNewCategory(i.type),\n })),\n });\n })\n .case(Actions.whatsNewItemFetchingSucceeded, state =>\n nestedReducerUpdate(state, 'fetching', {\n error: null,\n hasErrored: false,\n isFetching: false,\n }),\n )\n .case(Actions.whatsNewItemFetchingStarted, (state, error) =>\n nestedReducerUpdate(state, 'fetching', { isFetching: false, hasErrored: true, error }),\n )\n .case(Actions.updateLastViewedDate, (state, date) =>\n reducerUpdate(state, { lastViewedItemDate: date }),\n )\n .case(Actions.toggleCategoryFilter, (state, { category, toggled }) =>\n nestedReducerUpdate(state, 'filters', {\n categories: {\n ...state.filters.categories,\n [category]: toggled,\n },\n }),\n )\n .case(Actions.addTagToFilters, (state, tag) =>\n nestedReducerUpdate(state, 'filters', {\n tags: [...state.filters.tags, tag],\n }),\n )\n .case(Actions.removeTagFromFilters, (state, tagToRemove) =>\n nestedReducerUpdate(state, 'filters', {\n tags: state.filters.tags.filter(tag => tag !== tagToRemove),\n }),\n )\n .case(Actions.whatsNewBannerFetchingStarted, state =>\n nestedReducerUpdate(state, 'fetching', {\n isFetching: true,\n hasErrored: false,\n error: null,\n }),\n )\n .case(Actions.updateWhatsNewBanner, (state, whatsNewBanner) => {\n const parsedBanner =\n typeof whatsNewBanner === 'string' ? JSON.parse(whatsNewBanner) : whatsNewBanner;\n\n return reducerUpdate(state, {\n banner: parsedBanner,\n });\n })\n .case(Actions.whatsNewBannerFetchingSucceeded, state =>\n nestedReducerUpdate(state, 'fetching', {\n error: null,\n hasErrored: false,\n isFetching: false,\n }),\n );\n","/**\n * @prettier\n */\n\nimport { SagaIterator } from 'redux-saga';\nimport { call, fork, put, take, takeLatest } from 'redux-saga/effects';\nimport moment from 'moment';\nimport { Action } from 'typescript-fsa';\nimport { isNil, get } from 'lodash';\n\nimport { AppState } from 'interfaces/appState';\nimport { createFetchSaga } from 'utils/sagas';\nimport { externalRequestFactory } from 'utils/fetching/utils';\n\nimport * as Actions from './actions';\nimport { NetworkWhatsNewItem, WhatsNewBanner } from './models';\n\nconst BlogUrl = get(get(window, 'RaygunConfiguration', {}), 'BlogUrl', 'https://raygun.com/blog');\nconst externalRequest = externalRequestFactory(BlogUrl, 'GET');\nconst LAST_FETCHED_KEY = 'whatsnew-lastfetched';\nconst WHATS_NEW_ITEMS_KEY = 'whatsnew-items';\nconst LAST_VIEWED_KEY = 'whatsnew-lastviewed';\n\nconst fetchWhatsNewSaga = createFetchSaga(\n {\n start: Actions.whatsNewItemFetchingStarted,\n done: Actions.whatsNewItemFetchingSucceeded,\n error: Actions.whatsNewItemFetchingFailed,\n },\n 'whatsnew.json',\n {},\n externalRequest,\n { includeBaseName: false },\n);\nfunction* fetchWhatsNew() {\n yield call(fetchWhatsNewSaga as any);\n}\n\nconst fetchWhatsNewBannerSaga = createFetchSaga(\n {\n start: Actions.whatsNewBannerFetchingStarted,\n done: Actions.whatsNewBannerFetchingSucceeded,\n error: Actions.whatsNewBannerFetchingFailed,\n },\n 'whats-new-banner.json',\n {},\n externalRequest,\n { includeBaseName: false },\n);\nfunction* fetchWhatsNewBanner() {\n yield call(fetchWhatsNewBannerSaga as any);\n}\n\nfunction* fetchWhatsNewIfNeeded() {\n try {\n const lastFetchedAtRaw = localStorage.getItem(LAST_FETCHED_KEY);\n const itemsInStorage = localStorage.getItem(WHATS_NEW_ITEMS_KEY);\n // If no value is set, fallback to 2 days ago to ensure we fetch\n const lastFetchedAt = !isNil(lastFetchedAtRaw)\n ? moment(lastFetchedAtRaw)\n : moment().subtract(2, 'days');\n\n if (isNil(itemsInStorage) || lastFetchedAt.isBefore(moment().subtract(1, 'days'))) {\n yield call(fetchWhatsNew);\n }\n } catch (e) {\n const _ignored = -1;\n }\n}\n\nfunction updateLastFetchedInLocalStorage(action: Action) {\n try {\n localStorage.setItem(WHATS_NEW_ITEMS_KEY, JSON.stringify(action.payload));\n localStorage.setItem(LAST_FETCHED_KEY, moment().toISOString());\n } catch (e) {\n const _ignored = -1;\n }\n}\n\nfunction updateLastViewedInLocalStorage(action: Action) {\n try {\n localStorage.setItem(LAST_VIEWED_KEY, moment(action.payload).toISOString());\n } catch (e) {\n const _ignored = -1;\n }\n}\n\nfunction* forwardWhatsNewItemsToStore() {\n while (true) {\n const action: Action = yield take(\n Actions.whatsNewItemFetchingSucceeded.type,\n );\n\n yield put(Actions.updateWhatsNewItems(action.payload));\n }\n}\n\nfunction* updateStoreFromLocalStorage() {\n try {\n const whatsNewItemsRaw = localStorage.getItem(WHATS_NEW_ITEMS_KEY);\n const lastViewedDateRaw = localStorage.getItem(LAST_VIEWED_KEY);\n\n if (!isNil(whatsNewItemsRaw)) {\n const whatNewItems: NetworkWhatsNewItem[] = JSON.parse(whatsNewItemsRaw);\n\n yield put(Actions.updateWhatsNewItems(whatNewItems));\n }\n\n const lastViewedDate = !isNil(lastViewedDateRaw)\n ? moment(lastViewedDateRaw).toDate()\n : new Date();\n\n yield put(Actions.updateLastViewedDate(lastViewedDate));\n } catch (e) {\n const _ignored = -1;\n }\n}\n\nfunction* forwardWhatsNewBannerToStore() {\n while (true) {\n const action: Action = yield take(\n Actions.whatsNewBannerFetchingSucceeded.type,\n );\n\n yield put(Actions.updateWhatsNewBanner(action.payload));\n }\n}\n\nexport function* Saga(): SagaIterator {\n yield takeLatest(Actions.whatsNewItemFetchingSucceeded.type, updateLastFetchedInLocalStorage);\n // Always fetch now, think it's ok with how the caching on the CDN is set up\n yield takeLatest(Actions.fetchWhatsNewItems.type, fetchWhatsNew);\n yield takeLatest(Actions.forceFetchWhatsNewItems.type, fetchWhatsNew);\n yield takeLatest(Actions.updateLastViewedDate.type, updateLastViewedInLocalStorage);\n yield takeLatest(Actions.fetchWhatsNewBanner.type, fetchWhatsNewBanner);\n\n yield fork(updateStoreFromLocalStorage);\n yield fork(forwardWhatsNewItemsToStore);\n yield fork(forwardWhatsNewBannerToStore);\n}\n","/** @format */\n\nimport { makeRoutingReducer, makeRouteMap } from 'utils/routing';\nimport { LayoutWithSideBar } from './components/layout';\n\nimport { GoToWhatsNew } from 'sections/productpages/routing';\n\nimport { WhatsNew } from './screens';\n\nexport const Routes = makeRouteMap({\n [GoToWhatsNew.type]: 'whats-new',\n});\n\nexport const Reducer = makeRoutingReducer([[GoToWhatsNew, WhatsNew]], LayoutWithSideBar);\n","/** @format **/\n\nimport { createRoutingAction } from 'utils/routing';\n\nexport const GoToAlerts = createRoutingAction<{ planIdentifier: string }>('GO_TO_ALERTS');\nexport const GoToCreateAlert = createRoutingAction<{ planIdentifier: string }>(\n 'GO_TO_CREATE_ALERT',\n);\nexport const GoToEditAlert = createRoutingAction<{ planIdentifier: string; alertId: string }>(\n 'GO_TO_EDIT_ALERT',\n);\nexport const GoToViewAlert = createRoutingAction<{ planIdentifier: string; alertId: string }>(\n 'GO_TO_VIEW_ALERT',\n);\n","/** @format */\n\nimport { createRoutingAction } from 'utils/routing';\n\nexport const GoToApiLandingPage = createRoutingAction('GO_TO_API_LANDING_PAGE');\n","/**\n * @prettier\n */\n\nimport { createRoutingAction } from 'utils/routing';\n\nexport const GoToSampling = createRoutingAction<{ appIdentifier: string }>('GO_TO_SAMPLING');\n","/** @prettier **/\n\nimport { createRoutingAction } from 'utils/routing';\n\nexport const GoToPlanIntegrations = createRoutingAction<{ planIdentifier: string }>(\n 'GO_TO_INTEGRATIONS',\n);\n\nexport const GoToMicrosoftTeamsPlanSelector = createRoutingAction(\n 'GO_TO_MICROSOFTTEAMS_PLAN_SELECTOR',\n);\n","/** @format */\n\nimport { createRoutingAction } from 'utils/routing';\n\nexport const GoToLandingPage = createRoutingAction('GO_TO_LANDING_PAGE');\n","/** @format */\n\nimport { createRoutingAction } from 'utils/routing';\n\nexport const GoToLegacyDashboardMigration = createRoutingAction('GO_TO_LEGACY_DASHBOARD_MIGRATION');\n","/** @format */\n\nimport { createRoutingAction } from 'utils/routing';\n\nexport const GoToNameYourApplicationStep = createRoutingAction('GO_TO_NAME_YOUR_APPLICATION_STEP');\nexport const GoToCreateApplicationStep = createRoutingAction('GO_TO_CREATE_APPLICATION_STEP');\n","/**\n * @prettier\n */\n\nimport { createRoutingAction } from 'utils/routing';\n\nexport const GoToPaywall = createRoutingAction<{ product: string; planIdentifier: string }>(\n 'GO_TO_PAYWALL',\n);\n\n\nexport const GoToAllProductsExpiredPaywall = createRoutingAction<{ planIdentifier: string }>(\n 'GO_TO_ALL_PRODUCTS_EXPIRED_PAYWALL',\n);\n","/** @format */\n\nimport { createRoutingAction } from 'utils/routing';\n\nexport const GoToPrivacyAndCompliance = createRoutingAction<{ planIdentifier: string }>(\n 'GO_TO_PRIVACY_AND_COMPLIANCE',\n);\nexport const GoToDPASignStep = createRoutingAction<{ planIdentifier: string }>(\n 'GO_TO_DPA_SIGNING_STEP',\n);\nexport const GoToGDPRNominationStep = createRoutingAction<{ planIdentifier: string }>(\n 'GO_TO_GDPR_NOMINATION_STEP',\n);\n\nexport const GoToUsage = createRoutingAction<{ planIdentifier: string }>('GO_TO_USAGE');\nexport const GoToUsageForProduct = createRoutingAction<{\n planIdentifier: string;\n productType: string;\n}>('GO_TO_USAGE_FOR_PRODUCT');\n\nexport const GoToSubscriptionPage = createRoutingAction<{ planIdentifier: string }>(\n 'GO_TO_SUBSCRIPTION_PAGE',\n);\n\nexport const GoToCheckoutPage = createRoutingAction<{ planIdentifier: string }>(\n 'GO_TO_CHECKOUT_PAGE',\n);\n\nexport const GoToPaymentDetailsPage = createRoutingAction<{ planIdentifier: string }>(\n 'GO_TO_PAYMENT_DETAILS_PAGE',\n);\n","/**\n * @prettier\n */\n\nimport { createRoutingAction } from 'utils/routing';\n\nexport const GoToTeamOverview = createRoutingAction<{ planIdentifier: string }>('GO_TO_TEAMS');\n\nexport const GoToSpecificTeam = createRoutingAction<{\n planIdentifier: string;\n teamIdentifier: string;\n}>('GO_TO_SPECIFIC_TEAM');\n","/** @format */\n\n// Constants used throughout the app\n\nexport const CONTACT_EMAIL = 'support@raygun.com';\n\nexport const CONTACT_US_URL = 'https://raygun.com/about/contact';\n\nexport const STATUS_URL = 'http://status.raygun.com/';\n\nexport const SALES_EMAIL = 'sales@raygun.com';\n\nexport const SUPPORT_CLASS = 'hs-cta-trigger-button hs-cta-trigger-button-165245250960';\n\nexport const UNLIMITED_USAGE = 1000000000;\n\nexport const MINIMUM_RESERVED_EVENT_VALUE = 100000;\n","/** @format */\n\nexport const isAnonymousPage = window.location.href.indexOf('external') !== -1;\n\nexport const anonymousPagePrefix = 'external/';\n\nexport function addAnonymousRoutePrefix(url: string, isAnon: boolean = isAnonymousPage): string {\n if (isAnon) {\n return `${anonymousPagePrefix}${url}`;\n }\n return url;\n}\n"],"names":["DashboardListItem","props","appImages","dash","listItemSize","id","applicationCount","avatarUrls","length","listItemClass","imgClass","textClass","apps","filter","_url","index","map","url","key","className","src","alt","push","getApplicationImages","dashboard","toString","isPrimary","planId","href","isFeatureGated","onClick","openFeatureGatingModal","tabIndex","title","name","dashboardId","active","isFavourite","isOnTrial","size","set","type","dsColor","inline","Dashboards","dashboards","dashboardView","text","Favourite","connect","undefined","dispatch","passedProps","onFavourite","applicationId","favourite","iconType","classes","e","preventDefault","stopPropagation","NoData","borderless","paddingVertical","Button","isNil","hasIconAfter","hasIconBefore","block","disabled","extraClasses","children","defaultProps","state","isChecked","isHovered","handleClick","bind","triggerHover","disableHover","componentWillReceiveProps","nextProps","this","setState","prevState","onToggled","renderLabel","render","wrapperProps","omit","onMouseEnter","onMouseLeave","checked","onChange","isRadioButton","hovered","noPadding","dropdown","checkedBoxColor","IconContainer","spacing","leftSpacing","marginLeft","marginTop","height","marginRight","textAlign","minHeight","paddingTop","paddingBottom","SearchableDropdownDivider","_props","width","backgroundColor","ds","colors","blueGrey","blueGrey100","maxHeight","display","standard","white","borderTop","borderColor","padding","overflowY","textArea","leftIconSpacing","iconLeft","setActionTipVisibility","actionTipVisibility","setTimeout","getMaskedValue","credentials","result","substring","i","concat","maskedValue","value","label","hideArrow","fullWidthTrigger","visible","alignRight","readOnly","onCopyButtonClick","credentialsValue","required","isDefined","Row","noDefaultClassName","upOnSmall","upOnMedium","upOnLarge","overflow","horizontalAlignment","verticalAlignment","unstackOnSmall","unstackOnMedium","unstackOnLarge","collapseOnSmall","collapseOnAll","collapseOnMedium","collapseOnLarge","uncollapseOnSmall","uncollapseOnMedium","uncollapseOnLarge","collapse","isCollapsed","expanded","isExpanded","column","isColumn","style","Column","defaultClassName","small","medium","large","xLarge","hideOnSmall","showOnSmall","hideOnMedium","fullHeight","fullHeightMediumUp","flex","offsetOnSmall","offsetOnMedium","offsetOnLarge","offsetOnXLarge","pushOnSmall","pushOnMedium","pushOnLarge","pushOnXLarge","pullOnSmall","pullOnMedium","orderOnSmall","orderOnMedium","orderOnLarge","orderOnXLarge","centerOnSmall","centerOnMedium","centerOnLarge","centerOnXLarge","uncenterOnSmall","uncenterOnMedium","uncenterOnLarge","uncenterOnXLarge","expandOnSmall","expandOnMedium","expandOnLarge","expandOnXLarge","shrink","isShrunk","end","isLast","paddingLeft","paddingRight","RouterLinkWrapper","linkBlock","color","getColorByName","ConnectedLink","passableProps","includeDateTimeFilter","to","cloneDeep","meta","query","range","dateFrom","dateTo","context","store","contextTypes","theme","borderBottom","grey","lighter","Title","left","designSystemHeight","h1Classes","ellipsis","docsLink","icon","target","boxShadow","borderRadius","minWidth","GhostElement","SnowplowLink","interactionId","SupportLink","isHubSpotLoaded","link","forSales","EnvironmentIdEnum","Angular","instructions","features","supportedProducts","userTrackingSupport","Android","AspDotNetFramework","ASPNETFramework","AspDotNet","ASPNET","AspDotNetWebApi","ASPNETWebAPI","AspDotNetMvc","ASPNETMVC","Aspire","Blazor","CPlusPlus","CPP","ColdFusion","Elixir","DotNetForAzure","DotNETForAzure","DotNetFramework","DotNETFramework","DotNetCore","DotNET6Plus","Flutter","Go","Apple","Java","JavaScript","Laravel","Magento","Maui","MAUI","Nancy","NextJs","NextJS","NodeJs","NuxtJs","NuxtJS","Php","PHP","Python","React","ReactNative","Remix","Ruby","RubyOnRails","SerilogSinks","SpringBoot","Swift","Svelte","Unity","Unity3D","Uwp","UWP","VueJs","VueJS","WinForms","WindowsPhone","WindowsStore","WinRT","WordPress","Wpf","WPF","XamarinAndroid","XamarinIOs","XamarinMac","Environments","XamarinForms","Other","NotSelected","PlanLevel","PlanLevelName","PlanProductStatus","ProductType","SystemTeams","InviteTeamModal","closeOnBackdropClick","close","DateFormatter","format","dateFormat","omitSuffix","initialState","lastViewedItemDate","Date","whatsNewItems","fetching","error","hasErrored","isFetching","filters","categories","Platform","Providers","RealUserMonitoring","CrashReporting","APM","Integrations","tags","banner","bannerImgSrc","bannerImgAlt","bannerLink","bannerEnabled","WhatsNewReducer","reducerWithInitialState","case","parsedItems","JSON","parse","reducerUpdate","relativePermalink","slice","date","toDate","category","toggled","tag","tagToRemove","whatsNewBanner","parsedBanner","BlogUrl","get","window","externalRequest","LAST_FETCHED_KEY","WHATS_NEW_ITEMS_KEY","LAST_VIEWED_KEY","fetchWhatsNewSaga","start","done","includeBaseName","fetchWhatsNew","fetchWhatsNewBannerSaga","fetchWhatsNewBanner","updateLastFetchedInLocalStorage","action","localStorage","setItem","stringify","payload","toISOString","updateLastViewedInLocalStorage","forwardWhatsNewItemsToStore","updateStoreFromLocalStorage","whatsNewItemsRaw","getItem","lastViewedDateRaw","whatNewItems","lastViewedDate","forwardWhatsNewBannerToStore","Saga","CONTACT_EMAIL","CONTACT_US_URL","STATUS_URL","SALES_EMAIL","SUPPORT_CLASS","location","indexOf"],"sourceRoot":""}