New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@remix-run/react

Package Overview
Dependencies
Maintainers
2
Versions
1050
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@remix-run/react - npm Package Compare versions

Comparing version 0.21.0 to 1.0.0-rc.1

browser/scroll-restoration.js

2

_virtual/_rollupPluginBabelHelpers.js
/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -12,3 +12,3 @@ * Copyright (c) Remix Software Inc.

import { createBrowserHistory } from 'history';
import React from 'react';
import React__default from 'react';
import { RemixEntry } from './components.js';

@@ -22,3 +22,3 @@

function RemixBrowser(_props) {
let historyRef = React.useRef();
let historyRef = React__default.useRef();

@@ -32,7 +32,7 @@ if (historyRef.current == null) {

let history = historyRef.current;
let [state, dispatch] = React.useReducer((_, update) => update, {
let [state, dispatch] = React__default.useReducer((_, update) => update, {
action: history.action,
location: history.location
});
React.useLayoutEffect(() => history.listen(dispatch), [history]);
React__default.useLayoutEffect(() => history.listen(dispatch), [history]);
let entryContext = window.__remixContext;

@@ -46,3 +46,3 @@ entryContext.manifest = window.__remixManifest;

entryContext.componentDidCatchEmulator.trackCatchBoundaries = false;
return /*#__PURE__*/React.createElement(RemixEntry, {
return /*#__PURE__*/React__default.createElement(RemixEntry, {
context: entryContext,

@@ -49,0 +49,0 @@ action: state.action,

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -12,3 +12,3 @@ * Copyright (c) Remix Software Inc.

import { extends as _extends } from './_virtual/_rollupPluginBabelHelpers.js';
import React from 'react';
import React__default from 'react';
import { useHref, NavLink as NavLink$1, Link as Link$1, useLocation, useResolvedPath, useNavigate, Router, useRoutes } from 'react-router-dom';

@@ -23,6 +23,8 @@ import { RemixErrorBoundary, RemixRootDefaultErrorBoundary, RemixCatchBoundary, RemixRootDefaultCatchBoundary } from './errorBoundaries.js';

const RemixEntryContext = /*#__PURE__*/React.createContext(undefined);
// RemixEntry
const RemixEntryContext = /*#__PURE__*/React__default.createContext(undefined);
function useRemixEntryContext() {
let context = React.useContext(RemixEntryContext);
let context = React__default.useContext(RemixEntryContext);
invariant(context, "You must render this element inside a <Remix> element");

@@ -47,5 +49,5 @@ return context;

} = entryContext;
let clientRoutes = React.useMemo(() => createClientRoutes(manifest.routes, routeModules, RemixRoute), [manifest, routeModules]);
let [clientState, setClientState] = React.useState(entryComponentDidCatchEmulator);
let [transitionManager] = React.useState(() => {
let clientRoutes = React__default.useMemo(() => createClientRoutes(manifest.routes, routeModules, RemixRoute), [manifest, routeModules]);
let [clientState, setClientState] = React__default.useState(entryComponentDidCatchEmulator);
let [transitionManager] = React__default.useState(() => {
return createTransitionManager({

@@ -74,3 +76,3 @@ routes: clientRoutes,

let navigator = React.useMemo(() => {
let navigator = React__default.useMemo(() => {
let push = (to, state) => {

@@ -91,3 +93,3 @@ return transitionManager.getState().transition.state !== "idle" ? _navigator.replace(to, state) : _navigator.push(to, state);

React.useEffect(() => {
React__default.useEffect(() => {
let {

@@ -109,3 +111,3 @@ location

let ssrCatchBeforeRoutesRendered = clientState.catch && clientState.catchBoundaryRouteId === null ? clientState.catch : undefined;
return /*#__PURE__*/React.createElement(RemixEntryContext.Provider, {
return /*#__PURE__*/React__default.createElement(RemixEntryContext.Provider, {
value: {

@@ -122,11 +124,11 @@ matches,

}
}, /*#__PURE__*/React.createElement(RemixErrorBoundary, {
}, /*#__PURE__*/React__default.createElement(RemixErrorBoundary, {
location: location,
component: RemixRootDefaultErrorBoundary,
error: ssrErrorBeforeRoutesRendered
}, /*#__PURE__*/React.createElement(RemixCatchBoundary, {
}, /*#__PURE__*/React__default.createElement(RemixCatchBoundary, {
location: location,
component: RemixRootDefaultCatchBoundary,
catch: ssrCatchBeforeRoutesRendered
}, /*#__PURE__*/React.createElement(Router, {
}, /*#__PURE__*/React__default.createElement(Router, {
navigationType: action,

@@ -136,3 +138,3 @@ location: location,

static: staticProp
}, /*#__PURE__*/React.createElement(Routes, null)))));
}, /*#__PURE__*/React__default.createElement(Routes, null)))));
}

@@ -159,6 +161,6 @@

const RemixRouteContext = /*#__PURE__*/React.createContext(undefined);
const RemixRouteContext = /*#__PURE__*/React__default.createContext(undefined);
function useRemixRouteContext() {
let context = React.useContext(RemixRouteContext);
let context = React__default.useContext(RemixRouteContext);
invariant(context, "You must render this element in a remix route element");

@@ -189,3 +191,3 @@ return context;

} = routeModules[id];
let element = Component ? /*#__PURE__*/React.createElement(Component, null) : /*#__PURE__*/React.createElement(DefaultRouteComponent, {
let element = Component ? /*#__PURE__*/React__default.createElement(Component, null) : /*#__PURE__*/React__default.createElement(DefaultRouteComponent, {
id: id

@@ -221,3 +223,3 @@ });

};
element = /*#__PURE__*/React.createElement(RemixCatchBoundary, {
element = /*#__PURE__*/React__default.createElement(RemixCatchBoundary, {
location: location,

@@ -265,3 +267,3 @@ component: CatchBoundary,

};
element = /*#__PURE__*/React.createElement(RemixErrorBoundary, {
element = /*#__PURE__*/React__default.createElement(RemixErrorBoundary, {
location: location,

@@ -272,6 +274,6 @@ component: ErrorBoundary,

} // It's important for the route context to be above the error boundary so that
// a call to `useRouteData` doesn't accidentally get the parents route's data.
// a call to `useLoaderData` doesn't accidentally get the parents route's data.
return /*#__PURE__*/React.createElement(RemixRouteContext.Provider, {
return /*#__PURE__*/React__default.createElement(RemixRouteContext.Provider, {
value: context

@@ -291,4 +293,4 @@ }, element);

function usePrefetchBehavior(prefetch, theirElementProps) {
let [maybePrefetch, setMaybePrefetch] = React.useState(false);
let [shouldPrefetch, setShouldPrefetch] = React.useState(false);
let [maybePrefetch, setMaybePrefetch] = React__default.useState(false);
let [shouldPrefetch, setShouldPrefetch] = React__default.useState(false);
let {

@@ -301,3 +303,3 @@ onFocus,

} = theirElementProps;
React.useEffect(() => {
React__default.useEffect(() => {
if (prefetch === "render") {

@@ -320,3 +322,3 @@ setShouldPrefetch(true);

React.useEffect(() => {
React__default.useEffect(() => {
if (maybePrefetch) {

@@ -340,3 +342,3 @@ let id = setTimeout(() => {

let NavLink = /*#__PURE__*/React.forwardRef(({
let NavLink = /*#__PURE__*/React__default.forwardRef(({
to,

@@ -348,10 +350,10 @@ prefetch = "none",

let [shouldPrefetch, prefetchHandlers] = usePrefetchBehavior(prefetch, props);
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(NavLink$1, _extends({
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(NavLink$1, _extends({
ref: forwardedRef,
to: to
}, prefetchHandlers, props)), shouldPrefetch && /*#__PURE__*/React.createElement(PrefetchPageLinks, {
}, prefetchHandlers, props)), shouldPrefetch && /*#__PURE__*/React__default.createElement(PrefetchPageLinks, {
page: href
}));
});
let Link = /*#__PURE__*/React.forwardRef(({
let Link = /*#__PURE__*/React__default.forwardRef(({
to,

@@ -363,6 +365,6 @@ prefetch = "none",

let [shouldPrefetch, prefetchHandlers] = usePrefetchBehavior(prefetch, props);
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Link$1, _extends({
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Link$1, _extends({
ref: forwardedRef,
to: to
}, prefetchHandlers, props)), shouldPrefetch && /*#__PURE__*/React.createElement(PrefetchPageLinks, {
}, prefetchHandlers, props)), shouldPrefetch && /*#__PURE__*/React__default.createElement(PrefetchPageLinks, {
page: href

@@ -390,6 +392,6 @@ }));

} = useRemixEntryContext();
let links = React.useMemo(() => getLinksForMatches(matches, routeModules, manifest), [matches, routeModules, manifest]);
return /*#__PURE__*/React.createElement(React.Fragment, null, links.map(link => isPageLinkDescriptor(link) ? /*#__PURE__*/React.createElement(PrefetchPageLinks, _extends({
let links = React__default.useMemo(() => getLinksForMatches(matches, routeModules, manifest), [matches, routeModules, manifest]);
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, links.map(link => isPageLinkDescriptor(link) ? /*#__PURE__*/React__default.createElement(PrefetchPageLinks, _extends({
key: link.page
}, link)) : /*#__PURE__*/React.createElement("link", _extends({
}, link)) : /*#__PURE__*/React__default.createElement("link", _extends({
key: link.rel + link.href

@@ -405,3 +407,3 @@ }, link))));

} = useRemixEntryContext();
let matches = React.useMemo(() => matchClientRoutes(clientRoutes, page), [clientRoutes, page]);
let matches = React__default.useMemo(() => matchClientRoutes(clientRoutes, page), [clientRoutes, page]);

@@ -413,3 +415,3 @@ if (!matches) {

return /*#__PURE__*/React.createElement(PrefetchPageLinksImpl, _extends({
return /*#__PURE__*/React__default.createElement(PrefetchPageLinksImpl, _extends({
page: page,

@@ -424,4 +426,4 @@ matches: matches

} = useRemixEntryContext();
let [styleLinks, setStyleLinks] = React.useState([]);
React.useEffect(() => {
let [styleLinks, setStyleLinks] = React__default.useState([]);
React__default.useEffect(() => {
let interrupted = false;

@@ -448,10 +450,10 @@ getStylesheetPrefetchLinks(matches, routeModules).then(links => {

} = useRemixEntryContext();
let newMatchesForData = React.useMemo(() => getNewMatchesForLinks(page, nextMatches, matches, location, "data"), [page, nextMatches, matches, location]);
let newMatchesForAssets = React.useMemo(() => getNewMatchesForLinks(page, nextMatches, matches, location, "assets"), [page, nextMatches, matches, location]);
let dataHrefs = React.useMemo(() => getDataLinkHrefs(page, newMatchesForData, manifest), [newMatchesForData, page, manifest]);
let moduleHrefs = React.useMemo(() => getModuleLinkHrefs(newMatchesForAssets, manifest), [newMatchesForAssets, manifest]); // needs to be a hook with async behavior because we need the modules, not
let newMatchesForData = React__default.useMemo(() => getNewMatchesForLinks(page, nextMatches, matches, location, "data"), [page, nextMatches, matches, location]);
let newMatchesForAssets = React__default.useMemo(() => getNewMatchesForLinks(page, nextMatches, matches, location, "assets"), [page, nextMatches, matches, location]);
let dataHrefs = React__default.useMemo(() => getDataLinkHrefs(page, newMatchesForData, manifest), [newMatchesForData, page, manifest]);
let moduleHrefs = React__default.useMemo(() => getModuleLinkHrefs(newMatchesForAssets, manifest), [newMatchesForAssets, manifest]); // needs to be a hook with async behavior because we need the modules, not
// just the manifest like the other links in here.
let styleLinks = usePrefetchedStylesheets(newMatchesForAssets);
return /*#__PURE__*/React.createElement(React.Fragment, null, dataHrefs.map(href => /*#__PURE__*/React.createElement("link", _extends({
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, dataHrefs.map(href => /*#__PURE__*/React__default.createElement("link", _extends({
key: href,

@@ -461,3 +463,3 @@ rel: "prefetch",

href: href
}, linkProps))), moduleHrefs.map(href => /*#__PURE__*/React.createElement("link", _extends({
}, linkProps))), moduleHrefs.map(href => /*#__PURE__*/React__default.createElement("link", _extends({
key: href,

@@ -470,3 +472,3 @@ rel: "modulepreload",

// already with their own props
React.createElement("link", _extends({
React__default.createElement("link", _extends({
key: link.href

@@ -509,3 +511,3 @@ }, link))));

return /*#__PURE__*/React.createElement(React.Fragment, null, Object.keys(meta).map(name => {
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, Object.keys(meta).map(name => {
let value = meta[name]; // Open Graph tags use the `property` attribute, while other meta tags

@@ -515,17 +517,17 @@ // use `name`. See https://ogp.me/

let isOpenGraphTag = name.startsWith("og:");
return name === "title" ? /*#__PURE__*/React.createElement("title", {
return name === "title" ? /*#__PURE__*/React__default.createElement("title", {
key: "title"
}, meta[name]) : Array.isArray(value) ? value.map(content => isOpenGraphTag ? /*#__PURE__*/React.createElement("meta", {
}, meta[name]) : Array.isArray(value) ? value.map(content => isOpenGraphTag ? /*#__PURE__*/React__default.createElement("meta", {
key: name + content,
property: name,
content: content
}) : /*#__PURE__*/React.createElement("meta", {
}) : /*#__PURE__*/React__default.createElement("meta", {
key: name + content,
name: name,
content: content
})) : isOpenGraphTag ? /*#__PURE__*/React.createElement("meta", {
})) : isOpenGraphTag ? /*#__PURE__*/React__default.createElement("meta", {
key: name,
property: name,
content: value
}) : /*#__PURE__*/React.createElement("meta", {
}) : /*#__PURE__*/React__default.createElement("meta", {
key: name,

@@ -554,15 +556,15 @@ name: name,

} = useRemixEntryContext();
let initialScripts = React.useMemo(() => {
let initialScripts = React__default.useMemo(() => {
let contextScript = serverHandoffString ? `window.__remixContext = ${serverHandoffString};` : "";
let routeModulesScript = `${matches.map((match, index) => `import * as route${index} from ${JSON.stringify(manifest.routes[match.route.id].module)};`).join("\n")}
window.__remixRouteModules = {${matches.map((match, index) => `${JSON.stringify(match.route.id)}:route${index}`).join(",")}};`;
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("script", _extends({}, props, {
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("script", _extends({}, props, {
suppressHydrationWarning: true,
dangerouslySetInnerHTML: createHtml(contextScript)
})), /*#__PURE__*/React.createElement("script", _extends({}, props, {
})), /*#__PURE__*/React__default.createElement("script", _extends({}, props, {
src: manifest.url
})), /*#__PURE__*/React.createElement("script", _extends({}, props, {
})), /*#__PURE__*/React__default.createElement("script", _extends({}, props, {
dangerouslySetInnerHTML: createHtml(routeModulesScript),
type: "module"
})), /*#__PURE__*/React.createElement("script", _extends({}, props, {
})), /*#__PURE__*/React__default.createElement("script", _extends({}, props, {
src: manifest.entry.module,

@@ -576,3 +578,3 @@ type: "module"

let nextMatches = React.useMemo(() => {
let nextMatches = React__default.useMemo(() => {
if (pendingLocation) {

@@ -592,3 +594,3 @@ // FIXME: can probably use transitionManager `nextMatches`

let preloads = manifest.entry.imports.concat(routePreloads);
return /*#__PURE__*/React.createElement(React.Fragment, null, dedupe(preloads).map(path => /*#__PURE__*/React.createElement("link", {
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, dedupe(preloads).map(path => /*#__PURE__*/React__default.createElement("link", {
key: path,

@@ -611,8 +613,8 @@ rel: "modulepreload",

*/
let Form = /*#__PURE__*/React.forwardRef((props, ref) => {
return /*#__PURE__*/React.createElement(FormImpl, _extends({}, props, {
let Form = /*#__PURE__*/React__default.forwardRef((props, ref) => {
return /*#__PURE__*/React__default.createElement(FormImpl, _extends({}, props, {
ref: ref
}));
});
let FormImpl = /*#__PURE__*/React.forwardRef(({
let FormImpl = /*#__PURE__*/React__default.forwardRef(({
reloadDocument = false,

@@ -630,4 +632,40 @@ replace = false,

let formAction = useFormAction(action, formMethod);
return /*#__PURE__*/React.createElement("form", _extends({
ref: forwardedRef,
let formRef = React__default.useRef();
let ref = useComposedRefs(forwardedRef, formRef); // When calling `submit` on the form element itself, we don't get data from
// the button that submitted the event. For example:
//
// <Form>
// <button name="something" value="whatever">Submit</button>
// </Form>
//
// formData.get("something") should be "whatever", but we don't get that
// unless we call submit on the clicked button itself.
//
// To figure out which button triggered the submit, we'll attach a click
// event listener to the form. The click event is always triggered before
// the submit event (even when submitting via keyboard when focused on
// another form field, yeeeeet) so we should have access to that button's
// data for use in the submit handler.
let clickedButtonRef = React__default.useRef();
React__default.useEffect(() => {
let form = formRef.current;
if (!form) return;
function handleClick(event) {
if (!(event.target instanceof HTMLElement)) return;
let submitButton = event.target.closest("button,input[type=submit]");
if (submitButton && submitButton.type === "submit") {
clickedButtonRef.current = submitButton;
}
}
form.addEventListener("click", handleClick);
return () => {
form && form.removeEventListener("click", handleClick);
};
}, []);
return /*#__PURE__*/React__default.createElement("form", _extends({
ref: ref,
method: formMethod,

@@ -640,6 +678,7 @@ action: formAction,

event.preventDefault();
submit(event.currentTarget, {
submit(clickedButtonRef.current || event.currentTarget, {
method,
replace
});
clickedButtonRef.current = null;
}

@@ -686,3 +725,3 @@ }, props));

} = useRemixEntryContext();
return React.useCallback((target, options = {}) => {
return React__default.useCallback((target, options = {}) => {
let method;

@@ -818,3 +857,3 @@ let action;

function useBeforeUnload(callback) {
React.useEffect(() => {
React__default.useEffect(() => {
window.addEventListener("beforeunload", callback);

@@ -852,7 +891,2 @@ return () => {

}
/**
* @deprecated Use `useLoaderData`
*/
let useRouteData = useLoaderData;
function useActionData() {

@@ -878,5 +912,5 @@ let {

function createFetcherForm(fetchKey) {
return /*#__PURE__*/React.forwardRef((props, ref) => {
return /*#__PURE__*/React__default.forwardRef((props, ref) => {
// TODO: make ANOTHER form w/o a fetchKey prop
return /*#__PURE__*/React.createElement(FormImpl, _extends({}, props, {
return /*#__PURE__*/React__default.createElement(FormImpl, _extends({}, props, {
ref: ref,

@@ -898,5 +932,5 @@ fetchKey: fetchKey

} = useRemixEntryContext();
let [key] = React.useState(() => String(++fetcherId));
let [Form] = React.useState(() => createFetcherForm(key));
let [load] = React.useState(() => href => {
let [key] = React__default.useState(() => String(++fetcherId));
let [Form] = React__default.useState(() => createFetcherForm(key));
let [load] = React__default.useState(() => href => {
transitionManager.send({

@@ -910,3 +944,3 @@ type: "fetcher",

let fetcher = transitionManager.getFetcher(key);
let fetcherWithComponents = React.useMemo(() => ({
let fetcherWithComponents = React__default.useMemo(() => ({
Form,

@@ -917,3 +951,3 @@ submit,

}), [fetcher, Form, submit, load]);
React.useEffect(() => {
React__default.useEffect(() => {
// Is this busted when the React team gets real weird and calls effects

@@ -940,34 +974,2 @@ // twice on mount? We really just need to garbage collect here when this

}
/**
* @deprecated replaced by `useTransition().submission`
*/
function usePendingFormSubmit() {
let {
transitionManager
} = useRemixEntryContext();
let {
submission
} = transitionManager.getState().transition;
if (submission) {
return { ...submission,
data: submission.formData
};
}
}
/**
* Returns the next location if a location change is pending. This is useful
* for showing loading indicators during route transitions from `<Link>`
* clicks.
*
* @deprecated use `useTransition().location`
*/
function usePendingLocation() {
let {
transitionManager
} = useRemixEntryContext();
return transitionManager.getState().transition.location;
}
function LiveReload({

@@ -977,3 +979,3 @@ port = 8002

if (process.env.NODE_ENV !== "development") return null;
return /*#__PURE__*/React.createElement("script", {
return /*#__PURE__*/React__default.createElement("script", {
dangerouslySetInnerHTML: {

@@ -1001,2 +1003,19 @@ __html: `

export { Form, FormImpl, Link, Links, LiveReload, Meta, NavLink, PrefetchPageLinks, RemixEntry, RemixRoute, Scripts, composeEventHandlers, useActionData, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLoaderData, useMatches, usePendingFormSubmit, usePendingLocation, useRouteData, useSubmit, useSubmitImpl, useTransition };
function useComposedRefs(...refs) {
return React__default.useCallback(node => {
for (let ref of refs) {
if (ref == null) continue;
if (typeof ref === "function") {
ref(node);
} else {
try {
ref.current = node;
} catch (_) {}
}
} // eslint-disable-next-line react-hooks/exhaustive-deps
}, refs);
}
export { Form, FormImpl, Link, Links, LiveReload, Meta, NavLink, PrefetchPageLinks, RemixEntry, RemixRoute, Scripts, composeEventHandlers, useActionData, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLoaderData, useMatches, useSubmit, useSubmitImpl, useTransition };
/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -11,5 +11,5 @@ * Copyright (c) Remix Software Inc.

*/
import React, { useContext } from 'react';
import React__default, { useContext } from 'react';
class RemixErrorBoundary extends React.Component {
class RemixErrorBoundary extends React__default.Component {
constructor(props) {

@@ -51,3 +51,3 @@ super(props);

if (this.state.error) {
return /*#__PURE__*/React.createElement(this.props.component, {
return /*#__PURE__*/React__default.createElement(this.props.component, {
error: this.state.error

@@ -69,7 +69,7 @@ });

console.error(error);
return /*#__PURE__*/React.createElement("html", {
return /*#__PURE__*/React__default.createElement("html", {
lang: "en"
}, /*#__PURE__*/React.createElement("head", null, /*#__PURE__*/React.createElement("meta", {
}, /*#__PURE__*/React__default.createElement("head", null, /*#__PURE__*/React__default.createElement("meta", {
charSet: "utf-8"
}), /*#__PURE__*/React.createElement("title", null, "Uncaught Exception!")), /*#__PURE__*/React.createElement("body", null, /*#__PURE__*/React.createElement("main", {
}), /*#__PURE__*/React__default.createElement("title", null, "Uncaught Exception!")), /*#__PURE__*/React__default.createElement("body", null, /*#__PURE__*/React__default.createElement("main", {
style: {

@@ -79,3 +79,3 @@ border: "solid 2px hsl(10, 50%, 50%)",

}
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h1", null, "Uncaught Exception!"), /*#__PURE__*/React.createElement("p", null, "If you are not the developer, please click back in your browser and try again."), /*#__PURE__*/React.createElement("div", {
}, /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("h1", null, "Uncaught Exception!"), /*#__PURE__*/React__default.createElement("p", null, "If you are not the developer, please click back in your browser and try again."), /*#__PURE__*/React__default.createElement("div", {
style: {

@@ -87,3 +87,3 @@ fontFamily: `"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace`,

}
}, error.message), /*#__PURE__*/React.createElement("p", null, "There was an uncaught exception in your application. Check the browser console and/or server console to inspect the error."), /*#__PURE__*/React.createElement("p", null, "If you are the developer, consider adding your own error boundary so users don't see this page when unexpected errors happen in production!"), /*#__PURE__*/React.createElement("p", null, "Read more about", " ", /*#__PURE__*/React.createElement("a", {
}, error.message), /*#__PURE__*/React__default.createElement("p", null, "There was an uncaught exception in your application. Check the browser console and/or server console to inspect the error."), /*#__PURE__*/React__default.createElement("p", null, "If you are the developer, consider adding your own error boundary so users don't see this page when unexpected errors happen in production!"), /*#__PURE__*/React__default.createElement("p", null, "Read more about", " ", /*#__PURE__*/React__default.createElement("a", {
target: "_blank",

@@ -94,3 +94,3 @@ rel: "noreferrer",

}
let RemixCatchContext = /*#__PURE__*/React.createContext(undefined);
let RemixCatchContext = /*#__PURE__*/React__default.createContext(undefined);
function useCatch() {

@@ -105,8 +105,8 @@ return useContext(RemixCatchContext);

if (catchVal) {
return /*#__PURE__*/React.createElement(RemixCatchContext.Provider, {
return /*#__PURE__*/React__default.createElement(RemixCatchContext.Provider, {
value: catchVal
}, /*#__PURE__*/React.createElement(Component, null));
}, /*#__PURE__*/React__default.createElement(Component, null));
}
return /*#__PURE__*/React.createElement(React.Fragment, null, children);
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, children);
}

@@ -118,7 +118,7 @@ /**

function RemixRootDefaultCatchBoundary() {
return /*#__PURE__*/React.createElement("html", {
return /*#__PURE__*/React__default.createElement("html", {
lang: "en"
}, /*#__PURE__*/React.createElement("head", null, /*#__PURE__*/React.createElement("meta", {
}, /*#__PURE__*/React__default.createElement("head", null, /*#__PURE__*/React__default.createElement("meta", {
charSet: "utf-8"
}), /*#__PURE__*/React.createElement("title", null, "Unhandled Thrown Response!")), /*#__PURE__*/React.createElement("body", null, /*#__PURE__*/React.createElement("main", {
}), /*#__PURE__*/React__default.createElement("title", null, "Unhandled Thrown Response!")), /*#__PURE__*/React__default.createElement("body", null, /*#__PURE__*/React__default.createElement("main", {
style: {

@@ -128,3 +128,3 @@ border: "solid 2px hsl(10, 50%, 50%)",

}
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h1", null, "Unhandled Thrown Response!"), /*#__PURE__*/React.createElement("p", null, "If you are not the developer, please click back in your browser and try again."), /*#__PURE__*/React.createElement("p", null, "There was an unhandled thrown response in your application."), /*#__PURE__*/React.createElement("p", null, "If you are the developer, consider adding your own catch boundary so users don't see this page when unhandled thrown response happen in production!"), /*#__PURE__*/React.createElement("p", null, "Read more about", " ", /*#__PURE__*/React.createElement("a", {
}, /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("h1", null, "Unhandled Thrown Response!"), /*#__PURE__*/React__default.createElement("p", null, "If you are not the developer, please click back in your browser and try again."), /*#__PURE__*/React__default.createElement("p", null, "There was an unhandled thrown response in your application."), /*#__PURE__*/React__default.createElement("p", null, "If you are the developer, consider adding your own catch boundary so users don't see this page when unhandled thrown response happen in production!"), /*#__PURE__*/React__default.createElement("p", null, "Read more about", " ", /*#__PURE__*/React__default.createElement("a", {
target: "_blank",

@@ -131,0 +131,0 @@ rel: "noreferrer" // TODO: Update link to docs

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -13,4 +13,5 @@ * Copyright (c) Remix Software Inc.

export { Outlet } from 'react-router-dom';
export { Form, Link, Links, LiveReload, Meta, NavLink, PrefetchPageLinks, Scripts, useActionData, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLoaderData, useMatches, usePendingFormSubmit, usePendingLocation, useRouteData, useSubmit, useTransition } from './components.js';
export { Form, Link, Links, LiveReload, Meta, NavLink, PrefetchPageLinks, Scripts, useActionData, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLoaderData, useMatches, useSubmit, useTransition } from './components.js';
export { useCatch } from './errorBoundaries.js';
export { RemixServer } from './server.js';
export { ScrollRestoration } from './scroll-restoration.js';
/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -11,3 +11,3 @@ * Copyright (c) Remix Software Inc.

*/
import React from 'react';
import React__default from 'react';
import { loadRouteModule } from './routeModules.js';

@@ -22,3 +22,3 @@ import { fetchData, isCatchResponse, extractData, isRedirectResponse } from './data.js';

caseSensitive: !!entryRoute.caseSensitive,
element: /*#__PURE__*/React.createElement(Component, {
element: /*#__PURE__*/React__default.createElement(Component, {
id: entryRoute.id

@@ -25,0 +25,0 @@ }),

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -12,3 +12,3 @@ * Copyright (c) Remix Software Inc.

import { Action, createPath } from 'history';
import React from 'react';
import React__default from 'react';
import { RemixEntry } from './components.js';

@@ -66,3 +66,3 @@

};
return /*#__PURE__*/React.createElement(RemixEntry, {
return /*#__PURE__*/React__default.createElement(RemixEntry, {
context: context,

@@ -69,0 +69,0 @@ action: Action.Pop,

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

@@ -12,2 +12,3 @@ import type { Action, Location } from "history";

import type { Transition, Fetcher } from "./transition";
export { ScrollRestoration } from "./scroll-restoration";
export declare function RemixEntry({ context: entryContext, action, location: historyLocation, navigator: _navigator, static: staticProp }: {

@@ -184,6 +185,2 @@ context: EntryContext;

export declare function useLoaderData<T = AppData>(): T;
/**
* @deprecated Use `useLoaderData`
*/
export declare let useRouteData: typeof useLoaderData;
export declare function useActionData<T = AppData>(): T | undefined;

@@ -207,31 +204,4 @@ export declare function useTransition(): Transition;

export declare function useFetchers(): Fetcher[];
/**
* @deprecated replaced by `useTransition().submission`
*/
export declare function usePendingFormSubmit(): {
data: FormData;
method: "POST" | "PUT" | "PATCH" | "DELETE";
action: string;
formData: FormData;
encType: string;
key: string;
} | {
data: FormData;
method: "GET";
action: string;
formData: FormData;
encType: string;
key: string;
} | undefined;
/**
* Returns the next location if a location change is pending. This is useful
* for showing loading indicators during route transitions from `<Link>`
* clicks.
*
* @deprecated use `useTransition().location`
*/
export declare function usePendingLocation(): Location | undefined;
export declare function LiveReload({ port }: {
port?: number;
}): JSX.Element | null;
export {};
/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -30,2 +30,4 @@ * Copyright (c) Remix Software Inc.

// RemixEntry
const RemixEntryContext = /*#__PURE__*/React__default["default"].createContext(undefined);

@@ -269,3 +271,3 @@

} // It's important for the route context to be above the error boundary so that
// a call to `useRouteData` doesn't accidentally get the parents route's data.
// a call to `useLoaderData` doesn't accidentally get the parents route's data.

@@ -608,4 +610,40 @@

let formAction = useFormAction(action, formMethod);
let formRef = React__default["default"].useRef();
let ref = useComposedRefs(forwardedRef, formRef); // When calling `submit` on the form element itself, we don't get data from
// the button that submitted the event. For example:
//
// <Form>
// <button name="something" value="whatever">Submit</button>
// </Form>
//
// formData.get("something") should be "whatever", but we don't get that
// unless we call submit on the clicked button itself.
//
// To figure out which button triggered the submit, we'll attach a click
// event listener to the form. The click event is always triggered before
// the submit event (even when submitting via keyboard when focused on
// another form field, yeeeeet) so we should have access to that button's
// data for use in the submit handler.
let clickedButtonRef = React__default["default"].useRef();
React__default["default"].useEffect(() => {
let form = formRef.current;
if (!form) return;
function handleClick(event) {
if (!(event.target instanceof HTMLElement)) return;
let submitButton = event.target.closest("button,input[type=submit]");
if (submitButton && submitButton.type === "submit") {
clickedButtonRef.current = submitButton;
}
}
form.addEventListener("click", handleClick);
return () => {
form && form.removeEventListener("click", handleClick);
};
}, []);
return /*#__PURE__*/React__default["default"].createElement("form", _rollupPluginBabelHelpers["extends"]({
ref: forwardedRef,
ref: ref,
method: formMethod,

@@ -618,6 +656,7 @@ action: formAction,

event.preventDefault();
submit(event.currentTarget, {
submit(clickedButtonRef.current || event.currentTarget, {
method,
replace
});
clickedButtonRef.current = null;
}

@@ -828,7 +867,2 @@ }, props));

}
/**
* @deprecated Use `useLoaderData`
*/
let useRouteData = useLoaderData;
function useActionData() {

@@ -912,34 +946,2 @@ let {

}
/**
* @deprecated replaced by `useTransition().submission`
*/
function usePendingFormSubmit() {
let {
transitionManager
} = useRemixEntryContext();
let {
submission
} = transitionManager.getState().transition;
if (submission) {
return { ...submission,
data: submission.formData
};
}
}
/**
* Returns the next location if a location change is pending. This is useful
* for showing loading indicators during route transitions from `<Link>`
* clicks.
*
* @deprecated use `useTransition().location`
*/
function usePendingLocation() {
let {
transitionManager
} = useRemixEntryContext();
return transitionManager.getState().transition.location;
}
function LiveReload({

@@ -972,2 +974,19 @@ port = 8002

function useComposedRefs(...refs) {
return React__default["default"].useCallback(node => {
for (let ref of refs) {
if (ref == null) continue;
if (typeof ref === "function") {
ref(node);
} else {
try {
ref.current = node;
} catch (_) {}
}
} // eslint-disable-next-line react-hooks/exhaustive-deps
}, refs);
}
exports.Form = Form;

@@ -992,7 +1011,4 @@ exports.FormImpl = FormImpl;

exports.useMatches = useMatches;
exports.usePendingFormSubmit = usePendingFormSubmit;
exports.usePendingLocation = usePendingLocation;
exports.useRouteData = useRouteData;
exports.useSubmit = useSubmit;
exports.useSubmitImpl = useSubmitImpl;
exports.useTransition = useTransition;
/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

@@ -5,8 +5,9 @@ export type { RemixBrowserProps } from "./browser";

export type { FormProps, SubmitOptions, SubmitFunction, RemixNavLinkProps as NavLinkProps, RemixLinkProps as LinkProps } from "./components";
export { Meta, Links, Scripts, Link, NavLink, Form, PrefetchPageLinks, LiveReload, useFormAction, useSubmit, useTransition, useFetcher, useFetchers, useLoaderData, useActionData, useBeforeUnload, useMatches, usePendingLocation, usePendingFormSubmit, useRouteData } from "./components";
export { Meta, Links, Scripts, Link, NavLink, Form, PrefetchPageLinks, ScrollRestoration, LiveReload, useFormAction, useSubmit, useTransition, useFetcher, useFetchers, useLoaderData, useActionData, useBeforeUnload, useMatches } from "./components";
export type { FormMethod, FormEncType } from "./data";
export type { ThrownResponse } from "./errors";
export { useCatch } from "./errorBoundaries";
export type { ShouldReloadFunction } from "./routeModules";
export type { HtmlLinkDescriptor } from "./links";
export type { ShouldReloadFunction, HtmlMetaDescriptor } from "./routeModules";
export type { RemixServerProps } from "./server";
export { RemixServer } from "./server";
/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -20,2 +20,3 @@ * Copyright (c) Remix Software Inc.

var server = require('./server.js');
var scrollRestoration = require('./scroll-restoration.js');

@@ -44,5 +45,2 @@

exports.useMatches = components.useMatches;
exports.usePendingFormSubmit = components.usePendingFormSubmit;
exports.usePendingLocation = components.usePendingLocation;
exports.useRouteData = components.useRouteData;
exports.useSubmit = components.useSubmit;

@@ -52,1 +50,2 @@ exports.useTransition = components.useTransition;

exports.RemixServer = server.RemixServer;
exports.ScrollRestoration = scrollRestoration.ScrollRestoration;
/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -11,2 +11,2 @@ * Copyright (c) Remix Software Inc.

*/
export { Form, Link, Links, LiveReload, Meta, NavLink, Outlet, PrefetchPageLinks, RemixBrowser, RemixServer, Scripts, useActionData, useBeforeUnload, useCatch, useFetcher, useFetchers, useFormAction, useLoaderData, useMatches, usePendingFormSubmit, usePendingLocation, useRouteData, useSubmit, useTransition } from '@remix-run/react';
export { Form, Link, Links, LiveReload, Meta, NavLink, Outlet, PrefetchPageLinks, RemixBrowser, RemixServer, Scripts, ScrollRestoration, useActionData, useBeforeUnload, useCatch, useFetcher, useFetchers, useFormAction, useLoaderData, useMatches, useSubmit, useTransition } from '@remix-run/react';
export type { RemixBrowserProps, FormProps, SubmitOptions, SubmitFunction, FormMethod, FormEncType, RemixServerProps, ShouldReloadFunction, ThrownResponse, LinkProps, NavLinkProps } from "@remix-run/react";
export { RemixBrowser, Meta, Links, Scripts, Link, NavLink, Outlet, Form, PrefetchPageLinks, LiveReload, useFormAction, useSubmit, useTransition, useFetcher, useFetchers, useCatch, useLoaderData, useActionData, useBeforeUnload, useMatches, RemixServer, usePendingLocation, usePendingFormSubmit, useRouteData } from "@remix-run/react";
export { RemixBrowser, Meta, Links, Scripts, Link, NavLink, Outlet, Form, PrefetchPageLinks, ScrollRestoration, LiveReload, useFormAction, useSubmit, useTransition, useFetcher, useFetchers, useCatch, useLoaderData, useActionData, useBeforeUnload, useMatches, RemixServer } from "@remix-run/react";
/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -63,2 +63,6 @@ * Copyright (c) Remix Software Inc.

});
Object.defineProperty(exports, 'ScrollRestoration', {
enumerable: true,
get: function () { return react.ScrollRestoration; }
});
Object.defineProperty(exports, 'useActionData', {

@@ -96,14 +100,2 @@ enumerable: true,

});
Object.defineProperty(exports, 'usePendingFormSubmit', {
enumerable: true,
get: function () { return react.usePendingFormSubmit; }
});
Object.defineProperty(exports, 'usePendingLocation', {
enumerable: true,
get: function () { return react.usePendingLocation; }
});
Object.defineProperty(exports, 'useRouteData', {
enumerable: true,
get: function () { return react.useRouteData; }
});
Object.defineProperty(exports, 'useSubmit', {

@@ -110,0 +102,0 @@ enumerable: true,

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

{
"name": "@remix-run/react",
"description": "React DOM bindings for Remix",
"version": "0.21.0",
"version": "1.0.0-rc.1",
"repository": "https://github.com/remix-run/packages",

@@ -6,0 +6,0 @@ "main": "index.js",

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

@@ -18,3 +18,3 @@ import type { Location } from "history";

links?: LinksFunction;
meta?: MetaFunction | MetaDescriptor;
meta?: MetaFunction | HtmlMetaDescriptor;
unstable_shouldReload?: ShouldReloadFunction;

@@ -50,3 +50,3 @@ }

location: Location;
}): MetaDescriptor;
}): HtmlMetaDescriptor;
}

@@ -59,3 +59,3 @@ /**

*/
export interface MetaDescriptor {
export interface HtmlMetaDescriptor {
[name: string]: string | string[];

@@ -62,0 +62,0 @@ }

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

/**
* @remix-run/react v0.21.0
* @remix-run/react v1.0.0-rc.1
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc