@kentcdodds/tmp-remix-utils
Version:
This package contains simple utility functions to use with [Remix.run](https://remix.run).
40 lines (39 loc) • 1.18 kB
JavaScript
import * as React from "react";
import { useLocation, useMatches } from "@remix-run/react";
export function ExternalScripts() {
let location = useLocation();
let scripts = useMatches().flatMap((match, index, matches) => {
let scripts = match.handle?.scripts;
if (typeof scripts !== "function") return [];
let result = scripts({
id: match.id,
data: match.data,
params: match.params,
location,
parentsData: matches.slice(0, index).map((match) => match.data),
matches,
});
if (Array.isArray(result)) return result;
return [];
});
return React.createElement(
React.Fragment,
null,
scripts.map((props) => {
let rel = props.noModule ? "modulepreload" : "preload";
let as = !props.noModule ? "script" : undefined;
return React.createElement("link", {
key: props.src,
rel: rel,
href: props.src,
as: as,
crossOrigin: props.crossOrigin,
integrity: props.integrity,
referrerPolicy: props.referrerPolicy,
});
}),
scripts.map((props) => {
return React.createElement("script", { ...props, key: props.src });
})
);
}