@alignable/bifrost 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/chunk-4DL7N7Y5.js +17 -0
  2. package/dist/chunk-4DL7N7Y5.js.map +1 -0
  3. package/dist/chunk-ABW2IXO4.js +936 -0
  4. package/dist/chunk-ABW2IXO4.js.map +1 -0
  5. package/dist/chunk-AIK6VRNF.js +20 -0
  6. package/dist/chunk-AIK6VRNF.js.map +1 -0
  7. package/dist/chunk-CXNEKD7R.js +9 -0
  8. package/dist/chunk-CXNEKD7R.js.map +1 -0
  9. package/dist/chunk-EYYCKU6F.js +11 -0
  10. package/dist/chunk-EYYCKU6F.js.map +1 -0
  11. package/dist/chunk-LEUA73GT.js +26 -0
  12. package/dist/chunk-LEUA73GT.js.map +1 -0
  13. package/dist/chunk-RQ34EW7E.js +13 -0
  14. package/dist/chunk-RQ34EW7E.js.map +1 -0
  15. package/dist/index.d.ts +14 -8
  16. package/dist/index.js +8 -1
  17. package/dist/index.js.map +1 -0
  18. package/dist/internal-fe09ebc7.d.ts +72 -0
  19. package/dist/proxy/pages/+config.d.ts +2 -2
  20. package/dist/proxy/pages/+config.js +17 -12
  21. package/dist/proxy/pages/+config.js.map +1 -0
  22. package/dist/proxy/pages/Page.d.ts +3 -2
  23. package/dist/proxy/pages/Page.js +7 -3
  24. package/dist/proxy/pages/Page.js.map +1 -0
  25. package/dist/proxy/pages/onBeforeRender.d.ts +9 -3
  26. package/dist/proxy/pages/onBeforeRender.js +9 -5
  27. package/dist/proxy/pages/onBeforeRender.js.map +1 -0
  28. package/dist/proxy/pages/onRenderClient.d.ts +9 -3
  29. package/dist/proxy/pages/onRenderClient.js +59 -51
  30. package/dist/proxy/pages/onRenderClient.js.map +1 -0
  31. package/dist/proxy/pages/onRenderHtml.d.ts +11 -4
  32. package/dist/proxy/pages/onRenderHtml.js +54 -39
  33. package/dist/proxy/pages/onRenderHtml.js.map +1 -0
  34. package/dist/proxy/pages/restorationVisit/+config.d.ts +2 -2
  35. package/dist/proxy/pages/restorationVisit/+config.js +19 -14
  36. package/dist/proxy/pages/restorationVisit/+config.js.map +1 -0
  37. package/dist/proxy/pages/restorationVisit/onRenderClient.d.ts +9 -3
  38. package/dist/proxy/pages/restorationVisit/onRenderClient.js +49 -39
  39. package/dist/proxy/pages/restorationVisit/onRenderClient.js.map +1 -0
  40. package/dist/proxy/pages/restorationVisit/route.d.ts +3 -2
  41. package/dist/proxy/pages/restorationVisit/route.js +7 -3
  42. package/dist/proxy/pages/restorationVisit/route.js.map +1 -0
  43. package/dist/renderer/+config.d.ts +2 -5
  44. package/dist/renderer/+config.js +25 -14
  45. package/dist/renderer/+config.js.map +1 -0
  46. package/dist/renderer/_error/Page.d.ts +2 -3
  47. package/dist/renderer/_error/Page.js +11 -12
  48. package/dist/renderer/_error/Page.js.map +1 -0
  49. package/dist/renderer/getConfigOrPageContext.d.ts +9 -4
  50. package/dist/renderer/getConfigOrPageContext.js +7 -6
  51. package/dist/renderer/getConfigOrPageContext.js.map +1 -0
  52. package/dist/renderer/onBeforeRoute.d.ts +3 -2
  53. package/dist/renderer/onBeforeRoute.js +28 -20
  54. package/dist/renderer/onBeforeRoute.js.map +1 -0
  55. package/dist/renderer/onRenderClient.d.ts +9 -3
  56. package/dist/renderer/onRenderClient.js +53 -38
  57. package/dist/renderer/onRenderClient.js.map +1 -0
  58. package/dist/renderer/onRenderHtml.d.ts +11 -4
  59. package/dist/renderer/onRenderHtml.js +43 -23
  60. package/dist/renderer/onRenderHtml.js.map +1 -0
  61. package/dist/renderer/usePageContext.d.ts +7 -4
  62. package/dist/renderer/usePageContext.js +10 -21
  63. package/dist/renderer/usePageContext.js.map +1 -0
  64. package/dist/renderer/utils/buildHead.d.ts +9 -4
  65. package/dist/renderer/utils/buildHead.js +7 -10
  66. package/dist/renderer/utils/buildHead.js.map +1 -0
  67. package/dist/renderer/utils/getGlobalObject.d.ts +3 -2
  68. package/dist/renderer/utils/getGlobalObject.js +7 -8
  69. package/dist/renderer/utils/getGlobalObject.js.map +1 -0
  70. package/package.json +5 -4
  71. package/dist/index.d.ts.map +0 -1
  72. package/dist/lib/PageShell.d.ts +0 -7
  73. package/dist/lib/PageShell.d.ts.map +0 -1
  74. package/dist/lib/PageShell.js +0 -6
  75. package/dist/lib/getElementAttributes.d.ts +0 -2
  76. package/dist/lib/getElementAttributes.d.ts.map +0 -1
  77. package/dist/lib/getElementAttributes.js +0 -7
  78. package/dist/lib/renderReact.d.ts +0 -3
  79. package/dist/lib/renderReact.d.ts.map +0 -1
  80. package/dist/lib/renderReact.js +0 -14
  81. package/dist/lib/turbolinks/adapter.d.ts +0 -17
  82. package/dist/lib/turbolinks/adapter.d.ts.map +0 -1
  83. package/dist/lib/turbolinks/adapter.js +0 -1
  84. package/dist/lib/turbolinks/browser_adapter.d.ts +0 -28
  85. package/dist/lib/turbolinks/browser_adapter.d.ts.map +0 -1
  86. package/dist/lib/turbolinks/browser_adapter.js +0 -68
  87. package/dist/lib/turbolinks/controller.d.ts +0 -75
  88. package/dist/lib/turbolinks/controller.d.ts.map +0 -1
  89. package/dist/lib/turbolinks/controller.js +0 -219
  90. package/dist/lib/turbolinks/head_details.d.ts +0 -24
  91. package/dist/lib/turbolinks/head_details.d.ts.map +0 -1
  92. package/dist/lib/turbolinks/head_details.js +0 -97
  93. package/dist/lib/turbolinks/index.d.ts +0 -14
  94. package/dist/lib/turbolinks/index.d.ts.map +0 -1
  95. package/dist/lib/turbolinks/index.js +0 -55
  96. package/dist/lib/turbolinks/location.d.ts +0 -23
  97. package/dist/lib/turbolinks/location.d.ts.map +0 -1
  98. package/dist/lib/turbolinks/location.js +0 -75
  99. package/dist/lib/turbolinks/lruCache.d.ts +0 -8
  100. package/dist/lib/turbolinks/lruCache.d.ts.map +0 -1
  101. package/dist/lib/turbolinks/lruCache.js +0 -25
  102. package/dist/lib/turbolinks/mergeHead.d.ts +0 -2
  103. package/dist/lib/turbolinks/mergeHead.d.ts.map +0 -1
  104. package/dist/lib/turbolinks/mergeHead.js +0 -120
  105. package/dist/lib/turbolinks/progress_bar.d.ts +0 -24
  106. package/dist/lib/turbolinks/progress_bar.d.ts.map +0 -1
  107. package/dist/lib/turbolinks/progress_bar.js +0 -99
  108. package/dist/lib/turbolinks/types.d.ts +0 -7
  109. package/dist/lib/turbolinks/types.d.ts.map +0 -1
  110. package/dist/lib/turbolinks/types.js +0 -3
  111. package/dist/lib/turbolinks/util.d.ts +0 -18
  112. package/dist/lib/turbolinks/util.d.ts.map +0 -1
  113. package/dist/lib/turbolinks/util.js +0 -125
  114. package/dist/lib/turbolinks/visit.d.ts +0 -55
  115. package/dist/lib/turbolinks/visit.d.ts.map +0 -1
  116. package/dist/lib/turbolinks/visit.js +0 -163
  117. package/dist/proxy/pages/+config.d.ts.map +0 -1
  118. package/dist/proxy/pages/Page.d.ts.map +0 -1
  119. package/dist/proxy/pages/onBeforeRender.d.ts.map +0 -1
  120. package/dist/proxy/pages/onRenderClient.d.ts.map +0 -1
  121. package/dist/proxy/pages/onRenderHtml.d.ts.map +0 -1
  122. package/dist/proxy/pages/restorationVisit/+config.d.ts.map +0 -1
  123. package/dist/proxy/pages/restorationVisit/onRenderClient.d.ts.map +0 -1
  124. package/dist/proxy/pages/restorationVisit/route.d.ts.map +0 -1
  125. package/dist/renderer/+config.d.ts.map +0 -1
  126. package/dist/renderer/_error/Page.d.ts.map +0 -1
  127. package/dist/renderer/getConfigOrPageContext.d.ts.map +0 -1
  128. package/dist/renderer/onBeforeRoute.d.ts.map +0 -1
  129. package/dist/renderer/onRenderClient.d.ts.map +0 -1
  130. package/dist/renderer/onRenderHtml.d.ts.map +0 -1
  131. package/dist/renderer/usePageContext.d.ts.map +0 -1
  132. package/dist/renderer/utils/buildHead.d.ts.map +0 -1
  133. package/dist/renderer/utils/getGlobalObject.d.ts.map +0 -1
  134. package/dist/types/internal.d.ts +0 -64
  135. package/dist/types/internal.d.ts.map +0 -1
  136. package/dist/types/internal.js +0 -1
@@ -1,75 +0,0 @@
1
- import { LruCache } from "./lruCache";
2
- import { Adapter } from "./adapter";
3
- import { Location, Locatable } from "./location";
4
- import { Action } from "./types";
5
- import { Visit } from "./visit";
6
- export type TimingData = {};
7
- export type VisitOptions = {
8
- action: Action;
9
- };
10
- export interface Snapshot {
11
- bodyEl: Element;
12
- headEl: Element;
13
- pageContext: any;
14
- }
15
- export declare class Controller {
16
- adapter: Adapter;
17
- cache: LruCache<Snapshot>;
18
- currentVisit?: Visit;
19
- enabled: boolean;
20
- lastRenderedLocation?: Location;
21
- location: Location;
22
- progressBarDelay: number;
23
- restorationIdentifier: string;
24
- started: boolean;
25
- pageContext: any;
26
- start(): void;
27
- disable(): void;
28
- stop(): void;
29
- clearCache(): void;
30
- visit(location: Locatable, options?: Partial<VisitOptions>): void;
31
- startVisitToLocationWithAction(location: Locatable, action: Action, restorationIdentifier?: string): void;
32
- setProgressBarDelay(delay: number): void;
33
- historyPoppedToLocationWithRestorationIdentifier(location: Locatable, restorationIdentifier: string): void;
34
- getCachedSnapshotForLocation(location: Locatable): Snapshot | undefined;
35
- shouldCacheSnapshot(): boolean | null;
36
- cacheSnapshot(): void;
37
- viewInvalidated(): void;
38
- viewWillRender(): void;
39
- viewRendered(): void;
40
- clickCaptured: () => void;
41
- clickBubbled: (event: MouseEvent) => void;
42
- applicationAllowsFollowingLinkToLocation(link: Element, location: Location): boolean;
43
- applicationAllowsVisitingLocation(location: Location): boolean;
44
- notifyApplicationAfterClickingLinkToLocation(link: Element, location: Location): Event & {
45
- data: any;
46
- };
47
- notifyApplicationBeforeVisitingLocation(location: Location): Event & {
48
- data: any;
49
- };
50
- notifyApplicationAfterVisitingLocation(location: Location): Event & {
51
- data: any;
52
- };
53
- notifyApplicationBeforeCachingSnapshot(): Event & {
54
- data: any;
55
- };
56
- notifyApplicationBeforeRender(): Event & {
57
- data: any;
58
- };
59
- notifyApplicationAfterRender(): Event & {
60
- data: any;
61
- };
62
- notifyApplicationAfterPageLoad(timing?: TimingData): Event & {
63
- data: any;
64
- };
65
- startVisit(location: Location, action: Action): void;
66
- createVisit(location: Location, action: Action): Visit;
67
- visitCompleted(visit: Visit): void;
68
- clickEventIsSignificant(event: MouseEvent): boolean;
69
- getVisitableLinkForTarget(target: EventTarget | null): Element | null | undefined;
70
- getVisitableLocationForLink(link: Element): Location | undefined;
71
- getActionForLink(link: Element): Action;
72
- elementIsVisitable(element: Element): boolean;
73
- locationIsVisitable(location: Location): false | RegExpMatchArray | null;
74
- }
75
- //# sourceMappingURL=controller.d.ts.map
@@ -1 +0,0 @@
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,219 +0,0 @@
1
- import { LruCache } from "./lruCache";
2
- import { BrowserAdapter } from "./browser_adapter";
3
- import { Location } from "./location";
4
- import { isAction } from "./types";
5
- import { closest, defer, dispatch, uuid } from "./util";
6
- import { Visit } from "./visit";
7
- export class Controller {
8
- constructor() {
9
- this.adapter = new BrowserAdapter(this);
10
- this.cache = new LruCache(10);
11
- this.enabled = true;
12
- this.progressBarDelay = 500;
13
- this.started = false;
14
- // Event handlers
15
- this.clickCaptured = () => {
16
- document.body.removeEventListener("click", this.clickBubbled, false);
17
- document.body.addEventListener("click", this.clickBubbled, false);
18
- };
19
- this.clickBubbled = (event) => {
20
- if (this.enabled && this.clickEventIsSignificant(event)) {
21
- const link = this.getVisitableLinkForTarget(event.target);
22
- if (link) {
23
- const location = this.getVisitableLocationForLink(link);
24
- if (location &&
25
- this.applicationAllowsFollowingLinkToLocation(link, location)) {
26
- event.preventDefault();
27
- event.stopPropagation();
28
- const action = this.getActionForLink(link);
29
- this.visit(location, { action });
30
- }
31
- }
32
- }
33
- };
34
- }
35
- start() {
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;
43
- this.started = true;
44
- this.enabled = true;
45
- }
46
- }
47
- disable() {
48
- this.enabled = false;
49
- }
50
- stop() {
51
- if (this.started) {
52
- document.body.removeEventListener("click", this.clickCaptured, true);
53
- this.started = false;
54
- }
55
- }
56
- clearCache() {
57
- this.cache = new LruCache(10);
58
- }
59
- visit(location, options = {}) {
60
- location = Location.wrap(location);
61
- if (this.applicationAllowsVisitingLocation(location)) {
62
- if (this.locationIsVisitable(location)) {
63
- const action = options.action || "advance";
64
- this.adapter.visitProposedToLocationWithAction(location, action);
65
- }
66
- else {
67
- window.location.href = location.toString();
68
- }
69
- }
70
- }
71
- startVisitToLocationWithAction(location, action, restorationIdentifier) {
72
- this.startVisit(Location.wrap(location), action);
73
- }
74
- setProgressBarDelay(delay) {
75
- this.progressBarDelay = delay;
76
- }
77
- // History delegate
78
- historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {
79
- if (this.enabled) {
80
- this.location = Location.wrap(location);
81
- this.restorationIdentifier = restorationIdentifier;
82
- this.startVisit(this.location, "restore");
83
- }
84
- else {
85
- this.adapter.pageInvalidated();
86
- }
87
- }
88
- // Snapshot cache
89
- getCachedSnapshotForLocation(location) {
90
- return this.cache.get(Location.wrap(location).toCacheKey());
91
- }
92
- shouldCacheSnapshot() {
93
- return (document.body.querySelector("#proxied-body") &&
94
- document.head
95
- .querySelector("meta[name='turbolinks-no-cache']")
96
- ?.getAttribute("content") != "no-cache");
97
- }
98
- cacheSnapshot() {
99
- if (this.shouldCacheSnapshot()) {
100
- this.notifyApplicationBeforeCachingSnapshot();
101
- const snapshot = {
102
- bodyEl: document.body.cloneNode(true),
103
- headEl: document.head.cloneNode(true),
104
- pageContext: this.pageContext,
105
- };
106
- const location = this.lastRenderedLocation || Location.currentLocation;
107
- defer(() => this.cache.put(location.toCacheKey(), snapshot));
108
- }
109
- }
110
- // View
111
- viewInvalidated() {
112
- this.adapter.pageInvalidated();
113
- }
114
- viewWillRender() {
115
- this.notifyApplicationBeforeRender();
116
- }
117
- viewRendered() {
118
- this.lastRenderedLocation = this.currentVisit.location;
119
- this.notifyApplicationAfterRender();
120
- }
121
- // Application events
122
- applicationAllowsFollowingLinkToLocation(link, location) {
123
- const event = this.notifyApplicationAfterClickingLinkToLocation(link, location);
124
- return !event.defaultPrevented;
125
- }
126
- applicationAllowsVisitingLocation(location) {
127
- const event = this.notifyApplicationBeforeVisitingLocation(location);
128
- return !event.defaultPrevented;
129
- }
130
- notifyApplicationAfterClickingLinkToLocation(link, location) {
131
- return dispatch("turbolinks:click", {
132
- target: link,
133
- data: { url: location.absoluteURL },
134
- cancelable: true,
135
- });
136
- }
137
- notifyApplicationBeforeVisitingLocation(location) {
138
- return dispatch("turbolinks:before-visit", {
139
- data: { url: location.absoluteURL },
140
- cancelable: true,
141
- });
142
- }
143
- notifyApplicationAfterVisitingLocation(location) {
144
- return dispatch("turbolinks:visit", {
145
- data: { url: location.absoluteURL },
146
- });
147
- }
148
- notifyApplicationBeforeCachingSnapshot() {
149
- return dispatch("turbolinks:before-cache");
150
- }
151
- notifyApplicationBeforeRender() {
152
- return dispatch("turbolinks:before-render");
153
- }
154
- notifyApplicationAfterRender() {
155
- return dispatch("turbolinks:render");
156
- }
157
- notifyApplicationAfterPageLoad(timing = {}) {
158
- return dispatch("turbolinks:load", {
159
- data: { url: this.location.absoluteURL, timing },
160
- });
161
- }
162
- // Private
163
- startVisit(location, action) {
164
- if (this.currentVisit) {
165
- this.currentVisit.cancel();
166
- }
167
- this.currentVisit = this.createVisit(location, action);
168
- this.currentVisit.start();
169
- this.notifyApplicationAfterVisitingLocation(location);
170
- }
171
- createVisit(location, action) {
172
- const visit = new Visit(this, location, action);
173
- visit.referrer = this.location;
174
- if (action === "restore") {
175
- // dont issue navigate() because VPS already did.
176
- visit.requestInFlight = true;
177
- }
178
- return visit;
179
- }
180
- visitCompleted(visit) {
181
- this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());
182
- }
183
- clickEventIsSignificant(event) {
184
- return !((event.target && event.target.isContentEditable) ||
185
- event.defaultPrevented ||
186
- event.which > 1 ||
187
- event.altKey ||
188
- event.ctrlKey ||
189
- event.metaKey ||
190
- event.shiftKey);
191
- }
192
- getVisitableLinkForTarget(target) {
193
- if (target instanceof Element && this.elementIsVisitable(target)) {
194
- return closest(target, "a[href]:not([target]):not([download])");
195
- }
196
- }
197
- getVisitableLocationForLink(link) {
198
- const location = new Location(link.getAttribute("href") || "");
199
- if (this.locationIsVisitable(location)) {
200
- return location;
201
- }
202
- }
203
- getActionForLink(link) {
204
- const action = link.getAttribute("data-turbolinks-action");
205
- return isAction(action) ? action : "advance";
206
- }
207
- elementIsVisitable(element) {
208
- const container = closest(element, "[data-turbolinks]");
209
- if (container) {
210
- return container.getAttribute("data-turbolinks") != "false";
211
- }
212
- else {
213
- return true;
214
- }
215
- }
216
- locationIsVisitable(location) {
217
- return location.isPrefixedBy(new Location("/")) && location.isHTML();
218
- }
219
- }
@@ -1,24 +0,0 @@
1
- type ElementDetailMap = {
2
- [outerHTML: string]: ElementDetails;
3
- };
4
- type ElementDetails = {
5
- type?: ElementType;
6
- tracked: boolean;
7
- elements: Element[];
8
- };
9
- type ElementType = "script" | "stylesheet";
10
- export declare class HeadDetails {
11
- readonly detailsByOuterHTML: ElementDetailMap;
12
- static fromHeadElement(headElement: HTMLHeadElement | null): HeadDetails;
13
- static fromHeadString(head: string): HeadDetails;
14
- constructor(children: Element[]);
15
- getTrackedElementSignature(): string;
16
- getScriptElementsNotInDetails(headDetails: HeadDetails): Element[];
17
- getStylesheetElementsNotInDetails(headDetails: HeadDetails): Element[];
18
- getElementsMatchingTypeNotInDetails(matchedType: ElementType, headDetails: HeadDetails): Element[];
19
- getProvisionalElements(): Element[];
20
- getMetaValue(name: string): string | null;
21
- findMetaElementByName(name: string): Element | undefined;
22
- }
23
- export {};
24
- //# sourceMappingURL=head_details.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,97 +0,0 @@
1
- import { array } from "./util";
2
- export class HeadDetails {
3
- static fromHeadElement(headElement) {
4
- const children = headElement ? array(headElement.children) : [];
5
- return new this(children);
6
- }
7
- static fromHeadString(head) {
8
- const element = document.createElement("head");
9
- element.innerHTML = head;
10
- return this.fromHeadElement(element);
11
- }
12
- constructor(children) {
13
- this.detailsByOuterHTML = children.reduce((result, element) => {
14
- const { outerHTML } = element;
15
- const details = outerHTML in result
16
- ? result[outerHTML]
17
- : {
18
- type: elementType(element),
19
- tracked: elementIsTracked(element),
20
- elements: [],
21
- };
22
- return {
23
- ...result,
24
- [outerHTML]: {
25
- ...details,
26
- elements: [...details.elements, element],
27
- },
28
- };
29
- }, {});
30
- }
31
- getTrackedElementSignature() {
32
- return Object.keys(this.detailsByOuterHTML)
33
- .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)
34
- .join("");
35
- }
36
- getScriptElementsNotInDetails(headDetails) {
37
- return this.getElementsMatchingTypeNotInDetails("script", headDetails);
38
- }
39
- getStylesheetElementsNotInDetails(headDetails) {
40
- return this.getElementsMatchingTypeNotInDetails("stylesheet", headDetails);
41
- }
42
- getElementsMatchingTypeNotInDetails(matchedType, headDetails) {
43
- return Object.keys(this.detailsByOuterHTML)
44
- .filter((outerHTML) => !(outerHTML in headDetails.detailsByOuterHTML))
45
- .map((outerHTML) => this.detailsByOuterHTML[outerHTML])
46
- .filter(({ type }) => type == matchedType)
47
- .map(({ elements: [element] }) => element);
48
- }
49
- getProvisionalElements() {
50
- return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {
51
- const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];
52
- if (type == null && !tracked) {
53
- return [...result, ...elements];
54
- }
55
- else if (elements.length > 1) {
56
- return [...result, ...elements.slice(1)];
57
- }
58
- else {
59
- return result;
60
- }
61
- }, []);
62
- }
63
- getMetaValue(name) {
64
- const element = this.findMetaElementByName(name);
65
- return element ? element.getAttribute("content") : null;
66
- }
67
- findMetaElementByName(name) {
68
- return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {
69
- const { elements: [element], } = this.detailsByOuterHTML[outerHTML];
70
- return elementIsMetaElementWithName(element, name) ? element : result;
71
- }, undefined);
72
- }
73
- }
74
- function elementType(element) {
75
- if (elementIsScript(element)) {
76
- return "script";
77
- }
78
- else if (elementIsStylesheet(element)) {
79
- return "stylesheet";
80
- }
81
- }
82
- function elementIsTracked(element) {
83
- return element.getAttribute("data-turbolinks-track") == "reload";
84
- }
85
- function elementIsScript(element) {
86
- const tagName = element.tagName.toLowerCase();
87
- return tagName == "script";
88
- }
89
- function elementIsStylesheet(element) {
90
- const tagName = element.tagName.toLowerCase();
91
- return (tagName == "style" ||
92
- (tagName == "link" && element.getAttribute("rel") == "stylesheet"));
93
- }
94
- function elementIsMetaElementWithName(element, name) {
95
- const tagName = element.tagName.toLowerCase();
96
- return tagName == "meta" && element.getAttribute("name") == name;
97
- }
@@ -1,14 +0,0 @@
1
- import { Controller, VisitOptions } from "./controller";
2
- import { Locatable } from "./location";
3
- export declare const Turbolinks: {
4
- readonly supported: boolean;
5
- controller: Controller;
6
- visit(location: Locatable, options?: Partial<VisitOptions>): void;
7
- clearCache(): void;
8
- setProgressBarDelay(delay: number): void;
9
- start(): void;
10
- _vpsCachePageContext(pageContext: any): void;
11
- _vpsOnRenderClient(newHead: HTMLHeadElement, trackScripts: boolean, renderBody: () => void): void;
12
- };
13
- export type Turbolinks = typeof Turbolinks;
14
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
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,55 +0,0 @@
1
- import { mergeHead } from "./mergeHead";
2
- import { Controller } from "./controller";
3
- import { activateNewBodyScriptElements, focusFirstAutofocusableElement } from "./util";
4
- const controller = new Controller();
5
- export const Turbolinks = {
6
- get supported() {
7
- return true;
8
- },
9
- controller,
10
- visit(location, options) {
11
- controller.visit(location, options);
12
- },
13
- clearCache() {
14
- controller.clearCache();
15
- },
16
- setProgressBarDelay(delay) {
17
- controller.setProgressBarDelay(delay);
18
- },
19
- start() {
20
- // because this runs after ios hooks, we have to recover. See onRenderHtml
21
- if (window.Turbolinks !== Turbolinks &&
22
- window.Turbolinks.controller.adapter) {
23
- window.Turbolinks.controller.adapter.controller = controller;
24
- controller.adapter = window.Turbolinks.controller.adapter;
25
- }
26
- // Tells vite-plugin-ssr not to do link interception
27
- window._disableAutomaticLinkInterception = true;
28
- window.Turbolinks = Turbolinks;
29
- controller.start();
30
- },
31
- _vpsCachePageContext(pageContext) {
32
- controller.pageContext = pageContext;
33
- },
34
- _vpsOnRenderClient(newHead, trackScripts, renderBody) {
35
- if (controller.currentVisit) {
36
- const { currentVisit } = controller;
37
- // TODO: move to controller?
38
- currentVisit.renderFn = async () => {
39
- const scriptsLoaded = mergeHead(newHead, trackScripts, () => controller.viewInvalidated());
40
- controller.viewWillRender();
41
- renderBody();
42
- await scriptsLoaded;
43
- activateNewBodyScriptElements(Array.from(document.body.querySelectorAll("script")));
44
- focusFirstAutofocusableElement();
45
- controller.viewRendered();
46
- controller.adapter.visitRendered(currentVisit);
47
- };
48
- controller.adapter.visitRequestCompleted(controller.currentVisit);
49
- controller.adapter.visitRequestFinished(controller.currentVisit);
50
- }
51
- else {
52
- console.error("controller.currentVisit should exist when onRenderClient fires");
53
- }
54
- },
55
- };
@@ -1,23 +0,0 @@
1
- export type Locatable = Location | string;
2
- export declare class Location {
3
- static get currentLocation(): Location;
4
- static wrap(locatable: Locatable): Location;
5
- static wrap(locatable?: Locatable | null): Location | undefined;
6
- readonly absoluteURL: string;
7
- readonly requestURL: string;
8
- readonly anchor?: string;
9
- constructor(url: string);
10
- getOrigin(): string;
11
- getPath(): string;
12
- getPathComponents(): string[];
13
- getLastPathComponent(): string;
14
- getExtension(): string;
15
- isHTML(): RegExpMatchArray | null;
16
- isPrefixedBy(location: Location): boolean;
17
- isEqualTo(location?: Location): boolean | undefined;
18
- toCacheKey(): string;
19
- toJSON(): string;
20
- toString(): string;
21
- valueOf(): string;
22
- }
23
- //# sourceMappingURL=location.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/location.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1C,qBAAa,QAAQ;IACnB,MAAM,KAAK,eAAe,aAEzB;IAED,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ;IAC3C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS;IAS/D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEb,GAAG,EAAE,MAAM;IAevB,SAAS;IAIT,OAAO;IAIP,iBAAiB;IAIjB,oBAAoB;IAIpB,YAAY;IAIZ,MAAM;IAIN,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAOzC,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ;IAI7B,UAAU;IAIV,MAAM;IAIN,QAAQ;IAIR,OAAO;CAGR"}
@@ -1,75 +0,0 @@
1
- export class Location {
2
- static get currentLocation() {
3
- return this.wrap(window.location.toString());
4
- }
5
- static wrap(locatable) {
6
- if (typeof locatable == "string") {
7
- return new this(locatable);
8
- }
9
- else if (locatable != null) {
10
- return locatable;
11
- }
12
- }
13
- constructor(url) {
14
- const linkWithAnchor = document.createElement("a");
15
- linkWithAnchor.href = url;
16
- this.absoluteURL = linkWithAnchor.href;
17
- const anchorLength = linkWithAnchor.hash.length;
18
- if (anchorLength < 2) {
19
- this.requestURL = this.absoluteURL;
20
- }
21
- else {
22
- this.requestURL = this.absoluteURL.slice(0, -anchorLength);
23
- this.anchor = linkWithAnchor.hash.slice(1);
24
- }
25
- }
26
- getOrigin() {
27
- return this.absoluteURL.split("/", 3).join("/");
28
- }
29
- getPath() {
30
- return (this.requestURL.match(/\/\/[^/]*(\/[^?;]*)/) || [])[1] || "/";
31
- }
32
- getPathComponents() {
33
- return this.getPath().split("/").slice(1);
34
- }
35
- getLastPathComponent() {
36
- return this.getPathComponents().slice(-1)[0];
37
- }
38
- getExtension() {
39
- return (this.getLastPathComponent().match(/\.[^.]*$/) || [])[0] || "";
40
- }
41
- isHTML() {
42
- return this.getExtension().match(/^(?:|\.(?:htm|html|xhtml))$/);
43
- }
44
- isPrefixedBy(location) {
45
- const prefixURL = getPrefixURL(location);
46
- return (this.isEqualTo(location) || stringStartsWith(this.absoluteURL, prefixURL));
47
- }
48
- isEqualTo(location) {
49
- return location && this.absoluteURL === location.absoluteURL;
50
- }
51
- toCacheKey() {
52
- return this.requestURL;
53
- }
54
- toJSON() {
55
- return this.absoluteURL;
56
- }
57
- toString() {
58
- return this.absoluteURL;
59
- }
60
- valueOf() {
61
- return this.absoluteURL;
62
- }
63
- }
64
- function getPrefixURL(location) {
65
- return addTrailingSlash(location.getOrigin() + location.getPath());
66
- }
67
- function addTrailingSlash(url) {
68
- return stringEndsWith(url, "/") ? url : url + "/";
69
- }
70
- function stringStartsWith(string, prefix) {
71
- return string.slice(0, prefix.length) === prefix;
72
- }
73
- function stringEndsWith(string, suffix) {
74
- return string.slice(-suffix.length) === suffix;
75
- }
@@ -1,8 +0,0 @@
1
- export declare class LruCache<T> {
2
- private values;
3
- private maxEntries;
4
- constructor(maxEntries: number);
5
- get(key: string): T | undefined;
6
- put(key: string, value: T): void;
7
- }
8
- //# sourceMappingURL=lruCache.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,25 +0,0 @@
1
- export class LruCache {
2
- constructor(maxEntries) {
3
- this.values = new Map();
4
- this.maxEntries = maxEntries;
5
- }
6
- get(key) {
7
- const hasKey = this.values.has(key);
8
- let entry;
9
- if (hasKey) {
10
- // peek the entry, re-insert for LRU strategy
11
- entry = this.values.get(key);
12
- this.values.delete(key);
13
- this.values.set(key, entry);
14
- }
15
- return entry;
16
- }
17
- put(key, value) {
18
- if (this.values.size >= this.maxEntries) {
19
- // least-recently used cache eviction strategy
20
- const keyToDelete = this.values.keys().next().value;
21
- this.values.delete(keyToDelete);
22
- }
23
- this.values.set(key, value);
24
- }
25
- }
@@ -1,2 +0,0 @@
1
- export declare function mergeHead(head: HTMLHeadElement, trackScripts: boolean, reload: () => void): Promise<void>;
2
- //# sourceMappingURL=mergeHead.d.ts.map
@@ -1 +0,0 @@
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"}