@qwik.dev/core 2.0.0-beta.3 → 2.0.0-beta.30
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/backpatch/index.d.ts +2 -0
- package/dist/backpatch/index.mjs +5 -0
- package/dist/backpatch/package.json +8 -0
- package/dist/backpatch-executor.debug.js +39 -0
- package/dist/backpatch-executor.js +1 -0
- package/dist/build/package.json +1 -1
- package/dist/cli.mjs +12916 -0
- package/dist/core-internal.d.ts +1077 -707
- package/dist/core.min.mjs +2 -1
- package/dist/core.mjs +11616 -8673
- package/dist/core.mjs.map +1 -1
- package/dist/core.prod.mjs +8266 -5225
- package/dist/insights/index.qwik.mjs +80 -57
- package/dist/loader/index.mjs +2 -2
- package/dist/loader/package.json +1 -1
- package/dist/optimizer.d.ts +47 -278
- package/dist/optimizer.mjs +2403 -3791
- package/dist/preloader.mjs +5 -8
- package/dist/qwikloader.debug.js +156 -131
- package/dist/qwikloader.js +1 -1
- package/dist/server.d.ts +51 -203
- package/dist/server.mjs +1418 -1088
- package/dist/server.prod.mjs +3264 -0
- package/dist/starters/adapters/aws-lambda/adapters/aws-lambda/{vite.config.mts → vite.config.ts} +2 -2
- package/dist/starters/adapters/aws-lambda/package.json +3 -2
- package/dist/starters/adapters/aws-lambda/src/entry_aws-lambda.tsx +2 -6
- package/dist/starters/adapters/azure-swa/adapters/azure-swa/{vite.config.mts → vite.config.ts} +2 -2
- package/dist/starters/adapters/azure-swa/package.json +3 -2
- package/dist/starters/adapters/azure-swa/src/entry.azure-swa.tsx +2 -3
- package/dist/starters/adapters/bun/adapters/bun/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/bun/package.json +3 -2
- package/dist/starters/adapters/bun/src/entry.bun.ts +0 -2
- package/dist/starters/adapters/cloud-run/adapters/cloud-run/{vite.config.mts → vite.config.ts} +2 -2
- package/dist/starters/adapters/cloud-run/package.json +3 -2
- package/dist/starters/adapters/cloud-run/src/entry.cloud-run.tsx +1 -3
- package/dist/starters/adapters/cloudflare-pages/adapters/cloudflare-pages/{vite.config.mts → vite.config.ts} +2 -2
- package/dist/starters/adapters/cloudflare-pages/package.json +3 -2
- package/dist/starters/adapters/cloudflare-pages/src/entry.cloudflare-pages.tsx +2 -3
- package/dist/starters/adapters/cloudflare-workers/README.md +52 -0
- package/dist/starters/adapters/cloudflare-workers/adapters/cloudflare-workers/vite.config.ts +15 -0
- package/dist/starters/adapters/cloudflare-workers/gitignore +3 -0
- package/dist/starters/adapters/cloudflare-workers/package.json +31 -0
- package/dist/starters/adapters/cloudflare-workers/public/.assetsignore +4 -0
- package/dist/starters/adapters/cloudflare-workers/public/_headers +11 -0
- package/dist/starters/adapters/cloudflare-workers/public/_redirects +1 -0
- package/dist/starters/adapters/cloudflare-workers/src/entry.cloudflare-pages.tsx +23 -0
- package/dist/starters/adapters/cloudflare-workers/worker-configuration.d.ts +5 -0
- package/dist/starters/adapters/cloudflare-workers/wrangler.jsonc +41 -0
- package/dist/starters/adapters/deno/adapters/deno/{vite.config.mts → vite.config.ts} +2 -2
- package/dist/starters/adapters/deno/package.json +3 -2
- package/dist/starters/adapters/deno/src/entry.deno.ts +0 -2
- package/dist/starters/adapters/express/adapters/express/{vite.config.mts → vite.config.ts} +2 -2
- package/dist/starters/adapters/express/package.json +4 -3
- package/dist/starters/adapters/express/src/entry.express.tsx +1 -3
- package/dist/starters/adapters/fastify/adapters/fastify/{vite.config.mts → vite.config.ts} +2 -2
- package/dist/starters/adapters/fastify/package.json +4 -3
- package/dist/starters/adapters/fastify/src/entry.fastify.tsx +1 -1
- package/dist/starters/adapters/fastify/src/plugins/fastify-qwik.ts +1 -2
- package/dist/starters/adapters/firebase/adapters/firebase/{vite.config.mts → vite.config.ts} +2 -2
- package/dist/starters/adapters/firebase/package.json +3 -2
- package/dist/starters/adapters/firebase/src/entry-firebase.tsx +2 -3
- package/dist/starters/adapters/netlify-edge/adapters/netlify-edge/{vite.config.mts → vite.config.ts} +2 -2
- package/dist/starters/adapters/netlify-edge/package.json +5 -4
- package/dist/starters/adapters/netlify-edge/src/entry.netlify-edge.tsx +2 -3
- package/dist/starters/adapters/node-server/adapters/node-server/{vite.config.mts → vite.config.ts} +2 -2
- package/dist/starters/adapters/node-server/package.json +3 -2
- package/dist/starters/adapters/node-server/src/entry.node-server.tsx +0 -2
- package/dist/starters/adapters/{static/adapters/static/vite.config.mts → ssg/adapters/ssg/vite.config.ts} +3 -3
- package/dist/starters/adapters/ssg/package.json +20 -0
- package/dist/starters/adapters/vercel-edge/README.md +2 -2
- package/dist/starters/adapters/vercel-edge/adapters/vercel-edge/{vite.config.mts → vite.config.ts} +2 -2
- package/dist/starters/adapters/vercel-edge/package.json +3 -2
- package/dist/starters/adapters/vercel-edge/src/entry.vercel-edge.tsx +2 -3
- package/dist/starters/adapters/vercel-edge/vercel.json +1 -1
- package/dist/starters/features/auth/package.json +1 -1
- package/dist/starters/features/compiled-i18n/package.json +37 -0
- package/dist/starters/features/compiled-i18n/src/components/locale-selector/locale-selector.tsx +30 -0
- package/dist/starters/features/compiled-i18n/src/entry.ssr.tsx +31 -0
- package/dist/starters/features/compiled-i18n/src/routes/plugin@compiled-i18n.ts +28 -0
- package/dist/starters/features/csr/index.html +27 -0
- package/dist/starters/features/csr/package.json +29 -0
- package/dist/starters/features/csr/src/root.tsx +15 -0
- package/dist/starters/features/csr/vite.config.ts +13 -0
- package/dist/starters/features/cypress/src/actions/example.action.ts +5 -0
- package/dist/starters/features/cypress/src/components/example/example.cy.tsx +50 -8
- package/dist/starters/features/cypress/src/components/example/example.tsx +13 -3
- package/dist/starters/features/cypress/src/loaders/example.loader.ts +5 -0
- package/dist/starters/features/pandacss/package.json +1 -1
- package/dist/starters/features/postcss/postcss.config.js +1 -1
- package/dist/starters/features/storybook/.storybook/tsconfig.json +0 -1
- package/dist/starters/features/styled-vanilla-extract/package.json +2 -1
- package/dist/starters/features/tailwind/package.json +2 -2
- package/dist/starters/features/tailwind/prettier.config.js +10 -0
- package/dist/starters/features/tailwind-v3/package.json +1 -1
- package/dist/starters/features/tailwind-v3/prettier.config.js +10 -0
- package/dist/testing/index.d.ts +925 -6
- package/dist/testing/index.mjs +15796 -11480
- package/dist/testing/package.json +1 -1
- package/handlers.mjs +1 -1
- package/package.json +34 -56
- package/public.d.ts +5 -1
- package/{qwik-cli.cjs → qwik-cli.mjs} +1 -1
- package/server.d.ts +2 -0
- package/bindings/qwik.darwin-arm64.node +0 -0
- package/bindings/qwik.darwin-x64.node +0 -0
- package/bindings/qwik.linux-x64-gnu.node +0 -0
- package/bindings/qwik.wasm.cjs +0 -471
- package/bindings/qwik.wasm.mjs +0 -464
- package/bindings/qwik.win32-x64-msvc.node +0 -0
- package/bindings/qwik_wasm_bg.wasm +0 -0
- package/dist/build/index.cjs +0 -35
- package/dist/build/index.cjs.map +0 -7
- package/dist/build/index.dev.cjs +0 -37
- package/dist/build/index.dev.cjs.map +0 -7
- package/dist/build/index.prod.cjs +0 -37
- package/dist/build/index.prod.cjs.map +0 -7
- package/dist/cli.cjs +0 -5545
- package/dist/core.cjs +0 -11800
- package/dist/core.cjs.map +0 -1
- package/dist/core.prod.cjs +0 -5661
- package/dist/insights/index.qwik.cjs +0 -1
- package/dist/insights/vite/index.cjs +0 -1
- package/dist/loader/index.cjs +0 -4
- package/dist/optimizer.cjs +0 -4020
- package/dist/preloader.cjs +0 -269
- package/dist/server.cjs +0 -3037
- package/dist/starters/adapters/static/package.json +0 -19
- package/dist/starters/features/localize/package.json +0 -37
- package/dist/starters/features/localize/src/entry.ssr.tsx +0 -30
- package/dist/starters/features/localize/src/locales/message.en.json +0 -8
- package/dist/starters/features/localize/src/locales/message.it.json +0 -8
- package/dist/starters/features/localize/src/routes/[locale]/i18n-utils.ts +0 -94
- package/dist/starters/features/localize/src/routes/[locale]/index.tsx +0 -52
- package/dist/starters/features/localize/src/routes/[locale]/layout.tsx +0 -12
- package/dist/starters/features/playwright/playwright-report/index.html +0 -22026
- package/dist/starters/features/tailwind/.prettierrc.js +0 -3
- package/dist/testing/index.cjs +0 -33331
- /package/dist/starters/adapters/{static → ssg}/README.md +0 -0
package/dist/preloader.mjs
CHANGED
|
@@ -29,12 +29,9 @@ const trigger = () => {
|
|
|
29
29
|
const e = queue[0];
|
|
30
30
|
const t = e.u;
|
|
31
31
|
const o = 1 - t;
|
|
32
|
-
const n = graph ? (
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
) : (
|
|
36
|
-
// While the graph is not available, we limit to 2 preloads
|
|
37
|
-
2
|
|
32
|
+
const n = graph ? config.o : (
|
|
33
|
+
// While the graph is not available, we limit to 5 preloads
|
|
34
|
+
5
|
|
38
35
|
);
|
|
39
36
|
if (o >= 0.99 || preloadCount < n) {
|
|
40
37
|
queue.shift();
|
|
@@ -77,7 +74,7 @@ const adjustProbabilities = (e, t, o) => {
|
|
|
77
74
|
if (n - e.u < 0.01) return;
|
|
78
75
|
if (
|
|
79
76
|
// don't queue until we have initialized the preloader
|
|
80
|
-
base != null && e.i < BundleImportState_Preload
|
|
77
|
+
base != null && e.i < BundleImportState_Preload
|
|
81
78
|
) {
|
|
82
79
|
if (e.i === BundleImportState_None) {
|
|
83
80
|
e.i = BundleImportState_Queued;
|
|
@@ -94,7 +91,7 @@ const adjustProbabilities = (e, t, o) => {
|
|
|
94
91
|
const e2 = getBundle(n2.m);
|
|
95
92
|
if (e2.u === 0) continue;
|
|
96
93
|
let r;
|
|
97
|
-
if (
|
|
94
|
+
if (t2 === 1 || t2 >= 0.99 && depsCount < 100) {
|
|
98
95
|
depsCount++;
|
|
99
96
|
r = Math.min(0.01, 1 - n2.S);
|
|
100
97
|
} else {
|
package/dist/qwikloader.debug.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
const doc = document;
|
|
2
2
|
const win = window;
|
|
3
|
+
const windowPrefix = "w";
|
|
4
|
+
const documentPrefix = "d";
|
|
3
5
|
const events = /* @__PURE__ */ new Set();
|
|
4
6
|
const roots = /* @__PURE__ */ new Set([doc]);
|
|
7
|
+
const symbols = /* @__PURE__ */ new Map();
|
|
8
|
+
let observer;
|
|
5
9
|
let hasInitialized;
|
|
6
10
|
const nativeQuerySelectorAll = (root, selector) => Array.from(root.querySelectorAll(selector));
|
|
7
11
|
const querySelectorAll = (query) => {
|
|
@@ -9,28 +13,15 @@ const querySelectorAll = (query) => {
|
|
|
9
13
|
roots.forEach((root) => elements.push(...nativeQuerySelectorAll(root, query)));
|
|
10
14
|
return elements;
|
|
11
15
|
};
|
|
16
|
+
const addEventListener = (el, eventName, handler, capture = false) => el.addEventListener(eventName, handler, { capture, passive: false });
|
|
12
17
|
const findShadowRoots = (fragment) => {
|
|
13
|
-
|
|
18
|
+
addEventOrRoot(fragment);
|
|
14
19
|
nativeQuerySelectorAll(fragment, "[q\\:shadowroot]").forEach((parent) => {
|
|
15
20
|
const shadowRoot = parent.shadowRoot;
|
|
16
21
|
shadowRoot && findShadowRoots(shadowRoot);
|
|
17
22
|
});
|
|
18
23
|
};
|
|
19
24
|
const isPromise = (promise) => promise && typeof promise.then === "function";
|
|
20
|
-
let doNotClean = true;
|
|
21
|
-
const broadcast = (infix, ev, type = ev.type) => {
|
|
22
|
-
let found = doNotClean;
|
|
23
|
-
querySelectorAll("[on" + infix + "\\:" + type + "]").forEach((el) => {
|
|
24
|
-
found = true;
|
|
25
|
-
dispatch(el, infix, ev, type);
|
|
26
|
-
});
|
|
27
|
-
if (!found) {
|
|
28
|
-
window[infix.slice(1)].removeEventListener(
|
|
29
|
-
type,
|
|
30
|
-
infix === "-window" ? processWindowEvent : processDocumentEvent
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
25
|
const resolveContainer = (containerEl) => {
|
|
35
26
|
if (containerEl._qwikjson_ === void 0) {
|
|
36
27
|
const parentJSON = containerEl === doc.documentElement ? doc.body : containerEl;
|
|
@@ -46,64 +37,63 @@ const resolveContainer = (containerEl) => {
|
|
|
46
37
|
}
|
|
47
38
|
}
|
|
48
39
|
};
|
|
49
|
-
const createEvent = (eventName, detail) => new CustomEvent(eventName, {
|
|
50
|
-
|
|
40
|
+
const createEvent = (eventName, detail) => new CustomEvent(eventName, { detail });
|
|
41
|
+
const emitEvent = (eventName, detail) => {
|
|
42
|
+
doc.dispatchEvent(createEvent(eventName, detail));
|
|
43
|
+
};
|
|
44
|
+
const camelToKebab = (str) => str.replace(/([A-Z-])/g, (a) => "-" + a.toLowerCase());
|
|
45
|
+
const kebabToCamel = (eventName) => eventName.replace(/-./g, (a) => a[1].toUpperCase());
|
|
46
|
+
const parseKebabEvent = (event) => ({
|
|
47
|
+
scope: event.charAt(0),
|
|
48
|
+
eventName: kebabToCamel(event.slice(2))
|
|
51
49
|
});
|
|
52
|
-
const dispatch = async (element,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
50
|
+
const dispatch = async (element, ev, scopedKebabName, kebabName) => {
|
|
51
|
+
if (kebabName) {
|
|
52
|
+
if (element.hasAttribute("preventdefault:" + kebabName)) {
|
|
53
|
+
ev.preventDefault();
|
|
54
|
+
}
|
|
55
|
+
if (element.hasAttribute("stoppropagation:" + kebabName)) {
|
|
56
|
+
ev.stopPropagation();
|
|
57
|
+
}
|
|
59
58
|
}
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (isPromise(results)) {
|
|
67
|
-
await results;
|
|
59
|
+
const handlers = element._qDispatch?.[scopedKebabName];
|
|
60
|
+
if (handlers) {
|
|
61
|
+
if (typeof handlers === "function") {
|
|
62
|
+
const result = handlers(ev, element);
|
|
63
|
+
if (isPromise(result)) {
|
|
64
|
+
await result;
|
|
68
65
|
}
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
} else if (handlers.length) {
|
|
67
|
+
for (let i = 0; i < handlers.length; i++) {
|
|
68
|
+
const handler = handlers[i];
|
|
69
|
+
const result = handler?.(ev, element);
|
|
70
|
+
if (isPromise(result)) {
|
|
71
|
+
await result;
|
|
72
|
+
}
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
75
|
return;
|
|
74
76
|
}
|
|
75
|
-
const attrValue = element.getAttribute(
|
|
76
|
-
const qDispatchEvent = element.qDispatchEvent;
|
|
77
|
-
if (qDispatchEvent) {
|
|
78
|
-
return qDispatchEvent(ev, scope);
|
|
79
|
-
}
|
|
77
|
+
const attrValue = element.getAttribute("q-" + scopedKebabName);
|
|
80
78
|
if (attrValue) {
|
|
81
79
|
const container = element.closest(
|
|
82
80
|
"[q\\:container]:not([q\\:container=html]):not([q\\:container=text])"
|
|
83
81
|
);
|
|
84
82
|
const qBase = container.getAttribute("q:base");
|
|
85
|
-
const qVersion = container.getAttribute("q:version") || "unknown";
|
|
86
|
-
const qManifest = container.getAttribute("q:manifest-hash") || "dev";
|
|
87
83
|
const base = new URL(qBase, doc.baseURI);
|
|
88
|
-
for (const qrl of attrValue.split("
|
|
89
|
-
const url = new URL(qrl, base);
|
|
90
|
-
const href = url.href;
|
|
91
|
-
const symbol = url.hash.replace(/^#?([^?[|]*).*$/, "$1") || "default";
|
|
84
|
+
for (const qrl of attrValue.split("|")) {
|
|
92
85
|
const reqTime = performance.now();
|
|
93
|
-
|
|
94
|
-
let importError;
|
|
95
|
-
let error;
|
|
96
|
-
const isSync = qrl.startsWith("#");
|
|
86
|
+
const [chunk, symbol, capturedIds] = qrl.split("#");
|
|
97
87
|
const eventData = {
|
|
98
88
|
qBase,
|
|
99
|
-
qManifest,
|
|
100
|
-
qVersion,
|
|
101
|
-
href,
|
|
102
89
|
symbol,
|
|
103
90
|
element,
|
|
104
91
|
reqTime
|
|
105
92
|
};
|
|
106
|
-
|
|
93
|
+
let handler;
|
|
94
|
+
let importError;
|
|
95
|
+
let error;
|
|
96
|
+
if (chunk === "") {
|
|
107
97
|
const hash = container.getAttribute("q:instance");
|
|
108
98
|
handler = (doc["qFuncs_" + hash] || [])[Number.parseInt(symbol)];
|
|
109
99
|
if (!handler) {
|
|
@@ -111,22 +101,28 @@ const dispatch = async (element, scope, ev, eventName = ev.type) => {
|
|
|
111
101
|
error = new Error("sym:" + symbol);
|
|
112
102
|
}
|
|
113
103
|
} else {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
104
|
+
const key = `${symbol}|${qBase}|${chunk}`;
|
|
105
|
+
handler = symbols.get(key);
|
|
106
|
+
if (!handler) {
|
|
107
|
+
const href = new URL(chunk, base).href;
|
|
108
|
+
try {
|
|
109
|
+
const module = import(
|
|
110
|
+
/* @vite-ignore */
|
|
111
|
+
href
|
|
112
|
+
);
|
|
113
|
+
resolveContainer(container);
|
|
114
|
+
handler = (await module)[symbol];
|
|
115
|
+
if (!handler) {
|
|
116
|
+
importError = "no-symbol";
|
|
117
|
+
error = new Error(`${symbol} not in ${href}`);
|
|
118
|
+
} else {
|
|
119
|
+
symbols.set(key, handler);
|
|
120
|
+
emitEvent("qsymbol", eventData);
|
|
121
|
+
}
|
|
122
|
+
} catch (err) {
|
|
123
|
+
importError = "async";
|
|
124
|
+
error = err;
|
|
126
125
|
}
|
|
127
|
-
} catch (err) {
|
|
128
|
-
importError || (importError = "async");
|
|
129
|
-
error = err;
|
|
130
126
|
}
|
|
131
127
|
}
|
|
132
128
|
if (!handler) {
|
|
@@ -136,110 +132,139 @@ const dispatch = async (element, scope, ev, eventName = ev.type) => {
|
|
|
136
132
|
...eventData
|
|
137
133
|
});
|
|
138
134
|
console.error(error);
|
|
139
|
-
|
|
135
|
+
continue;
|
|
140
136
|
}
|
|
141
|
-
const previousCtx = doc.__q_context__;
|
|
142
137
|
if (element.isConnected) {
|
|
143
138
|
try {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
await results;
|
|
139
|
+
const result = handler.call(capturedIds, ev, element);
|
|
140
|
+
if (isPromise(result)) {
|
|
141
|
+
await result;
|
|
148
142
|
}
|
|
149
143
|
} catch (error2) {
|
|
150
144
|
emitEvent("qerror", { error: error2, ...eventData });
|
|
151
|
-
} finally {
|
|
152
|
-
doc.__q_context__ = previousCtx;
|
|
153
145
|
}
|
|
154
146
|
}
|
|
155
147
|
}
|
|
156
148
|
}
|
|
157
149
|
};
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const camelToKebab = (str) => str.replace(/([A-Z])/g, (a) => "-" + a.toLowerCase());
|
|
162
|
-
const processDocumentEvent = async (ev) => {
|
|
163
|
-
let type = camelToKebab(ev.type);
|
|
150
|
+
const processElementEvent = async (ev) => {
|
|
151
|
+
const kebabName = camelToKebab(ev.type);
|
|
152
|
+
const scopedKebabName = "e:" + kebabName;
|
|
164
153
|
let element = ev.target;
|
|
165
|
-
broadcast("-document", ev, type);
|
|
166
154
|
while (element && element.getAttribute) {
|
|
167
|
-
const results = dispatch(element,
|
|
168
|
-
|
|
155
|
+
const results = dispatch(element, ev, scopedKebabName, kebabName);
|
|
156
|
+
const doBubble = ev.bubbles && !ev.cancelBubble;
|
|
169
157
|
if (isPromise(results)) {
|
|
170
158
|
await results;
|
|
171
159
|
}
|
|
172
|
-
|
|
173
|
-
element = ev.bubbles && cancelBubble !== true ? element.parentElement : null;
|
|
160
|
+
element = doBubble && ev.bubbles && !ev.cancelBubble ? element.parentElement : null;
|
|
174
161
|
}
|
|
175
162
|
};
|
|
163
|
+
const broadcast = (infix, ev) => {
|
|
164
|
+
const kebabName = camelToKebab(ev.type);
|
|
165
|
+
const scopedKebabName = infix + ":" + kebabName;
|
|
166
|
+
querySelectorAll("[q-" + infix + "\\:" + kebabName + "]").forEach(
|
|
167
|
+
(el) => dispatch(el, ev, scopedKebabName, kebabName)
|
|
168
|
+
);
|
|
169
|
+
};
|
|
170
|
+
const processDocumentEvent = async (ev) => {
|
|
171
|
+
broadcast(documentPrefix, ev);
|
|
172
|
+
};
|
|
176
173
|
const processWindowEvent = (ev) => {
|
|
177
|
-
broadcast(
|
|
174
|
+
broadcast(windowPrefix, ev);
|
|
178
175
|
};
|
|
179
176
|
const processReadyStateChange = () => {
|
|
180
|
-
var _a;
|
|
181
177
|
const readyState = doc.readyState;
|
|
182
|
-
if (
|
|
183
|
-
roots.forEach(findShadowRoots);
|
|
178
|
+
if (readyState == "interactive" || readyState == "complete") {
|
|
184
179
|
hasInitialized = 1;
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
180
|
+
roots.forEach(findShadowRoots);
|
|
181
|
+
if (events.has("d:qinit")) {
|
|
182
|
+
events.delete("d:qinit");
|
|
183
|
+
const ev = createEvent("qinit");
|
|
184
|
+
querySelectorAll("[q-d\\:qinit]").forEach((el) => {
|
|
185
|
+
dispatch(el, ev, "d:qinit");
|
|
186
|
+
el.removeAttribute("q-d:qinit");
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
if (events.has("d:qidle")) {
|
|
190
|
+
events.delete("d:qidle");
|
|
191
|
+
const riC = win.requestIdleCallback ?? win.setTimeout;
|
|
192
|
+
riC.bind(win)(() => {
|
|
193
|
+
const ev = createEvent("qidle");
|
|
194
|
+
querySelectorAll("[q-d\\:qidle]").forEach((el) => {
|
|
195
|
+
dispatch(el, ev, "d:qidle");
|
|
196
|
+
el.removeAttribute("q-d:qidle");
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
if (events.has("e:qvisible")) {
|
|
201
|
+
observer || (observer = new IntersectionObserver((entries) => {
|
|
191
202
|
for (const entry of entries) {
|
|
192
203
|
if (entry.isIntersecting) {
|
|
193
204
|
observer.unobserve(entry.target);
|
|
194
|
-
dispatch(entry.target,
|
|
205
|
+
dispatch(entry.target, createEvent("qvisible", entry), "e:qvisible");
|
|
195
206
|
}
|
|
196
207
|
}
|
|
208
|
+
}));
|
|
209
|
+
querySelectorAll("[q-e\\:qvisible]:not([q\\:observed])").forEach((el) => {
|
|
210
|
+
observer.observe(el);
|
|
211
|
+
el.setAttribute("q:observed", "true");
|
|
197
212
|
});
|
|
198
|
-
results.forEach((el) => observer.observe(el));
|
|
199
213
|
}
|
|
200
214
|
}
|
|
201
215
|
};
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
216
|
+
const addEventOrRoot = (...eventNames) => {
|
|
217
|
+
for (let i = 0; i < eventNames.length; i++) {
|
|
218
|
+
const eventNameOrRoot = eventNames[i];
|
|
219
|
+
if (typeof eventNameOrRoot === "string") {
|
|
220
|
+
if (!events.has(eventNameOrRoot)) {
|
|
221
|
+
events.add(eventNameOrRoot);
|
|
222
|
+
const { scope, eventName } = parseKebabEvent(eventNameOrRoot);
|
|
223
|
+
if (scope === windowPrefix) {
|
|
224
|
+
addEventListener(win, eventName, processWindowEvent, true);
|
|
225
|
+
} else {
|
|
226
|
+
roots.forEach(
|
|
227
|
+
(root) => addEventListener(
|
|
228
|
+
root,
|
|
229
|
+
eventName,
|
|
230
|
+
scope === documentPrefix ? processDocumentEvent : processElementEvent,
|
|
231
|
+
true
|
|
232
|
+
)
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
if (hasInitialized === 1 && (eventNameOrRoot === "e:qvisible" || eventNameOrRoot === "d:qinit" || eventNameOrRoot === "d:qidle")) {
|
|
236
|
+
processReadyStateChange();
|
|
237
|
+
}
|
|
218
238
|
}
|
|
219
239
|
} else {
|
|
220
|
-
if (!roots.has(
|
|
221
|
-
events.forEach(
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
240
|
+
if (!roots.has(eventNameOrRoot)) {
|
|
241
|
+
events.forEach((kebabEventName) => {
|
|
242
|
+
const { scope, eventName } = parseKebabEvent(kebabEventName);
|
|
243
|
+
if (scope !== windowPrefix) {
|
|
244
|
+
addEventListener(
|
|
245
|
+
eventNameOrRoot,
|
|
246
|
+
eventName,
|
|
247
|
+
scope === documentPrefix ? processDocumentEvent : processElementEvent,
|
|
248
|
+
true
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
roots.add(eventNameOrRoot);
|
|
225
253
|
}
|
|
226
254
|
}
|
|
227
255
|
}
|
|
228
256
|
};
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
} else {
|
|
236
|
-
processEventOrNode("click", "input");
|
|
237
|
-
}
|
|
257
|
+
const _qwikEv = win._qwikEv;
|
|
258
|
+
if (!_qwikEv?.roots) {
|
|
259
|
+
if (Array.isArray(_qwikEv)) {
|
|
260
|
+
addEventOrRoot(..._qwikEv);
|
|
261
|
+
} else {
|
|
262
|
+
addEventOrRoot("e:click", "e:input");
|
|
238
263
|
}
|
|
239
|
-
win.
|
|
264
|
+
win._qwikEv = {
|
|
240
265
|
events,
|
|
241
266
|
roots,
|
|
242
|
-
push:
|
|
267
|
+
push: addEventOrRoot
|
|
243
268
|
};
|
|
244
269
|
addEventListener(doc, "readystatechange", processReadyStateChange);
|
|
245
270
|
processReadyStateChange();
|
package/dist/qwikloader.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const e=document,t=window,o="w",n="d",r=new Set,s=new Set([e]),i=new Map;let a,c;const l=(e,t)=>Array.from(e.querySelectorAll(t)),q=e=>{const t=[];return s.forEach(o=>t.push(...l(o,e))),t},d=(e,t,o,n=!1)=>e.addEventListener(t,o,{capture:n,passive:!1}),b=e=>{_(e),l(e,"[q\\:shadowroot]").forEach(e=>{const t=e.shadowRoot;t&&b(t)})},f=e=>e&&"function"==typeof e.then,p=t=>{if(void 0===t._qwikjson_){let o=(t===e.documentElement?e.body:t).lastElementChild;for(;o;){if("SCRIPT"===o.tagName&&"qwik/json"===o.getAttribute("type")){t._qwikjson_=JSON.parse(o.textContent.replace(/\\x3C(\/?script)/gi,"<$1"));break}o=o.previousElementSibling}}},u=(e,t)=>new CustomEvent(e,{detail:t}),h=(t,o)=>{e.dispatchEvent(u(t,o))},m=e=>e.replace(/([A-Z-])/g,e=>"-"+e.toLowerCase()),v=e=>e.replace(/-./g,e=>e[1].toUpperCase()),w=e=>({scope:e.charAt(0),eventName:v(e.slice(2))}),y=async(t,o,n,r)=>{r&&(t.hasAttribute("preventdefault:"+r)&&o.preventDefault(),t.hasAttribute("stoppropagation:"+r)&&o.stopPropagation());const s=t._qDispatch?.[n];if(s){if("function"==typeof s){const e=s(o,t);f(e)&&await e}else if(s.length)for(let e=0;e<s.length;e++){const n=s[e],r=n?.(o,t);f(r)&&await r}return}const a=t.getAttribute("q-"+n);if(a){const n=t.closest("[q\\:container]:not([q\\:container=html]):not([q\\:container=text])"),r=n.getAttribute("q:base"),s=new URL(r,e.baseURI);for(const c of a.split("|")){const a=performance.now(),[l,q,d]=c.split("#"),b={qBase:r,symbol:q,element:t,reqTime:a};let u,m,v;if(""===l){const t=n.getAttribute("q:instance");u=(e["qFuncs_"+t]||[])[Number.parseInt(q)],u||(m="sync",v=Error("sym:"+q))}else{const e=`${q}|${r}|${l}`;if(u=i.get(e),!u){const t=new URL(l,s).href;try{const o=import(t);p(n),u=(await o)[q],u?(i.set(e,u),h("qsymbol",b)):(m="no-symbol",v=Error(`${q} not in ${t}`))}catch(e){m="async",v=e}}}if(u){if(t.isConnected)try{const e=u.call(d,o,t);f(e)&&await e}catch(e){h("qerror",{error:e,...b})}}else h("qerror",{importError:m,error:v,...b}),console.error(v)}}},g=async e=>{const t=m(e.type),o="e:"+t;let n=e.target;for(;n&&n.getAttribute;){const r=y(n,e,o,t),s=e.bubbles&&!e.cancelBubble;f(r)&&await r,n=s&&e.bubbles&&!e.cancelBubble?n.parentElement:null}},E=(e,t)=>{const o=m(t.type),n=e+":"+o;q("[q-"+e+"\\:"+o+"]").forEach(e=>y(e,t,n,o))},A=async e=>{E(n,e)},C=e=>{E(o,e)},k=()=>{const o=e.readyState;if("interactive"==o||"complete"==o){if(c=1,s.forEach(b),r.has("d:qinit")){r.delete("d:qinit");const e=u("qinit");q("[q-d\\:qinit]").forEach(t=>{y(t,e,"d:qinit"),t.removeAttribute("q-d:qinit")})}r.has("d:qidle")&&(r.delete("d:qidle"),(t.requestIdleCallback??t.setTimeout).bind(t)(()=>{const e=u("qidle");q("[q-d\\:qidle]").forEach(t=>{y(t,e,"d:qidle"),t.removeAttribute("q-d:qidle")})})),r.has("e:qvisible")&&(a||(a=new IntersectionObserver(e=>{for(const t of e)t.isIntersecting&&(a.unobserve(t.target),y(t.target,u("qvisible",t),"e:qvisible"))})),q("[q-e\\:qvisible]:not([q\\:observed])").forEach(e=>{a.observe(e),e.setAttribute("q:observed","true")}))}},_=(...e)=>{for(let i=0;i<e.length;i++){const a=e[i];if("string"==typeof a){if(!r.has(a)){r.add(a);const{scope:e,eventName:i}=w(a);e===o?d(t,i,C,!0):s.forEach(t=>d(t,i,e===n?A:g,!0)),1!==c||"e:qvisible"!==a&&"d:qinit"!==a&&"d:qidle"!==a||k()}}else s.has(a)||(r.forEach(e=>{const{scope:t,eventName:r}=w(e);t!==o&&d(a,r,t===n?A:g,!0)}),s.add(a))}},S=t._qwikEv;S?.roots||(Array.isArray(S)?_(...S):_("e:click","e:input"),t._qwikEv={events:r,roots:s,push:_},d(e,"readystatechange",k),k());
|