@remix-run/ui 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -81,10 +81,10 @@ function Actions() {
81
81
 
82
82
  ## Frame Navigation
83
83
 
84
- Configure `resolveFrame` once to progressively enhance same-origin links and forms. The resolver owns the fetch request and receives native submission metadata for non-GET forms:
84
+ `run()` progressively enhances same-origin links and forms using a default `resolveFrame` that
85
+ fetches the frame source:
85
86
 
86
87
  ```tsx
87
- import type { ResolveFrameOptions } from 'remix/ui'
88
88
  import { run } from 'remix/ui'
89
89
 
90
90
  let app = run({
@@ -92,20 +92,44 @@ let app = run({
92
92
  let mod = await import(moduleUrl)
93
93
  return mod[exportName]
94
94
  },
95
- async resolveFrame(src, options) {
96
- return fetch(src, {
97
- headers: { Accept: 'text/html', 'X-Remix-Frame': 'true' },
98
- method: options?.method,
99
- body: getRequestBody(options),
100
- signal: options?.signal,
101
- })
102
- },
103
95
  })
104
96
 
105
- function getRequestBody(options?: ResolveFrameOptions): BodyInit | undefined {
97
+ await app.ready()
98
+ ```
99
+
100
+ The default resolver is equivalent to:
101
+
102
+ ```js
103
+ async function resolveFrame(src, options) {
104
+ let response = await fetch(src, {
105
+ body: getRequestBody(options),
106
+ headers: { Accept: 'text/html' },
107
+ method: options?.method,
108
+ signal: options?.signal,
109
+ })
110
+
111
+ if (!response.ok) {
112
+ throw new Error(`Failed to resolve frame: ${response.status} ${response.statusText}`.trimEnd())
113
+ }
114
+
115
+ return response
116
+ }
117
+
118
+ function getRequestBody(options) {
106
119
  let formData = options?.formData
107
- if (!formData) return
108
- if (options.encType !== 'application/x-www-form-urlencoded') return formData
120
+ if (!formData || options?.method?.toLowerCase() === 'get') return
121
+
122
+ if (options?.encType === 'text/plain') {
123
+ let body = ''
124
+ for (let [name, value] of formData) {
125
+ name = normalizeLineBreaks(name)
126
+ value = normalizeLineBreaks(typeof value === 'string' ? value : value.name)
127
+ body += `${name}=${value}\r\n`
128
+ }
129
+ return new Blob([body], { type: 'text/plain' })
130
+ }
131
+
132
+ if (options?.encType !== 'application/x-www-form-urlencoded') return formData
109
133
 
110
134
  let body = new URLSearchParams()
111
135
  for (let [name, value] of formData) {
@@ -114,9 +138,23 @@ function getRequestBody(options?: ResolveFrameOptions): BodyInit | undefined {
114
138
  return body
115
139
  }
116
140
 
117
- await app.ready()
141
+ function normalizeLineBreaks(value) {
142
+ return value.replace(/\r\n|\r|\n/g, '\r\n')
143
+ }
118
144
  ```
119
145
 
146
+ The default resolver requests HTML. GET form values are already encoded in `src`;
147
+ `application/x-www-form-urlencoded` submissions use `URLSearchParams`, `text/plain` submissions use
148
+ CRLF-delimited text, and `multipart/form-data` submissions use `FormData`. Pass a custom
149
+ `resolveFrame` when the server requires additional headers, another body encoding, or a different
150
+ response policy.
151
+
152
+ Add `rmx-document` to a link or form to leave its navigation to the browser.
153
+
154
+ The default resolver rejects non-OK responses with an error containing their status and status text.
155
+ A custom `resolveFrame` may return a `Response` with any status when it wants Remix UI to render the
156
+ response body.
157
+
120
158
  Forms remain ordinary HTML forms before the runtime starts. Add `rmx-target` to reload a named frame, or `rmx-document` to require a full-document submission:
121
159
 
122
160
  ```tsx
@@ -120,7 +120,8 @@ export type FrameContent = ReadableStream<Uint8Array> | string | RemixNode;
120
120
  /**
121
121
  * Value returned by a browser frame resolver.
122
122
  *
123
- * A response body is rendered as frame content. When `fetch()` followed a redirect, the response's
123
+ * Response bodies are rendered as frame content regardless of status. The default browser resolver
124
+ * rejects non-OK responses before returning them. When `fetch()` followed a redirect, the response's
124
125
  * final URL updates the frame source and browser URL for a top-frame navigation.
125
126
  */
126
127
  export type FrameResolution = FrameContent | Response;
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/runtime/component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/runtime/component.ts"],"names":[],"mappings":"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"}
@@ -20,10 +20,9 @@ export declare function navigate(href: string, options?: NavigationOptions): Pro
20
20
  * Starts listening for Navigation API transitions and routes them through frame reloads.
21
21
  *
22
22
  * @param signal Abort signal used to remove the listener.
23
- * @param canResolveFrames Whether the runtime has a resolver that can handle intercepted navigations.
24
23
  * @returns void
25
24
  */
26
- export declare function startNavigationListener(signal: AbortSignal, canResolveFrames?: boolean): void;
25
+ export declare function startNavigationListener(signal: AbortSignal): void;
27
26
  export declare function startNavigationListenerImpl(signal: AbortSignal, options: {
28
27
  getTopFrame: typeof getTopFrame;
29
28
  getNamedFrame: typeof getNamedFrame;
@@ -23,12 +23,9 @@ export async function navigate(href, options) {
23
23
  * Starts listening for Navigation API transitions and routes them through frame reloads.
24
24
  *
25
25
  * @param signal Abort signal used to remove the listener.
26
- * @param canResolveFrames Whether the runtime has a resolver that can handle intercepted navigations.
27
26
  * @returns void
28
27
  */
29
- export function startNavigationListener(signal, canResolveFrames = true) {
30
- if (!canResolveFrames)
31
- return;
28
+ export function startNavigationListener(signal) {
32
29
  return startNavigationListenerImpl(signal, {
33
30
  getTopFrame,
34
31
  getNamedFrame,
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/runtime/navigation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/runtime/navigation.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,8 @@ export interface RunInit {
16
16
  /**
17
17
  * Resolves browser-loaded `<Frame>` content.
18
18
  *
19
- * Omit this only when the runtime never needs to load or reload frames in the
20
- * browser.
19
+ * Defaults to fetching the frame source as HTML with the submitted form data,
20
+ * method, encoding, and abort signal.
21
21
  */
22
22
  resolveFrame?: ResolveFrame;
23
23
  }
@@ -56,7 +56,7 @@ export declare function getNamedFrame(name: string): FrameHandle;
56
56
  /**
57
57
  * Starts the client-side Remix component runtime for the current document.
58
58
  *
59
- * @param init Runtime hooks for loading modules and resolving frames.
59
+ * @param init Runtime options for loading modules and customizing frame resolution.
60
60
  * @returns The running application runtime.
61
61
  */
62
62
  export declare function run(init: RunInit): AppRuntime;
@@ -25,17 +25,55 @@ const namedFrames = new Map();
25
25
  export function getNamedFrame(name) {
26
26
  return namedFrames.get(name) ?? getTopFrame();
27
27
  }
28
+ // Frame reloads can receive raw FormData without going through form navigation. Encode it here so
29
+ // manual reloads use the requested form encoding instead of always sending multipart bodies.
30
+ function getRequestBody(options) {
31
+ let formData = options?.formData;
32
+ if (!formData || options?.method?.toLowerCase() === 'get')
33
+ return;
34
+ if (options?.encType === 'text/plain') {
35
+ let body = '';
36
+ for (let [name, value] of formData) {
37
+ name = normalizeLineBreaks(name);
38
+ value = normalizeLineBreaks(typeof value === 'string' ? value : value.name);
39
+ body += `${name}=${value}\r\n`;
40
+ }
41
+ return new Blob([body], { type: 'text/plain' });
42
+ }
43
+ if (options?.encType !== 'application/x-www-form-urlencoded')
44
+ return formData;
45
+ let body = new URLSearchParams();
46
+ for (let [name, value] of formData) {
47
+ body.append(name, typeof value === 'string' ? value : value.name);
48
+ }
49
+ return body;
50
+ }
51
+ function normalizeLineBreaks(value) {
52
+ return value.replace(/\r\n|\r|\n/g, '\r\n');
53
+ }
54
+ async function defaultResolveFrame(src, options) {
55
+ let response = await fetch(src, {
56
+ body: getRequestBody(options),
57
+ headers: { Accept: 'text/html' },
58
+ method: options?.method,
59
+ signal: options?.signal,
60
+ });
61
+ if (!response.ok) {
62
+ throw new Error(`Failed to resolve frame: ${response.status} ${response.statusText}`.trimEnd());
63
+ }
64
+ return response;
65
+ }
28
66
  /**
29
67
  * Starts the client-side Remix component runtime for the current document.
30
68
  *
31
- * @param init Runtime hooks for loading modules and resolving frames.
69
+ * @param init Runtime options for loading modules and customizing frame resolution.
32
70
  * @returns The running application runtime.
33
71
  */
34
72
  export function run(init) {
35
73
  let styleManager = createStyleManager();
36
74
  let errorTarget = new TypedEventTarget();
37
75
  let scheduler = createScheduler(document, errorTarget, styleManager);
38
- let resolveFrame = init.resolveFrame ?? (() => '<p>resolve frame unimplemented</p>');
76
+ let resolveFrame = init.resolveFrame ?? defaultResolveFrame;
39
77
  topFrame = createFrame(document, {
40
78
  src: document.location.href,
41
79
  errorTarget,
@@ -57,7 +95,7 @@ export function run(init) {
57
95
  return namedFrames.get(name);
58
96
  },
59
97
  };
60
- startNavigationListener(appController.signal, init.resolveFrame !== undefined);
98
+ startNavigationListener(appController.signal);
61
99
  let readyPromise = topFrame.ready().catch((error) => {
62
100
  errorTarget.dispatchEvent(createComponentErrorEvent(error));
63
101
  throw error;
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAG5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AA4C1D,IAAI,QAAe,CAAA;AACnB;;;;GAIG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAC7D,OAAO,QAAQ,CAAC,MAAM,CAAA;AACxB,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAA;AAClD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAA;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CAAC,IAAa;IAC/B,IAAI,YAAY,GAAG,kBAAkB,EAAE,CAAA;IACvC,IAAI,WAAW,GAAG,IAAI,gBAAgB,EAAsB,CAAA;IAC5D,IAAI,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IAEpE,IAAI,YAAY,GAAiB,IAAI,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,oCAAoC,CAAC,CAAA;IAElG,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE;QAC/B,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;QAC3B,WAAW;QACX,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY;QACZ,oBAAoB,EAAE,IAAI,GAAG,EAAE;QAC/B,SAAS;QACT,YAAY;QACZ,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,cAAc,EAAE,IAAI,OAAO,EAAE;QAC7B,WAAW;KACZ,CAAC,CAAA;IAEF,IAAI,aAAa,GAAG,IAAI,eAAe,EAAE,CAAA;IACzC,IAAI,MAAM,GAAqB;QAC7B,GAAG,EAAE,QAAQ,CAAC,MAAM;QACpB,GAAG,CAAC,IAAI;YACN,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC;KACF,CAAA;IACD,uBAAuB,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAA;IAC9E,IAAI,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAClD,WAAW,CAAC,aAAa,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3D,MAAM,KAAK,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE;QAChC,MAAM;QACN,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY;QACzB,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE;QAC7B,OAAO,EAAE,GAAG,EAAE;YACZ,aAAa,CAAC,KAAK,EAAE,CAAA;YACrB,QAAQ,CAAC,OAAO,EAAE,CAAA;YAClB,YAAY,CAAC,OAAO,EAAE,CAAA;QACxB,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remix-run/ui",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "UI runtime, headless primitives, and styled components for Remix",
5
5
  "author": "Ryan Florence <rpflorence@gmail.com>",
6
6
  "license": "MIT",
@@ -143,7 +143,8 @@ export type FrameContent = ReadableStream<Uint8Array> | string | RemixNode
143
143
  /**
144
144
  * Value returned by a browser frame resolver.
145
145
  *
146
- * A response body is rendered as frame content. When `fetch()` followed a redirect, the response's
146
+ * Response bodies are rendered as frame content regardless of status. The default browser resolver
147
+ * rejects non-OK responses before returning them. When `fetch()` followed a redirect, the response's
147
148
  * final URL updates the frame source and browser URL for a top-frame navigation.
148
149
  */
149
150
  export type FrameResolution = FrameContent | Response
@@ -72,11 +72,9 @@ export async function navigate(href: string, options?: NavigationOptions) {
72
72
  * Starts listening for Navigation API transitions and routes them through frame reloads.
73
73
  *
74
74
  * @param signal Abort signal used to remove the listener.
75
- * @param canResolveFrames Whether the runtime has a resolver that can handle intercepted navigations.
76
75
  * @returns void
77
76
  */
78
- export function startNavigationListener(signal: AbortSignal, canResolveFrames = true) {
79
- if (!canResolveFrames) return
77
+ export function startNavigationListener(signal: AbortSignal) {
80
78
  return startNavigationListenerImpl(signal, {
81
79
  getTopFrame,
82
80
  getNamedFrame,
@@ -4,7 +4,7 @@ import { createStyleManager } from '../style/index.ts'
4
4
  import type { FrameHandle, Handle } from './component.ts'
5
5
  import { createComponentErrorEvent } from './error-event.ts'
6
6
  import type { ComponentErrorEvent } from './error-event.ts'
7
- import type { LoadModule, ResolveFrame } from './frame.ts'
7
+ import type { LoadModule, ResolveFrame, ResolveFrameOptions } from './frame.ts'
8
8
  import { startNavigationListener } from './navigation.ts'
9
9
  import { TypedEventTarget } from './typed-event-target.ts'
10
10
 
@@ -23,8 +23,8 @@ export interface RunInit {
23
23
  /**
24
24
  * Resolves browser-loaded `<Frame>` content.
25
25
  *
26
- * Omit this only when the runtime never needs to load or reload frames in the
27
- * browser.
26
+ * Defaults to fetching the frame source as HTML with the submitted form data,
27
+ * method, encoding, and abort signal.
28
28
  */
29
29
  resolveFrame?: ResolveFrame
30
30
  }
@@ -72,10 +72,54 @@ export function getNamedFrame(name: string): FrameHandle {
72
72
  return namedFrames.get(name) ?? getTopFrame()
73
73
  }
74
74
 
75
+ // Frame reloads can receive raw FormData without going through form navigation. Encode it here so
76
+ // manual reloads use the requested form encoding instead of always sending multipart bodies.
77
+ function getRequestBody(options?: ResolveFrameOptions): BodyInit | undefined {
78
+ let formData = options?.formData
79
+ if (!formData || options?.method?.toLowerCase() === 'get') return
80
+
81
+ if (options?.encType === 'text/plain') {
82
+ let body = ''
83
+ for (let [name, value] of formData) {
84
+ name = normalizeLineBreaks(name)
85
+ value = normalizeLineBreaks(typeof value === 'string' ? value : value.name)
86
+ body += `${name}=${value}\r\n`
87
+ }
88
+ return new Blob([body], { type: 'text/plain' })
89
+ }
90
+
91
+ if (options?.encType !== 'application/x-www-form-urlencoded') return formData
92
+
93
+ let body = new URLSearchParams()
94
+ for (let [name, value] of formData) {
95
+ body.append(name, typeof value === 'string' ? value : value.name)
96
+ }
97
+ return body
98
+ }
99
+
100
+ function normalizeLineBreaks(value: string): string {
101
+ return value.replace(/\r\n|\r|\n/g, '\r\n')
102
+ }
103
+
104
+ async function defaultResolveFrame(src: string, options?: ResolveFrameOptions): Promise<Response> {
105
+ let response = await fetch(src, {
106
+ body: getRequestBody(options),
107
+ headers: { Accept: 'text/html' },
108
+ method: options?.method,
109
+ signal: options?.signal,
110
+ })
111
+
112
+ if (!response.ok) {
113
+ throw new Error(`Failed to resolve frame: ${response.status} ${response.statusText}`.trimEnd())
114
+ }
115
+
116
+ return response
117
+ }
118
+
75
119
  /**
76
120
  * Starts the client-side Remix component runtime for the current document.
77
121
  *
78
- * @param init Runtime hooks for loading modules and resolving frames.
122
+ * @param init Runtime options for loading modules and customizing frame resolution.
79
123
  * @returns The running application runtime.
80
124
  */
81
125
  export function run(init: RunInit): AppRuntime {
@@ -83,7 +127,7 @@ export function run(init: RunInit): AppRuntime {
83
127
  let errorTarget = new TypedEventTarget<AppRuntimeEventMap>()
84
128
  let scheduler = createScheduler(document, errorTarget, styleManager)
85
129
 
86
- let resolveFrame: ResolveFrame = init.resolveFrame ?? (() => '<p>resolve frame unimplemented</p>')
130
+ let resolveFrame = init.resolveFrame ?? defaultResolveFrame
87
131
 
88
132
  topFrame = createFrame(document, {
89
133
  src: document.location.href,
@@ -107,7 +151,7 @@ export function run(init: RunInit): AppRuntime {
107
151
  return namedFrames.get(name)
108
152
  },
109
153
  }
110
- startNavigationListener(appController.signal, init.resolveFrame !== undefined)
154
+ startNavigationListener(appController.signal)
111
155
  let readyPromise = topFrame.ready().catch((error) => {
112
156
  errorTarget.dispatchEvent(createComponentErrorEvent(error))
113
157
  throw error