@very-simple/ajax 0.5.1 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -5,12 +5,14 @@ interface VisitOptions {
5
5
  merge?: MergeStrategy;
6
6
  morphHeads?: boolean;
7
7
  autoFocus?: boolean;
8
+ loadingDelay?: number;
8
9
  }
9
10
  type MergeStrategy = 'replace' | 'morph' | 'before' | 'after' | 'prepend' | 'append' | 'update';
10
11
  interface Config {
11
12
  watchHistory?: boolean;
12
13
  merge?: MergeStrategy;
13
14
  morphHeads?: boolean;
15
+ loadingDelay?: number;
14
16
  }
15
17
  type EventMap = {
16
18
  visit: {
@@ -36,8 +38,8 @@ declare global {
36
38
  }
37
39
 
38
40
  declare const _default: {
39
- start: ({ watchHistory, merge, morphHeads, }?: Config) => void;
40
- visit: (url: string, { action, emitEvents, isBackForward, morphHeads, merge: mergeStrategy, autoFocus, }?: VisitOptions) => Promise<void>;
41
+ start: ({ watchHistory, merge, morphHeads, loadingDelay, }?: Config) => void;
42
+ visit: (url: string, { action, emitEvents, isBackForward, morphHeads, merge: mergeStrategy, loadingDelay, autoFocus, }?: VisitOptions) => Promise<void>;
41
43
  };
42
44
 
43
45
  export { _default as default };
package/dist/index.js CHANGED
@@ -2,19 +2,23 @@
2
2
  var globalConfig = {
3
3
  watchHistory: true,
4
4
  morphHeads: true,
5
- merge: "replace"
5
+ merge: "replace",
6
+ loadingDelay: 500
6
7
  };
7
8
 
8
9
  // src/load.ts
9
10
  var parser = new DOMParser();
10
11
  var currentLoadController;
11
- var load = async (url, regionIds) => {
12
+ var load = async (url, regionIds, options) => {
12
13
  let progressDelayTimeout;
13
14
  try {
14
- currentLoadController?.abort("cancel");
15
+ currentLoadController?.abort();
15
16
  currentLoadController = new AbortController();
16
17
  setProgress(0);
17
- progressDelayTimeout = window.setTimeout(() => toggleLoading(true), 500);
18
+ progressDelayTimeout = window.setTimeout(
19
+ () => toggleLoading(true),
20
+ options.loadingDelay
21
+ );
18
22
  const response = await fetch(url, {
19
23
  headers: {
20
24
  "X-Very-Simple-Request": "true",
@@ -56,7 +60,8 @@ var load = async (url, regionIds) => {
56
60
  return parser.parseFromString(html, "text/html");
57
61
  } catch (e) {
58
62
  setProgress(0);
59
- if (e !== "cancel") {
63
+ const isAbortError = e instanceof DOMException && e.name === "AbortError";
64
+ if (!isAbortError) {
60
65
  window.location.reload();
61
66
  }
62
67
  } finally {
@@ -149,6 +154,7 @@ var visit = async (url, {
149
154
  isBackForward = false,
150
155
  morphHeads = globalConfig.morphHeads,
151
156
  merge: mergeStrategy = globalConfig.merge,
157
+ loadingDelay = globalConfig.loadingDelay,
152
158
  autoFocus = true
153
159
  } = {}) => {
154
160
  prevUrl = currentUrl;
@@ -159,7 +165,7 @@ var visit = async (url, {
159
165
  newDocument = cache.get(url)?.cloneNode(true);
160
166
  }
161
167
  const regions = findRegions(document);
162
- newDocument ??= await load(url, Array.from(regions.keys()));
168
+ newDocument ??= await load(url, Array.from(regions.keys()), { loadingDelay });
163
169
  if (!newDocument) return;
164
170
  if (emitEvents) emit("before-render", { url, prevUrl, newDocument });
165
171
  if (!isBackForward) {
@@ -207,11 +213,13 @@ var findRegions = (doc) => {
207
213
  var start = ({
208
214
  watchHistory = true,
209
215
  merge: merge2 = "replace",
210
- morphHeads = true
216
+ morphHeads = true,
217
+ loadingDelay = 500
211
218
  } = {}) => {
212
219
  globalConfig.merge = merge2;
213
220
  globalConfig.watchHistory = watchHistory;
214
221
  globalConfig.morphHeads = morphHeads;
222
+ globalConfig.loadingDelay = loadingDelay;
215
223
  if (watchHistory) {
216
224
  window.addEventListener("popstate", () => {
217
225
  visit(window.location.pathname + window.location.search, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@very-simple/ajax",
3
- "version": "0.5.1",
3
+ "version": "0.5.3",
4
4
  "description": "A very simple turbolinks inspired library",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",