@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
51 lines (48 loc) • 1.42 kB
text/typescript
import { PrismicError } from "./errors/PrismicError"
import { isRepositoryName } from "./isRepositoryName"
/**
* Returns the URL for a Prismic repository's Prismic Toolbar script. Use the
* URL to inject the script into your app.
*
* @example
*
* ```typescriptreact
* // In Next.js apps, use `next/script` in your `app/layout.tsx` file.
*
* import Script from "next/script";
* import * as prismic from "@prismicio/client";
*
* export default function RootLayout({
* children,
* }: {
* children: React.ReactNode,
* }) {
* const toolbarSrc = prismic.getToolbarSrc("my-repo");
*
* return (
* <html lang="en">
* <body>{children}</body>
* <Script src={toolbarSrc} />
* </html>
* );
* }
* ```
*
* @param repositoryName - The name of the Prismic repository. For example,
* `"my-repo"` if the repository URL is `my-repo.prismic.io`.
*
* @returns The URL for the given Prismic repository's Prismic Toolbar script.
*/
export const getToolbarSrc = <TRepositoryName extends string>(
repositoryName: TRepositoryName,
): `https://static.cdn.prismic.io/prismic.js?new=true&repo=${TRepositoryName}` => {
if (isRepositoryName(repositoryName)) {
return `https://static.cdn.prismic.io/prismic.js?new=true&repo=${repositoryName}` as const
} else {
throw new PrismicError(
`An invalid Prismic repository name was given: ${repositoryName}`,
undefined,
undefined,
)
}
}