@hotwired/turbo 7.2.0-beta.1 → 7.2.0-beta.2
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/turbo.es2017-esm.js +388 -321
- package/dist/turbo.es2017-umd.js +388 -321
- package/dist/types/core/drive/error_renderer.d.ts +1 -1
- package/dist/types/core/drive/head_snapshot.d.ts +3 -3
- package/dist/types/core/drive/navigator.d.ts +3 -3
- package/dist/types/core/drive/page_renderer.d.ts +5 -5
- package/dist/types/core/drive/visit.d.ts +12 -1
- package/dist/types/core/frames/frame_controller.d.ts +26 -16
- package/dist/types/core/frames/frame_redirector.d.ts +12 -10
- package/dist/types/core/frames/frame_renderer.d.ts +1 -1
- package/dist/types/core/index.d.ts +5 -4
- package/dist/types/core/native/adapter.d.ts +1 -1
- package/dist/types/core/native/browser_adapter.d.ts +1 -1
- package/dist/types/core/renderer.d.ts +0 -2
- package/dist/types/core/session.d.ts +18 -11
- package/dist/types/core/streams/stream_message.d.ts +2 -6
- package/dist/types/core/types.d.ts +4 -0
- package/dist/types/core/view.d.ts +1 -1
- package/dist/types/elements/frame_element.d.ts +5 -5
- package/dist/types/elements/stream_element.d.ts +3 -1
- package/dist/types/http/fetch_request.d.ts +1 -0
- package/dist/types/observers/form_link_click_observer.d.ts +14 -0
- package/dist/types/observers/form_submit_observer.d.ts +2 -1
- package/dist/types/observers/link_click_observer.d.ts +3 -2
- package/dist/types/tests/functional/form_mode_tests.d.ts +1 -0
- package/dist/types/tests/unit/deprecated_adapter_support_test.d.ts +1 -1
- package/dist/types/util.d.ts +6 -0
- package/package.json +1 -1
- package/dist/types/core/frames/form_interceptor.d.ts +0 -12
- package/dist/types/core/frames/link_interceptor.d.ts +0 -16
- package/dist/types/observers/form_link_interceptor.d.ts +0 -14
|
@@ -6,5 +6,5 @@ export declare class ErrorRenderer extends Renderer<HTMLBodyElement, PageSnapsho
|
|
|
6
6
|
replaceHeadAndBody(): void;
|
|
7
7
|
activateScriptElements(): void;
|
|
8
8
|
get newHead(): HTMLHeadElement;
|
|
9
|
-
get scriptElements(): HTMLScriptElement
|
|
9
|
+
get scriptElements(): NodeListOf<HTMLScriptElement>;
|
|
10
10
|
}
|
|
@@ -11,9 +11,9 @@ declare type ElementType = "script" | "stylesheet";
|
|
|
11
11
|
export declare class HeadSnapshot extends Snapshot<HTMLHeadElement> {
|
|
12
12
|
readonly detailsByOuterHTML: ElementDetailMap;
|
|
13
13
|
get trackedElementSignature(): string;
|
|
14
|
-
getScriptElementsNotInSnapshot(snapshot: HeadSnapshot):
|
|
15
|
-
getStylesheetElementsNotInSnapshot(snapshot: HeadSnapshot):
|
|
16
|
-
getElementsMatchingTypeNotInSnapshot(matchedType: ElementType, snapshot: HeadSnapshot):
|
|
14
|
+
getScriptElementsNotInSnapshot(snapshot: HeadSnapshot): HTMLScriptElement[];
|
|
15
|
+
getStylesheetElementsNotInSnapshot(snapshot: HeadSnapshot): HTMLLinkElement[];
|
|
16
|
+
getElementsMatchingTypeNotInSnapshot<T extends Element>(matchedType: ElementType, snapshot: HeadSnapshot): T[];
|
|
17
17
|
get provisionalElements(): Element[];
|
|
18
18
|
getMetaValue(name: string): string | null;
|
|
19
19
|
findMetaElementByName(name: string): Element | undefined;
|
|
@@ -5,7 +5,7 @@ import { Locatable } from "../url";
|
|
|
5
5
|
import { Visit, VisitDelegate, VisitOptions } from "./visit";
|
|
6
6
|
export declare type NavigatorDelegate = VisitDelegate & {
|
|
7
7
|
allowsVisitingLocationWithAction(location: URL, action?: Action): boolean;
|
|
8
|
-
visitProposedToLocation(location: URL, options: Partial<VisitOptions>): void
|
|
8
|
+
visitProposedToLocation(location: URL, options: Partial<VisitOptions>): Promise<void>;
|
|
9
9
|
notifyApplicationAfterVisitingSamePageLocation(oldURL: URL, newURL: URL): void;
|
|
10
10
|
};
|
|
11
11
|
export declare class Navigator {
|
|
@@ -14,8 +14,8 @@ export declare class Navigator {
|
|
|
14
14
|
currentVisit?: Visit;
|
|
15
15
|
lastVisit?: Visit;
|
|
16
16
|
constructor(delegate: NavigatorDelegate);
|
|
17
|
-
proposeVisit(location: URL, options?: Partial<VisitOptions>): void
|
|
18
|
-
startVisit(locatable: Locatable, restorationIdentifier: string, options?: Partial<VisitOptions>): void
|
|
17
|
+
proposeVisit(location: URL, options?: Partial<VisitOptions>): Promise<void>;
|
|
18
|
+
startVisit(locatable: Locatable, restorationIdentifier: string, options?: Partial<VisitOptions>): Promise<void>;
|
|
19
19
|
submitForm(form: HTMLFormElement, submitter?: HTMLElement): void;
|
|
20
20
|
stop(): void;
|
|
21
21
|
get adapter(): import("../native/adapter").Adapter;
|
|
@@ -5,24 +5,24 @@ export declare class PageRenderer extends Renderer<HTMLBodyElement, PageSnapshot
|
|
|
5
5
|
static renderElement(currentElement: HTMLBodyElement, newElement: HTMLBodyElement): void;
|
|
6
6
|
get shouldRender(): boolean;
|
|
7
7
|
get reloadReason(): ReloadReason;
|
|
8
|
-
prepareToRender(): void
|
|
8
|
+
prepareToRender(): Promise<void>;
|
|
9
9
|
render(): Promise<void>;
|
|
10
10
|
finishRendering(): void;
|
|
11
11
|
get currentHeadSnapshot(): import("./head_snapshot").HeadSnapshot;
|
|
12
12
|
get newHeadSnapshot(): import("./head_snapshot").HeadSnapshot;
|
|
13
13
|
get newElement(): HTMLBodyElement;
|
|
14
|
-
mergeHead(): void
|
|
14
|
+
mergeHead(): Promise<void>;
|
|
15
15
|
replaceBody(): void;
|
|
16
16
|
get trackedElementsAreIdentical(): boolean;
|
|
17
|
-
copyNewHeadStylesheetElements(): void
|
|
17
|
+
copyNewHeadStylesheetElements(): Promise<void>;
|
|
18
18
|
copyNewHeadScriptElements(): void;
|
|
19
19
|
removeCurrentHeadProvisionalElements(): void;
|
|
20
20
|
copyNewHeadProvisionalElements(): void;
|
|
21
21
|
activateNewBody(): void;
|
|
22
22
|
activateNewBodyScriptElements(): void;
|
|
23
23
|
assignNewBody(): void;
|
|
24
|
-
get newHeadStylesheetElements():
|
|
25
|
-
get newHeadScriptElements():
|
|
24
|
+
get newHeadStylesheetElements(): HTMLLinkElement[];
|
|
25
|
+
get newHeadScriptElements(): HTMLScriptElement[];
|
|
26
26
|
get currentHeadProvisionalElements(): Element[];
|
|
27
27
|
get newHeadProvisionalElements(): Element[];
|
|
28
28
|
get newBodyScriptElements(): NodeListOf<HTMLScriptElement>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Adapter } from "../native/adapter";
|
|
2
|
-
import { FetchRequest, FetchRequestDelegate } from "../../http/fetch_request";
|
|
2
|
+
import { FetchRequest, FetchRequestDelegate, FetchRequestHeaders } from "../../http/fetch_request";
|
|
3
3
|
import { FetchResponse } from "../../http/fetch_response";
|
|
4
4
|
import { History } from "./history";
|
|
5
5
|
import { Snapshot } from "../snapshot";
|
|
@@ -39,6 +39,11 @@ export declare type VisitOptions = {
|
|
|
39
39
|
response?: VisitResponse;
|
|
40
40
|
visitCachedSnapshot(snapshot: Snapshot): void;
|
|
41
41
|
willRender: boolean;
|
|
42
|
+
updateHistory: boolean;
|
|
43
|
+
restorationIdentifier?: string;
|
|
44
|
+
shouldCacheSnapshot: boolean;
|
|
45
|
+
frame?: string;
|
|
46
|
+
acceptsStreamResponse: boolean;
|
|
42
47
|
};
|
|
43
48
|
export declare type VisitResponse = {
|
|
44
49
|
statusCode: number;
|
|
@@ -59,6 +64,9 @@ export declare class Visit implements FetchRequestDelegate {
|
|
|
59
64
|
readonly timingMetrics: TimingMetrics;
|
|
60
65
|
readonly visitCachedSnapshot: (snapshot: Snapshot) => void;
|
|
61
66
|
readonly willRender: boolean;
|
|
67
|
+
readonly updateHistory: boolean;
|
|
68
|
+
readonly promise: Promise<void>;
|
|
69
|
+
private resolvingFunctions;
|
|
62
70
|
followedRedirect: boolean;
|
|
63
71
|
frame?: number;
|
|
64
72
|
historyChanged: boolean;
|
|
@@ -68,6 +76,8 @@ export declare class Visit implements FetchRequestDelegate {
|
|
|
68
76
|
request?: FetchRequest;
|
|
69
77
|
response?: VisitResponse;
|
|
70
78
|
scrolled: boolean;
|
|
79
|
+
shouldCacheSnapshot: boolean;
|
|
80
|
+
acceptsStreamResponse: boolean;
|
|
71
81
|
snapshotHTML?: string;
|
|
72
82
|
snapshotCached: boolean;
|
|
73
83
|
state: VisitState;
|
|
@@ -94,6 +104,7 @@ export declare class Visit implements FetchRequestDelegate {
|
|
|
94
104
|
loadCachedSnapshot(): void;
|
|
95
105
|
followRedirect(): void;
|
|
96
106
|
goToSamePageAnchor(): void;
|
|
107
|
+
prepareHeadersForRequest(headers: FetchRequestHeaders, request: FetchRequest): void;
|
|
97
108
|
requestStarted(): void;
|
|
98
109
|
requestPreventedHandlingResponse(_request: FetchRequest, _response: FetchResponse): void;
|
|
99
110
|
requestSucceededWithResponse(request: FetchRequest, response: FetchResponse): Promise<void>;
|
|
@@ -5,17 +5,20 @@ import { AppearanceObserver, AppearanceObserverDelegate } from "../../observers/
|
|
|
5
5
|
import { FormSubmission, FormSubmissionDelegate } from "../drive/form_submission";
|
|
6
6
|
import { Snapshot } from "../snapshot";
|
|
7
7
|
import { ViewDelegate, ViewRenderOptions } from "../view";
|
|
8
|
-
import {
|
|
8
|
+
import { FormSubmitObserver, FormSubmitObserverDelegate } from "../../observers/form_submit_observer";
|
|
9
9
|
import { FrameView } from "./frame_view";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
export declare
|
|
10
|
+
import { LinkClickObserver, LinkClickObserverDelegate } from "../../observers/link_click_observer";
|
|
11
|
+
import { FormLinkClickObserver, FormLinkClickObserverDelegate } from "../../observers/form_link_click_observer";
|
|
12
|
+
export declare type TurboFrameMissingEvent = CustomEvent<{
|
|
13
|
+
fetchResponse: FetchResponse;
|
|
14
|
+
}>;
|
|
15
|
+
export declare class FrameController implements AppearanceObserverDelegate, FetchRequestDelegate, FormSubmitObserverDelegate, FormSubmissionDelegate, FrameElementDelegate, FormLinkClickObserverDelegate, LinkClickObserverDelegate, ViewDelegate<FrameElement, Snapshot<FrameElement>> {
|
|
13
16
|
readonly element: FrameElement;
|
|
14
17
|
readonly view: FrameView;
|
|
15
18
|
readonly appearanceObserver: AppearanceObserver;
|
|
16
|
-
readonly
|
|
17
|
-
readonly
|
|
18
|
-
readonly
|
|
19
|
+
readonly formLinkClickObserver: FormLinkClickObserver;
|
|
20
|
+
readonly linkClickObserver: LinkClickObserver;
|
|
21
|
+
readonly formSubmitObserver: FormSubmitObserver;
|
|
19
22
|
formSubmission?: FormSubmission;
|
|
20
23
|
fetchResponseLoaded: (_fetchResponse: FetchResponse) => void;
|
|
21
24
|
private currentFetchRequest;
|
|
@@ -23,7 +26,11 @@ export declare class FrameController implements AppearanceObserverDelegate, Fetc
|
|
|
23
26
|
private connected;
|
|
24
27
|
private hasBeenLoaded;
|
|
25
28
|
private ignoredAttributes;
|
|
29
|
+
private action;
|
|
30
|
+
private frame?;
|
|
31
|
+
readonly restorationIdentifier: string;
|
|
26
32
|
private previousFrameElement?;
|
|
33
|
+
private currentNavigationElement?;
|
|
27
34
|
constructor(element: FrameElement);
|
|
28
35
|
connect(): void;
|
|
29
36
|
disconnect(): void;
|
|
@@ -34,13 +41,13 @@ export declare class FrameController implements AppearanceObserverDelegate, Fetc
|
|
|
34
41
|
private loadSourceURL;
|
|
35
42
|
loadResponse(fetchResponse: FetchResponse): Promise<void>;
|
|
36
43
|
elementAppearedInViewport(_element: Element): void;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
prepareHeadersForRequest(headers: FetchRequestHeaders,
|
|
44
|
+
willSubmitFormLinkToLocation(link: Element): boolean;
|
|
45
|
+
submittedFormLinkToLocation(link: Element, _location: URL, form: HTMLFormElement): void;
|
|
46
|
+
willFollowLinkToLocation(element: Element): boolean;
|
|
47
|
+
followedLinkToLocation(element: Element, location: URL): void;
|
|
48
|
+
willSubmitForm(element: HTMLFormElement, submitter?: HTMLElement): boolean;
|
|
49
|
+
formSubmitted(element: HTMLFormElement, submitter?: HTMLElement): void;
|
|
50
|
+
prepareHeadersForRequest(headers: FetchRequestHeaders, request: FetchRequest): void;
|
|
44
51
|
requestStarted(_request: FetchRequest): void;
|
|
45
52
|
requestPreventedHandlingResponse(_request: FetchRequest, _response: FetchResponse): void;
|
|
46
53
|
requestSucceededWithResponse(request: FetchRequest, response: FetchResponse): Promise<void>;
|
|
@@ -56,13 +63,15 @@ export declare class FrameController implements AppearanceObserverDelegate, Fetc
|
|
|
56
63
|
viewRenderedSnapshot(_snapshot: Snapshot, _isPreview: boolean): void;
|
|
57
64
|
preloadOnLoadLinksForView(element: Element): void;
|
|
58
65
|
viewInvalidated(): void;
|
|
59
|
-
|
|
66
|
+
willRenderFrame(currentElement: FrameElement, _newElement: FrameElement): void;
|
|
60
67
|
visitCachedSnapshot: ({ element }: Snapshot) => void;
|
|
61
68
|
private visit;
|
|
62
69
|
private navigateFrame;
|
|
63
70
|
private proposeVisitIfNavigatedWithAction;
|
|
71
|
+
changeHistory(): void;
|
|
72
|
+
private sessionWillHandleMissingFrame;
|
|
64
73
|
private findFrameElement;
|
|
65
|
-
extractForeignFrameElement(container: ParentNode): Promise<FrameElement>;
|
|
74
|
+
extractForeignFrameElement(container: ParentNode): Promise<FrameElement | null>;
|
|
66
75
|
private formActionIsVisitable;
|
|
67
76
|
private shouldInterceptNavigation;
|
|
68
77
|
get id(): string;
|
|
@@ -77,4 +86,5 @@ export declare class FrameController implements AppearanceObserverDelegate, Fetc
|
|
|
77
86
|
get rootLocation(): URL;
|
|
78
87
|
private isIgnoringChangesTo;
|
|
79
88
|
private ignoringChangesToAttribute;
|
|
89
|
+
private withCurrentNavigationElement;
|
|
80
90
|
}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { FormSubmitObserver, FormSubmitObserverDelegate } from "../../observers/form_submit_observer";
|
|
2
|
+
import { LinkClickObserver, LinkClickObserverDelegate } from "../../observers/link_click_observer";
|
|
3
|
+
import { Session } from "../session";
|
|
4
|
+
export declare class FrameRedirector implements LinkClickObserverDelegate, FormSubmitObserverDelegate {
|
|
5
|
+
readonly session: Session;
|
|
4
6
|
readonly element: Element;
|
|
5
|
-
readonly
|
|
6
|
-
readonly
|
|
7
|
-
constructor(element: Element);
|
|
7
|
+
readonly linkClickObserver: LinkClickObserver;
|
|
8
|
+
readonly formSubmitObserver: FormSubmitObserver;
|
|
9
|
+
constructor(session: Session, element: Element);
|
|
8
10
|
start(): void;
|
|
9
11
|
stop(): void;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
willFollowLinkToLocation(element: Element): boolean;
|
|
13
|
+
followedLinkToLocation(element: Element, url: URL): void;
|
|
14
|
+
willSubmitForm(element: HTMLFormElement, submitter?: HTMLElement): boolean;
|
|
15
|
+
formSubmitted(element: HTMLFormElement, submitter?: HTMLElement): void;
|
|
14
16
|
private shouldSubmit;
|
|
15
17
|
private shouldRedirect;
|
|
16
18
|
private findFrameElement;
|
|
@@ -2,7 +2,7 @@ import { FrameElement } from "../../elements/frame_element";
|
|
|
2
2
|
import { Render, Renderer } from "../renderer";
|
|
3
3
|
import { Snapshot } from "../snapshot";
|
|
4
4
|
export interface FrameRendererDelegate {
|
|
5
|
-
|
|
5
|
+
willRenderFrame(currentElement: FrameElement, newElement: FrameElement): void;
|
|
6
6
|
}
|
|
7
7
|
export declare class FrameRenderer extends Renderer<FrameElement> {
|
|
8
8
|
private readonly delegate;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Adapter } from "./native/adapter";
|
|
2
|
-
import { Session } from "./session";
|
|
2
|
+
import { FormMode, Session } from "./session";
|
|
3
3
|
import { Cache } from "./cache";
|
|
4
4
|
import { Locatable } from "./url";
|
|
5
5
|
import { StreamMessage } from "./streams/stream_message";
|
|
@@ -12,18 +12,19 @@ declare const session: Session;
|
|
|
12
12
|
declare const cache: Cache;
|
|
13
13
|
declare const navigator: import("./drive/navigator").Navigator;
|
|
14
14
|
export { navigator, session, cache, PageRenderer, PageSnapshot, FrameRenderer };
|
|
15
|
-
export { TurboBeforeCacheEvent, TurboBeforeRenderEvent, TurboBeforeVisitEvent, TurboClickEvent, TurboFrameLoadEvent, TurboFrameRenderEvent, TurboLoadEvent, TurboRenderEvent, TurboVisitEvent, } from "./session";
|
|
15
|
+
export { TurboBeforeCacheEvent, TurboBeforeRenderEvent, TurboBeforeVisitEvent, TurboClickEvent, TurboFetchRequestErrorEvent, TurboFrameLoadEvent, TurboFrameRenderEvent, TurboLoadEvent, TurboRenderEvent, TurboVisitEvent, } from "./session";
|
|
16
16
|
export { TurboSubmitStartEvent, TurboSubmitEndEvent } from "./drive/form_submission";
|
|
17
|
+
export { TurboFrameMissingEvent } from "./frames/frame_controller";
|
|
17
18
|
export { TurboBeforeFetchRequestEvent, TurboBeforeFetchResponseEvent } from "../http/fetch_request";
|
|
18
19
|
export { TurboBeforeStreamRenderEvent } from "../elements/stream_element";
|
|
19
20
|
export { StreamActions } from "./streams/stream_actions";
|
|
20
21
|
export declare function start(): void;
|
|
21
22
|
export declare function registerAdapter(adapter: Adapter): void;
|
|
22
|
-
export declare function visit(location: Locatable, options?: Partial<VisitOptions>): void
|
|
23
|
+
export declare function visit(location: Locatable, options?: Partial<VisitOptions>): Promise<void>;
|
|
23
24
|
export declare function connectStreamSource(source: StreamSource): void;
|
|
24
25
|
export declare function disconnectStreamSource(source: StreamSource): void;
|
|
25
26
|
export declare function renderStreamMessage(message: StreamMessage | string): void;
|
|
26
27
|
export declare function clearCache(): void;
|
|
27
28
|
export declare function setProgressBarDelay(delay: number): void;
|
|
28
29
|
export declare function setConfirmMethod(confirmMethod: (message: string, element: HTMLFormElement) => Promise<boolean>): void;
|
|
29
|
-
export declare function setFormMode(mode:
|
|
30
|
+
export declare function setFormMode(mode: FormMode): void;
|
|
@@ -2,7 +2,7 @@ import { Visit, VisitOptions } from "../drive/visit";
|
|
|
2
2
|
import { FormSubmission } from "../drive/form_submission";
|
|
3
3
|
import { ReloadReason } from "./browser_adapter";
|
|
4
4
|
export interface Adapter {
|
|
5
|
-
visitProposedToLocation(location: URL, options?: Partial<VisitOptions>): void
|
|
5
|
+
visitProposedToLocation(location: URL, options?: Partial<VisitOptions>): Promise<void>;
|
|
6
6
|
visitStarted(visit: Visit): void;
|
|
7
7
|
visitCompleted(visit: Visit): void;
|
|
8
8
|
visitFailed(visit: Visit): void;
|
|
@@ -17,7 +17,7 @@ export declare class BrowserAdapter implements Adapter {
|
|
|
17
17
|
formProgressBarTimeout?: number;
|
|
18
18
|
location?: URL;
|
|
19
19
|
constructor(session: Session);
|
|
20
|
-
visitProposedToLocation(location: URL, options?: Partial<VisitOptions>): void
|
|
20
|
+
visitProposedToLocation(location: URL, options?: Partial<VisitOptions>): Promise<void>;
|
|
21
21
|
visitStarted(visit: Visit): void;
|
|
22
22
|
visitRequestStarted(visit: Visit): void;
|
|
23
23
|
visitRequestCompleted(visit: Visit): void;
|
|
@@ -17,7 +17,6 @@ export declare abstract class Renderer<E extends Element, S extends Snapshot<E>
|
|
|
17
17
|
prepareToRender(): void;
|
|
18
18
|
abstract render(): Promise<void>;
|
|
19
19
|
finishRendering(): void;
|
|
20
|
-
createScriptElement(element: Element): Element;
|
|
21
20
|
preservingPermanentElements(callback: () => void): void;
|
|
22
21
|
focusFirstAutofocusableElement(): void;
|
|
23
22
|
enteringBardo(currentPermanentElement: Element): void;
|
|
@@ -26,5 +25,4 @@ export declare abstract class Renderer<E extends Element, S extends Snapshot<E>
|
|
|
26
25
|
get currentElement(): E;
|
|
27
26
|
get newElement(): E;
|
|
28
27
|
get permanentElementMap(): import("./snapshot").PermanentElementMap;
|
|
29
|
-
get cspNonce(): string | null;
|
|
30
28
|
}
|
|
@@ -5,7 +5,7 @@ import { FormSubmitObserver, FormSubmitObserverDelegate } from "../observers/for
|
|
|
5
5
|
import { FrameRedirector } from "./frames/frame_redirector";
|
|
6
6
|
import { History, HistoryDelegate } from "./drive/history";
|
|
7
7
|
import { LinkClickObserver, LinkClickObserverDelegate } from "../observers/link_click_observer";
|
|
8
|
-
import {
|
|
8
|
+
import { FormLinkClickObserver, FormLinkClickObserverDelegate } from "../observers/form_link_click_observer";
|
|
9
9
|
import { Locatable } from "./url";
|
|
10
10
|
import { Navigator, NavigatorDelegate } from "./drive/navigator";
|
|
11
11
|
import { PageObserver, PageObserverDelegate } from "../observers/page_observer";
|
|
@@ -20,6 +20,8 @@ import { FrameElement } from "../elements/frame_element";
|
|
|
20
20
|
import { FrameViewRenderOptions } from "./frames/frame_view";
|
|
21
21
|
import { FetchResponse } from "../http/fetch_response";
|
|
22
22
|
import { Preloader, PreloaderDelegate } from "./drive/preloader";
|
|
23
|
+
import { FetchRequest } from "../http/fetch_request";
|
|
24
|
+
export declare type FormMode = "on" | "off" | "optin";
|
|
23
25
|
export declare type TimingData = unknown;
|
|
24
26
|
export declare type TurboBeforeCacheEvent = CustomEvent;
|
|
25
27
|
export declare type TurboBeforeRenderEvent = CustomEvent<{
|
|
@@ -36,6 +38,10 @@ export declare type TurboFrameLoadEvent = CustomEvent;
|
|
|
36
38
|
export declare type TurboBeforeFrameRenderEvent = CustomEvent<{
|
|
37
39
|
newFrame: FrameElement;
|
|
38
40
|
} & FrameViewRenderOptions>;
|
|
41
|
+
export declare type TurboFetchRequestErrorEvent = CustomEvent<{
|
|
42
|
+
request: FetchRequest;
|
|
43
|
+
error: Error;
|
|
44
|
+
}>;
|
|
39
45
|
export declare type TurboFrameRenderEvent = CustomEvent<{
|
|
40
46
|
fetchResponse: FetchResponse;
|
|
41
47
|
}>;
|
|
@@ -48,7 +54,7 @@ export declare type TurboVisitEvent = CustomEvent<{
|
|
|
48
54
|
url: string;
|
|
49
55
|
action: Action;
|
|
50
56
|
}>;
|
|
51
|
-
export declare class Session implements FormSubmitObserverDelegate, HistoryDelegate,
|
|
57
|
+
export declare class Session implements FormSubmitObserverDelegate, HistoryDelegate, FormLinkClickObserverDelegate, LinkClickObserverDelegate, NavigatorDelegate, PageObserverDelegate, PageViewDelegate, PreloaderDelegate {
|
|
52
58
|
readonly navigator: Navigator;
|
|
53
59
|
readonly history: History;
|
|
54
60
|
readonly preloader: Preloader;
|
|
@@ -60,34 +66,34 @@ export declare class Session implements FormSubmitObserverDelegate, HistoryDeleg
|
|
|
60
66
|
readonly formSubmitObserver: FormSubmitObserver;
|
|
61
67
|
readonly scrollObserver: ScrollObserver;
|
|
62
68
|
readonly streamObserver: StreamObserver;
|
|
63
|
-
readonly
|
|
69
|
+
readonly formLinkClickObserver: FormLinkClickObserver;
|
|
64
70
|
readonly frameRedirector: FrameRedirector;
|
|
65
71
|
drive: boolean;
|
|
66
72
|
enabled: boolean;
|
|
67
73
|
progressBarDelay: number;
|
|
68
74
|
started: boolean;
|
|
69
|
-
formMode:
|
|
75
|
+
formMode: FormMode;
|
|
70
76
|
start(): void;
|
|
71
77
|
disable(): void;
|
|
72
78
|
stop(): void;
|
|
73
79
|
registerAdapter(adapter: Adapter): void;
|
|
74
|
-
visit(location: Locatable, options?: Partial<VisitOptions>): void
|
|
80
|
+
visit(location: Locatable, options?: Partial<VisitOptions>): Promise<void>;
|
|
75
81
|
connectStreamSource(source: StreamSource): void;
|
|
76
82
|
disconnectStreamSource(source: StreamSource): void;
|
|
77
83
|
renderStreamMessage(message: StreamMessage | string): void;
|
|
78
84
|
clearCache(): void;
|
|
79
85
|
setProgressBarDelay(delay: number): void;
|
|
80
|
-
setFormMode(mode:
|
|
86
|
+
setFormMode(mode: FormMode): void;
|
|
81
87
|
get location(): URL;
|
|
82
88
|
get restorationIdentifier(): string;
|
|
83
89
|
historyPoppedToLocationWithRestorationIdentifier(location: URL, restorationIdentifier: string): void;
|
|
84
90
|
scrollPositionChanged(position: Position): void;
|
|
85
|
-
|
|
86
|
-
|
|
91
|
+
willSubmitFormLinkToLocation(link: Element, location: URL): boolean;
|
|
92
|
+
submittedFormLinkToLocation(): void;
|
|
87
93
|
willFollowLinkToLocation(link: Element, location: URL, event: MouseEvent): boolean;
|
|
88
94
|
followedLinkToLocation(link: Element, location: URL): void;
|
|
89
95
|
allowsVisitingLocationWithAction(location: URL, action?: Action): boolean;
|
|
90
|
-
visitProposedToLocation(location: URL, options: Partial<VisitOptions>): void
|
|
96
|
+
visitProposedToLocation(location: URL, options: Partial<VisitOptions>): Promise<void>;
|
|
91
97
|
visitStarted(visit: Visit): void;
|
|
92
98
|
visitCompleted(visit: Visit): void;
|
|
93
99
|
locationWithActionIsSamePage(location: URL, action?: Action): boolean;
|
|
@@ -105,6 +111,7 @@ export declare class Session implements FormSubmitObserverDelegate, HistoryDeleg
|
|
|
105
111
|
viewInvalidated(reason: ReloadReason): void;
|
|
106
112
|
frameLoaded(frame: FrameElement): void;
|
|
107
113
|
frameRendered(fetchResponse: FetchResponse, frame: FrameElement): void;
|
|
114
|
+
frameMissing(frame: FrameElement, fetchResponse: FetchResponse): Promise<void>;
|
|
108
115
|
applicationAllowsFollowingLinkToLocation(link: Element, location: URL, ev: MouseEvent): boolean;
|
|
109
116
|
applicationAllowsVisitingLocation(location: URL): boolean;
|
|
110
117
|
notifyApplicationAfterClickingLinkToLocation(link: Element, location: URL, event: MouseEvent): CustomEvent<{
|
|
@@ -132,8 +139,8 @@ export declare class Session implements FormSubmitObserverDelegate, HistoryDeleg
|
|
|
132
139
|
notifyApplicationAfterFrameRender(fetchResponse: FetchResponse, frame: FrameElement): CustomEvent<{
|
|
133
140
|
fetchResponse: FetchResponse;
|
|
134
141
|
}>;
|
|
135
|
-
|
|
136
|
-
|
|
142
|
+
submissionIsNavigatable(form: HTMLFormElement, submitter?: HTMLElement): boolean;
|
|
143
|
+
elementIsNavigatable(element: Element): boolean;
|
|
137
144
|
getActionForLink(link: Element): Action;
|
|
138
145
|
get snapshot(): PageSnapshot;
|
|
139
146
|
}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { StreamElement } from "../../elements/stream_element";
|
|
2
1
|
export declare class StreamMessage {
|
|
3
2
|
static readonly contentType = "text/vnd.turbo-stream.html";
|
|
4
|
-
readonly
|
|
3
|
+
readonly fragment: DocumentFragment;
|
|
5
4
|
static wrap(message: StreamMessage | string): StreamMessage;
|
|
6
|
-
constructor(
|
|
7
|
-
get fragment(): DocumentFragment;
|
|
8
|
-
get foreignElements(): StreamElement[];
|
|
9
|
-
get templateChildren(): Element[];
|
|
5
|
+
constructor(fragment: DocumentFragment);
|
|
10
6
|
}
|
|
@@ -8,3 +8,7 @@ export declare type StreamSource = {
|
|
|
8
8
|
addEventListener(type: "message", listener: (event: MessageEvent) => void, options?: boolean | AddEventListenerOptions): void;
|
|
9
9
|
removeEventListener(type: "message", listener: (event: MessageEvent) => void, options?: boolean | EventListenerOptions): void;
|
|
10
10
|
};
|
|
11
|
+
export declare type ResolvingFunctions<T = unknown> = {
|
|
12
|
+
resolve(value: T | PromiseLike<T>): void;
|
|
13
|
+
reject(reason?: any): void;
|
|
14
|
+
};
|
|
@@ -32,7 +32,7 @@ export declare abstract class View<E extends Element, S extends Snapshot<E> = Sn
|
|
|
32
32
|
};
|
|
33
33
|
render(renderer: R): Promise<void>;
|
|
34
34
|
invalidate(reason: ReloadReason): void;
|
|
35
|
-
prepareToRenderSnapshot(renderer: R): void
|
|
35
|
+
prepareToRenderSnapshot(renderer: R): Promise<void>;
|
|
36
36
|
markAsPreview(isPreview: boolean): void;
|
|
37
37
|
renderSnapshot(renderer: R): Promise<void>;
|
|
38
38
|
finishRenderingSnapshot(renderer: R): void;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { FetchResponse } from "../http/fetch_response";
|
|
2
2
|
import { Snapshot } from "../core/snapshot";
|
|
3
|
+
import { LinkClickObserverDelegate } from "../observers/link_click_observer";
|
|
4
|
+
import { FormSubmitObserverDelegate } from "../observers/form_submit_observer";
|
|
3
5
|
export declare enum FrameLoadingStyle {
|
|
4
6
|
eager = "eager",
|
|
5
7
|
lazy = "lazy"
|
|
6
8
|
}
|
|
7
9
|
export declare type FrameElementObservedAttribute = keyof FrameElement & ("disabled" | "complete" | "loading" | "src");
|
|
8
|
-
export interface FrameElementDelegate {
|
|
10
|
+
export interface FrameElementDelegate extends LinkClickObserverDelegate, FormSubmitObserverDelegate {
|
|
9
11
|
connect(): void;
|
|
10
12
|
disconnect(): void;
|
|
11
13
|
completeChanged(): void;
|
|
12
14
|
loadingStyleChanged(): void;
|
|
13
15
|
sourceURLChanged(): void;
|
|
14
16
|
disabledChanged(): void;
|
|
15
|
-
formSubmissionIntercepted(element: HTMLFormElement, submitter?: HTMLElement): void;
|
|
16
|
-
linkClickIntercepted(element: Element, url: string): void;
|
|
17
17
|
loadResponse(response: FetchResponse): void;
|
|
18
18
|
fetchResponseLoaded: (fetchResponse: FetchResponse) => void;
|
|
19
19
|
visitCachedSnapshot: (snapshot: Snapshot) => void;
|
|
@@ -21,13 +21,13 @@ export interface FrameElementDelegate {
|
|
|
21
21
|
}
|
|
22
22
|
export declare class FrameElement extends HTMLElement {
|
|
23
23
|
static delegateConstructor: new (element: FrameElement) => FrameElementDelegate;
|
|
24
|
-
loaded: Promise<
|
|
24
|
+
loaded: Promise<void>;
|
|
25
25
|
readonly delegate: FrameElementDelegate;
|
|
26
26
|
static get observedAttributes(): FrameElementObservedAttribute[];
|
|
27
27
|
constructor();
|
|
28
28
|
connectedCallback(): void;
|
|
29
29
|
disconnectedCallback(): void;
|
|
30
|
-
reload(): void
|
|
30
|
+
reload(): Promise<void>;
|
|
31
31
|
attributeChangedCallback(name: string): void;
|
|
32
32
|
get src(): string | null;
|
|
33
33
|
set src(value: string | null);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export declare type TurboBeforeStreamRenderEvent = CustomEvent
|
|
1
|
+
export declare type TurboBeforeStreamRenderEvent = CustomEvent<{
|
|
2
|
+
newStream: StreamElement;
|
|
3
|
+
}>;
|
|
2
4
|
export declare class StreamElement extends HTMLElement {
|
|
3
5
|
connectedCallback(): Promise<void>;
|
|
4
6
|
private renderPromise?;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LinkClickObserver, LinkClickObserverDelegate } from "./link_click_observer";
|
|
2
|
+
export declare type FormLinkClickObserverDelegate = {
|
|
3
|
+
willSubmitFormLinkToLocation(link: Element, location: URL, event: MouseEvent): boolean;
|
|
4
|
+
submittedFormLinkToLocation(link: Element, location: URL, form: HTMLFormElement): void;
|
|
5
|
+
};
|
|
6
|
+
export declare class FormLinkClickObserver implements LinkClickObserverDelegate {
|
|
7
|
+
readonly linkClickObserver: LinkClickObserver;
|
|
8
|
+
readonly delegate: FormLinkClickObserverDelegate;
|
|
9
|
+
constructor(delegate: FormLinkClickObserverDelegate, element: HTMLElement);
|
|
10
|
+
start(): void;
|
|
11
|
+
stop(): void;
|
|
12
|
+
willFollowLinkToLocation(link: Element, location: URL, originalEvent: MouseEvent): boolean;
|
|
13
|
+
followedLinkToLocation(link: Element, location: URL): void;
|
|
14
|
+
}
|
|
@@ -4,8 +4,9 @@ export interface FormSubmitObserverDelegate {
|
|
|
4
4
|
}
|
|
5
5
|
export declare class FormSubmitObserver {
|
|
6
6
|
readonly delegate: FormSubmitObserverDelegate;
|
|
7
|
+
readonly eventTarget: EventTarget;
|
|
7
8
|
started: boolean;
|
|
8
|
-
constructor(delegate: FormSubmitObserverDelegate);
|
|
9
|
+
constructor(delegate: FormSubmitObserverDelegate, eventTarget: EventTarget);
|
|
9
10
|
start(): void;
|
|
10
11
|
stop(): void;
|
|
11
12
|
submitCaptured: () => void;
|
|
@@ -4,12 +4,13 @@ export interface LinkClickObserverDelegate {
|
|
|
4
4
|
}
|
|
5
5
|
export declare class LinkClickObserver {
|
|
6
6
|
readonly delegate: LinkClickObserverDelegate;
|
|
7
|
+
readonly eventTarget: EventTarget;
|
|
7
8
|
started: boolean;
|
|
8
|
-
constructor(delegate: LinkClickObserverDelegate);
|
|
9
|
+
constructor(delegate: LinkClickObserverDelegate, eventTarget: EventTarget);
|
|
9
10
|
start(): void;
|
|
10
11
|
stop(): void;
|
|
11
12
|
clickCaptured: () => void;
|
|
12
|
-
clickBubbled: (event:
|
|
13
|
+
clickBubbled: (event: Event) => void;
|
|
13
14
|
clickEventIsSignificant(event: MouseEvent): boolean;
|
|
14
15
|
findLinkFromClickTarget(target: EventTarget | null): HTMLAnchorElement | null | undefined;
|
|
15
16
|
getLocationForLink(link: Element): URL;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -9,7 +9,7 @@ export declare class DeprecatedAdapterSupportTest extends DOMTestCase implements
|
|
|
9
9
|
teardown(): Promise<void>;
|
|
10
10
|
"test visit proposal location includes deprecated absoluteURL property"(): Promise<void>;
|
|
11
11
|
"test visit start location includes deprecated absoluteURL property"(): Promise<void>;
|
|
12
|
-
visitProposedToLocation(location: URL, _options?: Partial<VisitOptions>): void
|
|
12
|
+
visitProposedToLocation(location: URL, _options?: Partial<VisitOptions>): Promise<void>;
|
|
13
13
|
visitStarted(visit: Visit): void;
|
|
14
14
|
visitCompleted(_visit: Visit): void;
|
|
15
15
|
visitFailed(_visit: Visit): void;
|
package/dist/types/util.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { Action } from "./core/types";
|
|
1
2
|
export declare type DispatchOptions<T extends CustomEvent> = {
|
|
2
3
|
target: EventTarget;
|
|
3
4
|
cancelable: boolean;
|
|
4
5
|
detail: T["detail"];
|
|
5
6
|
};
|
|
7
|
+
export declare function activateScriptElement(element: HTMLScriptElement): HTMLScriptElement;
|
|
8
|
+
export declare function createDocumentFragment(html: string): DocumentFragment;
|
|
6
9
|
export declare function dispatch<T extends CustomEvent>(eventName: string, { target, cancelable, detail }?: Partial<DispatchOptions<T>>): CustomEvent<T["detail"]>;
|
|
7
10
|
export declare function nextAnimationFrame(): Promise<void>;
|
|
8
11
|
export declare function nextEventLoopTick(): Promise<void>;
|
|
@@ -13,6 +16,9 @@ export declare function uuid(): string;
|
|
|
13
16
|
export declare function getAttribute(attributeName: string, ...elements: (Element | undefined)[]): string | null;
|
|
14
17
|
export declare function markAsBusy(...elements: Element[]): void;
|
|
15
18
|
export declare function clearBusyState(...elements: Element[]): void;
|
|
19
|
+
export declare function waitForLoad(element: HTMLLinkElement, timeoutInMilliseconds?: number): Promise<void>;
|
|
20
|
+
export declare function getHistoryMethodForAction(action: Action): (data: any, unused: string, url?: string | URL | null | undefined) => void;
|
|
21
|
+
export declare function getVisitAction(...elements: (Element | undefined)[]): Action | null;
|
|
16
22
|
export declare function getMetaElement(name: string): HTMLMetaElement | null;
|
|
17
23
|
export declare function getMetaContent(name: string): string | null;
|
|
18
24
|
export declare function setMetaContent(name: string, content: string): HTMLMetaElement;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hotwired/turbo",
|
|
3
|
-
"version": "7.2.0-beta.
|
|
3
|
+
"version": "7.2.0-beta.2",
|
|
4
4
|
"description": "The speed of a single-page web application without having to write any JavaScript",
|
|
5
5
|
"module": "dist/turbo.es2017-esm.js",
|
|
6
6
|
"main": "dist/turbo.es2017-umd.js",
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface FormInterceptorDelegate {
|
|
2
|
-
shouldInterceptFormSubmission(element: HTMLFormElement, submitter?: HTMLElement): boolean;
|
|
3
|
-
formSubmissionIntercepted(element: HTMLFormElement, submitter?: HTMLElement): void;
|
|
4
|
-
}
|
|
5
|
-
export declare class FormInterceptor {
|
|
6
|
-
readonly delegate: FormInterceptorDelegate;
|
|
7
|
-
readonly element: Element;
|
|
8
|
-
constructor(delegate: FormInterceptorDelegate, element: Element);
|
|
9
|
-
start(): void;
|
|
10
|
-
stop(): void;
|
|
11
|
-
submitBubbled: EventListener;
|
|
12
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export interface LinkInterceptorDelegate {
|
|
2
|
-
shouldInterceptLinkClick(element: Element, url: string): boolean;
|
|
3
|
-
linkClickIntercepted(element: Element, url: string): void;
|
|
4
|
-
}
|
|
5
|
-
export declare class LinkInterceptor {
|
|
6
|
-
readonly delegate: LinkInterceptorDelegate;
|
|
7
|
-
readonly element: Element;
|
|
8
|
-
private clickEvent?;
|
|
9
|
-
constructor(delegate: LinkInterceptorDelegate, element: Element);
|
|
10
|
-
start(): void;
|
|
11
|
-
stop(): void;
|
|
12
|
-
clickBubbled: (event: Event) => void;
|
|
13
|
-
linkClicked: EventListener;
|
|
14
|
-
willVisit: EventListener;
|
|
15
|
-
respondsToEventTarget(target: EventTarget | null): boolean | null;
|
|
16
|
-
}
|