@alignable/bifrost 0.0.10 → 0.0.12
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/dist/index.d.ts +1 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/PageShell.d.ts.map +1 -1
- package/dist/lib/getElementAttributes.d.ts +2 -0
- package/dist/lib/getElementAttributes.d.ts.map +1 -0
- package/dist/lib/getElementAttributes.js +7 -0
- package/dist/lib/turbolinks/browser_adapter.d.ts.map +1 -1
- package/dist/lib/turbolinks/browser_adapter.js +1 -4
- package/dist/lib/turbolinks/controller.d.ts +18 -44
- package/dist/lib/turbolinks/controller.d.ts.map +1 -1
- package/dist/lib/turbolinks/controller.js +42 -113
- package/dist/lib/turbolinks/head_details.d.ts +1 -0
- package/dist/lib/turbolinks/head_details.d.ts.map +1 -1
- package/dist/lib/turbolinks/head_details.js +5 -0
- package/dist/lib/turbolinks/index.d.ts +3 -3
- package/dist/lib/turbolinks/index.d.ts.map +1 -1
- package/dist/lib/turbolinks/index.js +18 -18
- package/dist/lib/turbolinks/lruCache.d.ts.map +1 -0
- package/dist/lib/turbolinks/mergeHead.d.ts +2 -0
- package/dist/lib/turbolinks/mergeHead.d.ts.map +1 -0
- package/dist/lib/{mergeHead.js → turbolinks/mergeHead.js} +27 -33
- package/dist/lib/turbolinks/util.d.ts +4 -0
- package/dist/lib/turbolinks/util.d.ts.map +1 -1
- package/dist/lib/turbolinks/util.js +40 -0
- package/dist/lib/turbolinks/visit.d.ts +5 -23
- package/dist/lib/turbolinks/visit.d.ts.map +1 -1
- package/dist/lib/turbolinks/visit.js +54 -118
- package/dist/proxy/pages/onRenderClient.d.ts.map +1 -1
- package/dist/proxy/pages/onRenderClient.js +40 -29
- package/dist/proxy/pages/onRenderHtml.d.ts.map +1 -1
- package/dist/proxy/pages/onRenderHtml.js +19 -5
- package/dist/proxy/pages/restorationVisit/+config.d.ts +2 -0
- package/dist/proxy/pages/restorationVisit/+config.d.ts.map +1 -1
- package/dist/proxy/pages/restorationVisit/+config.js +3 -0
- package/dist/proxy/pages/restorationVisit/onRenderClient.d.ts +3 -0
- package/dist/proxy/pages/restorationVisit/onRenderClient.d.ts.map +1 -0
- package/dist/proxy/pages/restorationVisit/onRenderClient.js +41 -0
- package/dist/renderer/onBeforeRoute.d.ts +1 -6
- package/dist/renderer/onBeforeRoute.d.ts.map +1 -1
- package/dist/renderer/onBeforeRoute.js +19 -11
- package/dist/renderer/onRenderClient.d.ts.map +1 -1
- package/dist/renderer/onRenderClient.js +29 -23
- package/dist/renderer/onRenderHtml.d.ts.map +1 -1
- package/dist/renderer/onRenderHtml.js +12 -16
- package/dist/renderer/utils/buildHead.d.ts +4 -0
- package/dist/renderer/utils/buildHead.d.ts.map +1 -0
- package/dist/renderer/utils/buildHead.js +10 -0
- package/dist/types/internal.d.ts +28 -17
- package/dist/types/internal.d.ts.map +1 -1
- package/package.json +13 -5
- package/dist/lib/dispatchTurbolinks.d.ts +0 -28
- package/dist/lib/dispatchTurbolinks.d.ts.map +0 -1
- package/dist/lib/dispatchTurbolinks.js +0 -5
- package/dist/lib/domUtils.d.ts +0 -3
- package/dist/lib/domUtils.d.ts.map +0 -1
- package/dist/lib/domUtils.js +0 -34
- package/dist/lib/getGlobalObject.d.ts +0 -5
- package/dist/lib/getGlobalObject.d.ts.map +0 -1
- package/dist/lib/getGlobalObject.js +0 -7
- package/dist/lib/linkInterceptor.d.ts +0 -2
- package/dist/lib/linkInterceptor.d.ts.map +0 -1
- package/dist/lib/linkInterceptor.js +0 -74
- package/dist/lib/lruCache.d.ts.map +0 -1
- package/dist/lib/mergeHead.d.ts +0 -2
- package/dist/lib/mergeHead.d.ts.map +0 -1
- package/dist/lib/navigateAnywhere.d.ts +0 -3
- package/dist/lib/navigateAnywhere.d.ts.map +0 -1
- package/dist/lib/navigateAnywhere.js +0 -15
- package/dist/lib/snapshots.d.ts +0 -9
- package/dist/lib/snapshots.d.ts.map +0 -1
- package/dist/lib/snapshots.js +0 -50
- package/dist/lib/turbolinks/history.d.ts +0 -22
- package/dist/lib/turbolinks/history.d.ts.map +0 -1
- package/dist/lib/turbolinks/history.js +0 -60
- package/dist/lib/turbolinks/namespace.d.ts +0 -12
- package/dist/lib/turbolinks/namespace.d.ts.map +0 -1
- package/dist/lib/turbolinks/namespace.js +0 -20
- package/dist/lib/turbolinks/passthrough_renderer.d.ts +0 -32
- package/dist/lib/turbolinks/passthrough_renderer.d.ts.map +0 -1
- package/dist/lib/turbolinks/passthrough_renderer.js +0 -128
- package/dist/lib/turbolinks/renderer.d.ts +0 -14
- package/dist/lib/turbolinks/renderer.d.ts.map +0 -1
- package/dist/lib/turbolinks/renderer.js +0 -28
- package/dist/lib/turbolinks/scroll_manager.d.ts +0 -16
- package/dist/lib/turbolinks/scroll_manager.d.ts.map +0 -1
- package/dist/lib/turbolinks/scroll_manager.js +0 -32
- package/dist/lib/turbolinks/snapshot.d.ts +0 -25
- package/dist/lib/turbolinks/snapshot.d.ts.map +0 -1
- package/dist/lib/turbolinks/snapshot.js +0 -77
- package/dist/lib/turbolinks/snapshot_cache.d.ts +0 -18
- package/dist/lib/turbolinks/snapshot_cache.d.ts.map +0 -1
- package/dist/lib/turbolinks/snapshot_cache.js +0 -42
- package/dist/lib/turbolinks/snapshot_renderer copy.d.ts +0 -45
- package/dist/lib/turbolinks/snapshot_renderer copy.d.ts.map +0 -1
- package/dist/lib/turbolinks/snapshot_renderer copy.js +0 -179
- package/dist/lib/turbolinks/snapshot_renderer.d.ts +0 -43
- package/dist/lib/turbolinks/snapshot_renderer.d.ts.map +0 -1
- package/dist/lib/turbolinks/snapshot_renderer.js +0 -139
- package/dist/lib/turbolinks/view.d.ts +0 -21
- package/dist/lib/turbolinks/view.d.ts.map +0 -1
- package/dist/lib/turbolinks/view.js +0 -42
- package/dist/lib/turbolinks.d.ts +0 -5
- package/dist/lib/turbolinks.d.ts.map +0 -1
- package/dist/lib/turbolinks.js +0 -14
- package/dist/proxy/pages/onPageTransitionStart.d.ts +0 -3
- package/dist/proxy/pages/onPageTransitionStart.d.ts.map +0 -1
- package/dist/proxy/pages/onPageTransitionStart.js +0 -9
- package/dist/renderer/utils/formatMetaObject.d.ts +0 -4
- package/dist/renderer/utils/formatMetaObject.d.ts.map +0 -1
- package/dist/renderer/utils/formatMetaObject.js +0 -3
- /package/dist/lib/{lruCache.d.ts → turbolinks/lruCache.d.ts} +0 -0
- /package/dist/lib/{lruCache.js → turbolinks/lruCache.js} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
import { DocumentProps, Layout, LayoutMap } from "./types/internal";
|
|
3
|
-
import ProxyLibConfig from "./proxy/pages/+config.js";
|
|
4
|
-
import bifrostLibConfig from "./renderer/+config.js";
|
|
5
|
-
import { Turbolinks } from "./lib/turbolinks.js";
|
|
1
|
+
export type { DocumentProps, LayoutMap, NoProxyConfig as BifrostConfig } from "./types/internal";
|
|
6
2
|
export { usePageContext } from "./renderer/usePageContext.js";
|
|
7
|
-
export { LayoutMap, DocumentProps };
|
|
8
|
-
type ConfigConstructor<LibConfig extends ConfigNonHeaderFile, T extends {
|
|
9
|
-
[K in keyof LibConfig["meta"]]?: any;
|
|
10
|
-
}> = Config & Partial<T>;
|
|
11
|
-
export type ProxyConfig<LayoutProps> = ConfigConstructor<typeof ProxyLibConfig, {
|
|
12
|
-
layoutMap: LayoutMap<LayoutProps>;
|
|
13
|
-
}>;
|
|
14
|
-
export type BifrostConfig<LayoutProps> = ConfigConstructor<typeof bifrostLibConfig, {
|
|
15
|
-
Layout: Layout<LayoutProps>;
|
|
16
|
-
layoutProps: LayoutProps;
|
|
17
|
-
documentProps: DocumentProps;
|
|
18
|
-
}>;
|
|
19
|
-
declare global {
|
|
20
|
-
interface Window {
|
|
21
|
-
Turbolinks: typeof Turbolinks;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageShell.d.ts","sourceRoot":"","sources":["../../lib/PageShell.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"PageShell.d.ts","sourceRoot":"","sources":["../../lib/PageShell.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,wBAAgB,SAAS,CAAC,EACxB,WAAW,EACX,QAAQ,GACT,EAAE;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,SAAS,CAAC;CACrB,eAQA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getElementAttributes.d.ts","sourceRoot":"","sources":["../../lib/getElementAttributes.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,0BAMpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser_adapter.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/browser_adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"browser_adapter.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/browser_adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,cAAe,YAAW,OAAO;IAC5C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,WAAW,cAAqB;IAEzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;gBAEhB,UAAU,EAAE,UAAU;IAIlC,iCAAiC,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;IAOrE,YAAY,CAAC,KAAK,EAAE,KAAK;IAMzB,mBAAmB,CAAC,KAAK,EAAE,KAAK;IAShC,sBAAsB,CAAC,KAAK,EAAE,KAAK;IAInC,qBAAqB,CAAC,KAAK,EAAE,KAAK;IAIlC,gCAAgC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM;IAYjE,oBAAoB,CAAC,KAAK,EAAE,KAAK;IAIjC,cAAc,CAAC,KAAK,EAAE,KAAK;IAG3B,eAAe;IAIf,WAAW,CAAC,KAAK,EAAE,KAAK;IAExB,aAAa,CAAC,KAAK,EAAE,KAAK;IAI1B,yBAAyB;IAOzB,eAAe,aAEb;IAEF,eAAe;IAQf,MAAM;CAGP"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ProgressBar } from "./progress_bar";
|
|
2
|
-
import { uuid } from "./util";
|
|
3
2
|
export class BrowserAdapter {
|
|
4
3
|
constructor(controller) {
|
|
5
4
|
this.progressBar = new ProgressBar();
|
|
@@ -9,8 +8,7 @@ export class BrowserAdapter {
|
|
|
9
8
|
this.controller = controller;
|
|
10
9
|
}
|
|
11
10
|
visitProposedToLocationWithAction(location, action) {
|
|
12
|
-
|
|
13
|
-
this.controller.startVisitToLocationWithAction(location, action, restorationIdentifier);
|
|
11
|
+
this.controller.startVisitToLocationWithAction(location, action);
|
|
14
12
|
}
|
|
15
13
|
visitStarted(visit) {
|
|
16
14
|
visit.issueRequest();
|
|
@@ -47,7 +45,6 @@ export class BrowserAdapter {
|
|
|
47
45
|
this.hideProgressBar();
|
|
48
46
|
}
|
|
49
47
|
visitCompleted(visit) {
|
|
50
|
-
visit.followRedirect();
|
|
51
48
|
}
|
|
52
49
|
pageInvalidated() {
|
|
53
50
|
this.reload();
|
|
@@ -1,35 +1,20 @@
|
|
|
1
|
+
import { LruCache } from "./lruCache";
|
|
1
2
|
import { Adapter } from "./adapter";
|
|
2
|
-
import { History } from "./history";
|
|
3
3
|
import { Location, Locatable } from "./location";
|
|
4
|
-
import {
|
|
5
|
-
import { ScrollManager } from "./scroll_manager";
|
|
6
|
-
import { SnapshotCache } from "./snapshot_cache";
|
|
7
|
-
import { Action, Position } from "./types";
|
|
8
|
-
import { RenderOptions, View } from "./view";
|
|
4
|
+
import { Action } from "./types";
|
|
9
5
|
import { Visit } from "./visit";
|
|
10
|
-
export type RestorationData = {
|
|
11
|
-
scrollPosition?: Position;
|
|
12
|
-
};
|
|
13
|
-
export type RestorationDataMap = {
|
|
14
|
-
[uuid: string]: RestorationData;
|
|
15
|
-
};
|
|
16
6
|
export type TimingData = {};
|
|
17
7
|
export type VisitOptions = {
|
|
18
8
|
action: Action;
|
|
19
9
|
};
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
10
|
+
export interface Snapshot {
|
|
11
|
+
bodyEl: Element;
|
|
12
|
+
headEl: Element;
|
|
13
|
+
pageContext: any;
|
|
14
|
+
}
|
|
25
15
|
export declare class Controller {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
readonly history: History;
|
|
29
|
-
readonly restorationData: RestorationDataMap;
|
|
30
|
-
readonly scrollManager: ScrollManager;
|
|
31
|
-
readonly view: View;
|
|
32
|
-
cache: SnapshotCache;
|
|
16
|
+
adapter: Adapter;
|
|
17
|
+
cache: LruCache<Snapshot>;
|
|
33
18
|
currentVisit?: Visit;
|
|
34
19
|
enabled: boolean;
|
|
35
20
|
lastRenderedLocation?: Location;
|
|
@@ -37,30 +22,21 @@ export declare class Controller {
|
|
|
37
22
|
progressBarDelay: number;
|
|
38
23
|
restorationIdentifier: string;
|
|
39
24
|
started: boolean;
|
|
25
|
+
pageContext: any;
|
|
40
26
|
start(): void;
|
|
41
27
|
disable(): void;
|
|
42
28
|
stop(): void;
|
|
43
29
|
clearCache(): void;
|
|
44
30
|
visit(location: Locatable, options?: Partial<VisitOptions>): void;
|
|
45
|
-
startVisitToLocationWithAction(location: Locatable, action: Action, restorationIdentifier
|
|
31
|
+
startVisitToLocationWithAction(location: Locatable, action: Action, restorationIdentifier?: string): void;
|
|
46
32
|
setProgressBarDelay(delay: number): void;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
replaceHistoryWithLocationAndRestorationIdentifier(locatable: Locatable, restorationIdentifier: string): void;
|
|
51
|
-
historyPoppedToLocationWithRestorationIdentifier(location: Location, restorationIdentifier: string): void;
|
|
52
|
-
getCachedSnapshotForLocation(location: Location): import("./snapshot").Snapshot | undefined;
|
|
53
|
-
shouldCacheSnapshot(): boolean;
|
|
33
|
+
historyPoppedToLocationWithRestorationIdentifier(location: Locatable, restorationIdentifier: string): void;
|
|
34
|
+
getCachedSnapshotForLocation(location: Locatable): Snapshot | undefined;
|
|
35
|
+
shouldCacheSnapshot(): boolean | null;
|
|
54
36
|
cacheSnapshot(): void;
|
|
55
|
-
scrollToAnchor(anchor: string): void;
|
|
56
|
-
scrollToElement(element: Element): void;
|
|
57
|
-
scrollToPosition(position: Position): void;
|
|
58
|
-
scrollPositionChanged(position: Position): void;
|
|
59
|
-
render(options: Partial<RenderOptions>, callback: RenderCallback): void;
|
|
60
37
|
viewInvalidated(): void;
|
|
61
|
-
viewWillRender(
|
|
38
|
+
viewWillRender(): void;
|
|
62
39
|
viewRendered(): void;
|
|
63
|
-
pageLoaded: () => void;
|
|
64
40
|
clickCaptured: () => void;
|
|
65
41
|
clickBubbled: (event: MouseEvent) => void;
|
|
66
42
|
applicationAllowsFollowingLinkToLocation(link: Element, location: Location): boolean;
|
|
@@ -77,7 +53,7 @@ export declare class Controller {
|
|
|
77
53
|
notifyApplicationBeforeCachingSnapshot(): Event & {
|
|
78
54
|
data: any;
|
|
79
55
|
};
|
|
80
|
-
notifyApplicationBeforeRender(
|
|
56
|
+
notifyApplicationBeforeRender(): Event & {
|
|
81
57
|
data: any;
|
|
82
58
|
};
|
|
83
59
|
notifyApplicationAfterRender(): Event & {
|
|
@@ -86,8 +62,8 @@ export declare class Controller {
|
|
|
86
62
|
notifyApplicationAfterPageLoad(timing?: TimingData): Event & {
|
|
87
63
|
data: any;
|
|
88
64
|
};
|
|
89
|
-
startVisit(location: Location, action: Action
|
|
90
|
-
createVisit(location: Location, action: Action
|
|
65
|
+
startVisit(location: Location, action: Action): void;
|
|
66
|
+
createVisit(location: Location, action: Action): Visit;
|
|
91
67
|
visitCompleted(visit: Visit): void;
|
|
92
68
|
clickEventIsSignificant(event: MouseEvent): boolean;
|
|
93
69
|
getVisitableLinkForTarget(target: EventTarget | null): Element | null | undefined;
|
|
@@ -95,7 +71,5 @@ export declare class Controller {
|
|
|
95
71
|
getActionForLink(link: Element): Action;
|
|
96
72
|
elementIsVisitable(element: Element): boolean;
|
|
97
73
|
locationIsVisitable(location: Location): false | RegExpMatchArray | null;
|
|
98
|
-
getCurrentRestorationData(): RestorationData;
|
|
99
|
-
getRestorationDataForIdentifier(identifier: string): RestorationData;
|
|
100
74
|
}
|
|
101
75
|
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,MAAM,EAAY,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,MAAM,UAAU,GAAG,EAAE,CAAC;AAC5B,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,GAAG,CAAC;CAClB;AAED,qBAAa,UAAU;IACrB,OAAO,EAAE,OAAO,CAA4B;IAE5C,KAAK,qBAA8B;IACnC,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,OAAO,UAAQ;IACf,oBAAoB,CAAC,EAAE,QAAQ,CAAC;IAChC,QAAQ,EAAG,QAAQ,CAAC;IACpB,gBAAgB,SAAO;IACvB,qBAAqB,EAAG,MAAM,CAAC;IAC/B,OAAO,UAAS;IAChB,WAAW,EAAE,GAAG,CAAC;IAEjB,KAAK;IAaL,OAAO;IAIP,IAAI;IAOJ,UAAU;IAIV,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM;IAY9D,8BAA8B,CAC5B,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,MAAM,EACd,qBAAqB,CAAC,EAAE,MAAM;IAKhC,mBAAmB,CAAC,KAAK,EAAE,MAAM;IAMjC,gDAAgD,CAC9C,QAAQ,EAAE,SAAS,EACnB,qBAAqB,EAAE,MAAM;IAa/B,4BAA4B,CAAC,QAAQ,EAAE,SAAS;IAIhD,mBAAmB;IASnB,aAAa;IAcb,eAAe;IAIf,cAAc;IAId,YAAY;IAOZ,aAAa,aAGX;IAEF,YAAY,UAAW,UAAU,UAgB/B;IAIF,wCAAwC,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IAQ1E,iCAAiC,CAAC,QAAQ,EAAE,QAAQ;IAKpD,4CAA4C,CAC1C,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,QAAQ;;;IASpB,uCAAuC,CAAC,QAAQ,EAAE,QAAQ;;;IAO1D,sCAAsC,CAAC,QAAQ,EAAE,QAAQ;;;IAMzD,sCAAsC;;;IAItC,6BAA6B;;;IAI7B,4BAA4B;;;IAI5B,8BAA8B,CAAC,MAAM,GAAE,UAAe;;;IAQtD,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;IAS7C,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK;IAUtD,cAAc,CAAC,KAAK,EAAE,KAAK;IAI3B,uBAAuB,CAAC,KAAK,EAAE,UAAU;IAYzC,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAMpD,2BAA2B,CAAC,IAAI,EAAE,OAAO;IAOzC,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAKvC,kBAAkB,CAAC,OAAO,EAAE,OAAO;IASnC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ;CAGvC"}
|
|
@@ -1,31 +1,20 @@
|
|
|
1
|
+
import { LruCache } from "./lruCache";
|
|
1
2
|
import { BrowserAdapter } from "./browser_adapter";
|
|
2
|
-
import { History } from "./history";
|
|
3
3
|
import { Location } from "./location";
|
|
4
|
-
import { ScrollManager } from "./scroll_manager";
|
|
5
|
-
import { SnapshotCache } from "./snapshot_cache";
|
|
6
4
|
import { isAction } from "./types";
|
|
7
5
|
import { closest, defer, dispatch, uuid } from "./util";
|
|
8
|
-
import { View } from "./view";
|
|
9
6
|
import { Visit } from "./visit";
|
|
10
|
-
class Controller {
|
|
7
|
+
export class Controller {
|
|
11
8
|
constructor() {
|
|
12
9
|
this.adapter = new BrowserAdapter(this);
|
|
13
|
-
this.
|
|
14
|
-
this.restorationData = {};
|
|
15
|
-
this.scrollManager = new ScrollManager(this);
|
|
16
|
-
this.view = new View(this);
|
|
17
|
-
this.cache = new SnapshotCache(10);
|
|
10
|
+
this.cache = new LruCache(10);
|
|
18
11
|
this.enabled = true;
|
|
19
12
|
this.progressBarDelay = 500;
|
|
20
13
|
this.started = false;
|
|
21
14
|
// Event handlers
|
|
22
|
-
this.pageLoaded = () => {
|
|
23
|
-
this.lastRenderedLocation = this.location;
|
|
24
|
-
this.notifyApplicationAfterPageLoad();
|
|
25
|
-
};
|
|
26
15
|
this.clickCaptured = () => {
|
|
27
|
-
removeEventListener("click", this.clickBubbled, false);
|
|
28
|
-
addEventListener("click", this.clickBubbled, false);
|
|
16
|
+
document.body.removeEventListener("click", this.clickBubbled, false);
|
|
17
|
+
document.body.addEventListener("click", this.clickBubbled, false);
|
|
29
18
|
};
|
|
30
19
|
this.clickBubbled = (event) => {
|
|
31
20
|
if (this.enabled && this.clickEventIsSignificant(event)) {
|
|
@@ -35,6 +24,7 @@ class Controller {
|
|
|
35
24
|
if (location &&
|
|
36
25
|
this.applicationAllowsFollowingLinkToLocation(link, location)) {
|
|
37
26
|
event.preventDefault();
|
|
27
|
+
event.stopPropagation();
|
|
38
28
|
const action = this.getActionForLink(link);
|
|
39
29
|
this.visit(location, { action });
|
|
40
30
|
}
|
|
@@ -43,11 +33,13 @@ class Controller {
|
|
|
43
33
|
};
|
|
44
34
|
}
|
|
45
35
|
start() {
|
|
46
|
-
if (
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
this.
|
|
36
|
+
if (!this.started) {
|
|
37
|
+
// TODO: delete document.body in this file. We are doing this to pre-empt VPS interceptor.
|
|
38
|
+
// https://github.com/brillout/vite-plugin-ssr/issues/918 fixes this.
|
|
39
|
+
document.body.addEventListener("click", this.clickCaptured, true);
|
|
40
|
+
this.location = Location.currentLocation;
|
|
41
|
+
this.restorationIdentifier = uuid();
|
|
42
|
+
this.lastRenderedLocation = this.location;
|
|
51
43
|
this.started = true;
|
|
52
44
|
this.enabled = true;
|
|
53
45
|
}
|
|
@@ -57,15 +49,12 @@ class Controller {
|
|
|
57
49
|
}
|
|
58
50
|
stop() {
|
|
59
51
|
if (this.started) {
|
|
60
|
-
removeEventListener("click", this.clickCaptured, true);
|
|
61
|
-
removeEventListener("DOMContentLoaded", this.pageLoaded, false);
|
|
62
|
-
this.scrollManager.stop();
|
|
63
|
-
this.stopHistory();
|
|
52
|
+
document.body.removeEventListener("click", this.clickCaptured, true);
|
|
64
53
|
this.started = false;
|
|
65
54
|
}
|
|
66
55
|
}
|
|
67
56
|
clearCache() {
|
|
68
|
-
this.cache = new
|
|
57
|
+
this.cache = new LruCache(10);
|
|
69
58
|
}
|
|
70
59
|
visit(location, options = {}) {
|
|
71
60
|
location = Location.wrap(location);
|
|
@@ -80,48 +69,17 @@ class Controller {
|
|
|
80
69
|
}
|
|
81
70
|
}
|
|
82
71
|
startVisitToLocationWithAction(location, action, restorationIdentifier) {
|
|
83
|
-
|
|
84
|
-
const restorationData = this.getRestorationDataForIdentifier(restorationIdentifier);
|
|
85
|
-
this.startVisit(Location.wrap(location), action, { restorationData });
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
window.location.href = location.toString();
|
|
89
|
-
}
|
|
72
|
+
this.startVisit(Location.wrap(location), action);
|
|
90
73
|
}
|
|
91
74
|
setProgressBarDelay(delay) {
|
|
92
75
|
this.progressBarDelay = delay;
|
|
93
76
|
}
|
|
94
|
-
// History
|
|
95
|
-
startHistory() {
|
|
96
|
-
this.location = Location.currentLocation;
|
|
97
|
-
this.restorationIdentifier = uuid();
|
|
98
|
-
this.history.start();
|
|
99
|
-
this.history.replace(this.location, this.restorationIdentifier);
|
|
100
|
-
}
|
|
101
|
-
stopHistory() {
|
|
102
|
-
this.history.stop();
|
|
103
|
-
}
|
|
104
|
-
pushHistoryWithLocationAndRestorationIdentifier(locatable, restorationIdentifier) {
|
|
105
|
-
this.location = Location.wrap(locatable);
|
|
106
|
-
this.restorationIdentifier = restorationIdentifier;
|
|
107
|
-
this.history.push(this.location, this.restorationIdentifier);
|
|
108
|
-
}
|
|
109
|
-
replaceHistoryWithLocationAndRestorationIdentifier(locatable, restorationIdentifier) {
|
|
110
|
-
this.location = Location.wrap(locatable);
|
|
111
|
-
this.restorationIdentifier = restorationIdentifier;
|
|
112
|
-
this.history.replace(this.location, this.restorationIdentifier);
|
|
113
|
-
}
|
|
114
77
|
// History delegate
|
|
115
78
|
historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {
|
|
116
79
|
if (this.enabled) {
|
|
117
|
-
this.location = location;
|
|
80
|
+
this.location = Location.wrap(location);
|
|
118
81
|
this.restorationIdentifier = restorationIdentifier;
|
|
119
|
-
|
|
120
|
-
this.startVisit(location, "restore", {
|
|
121
|
-
restorationIdentifier,
|
|
122
|
-
restorationData,
|
|
123
|
-
historyChanged: true,
|
|
124
|
-
});
|
|
82
|
+
this.startVisit(this.location, "restore");
|
|
125
83
|
}
|
|
126
84
|
else {
|
|
127
85
|
this.adapter.pageInvalidated();
|
|
@@ -129,50 +87,32 @@ class Controller {
|
|
|
129
87
|
}
|
|
130
88
|
// Snapshot cache
|
|
131
89
|
getCachedSnapshotForLocation(location) {
|
|
132
|
-
|
|
133
|
-
return snapshot ? snapshot.clone() : snapshot;
|
|
90
|
+
return this.cache.get(Location.wrap(location).toCacheKey());
|
|
134
91
|
}
|
|
135
92
|
shouldCacheSnapshot() {
|
|
136
|
-
return
|
|
93
|
+
return (document.body.querySelector("#proxied-body") &&
|
|
94
|
+
document.head
|
|
95
|
+
.querySelector("meta[name='turbolinks-no-cache']")
|
|
96
|
+
?.getAttribute("content") != "no-cache");
|
|
137
97
|
}
|
|
138
98
|
cacheSnapshot() {
|
|
139
99
|
if (this.shouldCacheSnapshot()) {
|
|
140
100
|
this.notifyApplicationBeforeCachingSnapshot();
|
|
141
|
-
const snapshot =
|
|
101
|
+
const snapshot = {
|
|
102
|
+
bodyEl: document.body.cloneNode(true),
|
|
103
|
+
headEl: document.head.cloneNode(true),
|
|
104
|
+
pageContext: this.pageContext,
|
|
105
|
+
};
|
|
142
106
|
const location = this.lastRenderedLocation || Location.currentLocation;
|
|
143
|
-
defer(() => this.cache.put(location, snapshot
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
// Scrolling
|
|
147
|
-
scrollToAnchor(anchor) {
|
|
148
|
-
const element = this.view.getElementForAnchor(anchor);
|
|
149
|
-
if (element) {
|
|
150
|
-
this.scrollToElement(element);
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
this.scrollToPosition({ x: 0, y: 0 });
|
|
107
|
+
defer(() => this.cache.put(location.toCacheKey(), snapshot));
|
|
154
108
|
}
|
|
155
109
|
}
|
|
156
|
-
scrollToElement(element) {
|
|
157
|
-
this.scrollManager.scrollToElement(element);
|
|
158
|
-
}
|
|
159
|
-
scrollToPosition(position) {
|
|
160
|
-
this.scrollManager.scrollToPosition(position);
|
|
161
|
-
}
|
|
162
|
-
// Scroll manager delegate
|
|
163
|
-
scrollPositionChanged(position) {
|
|
164
|
-
const restorationData = this.getCurrentRestorationData();
|
|
165
|
-
restorationData.scrollPosition = position;
|
|
166
|
-
}
|
|
167
110
|
// View
|
|
168
|
-
render(options, callback) {
|
|
169
|
-
this.view.render(options, callback);
|
|
170
|
-
}
|
|
171
111
|
viewInvalidated() {
|
|
172
112
|
this.adapter.pageInvalidated();
|
|
173
113
|
}
|
|
174
|
-
viewWillRender(
|
|
175
|
-
this.notifyApplicationBeforeRender(
|
|
114
|
+
viewWillRender() {
|
|
115
|
+
this.notifyApplicationBeforeRender();
|
|
176
116
|
}
|
|
177
117
|
viewRendered() {
|
|
178
118
|
this.lastRenderedLocation = this.currentVisit.location;
|
|
@@ -208,8 +148,8 @@ class Controller {
|
|
|
208
148
|
notifyApplicationBeforeCachingSnapshot() {
|
|
209
149
|
return dispatch("turbolinks:before-cache");
|
|
210
150
|
}
|
|
211
|
-
notifyApplicationBeforeRender(
|
|
212
|
-
return dispatch("turbolinks:before-render"
|
|
151
|
+
notifyApplicationBeforeRender() {
|
|
152
|
+
return dispatch("turbolinks:before-render");
|
|
213
153
|
}
|
|
214
154
|
notifyApplicationAfterRender() {
|
|
215
155
|
return dispatch("turbolinks:render");
|
|
@@ -220,19 +160,21 @@ class Controller {
|
|
|
220
160
|
});
|
|
221
161
|
}
|
|
222
162
|
// Private
|
|
223
|
-
startVisit(location, action
|
|
163
|
+
startVisit(location, action) {
|
|
224
164
|
if (this.currentVisit) {
|
|
225
165
|
this.currentVisit.cancel();
|
|
226
166
|
}
|
|
227
|
-
this.currentVisit = this.createVisit(location, action
|
|
167
|
+
this.currentVisit = this.createVisit(location, action);
|
|
228
168
|
this.currentVisit.start();
|
|
229
169
|
this.notifyApplicationAfterVisitingLocation(location);
|
|
230
170
|
}
|
|
231
|
-
createVisit(location, action
|
|
232
|
-
const visit = new Visit(this, location, action
|
|
233
|
-
visit.restorationData = { ...(properties.restorationData || {}) };
|
|
234
|
-
visit.historyChanged = !!properties.historyChanged;
|
|
171
|
+
createVisit(location, action) {
|
|
172
|
+
const visit = new Visit(this, location, action);
|
|
235
173
|
visit.referrer = this.location;
|
|
174
|
+
if (action === "restore") {
|
|
175
|
+
// dont issue navigate() because VPS already did.
|
|
176
|
+
visit.requestInFlight = true;
|
|
177
|
+
}
|
|
236
178
|
return visit;
|
|
237
179
|
}
|
|
238
180
|
visitCompleted(visit) {
|
|
@@ -272,19 +214,6 @@ class Controller {
|
|
|
272
214
|
}
|
|
273
215
|
}
|
|
274
216
|
locationIsVisitable(location) {
|
|
275
|
-
return
|
|
276
|
-
}
|
|
277
|
-
getCurrentRestorationData() {
|
|
278
|
-
return this.getRestorationDataForIdentifier(this.restorationIdentifier);
|
|
279
|
-
}
|
|
280
|
-
getRestorationDataForIdentifier(identifier) {
|
|
281
|
-
if (!(identifier in this.restorationData)) {
|
|
282
|
-
this.restorationData[identifier] = {};
|
|
283
|
-
}
|
|
284
|
-
return this.restorationData[identifier];
|
|
217
|
+
return location.isPrefixedBy(new Location("/")) && location.isHTML();
|
|
285
218
|
}
|
|
286
219
|
}
|
|
287
|
-
Controller.supported = !!(window.history.pushState &&
|
|
288
|
-
window.requestAnimationFrame &&
|
|
289
|
-
window.addEventListener);
|
|
290
|
-
export { Controller };
|
|
@@ -10,6 +10,7 @@ type ElementType = "script" | "stylesheet";
|
|
|
10
10
|
export declare class HeadDetails {
|
|
11
11
|
readonly detailsByOuterHTML: ElementDetailMap;
|
|
12
12
|
static fromHeadElement(headElement: HTMLHeadElement | null): HeadDetails;
|
|
13
|
+
static fromHeadString(head: string): HeadDetails;
|
|
13
14
|
constructor(children: Element[]);
|
|
14
15
|
getTrackedElementSignature(): string;
|
|
15
16
|
getScriptElementsNotInDetails(headDetails: HeadDetails): Element[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"head_details.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/head_details.ts"],"names":[],"mappings":"AAEA,KAAK,gBAAgB,GAAG;IAAE,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAA;CAAE,CAAC;AAEhE,KAAK,cAAc,GAAG;IACpB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB,CAAC;AAEF,KAAK,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE3C,qBAAa,WAAW;IACtB,QAAQ,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IAE9C,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,eAAe,GAAG,IAAI,GAAG,WAAW;
|
|
1
|
+
{"version":3,"file":"head_details.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/head_details.ts"],"names":[],"mappings":"AAEA,KAAK,gBAAgB,GAAG;IAAE,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAA;CAAE,CAAC;AAEhE,KAAK,cAAc,GAAG;IACpB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB,CAAC;AAEF,KAAK,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE3C,qBAAa,WAAW;IACtB,QAAQ,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IAE9C,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,eAAe,GAAG,IAAI,GAAG,WAAW;IAKxE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;gBAMpC,QAAQ,EAAE,OAAO,EAAE;IAqB/B,0BAA0B,IAAI,MAAM;IAMpC,6BAA6B,CAAC,WAAW,EAAE,WAAW;IAItD,iCAAiC,CAAC,WAAW,EAAE,WAAW;IAI1D,mCAAmC,CACjC,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW;IAS1B,sBAAsB,IAAI,OAAO,EAAE;IAanC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKzC,qBAAqB,CAAC,IAAI,EAAE,MAAM;CAQnC"}
|
|
@@ -4,6 +4,11 @@ export class HeadDetails {
|
|
|
4
4
|
const children = headElement ? array(headElement.children) : [];
|
|
5
5
|
return new this(children);
|
|
6
6
|
}
|
|
7
|
+
static fromHeadString(head) {
|
|
8
|
+
const element = document.createElement("head");
|
|
9
|
+
element.innerHTML = head;
|
|
10
|
+
return this.fromHeadElement(element);
|
|
11
|
+
}
|
|
7
12
|
constructor(children) {
|
|
8
13
|
this.detailsByOuterHTML = children.reduce((result, element) => {
|
|
9
14
|
const { outerHTML } = element;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Controller, VisitOptions } from "./controller";
|
|
2
2
|
import { Locatable } from "./location";
|
|
3
|
-
import { Renderer } from "./renderer";
|
|
4
3
|
export declare const Turbolinks: {
|
|
5
4
|
readonly supported: boolean;
|
|
6
5
|
controller: Controller;
|
|
@@ -8,7 +7,8 @@ export declare const Turbolinks: {
|
|
|
8
7
|
clearCache(): void;
|
|
9
8
|
setProgressBarDelay(delay: number): void;
|
|
10
9
|
start(): void;
|
|
11
|
-
|
|
12
|
-
_vpsOnRenderClient(
|
|
10
|
+
_vpsCachePageContext(pageContext: any): void;
|
|
11
|
+
_vpsOnRenderClient(newHead: HTMLHeadElement, trackScripts: boolean, renderBody: () => void): void;
|
|
13
12
|
};
|
|
13
|
+
export type Turbolinks = typeof Turbolinks;
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAKvC,eAAO,MAAM,UAAU;;;oBAOL,SAAS,YAAY,QAAQ,YAAY,CAAC;;+BAQ/B,MAAM;;sCAmBC,GAAG;gCAK1B,eAAe,gBACV,OAAO,cACT,MAAM,IAAI;CA+BzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { mergeHead } from "./mergeHead";
|
|
1
2
|
import { Controller } from "./controller";
|
|
3
|
+
import { activateNewBodyScriptElements, focusFirstAutofocusableElement } from "./util";
|
|
2
4
|
const controller = new Controller();
|
|
3
5
|
export const Turbolinks = {
|
|
4
6
|
get supported() {
|
|
5
|
-
return
|
|
7
|
+
return true;
|
|
6
8
|
},
|
|
7
9
|
controller,
|
|
8
10
|
visit(location, options) {
|
|
@@ -18,32 +20,30 @@ export const Turbolinks = {
|
|
|
18
20
|
// because this runs after ios hooks, we have to recover. See onRenderHtml
|
|
19
21
|
if (window.Turbolinks !== Turbolinks &&
|
|
20
22
|
window.Turbolinks.controller.adapter) {
|
|
21
|
-
console.log(window.Turbolinks, Turbolinks);
|
|
22
23
|
window.Turbolinks.controller.adapter.controller = controller;
|
|
23
24
|
controller.adapter = window.Turbolinks.controller.adapter;
|
|
24
|
-
console.log(window.Turbolinks, Turbolinks);
|
|
25
|
-
window.Turbolinks = Turbolinks;
|
|
26
25
|
}
|
|
26
|
+
// Tells vite-plugin-ssr not to do link interception
|
|
27
|
+
window._disableAutomaticLinkInterception = true;
|
|
28
|
+
window.Turbolinks = Turbolinks;
|
|
27
29
|
controller.start();
|
|
28
30
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// TODO: move to controller
|
|
32
|
-
controller.currentVisit.renderer = renderer;
|
|
33
|
-
controller.adapter.visitRequestCompleted(controller.currentVisit);
|
|
34
|
-
controller.adapter.visitRequestFinished(controller.currentVisit);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
console.error("controller.currentVisit should exist when onRenderClient fires");
|
|
38
|
-
}
|
|
31
|
+
_vpsCachePageContext(pageContext) {
|
|
32
|
+
controller.pageContext = pageContext;
|
|
39
33
|
},
|
|
40
|
-
_vpsOnRenderClient(
|
|
34
|
+
_vpsOnRenderClient(newHead, trackScripts, renderBody) {
|
|
41
35
|
if (controller.currentVisit) {
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
const { currentVisit } = controller;
|
|
37
|
+
// TODO: move to controller?
|
|
38
|
+
currentVisit.renderFn = async () => {
|
|
39
|
+
const scriptsLoaded = mergeHead(newHead, trackScripts, () => controller.viewInvalidated());
|
|
44
40
|
controller.viewWillRender();
|
|
45
|
-
|
|
41
|
+
renderBody();
|
|
42
|
+
await scriptsLoaded;
|
|
43
|
+
activateNewBodyScriptElements(Array.from(document.body.querySelectorAll("script")));
|
|
44
|
+
focusFirstAutofocusableElement();
|
|
46
45
|
controller.viewRendered();
|
|
46
|
+
controller.adapter.visitRendered(currentVisit);
|
|
47
47
|
};
|
|
48
48
|
controller.adapter.visitRequestCompleted(controller.currentVisit);
|
|
49
49
|
controller.adapter.visitRequestFinished(controller.currentVisit);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lruCache.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/lruCache.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAQ,CAAC,CAAC;IACrB,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,UAAU,CAAC;gBAEP,UAAU,EAAE,MAAM;IAIvB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAa/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;CAUjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeHead.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/mergeHead.ts"],"names":[],"mappings":"AASA,wBAAsB,SAAS,CAC7B,IAAI,EAAE,eAAe,EACrB,YAAY,EAAE,OAAO,EACrB,MAAM,EAAE,MAAM,IAAI,iBAyCnB"}
|