@remix-run/ui 0.7.0 → 0.9.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 +90 -14
- package/dist/animation/demos/drag-release.js +5 -7
- package/dist/animation/demos/drag-release.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/component.d.ts +9 -4
- package/dist/runtime/component.js +38 -9
- package/dist/runtime/component.js.map +1 -1
- package/dist/runtime/core/mix.d.ts +21 -0
- package/dist/runtime/core/mix.js +128 -0
- package/dist/runtime/core/mix.js.map +1 -0
- package/dist/runtime/diff-dom.js +15 -16
- package/dist/runtime/diff-dom.js.map +1 -1
- package/dist/runtime/document-reload.d.ts +2 -0
- package/dist/runtime/document-reload.js +14 -0
- package/dist/runtime/document-reload.js.map +1 -0
- package/dist/runtime/dom.d.ts +21 -11
- package/dist/runtime/event-types.d.ts +14 -0
- package/dist/runtime/event-types.js +2 -0
- package/dist/runtime/event-types.js.map +1 -0
- package/dist/runtime/frame-resolution.js +8 -0
- package/dist/runtime/frame-resolution.js.map +1 -1
- package/dist/runtime/frame.d.ts +24 -6
- package/dist/runtime/frame.js +187 -60
- package/dist/runtime/frame.js.map +1 -1
- package/dist/runtime/import-map-manager.d.ts +8 -0
- package/dist/runtime/import-map-manager.js +295 -0
- package/dist/runtime/import-map-manager.js.map +1 -0
- package/dist/runtime/mixins/link-mixin.js +4 -4
- package/dist/runtime/mixins/link-mixin.js.map +1 -1
- package/dist/runtime/mixins/mixin.d.ts +9 -4
- package/dist/runtime/mixins/mixin.js +18 -132
- package/dist/runtime/mixins/mixin.js.map +1 -1
- package/dist/runtime/mixins/on-mixin.d.ts +1 -1
- package/dist/runtime/module-preloader.d.ts +2 -1
- package/dist/runtime/module-preloader.js +6 -5
- package/dist/runtime/module-preloader.js.map +1 -1
- package/dist/runtime/navigation.js +211 -34
- package/dist/runtime/navigation.js.map +1 -1
- package/dist/runtime/reconcile.js +18 -3
- package/dist/runtime/reconcile.js.map +1 -1
- package/dist/runtime/run.d.ts +3 -0
- package/dist/runtime/run.js +8 -4
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/scheduler.js +37 -11
- package/dist/runtime/scheduler.js.map +1 -1
- package/dist/runtime/spa-response.d.ts +30 -0
- package/dist/runtime/spa-response.js +47 -0
- package/dist/runtime/spa-response.js.map +1 -0
- package/dist/runtime/to-vnode.js +1 -1
- package/dist/runtime/to-vnode.js.map +1 -1
- package/dist/runtime/typed-event-target.d.ts +0 -4
- package/dist/runtime/typed-event-target.js.map +1 -1
- package/dist/server/stream.d.ts +25 -2
- package/dist/server/stream.js +382 -171
- package/dist/server/stream.js.map +1 -1
- package/dist/style/stylesheet.js +2 -2
- package/dist/style/stylesheet.js.map +1 -1
- package/package.json +1 -1
- package/src/animation/demos/drag-release.ts +5 -7
- package/src/index.ts +2 -2
- package/src/runtime/component.ts +52 -14
- package/src/runtime/core/mix.ts +157 -0
- package/src/runtime/demos/readme.demo.tsx +7 -17
- package/src/runtime/diff-dom.ts +13 -15
- package/src/runtime/document-reload.ts +14 -0
- package/src/runtime/dom.ts +21 -11
- package/src/runtime/event-types.ts +27 -0
- package/src/runtime/frame-resolution.ts +9 -0
- package/src/runtime/frame.ts +216 -65
- package/src/runtime/import-map-manager.ts +369 -0
- package/src/runtime/mixins/link-mixin.ts +4 -4
- package/src/runtime/mixins/mixin.ts +44 -149
- package/src/runtime/mixins/on-mixin.ts +1 -1
- package/src/runtime/module-preloader.ts +9 -6
- package/src/runtime/navigation.ts +257 -42
- package/src/runtime/reconcile.ts +20 -4
- package/src/runtime/run.ts +13 -4
- package/src/runtime/scheduler.ts +53 -13
- package/src/runtime/spa-response.ts +56 -0
- package/src/runtime/to-vnode.ts +1 -1
- package/src/runtime/typed-event-target.ts +1 -6
- package/src/server/README.md +25 -5
- package/src/server/stream.ts +506 -202
- package/src/style/stylesheet.ts +3 -3
- package/src/test/utils.ts +1 -6
- package/dist/runtime/event-listeners.d.ts +0 -50
- package/dist/runtime/event-listeners.js +0 -31
- package/dist/runtime/event-listeners.js.map +0 -1
- package/src/runtime/event-listeners.ts +0 -171
|
@@ -1,8 +1,30 @@
|
|
|
1
1
|
import { getTopFrame, getNamedFrame } from './run.js';
|
|
2
2
|
import { reloadFrameForNavigation } from './frame.js';
|
|
3
3
|
import { createFormNavigationResolver } from './form-navigation.js';
|
|
4
|
+
import { isDocumentReload } from './document-reload.js';
|
|
4
5
|
const formSubmissionNavigationInfoType = 'frame-form-submission';
|
|
5
6
|
const frameRedirectNavigationInfoType = 'frame-redirect';
|
|
7
|
+
function resyncWebKitScrollAfterNavigation(event, resetScroll, transition) {
|
|
8
|
+
let userAgent = navigator.userAgent;
|
|
9
|
+
if (!userAgent.includes('AppleWebKit') || isChromiumUserAgent(userAgent))
|
|
10
|
+
return;
|
|
11
|
+
if (!resetScroll || (event.navigationType !== 'push' && event.navigationType !== 'replace'))
|
|
12
|
+
return;
|
|
13
|
+
if (new URL(event.destination.url).hash)
|
|
14
|
+
return;
|
|
15
|
+
void transition.finished.then(() => {
|
|
16
|
+
// WebKit can reset its internal scroll position without synchronizing the visual viewport.
|
|
17
|
+
// https://bugs.webkit.org/show_bug.cgi?id=309542
|
|
18
|
+
if (event.signal.aborted || window.scrollX !== 0 || window.scrollY !== 0)
|
|
19
|
+
return;
|
|
20
|
+
window.scrollTo({ behavior: 'instant', left: 0, top: 1 });
|
|
21
|
+
requestAnimationFrame(() => {
|
|
22
|
+
if (event.signal.aborted || window.scrollX !== 0 || window.scrollY !== 1)
|
|
23
|
+
return;
|
|
24
|
+
window.scrollTo({ behavior: 'instant', left: 0, top: 0 });
|
|
25
|
+
});
|
|
26
|
+
}, () => { });
|
|
27
|
+
}
|
|
6
28
|
/**
|
|
7
29
|
* Performs a Navigation API transition understood by Remix frame runtime state.
|
|
8
30
|
*
|
|
@@ -16,7 +38,17 @@ export async function navigate(href, options) {
|
|
|
16
38
|
resetScroll: options?.resetScroll !== false,
|
|
17
39
|
$rmx: true,
|
|
18
40
|
};
|
|
19
|
-
let
|
|
41
|
+
let navigation = getInterceptableNavigation();
|
|
42
|
+
if (!navigation) {
|
|
43
|
+
if (options?.history === 'replace') {
|
|
44
|
+
window.location.replace(href);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
window.location.assign(href);
|
|
48
|
+
}
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
let transition = navigation.navigate(href, { state, history: options?.history });
|
|
20
52
|
await transition.finished;
|
|
21
53
|
}
|
|
22
54
|
/**
|
|
@@ -34,12 +66,16 @@ export function startNavigationListener(signal) {
|
|
|
34
66
|
}
|
|
35
67
|
// Internal version used by unit tests so we can inject stub frames
|
|
36
68
|
export function startNavigationListenerImpl(signal, options) {
|
|
37
|
-
let navigation =
|
|
69
|
+
let navigation = getInterceptableNavigation();
|
|
70
|
+
if (!navigation)
|
|
71
|
+
return;
|
|
38
72
|
let resolveFormNavigation = createFormNavigationResolver(signal);
|
|
39
73
|
navigation.updateCurrentEntry({
|
|
40
74
|
state: { target: undefined, src: window.location.href, resetScroll: true, $rmx: true },
|
|
41
75
|
});
|
|
42
76
|
navigation.addEventListener('navigate', (event) => {
|
|
77
|
+
if (isDocumentReload(event.info))
|
|
78
|
+
return;
|
|
43
79
|
// Safari seems to incorrectly set canIntercept to true for sub-domain navigations, so
|
|
44
80
|
// we do a host check ourselves/. The spec is clear that a different host should prevent
|
|
45
81
|
// interception so this is likely a bug in Safari:
|
|
@@ -47,7 +83,10 @@ export function startNavigationListenerImpl(signal, options) {
|
|
|
47
83
|
if (!event.canIntercept || isCrossOriginDestination(event))
|
|
48
84
|
return;
|
|
49
85
|
if (isFrameRedirectNavigationInfo(event.info)) {
|
|
50
|
-
|
|
86
|
+
interceptNavigation(navigation, event, event.info.resetScroll, {
|
|
87
|
+
async handler() { },
|
|
88
|
+
scroll: 'manual',
|
|
89
|
+
});
|
|
51
90
|
return;
|
|
52
91
|
}
|
|
53
92
|
let replayedSubmission = isFormSubmissionNavigationInfo(event.info) ? event.info : undefined;
|
|
@@ -56,7 +95,7 @@ export function startNavigationListenerImpl(signal, options) {
|
|
|
56
95
|
state: replayedSubmission.state,
|
|
57
96
|
getSubmission: replayedSubmission.getSubmission,
|
|
58
97
|
}
|
|
59
|
-
: getRuntimeNavigation(event, resolveFormNavigation);
|
|
98
|
+
: getRuntimeNavigation(navigation, event, resolveFormNavigation);
|
|
60
99
|
if (!runtimeNavigation)
|
|
61
100
|
return;
|
|
62
101
|
let { state } = runtimeNavigation;
|
|
@@ -64,6 +103,8 @@ export function startNavigationListenerImpl(signal, options) {
|
|
|
64
103
|
let namedFrame = state.target ? options.getNamedFrame(state.target) : undefined;
|
|
65
104
|
let frame = namedFrame ?? topFrame;
|
|
66
105
|
let handler = async () => {
|
|
106
|
+
if (event.signal.aborted)
|
|
107
|
+
return;
|
|
67
108
|
let submission = await runtimeNavigation.getSubmission?.();
|
|
68
109
|
if (event.signal.aborted)
|
|
69
110
|
return;
|
|
@@ -73,10 +114,16 @@ export function startNavigationListenerImpl(signal, options) {
|
|
|
73
114
|
topFrame.src = event.destination.url;
|
|
74
115
|
if (frame !== topFrame)
|
|
75
116
|
frame.src = state.src;
|
|
76
|
-
let
|
|
117
|
+
let reload = options.reloadFrame(frame, {
|
|
77
118
|
...submission,
|
|
78
119
|
signal: event.signal,
|
|
79
120
|
});
|
|
121
|
+
await reload.committed;
|
|
122
|
+
if (event.signal.aborted || reload.signal.aborted)
|
|
123
|
+
return;
|
|
124
|
+
if (state.resetScroll)
|
|
125
|
+
event.scroll();
|
|
126
|
+
let { redirectedTo } = await reload.finished;
|
|
80
127
|
if (redirectedTo && frame === topFrame) {
|
|
81
128
|
frame.src = redirectedTo;
|
|
82
129
|
// Start the successor navigation without awaiting it: this handler must settle before
|
|
@@ -86,13 +133,14 @@ export function startNavigationListenerImpl(signal, options) {
|
|
|
86
133
|
state: { ...state, src: redirectedTo },
|
|
87
134
|
info: {
|
|
88
135
|
type: frameRedirectNavigationInfoType,
|
|
136
|
+
resetScroll: state.resetScroll,
|
|
89
137
|
},
|
|
90
138
|
});
|
|
91
139
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
140
|
+
};
|
|
141
|
+
let interceptOptions = {
|
|
142
|
+
handler,
|
|
143
|
+
scroll: state.resetScroll === false ? 'manual' : undefined,
|
|
96
144
|
};
|
|
97
145
|
if (runtimeNavigation.getSubmission) {
|
|
98
146
|
// <form method="post"> navigations
|
|
@@ -100,19 +148,18 @@ export function startNavigationListenerImpl(signal, options) {
|
|
|
100
148
|
let supportsPrecommit = typeof Reflect.get(window, 'NavigationPrecommitController') === 'function';
|
|
101
149
|
// Modern browsers allow you to update the in-flight navigation entry before it's committed
|
|
102
150
|
if (supportsPrecommit) {
|
|
103
|
-
|
|
104
|
-
|
|
151
|
+
interceptNavigation(navigation, event, state.resetScroll, {
|
|
152
|
+
...interceptOptions,
|
|
105
153
|
precommitHandler(controller) {
|
|
106
154
|
controller.redirect(event.destination.url, { history: 'replace' });
|
|
107
155
|
},
|
|
108
|
-
};
|
|
109
|
-
event.intercept(interceptOptions);
|
|
156
|
+
});
|
|
110
157
|
return;
|
|
111
158
|
}
|
|
112
159
|
// Safari doesn't support precommit as of Aug 2026, so we do a full replacement navigation
|
|
113
160
|
if (event.cancelable) {
|
|
114
161
|
event.preventDefault();
|
|
115
|
-
|
|
162
|
+
navigation.navigate(event.destination.url, {
|
|
116
163
|
history: 'replace',
|
|
117
164
|
state,
|
|
118
165
|
info: {
|
|
@@ -124,7 +171,7 @@ export function startNavigationListenerImpl(signal, options) {
|
|
|
124
171
|
return;
|
|
125
172
|
}
|
|
126
173
|
}
|
|
127
|
-
event.
|
|
174
|
+
interceptNavigation(navigation, event, state.resetScroll, interceptOptions);
|
|
128
175
|
}
|
|
129
176
|
else {
|
|
130
177
|
// <a>/<form method="get"> navigations
|
|
@@ -133,11 +180,20 @@ export function startNavigationListenerImpl(signal, options) {
|
|
|
133
180
|
navigation.navigate(event.destination.url, { history: 'replace', state });
|
|
134
181
|
}
|
|
135
182
|
else {
|
|
136
|
-
event.
|
|
183
|
+
interceptNavigation(navigation, event, state.resetScroll, interceptOptions);
|
|
137
184
|
}
|
|
138
185
|
}
|
|
139
186
|
}, { signal });
|
|
140
187
|
}
|
|
188
|
+
function getInterceptableNavigation() {
|
|
189
|
+
let navigation = window.navigation;
|
|
190
|
+
if (!navigation ||
|
|
191
|
+
typeof NavigateEvent === 'undefined' ||
|
|
192
|
+
!('sourceElement' in NavigateEvent.prototype)) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
return navigation;
|
|
196
|
+
}
|
|
141
197
|
function isRuntimeNavigation(info) {
|
|
142
198
|
return typeof info === 'object' && info != null && '$rmx' in info;
|
|
143
199
|
}
|
|
@@ -155,32 +211,153 @@ function isFrameRedirectNavigationInfo(value) {
|
|
|
155
211
|
return (typeof value === 'object' &&
|
|
156
212
|
value != null &&
|
|
157
213
|
'type' in value &&
|
|
158
|
-
value.type === frameRedirectNavigationInfoType
|
|
214
|
+
value.type === frameRedirectNavigationInfoType &&
|
|
215
|
+
'resetScroll' in value &&
|
|
216
|
+
typeof value.resetScroll === 'boolean');
|
|
159
217
|
}
|
|
160
218
|
function isCrossOriginDestination(event) {
|
|
161
219
|
let destination = new URL(event.destination.url);
|
|
162
220
|
return destination.origin !== window.location.origin;
|
|
163
221
|
}
|
|
164
|
-
function
|
|
222
|
+
function interceptNavigation(navigation, event, resetScroll, options) {
|
|
223
|
+
let scrollStyleWorkarounds = installNavigationScrollStyleWorkarounds(event, resetScroll);
|
|
224
|
+
let transitionBound = false;
|
|
225
|
+
function bindTransition() {
|
|
226
|
+
if (transitionBound)
|
|
227
|
+
return;
|
|
228
|
+
if (event.signal.aborted)
|
|
229
|
+
return scrollStyleWorkarounds?.remove();
|
|
230
|
+
// The Navigation API creates the transition before running interception handlers.
|
|
231
|
+
let transition = navigation.transition;
|
|
232
|
+
if (!transition)
|
|
233
|
+
return scrollStyleWorkarounds?.remove();
|
|
234
|
+
transitionBound = true;
|
|
235
|
+
resyncWebKitScrollAfterNavigation(event, resetScroll, transition);
|
|
236
|
+
if (scrollStyleWorkarounds) {
|
|
237
|
+
scheduleNavigationScrollCleanup(transition, scrollStyleWorkarounds.remove, scrollStyleWorkarounds.cleanup);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
let interceptOptions = {
|
|
241
|
+
...options,
|
|
242
|
+
handler() {
|
|
243
|
+
bindTransition();
|
|
244
|
+
return options.handler?.();
|
|
245
|
+
},
|
|
246
|
+
};
|
|
247
|
+
let precommitHandler = options.precommitHandler;
|
|
248
|
+
if (precommitHandler) {
|
|
249
|
+
interceptOptions.precommitHandler = function precommit(controller) {
|
|
250
|
+
bindTransition();
|
|
251
|
+
return precommitHandler(controller);
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
try {
|
|
255
|
+
event.intercept(interceptOptions);
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
scrollStyleWorkarounds?.remove();
|
|
259
|
+
throw error;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
function getNavigationScrollStyles(event, resetScroll) {
|
|
263
|
+
if (!resetScroll)
|
|
264
|
+
return;
|
|
265
|
+
if (event.navigationType === 'traverse') {
|
|
266
|
+
// Full-document reconciliation can temporarily shrink the page or trigger scroll anchoring
|
|
267
|
+
// before the Navigation API performs its deferred restoration. Preserve the starting scroll
|
|
268
|
+
// range and position until the navigation finishes so native restoration remains authoritative.
|
|
269
|
+
// Root scroll height includes page-level effects such as body padding.
|
|
270
|
+
// We think this is a bug in Chromium where they are incorrectly classifying a
|
|
271
|
+
// DOM-modification-driven scroll change as a user scroll action, causing it to skip restoration
|
|
272
|
+
// after the transition. The intended user-scroll behavior is tested here:
|
|
273
|
+
// https://github.com/web-platform-tests/wpt/blob/master/navigation-api/scroll-behavior/after-transition-skips-restore-when-scrolled.html
|
|
274
|
+
let { scrollHeight, clientHeight } = document.documentElement;
|
|
275
|
+
return {
|
|
276
|
+
cssText: `
|
|
277
|
+
html {
|
|
278
|
+
min-height: ${scrollHeight + clientHeight}px !important;
|
|
279
|
+
overflow-anchor: none !important;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
body {
|
|
283
|
+
overflow-anchor: none !important;
|
|
284
|
+
}
|
|
285
|
+
`,
|
|
286
|
+
cleanup: 'finished',
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
if (event.navigationType !== 'push' && event.navigationType !== 'replace')
|
|
290
|
+
return;
|
|
291
|
+
if (new URL(event.destination.url).hash)
|
|
292
|
+
return;
|
|
293
|
+
if (!isChromiumUserAgent(navigator.userAgent))
|
|
294
|
+
return;
|
|
295
|
+
// Chromium can treat reconciliation-driven scroll anchoring as user scrolling and preserve an
|
|
296
|
+
// offset after NavigateEvent.scroll() resets the destination. Suppress anchoring before
|
|
297
|
+
// interception and keep it disabled through the first post-navigation paint.
|
|
298
|
+
return {
|
|
299
|
+
cssText: `
|
|
300
|
+
html,
|
|
301
|
+
body {
|
|
302
|
+
overflow-anchor: none !important;
|
|
303
|
+
}
|
|
304
|
+
`,
|
|
305
|
+
cleanup: 'after-paint',
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
function isChromiumUserAgent(userAgent) {
|
|
309
|
+
return userAgent.includes('Chrome') || userAgent.includes('Chromium');
|
|
310
|
+
}
|
|
311
|
+
function installNavigationScrollStyleWorkarounds(event, resetScroll) {
|
|
312
|
+
let scrollStyles = getNavigationScrollStyles(event, resetScroll);
|
|
313
|
+
if (!scrollStyles)
|
|
314
|
+
return;
|
|
315
|
+
let stylesheet = new CSSStyleSheet();
|
|
316
|
+
stylesheet.replaceSync(scrollStyles.cssText);
|
|
317
|
+
document.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet];
|
|
318
|
+
let removed = false;
|
|
319
|
+
function remove() {
|
|
320
|
+
event.signal.removeEventListener('abort', remove);
|
|
321
|
+
if (removed)
|
|
322
|
+
return;
|
|
323
|
+
removed = true;
|
|
324
|
+
document.adoptedStyleSheets = document.adoptedStyleSheets.filter((current) => current !== stylesheet);
|
|
325
|
+
}
|
|
326
|
+
if (event.signal.aborted)
|
|
327
|
+
remove();
|
|
328
|
+
else
|
|
329
|
+
event.signal.addEventListener('abort', remove, { once: true });
|
|
330
|
+
return { remove, cleanup: scrollStyles.cleanup };
|
|
331
|
+
}
|
|
332
|
+
function scheduleNavigationScrollCleanup(transition, removeScrollStyles, cleanup) {
|
|
333
|
+
function removeAfterSuccess() {
|
|
334
|
+
if (cleanup === 'finished')
|
|
335
|
+
return removeScrollStyles();
|
|
336
|
+
// The first callback runs before the first post-navigation paint. The second removes the
|
|
337
|
+
// stylesheet before the following frame.
|
|
338
|
+
requestAnimationFrame(() => requestAnimationFrame(removeScrollStyles));
|
|
339
|
+
}
|
|
340
|
+
void transition.finished.then(removeAfterSuccess, removeScrollStyles);
|
|
341
|
+
}
|
|
342
|
+
function getRuntimeNavigation(navigation, event, resolveFormNavigation) {
|
|
165
343
|
if (event.navigationType === 'traverse') {
|
|
166
|
-
let state = getTraverseNavigationState(event);
|
|
344
|
+
let state = getTraverseNavigationState(navigation, event);
|
|
167
345
|
return state ? { state } : undefined;
|
|
168
346
|
}
|
|
169
|
-
let sourceNavigation = getSourceElementNavigation(event, resolveFormNavigation);
|
|
347
|
+
let sourceNavigation = getSourceElementNavigation(navigation, event, resolveFormNavigation);
|
|
170
348
|
if (sourceNavigation)
|
|
171
349
|
return sourceNavigation;
|
|
172
350
|
let destinationState = event.destination.getState();
|
|
173
351
|
if (isRuntimeNavigation(destinationState))
|
|
174
352
|
return { state: destinationState };
|
|
175
353
|
}
|
|
176
|
-
function getTraverseNavigationState(event) {
|
|
354
|
+
function getTraverseNavigationState(navigation, event) {
|
|
177
355
|
let destinationState = event.destination.getState();
|
|
178
356
|
if (isRuntimeNavigation(destinationState)) {
|
|
179
357
|
return destinationState;
|
|
180
358
|
}
|
|
181
359
|
// Safari returns `null` for destination.getState(), even though its in the
|
|
182
360
|
// navigation.entries(), so we do its job for it and look it up.
|
|
183
|
-
let navigation = window.navigation;
|
|
184
361
|
let matchingEntry = navigation.entries().find((entry) => entry.key === event.destination.key);
|
|
185
362
|
if (matchingEntry) {
|
|
186
363
|
let state = matchingEntry.getState();
|
|
@@ -190,40 +367,40 @@ function getTraverseNavigationState(event) {
|
|
|
190
367
|
}
|
|
191
368
|
return undefined;
|
|
192
369
|
}
|
|
193
|
-
function getSourceElementNavigation(event, resolveFormNavigation) {
|
|
370
|
+
function getSourceElementNavigation(navigation, event, resolveFormNavigation) {
|
|
194
371
|
let sourceEvent = event;
|
|
195
372
|
let sourceElement = sourceEvent.sourceElement;
|
|
196
373
|
if (!(sourceElement instanceof Element))
|
|
197
374
|
return;
|
|
198
375
|
let linkElement = sourceElement.closest('a, area');
|
|
199
376
|
if (linkElement instanceof Element) {
|
|
200
|
-
if (linkElement.hasAttribute('rmx-document'))
|
|
377
|
+
if (linkElement.hasAttribute('data-rmx-document'))
|
|
201
378
|
return;
|
|
202
379
|
if (linkElement.hasAttribute('download'))
|
|
203
380
|
return;
|
|
204
381
|
return {
|
|
205
382
|
state: {
|
|
206
|
-
target: linkElement.getAttribute('rmx-target') ?? undefined,
|
|
207
|
-
src: linkElement.getAttribute('rmx-src') ?? event.destination.url,
|
|
208
|
-
resetScroll: linkElement.getAttribute('rmx-reset-scroll') !== 'false',
|
|
383
|
+
target: linkElement.getAttribute('data-rmx-target') ?? undefined,
|
|
384
|
+
src: linkElement.getAttribute('data-rmx-src') ?? event.destination.url,
|
|
385
|
+
resetScroll: linkElement.getAttribute('data-rmx-reset-scroll') !== 'false',
|
|
209
386
|
$rmx: true,
|
|
210
387
|
},
|
|
211
|
-
replaceHistory: getReplaceHistory(linkElement.getAttribute('rmx-history'), false),
|
|
388
|
+
replaceHistory: getReplaceHistory(linkElement.getAttribute('data-rmx-history'), false),
|
|
212
389
|
};
|
|
213
390
|
}
|
|
214
391
|
let formNavigation = resolveFormNavigation(event);
|
|
215
|
-
if (!formNavigation || formNavigation.hasAttribute('rmx-document'))
|
|
392
|
+
if (!formNavigation || formNavigation.hasAttribute('data-rmx-document'))
|
|
216
393
|
return;
|
|
217
394
|
let replaceHistoryByDefault = formNavigation.getSubmission !== undefined &&
|
|
218
|
-
event.destination.url ===
|
|
395
|
+
event.destination.url === navigation.currentEntry?.url;
|
|
219
396
|
return {
|
|
220
397
|
state: {
|
|
221
|
-
target: formNavigation.getAttribute('rmx-target') ?? undefined,
|
|
222
|
-
src: formNavigation.getAttribute('rmx-src') ?? event.destination.url,
|
|
223
|
-
resetScroll: formNavigation.getAttribute('rmx-reset-scroll') !== 'false',
|
|
398
|
+
target: formNavigation.getAttribute('data-rmx-target') ?? undefined,
|
|
399
|
+
src: formNavigation.getAttribute('data-rmx-src') ?? event.destination.url,
|
|
400
|
+
resetScroll: formNavigation.getAttribute('data-rmx-reset-scroll') !== 'false',
|
|
224
401
|
$rmx: true,
|
|
225
402
|
},
|
|
226
|
-
replaceHistory: getReplaceHistory(formNavigation.getAttribute('rmx-history'), replaceHistoryByDefault),
|
|
403
|
+
replaceHistory: getReplaceHistory(formNavigation.getAttribute('data-rmx-history'), replaceHistoryByDefault),
|
|
227
404
|
getSubmission: formNavigation.getSubmission,
|
|
228
405
|
};
|
|
229
406
|
}
|
|
@@ -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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"}
|
|
@@ -799,6 +799,7 @@ function insertFrame(node, domParent, vParent, context, svg, anchor, cursor) {
|
|
|
799
799
|
moduleLoads: runtime.moduleLoads,
|
|
800
800
|
frameInstances: runtime.frameInstances,
|
|
801
801
|
namedFrames: runtime.namedFrames,
|
|
802
|
+
processClientEntryPreloads: runtime.processClientEntryPreloads,
|
|
802
803
|
});
|
|
803
804
|
runtime.frameInstances.set(start, instance);
|
|
804
805
|
}
|
|
@@ -844,6 +845,7 @@ function insertFrame(node, domParent, vParent, context, svg, anchor, cursor) {
|
|
|
844
845
|
moduleLoads: runtime.moduleLoads,
|
|
845
846
|
frameInstances: runtime.frameInstances,
|
|
846
847
|
namedFrames: runtime.namedFrames,
|
|
848
|
+
processClientEntryPreloads: runtime.processClientEntryPreloads,
|
|
847
849
|
});
|
|
848
850
|
runtime.frameInstances.set(start, instance);
|
|
849
851
|
let committed = Object.assign(node, {
|
|
@@ -859,7 +861,7 @@ function insertFrame(node, domParent, vParent, context, svg, anchor, cursor) {
|
|
|
859
861
|
resolveController: undefined,
|
|
860
862
|
},
|
|
861
863
|
});
|
|
862
|
-
resolveClientFrame(committed, runtime);
|
|
864
|
+
resolveClientFrame(committed, runtime, runtime.serverFrameReload);
|
|
863
865
|
return committed;
|
|
864
866
|
}
|
|
865
867
|
function resolveClientFrame(node, runtime, serverFrameReload) {
|
|
@@ -877,7 +879,8 @@ function resolveClientFrame(node, runtime, serverFrameReload) {
|
|
|
877
879
|
}
|
|
878
880
|
let resolveController = reload?.controller ?? new AbortController();
|
|
879
881
|
state.resolveController = resolveController;
|
|
880
|
-
Promise.
|
|
882
|
+
let frameCommitted = Promise.withResolvers();
|
|
883
|
+
let resolve = Promise.resolve()
|
|
881
884
|
.then(() => runtime.resolveFrame(frameSrc, {
|
|
882
885
|
signal: resolveController.signal,
|
|
883
886
|
target: getFrameName(node),
|
|
@@ -891,7 +894,12 @@ function resolveClientFrame(node, runtime, serverFrameReload) {
|
|
|
891
894
|
state.fallbackRoot?.dispose();
|
|
892
895
|
state.fallbackRoot = undefined;
|
|
893
896
|
let nextContent = asAbortableFrameContent(content, resolveController.signal);
|
|
894
|
-
await instance.render(nextContent, {
|
|
897
|
+
await instance.render(nextContent, {
|
|
898
|
+
signal: resolveController.signal,
|
|
899
|
+
reconciliationTracker: serverFrameReload?.reconciliationTracker,
|
|
900
|
+
blockingFrameTracker: serverFrameReload?.blockingFrameTracker,
|
|
901
|
+
onCommit: frameCommitted.resolve,
|
|
902
|
+
});
|
|
895
903
|
if (state.resolveToken !== token || resolveController.signal.aborted)
|
|
896
904
|
return;
|
|
897
905
|
state.resolved = true;
|
|
@@ -902,11 +910,18 @@ function resolveClientFrame(node, runtime, serverFrameReload) {
|
|
|
902
910
|
}
|
|
903
911
|
})
|
|
904
912
|
.finally(() => {
|
|
913
|
+
frameCommitted.resolve();
|
|
905
914
|
reload?.complete();
|
|
906
915
|
if (state.resolveController === resolveController) {
|
|
907
916
|
state.resolveController = undefined;
|
|
908
917
|
}
|
|
909
918
|
});
|
|
919
|
+
if (serverFrameReload?.reconciliationTracker && !node.props.fallback) {
|
|
920
|
+
serverFrameReload.reconciliationTracker.waitFor(resolve);
|
|
921
|
+
}
|
|
922
|
+
if (serverFrameReload?.blockingFrameTracker && !node.props.fallback) {
|
|
923
|
+
serverFrameReload.blockingFrameTracker.waitFor(frameCommitted.promise);
|
|
924
|
+
}
|
|
910
925
|
}
|
|
911
926
|
function disposeFrameResources(node) {
|
|
912
927
|
let state = node._state;
|