@very-simple/ajax 1.0.0-beta.4 → 1.0.0-beta.5

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
@@ -74,6 +74,11 @@ type EventMap = {
74
74
  'before-visit': Payload;
75
75
  'before-swap': Payload;
76
76
  'after-swap': Payload;
77
+ 'progress-start': Record<string, never>;
78
+ progress: {
79
+ progress: number;
80
+ };
81
+ 'progress-end': Record<string, never>;
77
82
  };
78
83
  type DomEventMap = {
79
84
  [K in keyof EventMap as `ajax:${K & string}`]: CustomEvent<EventMap[K]>;
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ var parser = new DOMParser();
15
15
  var currentLoadController;
16
16
  var progress = 0;
17
17
  var trickleInterval;
18
+ var emit = (type, payload) => document.dispatchEvent(new CustomEvent(`ajax:${type}`, { detail: payload }));
18
19
  var cache = /* @__PURE__ */ new Map();
19
20
  var load = async (url, regions, options) => {
20
21
  let progressDelayTimeout;
@@ -23,8 +24,7 @@ var load = async (url, regions, options) => {
23
24
  currentLoadController = new AbortController();
24
25
  setProgress(0);
25
26
  progressDelayTimeout = window.setTimeout(() => {
26
- toggleLoading(true);
27
- toggleProgress(true);
27
+ emit("progress-start", {});
28
28
  startTrickle();
29
29
  }, options.loadingDelay);
30
30
  const response = await fetch(url, {
@@ -50,8 +50,7 @@ var load = async (url, regions, options) => {
50
50
  clearTimeout(progressDelayTimeout);
51
51
  stopTrickle();
52
52
  setProgress(1);
53
- toggleLoading(false);
54
- setTimeout(() => toggleProgress(false), options.progressHideDelay);
53
+ setTimeout(() => emit("progress-end", {}), options.progressHideDelay);
55
54
  }
56
55
  };
57
56
  var parseHtml = (html) => parser.parseFromString(html, "text/html");
@@ -63,13 +62,8 @@ var startTrickle = () => trickleInterval = window.setInterval(trickle, 300);
63
62
  var stopTrickle = () => clearInterval(trickleInterval);
64
63
  var setProgress = (value) => {
65
64
  progress = value;
66
- document.documentElement.style.setProperty(
67
- "--ajax-progress",
68
- `${Math.round(value * 1e4) / 100}%`
69
- );
65
+ emit("progress", { progress: value });
70
66
  };
71
- var toggleProgress = (state) => document.documentElement.toggleAttribute(`${config.prefix}progress`, state);
72
- var toggleLoading = (state) => document.documentElement.toggleAttribute(`${config.prefix}loading`, state);
73
67
 
74
68
  // src/merge.ts
75
69
  import { Idiomorph } from "idiomorph/dist/idiomorph.esm.js";
@@ -205,7 +199,7 @@ var normalizeUrl = (url) => {
205
199
  return url;
206
200
  }
207
201
  };
208
- var emit = (type, payload) => {
202
+ var emit2 = (type, payload) => {
209
203
  const waiting = [];
210
204
  const waitUntil = (promise) => waiting.push(Promise.resolve(promise));
211
205
  payload = { ...payload, waitUntil };
@@ -239,7 +233,7 @@ var visit = async (url, {
239
233
  currentVisitController = new AbortController();
240
234
  const { signal } = currentVisitController;
241
235
  if (url === currentUrl) historyMode = "none";
242
- await emit("before-visit", {
236
+ await emit2("before-visit", {
243
237
  from: { url: fromUrl, state: fromState, document },
244
238
  to: { url, state },
245
239
  signal,
@@ -266,7 +260,7 @@ var visit = async (url, {
266
260
  else if (historyMode === "push") history.pushState(state, "", url);
267
261
  const from = { url: fromUrl, state: fromState, document };
268
262
  const to = { url, state, document: newDocument };
269
- await emit("before-swap", { from, to, isBackForward, signal });
263
+ await emit2("before-swap", { from, to, isBackForward, signal });
270
264
  if (signal.aborted) return;
271
265
  const getMergeStrategy = (oldEl, newEl) => newEl.getAttribute(`${config.prefix}merge`) || oldEl.getAttribute(`${config.prefix}merge`) || mergeStrategy;
272
266
  let autoFocusEl;
@@ -319,18 +313,18 @@ var visit = async (url, {
319
313
  await document.startViewTransition(async () => {
320
314
  if (morphHeads) Idiomorph2.morph(document.head, newDocument.head);
321
315
  await mergeRegions();
322
- await emit("after-swap", { from, to, isBackForward, signal });
316
+ await emit2("after-swap", { from, to, isBackForward, signal });
323
317
  applyScrollBehavior();
324
318
  }).ready;
325
319
  } else {
326
320
  if (morphHeads) Idiomorph2.morph(document.head, newDocument.head);
327
321
  await mergeRegions();
328
- await emit("after-swap", { from, to, isBackForward, signal });
322
+ await emit2("after-swap", { from, to, isBackForward, signal });
329
323
  applyScrollBehavior();
330
324
  }
331
325
  if (signal.aborted) return;
332
326
  if (autoFocus) autoFocusEl?.focus({ preventScroll: true });
333
- emit("load", { from, to, isBackForward });
327
+ emit2("load", { from, to, isBackForward });
334
328
  };
335
329
 
336
330
  // src/intercept.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@very-simple/ajax",
3
- "version": "1.0.0-beta.4",
3
+ "version": "1.0.0-beta.5",
4
4
  "description": "A very simple turbolinks inspired ajax library",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",