@plumile/router 0.1.11 → 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 +755 -1
- package/lib/esm/builder.d.ts.map +1 -1
- package/lib/esm/builder.js +10 -3
- package/lib/esm/eslint-rules/index.d.ts +2 -0
- package/lib/esm/eslint-rules/index.d.ts.map +1 -0
- package/lib/esm/eslint-rules/index.js +2 -0
- package/lib/esm/eslint-rules/no-direct-window-location-search.d.ts +4 -0
- package/lib/esm/eslint-rules/no-direct-window-location-search.d.ts.map +1 -0
- package/lib/esm/eslint-rules/no-direct-window-location-search.js +48 -0
- package/lib/esm/history/BrowserHistory.d.ts.map +1 -1
- package/lib/esm/history/BrowserHistory.js +4 -2
- package/lib/esm/index.d.ts +5 -0
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +6 -1
- package/lib/esm/routing/Link.d.ts +1 -0
- package/lib/esm/routing/Link.d.ts.map +1 -1
- package/lib/esm/routing/Link.js +35 -4
- package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
- package/lib/esm/routing/RouteComponentWrapper.js +7 -2
- package/lib/esm/routing/createRouter.d.ts +8 -1
- package/lib/esm/routing/createRouter.d.ts.map +1 -1
- package/lib/esm/routing/createRouter.js +540 -17
- 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 +10 -0
- package/lib/esm/routing/index.d.ts.map +1 -1
- package/lib/esm/routing/index.js +11 -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 +13 -0
- package/lib/esm/routing/useNavigate.d.ts.map +1 -0
- package/lib/esm/routing/useNavigate.js +11 -0
- 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/useQuery.d.ts +2 -0
- package/lib/esm/routing/useQuery.d.ts.map +1 -0
- package/lib/esm/routing/useQuery.js +9 -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/useQueryState.d.ts +13 -0
- package/lib/esm/routing/useQueryState.d.ts.map +1 -0
- package/lib/esm/routing/useQueryState.js +80 -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/routing/useTypedQuery.d.ts +2 -0
- package/lib/esm/routing/useTypedQuery.d.ts.map +1 -0
- package/lib/esm/routing/useTypedQuery.js +36 -0
- package/lib/esm/tools/buildSearch.d.ts +12 -0
- package/lib/esm/tools/buildSearch.d.ts.map +1 -0
- package/lib/esm/tools/buildSearch.js +264 -0
- package/lib/esm/tools/query-dsl.d.ts +28 -0
- package/lib/esm/tools/query-dsl.d.ts.map +1 -0
- package/lib/esm/tools/query-dsl.js +250 -0
- package/lib/esm/tools/query.d.ts +2 -0
- package/lib/esm/tools/query.d.ts.map +1 -0
- package/lib/esm/tools/query.js +43 -0
- package/lib/esm/tools.d.ts +2 -2
- package/lib/esm/tools.d.ts.map +1 -1
- package/lib/esm/tools.js +3 -2
- package/lib/esm/type-tests/query-infer.test-d.d.ts +2 -0
- package/lib/esm/type-tests/query-infer.test-d.d.ts.map +1 -0
- package/lib/esm/type-tests/query-infer.test-d.js +49 -0
- package/lib/esm/types.d.ts +47 -4
- 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/builder.d.ts.map +1 -1
- package/lib/types/eslint-rules/index.d.ts +2 -0
- package/lib/types/eslint-rules/index.d.ts.map +1 -0
- package/lib/types/eslint-rules/no-direct-window-location-search.d.ts +4 -0
- package/lib/types/eslint-rules/no-direct-window-location-search.d.ts.map +1 -0
- package/lib/types/history/BrowserHistory.d.ts.map +1 -1
- package/lib/types/index.d.ts +5 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/routing/Link.d.ts +1 -0
- package/lib/types/routing/Link.d.ts.map +1 -1
- package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
- package/lib/types/routing/createRouter.d.ts +8 -1
- 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 +10 -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 +13 -0
- package/lib/types/routing/useNavigate.d.ts.map +1 -0
- package/lib/types/routing/useNavigateWithQuery.d.ts +15 -0
- package/lib/types/routing/useNavigateWithQuery.d.ts.map +1 -0
- package/lib/types/routing/useQuery.d.ts +2 -0
- package/lib/types/routing/useQuery.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/useQueryState.d.ts +13 -0
- package/lib/types/routing/useQueryState.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/routing/useTypedQuery.d.ts +2 -0
- package/lib/types/routing/useTypedQuery.d.ts.map +1 -0
- package/lib/types/tools/buildSearch.d.ts +12 -0
- package/lib/types/tools/buildSearch.d.ts.map +1 -0
- package/lib/types/tools/query-dsl.d.ts +28 -0
- package/lib/types/tools/query-dsl.d.ts.map +1 -0
- package/lib/types/tools/query.d.ts +2 -0
- package/lib/types/tools/query.d.ts.map +1 -0
- package/lib/types/tools.d.ts +2 -2
- package/lib/types/tools.d.ts.map +1 -1
- package/lib/types/type-tests/query-infer.test-d.d.ts +2 -0
- package/lib/types/type-tests/query-infer.test-d.d.ts.map +1 -0
- package/lib/types/types.d.ts +47 -4
- package/lib/types/types.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -4,4 +4,14 @@ export { default as RouteComponent } from './RouteComponent.js';
|
|
|
4
4
|
export { default as RouteComponentWrapper } from './RouteComponentWrapper.js';
|
|
5
5
|
export { default as RouterRenderer } from './RouterRenderer.js';
|
|
6
6
|
export { default as RoutingContext } from './RoutingContext.js';
|
|
7
|
+
export { default as useQuery } from './useQuery.js';
|
|
8
|
+
export { default as useTypedQuery } from './useTypedQuery.js';
|
|
9
|
+
export { default as useNavigate } from './useNavigate.js';
|
|
10
|
+
export { default as useQueryState } from './useQueryState.js';
|
|
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';
|
|
7
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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"}
|
|
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
|
@@ -4,4 +4,14 @@ export { default as RouteComponent } from './RouteComponent.js';
|
|
|
4
4
|
export { default as RouteComponentWrapper } from './RouteComponentWrapper.js';
|
|
5
5
|
export { default as RouterRenderer } from './RouterRenderer.js';
|
|
6
6
|
export { default as RoutingContext } from './RoutingContext.js';
|
|
7
|
-
|
|
7
|
+
export { default as useQuery } from './useQuery.js';
|
|
8
|
+
export { default as useTypedQuery } from './useTypedQuery.js';
|
|
9
|
+
export { default as useNavigate } from './useNavigate.js';
|
|
10
|
+
export { default as useQueryState } from './useQueryState.js';
|
|
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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export default function useNavigate(): (opts: {
|
|
2
|
+
pathname?: string;
|
|
3
|
+
query?: Record<string, any>;
|
|
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;
|
|
12
|
+
}) => void;
|
|
13
|
+
//# sourceMappingURL=useNavigate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -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,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 @@
|
|
|
1
|
+
{"version":3,"file":"useQuery.d.ts","sourceRoot":"","sources":["../../../src/routing/useQuery.ts"],"names":[],"mappings":"AAOA,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy91c2VRdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ25DLE9BQU8sY0FBYyxNQUFNLHFCQUFxQixDQUFDO0FBTWpELE1BQU0sQ0FBQyxPQUFPLFVBQVUsUUFBUTtJQUM5QixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkMsSUFBSSxHQUFHLElBQUksSUFBSTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSb3V0aW5nQ29udGV4dCBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcblxuLyoqXG4gKiBIb29rIHJldHVybmluZyB0aGUgcmF3ICh1bnR5cGVkKSBxdWVyeSBwYXJhbWV0ZXJzIHBhcnNlZCBmcm9tIGxvY2F0aW9uLnNlYXJjaC5cbiAqIFBoYXNlIDI6IHZhbHVlcyBhcmUgc3RyaW5ncyBvciBzdHJpbmdbXSB3aGVuIHJlcGVhdGVkLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VRdWVyeSgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT4ge1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KFJvdXRpbmdDb250ZXh0KTtcbiAgaWYgKGN0eCA9PSBudWxsKSByZXR1cm4ge307XG4gIHJldHVybiBjdHguZ2V0KCkucXVlcnk7XG59XG4iXX0=
|
|
@@ -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,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 = any>(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":"AAKA,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;AAWF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,CAAC,GAAG,GAAG,EAC3C,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,CAyFA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { useCallback, useContext, useMemo } 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 route = entry?.route;
|
|
8
|
+
const schema = useMemo(() => {
|
|
9
|
+
if (route == null)
|
|
10
|
+
return undefined;
|
|
11
|
+
const collected = [];
|
|
12
|
+
for (const r of route.route.routes) {
|
|
13
|
+
const maybe = r.query;
|
|
14
|
+
if (maybe !== null &&
|
|
15
|
+
typeof maybe === 'object' &&
|
|
16
|
+
Object.values(maybe).some((v) => {
|
|
17
|
+
if (v == null || typeof v !== 'object')
|
|
18
|
+
return false;
|
|
19
|
+
if (!('parse' in v))
|
|
20
|
+
return false;
|
|
21
|
+
const candidate = v;
|
|
22
|
+
return typeof candidate.parse === 'function';
|
|
23
|
+
})) {
|
|
24
|
+
collected.push(maybe);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (collected.length === 0)
|
|
28
|
+
return undefined;
|
|
29
|
+
return collected.at(-1);
|
|
30
|
+
}, [route]);
|
|
31
|
+
const typedQuery = entry?.typedQuery;
|
|
32
|
+
const rawQuery = entry?.query;
|
|
33
|
+
let current;
|
|
34
|
+
if (opts.raw || schema == null) {
|
|
35
|
+
const rawVal = rawQuery?.[key];
|
|
36
|
+
if (Array.isArray(rawVal)) {
|
|
37
|
+
current = rawVal[rawVal.length - 1];
|
|
38
|
+
}
|
|
39
|
+
else if (rawVal != null) {
|
|
40
|
+
current = rawVal;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else if (typedQuery != null) {
|
|
44
|
+
current = typedQuery[key];
|
|
45
|
+
}
|
|
46
|
+
if (current === undefined && defaultValue !== undefined) {
|
|
47
|
+
current = defaultValue;
|
|
48
|
+
}
|
|
49
|
+
const setValue = useCallback((next, navOpts) => {
|
|
50
|
+
if (ctx == null)
|
|
51
|
+
return;
|
|
52
|
+
const replace = navOpts?.replace ?? opts.replace;
|
|
53
|
+
const entryNow = ctx.get();
|
|
54
|
+
const source = (entryNow.typedQuery ?? entryNow.query);
|
|
55
|
+
const base = {};
|
|
56
|
+
for (const k of Object.keys(source)) {
|
|
57
|
+
base[k] = source[k];
|
|
58
|
+
}
|
|
59
|
+
const descriptor = schema?.[key];
|
|
60
|
+
const isDefault = descriptor != null &&
|
|
61
|
+
descriptor.hasDefault &&
|
|
62
|
+
next === descriptor.defaultValue;
|
|
63
|
+
if (!(next === undefined ||
|
|
64
|
+
(omitIfDefault && (isDefault || next === defaultValue)))) {
|
|
65
|
+
base[key] = next;
|
|
66
|
+
}
|
|
67
|
+
else if (Object.prototype.hasOwnProperty.call(base, key)) {
|
|
68
|
+
const rebuilt = {};
|
|
69
|
+
for (const k of Object.keys(base)) {
|
|
70
|
+
if (k !== key)
|
|
71
|
+
rebuilt[k] = base[k];
|
|
72
|
+
}
|
|
73
|
+
ctx.navigate({ query: rebuilt, replace });
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
ctx.navigate({ query: base, replace });
|
|
77
|
+
}, [ctx, schema, key, omitIfDefault, defaultValue, opts.replace]);
|
|
78
|
+
return [current, setValue];
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUXVlcnlTdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0aW5nL3VzZVF1ZXJ5U3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3pELE9BQU8sY0FBYyxNQUFNLHFCQUFxQixDQUFDO0FBd0JqRCxNQUFNLENBQUMsT0FBTyxVQUFVLGFBQWEsQ0FDbkMsR0FBVyxFQUNYLE9BQWdDLEVBQUU7SUFLbEMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sRUFBRSxZQUFZLEVBQUUsYUFBYSxHQUFHLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztJQUNwRCxNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDekIsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUczQixNQUFNLE1BQU0sR0FBNEIsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUNuRCxJQUFJLEtBQUssSUFBSSxJQUFJO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDcEMsTUFBTSxTQUFTLEdBQWtCLEVBQUUsQ0FBQztRQUNwQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsTUFBTSxLQUFLLEdBQUksQ0FBb0MsQ0FBQyxLQUFLLENBQUM7WUFDMUQsSUFDRSxLQUFLLEtBQUssSUFBSTtnQkFDZCxPQUFPLEtBQUssS0FBSyxRQUFRO2dCQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWdDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDekQsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7d0JBQUUsT0FBTyxLQUFLLENBQUM7b0JB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O1lBRTNELE1BQU0sT0FBTyxHQUF3QixFQUFFLENBQUM7WUFDeEMsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUc7b0JBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxDQUFDO1lBQ0QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMxQyxPQUFPO1FBQ1QsQ0FBQztRQUNELEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQzlELENBQUM7SUFFRixPQUFPLENBQUMsT0FBd0IsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5U2NoZW1hIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKiogT3B0aW9ucyBmb3IgdXNlUXVlcnlTdGF0ZSAqL1xuZXhwb3J0IHR5cGUgVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4gPSB7XG4gIC8qKiBEZWZhdWx0IHZhbHVlIHdoZW4gdGhlIGtleSBpcyBhYnNlbnQgKG92ZXJyaWRlcyBzY2hlbWEgZGVmYXVsdCBmb3IgdGhlIGhvb2sgY29uc3VtZXIpICovXG4gIGRlZmF1bHRWYWx1ZT86IFQ7XG4gIC8qKiBJZiB0cnVlLCBvbWl0IHRoaXMga2V5IHdoZW4gdmFsdWUgZXF1YWxzIGRlZmF1bHRWYWx1ZSAoYW5kIHNjaGVtYSBkZWZhdWx0KSAqL1xuICBvbWl0SWZEZWZhdWx0PzogYm9vbGVhbjtcbiAgLyoqIFJlcGxhY2UgaW5zdGVhZCBvZiBwdXNoIHdoZW4gdXBkYXRpbmcgKHByZXZlbnRzIG5ldyBoaXN0b3J5IGVudHJ5KSAqL1xuICByZXBsYWNlPzogYm9vbGVhbjtcbiAgLyoqIFVzZSByYXcgKHVudHlwZWQpIHF1ZXJ5IHZhbHVlIHJhdGhlciB0aGFuIHR5cGVkUXVlcnkgKGZhbGxiYWNrIGZvciBtaWdyYXRpb24pICovXG4gIHJhdz86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEJpZGlyZWN0aW9uYWwgc3RhdGUg4oaUIFVSTCBzeW5jaHJvbml6YXRpb24gZm9yIGEgc2luZ2xlIHF1ZXJ5IHBhcmFtLlxuICpcbiAqIEJlaGF2aW91cnM6XG4gKiAtIFJlYWRzIGZyb20gdHlwZWRRdWVyeSAoaWYgc2NoZW1hIHByZXNlbnQpIGVsc2UgcmF3IHF1ZXJ5IGFnZ3JlZ2F0aW9uLlxuICogLSBXaGVuIHNldHRpbmcgdmFsdWUgdG8gdW5kZWZpbmVkIChvciBkZWZhdWx0IHdpdGggb21pdElmRGVmYXVsdCkgdGhlIGtleSBpcyByZW1vdmVkLlxuICogLSBTZXJpYWxpemVzIHRocm91Z2ggZXhpc3RpbmcgbmF2aWdhdGUrYnVpbGRTZWFyY2ggcGlwZWxpbmUgKHNjaGVtYSBhd2FyZSBvcmRlcmluZyAmIG9taXNzaW9uKS5cbiAqIC0gU3RhYmxlIGlkZW50aXR5IGZvciBzZXR0ZXIuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VCA9IGFueT4oXG4gIGtleTogc3RyaW5nLFxuICBvcHRzOiBVc2VRdWVyeVN0YXRlT3B0aW9uczxUPiA9IHt9LFxuKTogW1xuICBUIHwgdW5kZWZpbmVkLFxuICAobmV4dDogVCB8IHVuZGVmaW5lZCwgbmF2T3B0cz86IHsgcmVwbGFjZT86IGJvb2xlYW4gfSkgPT4gdm9pZCxcbl0ge1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KFJvdXRpbmdDb250ZXh0KTtcbiAgY29uc3QgeyBkZWZhdWx0VmFsdWUsIG9taXRJZkRlZmF1bHQgPSB0cnVlIH0gPSBvcHRzO1xuICBjb25zdCBlbnRyeSA9IGN0eD8uZ2V0KCk7XG4gIGNvbnN0IHJvdXRlID0gZW50cnk/LnJvdXRlO1xuXG4gIC8vIEV4dHJhY3QgZGVlcGVzdCBzY2hlbWEgKHNhbWUgaGV1cmlzdGljIGFzIHVzZVR5cGVkUXVlcnkpXG4gIGNvbnN0IHNjaGVtYTogUXVlcnlTY2hlbWEgfCB1bmRlZmluZWQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocm91dGUgPT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb2xsZWN0ZWQ6IFF1ZXJ5U2NoZW1hW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHIgb2Ygcm91dGUucm91dGUucm91dGVzKSB7XG4gICAgICBjb25zdCBtYXliZSA9IChyIGFzIHVua25vd24gYXMgeyBxdWVyeT86IHVua25vd24gfSkucXVlcnk7XG4gICAgICBpZiAoXG4gICAgICAgIG1heWJlICE9PSBudWxsICYmXG4gICAgICAgIHR5cGVvZiBtYXliZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhtYXliZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuc29tZSgodikgPT4ge1xuICAgICAgICAgIGlmICh2ID09IG51bGwgfHwgdHlwZW9mIHYgIT09ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgaWYgKCEoJ3BhcnNlJyBpbiAodiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gdiBhcyB7IHBhcnNlPzogdW5rbm93biB9O1xuICAgICAgICAgIHJldHVybiB0eXBlb2YgY2FuZGlkYXRlLnBhcnNlID09PSAnZnVuY3Rpb24nO1xuICAgICAgICB9KVxuICAgICAgKSB7XG4gICAgICAgIGNvbGxlY3RlZC5wdXNoKG1heWJlIGFzIFF1ZXJ5U2NoZW1hKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbGxlY3RlZC5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGNvbGxlY3RlZC5hdCgtMSk7XG4gIH0sIFtyb3V0ZV0pO1xuXG4gIGNvbnN0IHR5cGVkUXVlcnkgPSBlbnRyeT8udHlwZWRRdWVyeTtcbiAgY29uc3QgcmF3UXVlcnkgPSBlbnRyeT8ucXVlcnk7XG5cbiAgbGV0IGN1cnJlbnQ6IGFueTtcbiAgaWYgKG9wdHMucmF3IHx8IHNjaGVtYSA9PSBudWxsKSB7XG4gICAgY29uc3QgcmF3VmFsID0gcmF3UXVlcnk/LltrZXldO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJhd1ZhbCkpIHtcbiAgICAgIC8vIHBpY2sgbGFzdCBmb3Igc3ltbWV0cnkgd2l0aCB0eXBlZCBwYXJzaW5nIG9mIHByaW1pdGl2ZXNcbiAgICAgIGN1cnJlbnQgPSByYXdWYWxbcmF3VmFsLmxlbmd0aCAtIDFdO1xuICAgIH0gZWxzZSBpZiAocmF3VmFsICE9IG51bGwpIHtcbiAgICAgIGN1cnJlbnQgPSByYXdWYWw7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVkUXVlcnkgIT0gbnVsbCkge1xuICAgIGN1cnJlbnQgPSAodHlwZWRRdWVyeSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldO1xuICB9XG4gIGlmIChjdXJyZW50ID09PSB1bmRlZmluZWQgJiYgZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjdXJyZW50ID0gZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgY29uc3Qgc2V0VmFsdWUgPSB1c2VDYWxsYmFjayhcbiAgICAobmV4dDogVCB8IHVuZGVmaW5lZCwgbmF2T3B0cz86IHsgcmVwbGFjZT86IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgaWYgKGN0eCA9PSBudWxsKSByZXR1cm47XG4gICAgICBjb25zdCByZXBsYWNlID0gbmF2T3B0cz8ucmVwbGFjZSA/PyBvcHRzLnJlcGxhY2U7XG4gICAgICBjb25zdCBlbnRyeU5vdyA9IGN0eC5nZXQoKTtcbiAgICAgIC8vIEJhc2Ugb2JqZWN0OiBzdGFydCBmcm9tIGV4aXN0aW5nIHR5cGVkUXVlcnkgaWYgcHJlc2VudCBlbHNlIHJhdyBxdWVyeSBjbG9uZVxuICAgICAgY29uc3Qgc291cmNlID0gKGVudHJ5Tm93LnR5cGVkUXVlcnkgPz8gZW50cnlOb3cucXVlcnkpIGFzIFJlY29yZDxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBhbnlcbiAgICAgID47XG4gICAgICBjb25zdCBiYXNlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoc291cmNlKSkge1xuICAgICAgICBiYXNlW2tdID0gc291cmNlW2tdO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHNjaGVtYT8uW2tleV07XG4gICAgICBjb25zdCBpc0RlZmF1bHQgPVxuICAgICAgICBkZXNjcmlwdG9yICE9IG51bGwgJiZcbiAgICAgICAgZGVzY3JpcHRvci5oYXNEZWZhdWx0ICYmXG4gICAgICAgIG5leHQgPT09IGRlc2NyaXB0b3IuZGVmYXVsdFZhbHVlO1xuICAgICAgaWYgKFxuICAgICAgICAhKFxuICAgICAgICAgIG5leHQgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIChvbWl0SWZEZWZhdWx0ICYmIChpc0RlZmF1bHQgfHwgbmV4dCA9PT0gZGVmYXVsdFZhbHVlKSlcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIGJhc2Vba2V5XSA9IG5leHQ7XG4gICAgICB9IGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiYXNlLCBrZXkpKSB7XG4gICAgICAgIC8vIHJlYnVpbGQgd2l0aG91dCBrZXlcbiAgICAgICAgY29uc3QgcmVidWlsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoYmFzZSkpIHtcbiAgICAgICAgICBpZiAoayAhPT0ga2V5KSByZWJ1aWx0W2tdID0gYmFzZVtrXTtcbiAgICAgICAgfVxuICAgICAgICBjdHgubmF2aWdhdGUoeyBxdWVyeTogcmVidWlsdCwgcmVwbGFjZSB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY3R4Lm5hdmlnYXRlKHsgcXVlcnk6IGJhc2UsIHJlcGxhY2UgfSk7XG4gICAgfSxcbiAgICBbY3R4LCBzY2hlbWEsIGtleSwgb21pdElmRGVmYXVsdCwgZGVmYXVsdFZhbHVlLCBvcHRzLnJlcGxhY2VdLFxuICApO1xuXG4gIHJldHVybiBbY3VycmVudCBhcyBUIHwgdW5kZWZpbmVkLCBzZXRWYWx1ZV07XG59XG4iXX0=
|
|
@@ -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"}
|