@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.
Files changed (112) hide show
  1. package/dist/index.d.ts +1 -22
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/lib/PageShell.d.ts.map +1 -1
  4. package/dist/lib/getElementAttributes.d.ts +2 -0
  5. package/dist/lib/getElementAttributes.d.ts.map +1 -0
  6. package/dist/lib/getElementAttributes.js +7 -0
  7. package/dist/lib/turbolinks/browser_adapter.d.ts.map +1 -1
  8. package/dist/lib/turbolinks/browser_adapter.js +1 -4
  9. package/dist/lib/turbolinks/controller.d.ts +18 -44
  10. package/dist/lib/turbolinks/controller.d.ts.map +1 -1
  11. package/dist/lib/turbolinks/controller.js +42 -113
  12. package/dist/lib/turbolinks/head_details.d.ts +1 -0
  13. package/dist/lib/turbolinks/head_details.d.ts.map +1 -1
  14. package/dist/lib/turbolinks/head_details.js +5 -0
  15. package/dist/lib/turbolinks/index.d.ts +3 -3
  16. package/dist/lib/turbolinks/index.d.ts.map +1 -1
  17. package/dist/lib/turbolinks/index.js +18 -18
  18. package/dist/lib/turbolinks/lruCache.d.ts.map +1 -0
  19. package/dist/lib/turbolinks/mergeHead.d.ts +2 -0
  20. package/dist/lib/turbolinks/mergeHead.d.ts.map +1 -0
  21. package/dist/lib/{mergeHead.js → turbolinks/mergeHead.js} +27 -33
  22. package/dist/lib/turbolinks/util.d.ts +4 -0
  23. package/dist/lib/turbolinks/util.d.ts.map +1 -1
  24. package/dist/lib/turbolinks/util.js +40 -0
  25. package/dist/lib/turbolinks/visit.d.ts +5 -23
  26. package/dist/lib/turbolinks/visit.d.ts.map +1 -1
  27. package/dist/lib/turbolinks/visit.js +54 -118
  28. package/dist/proxy/pages/onRenderClient.d.ts.map +1 -1
  29. package/dist/proxy/pages/onRenderClient.js +40 -29
  30. package/dist/proxy/pages/onRenderHtml.d.ts.map +1 -1
  31. package/dist/proxy/pages/onRenderHtml.js +19 -5
  32. package/dist/proxy/pages/restorationVisit/+config.d.ts +2 -0
  33. package/dist/proxy/pages/restorationVisit/+config.d.ts.map +1 -1
  34. package/dist/proxy/pages/restorationVisit/+config.js +3 -0
  35. package/dist/proxy/pages/restorationVisit/onRenderClient.d.ts +3 -0
  36. package/dist/proxy/pages/restorationVisit/onRenderClient.d.ts.map +1 -0
  37. package/dist/proxy/pages/restorationVisit/onRenderClient.js +41 -0
  38. package/dist/renderer/onBeforeRoute.d.ts +1 -6
  39. package/dist/renderer/onBeforeRoute.d.ts.map +1 -1
  40. package/dist/renderer/onBeforeRoute.js +19 -11
  41. package/dist/renderer/onRenderClient.d.ts.map +1 -1
  42. package/dist/renderer/onRenderClient.js +29 -23
  43. package/dist/renderer/onRenderHtml.d.ts.map +1 -1
  44. package/dist/renderer/onRenderHtml.js +12 -16
  45. package/dist/renderer/utils/buildHead.d.ts +4 -0
  46. package/dist/renderer/utils/buildHead.d.ts.map +1 -0
  47. package/dist/renderer/utils/buildHead.js +10 -0
  48. package/dist/types/internal.d.ts +28 -17
  49. package/dist/types/internal.d.ts.map +1 -1
  50. package/package.json +13 -5
  51. package/dist/lib/dispatchTurbolinks.d.ts +0 -28
  52. package/dist/lib/dispatchTurbolinks.d.ts.map +0 -1
  53. package/dist/lib/dispatchTurbolinks.js +0 -5
  54. package/dist/lib/domUtils.d.ts +0 -3
  55. package/dist/lib/domUtils.d.ts.map +0 -1
  56. package/dist/lib/domUtils.js +0 -34
  57. package/dist/lib/getGlobalObject.d.ts +0 -5
  58. package/dist/lib/getGlobalObject.d.ts.map +0 -1
  59. package/dist/lib/getGlobalObject.js +0 -7
  60. package/dist/lib/linkInterceptor.d.ts +0 -2
  61. package/dist/lib/linkInterceptor.d.ts.map +0 -1
  62. package/dist/lib/linkInterceptor.js +0 -74
  63. package/dist/lib/lruCache.d.ts.map +0 -1
  64. package/dist/lib/mergeHead.d.ts +0 -2
  65. package/dist/lib/mergeHead.d.ts.map +0 -1
  66. package/dist/lib/navigateAnywhere.d.ts +0 -3
  67. package/dist/lib/navigateAnywhere.d.ts.map +0 -1
  68. package/dist/lib/navigateAnywhere.js +0 -15
  69. package/dist/lib/snapshots.d.ts +0 -9
  70. package/dist/lib/snapshots.d.ts.map +0 -1
  71. package/dist/lib/snapshots.js +0 -50
  72. package/dist/lib/turbolinks/history.d.ts +0 -22
  73. package/dist/lib/turbolinks/history.d.ts.map +0 -1
  74. package/dist/lib/turbolinks/history.js +0 -60
  75. package/dist/lib/turbolinks/namespace.d.ts +0 -12
  76. package/dist/lib/turbolinks/namespace.d.ts.map +0 -1
  77. package/dist/lib/turbolinks/namespace.js +0 -20
  78. package/dist/lib/turbolinks/passthrough_renderer.d.ts +0 -32
  79. package/dist/lib/turbolinks/passthrough_renderer.d.ts.map +0 -1
  80. package/dist/lib/turbolinks/passthrough_renderer.js +0 -128
  81. package/dist/lib/turbolinks/renderer.d.ts +0 -14
  82. package/dist/lib/turbolinks/renderer.d.ts.map +0 -1
  83. package/dist/lib/turbolinks/renderer.js +0 -28
  84. package/dist/lib/turbolinks/scroll_manager.d.ts +0 -16
  85. package/dist/lib/turbolinks/scroll_manager.d.ts.map +0 -1
  86. package/dist/lib/turbolinks/scroll_manager.js +0 -32
  87. package/dist/lib/turbolinks/snapshot.d.ts +0 -25
  88. package/dist/lib/turbolinks/snapshot.d.ts.map +0 -1
  89. package/dist/lib/turbolinks/snapshot.js +0 -77
  90. package/dist/lib/turbolinks/snapshot_cache.d.ts +0 -18
  91. package/dist/lib/turbolinks/snapshot_cache.d.ts.map +0 -1
  92. package/dist/lib/turbolinks/snapshot_cache.js +0 -42
  93. package/dist/lib/turbolinks/snapshot_renderer copy.d.ts +0 -45
  94. package/dist/lib/turbolinks/snapshot_renderer copy.d.ts.map +0 -1
  95. package/dist/lib/turbolinks/snapshot_renderer copy.js +0 -179
  96. package/dist/lib/turbolinks/snapshot_renderer.d.ts +0 -43
  97. package/dist/lib/turbolinks/snapshot_renderer.d.ts.map +0 -1
  98. package/dist/lib/turbolinks/snapshot_renderer.js +0 -139
  99. package/dist/lib/turbolinks/view.d.ts +0 -21
  100. package/dist/lib/turbolinks/view.d.ts.map +0 -1
  101. package/dist/lib/turbolinks/view.js +0 -42
  102. package/dist/lib/turbolinks.d.ts +0 -5
  103. package/dist/lib/turbolinks.d.ts.map +0 -1
  104. package/dist/lib/turbolinks.js +0 -14
  105. package/dist/proxy/pages/onPageTransitionStart.d.ts +0 -3
  106. package/dist/proxy/pages/onPageTransitionStart.d.ts.map +0 -1
  107. package/dist/proxy/pages/onPageTransitionStart.js +0 -9
  108. package/dist/renderer/utils/formatMetaObject.d.ts +0 -4
  109. package/dist/renderer/utils/formatMetaObject.d.ts.map +0 -1
  110. package/dist/renderer/utils/formatMetaObject.js +0 -3
  111. /package/dist/lib/{lruCache.d.ts → turbolinks/lruCache.d.ts} +0 -0
  112. /package/dist/lib/{lruCache.js → turbolinks/lruCache.js} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot_renderer copy.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/snapshot_renderer copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAEF,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAK3C,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,YAAY,CAAC;IAGzB,MAAM,CAAC,MAAM,CACX,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,EACxB,eAAe,EAAE,QAAQ,EACzB,WAAW,EAAE,QAAQ,EACrB,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,YAAY;gBAWxB,eAAe,EAAE,QAAQ,EACzB,WAAW,EAAE,QAAQ,EACrB,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,YAAY;IAYpB,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc;IAczD,SAAS;IAmBf,WAAW;IAOX,YAAY;IAIZ,2BAA2B;IAO3B,6BAA6B;IAM7B,yBAAyB,CAAC,eAAe,EAAE,MAAM,IAAI;IAoCrD,oCAAoC;IAMpC,8BAA8B;IAM9B,oCAAoC;IAoBpC,qDAAqD,CACnD,YAAY,EAAE,WAAW,EAAE;IAQ7B,6BAA6B;IAO7B,aAAa;IAOb,8BAA8B;IAO9B,4BAA4B;IAM5B,wBAAwB;IAMxB,iCAAiC;IAIjC,6BAA6B;IAI7B,+BAA+B,IAAI,gBAAgB,EAAE;IAMrD,wBAAwB;CAGzB"}
@@ -1,179 +0,0 @@
1
- import { Renderer } from "./renderer";
2
- import { array, createScriptElement } from "./util";
3
- const allHeadScriptsEverRun = {};
4
- let firstLoad = true;
5
- export class SnapshotRenderer extends Renderer {
6
- // todo: dont need this?
7
- static render(delegate, callback, currentSnapshot, newSnapshot, isPreview, renderBody) {
8
- return new this(currentSnapshot, newSnapshot, isPreview, renderBody).render(delegate, callback);
9
- }
10
- constructor(currentSnapshot, newSnapshot, isPreview, renderBody) {
11
- super();
12
- this.currentSnapshot = currentSnapshot;
13
- this.currentHeadDetails = currentSnapshot.headDetails;
14
- this.newSnapshot = newSnapshot;
15
- this.newHeadDetails = newSnapshot.headDetails;
16
- this.newBody = newSnapshot.bodyElement;
17
- this.isPreview = isPreview;
18
- this.renderBody = renderBody;
19
- }
20
- async render(delegate, callback) {
21
- this.delegate = delegate;
22
- if (this.shouldRender()) {
23
- this.replaceBody();
24
- if (!this.isPreview) {
25
- this.focusFirstAutofocusableElement();
26
- }
27
- await this.mergeHead();
28
- callback();
29
- }
30
- else {
31
- this.invalidateView();
32
- }
33
- }
34
- async mergeHead() {
35
- if (firstLoad) {
36
- // TODO: messy code
37
- for (const [outerHTML, details] of Object.entries(this.currentHeadDetails.detailsByOuterHTML)) {
38
- allHeadScriptsEverRun[outerHTML] = true;
39
- }
40
- }
41
- firstLoad = false;
42
- return new Promise((resolve) => {
43
- this.copyNewHeadStylesheetElements();
44
- this.copyNewHeadScriptElements(resolve);
45
- this.removeCurrentHeadProvisionalElements();
46
- this.copyNewHeadProvisionalElements();
47
- });
48
- }
49
- replaceBody() {
50
- const placeholders = this.relocateCurrentBodyPermanentElements();
51
- this.activateNewBodyScriptElements();
52
- this.assignNewBody(); // todo: react.
53
- this.replacePlaceholderElementsWithClonedPermanentElements(placeholders);
54
- }
55
- shouldRender() {
56
- return this.newSnapshot.isVisitable() && this.trackedElementsAreIdentical();
57
- }
58
- trackedElementsAreIdentical() {
59
- return (this.currentHeadDetails.getTrackedElementSignature() ==
60
- this.newHeadDetails.getTrackedElementSignature());
61
- }
62
- copyNewHeadStylesheetElements() {
63
- for (const element of this.getNewHeadStylesheetElements()) {
64
- document.head.appendChild(element);
65
- }
66
- }
67
- copyNewHeadScriptElements(onScriptsLoaded) {
68
- let blockingLoaded = [];
69
- const dispatch = () => {
70
- this.activateNewBodyScriptElements();
71
- this.focusFirstAutofocusableElement();
72
- onScriptsLoaded();
73
- };
74
- for (const element of this.getNewHeadScriptElements()) {
75
- const runBefore = element.outerHTML in allHeadScriptsEverRun;
76
- if (!runBefore) {
77
- let cb = false;
78
- if (!element.defer && element.src) {
79
- const idx = blockingLoaded.length;
80
- cb = () => {
81
- blockingLoaded[idx] = true;
82
- if (blockingLoaded.every((v) => v)) {
83
- dispatch();
84
- }
85
- };
86
- blockingLoaded.push(false);
87
- }
88
- const script = createScriptElement(element);
89
- if (cb) {
90
- script.addEventListener("load", cb);
91
- }
92
- document.head.appendChild(script);
93
- allHeadScriptsEverRun[element.outerHTML] = true;
94
- }
95
- }
96
- if (blockingLoaded.length === 0) {
97
- // //TODO: raf waits for react to finish... not 100% sure of the reliability
98
- requestAnimationFrame(dispatch);
99
- }
100
- }
101
- removeCurrentHeadProvisionalElements() {
102
- for (const element of this.getCurrentHeadProvisionalElements()) {
103
- document.head.removeChild(element);
104
- }
105
- }
106
- copyNewHeadProvisionalElements() {
107
- for (const element of this.getNewHeadProvisionalElements()) {
108
- document.head.appendChild(element);
109
- }
110
- }
111
- relocateCurrentBodyPermanentElements() {
112
- return this.getCurrentBodyPermanentElements().reduce((placeholders, permanentElement) => {
113
- const newElement = this.newSnapshot.getPermanentElementById(permanentElement.id);
114
- if (newElement) {
115
- const placeholder = createPlaceholderForPermanentElement(permanentElement);
116
- replaceElementWithElement(permanentElement, placeholder.element);
117
- replaceElementWithElement(newElement, permanentElement);
118
- return [...placeholders, placeholder];
119
- }
120
- else {
121
- return placeholders;
122
- }
123
- }, []);
124
- }
125
- replacePlaceholderElementsWithClonedPermanentElements(placeholders) {
126
- for (const { element, permanentElement } of placeholders) {
127
- const clonedElement = permanentElement.cloneNode(true);
128
- replaceElementWithElement(element, clonedElement);
129
- }
130
- }
131
- activateNewBodyScriptElements() {
132
- for (const inertScriptElement of this.getNewBodyScriptElements()) {
133
- const activatedScriptElement = createScriptElement(inertScriptElement);
134
- replaceElementWithElement(inertScriptElement, activatedScriptElement);
135
- }
136
- }
137
- assignNewBody() {
138
- replaceElementWithElement(document.querySelector("#alignablewebnextjsframe").firstElementChild, this.newBody);
139
- }
140
- focusFirstAutofocusableElement() {
141
- const element = this.newSnapshot.findFirstAutofocusableElement();
142
- if (elementIsFocusable(element)) {
143
- element.focus();
144
- }
145
- }
146
- getNewHeadStylesheetElements() {
147
- return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails);
148
- }
149
- getNewHeadScriptElements() {
150
- return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails);
151
- }
152
- getCurrentHeadProvisionalElements() {
153
- return this.currentHeadDetails.getProvisionalElements();
154
- }
155
- getNewHeadProvisionalElements() {
156
- return this.newHeadDetails.getProvisionalElements();
157
- }
158
- getCurrentBodyPermanentElements() {
159
- return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot);
160
- }
161
- getNewBodyScriptElements() {
162
- return array(this.newBody.querySelectorAll("script"));
163
- }
164
- }
165
- function createPlaceholderForPermanentElement(permanentElement) {
166
- const element = document.createElement("meta");
167
- element.setAttribute("name", "turbolinks-permanent-placeholder");
168
- element.setAttribute("content", permanentElement.id);
169
- return { element, permanentElement };
170
- }
171
- function replaceElementWithElement(fromElement, toElement) {
172
- const parentElement = fromElement.parentElement;
173
- if (parentElement) {
174
- return parentElement.replaceChild(toElement, fromElement);
175
- }
176
- }
177
- function elementIsFocusable(element) {
178
- return element && typeof element.focus == "function";
179
- }
@@ -1,43 +0,0 @@
1
- import { HeadDetails } from "./head_details";
2
- import { RenderCallback, RenderDelegate, Renderer } from "./renderer";
3
- import { Snapshot } from "./snapshot";
4
- export { RenderCallback, RenderDelegate } from "./renderer";
5
- export type PermanentElement = Element & {
6
- id: string;
7
- };
8
- export type Placeholder = {
9
- element: Element;
10
- permanentElement: PermanentElement;
11
- };
12
- export declare class SnapshotRenderer extends Renderer {
13
- readonly delegate: RenderDelegate;
14
- readonly currentSnapshot: Snapshot;
15
- readonly currentHeadDetails: HeadDetails;
16
- readonly newSnapshot: Snapshot;
17
- readonly newHeadDetails: HeadDetails;
18
- readonly newBody: HTMLBodyElement;
19
- readonly isPreview: boolean;
20
- static render(delegate: RenderDelegate, callback: RenderCallback, currentSnapshot: Snapshot, newSnapshot: Snapshot, isPreview: boolean): void;
21
- constructor(delegate: RenderDelegate, currentSnapshot: Snapshot, newSnapshot: Snapshot, isPreview: boolean);
22
- render(callback: RenderCallback): void;
23
- mergeHead(): void;
24
- replaceBody(): void;
25
- shouldRender(): boolean;
26
- trackedElementsAreIdentical(): boolean;
27
- copyNewHeadStylesheetElements(): void;
28
- copyNewHeadScriptElements(): void;
29
- removeCurrentHeadProvisionalElements(): void;
30
- copyNewHeadProvisionalElements(): void;
31
- relocateCurrentBodyPermanentElements(): Placeholder[];
32
- replacePlaceholderElementsWithClonedPermanentElements(placeholders: Placeholder[]): void;
33
- activateNewBodyScriptElements(): void;
34
- assignNewBody(): void;
35
- focusFirstAutofocusableElement(): void;
36
- getNewHeadStylesheetElements(): Element[];
37
- getNewHeadScriptElements(): Element[];
38
- getCurrentHeadProvisionalElements(): Element[];
39
- getNewHeadProvisionalElements(): Element[];
40
- getCurrentBodyPermanentElements(): PermanentElement[];
41
- getNewBodyScriptElements(): HTMLScriptElement[];
42
- }
43
- //# sourceMappingURL=snapshot_renderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot_renderer.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/snapshot_renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B,MAAM,CAAC,MAAM,CACX,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,EACxB,eAAe,EAAE,QAAQ,EACzB,WAAW,EAAE,QAAQ,EACrB,SAAS,EAAE,OAAO;gBAQlB,QAAQ,EAAE,cAAc,EACxB,eAAe,EAAE,QAAQ,EACzB,WAAW,EAAE,QAAQ,EACrB,SAAS,EAAE,OAAO;IAYpB,MAAM,CAAC,QAAQ,EAAE,cAAc;IAe/B,SAAS;IAOT,WAAW;IAOX,YAAY;IAIZ,2BAA2B;IAO3B,6BAA6B;IAM7B,yBAAyB;IAMzB,oCAAoC;IAMpC,8BAA8B;IAM9B,oCAAoC;IAoBpC,qDAAqD,CACnD,YAAY,EAAE,WAAW,EAAE;IAQ7B,6BAA6B;IAQ7B,aAAa;IAOb,8BAA8B;IAO9B,4BAA4B;IAM5B,wBAAwB;IAMxB,iCAAiC;IAIjC,6BAA6B;IAI7B,+BAA+B,IAAI,gBAAgB,EAAE;IAMrD,wBAAwB;CAGzB"}
@@ -1,139 +0,0 @@
1
- import { Renderer } from "./renderer";
2
- import { array } from "./util";
3
- export class SnapshotRenderer extends Renderer {
4
- static render(delegate, callback, currentSnapshot, newSnapshot, isPreview) {
5
- return new this(delegate, currentSnapshot, newSnapshot, isPreview).render(callback);
6
- }
7
- constructor(delegate, currentSnapshot, newSnapshot, isPreview) {
8
- super();
9
- this.delegate = delegate;
10
- this.currentSnapshot = currentSnapshot;
11
- this.currentHeadDetails = currentSnapshot.headDetails;
12
- this.newSnapshot = newSnapshot;
13
- this.newHeadDetails = newSnapshot.headDetails;
14
- this.newBody = newSnapshot.bodyElement;
15
- this.isPreview = isPreview;
16
- }
17
- render(callback) {
18
- if (this.shouldRender()) {
19
- this.mergeHead();
20
- this.renderView(() => {
21
- this.replaceBody();
22
- if (!this.isPreview) {
23
- this.focusFirstAutofocusableElement();
24
- }
25
- callback();
26
- });
27
- }
28
- else {
29
- this.invalidateView();
30
- }
31
- }
32
- mergeHead() {
33
- this.copyNewHeadStylesheetElements();
34
- this.copyNewHeadScriptElements();
35
- this.removeCurrentHeadProvisionalElements();
36
- this.copyNewHeadProvisionalElements();
37
- }
38
- replaceBody() {
39
- const placeholders = this.relocateCurrentBodyPermanentElements();
40
- this.activateNewBodyScriptElements();
41
- this.assignNewBody();
42
- this.replacePlaceholderElementsWithClonedPermanentElements(placeholders);
43
- }
44
- shouldRender() {
45
- return this.newSnapshot.isVisitable() && this.trackedElementsAreIdentical();
46
- }
47
- trackedElementsAreIdentical() {
48
- return (this.currentHeadDetails.getTrackedElementSignature() ==
49
- this.newHeadDetails.getTrackedElementSignature());
50
- }
51
- copyNewHeadStylesheetElements() {
52
- for (const element of this.getNewHeadStylesheetElements()) {
53
- document.head.appendChild(element);
54
- }
55
- }
56
- copyNewHeadScriptElements() {
57
- for (const element of this.getNewHeadScriptElements()) {
58
- document.head.appendChild(this.createScriptElement(element));
59
- }
60
- }
61
- removeCurrentHeadProvisionalElements() {
62
- for (const element of this.getCurrentHeadProvisionalElements()) {
63
- document.head.removeChild(element);
64
- }
65
- }
66
- copyNewHeadProvisionalElements() {
67
- for (const element of this.getNewHeadProvisionalElements()) {
68
- document.head.appendChild(element);
69
- }
70
- }
71
- relocateCurrentBodyPermanentElements() {
72
- return this.getCurrentBodyPermanentElements().reduce((placeholders, permanentElement) => {
73
- const newElement = this.newSnapshot.getPermanentElementById(permanentElement.id);
74
- if (newElement) {
75
- const placeholder = createPlaceholderForPermanentElement(permanentElement);
76
- replaceElementWithElement(permanentElement, placeholder.element);
77
- replaceElementWithElement(newElement, permanentElement);
78
- return [...placeholders, placeholder];
79
- }
80
- else {
81
- return placeholders;
82
- }
83
- }, []);
84
- }
85
- replacePlaceholderElementsWithClonedPermanentElements(placeholders) {
86
- for (const { element, permanentElement } of placeholders) {
87
- const clonedElement = permanentElement.cloneNode(true);
88
- replaceElementWithElement(element, clonedElement);
89
- }
90
- }
91
- activateNewBodyScriptElements() {
92
- for (const inertScriptElement of this.getNewBodyScriptElements()) {
93
- const activatedScriptElement = this.createScriptElement(inertScriptElement);
94
- replaceElementWithElement(inertScriptElement, activatedScriptElement);
95
- }
96
- }
97
- assignNewBody() {
98
- replaceElementWithElement(document.querySelector("#alignablewebnextjsframe").firstElementChild, this.newBody);
99
- }
100
- focusFirstAutofocusableElement() {
101
- const element = this.newSnapshot.findFirstAutofocusableElement();
102
- if (elementIsFocusable(element)) {
103
- element.focus();
104
- }
105
- }
106
- getNewHeadStylesheetElements() {
107
- return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails);
108
- }
109
- getNewHeadScriptElements() {
110
- return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails);
111
- }
112
- getCurrentHeadProvisionalElements() {
113
- return this.currentHeadDetails.getProvisionalElements();
114
- }
115
- getNewHeadProvisionalElements() {
116
- return this.newHeadDetails.getProvisionalElements();
117
- }
118
- getCurrentBodyPermanentElements() {
119
- return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot);
120
- }
121
- getNewBodyScriptElements() {
122
- return array(this.newBody.querySelectorAll("script"));
123
- }
124
- }
125
- function createPlaceholderForPermanentElement(permanentElement) {
126
- const element = document.createElement("meta");
127
- element.setAttribute("name", "turbolinks-permanent-placeholder");
128
- element.setAttribute("content", permanentElement.id);
129
- return { element, permanentElement };
130
- }
131
- function replaceElementWithElement(fromElement, toElement) {
132
- const parentElement = fromElement.parentElement;
133
- if (parentElement) {
134
- return parentElement.replaceChild(toElement, fromElement);
135
- }
136
- }
137
- function elementIsFocusable(element) {
138
- return element && typeof element.focus == "function";
139
- }
@@ -1,21 +0,0 @@
1
- import { Location } from "./location";
2
- import { Snapshot } from "./snapshot";
3
- import { RenderCallback, RenderDelegate } from "./snapshot_renderer";
4
- export type RenderOptions = {
5
- snapshot: Snapshot;
6
- error: string;
7
- isPreview: boolean;
8
- };
9
- export declare class View {
10
- readonly delegate: RenderDelegate;
11
- readonly htmlElement: HTMLHtmlElement;
12
- constructor(delegate: RenderDelegate);
13
- getRootLocation(): Location;
14
- getElementForAnchor(anchor: string): Element | null;
15
- getSnapshot(): Snapshot;
16
- render({ snapshot, error, isPreview }: Partial<RenderOptions>, callback: RenderCallback): void;
17
- markAsPreview(isPreview: boolean | undefined): void;
18
- renderSnapshot(snapshot: Snapshot, isPreview: boolean | undefined, callback: RenderCallback): void;
19
- renderError(error: string | undefined, callback: RenderCallback): void;
20
- }
21
- //# sourceMappingURL=view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../lib/turbolinks/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACL,cAAc,EACd,cAAc,EAEf,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,qBAAa,IAAI;IACf,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,WAAW,kBAA+C;gBAEvD,QAAQ,EAAE,cAAc;IAIpC,eAAe,IAAI,QAAQ;IAI3B,mBAAmB,CAAC,MAAM,EAAE,MAAM;IAIlC,WAAW,IAAI,QAAQ;IAIvB,MAAM,CACJ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,aAAa,CAAC,EACtD,QAAQ,EAAE,cAAc;IAY1B,aAAa,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS;IAQ5C,cAAc,CACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,OAAO,GAAG,SAAS,EAC9B,QAAQ,EAAE,cAAc;IAW1B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,cAAc;CAGhE"}
@@ -1,42 +0,0 @@
1
- import { ErrorRenderer } from "./error_renderer";
2
- import { Snapshot } from "./snapshot";
3
- import { SnapshotRenderer, } from "./snapshot_renderer";
4
- export class View {
5
- constructor(delegate) {
6
- this.htmlElement = document.documentElement;
7
- this.delegate = delegate;
8
- }
9
- getRootLocation() {
10
- return this.getSnapshot().getRootLocation();
11
- }
12
- getElementForAnchor(anchor) {
13
- return this.getSnapshot().getElementForAnchor(anchor);
14
- }
15
- getSnapshot() {
16
- return Snapshot.fromHTMLElement(this.htmlElement);
17
- }
18
- render({ snapshot, error, isPreview }, callback) {
19
- this.markAsPreview(isPreview);
20
- if (snapshot) {
21
- this.renderSnapshot(snapshot, isPreview, callback);
22
- }
23
- else {
24
- this.renderError(error, callback);
25
- }
26
- }
27
- // Private
28
- markAsPreview(isPreview) {
29
- if (isPreview) {
30
- this.htmlElement.setAttribute("data-turbolinks-preview", "");
31
- }
32
- else {
33
- this.htmlElement.removeAttribute("data-turbolinks-preview");
34
- }
35
- }
36
- renderSnapshot(snapshot, isPreview, callback) {
37
- SnapshotRenderer.render(this.delegate, callback, this.getSnapshot(), snapshot, isPreview || false);
38
- }
39
- renderError(error, callback) {
40
- ErrorRenderer.render(this.delegate, callback, error || "");
41
- }
42
- }
@@ -1,5 +0,0 @@
1
- export declare const Turbolinks: {
2
- visit: (location: import("turbolinks/dist/location.js").Locatable, options?: Partial<import("turbolinks/dist/controller.js").VisitOptions> | undefined) => void;
3
- };
4
- export declare function setupTurbolinks(): void;
5
- //# sourceMappingURL=turbolinks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"turbolinks.d.ts","sourceRoot":"","sources":["../../lib/turbolinks.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU;;CAOtB,CAAC;AAEF,wBAAgB,eAAe,SAI9B"}
@@ -1,14 +0,0 @@
1
- import { navigateAnywhere } from "./navigateAnywhere.js";
2
- export const Turbolinks = {
3
- visit: function (location, options) {
4
- const href = location.toString();
5
- navigateAnywhere(href, {
6
- overwriteLastHistoryEntry: options?.action === "replace",
7
- });
8
- },
9
- };
10
- export function setupTurbolinks() {
11
- if (typeof window !== "undefined" && !window.Turbolinks) {
12
- window.Turbolinks = Turbolinks;
13
- }
14
- }
@@ -1,3 +0,0 @@
1
- import { PageContextBuiltInClientWithClientRouting } from "vite-plugin-ssr/types";
2
- export default function onPageTransitionStart(pageContext: PageContextBuiltInClientWithClientRouting): void;
3
- //# sourceMappingURL=onPageTransitionStart.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"onPageTransitionStart.d.ts","sourceRoot":"","sources":["../../../proxy/pages/onPageTransitionStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yCAAyC,EAAE,MAAM,uBAAuB,CAAC;AAIlF,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAC3C,WAAW,EAAE,yCAAyC,QAQvD"}
@@ -1,9 +0,0 @@
1
- import { Visit, getAdapter } from "../../lib/turbolinks";
2
- export default function onPageTransitionStart(pageContext) {
3
- const v = new Visit();
4
- window.Turbolinks.controller.restorationIdentifier = v.restorationIdentifier;
5
- window.Turbolinks.controller.currentVisit = v;
6
- console.log(v.identifier);
7
- getAdapter()?.visitStarted(v);
8
- getAdapter()?.visitRequestStarted(v);
9
- }
@@ -1,4 +0,0 @@
1
- export declare function formatMetaObject(obj: {
2
- [key: string]: string;
3
- }): string;
4
- //# sourceMappingURL=formatMetaObject.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatMetaObject.d.ts","sourceRoot":"","sources":["../../../renderer/utils/formatMetaObject.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,GAAG,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,UAE9D"}
@@ -1,3 +0,0 @@
1
- export function formatMetaObject(obj) {
2
- return Object.entries(obj).map((e) => e.join("=")).join(", ");
3
- }