drab 6.5.1 → 7.0.0
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/announcer/index.d.ts +2 -0
- package/dist/base/index.d.ts +101 -1536
- package/dist/base/index.js +87 -76
- package/dist/contextmenu/index.d.ts +1045 -3
- package/dist/contextmenu/index.js +15 -15
- package/dist/define.d.ts +11 -1
- package/dist/define.js +11 -5
- package/dist/dialog/index.d.ts +1047 -6
- package/dist/dialog/index.js +22 -22
- package/dist/editor/index.d.ts +1047 -12
- package/dist/editor/index.js +36 -36
- package/dist/fullscreen/index.d.ts +1045 -7
- package/dist/fullscreen/index.js +8 -8
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
- package/dist/intersect/index.d.ts +1059 -16
- package/dist/intersect/index.js +26 -33
- package/dist/prefetch/index.d.ts +706 -25
- package/dist/prefetch/index.js +25 -44
- package/dist/share/index.d.ts +1413 -11
- package/dist/share/index.js +50 -18
- package/dist/tablesort/index.d.ts +1390 -5
- package/dist/tablesort/index.js +5 -5
- package/dist/tabs/index.d.ts +702 -4
- package/dist/tabs/index.js +3 -3
- package/dist/types/index.d.ts +29 -0
- package/dist/wakelock/index.d.ts +1390 -6
- package/dist/wakelock/index.js +16 -16
- package/package.json +5 -24
- package/dist/base/define.js +0 -3
- package/dist/copy/define.d.ts +0 -1
- package/dist/copy/define.js +0 -3
- package/dist/copy/index.d.ts +0 -30
- package/dist/copy/index.js +0 -39
- package/dist/youtube/define.d.ts +0 -1
- package/dist/youtube/define.js +0 -3
- package/dist/youtube/index.d.ts +0 -31
- package/dist/youtube/index.js +0 -56
- /package/dist/{base/define.d.ts → types/index.js} +0 -0
package/dist/prefetch/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { Lifecycle, Trigger } from "../base/index.js";
|
2
2
|
/**
|
3
3
|
* The `Prefetch` element can prefetch a url, or enhance the `HTMLAnchorElement` by loading the HTML for a page before it is navigated to. This element speeds up the navigation for multi-page applications (MPAs).
|
4
4
|
*
|
@@ -29,14 +29,14 @@ import { Base } from "../base/index.js";
|
|
29
29
|
*
|
30
30
|
* This element can be deprecated once the Speculation Rules API is supported across browsers. The API will be able to prefetch assets in a similar way with the `source: "document"` and `eagerness` features, and will work without JavaScript.
|
31
31
|
*/
|
32
|
-
export class Prefetch extends
|
33
|
-
#prefetchedUrls =
|
32
|
+
export class Prefetch extends Lifecycle(Trigger()) {
|
33
|
+
#prefetchedUrls = new Set();
|
34
34
|
constructor() {
|
35
35
|
super();
|
36
36
|
}
|
37
37
|
/** When to prefetch the url. */
|
38
38
|
get #strategy() {
|
39
|
-
return
|
39
|
+
return this.getAttribute("strategy");
|
40
40
|
}
|
41
41
|
/** Prerender with the Speculation Rules API. */
|
42
42
|
get #prerender() {
|
@@ -47,16 +47,16 @@ export class Prefetch extends Base {
|
|
47
47
|
return this.getAttribute("url");
|
48
48
|
}
|
49
49
|
/**
|
50
|
-
* Appends `<link rel="prefetch">` or `<script type="speculationrules">`
|
50
|
+
* Appends `<link rel="prefetch">` or `<script type="speculationrules">`
|
51
|
+
* to the head of the document.
|
51
52
|
*
|
52
53
|
* @param options Configuration options.
|
53
54
|
*/
|
54
|
-
|
55
|
-
const { url
|
55
|
+
prefetch(options) {
|
56
|
+
const { url } = options;
|
56
57
|
// if not the current page and not already prefetched
|
57
|
-
if (!(url === window.location.href) &&
|
58
|
-
|
59
|
-
this.#prefetchedUrls.push(url);
|
58
|
+
if (!(url === window.location.href) && !this.#prefetchedUrls.has(url)) {
|
59
|
+
this.#prefetchedUrls.add(url);
|
60
60
|
if (HTMLScriptElement.supports &&
|
61
61
|
HTMLScriptElement.supports("speculationrules")) {
|
62
62
|
const rules = {
|
@@ -65,9 +65,8 @@ export class Prefetch extends Base {
|
|
65
65
|
// https://github.com/WICG/nav-speculation/issues/162#issuecomment-1977818473
|
66
66
|
prefetch: [{ source: "list", urls: [url] }],
|
67
67
|
};
|
68
|
-
if (prerender)
|
68
|
+
if (options.prerender)
|
69
69
|
rules.prerender = rules.prefetch;
|
70
|
-
}
|
71
70
|
const script = document.createElement("script");
|
72
71
|
script.type = "speculationrules";
|
73
72
|
script.textContent = JSON.stringify(rules);
|
@@ -82,35 +81,25 @@ export class Prefetch extends Base {
|
|
82
81
|
}
|
83
82
|
}
|
84
83
|
}
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
anchors: this.getTrigger(HTMLAnchorElement),
|
94
|
-
prerender: this.#prerender,
|
95
|
-
strategy: this.#strategy,
|
96
|
-
}) {
|
97
|
-
// defaults if partially defined
|
98
|
-
const { anchors = this.getTrigger(HTMLAnchorElement), prerender = this.#prerender, strategy = this.#strategy, } = options;
|
84
|
+
mount() {
|
85
|
+
// immediately prefetch the `url` attribute if it exists
|
86
|
+
if (this.#url)
|
87
|
+
this.prefetch({ url: this.#url, prerender: this.#prerender });
|
88
|
+
// prefetch the `trigger` elements
|
89
|
+
const anchors = this.triggers(HTMLAnchorElement);
|
90
|
+
const prerender = this.#prerender;
|
91
|
+
const strategy = this.#strategy;
|
99
92
|
let prefetchTimer;
|
100
|
-
/**
|
101
|
-
* @param delay ms delay - for `hover`
|
102
|
-
* @returns the event listener with delay
|
103
|
-
*/
|
104
93
|
const listener = (delay = 200) => (e) => {
|
105
94
|
const { href } = e.currentTarget;
|
106
|
-
prefetchTimer = setTimeout(() => this.
|
95
|
+
prefetchTimer = setTimeout(() => this.prefetch({ url: href, prerender }), delay);
|
107
96
|
};
|
108
97
|
const reset = () => clearTimeout(prefetchTimer);
|
109
98
|
const observer = new IntersectionObserver((entries) => {
|
110
|
-
for (const
|
111
|
-
if (
|
112
|
-
this.
|
113
|
-
url:
|
99
|
+
for (const entry of entries) {
|
100
|
+
if (entry.isIntersecting) {
|
101
|
+
this.prefetch({
|
102
|
+
url: entry.target.href,
|
114
103
|
prerender,
|
115
104
|
});
|
116
105
|
}
|
@@ -118,7 +107,7 @@ export class Prefetch extends Base {
|
|
118
107
|
});
|
119
108
|
for (const anchor of anchors) {
|
120
109
|
if (strategy === "load") {
|
121
|
-
this.
|
110
|
+
this.prefetch({ url: anchor.href, prerender });
|
122
111
|
}
|
123
112
|
else if (strategy === "visible") {
|
124
113
|
observer.observe(anchor);
|
@@ -135,12 +124,4 @@ export class Prefetch extends Base {
|
|
135
124
|
}
|
136
125
|
}
|
137
126
|
}
|
138
|
-
mount() {
|
139
|
-
// immediately prefetch the `url` attribute if it exists
|
140
|
-
if (this.#url) {
|
141
|
-
this.appendTag({ url: this.#url, prerender: this.#prerender });
|
142
|
-
}
|
143
|
-
// prefetch the `trigger` elements
|
144
|
-
this.prefetch();
|
145
|
-
}
|
146
127
|
}
|