12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import {Fragment} from 'react';
- import type {RouteComponentProps} from 'react-router';
- import styled from '@emotion/styled';
- import FieldGroup from 'sentry/components/forms/fieldGroup';
- import FieldHelp from 'sentry/components/forms/fieldGroup/fieldHelp';
- import ExternalLink from 'sentry/components/links/externalLink';
- import Link from 'sentry/components/links/link';
- import TextCopyInput from 'sentry/components/textCopyInput';
- import {t, tct} from 'sentry/locale';
- import {space} from 'sentry/styles/space';
- import type {ProjectKey} from 'sentry/types/project';
- import getDynamicText from 'sentry/utils/getDynamicText';
- import recreateRoute from 'sentry/utils/recreateRoute';
- type Props = {
- projectKey: ProjectKey;
- } & Pick<RouteComponentProps<{}, {}>, 'routes' | 'location' | 'params'>;
- export function LoaderScript({projectKey, routes, params, location}: Props) {
- const loaderLink = getDynamicText({
- value: projectKey.dsn.cdn,
- fixed: '__JS_SDK_LOADER_URL__',
- });
- const editUrl = recreateRoute(`${projectKey.id}/`, {routes, params, location});
- return (
- <Fragment>
- <FieldGroup
- label={t('Loader Script')}
- help={tct(
- 'Copy this script into your website to setup your JavaScript SDK without any additional configuration. [link]',
- {
- link: (
- <ExternalLink href="https://docs.sentry.io/platforms/javascript/install/lazy-load-sentry/">
- {t(' What does the script provide?')}
- </ExternalLink>
- ),
- }
- )}
- inline={false}
- flexibleControlStateSize
- >
- <TextCopyInput aria-label={t('Loader Script')}>
- {`<script src='${loaderLink}' crossorigin="anonymous"></script>`}
- </TextCopyInput>
- <HelpFooter>
- {tct(
- 'You can [configureLink:configure] the Loader Script to enable/disable Performance, Replay, and more.',
- {
- configureLink: <Link to={editUrl} />,
- }
- )}
- </HelpFooter>
- </FieldGroup>
- </Fragment>
- );
- }
- const HelpFooter = styled(FieldHelp)`
- margin-top: ${space(1)};
- `;
|