@very-simple/ajax 0.5.1 → 0.5.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/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
15
  currentLoadController?.abort("cancel");
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",
@@ -149,6 +153,7 @@ var visit = async (url, {
149
153
  isBackForward = false,
150
154
  morphHeads = globalConfig.morphHeads,
151
155
  merge: mergeStrategy = globalConfig.merge,
156
+ loadingDelay = globalConfig.loadingDelay,
152
157
  autoFocus = true
153
158
  } = {}) => {
154
159
  prevUrl = currentUrl;
@@ -159,7 +164,7 @@ var visit = async (url, {
159
164
  newDocument = cache.get(url)?.cloneNode(true);
160
165
  }
161
166
  const regions = findRegions(document);
162
- newDocument ??= await load(url, Array.from(regions.keys()));
167
+ newDocument ??= await load(url, Array.from(regions.keys()), { loadingDelay });
163
168
  if (!newDocument) return;
164
169
  if (emitEvents) emit("before-render", { url, prevUrl, newDocument });
165
170
  if (!isBackForward) {
@@ -207,11 +212,13 @@ var findRegions = (doc) => {
207
212
  var start = ({
208
213
  watchHistory = true,
209
214
  merge: merge2 = "replace",
210
- morphHeads = true
215
+ morphHeads = true,
216
+ loadingDelay = 500
211
217
  } = {}) => {
212
218
  globalConfig.merge = merge2;
213
219
  globalConfig.watchHistory = watchHistory;
214
220
  globalConfig.morphHeads = morphHeads;
221
+ globalConfig.loadingDelay = loadingDelay;
215
222
  if (watchHistory) {
216
223
  window.addEventListener("popstate", () => {
217
224
  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.2",
4
4
  "description": "A very simple turbolinks inspired library",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",