@qwik.dev/core 2.0.0-beta.3 → 2.0.0-beta.31
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 +12961 -0
- package/dist/core-internal.d.ts +1117 -707
- package/dist/core.min.mjs +2 -1
- package/dist/core.mjs +12216 -8953
- package/dist/core.mjs.map +1 -1
- package/dist/core.prod.mjs +8677 -5376
- package/dist/insights/index.qwik.mjs +80 -57
- package/dist/insights/vite/index.mjs +36 -33
- 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 +2427 -3791
- package/dist/preloader.mjs +212 -117
- package/dist/qwikloader.debug.js +173 -135
- package/dist/qwikloader.js +1 -1
- package/dist/server.d.ts +51 -203
- package/dist/server.mjs +1661 -1157
- package/dist/server.prod.mjs +3452 -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 +928 -6
- package/dist/testing/index.mjs +16212 -11578
- 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/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,17 @@ 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
|
-
|
|
14
|
-
nativeQuerySelectorAll(fragment, "[q\\:shadowroot]")
|
|
18
|
+
addEventOrRoot(fragment);
|
|
19
|
+
const shadowRoots = nativeQuerySelectorAll(fragment, "[q\\:shadowroot]");
|
|
20
|
+
for (let i = 0; i < shadowRoots.length; i++) {
|
|
21
|
+
const parent = shadowRoots[i];
|
|
15
22
|
const shadowRoot = parent.shadowRoot;
|
|
16
23
|
shadowRoot && findShadowRoots(shadowRoot);
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
|
-
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
24
|
}
|
|
33
25
|
};
|
|
26
|
+
const isPromise = (promise) => promise && typeof promise.then === "function";
|
|
34
27
|
const resolveContainer = (containerEl) => {
|
|
35
28
|
if (containerEl._qwikjson_ === void 0) {
|
|
36
29
|
const parentJSON = containerEl === doc.documentElement ? doc.body : containerEl;
|
|
@@ -46,64 +39,65 @@ const resolveContainer = (containerEl) => {
|
|
|
46
39
|
}
|
|
47
40
|
}
|
|
48
41
|
};
|
|
49
|
-
const createEvent = (eventName, detail) => new CustomEvent(eventName, {
|
|
50
|
-
|
|
42
|
+
const createEvent = (eventName, detail) => new CustomEvent(eventName, { detail });
|
|
43
|
+
const emitEvent = (eventName, detail) => {
|
|
44
|
+
doc.dispatchEvent(createEvent(eventName, detail));
|
|
45
|
+
};
|
|
46
|
+
const camelToKebab = (str) => str.replace(/([A-Z-])/g, (a) => "-" + a.toLowerCase());
|
|
47
|
+
const kebabToCamel = (eventName) => eventName.replace(/-./g, (a) => a[1].toUpperCase());
|
|
48
|
+
const parseKebabEvent = (event) => ({
|
|
49
|
+
scope: event.charAt(0),
|
|
50
|
+
eventName: kebabToCamel(event.slice(2))
|
|
51
51
|
});
|
|
52
|
-
const dispatch = async (element,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
const dispatch = async (element, ev, scopedKebabName, kebabName) => {
|
|
53
|
+
if (kebabName) {
|
|
54
|
+
if (element.hasAttribute("preventdefault:" + kebabName)) {
|
|
55
|
+
ev.preventDefault();
|
|
56
|
+
}
|
|
57
|
+
if (element.hasAttribute("stoppropagation:" + kebabName)) {
|
|
58
|
+
ev.stopPropagation();
|
|
59
|
+
}
|
|
59
60
|
}
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (isPromise(results)) {
|
|
67
|
-
await results;
|
|
61
|
+
const handlers = element._qDispatch?.[scopedKebabName];
|
|
62
|
+
if (handlers) {
|
|
63
|
+
if (typeof handlers === "function") {
|
|
64
|
+
const result = handlers(ev, element);
|
|
65
|
+
if (isPromise(result)) {
|
|
66
|
+
await result;
|
|
68
67
|
}
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
} else if (handlers.length) {
|
|
69
|
+
for (let i = 0; i < handlers.length; i++) {
|
|
70
|
+
const handler = handlers[i];
|
|
71
|
+
const result = handler?.(ev, element);
|
|
72
|
+
if (isPromise(result)) {
|
|
73
|
+
await result;
|
|
74
|
+
}
|
|
71
75
|
}
|
|
72
76
|
}
|
|
73
77
|
return;
|
|
74
78
|
}
|
|
75
|
-
const attrValue = element.getAttribute(
|
|
76
|
-
const qDispatchEvent = element.qDispatchEvent;
|
|
77
|
-
if (qDispatchEvent) {
|
|
78
|
-
return qDispatchEvent(ev, scope);
|
|
79
|
-
}
|
|
79
|
+
const attrValue = element.getAttribute("q-" + scopedKebabName);
|
|
80
80
|
if (attrValue) {
|
|
81
81
|
const container = element.closest(
|
|
82
82
|
"[q\\:container]:not([q\\:container=html]):not([q\\:container=text])"
|
|
83
83
|
);
|
|
84
84
|
const qBase = container.getAttribute("q:base");
|
|
85
|
-
const qVersion = container.getAttribute("q:version") || "unknown";
|
|
86
|
-
const qManifest = container.getAttribute("q:manifest-hash") || "dev";
|
|
87
85
|
const base = new URL(qBase, doc.baseURI);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
const symbol = url.hash.replace(/^#?([^?[|]*).*$/, "$1") || "default";
|
|
86
|
+
const qrls = attrValue.split("|");
|
|
87
|
+
for (let i = 0; i < qrls.length; i++) {
|
|
88
|
+
const qrl = qrls[i];
|
|
92
89
|
const reqTime = performance.now();
|
|
93
|
-
|
|
94
|
-
let importError;
|
|
95
|
-
let error;
|
|
96
|
-
const isSync = qrl.startsWith("#");
|
|
90
|
+
const [chunk, symbol, capturedIds] = qrl.split("#");
|
|
97
91
|
const eventData = {
|
|
98
92
|
qBase,
|
|
99
|
-
qManifest,
|
|
100
|
-
qVersion,
|
|
101
|
-
href,
|
|
102
93
|
symbol,
|
|
103
94
|
element,
|
|
104
95
|
reqTime
|
|
105
96
|
};
|
|
106
|
-
|
|
97
|
+
let handler;
|
|
98
|
+
let importError;
|
|
99
|
+
let error;
|
|
100
|
+
if (chunk === "") {
|
|
107
101
|
const hash = container.getAttribute("q:instance");
|
|
108
102
|
handler = (doc["qFuncs_" + hash] || [])[Number.parseInt(symbol)];
|
|
109
103
|
if (!handler) {
|
|
@@ -111,22 +105,28 @@ const dispatch = async (element, scope, ev, eventName = ev.type) => {
|
|
|
111
105
|
error = new Error("sym:" + symbol);
|
|
112
106
|
}
|
|
113
107
|
} else {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
108
|
+
const key = `${symbol}|${qBase}|${chunk}`;
|
|
109
|
+
handler = symbols.get(key);
|
|
110
|
+
if (!handler) {
|
|
111
|
+
const href = new URL(chunk, base).href;
|
|
112
|
+
try {
|
|
113
|
+
const module = import(
|
|
114
|
+
/* @vite-ignore */
|
|
115
|
+
href
|
|
116
|
+
);
|
|
117
|
+
resolveContainer(container);
|
|
118
|
+
handler = (await module)[symbol];
|
|
119
|
+
if (!handler) {
|
|
120
|
+
importError = "no-symbol";
|
|
121
|
+
error = new Error(`${symbol} not in ${href}`);
|
|
122
|
+
} else {
|
|
123
|
+
symbols.set(key, handler);
|
|
124
|
+
emitEvent("qsymbol", eventData);
|
|
125
|
+
}
|
|
126
|
+
} catch (err) {
|
|
127
|
+
importError = "async";
|
|
128
|
+
error = err;
|
|
126
129
|
}
|
|
127
|
-
} catch (err) {
|
|
128
|
-
importError || (importError = "async");
|
|
129
|
-
error = err;
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
if (!handler) {
|
|
@@ -136,110 +136,148 @@ const dispatch = async (element, scope, ev, eventName = ev.type) => {
|
|
|
136
136
|
...eventData
|
|
137
137
|
});
|
|
138
138
|
console.error(error);
|
|
139
|
-
|
|
139
|
+
continue;
|
|
140
140
|
}
|
|
141
|
-
const previousCtx = doc.__q_context__;
|
|
142
141
|
if (element.isConnected) {
|
|
143
142
|
try {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
await results;
|
|
143
|
+
const result = handler.call(capturedIds, ev, element);
|
|
144
|
+
if (isPromise(result)) {
|
|
145
|
+
await result;
|
|
148
146
|
}
|
|
149
147
|
} catch (error2) {
|
|
150
148
|
emitEvent("qerror", { error: error2, ...eventData });
|
|
151
|
-
} finally {
|
|
152
|
-
doc.__q_context__ = previousCtx;
|
|
153
149
|
}
|
|
154
150
|
}
|
|
155
151
|
}
|
|
156
152
|
}
|
|
157
153
|
};
|
|
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);
|
|
154
|
+
const processElementEvent = async (ev) => {
|
|
155
|
+
const kebabName = camelToKebab(ev.type);
|
|
156
|
+
const scopedKebabName = "e:" + kebabName;
|
|
164
157
|
let element = ev.target;
|
|
165
|
-
broadcast("-document", ev, type);
|
|
166
158
|
while (element && element.getAttribute) {
|
|
167
|
-
const results = dispatch(element,
|
|
168
|
-
|
|
159
|
+
const results = dispatch(element, ev, scopedKebabName, kebabName);
|
|
160
|
+
const doBubble = ev.bubbles && !ev.cancelBubble;
|
|
169
161
|
if (isPromise(results)) {
|
|
170
162
|
await results;
|
|
171
163
|
}
|
|
172
|
-
|
|
173
|
-
|
|
164
|
+
element = doBubble && ev.bubbles && !ev.cancelBubble ? element.parentElement : null;
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
const broadcast = (infix, ev) => {
|
|
168
|
+
const kebabName = camelToKebab(ev.type);
|
|
169
|
+
const scopedKebabName = infix + ":" + kebabName;
|
|
170
|
+
const elements = querySelectorAll("[q-" + infix + "\\:" + kebabName + "]");
|
|
171
|
+
for (let i = 0; i < elements.length; i++) {
|
|
172
|
+
const el = elements[i];
|
|
173
|
+
dispatch(el, ev, scopedKebabName, kebabName);
|
|
174
174
|
}
|
|
175
175
|
};
|
|
176
|
+
const processDocumentEvent = async (ev) => {
|
|
177
|
+
broadcast(documentPrefix, ev);
|
|
178
|
+
};
|
|
176
179
|
const processWindowEvent = (ev) => {
|
|
177
|
-
broadcast(
|
|
180
|
+
broadcast(windowPrefix, ev);
|
|
178
181
|
};
|
|
179
182
|
const processReadyStateChange = () => {
|
|
180
|
-
var _a;
|
|
181
183
|
const readyState = doc.readyState;
|
|
182
|
-
if (
|
|
183
|
-
roots.forEach(findShadowRoots);
|
|
184
|
+
if (readyState == "interactive" || readyState == "complete") {
|
|
184
185
|
hasInitialized = 1;
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
|
|
186
|
+
roots.forEach(findShadowRoots);
|
|
187
|
+
if (events.has("d:qinit")) {
|
|
188
|
+
events.delete("d:qinit");
|
|
189
|
+
const ev = createEvent("qinit");
|
|
190
|
+
const elements = querySelectorAll("[q-d\\:qinit]");
|
|
191
|
+
for (let i = 0; i < elements.length; i++) {
|
|
192
|
+
const el = elements[i];
|
|
193
|
+
dispatch(el, ev, "d:qinit");
|
|
194
|
+
el.removeAttribute("q-d:qinit");
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (events.has("d:qidle")) {
|
|
198
|
+
events.delete("d:qidle");
|
|
199
|
+
const riC = win.requestIdleCallback ?? win.setTimeout;
|
|
200
|
+
riC.bind(win)(() => {
|
|
201
|
+
const ev = createEvent("qidle");
|
|
202
|
+
const elements = querySelectorAll("[q-d\\:qidle]");
|
|
203
|
+
for (let i = 0; i < elements.length; i++) {
|
|
204
|
+
const el = elements[i];
|
|
205
|
+
dispatch(el, ev, "d:qidle");
|
|
206
|
+
el.removeAttribute("q-d:qidle");
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
if (events.has("e:qvisible")) {
|
|
211
|
+
observer || (observer = new IntersectionObserver((entries) => {
|
|
212
|
+
for (let i = 0; i < entries.length; i++) {
|
|
213
|
+
const entry = entries[i];
|
|
192
214
|
if (entry.isIntersecting) {
|
|
193
215
|
observer.unobserve(entry.target);
|
|
194
|
-
dispatch(entry.target,
|
|
216
|
+
dispatch(entry.target, createEvent("qvisible", entry), "e:qvisible");
|
|
195
217
|
}
|
|
196
218
|
}
|
|
197
|
-
});
|
|
198
|
-
|
|
219
|
+
}));
|
|
220
|
+
const elements = querySelectorAll("[q-e\\:qvisible]:not([q\\:observed])");
|
|
221
|
+
for (let i = 0; i < elements.length; i++) {
|
|
222
|
+
const el = elements[i];
|
|
223
|
+
observer.observe(el);
|
|
224
|
+
el.setAttribute("q:observed", "true");
|
|
225
|
+
}
|
|
199
226
|
}
|
|
200
227
|
}
|
|
201
228
|
};
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
229
|
+
const addEventOrRoot = (...eventNames) => {
|
|
230
|
+
for (let i = 0; i < eventNames.length; i++) {
|
|
231
|
+
const eventNameOrRoot = eventNames[i];
|
|
232
|
+
if (typeof eventNameOrRoot === "string") {
|
|
233
|
+
if (!events.has(eventNameOrRoot)) {
|
|
234
|
+
events.add(eventNameOrRoot);
|
|
235
|
+
const { scope, eventName } = parseKebabEvent(eventNameOrRoot);
|
|
236
|
+
if (scope === windowPrefix) {
|
|
237
|
+
addEventListener(win, eventName, processWindowEvent, true);
|
|
238
|
+
} else {
|
|
239
|
+
roots.forEach(
|
|
240
|
+
(root) => addEventListener(
|
|
241
|
+
root,
|
|
242
|
+
eventName,
|
|
243
|
+
scope === documentPrefix ? processDocumentEvent : processElementEvent,
|
|
244
|
+
true
|
|
245
|
+
)
|
|
246
|
+
);
|
|
247
|
+
}
|
|
248
|
+
if (hasInitialized === 1 && (eventNameOrRoot === "e:qvisible" || eventNameOrRoot === "d:qinit" || eventNameOrRoot === "d:qidle")) {
|
|
249
|
+
processReadyStateChange();
|
|
250
|
+
}
|
|
218
251
|
}
|
|
219
252
|
} else {
|
|
220
|
-
if (!roots.has(
|
|
221
|
-
events.forEach(
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
253
|
+
if (!roots.has(eventNameOrRoot)) {
|
|
254
|
+
events.forEach((kebabEventName) => {
|
|
255
|
+
const { scope, eventName } = parseKebabEvent(kebabEventName);
|
|
256
|
+
if (scope !== windowPrefix) {
|
|
257
|
+
addEventListener(
|
|
258
|
+
eventNameOrRoot,
|
|
259
|
+
eventName,
|
|
260
|
+
scope === documentPrefix ? processDocumentEvent : processElementEvent,
|
|
261
|
+
true
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
roots.add(eventNameOrRoot);
|
|
225
266
|
}
|
|
226
267
|
}
|
|
227
268
|
}
|
|
228
269
|
};
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
} else {
|
|
236
|
-
processEventOrNode("click", "input");
|
|
237
|
-
}
|
|
270
|
+
const _qwikEv = win._qwikEv;
|
|
271
|
+
if (!_qwikEv?.roots) {
|
|
272
|
+
if (Array.isArray(_qwikEv)) {
|
|
273
|
+
addEventOrRoot(..._qwikEv);
|
|
274
|
+
} else {
|
|
275
|
+
addEventOrRoot("e:click", "e:input");
|
|
238
276
|
}
|
|
239
|
-
win.
|
|
277
|
+
win._qwikEv = {
|
|
240
278
|
events,
|
|
241
279
|
roots,
|
|
242
|
-
push:
|
|
280
|
+
push: addEventOrRoot
|
|
243
281
|
};
|
|
244
282
|
addEventListener(doc, "readystatechange", processReadyStateChange);
|
|
245
283
|
processReadyStateChange();
|
package/dist/qwikloader.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const e=document,t=window,n="w",o="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(n=>t.push(...l(n,e))),t},d=(e,t,n,o=!1)=>e.addEventListener(t,n,{capture:o,passive:!1}),b=e=>{_(e);const t=l(e,"[q\\:shadowroot]");for(let e=0;e<t.length;e++){const n=t[e].shadowRoot;n&&b(n)}},f=e=>e&&"function"==typeof e.then,p=t=>{if(void 0===t._qwikjson_){let n=(t===e.documentElement?e.body:t).lastElementChild;for(;n;){if("SCRIPT"===n.tagName&&"qwik/json"===n.getAttribute("type")){t._qwikjson_=JSON.parse(n.textContent.replace(/\\x3C(\/?script)/gi,"<$1"));break}n=n.previousElementSibling}}},u=(e,t)=>new CustomEvent(e,{detail:t}),h=(t,n)=>{e.dispatchEvent(u(t,n))},g=e=>e.replace(/([A-Z-])/g,e=>"-"+e.toLowerCase()),m=e=>e.replace(/-./g,e=>e[1].toUpperCase()),v=e=>({scope:e.charAt(0),eventName:m(e.slice(2))}),w=async(t,n,o,r)=>{r&&(t.hasAttribute("preventdefault:"+r)&&n.preventDefault(),t.hasAttribute("stoppropagation:"+r)&&n.stopPropagation());const s=t._qDispatch?.[o];if(s){if("function"==typeof s){const e=s(n,t);f(e)&&await e}else if(s.length)for(let e=0;e<s.length;e++){const o=s[e],r=o?.(n,t);f(r)&&await r}return}const a=t.getAttribute("q-"+o);if(a){const o=t.closest("[q\\:container]:not([q\\:container=html]):not([q\\:container=text])"),r=o.getAttribute("q:base"),s=new URL(r,e.baseURI),c=a.split("|");for(let a=0;a<c.length;a++){const l=c[a],q=performance.now(),[d,b,u]=l.split("#"),g={qBase:r,symbol:b,element:t,reqTime:q};let m,v,w;if(""===d){const t=o.getAttribute("q:instance");m=(e["qFuncs_"+t]||[])[Number.parseInt(b)],m||(v="sync",w=Error("sym:"+b))}else{const e=`${b}|${r}|${d}`;if(m=i.get(e),!m){const t=new URL(d,s).href;try{const n=import(t);p(o),m=(await n)[b],m?(i.set(e,m),h("qsymbol",g)):(v="no-symbol",w=Error(`${b} not in ${t}`))}catch(e){v="async",w=e}}}if(m){if(t.isConnected)try{const e=m.call(u,n,t);f(e)&&await e}catch(e){h("qerror",{error:e,...g})}}else h("qerror",{importError:v,error:w,...g}),console.error(w)}}},y=async e=>{const t=g(e.type),n="e:"+t;let o=e.target;for(;o&&o.getAttribute;){const r=w(o,e,n,t),s=e.bubbles&&!e.cancelBubble;f(r)&&await r,o=s&&e.bubbles&&!e.cancelBubble?o.parentElement:null}},A=(e,t)=>{const n=g(t.type),o=e+":"+n,r=q("[q-"+e+"\\:"+n+"]");for(let e=0;e<r.length;e++){const s=r[e];w(s,t,o,n)}},E=async e=>{A(o,e)},C=e=>{A(n,e)},k=()=>{const n=e.readyState;if("interactive"==n||"complete"==n){if(c=1,s.forEach(b),r.has("d:qinit")){r.delete("d:qinit");const e=u("qinit"),t=q("[q-d\\:qinit]");for(let n=0;n<t.length;n++){const o=t[n];w(o,e,"d:qinit"),o.removeAttribute("q-d:qinit")}}if(r.has("d:qidle")&&(r.delete("d:qidle"),(t.requestIdleCallback??t.setTimeout).bind(t)(()=>{const e=u("qidle"),t=q("[q-d\\:qidle]");for(let n=0;n<t.length;n++){const o=t[n];w(o,e,"d:qidle"),o.removeAttribute("q-d:qidle")}})),r.has("e:qvisible")){a||(a=new IntersectionObserver(e=>{for(let t=0;t<e.length;t++){const n=e[t];n.isIntersecting&&(a.unobserve(n.target),w(n.target,u("qvisible",n),"e:qvisible"))}}));const e=q("[q-e\\:qvisible]:not([q\\:observed])");for(let t=0;t<e.length;t++){const n=e[t];a.observe(n),n.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}=v(a);e===n?d(t,i,C,!0):s.forEach(t=>d(t,i,e===o?E:y,!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}=v(e);t!==n&&d(a,r,t===o?E:y,!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());
|