kiru 0.50.0-preview.0 → 0.50.0-preview.1

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 (118) hide show
  1. package/dist/components/lazy.d.ts.map +1 -1
  2. package/dist/components/lazy.js +11 -136
  3. package/dist/components/lazy.js.map +1 -1
  4. package/dist/components/suspense.d.ts +7 -6
  5. package/dist/components/suspense.d.ts.map +1 -1
  6. package/dist/components/suspense.js +1 -4
  7. package/dist/components/suspense.js.map +1 -1
  8. package/dist/constants.d.ts +1 -2
  9. package/dist/constants.d.ts.map +1 -1
  10. package/dist/constants.js +1 -2
  11. package/dist/constants.js.map +1 -1
  12. package/dist/hmr.d.ts +1 -0
  13. package/dist/hmr.d.ts.map +1 -1
  14. package/dist/hmr.js +7 -0
  15. package/dist/hmr.js.map +1 -1
  16. package/dist/recursiveRender.d.ts +6 -0
  17. package/dist/recursiveRender.d.ts.map +1 -0
  18. package/dist/recursiveRender.js +109 -0
  19. package/dist/recursiveRender.js.map +1 -0
  20. package/dist/renderToString.d.ts.map +1 -1
  21. package/dist/renderToString.js +6 -112
  22. package/dist/renderToString.js.map +1 -1
  23. package/dist/router/config.d.ts +3 -0
  24. package/dist/router/config.d.ts.map +1 -0
  25. package/dist/router/config.js +13 -0
  26. package/dist/router/config.js.map +1 -0
  27. package/dist/router/context.d.ts +15 -0
  28. package/dist/router/context.d.ts.map +1 -0
  29. package/dist/router/context.js +11 -0
  30. package/dist/router/context.js.map +1 -0
  31. package/dist/router/errors.d.ts +4 -0
  32. package/dist/router/errors.d.ts.map +1 -0
  33. package/dist/router/errors.js +7 -0
  34. package/dist/router/errors.js.map +1 -0
  35. package/dist/router/fileRouter.d.ts +48 -0
  36. package/dist/router/fileRouter.d.ts.map +1 -0
  37. package/dist/router/fileRouter.js +311 -0
  38. package/dist/router/fileRouter.js.map +1 -0
  39. package/dist/router/globals.d.ts +5 -0
  40. package/dist/router/globals.d.ts.map +1 -0
  41. package/dist/router/globals.js +4 -0
  42. package/dist/router/globals.js.map +1 -0
  43. package/dist/router/index.d.ts +7 -0
  44. package/dist/router/index.d.ts.map +1 -0
  45. package/dist/router/index.js +7 -0
  46. package/dist/router/index.js.map +1 -0
  47. package/dist/router/link.d.ts +8 -0
  48. package/dist/router/link.d.ts.map +1 -0
  49. package/dist/router/link.js +15 -0
  50. package/dist/router/link.js.map +1 -0
  51. package/dist/router/types.d.ts +63 -0
  52. package/dist/router/types.d.ts.map +1 -0
  53. package/dist/router/types.internal.d.ts +12 -0
  54. package/dist/router/types.internal.d.ts.map +1 -0
  55. package/dist/router/types.internal.js +2 -0
  56. package/dist/router/types.internal.js.map +1 -0
  57. package/dist/router/types.js +2 -0
  58. package/dist/router/types.js.map +1 -0
  59. package/dist/ssr/server.d.ts.map +1 -1
  60. package/dist/ssr/server.js +5 -109
  61. package/dist/ssr/server.js.map +1 -1
  62. package/dist/types.d.ts +2 -2
  63. package/dist/types.d.ts.map +1 -1
  64. package/dist/types.utils.d.ts +1 -8
  65. package/dist/types.utils.d.ts.map +1 -1
  66. package/dist/utils/vdom.d.ts.map +1 -1
  67. package/dist/utils/vdom.js +2 -5
  68. package/dist/utils/vdom.js.map +1 -1
  69. package/package.json +4 -8
  70. package/src/components/lazy.ts +12 -169
  71. package/src/components/suspense.ts +8 -10
  72. package/src/constants.ts +0 -2
  73. package/src/hmr.ts +8 -0
  74. package/src/recursiveRender.ts +127 -0
  75. package/src/renderToString.ts +7 -137
  76. package/src/router/config.ts +15 -0
  77. package/src/router/context.ts +23 -0
  78. package/src/router/errors.ts +6 -0
  79. package/src/router/fileRouter.ts +475 -0
  80. package/src/router/globals.ts +5 -0
  81. package/src/router/index.ts +6 -0
  82. package/src/router/link.ts +32 -0
  83. package/src/router/types.internal.ts +14 -0
  84. package/src/router/types.ts +81 -0
  85. package/src/ssr/server.ts +6 -136
  86. package/src/types.ts +0 -2
  87. package/src/types.utils.ts +1 -14
  88. package/src/utils/vdom.ts +1 -5
  89. package/dist/components/router/index.d.ts +0 -3
  90. package/dist/components/router/index.d.ts.map +0 -1
  91. package/dist/components/router/index.js +0 -3
  92. package/dist/components/router/index.js.map +0 -1
  93. package/dist/components/router/route.d.ts +0 -46
  94. package/dist/components/router/route.d.ts.map +0 -1
  95. package/dist/components/router/route.js +0 -8
  96. package/dist/components/router/route.js.map +0 -1
  97. package/dist/components/router/router.d.ts +0 -62
  98. package/dist/components/router/router.d.ts.map +0 -1
  99. package/dist/components/router/router.js +0 -177
  100. package/dist/components/router/router.js.map +0 -1
  101. package/dist/components/router/routerUtils.d.ts +0 -5
  102. package/dist/components/router/routerUtils.d.ts.map +0 -1
  103. package/dist/components/router/routerUtils.js +0 -39
  104. package/dist/components/router/routerUtils.js.map +0 -1
  105. package/dist/ssr/hydrationBoundary.d.ts +0 -27
  106. package/dist/ssr/hydrationBoundary.d.ts.map +0 -1
  107. package/dist/ssr/hydrationBoundary.js +0 -30
  108. package/dist/ssr/hydrationBoundary.js.map +0 -1
  109. package/dist/ssr/index.d.ts +0 -2
  110. package/dist/ssr/index.d.ts.map +0 -1
  111. package/dist/ssr/index.js +0 -2
  112. package/dist/ssr/index.js.map +0 -1
  113. package/src/components/router/index.ts +0 -2
  114. package/src/components/router/route.ts +0 -51
  115. package/src/components/router/router.ts +0 -273
  116. package/src/components/router/routerUtils.ts +0 -49
  117. package/src/ssr/hydrationBoundary.ts +0 -63
  118. package/src/ssr/index.ts +0 -1
package/src/ssr/server.ts CHANGED
@@ -1,29 +1,9 @@
1
1
  import { Readable } from "node:stream"
2
2
  import { Fragment } from "../element.js"
3
- import { renderMode, node, hookIndex } from "../globals.js"
4
- import {
5
- isVNode,
6
- encodeHtmlEntities,
7
- propsToElementAttributes,
8
- isExoticType,
9
- assertValidElementProps,
10
- } from "../utils/index.js"
11
- import { Signal } from "../signals/base.js"
12
- import {
13
- $HYDRATION_BOUNDARY,
14
- $ERROR_BOUNDARY,
15
- PREFETCHED_DATA_EVENT,
16
- voidElements,
17
- } from "../constants.js"
18
- import { HYDRATION_BOUNDARY_MARKER } from "./hydrationBoundary.js"
3
+ import { renderMode } from "../globals.js"
4
+ import { PREFETCHED_DATA_EVENT } from "../constants.js"
19
5
  import { __DEV__ } from "../env.js"
20
- import type { ErrorBoundaryNode } from "../types.utils"
21
- import { isSuspenseThrowValue } from "../components/suspense.js"
22
-
23
- interface ServerRenderContext {
24
- write: (chunk: string) => void
25
- queuePendingData: (data: Kiru.StatefulPromise<unknown>[]) => void
26
- }
6
+ import { recursiveRender, RecursiveRenderContext } from "../recursiveRender.js"
27
7
 
28
8
  const PREFETCH_EVENTS_SETUP = `
29
9
  <script type="text/javascript">
@@ -52,9 +32,9 @@ export function renderToReadableStream(element: JSX.Element): {
52
32
 
53
33
  let immediate = ""
54
34
 
55
- const ctx: ServerRenderContext = {
35
+ const ctx: RecursiveRenderContext = {
56
36
  write: (chunk) => (immediate += chunk),
57
- queuePendingData(data) {
37
+ onPending(data) {
58
38
  for (const promise of data) {
59
39
  if (prefetchPromises.has(promise)) continue
60
40
  prefetchPromises.add(promise)
@@ -76,7 +56,7 @@ export function renderToReadableStream(element: JSX.Element): {
76
56
 
77
57
  const prev = renderMode.current
78
58
  renderMode.current = "stream"
79
- renderToStream_internal(ctx, rootNode, null, 0)
59
+ recursiveRender(ctx, rootNode, null, 0)
80
60
  renderMode.current = prev
81
61
 
82
62
  if (pendingWritePromises.length > 0) {
@@ -90,113 +70,3 @@ export function renderToReadableStream(element: JSX.Element): {
90
70
 
91
71
  return { immediate, stream }
92
72
  }
93
-
94
- function renderToStream_internal(
95
- ctx: ServerRenderContext,
96
- el: unknown,
97
- parent: Kiru.VNode | null,
98
- idx: number
99
- ): void {
100
- if (el === null || el === undefined || typeof el === "boolean") return
101
- if (typeof el === "string") return ctx.write(encodeHtmlEntities(el))
102
- if (typeof el === "number" || typeof el === "bigint")
103
- return ctx.write(el.toString())
104
- if (el instanceof Array)
105
- return el.forEach((c, i) => renderToStream_internal(ctx, c, parent, i))
106
- if (Signal.isSignal(el)) return ctx.write(String(el.peek()))
107
- if (!isVNode(el)) return ctx.write(String(el))
108
-
109
- el.parent = parent
110
- el.depth = (parent?.depth ?? -1) + 1
111
- el.index = idx
112
- const { type, props = {} } = el
113
- const children = props.children
114
-
115
- if (type === "#text")
116
- return ctx.write(encodeHtmlEntities(props.nodeValue ?? ""))
117
-
118
- if (isExoticType(type)) {
119
- if (type === $HYDRATION_BOUNDARY) {
120
- ctx.write(`<!--${HYDRATION_BOUNDARY_MARKER}-->`)
121
- renderToStream_internal(ctx, children, el, idx)
122
- ctx.write(`<!--/${HYDRATION_BOUNDARY_MARKER}-->`)
123
- return
124
- }
125
-
126
- if (type === $ERROR_BOUNDARY) {
127
- let boundaryBuffer = ""
128
- const localPromises = new Set<Kiru.StatefulPromise<unknown>>()
129
-
130
- const boundaryCtx: ServerRenderContext = {
131
- write(chunk) {
132
- boundaryBuffer += chunk
133
- },
134
- queuePendingData(data) {
135
- data.forEach((p) => localPromises.add(p))
136
- },
137
- }
138
-
139
- try {
140
- renderToStream_internal(boundaryCtx, children, el, idx)
141
- // flush successful render
142
- ctx.write(boundaryBuffer)
143
- // merge local promises into global queue
144
- ctx.queuePendingData([...localPromises])
145
- } catch (error) {
146
- if (isSuspenseThrowValue(error)) {
147
- throw error
148
- }
149
- const e = error instanceof Error ? error : new Error(String(error))
150
- const { fallback, onError } = props as ErrorBoundaryNode["props"]
151
- onError?.(e)
152
- const fallbackContent =
153
- typeof fallback === "function" ? fallback(e) : fallback
154
- renderToStream_internal(ctx, fallbackContent, el, 0)
155
- }
156
- return
157
- }
158
-
159
- // other exotic types
160
- return renderToStream_internal(ctx, children, el, idx)
161
- }
162
-
163
- if (typeof type !== "string") {
164
- try {
165
- hookIndex.current = 0
166
- node.current = el
167
- const res = type(props)
168
- return renderToStream_internal(ctx, res, el, idx)
169
- } catch (error) {
170
- if (isSuspenseThrowValue(error)) {
171
- const { fallback, pendingData } = error
172
- if (pendingData) ctx.queuePendingData(pendingData)
173
- renderToStream_internal(ctx, fallback, el, 0)
174
- return
175
- }
176
- throw error
177
- } finally {
178
- node.current = null
179
- }
180
- }
181
-
182
- if (__DEV__) assertValidElementProps(el)
183
- const attrs = propsToElementAttributes(props)
184
- ctx.write(`<${type}${attrs.length ? ` ${attrs}` : ""}>`)
185
-
186
- if (voidElements.has(type)) return
187
-
188
- if ("innerHTML" in props) {
189
- ctx.write(
190
- String(
191
- Signal.isSignal(props.innerHTML)
192
- ? props.innerHTML.peek()
193
- : props.innerHTML
194
- )
195
- )
196
- } else if (Array.isArray(children)) {
197
- children.forEach((c, i) => renderToStream_internal(ctx, c, el, i))
198
- } else {
199
- renderToStream_internal(ctx, children, el, 0)
200
- }
201
- ctx.write(`</${type}>`)
202
- }
package/src/types.ts CHANGED
@@ -4,7 +4,6 @@ import type {
4
4
  $CONTEXT_PROVIDER,
5
5
  $ERROR_BOUNDARY,
6
6
  $FRAGMENT,
7
- $HYDRATION_BOUNDARY,
8
7
  } from "./constants"
9
8
  import type { KiruGlobalContext } from "./globalContext"
10
9
  import type {
@@ -187,7 +186,6 @@ declare global {
187
186
  | typeof $FRAGMENT
188
187
  | typeof $CONTEXT_PROVIDER
189
188
  | typeof $ERROR_BOUNDARY
190
- | typeof $HYDRATION_BOUNDARY
191
189
 
192
190
  interface VNode {
193
191
  app?: AppContext
@@ -1,10 +1,4 @@
1
- import type {
2
- $CONTEXT_PROVIDER,
3
- $ERROR_BOUNDARY,
4
- $FRAGMENT,
5
- $HYDRATION_BOUNDARY,
6
- } from "./constants"
7
- import type { HydrationBoundaryMode } from "./ssr/hydrationBoundary"
1
+ import type { $CONTEXT_PROVIDER, $ERROR_BOUNDARY, $FRAGMENT } from "./constants"
8
2
  import type { Signal } from "./signals"
9
3
  import type { ErrorBoundaryProps } from "./components/errorBoundary"
10
4
 
@@ -41,13 +35,6 @@ export interface ErrorBoundaryNode extends Kiru.VNode {
41
35
  error?: Error
42
36
  }
43
37
 
44
- export interface HydrationBoundaryNode extends Kiru.VNode {
45
- type: typeof $HYDRATION_BOUNDARY
46
- props: Kiru.VNode["props"] & {
47
- mode: HydrationBoundaryMode
48
- }
49
- }
50
-
51
38
  export interface FragmentNode extends Kiru.VNode {
52
39
  type: typeof $FRAGMENT
53
40
  }
package/src/utils/vdom.ts CHANGED
@@ -3,7 +3,6 @@ import {
3
3
  FLAG_DELETION,
4
4
  $FRAGMENT,
5
5
  $CONTEXT_PROVIDER,
6
- $HYDRATION_BOUNDARY,
7
6
  FLAG_PLACEMENT,
8
7
  FLAG_UPDATE,
9
8
  $ERROR_BOUNDARY,
@@ -57,10 +56,7 @@ function isVNode(thing: unknown): thing is Kiru.VNode {
57
56
 
58
57
  function isExoticType(type: Kiru.VNode["type"]): type is Kiru.ExoticSymbol {
59
58
  return (
60
- type === $FRAGMENT ||
61
- type === $CONTEXT_PROVIDER ||
62
- type === $ERROR_BOUNDARY ||
63
- type === $HYDRATION_BOUNDARY
59
+ type === $FRAGMENT || type === $CONTEXT_PROVIDER || type === $ERROR_BOUNDARY
64
60
  )
65
61
  }
66
62
 
@@ -1,3 +0,0 @@
1
- export { Router, useRouter, navigate, Link, type LinkProps } from "./router.js";
2
- export { Route } from "./route.js";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
@@ -1,3 +0,0 @@
1
- export { Router, useRouter, navigate, Link } from "./router.js";
2
- export { Route } from "./route.js";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAkB,MAAM,aAAa,CAAA;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
@@ -1,46 +0,0 @@
1
- interface RouteProps {
2
- /**
3
- * The path to match.
4
- * @example
5
- * ```tsx
6
- * <Router>
7
- * <Route path="/" element={<h1>Home</h1>} />
8
- * <Route path="/:id" element={<UserProfile />} />
9
- * </Router>
10
- * //
11
- * const UserProfile = () => {
12
- * const router = useRouter()
13
- * const { id } = router.params
14
- * return <h1>{id}</h1>
15
- * }
16
- * ```
17
- */
18
- path: string;
19
- /**
20
- * Allow url with additional segments being matched. Useful with nested routers.
21
- * @example
22
- * ```tsx
23
- * <Route path="/profile" fallthrough element={<UserProfile />} />
24
- * //
25
- * const UserProfile = () => {
26
- * return (
27
- * <Router>
28
- * <Route path="/" element={<UserDetails />} />
29
- * <Route path="/update" element={<UserUpdateForm />} />
30
- * </Router>
31
- * )
32
- * }
33
- * ```
34
- */
35
- fallthrough?: boolean;
36
- /**
37
- * The element to render.
38
- */
39
- element: JSX.Element;
40
- }
41
- export declare function Route({ element }: RouteProps): JSX.Element;
42
- export declare function isRoute(thing: unknown): thing is Kiru.VNode & {
43
- props: RouteProps;
44
- };
45
- export {};
46
- //# sourceMappingURL=route.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/components/router/route.ts"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB;;;;;;;;;;;;;;;OAeG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC,OAAO,CAAA;CACrB;AACD,wBAAgB,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,eAE5C;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,CAE7C"}
@@ -1,8 +0,0 @@
1
- import { isVNode } from "../../utils/index.js";
2
- export function Route({ element }) {
3
- return element;
4
- }
5
- export function isRoute(thing) {
6
- return isVNode(thing) && thing.type === Route;
7
- }
8
- //# sourceMappingURL=route.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../src/components/router/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AA0C9C,MAAM,UAAU,KAAK,CAAC,EAAE,OAAO,EAAc;IAC3C,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,KAAc;IAEd,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAA;AAC/C,CAAC"}
@@ -1,62 +0,0 @@
1
- import type { ElementProps } from "../../types.js";
2
- export interface LinkProps extends Omit<ElementProps<"a">, "href"> {
3
- /**
4
- * The relative path to navigate to. If `inherit` is true,
5
- * the path will be relative to the parent <Route> component.
6
- */
7
- to: string;
8
- /**
9
- * Event handler called when the link is clicked.
10
- * If you call `e.preventDefault()`, the navigation will not happen.
11
- */
12
- onclick?: (e: Event) => void;
13
- /**
14
- * Specifies whether to replace the current history entry
15
- * instead of adding a new one.
16
- */
17
- replace?: boolean;
18
- /**
19
- * If true, the path used for `to` will be relative to the parent <Route> component.
20
- * @default false
21
- */
22
- inherit?: boolean;
23
- }
24
- export declare function Link({ to, onclick, replace, inherit, ...props }: LinkProps): Kiru.VNode;
25
- declare function setQuery(query: Record<string, string>): void;
26
- /**
27
- * Gets state and methods provided by a parent <Router>.
28
- *
29
- * @see https://kirujs.dev/docs/api/routing
30
- */
31
- export declare function useRouter(): {
32
- viewTransition: Kiru.RefObject<ViewTransition>;
33
- params: Record<string, string>;
34
- query: Record<string, string>;
35
- setQuery: typeof setQuery;
36
- };
37
- export declare function navigate(to: string, options?: {
38
- replace?: boolean;
39
- }): null;
40
- export interface RouterProps {
41
- /**
42
- * Base path for all routes in this router. Use this
43
- * to add a prefix to all routes
44
- */
45
- basePath?: string;
46
- /**
47
- * Enable ViewTransition API for navigations
48
- */
49
- transition?: boolean;
50
- /**
51
- * Children to render - the only supported children are <Route> components
52
- */
53
- children?: JSX.Children;
54
- }
55
- /**
56
- * Main router component.
57
- *
58
- * @see https://kirujs.dev/docs/api/routing
59
- */
60
- export declare function Router(props: RouterProps): JSX.Element;
61
- export {};
62
- //# sourceMappingURL=router.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/components/router/router.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAQlD,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAChE;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAA;IACV;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AACD,wBAAgB,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,cAuB1E;AAqBD,iBAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAK9C;AAED;;;;GAIG;AACH,wBAAgB,SAAS;;;;;EAGxB;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,QAwBnE;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAA;CACxB;AAMD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,eAqHxC"}
@@ -1,177 +0,0 @@
1
- import { createElement } from "../../element.js";
2
- import { useState, useMemo, useContext, useLayoutEffect, useRef, } from "../../hooks/index.js";
3
- import { __DEV__ } from "../../env.js";
4
- import { createContext } from "../../context.js";
5
- import { isRoute } from "./route.js";
6
- import { noop } from "../../utils/index.js";
7
- import { node } from "../../globals.js";
8
- import { flushSync, nextIdle } from "../../scheduler.js";
9
- import { parsePathParams, parseSearchParams, routeMatchesPath, } from "./routerUtils.js";
10
- export function Link({ to, onclick, replace, inherit, ...props }) {
11
- const router = useContext(RouterContext, false);
12
- const href = useMemo(() => {
13
- if (!inherit || router.isDefault)
14
- return to;
15
- const parentPath = Object.entries(router.params).reduce((acc, [k, v]) => acc.replace(`:${k}`, v), router.routePath);
16
- if (to === "/")
17
- return parentPath;
18
- return (parentPath + to).replaceAll(/\/+/g, "/");
19
- }, [router.params, to, inherit]);
20
- return createElement("a", {
21
- ...props,
22
- href,
23
- onclick: (e) => {
24
- onclick?.(e);
25
- if (e.defaultPrevented)
26
- return;
27
- e.preventDefault();
28
- navigate(href, { replace });
29
- },
30
- });
31
- }
32
- const RouterContext = createContext({
33
- viewTransition: { current: null },
34
- queueSyncNav: noop,
35
- params: {},
36
- query: {},
37
- routePath: "/",
38
- isDefault: true,
39
- });
40
- RouterContext.displayName = "Router";
41
- function setQuery(query) {
42
- const url = new URL(window.location.href);
43
- Object.entries(query).forEach(([k, v]) => url.searchParams.set(k, v));
44
- window.history.pushState({}, "", url.toString());
45
- window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
46
- }
47
- /**
48
- * Gets state and methods provided by a parent <Router>.
49
- *
50
- * @see https://kirujs.dev/docs/api/routing
51
- */
52
- export function useRouter() {
53
- const { viewTransition, params, query } = useContext(RouterContext);
54
- return { viewTransition, params, query, setQuery };
55
- }
56
- export function navigate(to, options) {
57
- const doNav = () => {
58
- window.history[options?.replace ? "replaceState" : "pushState"]({}, "", to);
59
- window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
60
- };
61
- // not called during render, just do the navigation
62
- if (!node.current)
63
- return doNav(), null;
64
- const routerCtx = useContext(RouterContext, false);
65
- if (routerCtx.isDefault) {
66
- /**
67
- * called from a non-router-decendant - postpone
68
- * until next tick to avoid race conditions
69
- */
70
- return nextIdle(doNav), null;
71
- }
72
- /**
73
- * set the value of our router's syncNavCallback,
74
- * causing it to be executed synchronously
75
- * during the router's useLayoutEffect.
76
- * consecutive calls to navigate will overwrite
77
- * the previous value.
78
- */
79
- return routerCtx.queueSyncNav(doNav), null;
80
- }
81
- const initLoc = () => ({
82
- pathname: window.location.pathname,
83
- search: window.location.search,
84
- });
85
- /**
86
- * Main router component.
87
- *
88
- * @see https://kirujs.dev/docs/api/routing
89
- */
90
- export function Router(props) {
91
- const viewTransition = useRef(null);
92
- const syncNavCallback = useRef(null);
93
- const parentRouterContext = useContext(RouterContext, false);
94
- const dynamicParentPath = parentRouterContext.isDefault
95
- ? null
96
- : parentRouterContext.routePath;
97
- const dynamicParentPathSegments = useMemo(() => dynamicParentPath?.split("/").filter(Boolean) || [], [dynamicParentPath]);
98
- const [loc, setLoc] = useState(initLoc);
99
- const query = useMemo(() => parseSearchParams(loc.search), [loc.search]);
100
- const realPathSegments = useMemo(() => loc.pathname.split("/").filter(Boolean), [loc.pathname]);
101
- useLayoutEffect(() => {
102
- const handler = () => {
103
- if (!document.startViewTransition || !props.transition) {
104
- return setLoc({
105
- pathname: window.location.pathname,
106
- search: window.location.search,
107
- });
108
- }
109
- viewTransition.current = document.startViewTransition(() => {
110
- setLoc({
111
- pathname: window.location.pathname,
112
- search: window.location.search,
113
- });
114
- flushSync();
115
- });
116
- viewTransition.current.finished.then(() => {
117
- viewTransition.current = null;
118
- });
119
- };
120
- window.addEventListener("popstate", handler);
121
- return () => window.removeEventListener("popstate", handler);
122
- }, []);
123
- useLayoutEffect(() => {
124
- if (syncNavCallback.current) {
125
- syncNavCallback.current();
126
- syncNavCallback.current = null;
127
- }
128
- });
129
- let fallbackRoute;
130
- let route;
131
- const _children = (Array.isArray(props.children) ? props.children : [props.children]).flat();
132
- for (const child of _children) {
133
- if (!isRoute(child))
134
- continue;
135
- if (child.props.path === "*") {
136
- if (__DEV__) {
137
- if (fallbackRoute) {
138
- console.warn("[kiru]: More than one fallback route defined. Only the last one will be used.");
139
- }
140
- }
141
- fallbackRoute = child;
142
- continue;
143
- }
144
- const dynamicChildPathSegments = ((props.basePath || "") + child.props.path)
145
- .split("/")
146
- .filter(Boolean);
147
- if (routeMatchesPath(dynamicParentPathSegments.concat(dynamicChildPathSegments), realPathSegments, child.props.fallthrough)) {
148
- route = child;
149
- break;
150
- }
151
- }
152
- let parsedParams = {};
153
- if (route) {
154
- const dynamicChildPathSegments = ((props.basePath || "") + route.props.path)
155
- .split("/")
156
- .filter(Boolean);
157
- parsedParams = parsePathParams(dynamicParentPathSegments.concat(dynamicChildPathSegments), realPathSegments);
158
- }
159
- const params = { ...parentRouterContext.params, ...parsedParams };
160
- return RouterContext.Provider({
161
- value: {
162
- params,
163
- query,
164
- routePath: (dynamicParentPath || "") +
165
- (props.basePath || "") +
166
- (route?.props.path || ""),
167
- basePath: props.basePath,
168
- isDefault: false,
169
- queueSyncNav: (callback) => {
170
- syncNavCallback.current = callback;
171
- },
172
- viewTransition: viewTransition,
173
- },
174
- children: route ?? fallbackRoute ?? null,
175
- });
176
- }
177
- //# sourceMappingURL=router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/components/router/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EACL,QAAQ,EACR,OAAO,EACP,UAAU,EACV,eAAe,EACf,MAAM,GACP,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAS,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AAwBzB,MAAM,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAa;IACzE,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;IAE/C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;QACxB,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS;YAAE,OAAO,EAAE,CAAA;QAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CACrD,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EACxC,MAAM,CAAC,SAAS,CACjB,CAAA;QACD,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,UAAU,CAAA;QACjC,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClD,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IAEhC,OAAO,aAAa,CAAC,GAAG,EAAE;QACxB,GAAG,KAAK;QACR,IAAI;QACJ,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE;YACpB,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;YACZ,IAAI,CAAC,CAAC,gBAAgB;gBAAE,OAAM;YAC9B,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QAC7B,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAWD,MAAM,aAAa,GAAG,aAAa,CAAY;IAC7C,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACjC,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,IAAI;CAChB,CAAC,CAAA;AACF,aAAa,CAAC,WAAW,GAAG,QAAQ,CAAA;AAEpC,SAAS,QAAQ,CAAC,KAA6B;IAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChD,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;IACnE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAU,EAAE,OAA+B;IAClE,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAC3E,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACpE,CAAC,CAAA;IACD,mDAAmD;IACnD,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,EAAE,EAAE,IAAI,CAAA;IAEvC,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;IAClD,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB;;;WAGG;QACH,OAAO,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAA;IAC9B,CAAC;IACD;;;;;;OAMG;IACH,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAA;AAC5C,CAAC;AAiBD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;IAClC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;CAC/B,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,cAAc,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IAC1D,MAAM,eAAe,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAA;IACzD,MAAM,mBAAmB,GAAG,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;IAC5D,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,SAAS;QACrD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAA;IACjC,MAAM,yBAAyB,GAAG,OAAO,CACvC,GAAG,EAAE,CAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EACzD,CAAC,iBAAiB,CAAC,CACpB,CAAA;IAED,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACxE,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC7C,CAAC,GAAG,CAAC,QAAQ,CAAC,CACf,CAAA;IAED,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBACvD,OAAO,MAAM,CAAC;oBACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;oBAClC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;iBAC/B,CAAC,CAAA;YACJ,CAAC;YAED,cAAc,CAAC,OAAO,GAAG,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE;gBACzD,MAAM,CAAC;oBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;oBAClC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;iBAC/B,CAAC,CAAA;gBACF,SAAS,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;YACF,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;gBACxC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QACD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAC5C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC5B,eAAe,CAAC,OAAO,EAAE,CAAA;YACzB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAA;QAChC,CAAC;IACH,CAAC,CAAC,CAAA;IAKF,IAAI,aAAyC,CAAA;IAC7C,IAAI,KAAiC,CAAA;IACrC,MAAM,SAAS,GAAG,CAChB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAClE,CAAC,IAAI,EAAE,CAAA;IAER,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAQ;QAE7B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC7B,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,aAAa,EAAE,CAAC;oBAClB,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF,CAAA;gBACH,CAAC;YACH,CAAC;YACD,aAAa,GAAG,KAAK,CAAA;YACrB,SAAQ;QACV,CAAC;QACD,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;aACzE,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,OAAO,CAAC,CAAA;QAClB,IACE,gBAAgB,CACd,yBAAyB,CAAC,MAAM,CAAC,wBAAwB,CAAC,EAC1D,gBAAgB,EAChB,KAAK,CAAC,KAAK,CAAC,WAAW,CACxB,EACD,CAAC;YACD,KAAK,GAAG,KAAK,CAAA;YACb,MAAK;QACP,CAAC;IACH,CAAC;IAED,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;aACzE,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,OAAO,CAAC,CAAA;QAClB,YAAY,GAAG,eAAe,CAC5B,yBAAyB,CAAC,MAAM,CAAC,wBAAwB,CAAC,EAC1D,gBAAgB,CACjB,CAAA;IACH,CAAC;IACD,MAAM,MAAM,GAAG,EAAE,GAAG,mBAAmB,CAAC,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;IAEjE,OAAO,aAAa,CAAC,QAAQ,CAAC;QAC5B,KAAK,EAAE;YACL,MAAM;YACN,KAAK;YACL,SAAS,EACP,CAAC,iBAAiB,IAAI,EAAE,CAAC;gBACzB,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACtB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,CAAC,QAAoB,EAAE,EAAE;gBACrC,eAAe,CAAC,OAAO,GAAG,QAAQ,CAAA;YACpC,CAAC;YACD,cAAc,EAAE,cAAc;SAC/B;QACD,QAAQ,EAAE,KAAK,IAAI,aAAa,IAAI,IAAI;KACzC,CAAC,CAAA;AACJ,CAAC"}
@@ -1,5 +0,0 @@
1
- export { routeMatchesPath, parsePathParams, parseSearchParams };
2
- declare function routeMatchesPath(dynamicPathSegments: string[], realPathSegments: string[], fallthrough?: boolean): boolean;
3
- declare function parsePathParams(dynamicPathSegments: string[], realPathSegments: string[]): Record<string, string>;
4
- declare function parseSearchParams(search: string): Record<string, string>;
5
- //# sourceMappingURL=routerUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routerUtils.d.ts","sourceRoot":"","sources":["../../../src/components/router/routerUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAA;AAE/D,iBAAS,gBAAgB,CACvB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,gBAAgB,EAAE,MAAM,EAAE,EAC1B,WAAW,CAAC,EAAE,OAAO,WAgBtB;AAED,iBAAS,eAAe,CACtB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,gBAAgB,EAAE,MAAM,EAAE,0BAU3B;AAED,iBAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,0BAWxC"}
@@ -1,39 +0,0 @@
1
- export { routeMatchesPath, parsePathParams, parseSearchParams };
2
- function routeMatchesPath(dynamicPathSegments, realPathSegments, fallthrough) {
3
- if (!fallthrough && dynamicPathSegments.length < realPathSegments.length) {
4
- return false;
5
- }
6
- for (let i = 0; i < dynamicPathSegments.length; i++) {
7
- const segment = dynamicPathSegments[i];
8
- if (segment.startsWith(":")) {
9
- continue;
10
- }
11
- else if (segment !== realPathSegments[i]) {
12
- return false;
13
- }
14
- }
15
- return true;
16
- }
17
- function parsePathParams(dynamicPathSegments, realPathSegments) {
18
- const params = {};
19
- for (let i = 0; i < dynamicPathSegments.length; i++) {
20
- const segment = dynamicPathSegments[i];
21
- if (segment.startsWith(":")) {
22
- params[segment.slice(1)] = realPathSegments[i];
23
- }
24
- }
25
- return params;
26
- }
27
- function parseSearchParams(search) {
28
- const parsed = {};
29
- const str = search.split("?")[1];
30
- if (!str || str === "")
31
- return parsed;
32
- const parts = str.split("&");
33
- for (let i = 0; i < parts.length; i++) {
34
- const [key, val] = parts[i].split("=");
35
- parsed[key] = val;
36
- }
37
- return parsed;
38
- }
39
- //# sourceMappingURL=routerUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routerUtils.js","sourceRoot":"","sources":["../../../src/components/router/routerUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAA;AAE/D,SAAS,gBAAgB,CACvB,mBAA6B,EAC7B,gBAA0B,EAC1B,WAAqB;IAErB,IAAI,CAAC,WAAW,IAAI,mBAAmB,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACzE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACtC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,SAAQ;QACV,CAAC;aAAM,IAAI,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,eAAe,CACtB,mBAA6B,EAC7B,gBAA0B;IAE1B,MAAM,MAAM,GAA2B,EAAE,CAAA;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACtC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,MAAM,GAA2B,EAAE,CAAA;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAChC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,MAAM,CAAA;IAErC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IACnB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1,27 +0,0 @@
1
- type EventsArray = (keyof GlobalEventHandlersEventMap)[];
2
- export declare const HYDRATION_BOUNDARY_MARKER = "kiru:h-boundary";
3
- export declare const DEFAULT_INTERACTION_EVENTS: ["pointerdown", "keydown", "focus", "input"];
4
- export type HydrationBoundaryMode = "eager" | "interaction";
5
- export type HydrationBoundaryProps<T extends HydrationBoundaryMode> = {
6
- /**
7
- * Determines the strategy to use when hydrating the boundary.
8
- * - `eager`: hydrate immediately.
9
- * - `interaction`: hydrate upon the first user interaction.
10
- * @default "eager"
11
- */
12
- mode?: T;
13
- children: JSX.Children;
14
- } & (T extends "interaction" ? {
15
- /**
16
- * List of events that will trigger the hydration.
17
- * @default ["pointerdown", "keydown", "focus", "input"]
18
- */
19
- events?: EventsArray;
20
- } : {});
21
- export declare const HydrationBoundaryContext: Kiru.Context<{
22
- mode: HydrationBoundaryMode;
23
- events: string[];
24
- }>;
25
- export declare function Experimental_HydrationBoundary<T extends HydrationBoundaryMode>(props: HydrationBoundaryProps<T>): Kiru.VNode;
26
- export {};
27
- //# sourceMappingURL=hydrationBoundary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hydrationBoundary.d.ts","sourceRoot":"","sources":["../../src/ssr/hydrationBoundary.ts"],"names":[],"mappings":"AAKA,KAAK,WAAW,GAAG,CAAC,MAAM,2BAA2B,CAAC,EAAE,CAAA;AAExD,eAAO,MAAM,yBAAyB,oBAAoB,CAAA;AAC1D,eAAO,MAAM,0BAA0B,8CAKP,CAAA;AAEhC,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,aAAa,CAAA;AAC3D,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,qBAAqB,IAAI;IACpE;;;;;OAKG;IACH,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAA;CACvB,GAAG,CAAC,CAAC,SAAS,aAAa,GACxB;IACE;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACD,EAAE,CAAC,CAAA;AAEP,eAAO,MAAM,wBAAwB;UAC7B,qBAAqB;YACnB,MAAM,EAAE;EACT,CAAA;AAET,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,qBAAqB,EAC5E,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,cAqBjC"}