@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.
Files changed (127) hide show
  1. package/README.md +755 -1
  2. package/lib/esm/builder.d.ts.map +1 -1
  3. package/lib/esm/builder.js +10 -3
  4. package/lib/esm/eslint-rules/index.d.ts +2 -0
  5. package/lib/esm/eslint-rules/index.d.ts.map +1 -0
  6. package/lib/esm/eslint-rules/index.js +2 -0
  7. package/lib/esm/eslint-rules/no-direct-window-location-search.d.ts +4 -0
  8. package/lib/esm/eslint-rules/no-direct-window-location-search.d.ts.map +1 -0
  9. package/lib/esm/eslint-rules/no-direct-window-location-search.js +48 -0
  10. package/lib/esm/history/BrowserHistory.d.ts.map +1 -1
  11. package/lib/esm/history/BrowserHistory.js +4 -2
  12. package/lib/esm/index.d.ts +5 -0
  13. package/lib/esm/index.d.ts.map +1 -1
  14. package/lib/esm/index.js +6 -1
  15. package/lib/esm/routing/Link.d.ts +1 -0
  16. package/lib/esm/routing/Link.d.ts.map +1 -1
  17. package/lib/esm/routing/Link.js +35 -4
  18. package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
  19. package/lib/esm/routing/RouteComponentWrapper.js +7 -2
  20. package/lib/esm/routing/createRouter.d.ts +8 -1
  21. package/lib/esm/routing/createRouter.d.ts.map +1 -1
  22. package/lib/esm/routing/createRouter.js +540 -17
  23. package/lib/esm/routing/devtools.d.ts +20 -0
  24. package/lib/esm/routing/devtools.d.ts.map +1 -0
  25. package/lib/esm/routing/devtools.js +678 -0
  26. package/lib/esm/routing/filters.d.ts +97 -0
  27. package/lib/esm/routing/filters.d.ts.map +1 -0
  28. package/lib/esm/routing/filters.js +557 -0
  29. package/lib/esm/routing/index.d.ts +10 -0
  30. package/lib/esm/routing/index.d.ts.map +1 -1
  31. package/lib/esm/routing/index.js +11 -1
  32. package/lib/esm/routing/useActiveFilters.d.ts +9 -0
  33. package/lib/esm/routing/useActiveFilters.d.ts.map +1 -0
  34. package/lib/esm/routing/useActiveFilters.js +38 -0
  35. package/lib/esm/routing/useFilterState.d.ts +10 -0
  36. package/lib/esm/routing/useFilterState.d.ts.map +1 -0
  37. package/lib/esm/routing/useFilterState.js +14 -0
  38. package/lib/esm/routing/useNavigate.d.ts +13 -0
  39. package/lib/esm/routing/useNavigate.d.ts.map +1 -0
  40. package/lib/esm/routing/useNavigate.js +11 -0
  41. package/lib/esm/routing/useNavigateWithQuery.d.ts +15 -0
  42. package/lib/esm/routing/useNavigateWithQuery.d.ts.map +1 -0
  43. package/lib/esm/routing/useNavigateWithQuery.js +95 -0
  44. package/lib/esm/routing/useQuery.d.ts +2 -0
  45. package/lib/esm/routing/useQuery.d.ts.map +1 -0
  46. package/lib/esm/routing/useQuery.js +9 -0
  47. package/lib/esm/routing/useQueryObject.d.ts +18 -0
  48. package/lib/esm/routing/useQueryObject.d.ts.map +1 -0
  49. package/lib/esm/routing/useQueryObject.js +107 -0
  50. package/lib/esm/routing/useQueryState.d.ts +13 -0
  51. package/lib/esm/routing/useQueryState.d.ts.map +1 -0
  52. package/lib/esm/routing/useQueryState.js +80 -0
  53. package/lib/esm/routing/useStableRefEquality.d.ts +5 -0
  54. package/lib/esm/routing/useStableRefEquality.d.ts.map +1 -0
  55. package/lib/esm/routing/useStableRefEquality.js +47 -0
  56. package/lib/esm/routing/useTypedQuery.d.ts +2 -0
  57. package/lib/esm/routing/useTypedQuery.d.ts.map +1 -0
  58. package/lib/esm/routing/useTypedQuery.js +36 -0
  59. package/lib/esm/tools/buildSearch.d.ts +12 -0
  60. package/lib/esm/tools/buildSearch.d.ts.map +1 -0
  61. package/lib/esm/tools/buildSearch.js +264 -0
  62. package/lib/esm/tools/query-dsl.d.ts +28 -0
  63. package/lib/esm/tools/query-dsl.d.ts.map +1 -0
  64. package/lib/esm/tools/query-dsl.js +250 -0
  65. package/lib/esm/tools/query.d.ts +2 -0
  66. package/lib/esm/tools/query.d.ts.map +1 -0
  67. package/lib/esm/tools/query.js +43 -0
  68. package/lib/esm/tools.d.ts +2 -2
  69. package/lib/esm/tools.d.ts.map +1 -1
  70. package/lib/esm/tools.js +3 -2
  71. package/lib/esm/type-tests/query-infer.test-d.d.ts +2 -0
  72. package/lib/esm/type-tests/query-infer.test-d.d.ts.map +1 -0
  73. package/lib/esm/type-tests/query-infer.test-d.js +49 -0
  74. package/lib/esm/types.d.ts +47 -4
  75. package/lib/esm/types.d.ts.map +1 -1
  76. package/lib/esm/types.js +1 -1
  77. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  78. package/lib/types/builder.d.ts.map +1 -1
  79. package/lib/types/eslint-rules/index.d.ts +2 -0
  80. package/lib/types/eslint-rules/index.d.ts.map +1 -0
  81. package/lib/types/eslint-rules/no-direct-window-location-search.d.ts +4 -0
  82. package/lib/types/eslint-rules/no-direct-window-location-search.d.ts.map +1 -0
  83. package/lib/types/history/BrowserHistory.d.ts.map +1 -1
  84. package/lib/types/index.d.ts +5 -0
  85. package/lib/types/index.d.ts.map +1 -1
  86. package/lib/types/routing/Link.d.ts +1 -0
  87. package/lib/types/routing/Link.d.ts.map +1 -1
  88. package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
  89. package/lib/types/routing/createRouter.d.ts +8 -1
  90. package/lib/types/routing/createRouter.d.ts.map +1 -1
  91. package/lib/types/routing/devtools.d.ts +20 -0
  92. package/lib/types/routing/devtools.d.ts.map +1 -0
  93. package/lib/types/routing/filters.d.ts +97 -0
  94. package/lib/types/routing/filters.d.ts.map +1 -0
  95. package/lib/types/routing/index.d.ts +10 -0
  96. package/lib/types/routing/index.d.ts.map +1 -1
  97. package/lib/types/routing/useActiveFilters.d.ts +9 -0
  98. package/lib/types/routing/useActiveFilters.d.ts.map +1 -0
  99. package/lib/types/routing/useFilterState.d.ts +10 -0
  100. package/lib/types/routing/useFilterState.d.ts.map +1 -0
  101. package/lib/types/routing/useNavigate.d.ts +13 -0
  102. package/lib/types/routing/useNavigate.d.ts.map +1 -0
  103. package/lib/types/routing/useNavigateWithQuery.d.ts +15 -0
  104. package/lib/types/routing/useNavigateWithQuery.d.ts.map +1 -0
  105. package/lib/types/routing/useQuery.d.ts +2 -0
  106. package/lib/types/routing/useQuery.d.ts.map +1 -0
  107. package/lib/types/routing/useQueryObject.d.ts +18 -0
  108. package/lib/types/routing/useQueryObject.d.ts.map +1 -0
  109. package/lib/types/routing/useQueryState.d.ts +13 -0
  110. package/lib/types/routing/useQueryState.d.ts.map +1 -0
  111. package/lib/types/routing/useStableRefEquality.d.ts +5 -0
  112. package/lib/types/routing/useStableRefEquality.d.ts.map +1 -0
  113. package/lib/types/routing/useTypedQuery.d.ts +2 -0
  114. package/lib/types/routing/useTypedQuery.d.ts.map +1 -0
  115. package/lib/types/tools/buildSearch.d.ts +12 -0
  116. package/lib/types/tools/buildSearch.d.ts.map +1 -0
  117. package/lib/types/tools/query-dsl.d.ts +28 -0
  118. package/lib/types/tools/query-dsl.d.ts.map +1 -0
  119. package/lib/types/tools/query.d.ts +2 -0
  120. package/lib/types/tools/query.d.ts.map +1 -0
  121. package/lib/types/tools.d.ts +2 -2
  122. package/lib/types/tools.d.ts.map +1 -1
  123. package/lib/types/type-tests/query-infer.test-d.d.ts +2 -0
  124. package/lib/types/type-tests/query-infer.test-d.d.ts.map +1 -0
  125. package/lib/types/types.d.ts +47 -4
  126. package/lib/types/types.d.ts.map +1 -1
  127. 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"}
@@ -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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxJQUFJLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzVELE9BQU8sRUFBRSxPQUFPLElBQUksSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRzVDLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzlFLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIE1haW4gcm91dGVyIGZhY3RvcnkgZnVuY3Rpb25cbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlUm91dGVyIH0gZnJvbSAnLi9jcmVhdGVSb3V0ZXIuanMnO1xuXG4vLyBOYXZpZ2F0aW9uIGNvbXBvbmVudCB3aXRoIHByZWxvYWRpbmcgc3VwcG9ydFxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaW5rIH0gZnJvbSAnLi9MaW5rLmpzJztcblxuLy8gUm91dGUgY29tcG9uZW50IHdyYXBwZXIgZm9yIGhhbmRsaW5nIGluZGl2aWR1YWwgcm91dGVzXG5leHBvcnQgeyBkZWZhdWx0IGFzIFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi9Sb3V0ZUNvbXBvbmVudC5qcyc7XG5cbi8vIEludGVybmFsIHdyYXBwZXIgY29tcG9uZW50IGZvciByb3V0ZSByZW5kZXJpbmdcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUm91dGVDb21wb25lbnRXcmFwcGVyIH0gZnJvbSAnLi9Sb3V0ZUNvbXBvbmVudFdyYXBwZXIuanMnO1xuXG4vLyBNYWluIHJlbmRlcmVyIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGN1cnJlbnQgcm91dGVcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUm91dGVyUmVuZGVyZXIgfSBmcm9tICcuL1JvdXRlclJlbmRlcmVyLmpzJztcblxuLy8gUmVhY3QgY29udGV4dCBmb3Igc2hhcmluZyByb3V0ZXIgc3RhdGVcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUm91dGluZ0NvbnRleHQgfSBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcbiJdfQ==
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,2 @@
1
+ export default function useQuery(): Record<string, string | string[]>;
2
+ //# sourceMappingURL=useQuery.d.ts.map
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUXVlcnlPYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy91c2VRdWVyeU9iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDekQsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUF1QmpELE1BQU0sVUFBVSxjQUFjLENBQzVCLE9BQThCLEVBQUU7SUFVaEMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN6QixNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBRTNCLE1BQU0sTUFBTSxHQUE0QixPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ25ELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFrQixFQUFFLENBQUM7UUFDcEMsS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxHQUFHLENBQW1DLENBQUM7WUFDakQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN6QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDdkUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFnQyxDQUFDLENBQUM7Z0JBQy9ELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDdkIsSUFDRSxDQUFDLEtBQUssSUFBSTt3QkFDVixPQUFPLENBQUMsS0FBSyxRQUFRO3dCQUNyQixPQUFPLElBQUssQ0FBNkIsRUFDekMsQ0FBQzt3QkFDRCxNQUFNLFNBQVMsR0FBRyxDQUF3QixDQUFDO3dCQUMzQyxJQUFJLE9BQU8sU0FBUyxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQzs0QkFDMUMsYUFBYSxHQUFHLElBQUksQ0FBQzs0QkFDckIsTUFBTTt3QkFDUixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLGFBQWEsRUFBRSxDQUFDO29CQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQW9CLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUVaLE1BQU0sT0FBTyxHQUF3QixPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ2hELElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELElBQUksTUFBdUMsQ0FBQztRQUM1QyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEQsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUF3QyxDQUFDO1FBQzFELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUE2QyxDQUFDO1FBQy9ELENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBd0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFHdEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUMxQixDQUNFLElBRXdELEVBQ3hELE9BQWdELEVBQ2hELEVBQUU7UUFDRixJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN6QixJQUFJLFFBQTZCLENBQUM7UUFDbEMsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMvQixNQUFNLEVBQUUsR0FBRyxJQUF1RCxDQUFDO1lBQ25FLFFBQVEsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBd0IsRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sUUFBUSxHQUF3QixFQUFFLENBQUM7UUFDekMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBRTFCLENBQUM7aUJBQU0sSUFDTCxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUk7Z0JBQzFCLE1BQU0sSUFBSSxJQUFJO2dCQUNkLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQ2pELENBQUM7Z0JBQ0QsTUFBTSxXQUFXLEdBQUksTUFBa0MsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixJQUNFLFdBQVcsSUFBSSxJQUFJO29CQUNuQixPQUFPLFdBQVcsS0FBSyxRQUFRO29CQUMvQixZQUFZLElBQUksV0FBVztvQkFDM0IsY0FBYyxJQUFJLFdBQVcsRUFDN0IsQ0FBQztvQkFDRCxNQUFNLE9BQU8sR0FBRyxXQUdmLENBQUM7b0JBQ0YsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUNsRSxXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUNyQixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFFbEIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDO1FBQ0gsQ0FBQztRQUNELEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDWCxLQUFLLEVBQUUsUUFBUTtZQUNmLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQ3pDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FDeEQsQ0FBQztJQUVGLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELGVBQWUsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5U2NoZW1hIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZVF1ZXJ5T2JqZWN0T3B0aW9ucyB7XG4gIHJhdz86IGJvb2xlYW47XG4gIHJlcGxhY2U/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"}