48 lines
1.5 KiB
Plaintext
48 lines
1.5 KiB
Plaintext
"use strict";
|
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
const React = require("react");
|
|
const invariant = require("tiny-invariant");
|
|
const useRouterState = require("./useRouterState.cjs");
|
|
const matchContext = require("./matchContext.cjs");
|
|
function _interopNamespaceDefault(e) {
|
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
if (e) {
|
|
for (const k in e) {
|
|
if (k !== "default") {
|
|
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
Object.defineProperty(n, k, d.get ? d : {
|
|
enumerable: true,
|
|
get: () => e[k]
|
|
});
|
|
}
|
|
}
|
|
}
|
|
n.default = e;
|
|
return Object.freeze(n);
|
|
}
|
|
const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
|
|
function useMatch(opts) {
|
|
const nearestMatchId = React__namespace.useContext(
|
|
opts.from ? matchContext.dummyMatchContext : matchContext.matchContext
|
|
);
|
|
const matchSelection = useRouterState.useRouterState({
|
|
select: (state) => {
|
|
const match = state.matches.find(
|
|
(d) => opts.from ? opts.from === d.routeId : d.id === nearestMatchId
|
|
);
|
|
invariant(
|
|
!((opts.shouldThrow ?? true) && !match),
|
|
`Could not find ${opts.from ? `an active match from "${opts.from}"` : "a nearest match!"}`
|
|
);
|
|
if (match === void 0) {
|
|
return void 0;
|
|
}
|
|
return opts.select ? opts.select(match) : match;
|
|
},
|
|
structuralSharing: opts.structuralSharing
|
|
});
|
|
return matchSelection;
|
|
}
|
|
exports.useMatch = useMatch;
|
|
//# sourceMappingURL=useMatch.cjs.map
|