@plumile/router 0.1.12 → 0.1.13
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/README.md +426 -13
- package/lib/esm/index.d.ts +4 -0
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +5 -1
- package/lib/esm/routing/createRouter.d.ts +1 -0
- package/lib/esm/routing/createRouter.d.ts.map +1 -1
- package/lib/esm/routing/createRouter.js +399 -359
- package/lib/esm/routing/devtools.d.ts +20 -0
- package/lib/esm/routing/devtools.d.ts.map +1 -0
- package/lib/esm/routing/devtools.js +678 -0
- package/lib/esm/routing/filters.d.ts +97 -0
- package/lib/esm/routing/filters.d.ts.map +1 -0
- package/lib/esm/routing/filters.js +557 -0
- package/lib/esm/routing/index.d.ts +6 -0
- package/lib/esm/routing/index.d.ts.map +1 -1
- package/lib/esm/routing/index.js +7 -1
- package/lib/esm/routing/useActiveFilters.d.ts +9 -0
- package/lib/esm/routing/useActiveFilters.d.ts.map +1 -0
- package/lib/esm/routing/useActiveFilters.js +38 -0
- package/lib/esm/routing/useFilterState.d.ts +10 -0
- package/lib/esm/routing/useFilterState.d.ts.map +1 -0
- package/lib/esm/routing/useFilterState.js +14 -0
- package/lib/esm/routing/useNavigate.d.ts +7 -0
- package/lib/esm/routing/useNavigate.d.ts.map +1 -1
- package/lib/esm/routing/useNavigate.js +1 -1
- package/lib/esm/routing/useNavigateWithQuery.d.ts +15 -0
- package/lib/esm/routing/useNavigateWithQuery.d.ts.map +1 -0
- package/lib/esm/routing/useNavigateWithQuery.js +95 -0
- package/lib/esm/routing/useQueryObject.d.ts +18 -0
- package/lib/esm/routing/useQueryObject.d.ts.map +1 -0
- package/lib/esm/routing/useQueryObject.js +107 -0
- package/lib/esm/routing/useStableRefEquality.d.ts +5 -0
- package/lib/esm/routing/useStableRefEquality.d.ts.map +1 -0
- package/lib/esm/routing/useStableRefEquality.js +47 -0
- package/lib/esm/tools/buildSearch.d.ts +8 -2
- package/lib/esm/tools/buildSearch.d.ts.map +1 -1
- package/lib/esm/tools/buildSearch.js +216 -12
- package/lib/esm/types.d.ts +19 -0
- package/lib/esm/types.d.ts.map +1 -1
- package/lib/esm/types.js +1 -1
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/index.d.ts +4 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/routing/createRouter.d.ts +1 -0
- package/lib/types/routing/createRouter.d.ts.map +1 -1
- package/lib/types/routing/devtools.d.ts +20 -0
- package/lib/types/routing/devtools.d.ts.map +1 -0
- package/lib/types/routing/filters.d.ts +97 -0
- package/lib/types/routing/filters.d.ts.map +1 -0
- package/lib/types/routing/index.d.ts +6 -0
- package/lib/types/routing/index.d.ts.map +1 -1
- package/lib/types/routing/useActiveFilters.d.ts +9 -0
- package/lib/types/routing/useActiveFilters.d.ts.map +1 -0
- package/lib/types/routing/useFilterState.d.ts +10 -0
- package/lib/types/routing/useFilterState.d.ts.map +1 -0
- package/lib/types/routing/useNavigate.d.ts +7 -0
- package/lib/types/routing/useNavigate.d.ts.map +1 -1
- package/lib/types/routing/useNavigateWithQuery.d.ts +15 -0
- package/lib/types/routing/useNavigateWithQuery.d.ts.map +1 -0
- package/lib/types/routing/useQueryObject.d.ts +18 -0
- package/lib/types/routing/useQueryObject.d.ts.map +1 -0
- package/lib/types/routing/useStableRefEquality.d.ts +5 -0
- package/lib/types/routing/useStableRefEquality.d.ts.map +1 -0
- package/lib/types/tools/buildSearch.d.ts +8 -2
- package/lib/types/tools/buildSearch.d.ts.map +1 -1
- package/lib/types/types.d.ts +19 -0
- package/lib/types/types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +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;AAG5D,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,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
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;AAG5D,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,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
|
package/lib/esm/routing/index.js
CHANGED
|
@@ -8,4 +8,10 @@ export { default as useQuery } from './useQuery.js';
|
|
|
8
8
|
export { default as useTypedQuery } from './useTypedQuery.js';
|
|
9
9
|
export { default as useNavigate } from './useNavigate.js';
|
|
10
10
|
export { default as useQueryState } from './useQueryState.js';
|
|
11
|
-
|
|
11
|
+
export { defineFilters, numberFilter, stringFilter, useFilters, useQueryFilters, } from './filters.js';
|
|
12
|
+
export { default as useFilterState } from './useFilterState.js';
|
|
13
|
+
export { default as useActiveFilters } from './useActiveFilters.js';
|
|
14
|
+
export { default as useQueryObject } from './useQueryObject.js';
|
|
15
|
+
export { default as useNavigateWithQuery } from './useNavigateWithQuery.js';
|
|
16
|
+
export { default as useStableRefEquality } from './useStableRefEquality.js';
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxJQUFJLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzVELE9BQU8sRUFBRSxPQUFPLElBQUksSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRzVDLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzlFLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsT0FBTyxJQUFJLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE9BQU8sSUFBSSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsYUFBYSxFQUNiLFlBQVksRUFDWixZQUFZLEVBQ1osVUFBVSxFQUNWLGVBQWUsR0FDaEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxJQUFJLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxJQUFJLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTWFpbiByb3V0ZXIgZmFjdG9yeSBmdW5jdGlvblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBjcmVhdGVSb3V0ZXIgfSBmcm9tICcuL2NyZWF0ZVJvdXRlci5qcyc7XG5cbi8vIE5hdmlnYXRpb24gY29tcG9uZW50IHdpdGggcHJlbG9hZGluZyBzdXBwb3J0XG5leHBvcnQgeyBkZWZhdWx0IGFzIExpbmsgfSBmcm9tICcuL0xpbmsuanMnO1xuXG4vLyBSb3V0ZSBjb21wb25lbnQgd3JhcHBlciBmb3IgaGFuZGxpbmcgaW5kaXZpZHVhbCByb3V0ZXNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUm91dGVDb21wb25lbnQgfSBmcm9tICcuL1JvdXRlQ29tcG9uZW50LmpzJztcblxuLy8gSW50ZXJuYWwgd3JhcHBlciBjb21wb25lbnQgZm9yIHJvdXRlIHJlbmRlcmluZ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSb3V0ZUNvbXBvbmVudFdyYXBwZXIgfSBmcm9tICcuL1JvdXRlQ29tcG9uZW50V3JhcHBlci5qcyc7XG5cbi8vIE1haW4gcmVuZGVyZXIgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgY3VycmVudCByb3V0ZVxuZXhwb3J0IHsgZGVmYXVsdCBhcyBSb3V0ZXJSZW5kZXJlciB9IGZyb20gJy4vUm91dGVyUmVuZGVyZXIuanMnO1xuXG4vLyBSZWFjdCBjb250ZXh0IGZvciBzaGFyaW5nIHJvdXRlciBzdGF0ZVxuZXhwb3J0IHsgZGVmYXVsdCBhcyBSb3V0aW5nQ29udGV4dCB9IGZyb20gJy4vUm91dGluZ0NvbnRleHQuanMnO1xuLy8gSG9vayB0byBhY2Nlc3MgcmF3IHF1ZXJ5IHBhcmFtZXRlcnNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlUXVlcnkgfSBmcm9tICcuL3VzZVF1ZXJ5LmpzJztcbi8vIEhvb2sgdG8gYWNjZXNzIHR5cGVkIHF1ZXJ5IHBhcmFtZXRlcnNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlVHlwZWRRdWVyeSB9IGZyb20gJy4vdXNlVHlwZWRRdWVyeS5qcyc7XG4vLyBIb29rIHRvIG5hdmlnYXRlIHByb2dyYW1tYXRpY2FsbHlcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlTmF2aWdhdGUgfSBmcm9tICcuL3VzZU5hdmlnYXRlLmpzJztcbi8vIEhvb2sgdG8gYmluZCBhIHNwZWNpZmljIHF1ZXJ5IHBhcmFtIHRvIGNvbXBvbmVudCBzdGF0ZVxuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VRdWVyeVN0YXRlIH0gZnJvbSAnLi91c2VRdWVyeVN0YXRlLmpzJztcbmV4cG9ydCB7XG4gIGRlZmluZUZpbHRlcnMsXG4gIG51bWJlckZpbHRlcixcbiAgc3RyaW5nRmlsdGVyLFxuICB1c2VGaWx0ZXJzLFxuICB1c2VRdWVyeUZpbHRlcnMsXG59IGZyb20gJy4vZmlsdGVycy5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUZpbHRlclN0YXRlIH0gZnJvbSAnLi91c2VGaWx0ZXJTdGF0ZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUFjdGl2ZUZpbHRlcnMgfSBmcm9tICcuL3VzZUFjdGl2ZUZpbHRlcnMuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VRdWVyeU9iamVjdCB9IGZyb20gJy4vdXNlUXVlcnlPYmplY3QuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VOYXZpZ2F0ZVdpdGhRdWVyeSB9IGZyb20gJy4vdXNlTmF2aWdhdGVXaXRoUXVlcnkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VTdGFibGVSZWZFcXVhbGl0eSB9IGZyb20gJy4vdXNlU3RhYmxlUmVmRXF1YWxpdHkuanMnO1xuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type DefinedFilterSchema } from './filters.js';
|
|
2
|
+
export interface ActiveFilterEntry {
|
|
3
|
+
field: string;
|
|
4
|
+
operator: string;
|
|
5
|
+
values: any[];
|
|
6
|
+
}
|
|
7
|
+
export declare function useActiveFilters<F extends DefinedFilterSchema<any>>(schema: F): ActiveFilterEntry[];
|
|
8
|
+
export default useActiveFilters;
|
|
9
|
+
//# sourceMappingURL=useActiveFilters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useActiveFilters.d.ts","sourceRoot":"","sources":["../../../src/routing/useActiveFilters.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,GAAG,EAAE,CAAC;CACf;AAQD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,mBAAmB,CAAC,GAAG,CAAC,EACjE,MAAM,EAAE,CAAC,GACR,iBAAiB,EAAE,CAgCrB;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { useFilters } from './filters.js';
|
|
3
|
+
export function useActiveFilters(schema) {
|
|
4
|
+
const [filters] = useFilters(schema);
|
|
5
|
+
const entries = useMemo(() => {
|
|
6
|
+
const acc = [];
|
|
7
|
+
const filtersObj = filters;
|
|
8
|
+
for (const field of Object.keys(filtersObj)) {
|
|
9
|
+
const stateUnknown = filtersObj[field];
|
|
10
|
+
if (stateUnknown == null || typeof stateUnknown !== 'object') {
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
const state = stateUnknown;
|
|
14
|
+
for (const op of Object.keys(state)) {
|
|
15
|
+
const raw = state[op];
|
|
16
|
+
if (raw == null) {
|
|
17
|
+
}
|
|
18
|
+
else if (Array.isArray(raw) && raw.length === 0) {
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
let values;
|
|
22
|
+
if (Array.isArray(raw)) {
|
|
23
|
+
values = raw;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
values = [raw];
|
|
27
|
+
}
|
|
28
|
+
acc.push({ field, operator: op, values });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return acc;
|
|
34
|
+
}, [filters]);
|
|
35
|
+
return entries;
|
|
36
|
+
}
|
|
37
|
+
export default useActiveFilters;
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlQWN0aXZlRmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0aW5nL3VzZUFjdGl2ZUZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNoQyxPQUFPLEVBQUUsVUFBVSxFQUE0QixNQUFNLGNBQWMsQ0FBQztBQWNwRSxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLE1BQVM7SUFFVCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBc0IsR0FBRyxFQUFFO1FBQ2hELE1BQU0sR0FBRyxHQUF3QixFQUFFLENBQUM7UUFDcEMsTUFBTSxVQUFVLEdBQUcsT0FBa0MsQ0FBQztRQUN0RCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsSUFBSSxZQUFZLElBQUksSUFBSSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBRS9ELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEtBQUssR0FBRyxZQUF1QyxDQUFDO2dCQUN0RCxLQUFLLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDcEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN0QixJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFFbEIsQ0FBQzt5QkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFFcEQsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksTUFBYSxDQUFDO3dCQUNsQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFDdkIsTUFBTSxHQUFHLEdBQUcsQ0FBQzt3QkFDZixDQUFDOzZCQUFNLENBQUM7NEJBQ04sTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ2pCLENBQUM7d0JBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQzVDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELGVBQWUsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRmlsdGVycywgdHlwZSBEZWZpbmVkRmlsdGVyU2NoZW1hIH0gZnJvbSAnLi9maWx0ZXJzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVGaWx0ZXJFbnRyeSB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIG9wZXJhdG9yOiBzdHJpbmc7XG4gIHZhbHVlczogYW55W107XG59XG5cbi8qKlxuICogdXNlQWN0aXZlRmlsdGVyc1xuICogRGVyaXZlcyBhIGZsYXQgbGlzdCBvZiBhY3RpdmUgZmlsdGVyIG9wZXJhdG9yIGVudHJpZXMgZm9yIFVJIHJlbmRlcmluZyAoY2hpcHMvYmFkZ2VzKS5cbiAqIEVhY2ggZW50cnkgY29udGFpbnMgZmllbGQsIG9wZXJhdG9yIGFuZCBhbiBhcnJheSBvZiB2YWx1ZXMgKGFscmVhZHkgbm9ybWFsaXplZCkuXG4gKiBFbXB0eSBhcnJheXMgLyB1bmRlZmluZWQgb3BlcmF0b3JzIGFyZSBza2lwcGVkLiBCZXR3ZWVuIHR1cGxlcyBhcmUgcGFzc2VkIHRocm91Z2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVGaWx0ZXJzPEYgZXh0ZW5kcyBEZWZpbmVkRmlsdGVyU2NoZW1hPGFueT4+KFxuICBzY2hlbWE6IEYsXG4pOiBBY3RpdmVGaWx0ZXJFbnRyeVtdIHtcbiAgY29uc3QgW2ZpbHRlcnNdID0gdXNlRmlsdGVycyhzY2hlbWEpO1xuICBjb25zdCBlbnRyaWVzID0gdXNlTWVtbzxBY3RpdmVGaWx0ZXJFbnRyeVtdPigoKSA9PiB7XG4gICAgY29uc3QgYWNjOiBBY3RpdmVGaWx0ZXJFbnRyeVtdID0gW107XG4gICAgY29uc3QgZmlsdGVyc09iaiA9IGZpbHRlcnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3Qua2V5cyhmaWx0ZXJzT2JqKSkge1xuICAgICAgY29uc3Qgc3RhdGVVbmtub3duID0gZmlsdGVyc09ialtmaWVsZF07XG4gICAgICBpZiAoc3RhdGVVbmtub3duID09IG51bGwgfHwgdHlwZW9mIHN0YXRlVW5rbm93biAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gc2tpcFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBzdGF0ZVVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIGZvciAoY29uc3Qgb3Agb2YgT2JqZWN0LmtleXMoc3RhdGUpKSB7XG4gICAgICAgICAgY29uc3QgcmF3ID0gc3RhdGVbb3BdO1xuICAgICAgICAgIGlmIChyYXcgPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gc2tpcFxuICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyYXcpICYmIHJhdy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIHNraXAgZW1wdHkgYXJyYXlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHZhbHVlczogYW55W107XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyYXcpKSB7XG4gICAgICAgICAgICAgIHZhbHVlcyA9IHJhdztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHZhbHVlcyA9IFtyYXddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWNjLnB1c2goeyBmaWVsZCwgb3BlcmF0b3I6IG9wLCB2YWx1ZXMgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtmaWx0ZXJzXSk7XG4gIHJldHVybiBlbnRyaWVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VBY3RpdmVGaWx0ZXJzO1xuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type DefinedFilterSchema, type InferFilters } from './filters.js';
|
|
2
|
+
export interface UseFilterStateOptions {
|
|
3
|
+
replace?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function useFilterState<F extends DefinedFilterSchema<any>, Field extends keyof InferFilters<F['schema']>, Op extends keyof InferFilters<F['schema']>[Field]>(schema: F, field: Field, operator: Op, opts?: UseFilterStateOptions): [
|
|
6
|
+
InferFilters<F['schema']>[Field][Op],
|
|
7
|
+
(next: InferFilters<F['schema']>[Field][Op]) => void
|
|
8
|
+
];
|
|
9
|
+
export default useFilterState;
|
|
10
|
+
//# sourceMappingURL=useFilterState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFilterState.d.ts","sourceRoot":"","sources":["../../../src/routing/useFilterState.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAElB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAOD,wBAAgB,cAAc,CAC5B,CAAC,SAAS,mBAAmB,CAAC,GAAG,CAAC,EAClC,KAAK,SAAS,MAAM,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAC7C,EAAE,SAAS,MAAM,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAEjD,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,EAAE,EACZ,IAAI,GAAE,qBAA0B,GAC/B;IACD,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI;CACrD,CAaA;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import { useFilters, } from './filters.js';
|
|
3
|
+
export function useFilterState(schema, field, operator, opts = {}) {
|
|
4
|
+
const [filters, helpers] = useFilters(schema);
|
|
5
|
+
const value = filters[field]?.[operator];
|
|
6
|
+
const setValue = useCallback((next) => {
|
|
7
|
+
helpers.patch({ [field]: { [operator]: next } }, {
|
|
8
|
+
replace: opts.replace,
|
|
9
|
+
});
|
|
10
|
+
}, [helpers, field, operator, opts.replace]);
|
|
11
|
+
return [value, setValue];
|
|
12
|
+
}
|
|
13
|
+
export default useFilterState;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlRmlsdGVyU3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy91c2VGaWx0ZXJTdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3BDLE9BQU8sRUFHTCxVQUFVLEdBQ1gsTUFBTSxjQUFjLENBQUM7QUFXdEIsTUFBTSxVQUFVLGNBQWMsQ0FLNUIsTUFBUyxFQUNULEtBQVksRUFDWixRQUFZLEVBQ1osT0FBOEIsRUFBRTtJQUtoQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU5QyxNQUFNLEtBQUssR0FBSSxPQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQzFCLENBQUMsSUFBUyxFQUFFLEVBQUU7UUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQVMsRUFBRTtZQUN0RCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxFQUNELENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUN6QyxDQUFDO0lBQ0YsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsZUFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIHR5cGUgRGVmaW5lZEZpbHRlclNjaGVtYSxcbiAgdHlwZSBJbmZlckZpbHRlcnMsXG4gIHVzZUZpbHRlcnMsXG59IGZyb20gJy4vZmlsdGVycy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlRmlsdGVyU3RhdGVPcHRpb25zIHtcbiAgcmVwbGFjZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogTmFycm93IGhvb2sgZm9jdXNpbmcgb24gYSBzaW5nbGUgZmllbGQrb3BlcmF0b3Igd2l0aGluIHRoZSBmaWx0ZXJzIHNjaGVtYS5cbiAqIFJldHVybnMgW3ZhbHVlLCBzZXRWYWx1ZV0uIEZvciBtdWx0aS12YWx1ZWQgb3BlcmF0b3JzIHRoZSB2YWx1ZSBpcyBhbiBhcnJheTtcbiAqIGZvciBgZXhpc3RzYCBpdCBpcyBhIGJvb2xlYW4gfCB1bmRlZmluZWQ7IGZvciByYW5nZSAoYGJldHdlZW5gKSBpdCBpcyBhbiBhcnJheSBvZiB0dXBsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VGaWx0ZXJTdGF0ZTxcbiAgRiBleHRlbmRzIERlZmluZWRGaWx0ZXJTY2hlbWE8YW55PixcbiAgRmllbGQgZXh0ZW5kcyBrZXlvZiBJbmZlckZpbHRlcnM8Rlsnc2NoZW1hJ10+LFxuICBPcCBleHRlbmRzIGtleW9mIEluZmVyRmlsdGVyczxGWydzY2hlbWEnXT5bRmllbGRdLFxuPihcbiAgc2NoZW1hOiBGLFxuICBmaWVsZDogRmllbGQsXG4gIG9wZXJhdG9yOiBPcCxcbiAgb3B0czogVXNlRmlsdGVyU3RhdGVPcHRpb25zID0ge30sXG4pOiBbXG4gIEluZmVyRmlsdGVyczxGWydzY2hlbWEnXT5bRmllbGRdW09wXSxcbiAgKG5leHQ6IEluZmVyRmlsdGVyczxGWydzY2hlbWEnXT5bRmllbGRdW09wXSkgPT4gdm9pZCxcbl0ge1xuICBjb25zdCBbZmlsdGVycywgaGVscGVyc10gPSB1c2VGaWx0ZXJzKHNjaGVtYSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcbiAgY29uc3QgdmFsdWUgPSAoZmlsdGVycyBhcyBhbnkpW2ZpZWxkXT8uW29wZXJhdG9yXTtcbiAgY29uc3Qgc2V0VmFsdWUgPSB1c2VDYWxsYmFjayhcbiAgICAobmV4dDogYW55KSA9PiB7XG4gICAgICBoZWxwZXJzLnBhdGNoKHsgW2ZpZWxkXTogeyBbb3BlcmF0b3JdOiBuZXh0IH0gfSBhcyBhbnksIHtcbiAgICAgICAgcmVwbGFjZTogb3B0cy5yZXBsYWNlLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbaGVscGVycywgZmllbGQsIG9wZXJhdG9yLCBvcHRzLnJlcGxhY2VdLFxuICApO1xuICByZXR1cm4gW3ZhbHVlLCBzZXRWYWx1ZV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUZpbHRlclN0YXRlO1xuIl19
|
|
@@ -2,5 +2,12 @@ export default function useNavigate(): (opts: {
|
|
|
2
2
|
pathname?: string;
|
|
3
3
|
query?: Record<string, any>;
|
|
4
4
|
replace?: boolean;
|
|
5
|
+
filters?: Record<string, any>;
|
|
6
|
+
filterSchema?: {
|
|
7
|
+
__defined: true;
|
|
8
|
+
schema: Record<string, any>;
|
|
9
|
+
};
|
|
10
|
+
batch?: boolean;
|
|
11
|
+
immediate?: boolean;
|
|
5
12
|
}) => void;
|
|
6
13
|
//# sourceMappingURL=useNavigate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigate.d.ts","sourceRoot":"","sources":["../../../src/routing/useNavigate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useNavigate.d.ts","sourceRoot":"","sources":["../../../src/routing/useNavigate.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,UAAU,WAAW,IAAI,CAAC,IAAI,EAAE;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC;IAChE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,KAAK,IAAI,CAST"}
|
|
@@ -8,4 +8,4 @@ export default function useNavigate() {
|
|
|
8
8
|
ctx.navigate(opts);
|
|
9
9
|
}, [ctx]);
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTmF2aWdhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy91c2VOYXZpZ2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNoRCxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQVdqRCxNQUFNLENBQUMsT0FBTyxVQUFVLFdBQVc7SUFTakMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sV0FBVyxDQUNoQixDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1AsSUFBSSxHQUFHLElBQUksSUFBSTtZQUFFLE9BQU87UUFDeEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDLEVBQ0QsQ0FBQyxHQUFHLENBQUMsQ0FDTixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJvdXRpbmdDb250ZXh0IGZyb20gJy4vUm91dGluZ0NvbnRleHQuanMnO1xuXG4vKipcbiAqIEhvb2sgcmV0dXJuaW5nIGEgbmF2aWdhdGUgZnVuY3Rpb24uXG4gKiBuYXZpZ2F0ZSh7IHBhdGhuYW1lPywgcXVlcnk/LCBmaWx0ZXJzPywgZmlsdGVyU2NoZW1hPywgcmVwbGFjZT8gfSlcbiAqIC0gcGF0aG5hbWU6IHRhcmdldCBwYXRoIChkZWZhdWx0cyBjdXJyZW50KVxuICogLSBxdWVyeTogdHlwZWQgb3IgcmF3IHF1ZXJ5IG9iamVjdCAoc2VyaWFsaXplZCB1c2luZyByb3V0ZSBzY2hlbWEgaWYgcHJlc2VudClcbiAqIC0gZmlsdGVyczogc3RydWN0dXJlZCBmaWx0ZXJzIHN0YXRlIHRvIG1lcmdlIChyZXF1aXJlcyBmaWx0ZXJTY2hlbWEpXG4gKiAtIGZpbHRlclNjaGVtYTogZGVmaW5lZCBmaWx0ZXJzIHNjaGVtYSB3cmFwcGVyXG4gKiAtIHJlcGxhY2U6IHdoZXRoZXIgdG8gcmVwbGFjZSBpbnN0ZWFkIG9mIHB1c2hcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTmF2aWdhdGUoKTogKG9wdHM6IHtcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XG4gIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgcmVwbGFjZT86IGJvb2xlYW47XG4gIGZpbHRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBmaWx0ZXJTY2hlbWE/OiB7IF9fZGVmaW5lZDogdHJ1ZTsgc2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH07XG4gIGJhdGNoPzogYm9vbGVhbjtcbiAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbn0pID0+IHZvaWQge1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KFJvdXRpbmdDb250ZXh0KTtcbiAgcmV0dXJuIHVzZUNhbGxiYWNrKFxuICAgIChvcHRzKSA9PiB7XG4gICAgICBpZiAoY3R4ID09IG51bGwpIHJldHVybjtcbiAgICAgIGN0eC5uYXZpZ2F0ZShvcHRzKTtcbiAgICB9LFxuICAgIFtjdHhdLFxuICApO1xufVxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface UseNavigateWithQueryOptions {
|
|
2
|
+
omitDefaults?: boolean;
|
|
3
|
+
raw?: boolean;
|
|
4
|
+
replace?: boolean;
|
|
5
|
+
filters?: Record<string, any>;
|
|
6
|
+
filterSchema?: {
|
|
7
|
+
__defined: true;
|
|
8
|
+
schema: Record<string, any>;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare function useNavigateWithQuery(opts?: UseNavigateWithQueryOptions): (next: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>), navOpts?: {
|
|
12
|
+
replace?: boolean;
|
|
13
|
+
}) => void;
|
|
14
|
+
export default useNavigateWithQuery;
|
|
15
|
+
//# sourceMappingURL=useNavigateWithQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNavigateWithQuery.d.ts","sourceRoot":"","sources":["../../../src/routing/useNavigateWithQuery.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,2BAA2B;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE9B,YAAY,CAAC,EAAE;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC;CACjE;AAOD,wBAAgB,oBAAoB,CAClC,IAAI,GAAE,2BAAgC,GACrC,CACD,IAAI,EACA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACnB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EACxD,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAC5B,IAAI,CA6GR;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { useCallback, useContext, useMemo } from 'react';
|
|
2
|
+
import RoutingContext from './RoutingContext.js';
|
|
3
|
+
export function useNavigateWithQuery(opts = {}) {
|
|
4
|
+
const ctx = useContext(RoutingContext);
|
|
5
|
+
const entry = ctx?.get();
|
|
6
|
+
const route = entry?.route;
|
|
7
|
+
const schema = useMemo(() => {
|
|
8
|
+
if (route == null)
|
|
9
|
+
return undefined;
|
|
10
|
+
const collected = [];
|
|
11
|
+
for (const r of route.route.routes) {
|
|
12
|
+
const maybe = r.query;
|
|
13
|
+
if (maybe != null &&
|
|
14
|
+
typeof maybe === 'object' &&
|
|
15
|
+
Object.values(maybe).some((v) => {
|
|
16
|
+
if (v == null || typeof v !== 'object')
|
|
17
|
+
return false;
|
|
18
|
+
if (!('parse' in v))
|
|
19
|
+
return false;
|
|
20
|
+
const candidate = v;
|
|
21
|
+
return typeof candidate.parse === 'function';
|
|
22
|
+
})) {
|
|
23
|
+
collected.push(maybe);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return collected.at(-1);
|
|
27
|
+
}, [route]);
|
|
28
|
+
const current = useMemo(() => {
|
|
29
|
+
if (entry == null)
|
|
30
|
+
return {};
|
|
31
|
+
if (opts.raw || entry.typedQuery == null) {
|
|
32
|
+
return { ...entry.query };
|
|
33
|
+
}
|
|
34
|
+
return { ...entry.typedQuery };
|
|
35
|
+
}, [entry, opts.raw]);
|
|
36
|
+
const navigateWithQuery = useCallback((next, navOpts) => {
|
|
37
|
+
if (ctx == null)
|
|
38
|
+
return;
|
|
39
|
+
let resolved;
|
|
40
|
+
if (typeof next === 'function') {
|
|
41
|
+
const fn = next;
|
|
42
|
+
resolved = fn(current);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
resolved = next;
|
|
46
|
+
}
|
|
47
|
+
const merged = { ...current, ...resolved };
|
|
48
|
+
const out = {};
|
|
49
|
+
for (const key of Object.keys(merged)) {
|
|
50
|
+
const value = merged[key];
|
|
51
|
+
if (value === undefined) {
|
|
52
|
+
}
|
|
53
|
+
else if (opts.omitDefaults === true &&
|
|
54
|
+
schema != null &&
|
|
55
|
+
Object.prototype.hasOwnProperty.call(schema, key)) {
|
|
56
|
+
const descUnknown = schema[key];
|
|
57
|
+
let isDefault = false;
|
|
58
|
+
if (descUnknown != null &&
|
|
59
|
+
typeof descUnknown === 'object' &&
|
|
60
|
+
'hasDefault' in descUnknown &&
|
|
61
|
+
'defaultValue' in descUnknown) {
|
|
62
|
+
const descObj = descUnknown;
|
|
63
|
+
if (descObj.hasDefault === true && descObj.defaultValue === value) {
|
|
64
|
+
isDefault = true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (isDefault) {
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
out[key] = value;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
out[key] = value;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const navObj = { query: out, replace: navOpts?.replace ?? opts.replace };
|
|
78
|
+
if (opts.filters !== undefined && opts.filterSchema !== undefined) {
|
|
79
|
+
navObj.filters = opts.filters;
|
|
80
|
+
navObj.filterSchema = opts.filterSchema;
|
|
81
|
+
}
|
|
82
|
+
ctx.navigate(navObj);
|
|
83
|
+
}, [
|
|
84
|
+
ctx,
|
|
85
|
+
current,
|
|
86
|
+
opts.replace,
|
|
87
|
+
opts.omitDefaults,
|
|
88
|
+
schema,
|
|
89
|
+
opts.filters,
|
|
90
|
+
opts.filterSchema,
|
|
91
|
+
]);
|
|
92
|
+
return navigateWithQuery;
|
|
93
|
+
}
|
|
94
|
+
export default useNavigateWithQuery;
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTmF2aWdhdGVXaXRoUXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy91c2VOYXZpZ2F0ZVdpdGhRdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDekQsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFrQmpELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsT0FBb0MsRUFBRTtJQU90QyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxLQUFLLENBQUM7SUFFM0IsTUFBTSxNQUFNLEdBQTRCLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDbkQsSUFBSSxLQUFLLElBQUksSUFBSTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ3BDLE1BQU0sU0FBUyxHQUFrQixFQUFFLENBQUM7UUFDcEMsS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUFJLENBQW9DLENBQUMsS0FBSyxDQUFDO1lBQzFELElBQ0UsS0FBSyxJQUFJLElBQUk7Z0JBQ2IsT0FBTyxLQUFLLEtBQUssUUFBUTtnQkFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFnQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ3pELElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRO3dCQUFFLE9BQU8sS0FBSyxDQUFDO29CQUNyRCxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUssQ0FBNkIsQ0FBQzt3QkFBRSxPQUFPLEtBQUssQ0FBQztvQkFD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QU0sR0FLUixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsRSxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDOUIsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzFDLENBQUM7UUFDRCxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsRUFDRDtRQUNFLEdBQUc7UUFDSCxPQUFPO1FBQ1AsSUFBSSxDQUFDLE9BQU87UUFDWixJQUFJLENBQUMsWUFBWTtRQUNqQixNQUFNO1FBQ04sSUFBSSxDQUFDLE9BQU87UUFDWixJQUFJLENBQUMsWUFBWTtLQUNsQixDQUNGLENBQUM7SUFFRixPQUFPLGlCQUFpQixDQUFDO0FBQzNCLENBQUM7QUFFRCxlQUFlLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5U2NoZW1hIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZU5hdmlnYXRlV2l0aFF1ZXJ5T3B0aW9ucyB7XG4gIG9taXREZWZhdWx0cz86IGJvb2xlYW47XG4gIHJhdz86IGJvb2xlYW47XG4gIHJlcGxhY2U/OiBib29sZWFuO1xuICAvKiogU3RydWN0dXJlZCBmaWx0ZXJzIHRvIG1lcmdlIHdoZW4gbmF2aWdhdGluZyAqL1xuICBmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqIERlZmluZWQgZmlsdGVyIHNjaGVtYSB3cmFwcGVyIChyZXF1aXJlZCBpZiBmaWx0ZXJzIHByb3ZpZGVkKSAqL1xuICBmaWx0ZXJTY2hlbWE/OiB7IF9fZGVmaW5lZDogdHJ1ZTsgc2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH07XG59XG5cbi8qKlxuICogdXNlTmF2aWdhdGVXaXRoUXVlcnlcbiAqIENvbnZlbmllbmNlIGhvb2sgdG8gbmF2aWdhdGUgd2hpbGUgbWVyZ2luZyBwYXJ0aWFsIHF1ZXJ5IHVwZGF0ZXMgd2l0aCBjdXJyZW50IHF1ZXJ5IHNuYXBzaG90LlxuICogQWNjZXB0cyBmdW5jdGlvbmFsIHVwZGF0ZXMgYW5kIHN1cHBvcnRzIGRlZmF1bHQgb21pc3Npb24gKHNjaGVtYSBhd2FyZSkgYW5kIHJhdyBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTmF2aWdhdGVXaXRoUXVlcnkoXG4gIG9wdHM6IFVzZU5hdmlnYXRlV2l0aFF1ZXJ5T3B0aW9ucyA9IHt9LFxuKTogKFxuICBuZXh0OlxuICAgIHwgUmVjb3JkPHN0cmluZywgYW55PlxuICAgIHwgKChwcmV2OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSxcbiAgbmF2T3B0cz86IHsgcmVwbGFjZT86IGJvb2xlYW4gfSxcbikgPT4gdm9pZCB7XG4gIGNvbnN0IGN0eCA9IHVzZUNvbnRleHQoUm91dGluZ0NvbnRleHQpO1xuICBjb25zdCBlbnRyeSA9IGN0eD8uZ2V0KCk7XG4gIGNvbnN0IHJvdXRlID0gZW50cnk/LnJvdXRlO1xuXG4gIGNvbnN0IHNjaGVtYTogUXVlcnlTY2hlbWEgfCB1bmRlZmluZWQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocm91dGUgPT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb2xsZWN0ZWQ6IFF1ZXJ5U2NoZW1hW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHIgb2Ygcm91dGUucm91dGUucm91dGVzKSB7XG4gICAgICBjb25zdCBtYXliZSA9IChyIGFzIHVua25vd24gYXMgeyBxdWVyeT86IHVua25vd24gfSkucXVlcnk7XG4gICAgICBpZiAoXG4gICAgICAgIG1heWJlICE9IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIG1heWJlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBPYmplY3QudmFsdWVzKG1heWJlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5zb21lKCh2KSA9PiB7XG4gICAgICAgICAgaWYgKHYgPT0gbnVsbCB8fCB0eXBlb2YgdiAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICBpZiAoISgncGFyc2UnIGluICh2IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSB2IGFzIHsgcGFyc2U/OiB1bmtub3duIH07XG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiBjYW5kaWRhdGUucGFyc2UgPT09ICdmdW5jdGlvbic7XG4gICAgICAgIH0pXG4gICAgICApIHtcbiAgICAgICAgY29sbGVjdGVkLnB1c2gobWF5YmUgYXMgUXVlcnlTY2hlbWEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sbGVjdGVkLmF0KC0xKTtcbiAgfSwgW3JvdXRlXSk7XG5cbiAgY29uc3QgY3VycmVudDogUmVjb3JkPHN0cmluZywgYW55PiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChlbnRyeSA9PSBudWxsKSByZXR1cm4ge307XG4gICAgaWYgKG9wdHMucmF3IHx8IGVudHJ5LnR5cGVkUXVlcnkgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHsgLi4uKGVudHJ5LnF1ZXJ5IGFzIFJlY29yZDxzdHJpbmcsIGFueT4pIH07XG4gICAgfVxuICAgIHJldHVybiB7IC4uLihlbnRyeS50eXBlZFF1ZXJ5IGFzIFJlY29yZDxzdHJpbmcsIGFueT4pIH07XG4gIH0sIFtlbnRyeSwgb3B0cy5yYXddKTtcblxuICBjb25zdCBuYXZpZ2F0ZVdpdGhRdWVyeSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG5leHQ6XG4gICAgICAgIHwgUmVjb3JkPHN0cmluZywgYW55PlxuICAgICAgICB8ICgocHJldjogUmVjb3JkPHN0cmluZywgYW55PikgPT4gUmVjb3JkPHN0cmluZywgYW55PiksXG4gICAgICBuYXZPcHRzPzogeyByZXBsYWNlPzogYm9vbGVhbiB9LFxuICAgICkgPT4ge1xuICAgICAgaWYgKGN0eCA9PSBudWxsKSByZXR1cm47XG4gICAgICBsZXQgcmVzb2x2ZWQ6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICBpZiAodHlwZW9mIG5leHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgZm4gPSBuZXh0IGFzIChwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgICAgICByZXNvbHZlZCA9IGZuKGN1cnJlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZWQgPSBuZXh0O1xuICAgICAgfVxuICAgICAgY29uc3QgbWVyZ2VkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0geyAuLi5jdXJyZW50LCAuLi5yZXNvbHZlZCB9O1xuICAgICAgY29uc3Qgb3V0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtZXJnZWQpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gbWVyZ2VkW2tleV07XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gZHJvcCBrZXlcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBvcHRzLm9taXREZWZhdWx0cyA9PT0gdHJ1ZSAmJlxuICAgICAgICAgIHNjaGVtYSAhPSBudWxsICYmXG4gICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNjaGVtYSwga2V5KVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBkZXNjVW5rbm93biA9IChzY2hlbWEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV07XG4gICAgICAgICAgbGV0IGlzRGVmYXVsdCA9IGZhbHNlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGRlc2NVbmtub3duICE9IG51bGwgJiZcbiAgICAgICAgICAgIHR5cGVvZiBkZXNjVW5rbm93biA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICdoYXNEZWZhdWx0JyBpbiBkZXNjVW5rbm93biAmJlxuICAgICAgICAgICAgJ2RlZmF1bHRWYWx1ZScgaW4gZGVzY1Vua25vd25cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2NPYmogPSBkZXNjVW5rbm93biBhcyB7XG4gICAgICAgICAgICAgIGhhc0RlZmF1bHQ/OiB1bmtub3duO1xuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU/OiB1bmtub3duO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChkZXNjT2JqLmhhc0RlZmF1bHQgPT09IHRydWUgJiYgZGVzY09iai5kZWZhdWx0VmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgIGlzRGVmYXVsdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgICAgICAgIC8vIG9taXQgZGVmYXVsdFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBuYXZPYmo6IHtcbiAgICAgICAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICAgIHJlcGxhY2U/OiBib29sZWFuO1xuICAgICAgICBmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICAgICAgZmlsdGVyU2NoZW1hPzogeyBfX2RlZmluZWQ6IHRydWU7IHNjaGVtYTogUmVjb3JkPHN0cmluZywgYW55PiB9O1xuICAgICAgfSA9IHsgcXVlcnk6IG91dCwgcmVwbGFjZTogbmF2T3B0cz8ucmVwbGFjZSA/PyBvcHRzLnJlcGxhY2UgfTtcbiAgICAgIGlmIChvcHRzLmZpbHRlcnMgIT09IHVuZGVmaW5lZCAmJiBvcHRzLmZpbHRlclNjaGVtYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5hdk9iai5maWx0ZXJzID0gb3B0cy5maWx0ZXJzO1xuICAgICAgICBuYXZPYmouZmlsdGVyU2NoZW1hID0gb3B0cy5maWx0ZXJTY2hlbWE7XG4gICAgICB9XG4gICAgICBjdHgubmF2aWdhdGUobmF2T2JqKTtcbiAgICB9LFxuICAgIFtcbiAgICAgIGN0eCxcbiAgICAgIGN1cnJlbnQsXG4gICAgICBvcHRzLnJlcGxhY2UsXG4gICAgICBvcHRzLm9taXREZWZhdWx0cyxcbiAgICAgIHNjaGVtYSxcbiAgICAgIG9wdHMuZmlsdGVycyxcbiAgICAgIG9wdHMuZmlsdGVyU2NoZW1hLFxuICAgIF0sXG4gICk7XG5cbiAgcmV0dXJuIG5hdmlnYXRlV2l0aFF1ZXJ5O1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VOYXZpZ2F0ZVdpdGhRdWVyeTtcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { QuerySchema } from '../types.js';
|
|
2
|
+
export interface UseQueryObjectOptions {
|
|
3
|
+
raw?: boolean;
|
|
4
|
+
replace?: boolean;
|
|
5
|
+
omitDefaults?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export type InferTypedQuery<S extends QuerySchema | undefined> = S extends QuerySchema ? {
|
|
8
|
+
[K in keyof S]?: any;
|
|
9
|
+
} : Record<string, any>;
|
|
10
|
+
export declare function useQueryObject(opts?: UseQueryObjectOptions): [
|
|
11
|
+
Record<string, any>,
|
|
12
|
+
(next: Record<string, any> | ((p: Record<string, any>) => Record<string, any>), navOpts?: {
|
|
13
|
+
replace?: boolean;
|
|
14
|
+
batch?: boolean;
|
|
15
|
+
}) => void
|
|
16
|
+
];
|
|
17
|
+
export default useQueryObject;
|
|
18
|
+
//# sourceMappingURL=useQueryObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useQueryObject.d.ts","sourceRoot":"","sources":["../../../src/routing/useQueryObject.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,IAC3D,CAAC,SAAS,WAAW,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAazE,wBAAgB,cAAc,CAC5B,IAAI,GAAE,qBAA0B,GAC/B;IACD,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACnB,CACE,IAAI,EACA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACnB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EACrD,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAC7C,IAAI;CACV,CAyHA;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { useCallback, useContext, useMemo } from 'react';
|
|
2
|
+
import RoutingContext from './RoutingContext.js';
|
|
3
|
+
export function useQueryObject(opts = {}) {
|
|
4
|
+
const ctx = useContext(RoutingContext);
|
|
5
|
+
const entry = ctx?.get();
|
|
6
|
+
const route = entry?.route;
|
|
7
|
+
const schema = useMemo(() => {
|
|
8
|
+
if (route === undefined || route === null) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
const collected = [];
|
|
12
|
+
for (const r of route.route.routes) {
|
|
13
|
+
const rObj = r;
|
|
14
|
+
const maybe = rObj.query;
|
|
15
|
+
if (maybe !== null && maybe !== undefined && typeof maybe === 'object') {
|
|
16
|
+
const values = Object.values(maybe);
|
|
17
|
+
let hasDescriptor = false;
|
|
18
|
+
for (const v of values) {
|
|
19
|
+
if (v !== null &&
|
|
20
|
+
typeof v === 'object' &&
|
|
21
|
+
'parse' in v) {
|
|
22
|
+
const candidate = v;
|
|
23
|
+
if (typeof candidate.parse === 'function') {
|
|
24
|
+
hasDescriptor = true;
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (hasDescriptor) {
|
|
30
|
+
collected.push(maybe);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return collected.at(-1);
|
|
35
|
+
}, [route]);
|
|
36
|
+
const current = useMemo(() => {
|
|
37
|
+
if (entry == null) {
|
|
38
|
+
return {};
|
|
39
|
+
}
|
|
40
|
+
let source;
|
|
41
|
+
if (opts.raw === true || entry.typedQuery == null) {
|
|
42
|
+
source = entry.query;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
source = entry.typedQuery;
|
|
46
|
+
}
|
|
47
|
+
const out = {};
|
|
48
|
+
if (source !== undefined) {
|
|
49
|
+
for (const k of Object.keys(source)) {
|
|
50
|
+
out[k] = source[k];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}, [entry, opts.raw]);
|
|
55
|
+
const setQuery = useCallback((next, navOpts) => {
|
|
56
|
+
if (ctx == null) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const basePrev = current;
|
|
60
|
+
let resolved;
|
|
61
|
+
if (typeof next === 'function') {
|
|
62
|
+
const fn = next;
|
|
63
|
+
resolved = fn(basePrev);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
resolved = next;
|
|
67
|
+
}
|
|
68
|
+
const merged = { ...basePrev, ...resolved };
|
|
69
|
+
const finalOut = {};
|
|
70
|
+
for (const key of Object.keys(merged)) {
|
|
71
|
+
const value = merged[key];
|
|
72
|
+
if (value === undefined) {
|
|
73
|
+
}
|
|
74
|
+
else if (opts.omitDefaults === true &&
|
|
75
|
+
schema != null &&
|
|
76
|
+
Object.prototype.hasOwnProperty.call(schema, key)) {
|
|
77
|
+
const descUnknown = schema[key];
|
|
78
|
+
let skipDefault = false;
|
|
79
|
+
if (descUnknown != null &&
|
|
80
|
+
typeof descUnknown === 'object' &&
|
|
81
|
+
'hasDefault' in descUnknown &&
|
|
82
|
+
'defaultValue' in descUnknown) {
|
|
83
|
+
const descObj = descUnknown;
|
|
84
|
+
if (descObj.hasDefault === true && value === descObj.defaultValue) {
|
|
85
|
+
skipDefault = true;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (skipDefault) {
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
finalOut[key] = value;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
finalOut[key] = value;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
ctx.navigate({
|
|
99
|
+
query: finalOut,
|
|
100
|
+
replace: navOpts?.replace ?? opts.replace,
|
|
101
|
+
batch: navOpts?.batch,
|
|
102
|
+
});
|
|
103
|
+
}, [ctx, current, opts.replace, opts.omitDefaults, schema]);
|
|
104
|
+
return [current, setQuery];
|
|
105
|
+
}
|
|
106
|
+
export default useQueryObject;
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUXVlcnlPYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy91c2VRdWVyeU9iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDekQsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUF1QmpELE1BQU0sVUFBVSxjQUFjLENBQzVCLE9BQThCLEVBQUU7SUFVaEMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN6QixNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBRTNCLE1BQU0sTUFBTSxHQUE0QixPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ25ELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFrQixFQUFFLENBQUM7UUFDcEMsS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxHQUFHLENBQW1DLENBQUM7WUFDakQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN6QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDdkUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFnQyxDQUFDLENBQUM7Z0JBQy9ELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUs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Q0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixJQUNFLFdBQVcsSUFBSSxJQUFJO29CQUNuQixPQUFPLFdBQVcsS0FBSyxRQUFRO29CQUMvQixZQUFZLElBQUksV0FBVztvQkFDM0IsY0FBYyxJQUFJLFdBQVcsRUFDN0IsQ0FBQztvQkFDRCxNQUFNLE9BQU8sR0FBRyxXQUdmLENBQUM7b0JBQ0YsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUNsRSxXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUNyQixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFFbEIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDO1FBQ0gsQ0FBQztRQUNELEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDWCxLQUFLLEVBQUUsUUFBUTtZQUNmLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQ3pDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FDeEQsQ0FBQztJQUVGLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELGVBQWUsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5U2NoZW1hIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZVF1ZXJ5T2JqZWN0T3B0aW9ucyB7XG4gIHJhdz86IGJvb2xlYW47XG4gIHJlcGxhY2U/OiBib29sZWFuO1xuICBvbWl0RGVmYXVsdHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBJbmZlclR5cGVkUXVlcnk8UyBleHRlbmRzIFF1ZXJ5U2NoZW1hIHwgdW5kZWZpbmVkPiA9XG4gIFMgZXh0ZW5kcyBRdWVyeVNjaGVtYSA/IHsgW0sgaW4ga2V5b2YgU10/OiBhbnkgfSA6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbi8qKlxuICogdXNlUXVlcnlPYmplY3RcbiAqIEhpZ2gtbGV2ZWwgaG9vayBleHBvc2luZyB0aGUgZW50aXJlIHF1ZXJ5IG9iamVjdCAodHlwZWQgaWYgYSBxdWVyeSBzY2hlbWEgaXMgcHJlc2VudClcbiAqIGFsb25nIHdpdGggYSBzdGFibGUgc2V0dGVyIHRoYXQgbWVyZ2VzIHBhcnRpYWwgdXBkYXRlcy5cbiAqIEZlYXR1cmVzOlxuICogIC0gRmFsbHMgYmFjayB0byByYXcgYWdncmVnYXRlZCBxdWVyeSB3aGVuIG5vIHNjaGVtYSBvciBvcHRzLnJhdz10cnVlLlxuICogIC0gU2V0dGluZyBhIGtleSB0byB1bmRlZmluZWQgcmVtb3ZlcyBpdCBmcm9tIHRoZSBVUkwuXG4gKiAgLSBPcHRpb25hbCBvbWlzc2lvbiBvZiBzY2hlbWEtZGVmYXVsdCB2YWx1ZWQga2V5cyAob21pdERlZmF1bHRzPXRydWUpLlxuICogIC0gU3VwcG9ydHMgZnVuY3Rpb25hbCB1cGRhdGVzIChwcmV2ID0+IG5leHQpLlxuICogIC0gT3B0aW9uYWwgaGlzdG9yeSByZXBsYWNlIG5hdmlnYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeU9iamVjdChcbiAgb3B0czogVXNlUXVlcnlPYmplY3RPcHRpb25zID0ge30sXG4pOiBbXG4gIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIChcbiAgICBuZXh0OlxuICAgICAgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgICB8ICgocDogUmVjb3JkPHN0cmluZywgYW55PikgPT4gUmVjb3JkPHN0cmluZywgYW55PiksXG4gICAgbmF2T3B0cz86IHsgcmVwbGFjZT86IGJvb2xlYW47IGJhdGNoPzogYm9vbGVhbiB9LFxuICApID0+IHZvaWQsXG5dIHtcbiAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChSb3V0aW5nQ29udGV4dCk7XG4gIGNvbnN0IGVudHJ5ID0gY3R4Py5nZXQoKTtcbiAgY29uc3Qgcm91dGUgPSBlbnRyeT8ucm91dGU7XG5cbiAgY29uc3Qgc2NoZW1hOiBRdWVyeVNjaGVtYSB8IHVuZGVmaW5lZCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChyb3V0ZSA9PT0gdW5kZWZpbmVkIHx8IHJvdXRlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBjb2xsZWN0ZWQ6IFF1ZXJ5U2NoZW1hW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHIgb2Ygcm91dGUucm91dGUucm91dGVzKSB7XG4gICAgICBjb25zdCByT2JqID0gciBhcyB1bmtub3duIGFzIHsgcXVlcnk/OiB1bmtub3duIH07XG4gICAgICBjb25zdCBtYXliZSA9IHJPYmoucXVlcnk7XG4gICAgICBpZiAobWF5YmUgIT09IG51bGwgJiYgbWF5YmUgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgbWF5YmUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IE9iamVjdC52YWx1ZXMobWF5YmUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgICAgICBsZXQgaGFzRGVzY3JpcHRvciA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdiAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAncGFyc2UnIGluICh2IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gdiBhcyB7IHBhcnNlPzogdW5rbm93biB9O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYW5kaWRhdGUucGFyc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgaGFzRGVzY3JpcHRvciA9IHRydWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzRGVzY3JpcHRvcikge1xuICAgICAgICAgIGNvbGxlY3RlZC5wdXNoKG1heWJlIGFzIFF1ZXJ5U2NoZW1hKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sbGVjdGVkLmF0KC0xKTtcbiAgfSwgW3JvdXRlXSk7XG5cbiAgY29uc3QgY3VycmVudDogUmVjb3JkPHN0cmluZywgYW55PiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChlbnRyeSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGxldCBzb3VyY2U6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQ7XG4gICAgaWYgKG9wdHMucmF3ID09PSB0cnVlIHx8IGVudHJ5LnR5cGVkUXVlcnkgPT0gbnVsbCkge1xuICAgICAgc291cmNlID0gZW50cnkucXVlcnkgYXMgUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlID0gZW50cnkudHlwZWRRdWVyeSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBpZiAoc291cmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyhzb3VyY2UpKSB7XG4gICAgICAgIG91dFtrXSA9IHNvdXJjZVtrXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfSwgW2VudHJ5LCBvcHRzLnJhd10pO1xuXG4gIC8vIFNldHRlciBtZXJnZXMgcGFydGlhbCBjaGFuZ2VzIGFuZCBhcHBsaWVzIG9taXNzaW9uIHJ1bGVzXG4gIGNvbnN0IHNldFF1ZXJ5ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbmV4dDpcbiAgICAgICAgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgICAgIHwgKChwcmV2OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSxcbiAgICAgIG5hdk9wdHM/OiB7IHJlcGxhY2U/OiBib29sZWFuOyBiYXRjaD86IGJvb2xlYW4gfSxcbiAgICApID0+IHtcbiAgICAgIGlmIChjdHggPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBiYXNlUHJldiA9IGN1cnJlbnQ7XG4gICAgICBsZXQgcmVzb2x2ZWQ6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICBpZiAodHlwZW9mIG5leHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgZm4gPSBuZXh0IGFzIChwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgICAgICByZXNvbHZlZCA9IGZuKGJhc2VQcmV2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmVkID0gbmV4dDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1lcmdlZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHsgLi4uYmFzZVByZXYsIC4uLnJlc29sdmVkIH07XG4gICAgICBjb25zdCBmaW5hbE91dDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWVyZ2VkKSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG1lcmdlZFtrZXldO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIHNraXAgcmVtb3ZhbCBoZXJlIChhYnNlbmNlKSDigJMgb21pc3Npb24gaGFuZGxlZCBieSBub3QgY29weWluZ1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIG9wdHMub21pdERlZmF1bHRzID09PSB0cnVlICYmXG4gICAgICAgICAgc2NoZW1hICE9IG51bGwgJiZcbiAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc2NoZW1hLCBrZXkpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGRlc2NVbmtub3duID0gKHNjaGVtYSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XTtcbiAgICAgICAgICBsZXQgc2tpcERlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBkZXNjVW5rbm93biAhPSBudWxsICYmXG4gICAgICAgICAgICB0eXBlb2YgZGVzY1Vua25vd24gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAnaGFzRGVmYXVsdCcgaW4gZGVzY1Vua25vd24gJiZcbiAgICAgICAgICAgICdkZWZhdWx0VmFsdWUnIGluIGRlc2NVbmtub3duXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBkZXNjT2JqID0gZGVzY1Vua25vd24gYXMge1xuICAgICAgICAgICAgICBoYXNEZWZhdWx0PzogdW5rbm93bjtcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPzogdW5rbm93bjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoZGVzY09iai5oYXNEZWZhdWx0ID09PSB0cnVlICYmIHZhbHVlID09PSBkZXNjT2JqLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgICBza2lwRGVmYXVsdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChza2lwRGVmYXVsdCkge1xuICAgICAgICAgICAgLy8gc2tpcCBkZWZhdWx0XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbmFsT3V0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmluYWxPdXRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjdHgubmF2aWdhdGUoe1xuICAgICAgICBxdWVyeTogZmluYWxPdXQsXG4gICAgICAgIHJlcGxhY2U6IG5hdk9wdHM/LnJlcGxhY2UgPz8gb3B0cy5yZXBsYWNlLFxuICAgICAgICBiYXRjaDogbmF2T3B0cz8uYmF0Y2gsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtjdHgsIGN1cnJlbnQsIG9wdHMucmVwbGFjZSwgb3B0cy5vbWl0RGVmYXVsdHMsIHNjaGVtYV0sXG4gICk7XG5cbiAgcmV0dXJuIFtjdXJyZW50LCBzZXRRdWVyeV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVF1ZXJ5T2JqZWN0O1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type EqualityFn<T> = (a: T, b: T) => boolean;
|
|
2
|
+
export declare function shallowEqual(a: unknown, b: unknown): boolean;
|
|
3
|
+
export declare function useStableRefEquality<T>(value: T, isEqual?: EqualityFn<T>): T;
|
|
4
|
+
export default useStableRefEquality;
|
|
5
|
+
//# sourceMappingURL=useStableRefEquality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStableRefEquality.d.ts","sourceRoot":"","sources":["../../../src/routing/useStableRefEquality.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;AAGpD,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CA4B5D;AAQD,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,UAAU,CAAC,CAAC,CAAiC,GACrD,CAAC,CAQH;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
export function shallowEqual(a, b) {
|
|
3
|
+
if (Object.is(a, b))
|
|
4
|
+
return true;
|
|
5
|
+
if (typeof a !== 'object' ||
|
|
6
|
+
a === null ||
|
|
7
|
+
typeof b !== 'object' ||
|
|
8
|
+
b === null) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
12
|
+
if (a.length !== b.length)
|
|
13
|
+
return false;
|
|
14
|
+
for (let i = 0; i < a.length; i += 1) {
|
|
15
|
+
if (!Object.is(a[i], b[i]))
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(a) || Array.isArray(b))
|
|
21
|
+
return false;
|
|
22
|
+
const aKeys = Object.keys(a);
|
|
23
|
+
const bKeys = Object.keys(b);
|
|
24
|
+
if (aKeys.length !== bKeys.length)
|
|
25
|
+
return false;
|
|
26
|
+
for (const k of aKeys) {
|
|
27
|
+
if (!Object.prototype.hasOwnProperty.call(b, k))
|
|
28
|
+
return false;
|
|
29
|
+
const av = a[k];
|
|
30
|
+
const bv = b[k];
|
|
31
|
+
if (!Object.is(av, bv))
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
export function useStableRefEquality(value, isEqual = shallowEqual) {
|
|
37
|
+
const ref = useRef(undefined);
|
|
38
|
+
if (ref.current === undefined) {
|
|
39
|
+
ref.current = { v: value };
|
|
40
|
+
}
|
|
41
|
+
else if (!isEqual(ref.current.v, value)) {
|
|
42
|
+
ref.current = { v: value };
|
|
43
|
+
}
|
|
44
|
+
return ref.current.v;
|
|
45
|
+
}
|
|
46
|
+
export default useStableRefEquality;
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlU3RhYmxlUmVmRXF1YWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy91c2VTdGFibGVSZWZFcXVhbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBSy9CLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBVSxFQUFFLENBQVU7SUFDakQsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNqQyxJQUNFLE9BQU8sQ0FBQyxLQUFLLFFBQVE7UUFDckIsQ0FBQyxLQUFLLElBQUk7UUFDVixPQUFPLENBQUMsS0FBSyxRQUFRO1FBQ3JCLENBQUMsS0FBSyxJQUFJLEVBQ1YsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDeEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7UUFDM0MsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3ZELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBNEIsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBNEIsQ0FBQyxDQUFDO0lBQ3hELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ2hELEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDOUQsTUFBTSxFQUFFLEdBQUksQ0FBNkIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxNQUFNLEVBQUUsR0FBSSxDQUE2QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBUUQsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxLQUFRLEVBQ1IsVUFBeUIsWUFBNkI7SUFFdEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUF1QixTQUFTLENBQUMsQ0FBQztJQUNwRCxJQUFJLEdBQUcsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDOUIsR0FBRyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO1NBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELGVBQWUsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCB0eXBlIEVxdWFsaXR5Rm48VD4gPSAoYTogVCwgYjogVCkgPT4gYm9vbGVhbjtcblxuLyoqIERlZmF1bHQgc2hhbGxvdyBlcXVhbGl0eSBmb3IgcGxhaW4gb2JqZWN0cyAvIGFycmF5czsgcHJpbWl0aXZlcyB2aWEgPT09ICovXG5leHBvcnQgZnVuY3Rpb24gc2hhbGxvd0VxdWFsKGE6IHVua25vd24sIGI6IHVua25vd24pOiBib29sZWFuIHtcbiAgaWYgKE9iamVjdC5pcyhhLCBiKSkgcmV0dXJuIHRydWU7XG4gIGlmIChcbiAgICB0eXBlb2YgYSAhPT0gJ29iamVjdCcgfHxcbiAgICBhID09PSBudWxsIHx8XG4gICAgdHlwZW9mIGIgIT09ICdvYmplY3QnIHx8XG4gICAgYiA9PT0gbnVsbFxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoYSkgJiYgQXJyYXkuaXNBcnJheShiKSkge1xuICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmICghT2JqZWN0LmlzKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KGEpIHx8IEFycmF5LmlzQXJyYXkoYikpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgYUtleXMgPSBPYmplY3Qua2V5cyhhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgY29uc3QgYktleXMgPSBPYmplY3Qua2V5cyhiIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgaWYgKGFLZXlzLmxlbmd0aCAhPT0gYktleXMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gIGZvciAoY29uc3QgayBvZiBhS2V5cykge1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIGspKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgYXYgPSAoYSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba107XG4gICAgY29uc3QgYnYgPSAoYiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba107XG4gICAgaWYgKCFPYmplY3QuaXMoYXYsIGJ2KSkgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIHVzZVN0YWJsZVJlZkVxdWFsaXR5XG4gKiBSZXR1cm5zIGEgc3RhYmxlIHJlZmVyZW5jZSB0aGF0IG9ubHkgdXBkYXRlcyB3aGVuIGVxdWFsaXR5IGNoZWNrIGZhaWxzLlxuICogLSBDaGVhcCBzaGFsbG93IGNvbXBhcmUgYnkgZGVmYXVsdCB0byBhdm9pZCBkZWVwIHRyYXZlcnNhbCBjb3N0LlxuICogLSBQcm92aWRlIGEgY3VzdG9tIGVxdWFsaXR5IGZ1bmN0aW9uIGZvciBkb21haW4gc3BlY2lmaWMgc2VtYW50aWNzIChlLmcuIGRlZXAgY29tcGFyZSwgc3Vic2V0IGtleXMpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdGFibGVSZWZFcXVhbGl0eTxUPihcbiAgdmFsdWU6IFQsXG4gIGlzRXF1YWw6IEVxdWFsaXR5Rm48VD4gPSBzaGFsbG93RXF1YWwgYXMgRXF1YWxpdHlGbjxUPixcbik6IFQge1xuICBjb25zdCByZWYgPSB1c2VSZWY8eyB2OiBUIH0gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGlmIChyZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmVmLmN1cnJlbnQgPSB7IHY6IHZhbHVlIH07XG4gIH0gZWxzZSBpZiAoIWlzRXF1YWwocmVmLmN1cnJlbnQudiwgdmFsdWUpKSB7XG4gICAgcmVmLmN1cnJlbnQgPSB7IHY6IHZhbHVlIH07XG4gIH1cbiAgcmV0dXJuIHJlZi5jdXJyZW50LnY7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVN0YWJsZVJlZkVxdWFsaXR5O1xuIl19
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { QuerySchema } from '../types.js';
|
|
2
|
-
|
|
2
|
+
import { type DefinedFilterSchema, type InferFilters } from '../routing/filters.js';
|
|
3
|
+
export interface BuildSearchOptions<F extends DefinedFilterSchema<any> | undefined = any> {
|
|
3
4
|
omitDefaults?: boolean;
|
|
4
5
|
sortKeys?: boolean;
|
|
5
|
-
|
|
6
|
+
filters?: F extends DefinedFilterSchema<any> ? InferFilters<F['schema']> : any;
|
|
7
|
+
filterSchema?: F;
|
|
8
|
+
omitEmptyFilters?: boolean;
|
|
9
|
+
pruneEmptyFilterOperators?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function buildSearch(query: Record<string, any> | undefined, schema: QuerySchema | undefined, opts?: BuildSearchOptions): string;
|
|
6
12
|
//# sourceMappingURL=buildSearch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildSearch.d.ts","sourceRoot":"","sources":["../../../src/tools/buildSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"buildSearch.d.ts","sourceRoot":"","sources":["../../../src/tools/buildSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;AAChE,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAW/B,MAAM,WAAW,kBAAkB,CACjC,CAAC,SAAS,mBAAmB,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,GAAG;IAEpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,OAAO,CAAC,EAAE,CAAC,SAAS,mBAAmB,CAAC,GAAG,CAAC,GACxC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GACzB,GAAG,CAAC;IAER,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAQD,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACtC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,IAAI,CAAC,EAAE,kBAAkB,GACxB,MAAM,CAyQR"}
|