@plumile/router 0.1.52 → 0.1.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ResourcePage.d.ts +12 -0
- package/lib/ResourcePage.d.ts.map +1 -0
- package/lib/ResourcePage.js +38 -0
- package/lib/asyncResource.d.ts +8 -0
- package/lib/asyncResource.d.ts.map +1 -0
- package/lib/asyncResource.js +101 -0
- package/lib/builder.d.ts +13 -0
- package/lib/builder.d.ts.map +1 -0
- package/lib/builder.js +72 -0
- package/lib/errors/HttpRedirect.d.ts +6 -0
- package/lib/errors/HttpRedirect.d.ts.map +1 -0
- package/lib/errors/HttpRedirect.js +11 -0
- package/lib/errors/index.d.ts +2 -0
- package/lib/errors/index.d.ts.map +1 -0
- package/lib/errors/index.js +2 -0
- package/lib/eslint-rules/index.d.ts +2 -0
- package/lib/eslint-rules/index.d.ts.map +1 -0
- package/lib/eslint-rules/index.js +2 -0
- package/lib/eslint-rules/no-direct-window-location-search.d.ts +4 -0
- package/lib/eslint-rules/no-direct-window-location-search.d.ts.map +1 -0
- package/lib/eslint-rules/no-direct-window-location-search.js +48 -0
- package/lib/history/BrowserHistory.d.ts +21 -0
- package/lib/history/BrowserHistory.d.ts.map +1 -0
- package/lib/history/BrowserHistory.js +139 -0
- package/lib/history/index.d.ts +3 -0
- package/lib/history/index.d.ts.map +1 -0
- package/lib/history/index.js +2 -0
- package/lib/history/types.d.ts +19 -0
- package/lib/history/types.d.ts.map +1 -0
- package/lib/history/types.js +2 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +9 -0
- package/lib/instrumentation/Instrumentation.d.ts +90 -0
- package/lib/instrumentation/Instrumentation.d.ts.map +1 -0
- package/lib/instrumentation/Instrumentation.js +59 -0
- package/lib/instrumentation/adapters/devtoolsBridge.d.ts +14 -0
- package/lib/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -0
- package/lib/instrumentation/adapters/devtoolsBridge.js +133 -0
- package/lib/instrumentation/adapters/logger.d.ts +10 -0
- package/lib/instrumentation/adapters/logger.d.ts.map +1 -0
- package/lib/instrumentation/adapters/logger.js +19 -0
- package/lib/instrumentation/index.d.ts +4 -0
- package/lib/instrumentation/index.d.ts.map +1 -0
- package/lib/instrumentation/index.js +4 -0
- package/lib/prepareResource.d.ts +4 -0
- package/lib/prepareResource.d.ts.map +1 -0
- package/lib/prepareResource.js +11 -0
- package/lib/routing/Link.d.ts +23 -0
- package/lib/routing/Link.d.ts.map +1 -0
- package/lib/routing/Link.js +158 -0
- package/lib/routing/RouteComponent.d.ts +8 -0
- package/lib/routing/RouteComponent.d.ts.map +1 -0
- package/lib/routing/RouteComponent.js +20 -0
- package/lib/routing/RouteComponentWrapper.d.ts +11 -0
- package/lib/routing/RouteComponentWrapper.d.ts.map +1 -0
- package/lib/routing/RouteComponentWrapper.js +101 -0
- package/lib/routing/RouterRenderer.d.ts +10 -0
- package/lib/routing/RouterRenderer.d.ts.map +1 -0
- package/lib/routing/RouterRenderer.js +67 -0
- package/lib/routing/RoutingContext.d.ts +5 -0
- package/lib/routing/RoutingContext.d.ts.map +1 -0
- package/lib/routing/RoutingContext.js +4 -0
- package/lib/routing/createRouter.d.ts +19 -0
- package/lib/routing/createRouter.d.ts.map +1 -0
- package/lib/routing/createRouter.js +604 -0
- package/lib/routing/index.d.ts +16 -0
- package/lib/routing/index.d.ts.map +1 -0
- package/lib/routing/index.js +16 -0
- package/lib/routing/useAllQuery.d.ts +7 -0
- package/lib/routing/useAllQuery.d.ts.map +1 -0
- package/lib/routing/useAllQuery.js +31 -0
- package/lib/routing/useFilterDiagnostics.d.ts +2 -0
- package/lib/routing/useFilterDiagnostics.d.ts.map +1 -0
- package/lib/routing/useFilterDiagnostics.js +11 -0
- package/lib/routing/useFilters.d.ts +8 -0
- package/lib/routing/useFilters.d.ts.map +1 -0
- package/lib/routing/useFilters.js +65 -0
- package/lib/routing/useLocation.d.ts +2 -0
- package/lib/routing/useLocation.d.ts.map +1 -0
- package/lib/routing/useLocation.js +24 -0
- package/lib/routing/useNavigate.d.ts +7 -0
- package/lib/routing/useNavigate.d.ts.map +1 -0
- package/lib/routing/useNavigate.js +11 -0
- package/lib/routing/usePathname.d.ts +2 -0
- package/lib/routing/usePathname.d.ts.map +1 -0
- package/lib/routing/usePathname.js +9 -0
- package/lib/routing/useQuery.d.ts +2 -0
- package/lib/routing/useQuery.d.ts.map +1 -0
- package/lib/routing/useQuery.js +9 -0
- package/lib/routing/useQueryState.d.ts +13 -0
- package/lib/routing/useQueryState.d.ts.map +1 -0
- package/lib/routing/useQueryState.js +45 -0
- package/lib/routing/useSearchParams.d.ts +11 -0
- package/lib/routing/useSearchParams.d.ts.map +1 -0
- package/lib/routing/useSearchParams.js +67 -0
- package/lib/tools/buildCombinedSearch.d.ts +8 -0
- package/lib/tools/buildCombinedSearch.d.ts.map +1 -0
- package/lib/tools/buildCombinedSearch.js +76 -0
- package/lib/tools/index.d.ts +3 -0
- package/lib/tools/index.d.ts.map +1 -0
- package/lib/tools/index.js +13 -0
- package/lib/tools/query.d.ts +2 -0
- package/lib/tools/query.d.ts.map +1 -0
- package/lib/tools/query.js +43 -0
- package/lib/tools.d.ts +15 -0
- package/lib/tools.d.ts.map +1 -0
- package/lib/tools.js +179 -0
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types.d.ts +245 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +2 -0
- package/lib/values.d.ts +19 -0
- package/lib/values.d.ts.map +1 -0
- package/lib/values.js +53 -0
- package/package.json +2 -2
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { default as createRouter } from './createRouter.js';
|
|
2
|
+
export { default as Link } from './Link.js';
|
|
3
|
+
export { default as RouteComponent } from './RouteComponent.js';
|
|
4
|
+
export { default as RouteComponentWrapper } from './RouteComponentWrapper.js';
|
|
5
|
+
export { default as RouterRenderer } from './RouterRenderer.js';
|
|
6
|
+
export { default as RoutingContext } from './RoutingContext.js';
|
|
7
|
+
export { default as useQuery } from './useQuery.js';
|
|
8
|
+
export { default as useLocation } from './useLocation.js';
|
|
9
|
+
export { default as usePathname } from './usePathname.js';
|
|
10
|
+
export { default as useNavigate } from './useNavigate.js';
|
|
11
|
+
export { default as useQueryState } from './useQueryState.js';
|
|
12
|
+
export { default as useFilters } from './useFilters.js';
|
|
13
|
+
export { default as useFilterDiagnostics } from './useFilterDiagnostics.js';
|
|
14
|
+
export { default as useSearchParams } from './useSearchParams.js';
|
|
15
|
+
export { default as buildCombinedSearch } from '../tools/buildCombinedSearch.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAI5D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { default as createRouter } from './createRouter.js';
|
|
2
|
+
export { default as Link } from './Link.js';
|
|
3
|
+
export { default as RouteComponent } from './RouteComponent.js';
|
|
4
|
+
export { default as RouteComponentWrapper } from './RouteComponentWrapper.js';
|
|
5
|
+
export { default as RouterRenderer } from './RouterRenderer.js';
|
|
6
|
+
export { default as RoutingContext } from './RoutingContext.js';
|
|
7
|
+
export { default as useQuery } from './useQuery.js';
|
|
8
|
+
export { default as useLocation } from './useLocation.js';
|
|
9
|
+
export { default as usePathname } from './usePathname.js';
|
|
10
|
+
export { default as useNavigate } from './useNavigate.js';
|
|
11
|
+
export { default as useQueryState } from './useQueryState.js';
|
|
12
|
+
export { default as useFilters } from './useFilters.js';
|
|
13
|
+
export { default as useFilterDiagnostics } from './useFilterDiagnostics.js';
|
|
14
|
+
export { default as useSearchParams } from './useSearchParams.js';
|
|
15
|
+
export { default as buildCombinedSearch } from '../tools/buildCombinedSearch.js';
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm91dGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxJQUFJLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSTVELE9BQU8sRUFBRSxPQUFPLElBQUksSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRzVDLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzlFLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsT0FBTyxJQUFJLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFELE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHMUQsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELE9BQU8sRUFBRSxPQUFPLElBQUksVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLE9BQU8sSUFBSSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxPQUFPLElBQUksZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTWFpbiByb3V0ZXIgZmFjdG9yeSBmdW5jdGlvblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBjcmVhdGVSb3V0ZXIgfSBmcm9tICcuL2NyZWF0ZVJvdXRlci5qcyc7XG5cbi8vIE5hdmlnYXRpb24gY29tcG9uZW50IHdpdGggcHJlbG9hZGluZyBzdXBwb3J0XG4vLyBTdGFuZGFyZCAuanMgc3BlY2lmaWVyIChidWlsZCBwaXBlbGluZSByZXdyaXRlcyBmcm9tIFRTIHNvdXJjZSlcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTGluayB9IGZyb20gJy4vTGluay5qcyc7XG5cbi8vIFJvdXRlIGNvbXBvbmVudCB3cmFwcGVyIGZvciBoYW5kbGluZyBpbmRpdmlkdWFsIHJvdXRlc1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSb3V0ZUNvbXBvbmVudCB9IGZyb20gJy4vUm91dGVDb21wb25lbnQuanMnO1xuXG4vLyBJbnRlcm5hbCB3cmFwcGVyIGNvbXBvbmVudCBmb3Igcm91dGUgcmVuZGVyaW5nXG5leHBvcnQgeyBkZWZhdWx0IGFzIFJvdXRlQ29tcG9uZW50V3JhcHBlciB9IGZyb20gJy4vUm91dGVDb21wb25lbnRXcmFwcGVyLmpzJztcblxuLy8gTWFpbiByZW5kZXJlciBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBjdXJyZW50IHJvdXRlXG5leHBvcnQgeyBkZWZhdWx0IGFzIFJvdXRlclJlbmRlcmVyIH0gZnJvbSAnLi9Sb3V0ZXJSZW5kZXJlci5qcyc7XG5cbi8vIFJlYWN0IGNvbnRleHQgZm9yIHNoYXJpbmcgcm91dGVyIHN0YXRlXG5leHBvcnQgeyBkZWZhdWx0IGFzIFJvdXRpbmdDb250ZXh0IH0gZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG4vLyBIb29rIHRvIGFjY2VzcyByYXcgcXVlcnkgcGFyYW1ldGVyc1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VRdWVyeSB9IGZyb20gJy4vdXNlUXVlcnkuanMnO1xuLy8gSG9vayB0byBhY2Nlc3MgdGhlIGN1cnJlbnQgbG9jYXRpb25cbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlTG9jYXRpb24gfSBmcm9tICcuL3VzZUxvY2F0aW9uLmpzJztcbi8vIEhvb2sgdG8gYWNjZXNzIHRoZSBjdXJyZW50IHBhdGhuYW1lXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZVBhdGhuYW1lIH0gZnJvbSAnLi91c2VQYXRobmFtZS5qcyc7XG4vLyBIb29rIHRvIGFjY2VzcyB0eXBlZCBxdWVyeSBwYXJhbWV0ZXJzXG4vLyBIb29rIHRvIG5hdmlnYXRlIHByb2dyYW1tYXRpY2FsbHlcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlTmF2aWdhdGUgfSBmcm9tICcuL3VzZU5hdmlnYXRlLmpzJztcbi8vIEhvb2sgdG8gYmluZCBhIHNwZWNpZmljIHF1ZXJ5IHBhcmFtIHRvIGNvbXBvbmVudCBzdGF0ZVxuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VRdWVyeVN0YXRlIH0gZnJvbSAnLi91c2VRdWVyeVN0YXRlLmpzJztcbi8vIEhvb2sgdG8gYWNjZXNzIGFuZCBtdXRhdGUgZmlsdGVyc1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VGaWx0ZXJzIH0gZnJvbSAnLi91c2VGaWx0ZXJzLmpzJztcbi8vIEhvb2sgdG8gYWNjZXNzIGZpbHRlciBkaWFnbm9zdGljc1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VGaWx0ZXJEaWFnbm9zdGljcyB9IGZyb20gJy4vdXNlRmlsdGVyRGlhZ25vc3RpY3MuanMnO1xuLy8gSG9vayB0byBtYW5hZ2UgVVJMU2VhcmNoUGFyYW1zXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZVNlYXJjaFBhcmFtcyB9IGZyb20gJy4vdXNlU2VhcmNoUGFyYW1zLmpzJztcblxuLy8gUHVibGljIGhlbHBlciBmb3IgdW5pZmllZCBmaWx0ZXItYmFzZWQgc2VhcmNoIGJ1aWxkaW5nIChQaGFzZSAyKVxuZXhwb3J0IHsgZGVmYXVsdCBhcyBidWlsZENvbWJpbmVkU2VhcmNoIH0gZnJvbSAnLi4vdG9vbHMvYnVpbGRDb21iaW5lZFNlYXJjaC5qcyc7XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type UseAllQueryOptions = {
|
|
2
|
+
replace?: boolean;
|
|
3
|
+
};
|
|
4
|
+
export default function useAllQuery<T extends Record<string, unknown>>(opts?: UseAllQueryOptions): [T | undefined, (next: T, navOpts?: {
|
|
5
|
+
replace?: boolean;
|
|
6
|
+
}) => void];
|
|
7
|
+
//# sourceMappingURL=useAllQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAllQuery.d.ts","sourceRoot":"","sources":["../../src/routing/useAllQuery.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG;IAE/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAQF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,IAAI,GAAE,kBAAuB,GAC5B,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,CAAC,CAkCrE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useCallback, useContext } from 'react';
|
|
2
|
+
import RoutingContext from './RoutingContext.js';
|
|
3
|
+
export default function useAllQuery(opts = {}) {
|
|
4
|
+
const ctx = useContext(RoutingContext);
|
|
5
|
+
const entry = ctx?.get();
|
|
6
|
+
const rawQuery = entry?.query;
|
|
7
|
+
const setValue = useCallback((next, navOpts) => {
|
|
8
|
+
if (ctx == null) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const replace = navOpts?.replace ?? opts.replace;
|
|
12
|
+
const entryNow = ctx.get();
|
|
13
|
+
const source = { ...entryNow.query };
|
|
14
|
+
const base = {};
|
|
15
|
+
for (const k of Object.keys(source)) {
|
|
16
|
+
base[k] = source[k];
|
|
17
|
+
}
|
|
18
|
+
for (const k of Object.keys(next)) {
|
|
19
|
+
const v = next[k];
|
|
20
|
+
if (v === undefined) {
|
|
21
|
+
delete base[k];
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
base[k] = v;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
ctx.navigate({ query: base, replace });
|
|
28
|
+
}, [ctx, opts.replace]);
|
|
29
|
+
return [rawQuery, setValue];
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlQWxsUXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm91dGluZy91c2VBbGxRdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNoRCxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQWNqRCxNQUFNLENBQUMsT0FBTyxVQUFVLFdBQVcsQ0FDakMsT0FBMkIsRUFBRTtJQUU3QixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBRXpCLE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxLQUFLLENBQUM7SUFFOUIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUMxQixDQUFDLElBQU8sRUFBRSxPQUErQixFQUFFLEVBQUU7UUFDM0MsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxPQUFPLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDakQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTNCLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQTRCLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsR0FBSSxJQUFnQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUVwQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUNwQixDQUFDO0lBRUYsT0FBTyxDQUFDLFFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG5cbi8qKiBPcHRpb25zIGNvbnRyb2xsaW5nIGhvdyBgdXNlQWxsUXVlcnlgIHdyaXRlcyBiYWNrIHRvIHRoZSBoaXN0b3J5IHN0YWNrLiAqL1xuZXhwb3J0IHR5cGUgVXNlQWxsUXVlcnlPcHRpb25zID0ge1xuICAvKiogUmVwbGFjZSBpbnN0ZWFkIG9mIHB1c2ggd2hlbiB1cGRhdGluZyAocHJldmVudHMgbmV3IGhpc3RvcnkgZW50cnkpICovXG4gIHJlcGxhY2U/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBTeW5jaHJvbmlzZXMgYW4gb2JqZWN0IG9mIHF1ZXJ5IHBhcmFtZXRlcnMgd2l0aCB0aGUgcm91dGVyIHN0YXRlLlxuICpcbiAqIEBwYXJhbSBvcHRzIC0gT3B0aW9uYWwgbmF2aWdhdGlvbiBvcHRpb25zIChgcmVwbGFjZWAgbWlycm9ycyBoaXN0b3J5LnJlcGxhY2VTdGF0ZSkuXG4gKiBAcmV0dXJucyBUdXBsZSBjb250YWluaW5nIHRoZSBhZ2dyZWdhdGVkIHF1ZXJ5IG9iamVjdCBhbmQgYSBzZXR0ZXIgdGhhdCB3cml0ZXMgYmFjayB2aWEgYG5hdmlnYXRlYC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQWxsUXVlcnk8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgb3B0czogVXNlQWxsUXVlcnlPcHRpb25zID0ge30sXG4pOiBbVCB8IHVuZGVmaW5lZCwgKG5leHQ6IFQsIG5hdk9wdHM/OiB7IHJlcGxhY2U/OiBib29sZWFuIH0pID0+IHZvaWRdIHtcbiAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChSb3V0aW5nQ29udGV4dCk7XG4gIGNvbnN0IGVudHJ5ID0gY3R4Py5nZXQoKTtcblxuICBjb25zdCByYXdRdWVyeSA9IGVudHJ5Py5xdWVyeTtcblxuICBjb25zdCBzZXRWYWx1ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXh0OiBULCBuYXZPcHRzPzogeyByZXBsYWNlPzogYm9vbGVhbiB9KSA9PiB7XG4gICAgICBpZiAoY3R4ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVwbGFjZSA9IG5hdk9wdHM/LnJlcGxhY2UgPz8gb3B0cy5yZXBsYWNlO1xuICAgICAgY29uc3QgZW50cnlOb3cgPSBjdHguZ2V0KCk7XG4gICAgICAvLyBCYXNlIG9iamVjdDogc3RhcnQgZnJvbSBleGlzdGluZyB0eXBlZFF1ZXJ5IGlmIHByZXNlbnQgZWxzZSByYXcgcXVlcnkgY2xvbmVcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHsgLi4uZW50cnlOb3cucXVlcnkgfTtcbiAgICAgIGNvbnN0IGJhc2U6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoc291cmNlKSkge1xuICAgICAgICBiYXNlW2tdID0gc291cmNlW2tdO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKG5leHQpKSB7XG4gICAgICAgIGNvbnN0IHYgPSAobmV4dCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba107XG4gICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlXG4gICAgICAgICAgZGVsZXRlIGJhc2Vba107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVtrXSA9IHY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGN0eC5uYXZpZ2F0ZSh7IHF1ZXJ5OiBiYXNlLCByZXBsYWNlIH0pO1xuICAgIH0sXG4gICAgW2N0eCwgb3B0cy5yZXBsYWNlXSxcbiAgKTtcblxuICByZXR1cm4gW3Jhd1F1ZXJ5IGFzIFQsIHNldFZhbHVlXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFilterDiagnostics.d.ts","sourceRoot":"","sources":["../../src/routing/useFilterDiagnostics.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,oBAAoB,IAAI,SAAS,OAAO,EAAE,CAOjE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useContext, useMemo } from 'react';
|
|
2
|
+
import RoutingContext from './RoutingContext.js';
|
|
3
|
+
export default function useFilterDiagnostics() {
|
|
4
|
+
const ctx = useContext(RoutingContext);
|
|
5
|
+
const entry = ctx?.get();
|
|
6
|
+
const diags = entry?.filterDiagnostics;
|
|
7
|
+
return useMemo(() => {
|
|
8
|
+
return diags ?? [];
|
|
9
|
+
}, [diags]);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlRmlsdGVyRGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm91dGluZy91c2VGaWx0ZXJEaWFnbm9zdGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM1QyxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUtqRCxNQUFNLENBQUMsT0FBTyxVQUFVLG9CQUFvQjtJQUMxQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxpQkFBaUIsQ0FBQztJQUN2QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDbEIsT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSb3V0aW5nQ29udGV4dCBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjdXJyZW50IGZpbHRlciBkaWFnbm9zdGljcyBlbWl0dGVkIGJ5IHRoZSByb3V0ZXIgKGVtcHR5IGFycmF5IHdoZW4gbm9uZSkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUZpbHRlckRpYWdub3N0aWNzKCk6IHJlYWRvbmx5IHVua25vd25bXSB7XG4gIGNvbnN0IGN0eCA9IHVzZUNvbnRleHQoUm91dGluZ0NvbnRleHQpO1xuICBjb25zdCBlbnRyeSA9IGN0eD8uZ2V0KCk7XG4gIGNvbnN0IGRpYWdzID0gZW50cnk/LmZpbHRlckRpYWdub3N0aWNzO1xuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGRpYWdzID8/IFtdO1xuICB9LCBbZGlhZ3NdKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { FilterSchema, TypedFilterActions, InferFilters } from '../types.js';
|
|
2
|
+
declare function shallowEqual(a: unknown, b: unknown): boolean;
|
|
3
|
+
export declare const __test: {
|
|
4
|
+
readonly shallowEqual: typeof shallowEqual;
|
|
5
|
+
};
|
|
6
|
+
export default function useFilters<S extends FilterSchema>(schema: S): [InferFilters<S>, TypedFilterActions<S>];
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=useFilters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFilters.d.ts","sourceRoot":"","sources":["../../src/routing/useFilters.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACb,MAAM,aAAa,CAAC;AASrB,iBAAS,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAgBrD;AAED,eAAO,MAAM,MAAM;;CAET,CAAC;AAQX,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,SAAS,YAAY,EACvD,MAAM,EAAE,CAAC,GACR,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAoD1C"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { useContext, useMemo } from 'react';
|
|
2
|
+
import RoutingContext from './RoutingContext.js';
|
|
3
|
+
import { setFilter, removeFilter as removeFilterOp, mergeFilters, isEmpty, } from '@plumile/filter-query';
|
|
4
|
+
function shallowEqual(a, b) {
|
|
5
|
+
if (a === b)
|
|
6
|
+
return true;
|
|
7
|
+
if (typeof a !== 'object' ||
|
|
8
|
+
a === null ||
|
|
9
|
+
typeof b !== 'object' ||
|
|
10
|
+
b === null) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
const aObj = a;
|
|
14
|
+
const bObj = b;
|
|
15
|
+
const aKeys = Object.keys(aObj);
|
|
16
|
+
if (aKeys.length !== Object.keys(bObj).length)
|
|
17
|
+
return false;
|
|
18
|
+
for (const k of aKeys)
|
|
19
|
+
if (aObj[k] !== bObj[k])
|
|
20
|
+
return false;
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
export const __test = {
|
|
24
|
+
shallowEqual,
|
|
25
|
+
};
|
|
26
|
+
export default function useFilters(schema) {
|
|
27
|
+
const ctx = useContext(RoutingContext);
|
|
28
|
+
if (ctx == null) {
|
|
29
|
+
throw new Error('useFilters must be used within a RoutingContext.Provider');
|
|
30
|
+
}
|
|
31
|
+
const entry = ctx.get();
|
|
32
|
+
const { query } = entry;
|
|
33
|
+
const currentFilters = useMemo(() => {
|
|
34
|
+
return (entry.filters ?? {});
|
|
35
|
+
}, [entry.filters]);
|
|
36
|
+
const baseCtx = ctx;
|
|
37
|
+
const actions = useMemo(() => {
|
|
38
|
+
function navigateWith(nextFilters, replace) {
|
|
39
|
+
if (shallowEqual(currentFilters, nextFilters))
|
|
40
|
+
return;
|
|
41
|
+
baseCtx.navigate({ query: query, filters: nextFilters, replace });
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
set(field, operator, value, opts) {
|
|
45
|
+
const next = setFilter(currentFilters, schema, field, operator, value);
|
|
46
|
+
navigateWith(next, opts?.replace);
|
|
47
|
+
},
|
|
48
|
+
remove(field, operator, opts) {
|
|
49
|
+
const next = removeFilterOp(currentFilters, field, operator);
|
|
50
|
+
navigateWith(next, opts?.replace);
|
|
51
|
+
},
|
|
52
|
+
merge(patch, opts) {
|
|
53
|
+
const next = mergeFilters(currentFilters, patch);
|
|
54
|
+
navigateWith(next, opts?.replace);
|
|
55
|
+
},
|
|
56
|
+
clear(opts) {
|
|
57
|
+
if (isEmpty(currentFilters))
|
|
58
|
+
return;
|
|
59
|
+
navigateWith({}, opts?.replace);
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}, [baseCtx, currentFilters, schema, query]);
|
|
63
|
+
return [currentFilters, actions];
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlRmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb3V0aW5nL3VzZUZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUMsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFNakQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLElBQUksY0FBYyxFQUM5QixZQUFZLEVBQ1osT0FBTyxHQUNSLE1BQU0sdUJBQXVCLENBQUM7QUFHL0IsU0FBUyxZQUFZLENBQUMsQ0FBVSxFQUFFLENBQVU7SUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3pCLElBQ0UsT0FBTyxDQUFDLEtBQUssUUFBUTtRQUNyQixDQUFDLEtBQUssSUFBSTtRQUNWLE9BQU8sQ0FBQyxLQUFLLFFBQVE7UUFDckIsQ0FBQyxLQUFLLElBQUksRUFDVixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsQ0FBNEIsQ0FBQztJQUMxQyxNQUFNLElBQUksR0FBRyxDQUE0QixDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzVELEtBQUssTUFBTSxDQUFDLElBQUksS0FBSztRQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztJQUM3RCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUc7SUFDcEIsWUFBWTtDQUNKLENBQUM7QUFRWCxNQUFNLENBQUMsT0FBTyxVQUFVLFVBQVUsQ0FDaEMsTUFBUztJQUVULE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2QyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN4QixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDbEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFvQixDQUFDO0lBQ2xELENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUVwQixNQUFNLE9BQU8sR0FBMEIsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUVsRCxTQUFTLFlBQVksQ0FBQyxXQUE0QixFQUFFLE9BQWlCO1lBQ25FLElBQUksWUFBWSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUM7Z0JBQUUsT0FBTztZQUN0RCxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQVksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUNELE9BQU87WUFDTCxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDOUIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUNwQixjQUFxQixFQUNyQixNQUFhLEVBQ2IsS0FBWSxFQUNaLFFBQWUsRUFDZixLQUFZLENBQ00sQ0FBQztnQkFDckIsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUk7Z0JBQzFCLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FDekIsY0FBcUIsRUFDckIsS0FBWSxFQUNaLFFBQWUsQ0FDRyxDQUFDO2dCQUNyQixZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJO2dCQUNmLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FDdkIsY0FBcUIsRUFDckIsS0FBWSxDQUNNLENBQUM7Z0JBQ3JCLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxLQUFLLENBQUMsSUFBSTtnQkFDUixJQUFJLE9BQU8sQ0FBQyxjQUFxQixDQUFDO29CQUFFLE9BQU87Z0JBQzNDLFlBQVksQ0FBQyxFQUFxQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNyRCxDQUFDO1NBQ3VCLENBQUM7SUFDN0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUU3QyxPQUFPLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJvdXRpbmdDb250ZXh0IGZyb20gJy4vUm91dGluZ0NvbnRleHQuanMnO1xuaW1wb3J0IHR5cGUge1xuICBGaWx0ZXJTY2hlbWEsXG4gIFR5cGVkRmlsdGVyQWN0aW9ucyxcbiAgSW5mZXJGaWx0ZXJzLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQge1xuICBzZXRGaWx0ZXIsXG4gIHJlbW92ZUZpbHRlciBhcyByZW1vdmVGaWx0ZXJPcCxcbiAgbWVyZ2VGaWx0ZXJzLFxuICBpc0VtcHR5LFxufSBmcm9tICdAcGx1bWlsZS9maWx0ZXItcXVlcnknO1xuXG4vKiogSW50ZXJuYWwgaGVscGVyOiBzaGFsbG93IGVxdWFsaXR5ICovXG5mdW5jdGlvbiBzaGFsbG93RXF1YWwoYTogdW5rbm93biwgYjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG4gIGlmIChcbiAgICB0eXBlb2YgYSAhPT0gJ29iamVjdCcgfHxcbiAgICBhID09PSBudWxsIHx8XG4gICAgdHlwZW9mIGIgIT09ICdvYmplY3QnIHx8XG4gICAgYiA9PT0gbnVsbFxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgYU9iaiA9IGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGJPYmogPSBiIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBhS2V5cyA9IE9iamVjdC5rZXlzKGFPYmopO1xuICBpZiAoYUtleXMubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhiT2JqKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgZm9yIChjb25zdCBrIG9mIGFLZXlzKSBpZiAoYU9ialtrXSAhPT0gYk9ialtrXSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IF9fdGVzdCA9IHtcbiAgc2hhbGxvd0VxdWFsLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBTdHJvbmdseSB0eXBlZCBob29rIGZvciByZWFkaW5nIGFuZCBtdXRhdGluZyBmaWx0ZXJzIGRlY2xhcmVkIGJ5IGEgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBGaWx0ZXIgc2NoZW1hIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCByb3V0ZS5cbiAqIEByZXR1cm5zIFR1cGxlIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgZmlsdGVycyBvYmplY3QgYW5kIHR5cGVkIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUZpbHRlcnM8UyBleHRlbmRzIEZpbHRlclNjaGVtYT4oXG4gIHNjaGVtYTogUyxcbik6IFtJbmZlckZpbHRlcnM8Uz4sIFR5cGVkRmlsdGVyQWN0aW9uczxTPl0ge1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KFJvdXRpbmdDb250ZXh0KTtcbiAgaWYgKGN0eCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VGaWx0ZXJzIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBSb3V0aW5nQ29udGV4dC5Qcm92aWRlcicpO1xuICB9XG4gIGNvbnN0IGVudHJ5ID0gY3R4LmdldCgpO1xuICBjb25zdCB7IHF1ZXJ5IH0gPSBlbnRyeTsgLy8gc3RpbGwgcGFzc2VkIGZvciBub3cgKGxlZ2FjeSBuYXZpZ2F0ZSBzaWduYXR1cmUpXG4gIGNvbnN0IGN1cnJlbnRGaWx0ZXJzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIChlbnRyeS5maWx0ZXJzID8/IHt9KSBhcyBJbmZlckZpbHRlcnM8Uz47XG4gIH0sIFtlbnRyeS5maWx0ZXJzXSk7XG4gIGNvbnN0IGJhc2VDdHggPSBjdHg7IC8vIG5vbi1udWxsIGFsaWFzIGZvciBjbG9zdXJlc1xuXG4gIGNvbnN0IGFjdGlvbnM6IFR5cGVkRmlsdGVyQWN0aW9uczxTPiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIC8qKiBOYXZpZ2F0ZSBvbmx5IGlmIHN0cnVjdHVyYWwgY2hhbmdlICovXG4gICAgZnVuY3Rpb24gbmF2aWdhdGVXaXRoKG5leHRGaWx0ZXJzOiBJbmZlckZpbHRlcnM8Uz4sIHJlcGxhY2U/OiBib29sZWFuKSB7XG4gICAgICBpZiAoc2hhbGxvd0VxdWFsKGN1cnJlbnRGaWx0ZXJzLCBuZXh0RmlsdGVycykpIHJldHVybjtcbiAgICAgIGJhc2VDdHgubmF2aWdhdGUoeyBxdWVyeTogcXVlcnkgYXMgYW55LCBmaWx0ZXJzOiBuZXh0RmlsdGVycywgcmVwbGFjZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHNldChmaWVsZCwgb3BlcmF0b3IsIHZhbHVlLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBzZXRGaWx0ZXIoXG4gICAgICAgICAgY3VycmVudEZpbHRlcnMgYXMgYW55LFxuICAgICAgICAgIHNjaGVtYSBhcyBhbnksXG4gICAgICAgICAgZmllbGQgYXMgYW55LFxuICAgICAgICAgIG9wZXJhdG9yIGFzIGFueSxcbiAgICAgICAgICB2YWx1ZSBhcyBhbnksXG4gICAgICAgICkgYXMgSW5mZXJGaWx0ZXJzPFM+O1xuICAgICAgICBuYXZpZ2F0ZVdpdGgobmV4dCwgb3B0cz8ucmVwbGFjZSk7XG4gICAgICB9LFxuICAgICAgcmVtb3ZlKGZpZWxkLCBvcGVyYXRvciwgb3B0cykge1xuICAgICAgICBjb25zdCBuZXh0ID0gcmVtb3ZlRmlsdGVyT3AoXG4gICAgICAgICAgY3VycmVudEZpbHRlcnMgYXMgYW55LFxuICAgICAgICAgIGZpZWxkIGFzIGFueSxcbiAgICAgICAgICBvcGVyYXRvciBhcyBhbnksXG4gICAgICAgICkgYXMgSW5mZXJGaWx0ZXJzPFM+O1xuICAgICAgICBuYXZpZ2F0ZVdpdGgobmV4dCwgb3B0cz8ucmVwbGFjZSk7XG4gICAgICB9LFxuICAgICAgbWVyZ2UocGF0Y2gsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgbmV4dCA9IG1lcmdlRmlsdGVycyhcbiAgICAgICAgICBjdXJyZW50RmlsdGVycyBhcyBhbnksXG4gICAgICAgICAgcGF0Y2ggYXMgYW55LFxuICAgICAgICApIGFzIEluZmVyRmlsdGVyczxTPjtcbiAgICAgICAgbmF2aWdhdGVXaXRoKG5leHQsIG9wdHM/LnJlcGxhY2UpO1xuICAgICAgfSxcbiAgICAgIGNsZWFyKG9wdHMpIHtcbiAgICAgICAgaWYgKGlzRW1wdHkoY3VycmVudEZpbHRlcnMgYXMgYW55KSkgcmV0dXJuO1xuICAgICAgICBuYXZpZ2F0ZVdpdGgoe30gYXMgSW5mZXJGaWx0ZXJzPFM+LCBvcHRzPy5yZXBsYWNlKTtcbiAgICAgIH0sXG4gICAgfSBhcyBUeXBlZEZpbHRlckFjdGlvbnM8Uz47XG4gIH0sIFtiYXNlQ3R4LCBjdXJyZW50RmlsdGVycywgc2NoZW1hLCBxdWVyeV0pO1xuXG4gIHJldHVybiBbY3VycmVudEZpbHRlcnMsIGFjdGlvbnNdO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocation.d.ts","sourceRoot":"","sources":["../../src/routing/useLocation.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,UAAU,WAAW,IAAI,QAAQ,CAiB9C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useContext, useEffect, useState } from 'react';
|
|
2
|
+
import RoutingContext from './RoutingContext.js';
|
|
3
|
+
const EMPTY_LOCATION = {
|
|
4
|
+
pathname: '',
|
|
5
|
+
search: '',
|
|
6
|
+
hash: '',
|
|
7
|
+
};
|
|
8
|
+
export default function useLocation() {
|
|
9
|
+
const routing = useContext(RoutingContext);
|
|
10
|
+
const [location, setLocation] = useState(() => {
|
|
11
|
+
return routing?.get().location ?? EMPTY_LOCATION;
|
|
12
|
+
});
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (routing == null) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
const unsubscribe = routing.history.subscribe((nextLocation) => {
|
|
18
|
+
setLocation(nextLocation);
|
|
19
|
+
});
|
|
20
|
+
return unsubscribe;
|
|
21
|
+
}, [routing]);
|
|
22
|
+
return location;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm91dGluZy91c2VMb2NhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDeEQsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFFakQsTUFBTSxjQUFjLEdBQUc7SUFDckIsUUFBUSxFQUFFLEVBQUU7SUFDWixNQUFNLEVBQUUsRUFBRTtJQUNWLElBQUksRUFBRSxFQUFFO0NBQ0csQ0FBQztBQUtkLE1BQU0sQ0FBQyxPQUFPLFVBQVUsV0FBVztJQUNqQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDM0MsTUFBTSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsR0FBRyxRQUFRLENBQVcsR0FBRyxFQUFFO1FBQ3RELE9BQU8sT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7WUFDcEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDN0QsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUVkLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJvdXRpbmdDb250ZXh0IGZyb20gJy4vUm91dGluZ0NvbnRleHQuanMnO1xuXG5jb25zdCBFTVBUWV9MT0NBVElPTiA9IHtcbiAgcGF0aG5hbWU6ICcnLFxuICBzZWFyY2g6ICcnLFxuICBoYXNoOiAnJyxcbn0gYXMgTG9jYXRpb247XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCByb3V0ZXIgbG9jYXRpb24gYW5kIHVwZGF0ZXMgb24gbmF2aWdhdGlvbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTG9jYXRpb24oKTogTG9jYXRpb24ge1xuICBjb25zdCByb3V0aW5nID0gdXNlQ29udGV4dChSb3V0aW5nQ29udGV4dCk7XG4gIGNvbnN0IFtsb2NhdGlvbiwgc2V0TG9jYXRpb25dID0gdXNlU3RhdGU8TG9jYXRpb24+KCgpID0+IHtcbiAgICByZXR1cm4gcm91dGluZz8uZ2V0KCkubG9jYXRpb24gPz8gRU1QVFlfTE9DQVRJT047XG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJvdXRpbmcgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSByb3V0aW5nLmhpc3Rvcnkuc3Vic2NyaWJlKChuZXh0TG9jYXRpb24pID0+IHtcbiAgICAgIHNldExvY2F0aW9uKG5leHRMb2NhdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuc3Vic2NyaWJlO1xuICB9LCBbcm91dGluZ10pO1xuXG4gIHJldHVybiBsb2NhdGlvbjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export default function useNavigate<TQuery extends Record<string, unknown> = Record<string, unknown>, TFilters extends Record<string, unknown> = Record<string, unknown>>(): (opts: {
|
|
2
|
+
pathname?: string;
|
|
3
|
+
query?: TQuery;
|
|
4
|
+
filters?: TFilters;
|
|
5
|
+
replace?: boolean;
|
|
6
|
+
}) => void;
|
|
7
|
+
//# sourceMappingURL=useNavigate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNavigate.d.ts","sourceRoot":"","sources":["../../src/routing/useNavigate.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/D,CAAC,IAAI,EAAE;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,KAAK,IAAI,CAST"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useCallback, useContext } from 'react';
|
|
2
|
+
import RoutingContext from './RoutingContext.js';
|
|
3
|
+
export default function useNavigate() {
|
|
4
|
+
const ctx = useContext(RoutingContext);
|
|
5
|
+
return useCallback((opts) => {
|
|
6
|
+
if (ctx == null)
|
|
7
|
+
return;
|
|
8
|
+
ctx.navigate(opts);
|
|
9
|
+
}, [ctx]);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTmF2aWdhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm91dGluZy91c2VOYXZpZ2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNoRCxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQU9qRCxNQUFNLENBQUMsT0FBTyxVQUFVLFdBQVc7SUFTakMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sV0FBVyxDQUNoQixDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1AsSUFBSSxHQUFHLElBQUksSUFBSTtZQUFFLE9BQU87UUFDeEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDLEVBQ0QsQ0FBQyxHQUFHLENBQUMsQ0FDTixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJvdXRpbmdDb250ZXh0IGZyb20gJy4vUm91dGluZ0NvbnRleHQuanMnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHJvdXRlcidzIGBuYXZpZ2F0ZWAgaGVscGVyIGJvdW5kIHRvIHRoZSBjdXJyZW50IGNvbnRleHQuXG4gKlxuICogQHJldHVybnMgRnVuY3Rpb24gYWNjZXB0aW5nIG9wdGlvbmFsIHBhdGhuYW1lLCB0eXBlZCBxdWVyeSBhbmQgcmVwbGFjZSBmbGFnLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VOYXZpZ2F0ZTxcbiAgVFF1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgVEZpbHRlcnMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPigpOiAob3B0czoge1xuICBwYXRobmFtZT86IHN0cmluZztcbiAgcXVlcnk/OiBUUXVlcnk7XG4gIGZpbHRlcnM/OiBURmlsdGVycztcbiAgcmVwbGFjZT86IGJvb2xlYW47XG59KSA9PiB2b2lkIHtcbiAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChSb3V0aW5nQ29udGV4dCk7XG4gIHJldHVybiB1c2VDYWxsYmFjayhcbiAgICAob3B0cykgPT4ge1xuICAgICAgaWYgKGN0eCA9PSBudWxsKSByZXR1cm47XG4gICAgICBjdHgubmF2aWdhdGUob3B0cyk7XG4gICAgfSxcbiAgICBbY3R4XSxcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePathname.d.ts","sourceRoot":"","sources":["../../src/routing/usePathname.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,WAAW,IAAI,MAAM,CAK5C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import useLocation from './useLocation.js';
|
|
3
|
+
export default function usePathname() {
|
|
4
|
+
const location = useLocation();
|
|
5
|
+
return useMemo(() => {
|
|
6
|
+
return location.pathname;
|
|
7
|
+
}, [location.pathname]);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUGF0aG5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm91dGluZy91c2VQYXRobmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hDLE9BQU8sV0FBVyxNQUFNLGtCQUFrQixDQUFDO0FBSzNDLE1BQU0sQ0FBQyxPQUFPLFVBQVUsV0FBVztJQUNqQyxNQUFNLFFBQVEsR0FBRyxXQUFXLEVBQUUsQ0FBQztJQUMvQixPQUFPLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDbEIsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQzNCLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUxvY2F0aW9uIGZyb20gJy4vdXNlTG9jYXRpb24uanMnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGN1cnJlbnQgcm91dGVyIHBhdGhuYW1lLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VQYXRobmFtZSgpOiBzdHJpbmcge1xuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gbG9jYXRpb24ucGF0aG5hbWU7XG4gIH0sIFtsb2NhdGlvbi5wYXRobmFtZV0pO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useQuery.d.ts","sourceRoot":"","sources":["../../src/routing/useQuery.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAIpE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useContext } from 'react';
|
|
2
|
+
import RoutingContext from './RoutingContext.js';
|
|
3
|
+
export default function useQuery() {
|
|
4
|
+
const ctx = useContext(RoutingContext);
|
|
5
|
+
if (ctx == null)
|
|
6
|
+
return {};
|
|
7
|
+
return ctx.get().query;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm91dGluZy91c2VRdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ25DLE9BQU8sY0FBYyxNQUFNLHFCQUFxQixDQUFDO0FBS2pELE1BQU0sQ0FBQyxPQUFPLFVBQVUsUUFBUTtJQUM5QixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLElBQUksSUFBSTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSb3V0aW5nQ29udGV4dCBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSByYXcgYWdncmVnYXRlZCBxdWVyeSBwYXJhbWV0ZXJzIHBhcnNlZCBmcm9tIGBsb2NhdGlvbi5zZWFyY2hgLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VRdWVyeSgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT4ge1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KFJvdXRpbmdDb250ZXh0KTtcbiAgaWYgKGN0eCA9PSBudWxsKSByZXR1cm4ge307XG4gIHJldHVybiBjdHguZ2V0KCkucXVlcnk7XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type UseQueryStateOptions<T> = {
|
|
2
|
+
defaultValue?: T;
|
|
3
|
+
omitIfDefault?: boolean;
|
|
4
|
+
replace?: boolean;
|
|
5
|
+
raw?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export default function useQueryState<T = unknown>(key: string, opts?: UseQueryStateOptions<T>): [
|
|
8
|
+
T | undefined,
|
|
9
|
+
(next: T | undefined, navOpts?: {
|
|
10
|
+
replace?: boolean;
|
|
11
|
+
}) => void
|
|
12
|
+
];
|
|
13
|
+
//# sourceMappingURL=useQueryState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useQueryState.d.ts","sourceRoot":"","sources":["../../src/routing/useQueryState.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;IAEpC,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AASF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO,EAC/C,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACjC;IACD,CAAC,GAAG,SAAS;IACb,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI;CAC/D,CA8CA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { useCallback, useContext } from 'react';
|
|
2
|
+
import RoutingContext from './RoutingContext.js';
|
|
3
|
+
export default function useQueryState(key, opts = {}) {
|
|
4
|
+
const ctx = useContext(RoutingContext);
|
|
5
|
+
const { defaultValue, omitIfDefault = true } = opts;
|
|
6
|
+
const entry = ctx?.get();
|
|
7
|
+
const rawQuery = entry?.query;
|
|
8
|
+
let current;
|
|
9
|
+
const rawVal = rawQuery?.[key];
|
|
10
|
+
if (Array.isArray(rawVal)) {
|
|
11
|
+
current = rawVal[rawVal.length - 1];
|
|
12
|
+
}
|
|
13
|
+
else if (rawVal != null) {
|
|
14
|
+
current = rawVal;
|
|
15
|
+
}
|
|
16
|
+
if (current === undefined && defaultValue !== undefined) {
|
|
17
|
+
current = defaultValue;
|
|
18
|
+
}
|
|
19
|
+
const setValue = useCallback((next, navOpts) => {
|
|
20
|
+
if (ctx == null)
|
|
21
|
+
return;
|
|
22
|
+
const replace = navOpts?.replace ?? opts.replace;
|
|
23
|
+
const entryNow = ctx.get();
|
|
24
|
+
const source = entryNow.query;
|
|
25
|
+
const base = {};
|
|
26
|
+
for (const k of Object.keys(source)) {
|
|
27
|
+
base[k] = source[k];
|
|
28
|
+
}
|
|
29
|
+
if (!(next === undefined || (omitIfDefault && next === defaultValue))) {
|
|
30
|
+
base[key] = next;
|
|
31
|
+
}
|
|
32
|
+
else if (Object.prototype.hasOwnProperty.call(base, key)) {
|
|
33
|
+
const rebuilt = {};
|
|
34
|
+
for (const k of Object.keys(base)) {
|
|
35
|
+
if (k !== key)
|
|
36
|
+
rebuilt[k] = base[k];
|
|
37
|
+
}
|
|
38
|
+
ctx.navigate({ query: rebuilt, replace });
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
ctx.navigate({ query: base, replace });
|
|
42
|
+
}, [ctx, key, omitIfDefault, defaultValue, opts.replace]);
|
|
43
|
+
return [current, setValue];
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUXVlcnlTdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb3V0aW5nL3VzZVF1ZXJ5U3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEQsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFxQmpELE1BQU0sQ0FBQyxPQUFPLFVBQVUsYUFBYSxDQUNuQyxHQUFXLEVBQ1gsT0FBZ0MsRUFBRTtJQUtsQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkMsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3BELE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN6QixNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBRTlCLElBQUksT0FBZ0IsQ0FBQztJQUNyQixNQUFNLE1BQU0sR0FBRyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUUxQixPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztTQUFNLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFCLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDeEQsT0FBTyxHQUFHLFlBQVksQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUMxQixDQUFDLElBQW1CLEVBQUUsT0FBK0IsRUFBRSxFQUFFO1FBQ3ZELElBQUksR0FBRyxJQUFJLElBQUk7WUFBRSxPQUFPO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFM0IsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUM5QixNQUFNLElBQUksR0FBNEIsRUFBRSxDQUFDO1FBQ3pDLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN0RSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUUzRCxNQUFNLE9BQU8sR0FBNEIsRUFBRSxDQUFDO1lBQzVDLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHO29CQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUNELEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDMUMsT0FBTztRQUNULENBQUM7UUFDRCxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQ3RELENBQUM7SUFFRixPQUFPLENBQUMsT0FBd0IsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG5cbi8qKiBPcHRpb25zIGNvbnRyb2xsaW5nIGhvdyBgdXNlUXVlcnlTdGF0ZWAgcmVhZHMvd3JpdGVzIGEgc2luZ2xlIHF1ZXJ5IGtleS4gKi9cbmV4cG9ydCB0eXBlIFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+ID0ge1xuICAvKiogRGVmYXVsdCB2YWx1ZSB3aGVuIHRoZSBrZXkgaXMgYWJzZW50IChvdmVycmlkZXMgc2NoZW1hIGRlZmF1bHQgZm9yIHRoZSBob29rIGNvbnN1bWVyKSAqL1xuICBkZWZhdWx0VmFsdWU/OiBUO1xuICAvKiogSWYgdHJ1ZSwgb21pdCB0aGlzIGtleSB3aGVuIHZhbHVlIGVxdWFscyBkZWZhdWx0VmFsdWUgKGFuZCBzY2hlbWEgZGVmYXVsdCkgKi9cbiAgb21pdElmRGVmYXVsdD86IGJvb2xlYW47XG4gIC8qKiBSZXBsYWNlIGluc3RlYWQgb2YgcHVzaCB3aGVuIHVwZGF0aW5nIChwcmV2ZW50cyBuZXcgaGlzdG9yeSBlbnRyeSkgKi9cbiAgcmVwbGFjZT86IGJvb2xlYW47XG4gIC8qKiAoTGVnYWN5KSByYXcgZmxhZyByZXRhaW5lZCBmb3IgYmFja3dhcmRzIGNvbXBhdCDigJMgbm8gZWZmZWN0ICh0eXBlZCBtb2RlbCByZW1vdmVkKSAqL1xuICByYXc/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBTeW5jaHJvbmlzZXMgYSBzaW5nbGUgcXVlcnkgcGFyYW1ldGVyIHdpdGggY29tcG9uZW50IHN0YXRlLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBRdWVyeSBrZXkgdG8gcmVhZCBhbmQgdXBkYXRlLlxuICogQHBhcmFtIG9wdHMgLSBCZWhhdmlvdXJhbCBvcHRpb25zIChkZWZhdWx0IHZhbHVlLCBvbWl0SWZEZWZhdWx0LCByZXBsYWNlKS5cbiAqIEByZXR1cm5zIFR1cGxlIGNvbnRhaW5pbmcgY3VycmVudCB2YWx1ZSBhbmQgc2V0dGVyIHRoYXQgdXBkYXRlcyBxdWVyeSB2aWEgbmF2aWdhdGUuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VCA9IHVua25vd24+KFxuICBrZXk6IHN0cmluZyxcbiAgb3B0czogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4gPSB7fSxcbik6IFtcbiAgVCB8IHVuZGVmaW5lZCxcbiAgKG5leHQ6IFQgfCB1bmRlZmluZWQsIG5hdk9wdHM/OiB7IHJlcGxhY2U/OiBib29sZWFuIH0pID0+IHZvaWQsXG5dIHtcbiAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChSb3V0aW5nQ29udGV4dCk7XG4gIGNvbnN0IHsgZGVmYXVsdFZhbHVlLCBvbWl0SWZEZWZhdWx0ID0gdHJ1ZSB9ID0gb3B0cztcbiAgY29uc3QgZW50cnkgPSBjdHg/LmdldCgpO1xuICBjb25zdCByYXdRdWVyeSA9IGVudHJ5Py5xdWVyeTtcblxuICBsZXQgY3VycmVudDogdW5rbm93bjtcbiAgY29uc3QgcmF3VmFsID0gcmF3UXVlcnk/LltrZXldO1xuICBpZiAoQXJyYXkuaXNBcnJheShyYXdWYWwpKSB7XG4gICAgLy8gcGljayBsYXN0IGZvciBzeW1tZXRyeSB3aXRoIHR5cGVkIHBhcnNpbmcgb2YgcHJpbWl0aXZlc1xuICAgIGN1cnJlbnQgPSByYXdWYWxbcmF3VmFsLmxlbmd0aCAtIDFdO1xuICB9IGVsc2UgaWYgKHJhd1ZhbCAhPSBudWxsKSB7XG4gICAgY3VycmVudCA9IHJhd1ZhbDtcbiAgfVxuICBpZiAoY3VycmVudCA9PT0gdW5kZWZpbmVkICYmIGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY3VycmVudCA9IGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHNldFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgKG5leHQ6IFQgfCB1bmRlZmluZWQsIG5hdk9wdHM/OiB7IHJlcGxhY2U/OiBib29sZWFuIH0pID0+IHtcbiAgICAgIGlmIChjdHggPT0gbnVsbCkgcmV0dXJuO1xuICAgICAgY29uc3QgcmVwbGFjZSA9IG5hdk9wdHM/LnJlcGxhY2UgPz8gb3B0cy5yZXBsYWNlO1xuICAgICAgY29uc3QgZW50cnlOb3cgPSBjdHguZ2V0KCk7XG4gICAgICAvLyBCYXNlIG9iamVjdDogc3RhcnQgZnJvbSBleGlzdGluZyByYXcgcXVlcnkgY2xvbmUgKHR5cGVkIG1vZGVsIHJlbW92ZWQpXG4gICAgICBjb25zdCBzb3VyY2UgPSBlbnRyeU5vdy5xdWVyeTtcbiAgICAgIGNvbnN0IGJhc2U6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoc291cmNlKSkge1xuICAgICAgICBiYXNlW2tdID0gc291cmNlW2tdO1xuICAgICAgfVxuICAgICAgaWYgKCEobmV4dCA9PT0gdW5kZWZpbmVkIHx8IChvbWl0SWZEZWZhdWx0ICYmIG5leHQgPT09IGRlZmF1bHRWYWx1ZSkpKSB7XG4gICAgICAgIGJhc2Vba2V5XSA9IG5leHQ7XG4gICAgICB9IGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiYXNlLCBrZXkpKSB7XG4gICAgICAgIC8vIHJlYnVpbGQgd2l0aG91dCBrZXlcbiAgICAgICAgY29uc3QgcmVidWlsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKGJhc2UpKSB7XG4gICAgICAgICAgaWYgKGsgIT09IGtleSkgcmVidWlsdFtrXSA9IGJhc2Vba107XG4gICAgICAgIH1cbiAgICAgICAgY3R4Lm5hdmlnYXRlKHsgcXVlcnk6IHJlYnVpbHQsIHJlcGxhY2UgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGN0eC5uYXZpZ2F0ZSh7IHF1ZXJ5OiBiYXNlLCByZXBsYWNlIH0pO1xuICAgIH0sXG4gICAgW2N0eCwga2V5LCBvbWl0SWZEZWZhdWx0LCBkZWZhdWx0VmFsdWUsIG9wdHMucmVwbGFjZV0sXG4gICk7XG5cbiAgcmV0dXJuIFtjdXJyZW50IGFzIFQgfCB1bmRlZmluZWQsIHNldFZhbHVlXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type UseSearchParamsOptions = {
|
|
2
|
+
replace?: boolean;
|
|
3
|
+
};
|
|
4
|
+
export type SearchParamsActions = {
|
|
5
|
+
params: URLSearchParams;
|
|
6
|
+
getParam: (key: string) => string | null;
|
|
7
|
+
setParam: (key: string, value: string | null, opts?: UseSearchParamsOptions) => void;
|
|
8
|
+
setParams: (updates: Record<string, string | null | undefined>, opts?: UseSearchParamsOptions) => void;
|
|
9
|
+
};
|
|
10
|
+
export default function useSearchParams(opts?: UseSearchParamsOptions): SearchParamsActions;
|
|
11
|
+
//# sourceMappingURL=useSearchParams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSearchParams.d.ts","sourceRoot":"","sources":["../../src/routing/useSearchParams.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,sBAAsB,GAAG;IAEnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,EAAE,CACR,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,IAAI,CAAC,EAAE,sBAAsB,KAC1B,IAAI,CAAC;IACV,SAAS,EAAE,CACT,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAClD,IAAI,CAAC,EAAE,sBAAsB,KAC1B,IAAI,CAAC;CACX,CAAC;AAKF,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,IAAI,GAAE,sBAA2B,GAChC,mBAAmB,CAmFrB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { useCallback, useContext, useMemo } from 'react';
|
|
2
|
+
import useLocation from './useLocation.js';
|
|
3
|
+
import RoutingContext from './RoutingContext.js';
|
|
4
|
+
export default function useSearchParams(opts = {}) {
|
|
5
|
+
const routing = useContext(RoutingContext);
|
|
6
|
+
const location = useLocation();
|
|
7
|
+
const params = useMemo(() => {
|
|
8
|
+
return new URLSearchParams(location.search);
|
|
9
|
+
}, [location.search]);
|
|
10
|
+
const getParam = useCallback((key) => {
|
|
11
|
+
return params.get(key);
|
|
12
|
+
}, [params]);
|
|
13
|
+
const setParam = useCallback((key, value, nextOpts) => {
|
|
14
|
+
if (routing == null) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const { pathname, search, hash } = routing.get().location;
|
|
18
|
+
const nextParams = new URLSearchParams(search);
|
|
19
|
+
if (value == null || value === '') {
|
|
20
|
+
nextParams.delete(key);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
nextParams.set(key, value);
|
|
24
|
+
}
|
|
25
|
+
const qs = nextParams.toString();
|
|
26
|
+
let nextSearch = '';
|
|
27
|
+
if (qs !== '') {
|
|
28
|
+
nextSearch = `?${qs}`;
|
|
29
|
+
}
|
|
30
|
+
const replace = nextOpts?.replace ?? opts.replace;
|
|
31
|
+
if (replace) {
|
|
32
|
+
routing.history.set({ pathname, search: nextSearch, hash });
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
routing.history.push({ pathname, search: nextSearch, hash });
|
|
36
|
+
}
|
|
37
|
+
}, [opts.replace, routing]);
|
|
38
|
+
const setParams = useCallback((updates, nextOpts) => {
|
|
39
|
+
if (routing == null) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const { pathname, search, hash } = routing.get().location;
|
|
43
|
+
const nextParams = new URLSearchParams(search);
|
|
44
|
+
Object.entries(updates).forEach(([key, value]) => {
|
|
45
|
+
if (value == null || value === '') {
|
|
46
|
+
nextParams.delete(key);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
nextParams.set(key, value);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
const qs = nextParams.toString();
|
|
53
|
+
let nextSearch = '';
|
|
54
|
+
if (qs !== '') {
|
|
55
|
+
nextSearch = `?${qs}`;
|
|
56
|
+
}
|
|
57
|
+
const replace = nextOpts?.replace ?? opts.replace;
|
|
58
|
+
if (replace) {
|
|
59
|
+
routing.history.set({ pathname, search: nextSearch, hash });
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
routing.history.push({ pathname, search: nextSearch, hash });
|
|
63
|
+
}
|
|
64
|
+
}, [opts.replace, routing]);
|
|
65
|
+
return { params, getParam, setParam, setParams };
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlU2VhcmNoUGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRpbmcvdXNlU2VhcmNoUGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6RCxPQUFPLFdBQVcsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQXdCakQsTUFBTSxDQUFDLE9BQU8sVUFBVSxlQUFlLENBQ3JDLE9BQStCLEVBQUU7SUFFakMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO0lBRS9CLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDMUIsT0FBTyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFdEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUMxQixDQUFDLEdBQVcsRUFBRSxFQUFFO1FBQ2QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUMsRUFDRCxDQUFDLE1BQU0sQ0FBQyxDQUNULENBQUM7SUFFRixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQzFCLENBQUMsR0FBVyxFQUFFLEtBQW9CLEVBQUUsUUFBaUMsRUFBRSxFQUFFO1FBQ3ZFLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUMxRCxNQUFNLFVBQVUs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RUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VMb2NhdGlvbiBmcm9tICcuL3VzZUxvY2F0aW9uLmpzJztcbmltcG9ydCBSb3V0aW5nQ29udGV4dCBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcblxuZXhwb3J0IHR5cGUgVXNlU2VhcmNoUGFyYW1zT3B0aW9ucyA9IHtcbiAgLyoqIFJlcGxhY2UgaW5zdGVhZCBvZiBwdXNoIHdoZW4gdXBkYXRpbmcgKHByZXZlbnRzIG5ldyBoaXN0b3J5IGVudHJ5KSAqL1xuICByZXBsYWNlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFNlYXJjaFBhcmFtc0FjdGlvbnMgPSB7XG4gIHBhcmFtczogVVJMU2VhcmNoUGFyYW1zO1xuICBnZXRQYXJhbTogKGtleTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsO1xuICBzZXRQYXJhbTogKFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuICAgIG9wdHM/OiBVc2VTZWFyY2hQYXJhbXNPcHRpb25zLFxuICApID0+IHZvaWQ7XG4gIHNldFBhcmFtczogKFxuICAgIHVwZGF0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+LFxuICAgIG9wdHM/OiBVc2VTZWFyY2hQYXJhbXNPcHRpb25zLFxuICApID0+IHZvaWQ7XG59O1xuXG4vKipcbiAqIFJldHVybnMgVVJMU2VhcmNoUGFyYW1zIHBsdXMgaGVscGVycyB0byB1cGRhdGUgdGhlIHNlYXJjaCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVNlYXJjaFBhcmFtcyhcbiAgb3B0czogVXNlU2VhcmNoUGFyYW1zT3B0aW9ucyA9IHt9LFxuKTogU2VhcmNoUGFyYW1zQWN0aW9ucyB7XG4gIGNvbnN0IHJvdXRpbmcgPSB1c2VDb250ZXh0KFJvdXRpbmdDb250ZXh0KTtcbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IHBhcmFtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCk7XG4gIH0sIFtsb2NhdGlvbi5zZWFyY2hdKTtcblxuICBjb25zdCBnZXRQYXJhbSA9IHVzZUNhbGxiYWNrKFxuICAgIChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHBhcmFtcy5nZXQoa2V5KTtcbiAgICB9LFxuICAgIFtwYXJhbXNdLFxuICApO1xuXG4gIGNvbnN0IHNldFBhcmFtID0gdXNlQ2FsbGJhY2soXG4gICAgKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCwgbmV4dE9wdHM/OiBVc2VTZWFyY2hQYXJhbXNPcHRpb25zKSA9PiB7XG4gICAgICBpZiAocm91dGluZyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoLCBoYXNoIH0gPSByb3V0aW5nLmdldCgpLmxvY2F0aW9uO1xuICAgICAgY29uc3QgbmV4dFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoc2VhcmNoKTtcblxuICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgIG5leHRQYXJhbXMuZGVsZXRlKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0UGFyYW1zLnNldChrZXksIHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXMgPSBuZXh0UGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgICBsZXQgbmV4dFNlYXJjaCA9ICcnO1xuICAgICAgaWYgKHFzICE9PSAnJykge1xuICAgICAgICBuZXh0U2VhcmNoID0gYD8ke3FzfWA7XG4gICAgICB9XG4gICAgICBjb25zdCByZXBsYWNlID0gbmV4dE9wdHM/LnJlcGxhY2UgPz8gb3B0cy5yZXBsYWNlO1xuXG4gICAgICBpZiAocmVwbGFjZSkge1xuICAgICAgICByb3V0aW5nLmhpc3Rvcnkuc2V0KHsgcGF0aG5hbWUsIHNlYXJjaDogbmV4dFNlYXJjaCwgaGFzaCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvdXRpbmcuaGlzdG9yeS5wdXNoKHsgcGF0aG5hbWUsIHNlYXJjaDogbmV4dFNlYXJjaCwgaGFzaCB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvcHRzLnJlcGxhY2UsIHJvdXRpbmddLFxuICApO1xuXG4gIGNvbnN0IHNldFBhcmFtcyA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHVwZGF0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+LFxuICAgICAgbmV4dE9wdHM/OiBVc2VTZWFyY2hQYXJhbXNPcHRpb25zLFxuICAgICkgPT4ge1xuICAgICAgaWYgKHJvdXRpbmcgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCwgaGFzaCB9ID0gcm91dGluZy5nZXQoKS5sb2NhdGlvbjtcbiAgICAgIGNvbnN0IG5leHRQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHNlYXJjaCk7XG5cbiAgICAgIE9iamVjdC5lbnRyaWVzKHVwZGF0ZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICBuZXh0UGFyYW1zLmRlbGV0ZShrZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHRQYXJhbXMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcXMgPSBuZXh0UGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgICBsZXQgbmV4dFNlYXJjaCA9ICcnO1xuICAgICAgaWYgKHFzICE9PSAnJykge1xuICAgICAgICBuZXh0U2VhcmNoID0gYD8ke3FzfWA7XG4gICAgICB9XG4gICAgICBjb25zdCByZXBsYWNlID0gbmV4dE9wdHM/LnJlcGxhY2UgPz8gb3B0cy5yZXBsYWNlO1xuXG4gICAgICBpZiAocmVwbGFjZSkge1xuICAgICAgICByb3V0aW5nLmhpc3Rvcnkuc2V0KHsgcGF0aG5hbWUsIHNlYXJjaDogbmV4dFNlYXJjaCwgaGFzaCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvdXRpbmcuaGlzdG9yeS5wdXNoKHsgcGF0aG5hbWUsIHNlYXJjaDogbmV4dFNlYXJjaCwgaGFzaCB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvcHRzLnJlcGxhY2UsIHJvdXRpbmddLFxuICApO1xuXG4gIHJldHVybiB7IHBhcmFtcywgZ2V0UGFyYW0sIHNldFBhcmFtLCBzZXRQYXJhbXMgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Schema as FilterSchema } from '@plumile/filter-query';
|
|
2
|
+
export declare function buildCombinedSearch(opts: {
|
|
3
|
+
filters?: Record<string, unknown>;
|
|
4
|
+
querySchema?: FilterSchema;
|
|
5
|
+
query?: Record<string, unknown>;
|
|
6
|
+
}): string;
|
|
7
|
+
export default buildCombinedSearch;
|
|
8
|
+
//# sourceMappingURL=buildCombinedSearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildCombinedSearch.d.ts","sourceRoot":"","sources":["../../src/tools/buildCombinedSearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,IAAI,YAAY,EAC5B,MAAM,uBAAuB,CAAC;AA4E/B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,GAAG,MAAM,CA6BT;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { stringify as stringifyFilters, } from '@plumile/filter-query';
|
|
2
|
+
function buildSchemaKeySet(schema) {
|
|
3
|
+
const keys = new Set();
|
|
4
|
+
const fields = Object.keys(schema);
|
|
5
|
+
for (const field of fields) {
|
|
6
|
+
const descriptor = schema[field];
|
|
7
|
+
if (descriptor != null) {
|
|
8
|
+
const fieldKey = String(field);
|
|
9
|
+
keys.add(fieldKey);
|
|
10
|
+
for (const operator of descriptor.operators) {
|
|
11
|
+
keys.add(`${fieldKey}.${operator}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return keys;
|
|
16
|
+
}
|
|
17
|
+
function stringifyRawQuery(query, reservedKeys) {
|
|
18
|
+
const parts = [];
|
|
19
|
+
const keys = Object.keys(query).sort();
|
|
20
|
+
for (const key of keys) {
|
|
21
|
+
if (!reservedKeys?.has(key)) {
|
|
22
|
+
const value = query[key];
|
|
23
|
+
if (value != null) {
|
|
24
|
+
if (Array.isArray(value)) {
|
|
25
|
+
for (const entry of value) {
|
|
26
|
+
if (entry != null) {
|
|
27
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(entry))}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else if (typeof value === 'object') {
|
|
32
|
+
const serialized = JSON.stringify(value);
|
|
33
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(serialized)}`);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return parts.join('&');
|
|
42
|
+
}
|
|
43
|
+
export function buildCombinedSearch(opts) {
|
|
44
|
+
const { filters, querySchema, query } = opts;
|
|
45
|
+
let filterPart = '';
|
|
46
|
+
let reservedKeys;
|
|
47
|
+
if (querySchema != null) {
|
|
48
|
+
reservedKeys = buildSchemaKeySet(querySchema);
|
|
49
|
+
}
|
|
50
|
+
if (querySchema != null && filters != null) {
|
|
51
|
+
try {
|
|
52
|
+
const raw = stringifyFilters(filters, querySchema);
|
|
53
|
+
if (raw !== '')
|
|
54
|
+
filterPart = raw;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
let rawPart = '';
|
|
60
|
+
let rawSource;
|
|
61
|
+
if (query != null) {
|
|
62
|
+
rawSource = query;
|
|
63
|
+
}
|
|
64
|
+
else if (querySchema == null) {
|
|
65
|
+
rawSource = filters;
|
|
66
|
+
}
|
|
67
|
+
if (rawSource != null) {
|
|
68
|
+
rawPart = stringifyRawQuery(rawSource, reservedKeys);
|
|
69
|
+
}
|
|
70
|
+
const combined = [filterPart, rawPart].filter(Boolean).join('&');
|
|
71
|
+
if (combined === '')
|
|
72
|
+
return '';
|
|
73
|
+
return `?${combined}`;
|
|
74
|
+
}
|
|
75
|
+
export default buildCombinedSearch;
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRDb21iaW5lZFNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9idWlsZENvbWJpbmVkU2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLElBQUksZ0JBQWdCLEdBRTlCLE1BQU0sdUJBQXVCLENBQUM7QUFhL0IsU0FBUyxpQkFBaUIsQ0FBQyxNQUFvQjtJQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQy9CLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkIsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFLRCxTQUFTLGlCQUFpQixDQUN4QixLQUE4QixFQUM5QixZQUEwQjtJQUUxQixNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDM0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc3RyaW5naWZ5IGFzIHN0cmluZ2lmeUZpbHRlcnMsXG4gIHR5cGUgU2NoZW1hIGFzIEZpbHRlclNjaGVtYSxcbn0gZnJvbSAnQHBsdW1pbGUvZmlsdGVyLXF1ZXJ5JztcblxudHlwZSBSYXdRdWVyeVNjYWxhciA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW47XG50eXBlIFJhd1F1ZXJ5VmFsdWUgPVxuICB8IFJhd1F1ZXJ5U2NhbGFyXG4gIHwgbnVsbFxuICB8IHVuZGVmaW5lZFxuICB8IHJlYWRvbmx5IChSYXdRdWVyeVNjYWxhciB8IG51bGwgfCB1bmRlZmluZWQpW11cbiAgfCAoUmF3UXVlcnlTY2FsYXIgfCBudWxsIHwgdW5kZWZpbmVkKVtdO1xuXG4vKipcbiAqIEJ1aWxkIGEgc2V0IG9mIHJlc2VydmVkIGtleXMgZGVyaXZlZCBmcm9tIHNjaGVtYSBvcGVyYXRvcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkU2NoZW1hS2V5U2V0KHNjaGVtYTogRmlsdGVyU2NoZW1hKTogU2V0PHN0cmluZz4ge1xuICBjb25zdCBrZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHNjaGVtYSk7XG4gIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IHNjaGVtYVtmaWVsZF07XG4gICAgaWYgKGRlc2NyaXB0b3IgIT0gbnVsbCkge1xuICAgICAgY29uc3QgZmllbGRLZXkgPSBTdHJpbmcoZmllbGQpO1xuICAgICAga2V5cy5hZGQoZmllbGRLZXkpO1xuICAgICAgZm9yIChjb25zdCBvcGVyYXRvciBvZiBkZXNjcmlwdG9yLm9wZXJhdG9ycykge1xuICAgICAgICBrZXlzLmFkZChgJHtmaWVsZEtleX0uJHtvcGVyYXRvcn1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGtleXM7XG59XG5cbi8qKlxuICogU3RyaW5naWZ5IGEgcmF3IHF1ZXJ5IG9iamVjdCwgaWdub3JpbmcgcmVzZXJ2ZWQga2V5cyBhbmQgbmlsIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5UmF3UXVlcnkoXG4gIHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgcmVzZXJ2ZWRLZXlzPzogU2V0PHN0cmluZz4sXG4pOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5KS5zb3J0KCk7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAoIXJlc2VydmVkS2V5cz8uaGFzKGtleSkpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcXVlcnlba2V5XSBhcyBSYXdRdWVyeVZhbHVlIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoZW50cnkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgIFN0cmluZyhlbnRyeSksXG4gICAgICAgICAgICAgICAgKX1gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgICAgYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNlcmlhbGl6ZWQpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgICAgYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyh2YWx1ZSkpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcGFydHMuam9pbignJicpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIHVuaWZpZWQgc2VhcmNoIHN0cmluZyAocHJlZml4ZWQgd2l0aCBgP2ApIGZyb20gZmlsdGVycyB1c2luZyB0aGUgcHJvdmlkZWQgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBvcHRzLmZpbHRlcnMgLSBGaWx0ZXJzIG9iamVjdCB0byBzZXJpYWxpc2UuXG4gKiBAcGFyYW0gb3B0cy5xdWVyeVNjaGVtYSAtIFNjaGVtYSBkZXNjcmliaW5nIGFsbG93ZWQgb3BlcmF0b3JzIChvcHRpb25hbCkuXG4gKiBAcGFyYW0gb3B0cy5xdWVyeSAtIFJhdyBxdWVyeSBvYmplY3QgZm9yIG5vbi1zY2hlbWEga2V5cyAob3B0aW9uYWwpLlxuICogQHJldHVybnMgRW1wdHkgc3RyaW5nIHdoZW4gbm8gZmlsdGVycyBhcmUgcHJvdmlkZWQsIG90aGVyd2lzZSBgP2AgZm9sbG93ZWQgYnkgdGhlIHNlcmlhbGlzZWQgZmlsdGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ29tYmluZWRTZWFyY2gob3B0czoge1xuICBmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHF1ZXJ5U2NoZW1hPzogRmlsdGVyU2NoZW1hO1xuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufSk6IHN0cmluZyB7XG4gIGNvbnN0IHsgZmlsdGVycywgcXVlcnlTY2hlbWEsIHF1ZXJ5IH0gPSBvcHRzO1xuICBsZXQgZmlsdGVyUGFydCA9ICcnO1xuICBsZXQgcmVzZXJ2ZWRLZXlzOiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZDtcbiAgaWYgKHF1ZXJ5U2NoZW1hICE9IG51bGwpIHtcbiAgICByZXNlcnZlZEtleXMgPSBidWlsZFNjaGVtYUtleVNldChxdWVyeVNjaGVtYSk7XG4gIH1cbiAgaWYgKHF1ZXJ5U2NoZW1hICE9IG51bGwgJiYgZmlsdGVycyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhdyA9IHN0cmluZ2lmeUZpbHRlcnMoZmlsdGVycyBhcyBhbnksIHF1ZXJ5U2NoZW1hIGFzIGFueSk7XG4gICAgICBpZiAocmF3ICE9PSAnJykgZmlsdGVyUGFydCA9IHJhdzsgLy8gcmF3IGhhcyBubyBsZWFkaW5nID8gYnkgZGVzaWduIGluIGZpbHRlci1xdWVyeVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gSWdub3JlIHNlcmlhbGl6YXRpb24gZXJyb3JzOyB0cmVhdCBhcyBhYnNlbnQgZmlsdGVyc1xuICAgIH1cbiAgfVxuICBsZXQgcmF3UGFydCA9ICcnO1xuICBsZXQgcmF3U291cmNlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgaWYgKHF1ZXJ5ICE9IG51bGwpIHtcbiAgICByYXdTb3VyY2UgPSBxdWVyeTtcbiAgfSBlbHNlIGlmIChxdWVyeVNjaGVtYSA9PSBudWxsKSB7XG4gICAgcmF3U291cmNlID0gZmlsdGVycztcbiAgfVxuICBpZiAocmF3U291cmNlICE9IG51bGwpIHtcbiAgICByYXdQYXJ0ID0gc3RyaW5naWZ5UmF3UXVlcnkocmF3U291cmNlLCByZXNlcnZlZEtleXMpO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWQgPSBbZmlsdGVyUGFydCwgcmF3UGFydF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyYnKTtcbiAgaWYgKGNvbWJpbmVkID09PSAnJykgcmV0dXJuICcnO1xuICByZXR1cm4gYD8ke2NvbWJpbmVkfWA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJ1aWxkQ29tYmluZWRTZWFyY2g7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAaA,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GACpC,MAAM,EAAE,CAUV;AAeD,wBAAgB,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAEhE"}
|