@qwik.dev/core 2.0.0-alpha.9 → 2.0.0-beta.10

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.
Files changed (132) hide show
  1. package/bindings/qwik.darwin-arm64.node +0 -0
  2. package/bindings/qwik.darwin-x64.node +0 -0
  3. package/bindings/qwik.linux-x64-gnu.node +0 -0
  4. package/bindings/qwik.wasm.cjs +27 -27
  5. package/bindings/qwik.wasm.mjs +27 -27
  6. package/bindings/qwik.win32-x64-msvc.node +0 -0
  7. package/bindings/qwik_wasm_bg.wasm +0 -0
  8. package/dist/backpatch/index.cjs +6 -0
  9. package/dist/backpatch/index.d.ts +2 -0
  10. package/dist/backpatch/index.mjs +5 -0
  11. package/dist/{prefetch → backpatch}/package.json +2 -2
  12. package/dist/backpatch-executor.debug.js +34 -0
  13. package/dist/backpatch-executor.js +1 -0
  14. package/dist/build/index.cjs +3 -3
  15. package/dist/build/index.d.ts +22 -22
  16. package/dist/build/package.json +1 -1
  17. package/dist/cli.cjs +3035 -767
  18. package/dist/core-internal.d.ts +4622 -4153
  19. package/dist/core.cjs +7327 -6169
  20. package/dist/core.cjs.map +1 -1
  21. package/dist/core.min.mjs +1 -1
  22. package/dist/core.mjs +7294 -6163
  23. package/dist/core.mjs.map +1 -1
  24. package/dist/core.prod.cjs +3209 -2612
  25. package/dist/core.prod.mjs +3932 -3294
  26. package/dist/insights/index.qwik.cjs +1 -4142
  27. package/dist/insights/index.qwik.mjs +63 -4133
  28. package/dist/insights/vite/index.cjs +1 -82
  29. package/dist/insights/vite/index.mjs +65 -37
  30. package/dist/insights/vite.d.ts +22 -0
  31. package/dist/{insights/insights.d.ts → insights.d.ts} +33 -22
  32. package/dist/loader/index.cjs +2 -2
  33. package/dist/loader/index.mjs +2 -2
  34. package/dist/loader/package.json +1 -1
  35. package/dist/optimizer.cjs +201 -3817
  36. package/dist/optimizer.d.ts +754 -707
  37. package/dist/optimizer.mjs +2605 -3628
  38. package/dist/preloader.cjs +266 -0
  39. package/dist/preloader.mjs +195 -0
  40. package/dist/qwikloader.debug.js +228 -222
  41. package/dist/qwikloader.js +1 -3
  42. package/dist/server.cjs +915 -621
  43. package/dist/server.d.ts +519 -402
  44. package/dist/server.mjs +900 -615
  45. package/dist/starters/adapters/aws-lambda/adapters/aws-lambda/vite.config.mts +1 -1
  46. package/dist/starters/adapters/aws-lambda/package.json +1 -1
  47. package/dist/starters/adapters/aws-lambda/serverless.yml +15 -0
  48. package/dist/starters/adapters/aws-lambda/src/entry_aws-lambda.tsx +2 -8
  49. package/dist/starters/adapters/azure-swa/adapters/azure-swa/vite.config.mts +1 -1
  50. package/dist/starters/adapters/azure-swa/package.json +1 -1
  51. package/dist/starters/adapters/azure-swa/public/staticwebapp.config.json +7 -0
  52. package/dist/starters/adapters/azure-swa/src/entry.azure-swa.tsx +2 -4
  53. package/dist/starters/adapters/bun/adapters/bun/vite.config.mts +2 -2
  54. package/dist/starters/adapters/bun/package.json +1 -1
  55. package/dist/starters/adapters/bun/src/entry.bun.ts +3 -4
  56. package/dist/starters/adapters/cloud-run/adapters/cloud-run/vite.config.mts +1 -1
  57. package/dist/starters/adapters/cloud-run/package.json +1 -1
  58. package/dist/starters/adapters/cloud-run/src/entry.cloud-run.tsx +2 -6
  59. package/dist/starters/adapters/cloudflare-pages/adapters/cloudflare-pages/vite.config.mts +1 -1
  60. package/dist/starters/adapters/cloudflare-pages/package.json +1 -1
  61. package/dist/starters/adapters/cloudflare-pages/public/_headers +2 -0
  62. package/dist/starters/adapters/cloudflare-pages/src/entry.cloudflare-pages.tsx +2 -4
  63. package/dist/starters/adapters/deno/adapters/deno/vite.config.mts +1 -1
  64. package/dist/starters/adapters/deno/package.json +1 -1
  65. package/dist/starters/adapters/deno/src/entry.deno.ts +3 -4
  66. package/dist/starters/adapters/express/adapters/express/vite.config.mts +1 -1
  67. package/dist/starters/adapters/express/package.json +1 -1
  68. package/dist/starters/adapters/express/src/entry.express.tsx +6 -5
  69. package/dist/starters/adapters/fastify/adapters/fastify/vite.config.mts +1 -1
  70. package/dist/starters/adapters/fastify/package.json +1 -1
  71. package/dist/starters/adapters/fastify/src/entry.fastify.tsx +3 -2
  72. package/dist/starters/adapters/fastify/src/plugins/fastify-qwik.ts +10 -3
  73. package/dist/starters/adapters/firebase/adapters/firebase/vite.config.mts +1 -1
  74. package/dist/starters/adapters/firebase/firebase.json +12 -1
  75. package/dist/starters/adapters/firebase/functions/index.js +2 -3
  76. package/dist/starters/adapters/firebase/package.json +1 -1
  77. package/dist/starters/adapters/firebase/src/entry-firebase.tsx +2 -4
  78. package/dist/starters/adapters/netlify-edge/adapters/netlify-edge/vite.config.mts +1 -1
  79. package/dist/starters/adapters/netlify-edge/package.json +1 -1
  80. package/dist/starters/adapters/netlify-edge/public/_headers +2 -0
  81. package/dist/starters/adapters/netlify-edge/src/entry.netlify-edge.tsx +2 -4
  82. package/dist/starters/adapters/node-server/adapters/node-server/vite.config.mts +1 -1
  83. package/dist/starters/adapters/node-server/package.json +1 -1
  84. package/dist/starters/adapters/node-server/src/entry.node-server.tsx +3 -4
  85. package/dist/starters/adapters/ssg/README.md +9 -0
  86. package/dist/starters/adapters/{static/adapters/static → ssg/adapters/ssg}/vite.config.mts +2 -2
  87. package/dist/starters/adapters/ssg/package.json +19 -0
  88. package/dist/starters/adapters/vercel-edge/adapters/vercel-edge/vite.config.mts +1 -1
  89. package/dist/starters/adapters/vercel-edge/package.json +1 -1
  90. package/dist/starters/adapters/vercel-edge/src/entry.vercel-edge.tsx +2 -4
  91. package/dist/starters/adapters/vercel-edge/vercel.json +1 -1
  92. package/dist/starters/features/auth/package.json +1 -1
  93. package/dist/starters/features/bootstrap/src/routes/bootstrap/layout.tsx +0 -11
  94. package/dist/starters/features/csr/index.html +23 -0
  95. package/dist/starters/features/csr/package.json +29 -0
  96. package/dist/starters/features/csr/src/root.tsx +15 -0
  97. package/dist/starters/features/csr/vite.config.mts +13 -0
  98. package/dist/starters/features/localize/package.json +3 -3
  99. package/dist/starters/features/localize/src/entry.ssr.tsx +17 -23
  100. package/dist/starters/features/localize/src/routes/[locale]/i18n-utils.ts +1 -1
  101. package/dist/starters/features/pandacss/package.json +1 -1
  102. package/dist/starters/features/partytown/package.json +4 -4
  103. package/dist/starters/features/partytown/src/components/partytown/partytown.tsx +2 -2
  104. package/dist/starters/features/playwright/playwright-report/index.html +953 -911
  105. package/dist/starters/features/postcss/postcss.config.js +2 -2
  106. package/dist/starters/features/service-worker/package.json +13 -0
  107. package/dist/starters/features/service-worker/src/routes/service-worker.ts +14 -0
  108. package/dist/starters/features/styled-vanilla-extract/package.json +2 -1
  109. package/dist/starters/features/tailwind/package.json +4 -3
  110. package/dist/starters/features/tailwind/prettier.config.js +10 -0
  111. package/dist/starters/features/tailwind/src/global.css +1 -1
  112. package/dist/starters/features/tailwind-v3/package.json +1 -1
  113. package/dist/starters/features/tailwind-v3/prettier.config.js +10 -0
  114. package/dist/starters/features/tailwind-v3/tailwind.config.js +2 -2
  115. package/dist/testing/index.cjs +14313 -11732
  116. package/dist/testing/index.d.ts +1112 -141
  117. package/dist/testing/index.mjs +14225 -11661
  118. package/dist/testing/package.json +1 -1
  119. package/package.json +28 -14
  120. package/public.d.ts +5 -0
  121. package/server.d.ts +1 -0
  122. package/dist/insights/index.d.ts +0 -1
  123. package/dist/insights/vite/index.d.ts +0 -1
  124. package/dist/insights/vite/insights-plugin.d.ts +0 -10
  125. package/dist/prefetch/index.cjs +0 -4
  126. package/dist/prefetch/index.d.ts +0 -2
  127. package/dist/prefetch/index.mjs +0 -3
  128. package/dist/qwik-prefetch.debug.js +0 -244
  129. package/dist/qwik-prefetch.js +0 -1
  130. package/dist/starters/adapters/static/README.md +0 -5
  131. package/dist/starters/adapters/static/package.json +0 -19
  132. package/dist/starters/features/tailwind/.prettierrc.js +0 -3
@@ -1,226 +1,232 @@
1
- (() => {
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
6
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
7
- enumerable: !0,
8
- configurable: !0,
9
- writable: !0,
10
- value: value
11
- }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {})) {
14
- __hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]);
1
+ const doc = document;
2
+ const win = window;
3
+ const events = /* @__PURE__ */ new Set();
4
+ const roots = /* @__PURE__ */ new Set([doc]);
5
+ let hasInitialized;
6
+ const nativeQuerySelectorAll = (root, selector) => Array.from(root.querySelectorAll(selector));
7
+ const querySelectorAll = (query) => {
8
+ const elements = [];
9
+ roots.forEach((root) => elements.push(...nativeQuerySelectorAll(root, query)));
10
+ return elements;
11
+ };
12
+ const findShadowRoots = (fragment) => {
13
+ processEventOrNode(fragment);
14
+ nativeQuerySelectorAll(fragment, "[q\\:shadowroot]").forEach((parent) => {
15
+ const shadowRoot = parent.shadowRoot;
16
+ shadowRoot && findShadowRoots(shadowRoot);
17
+ });
18
+ };
19
+ const isPromise = (promise) => promise && typeof promise.then === "function";
20
+ const broadcast = (infix, ev, type = ev.type) => {
21
+ querySelectorAll("[on" + infix + "\\:" + type + "]").forEach((el) => {
22
+ dispatch(el, infix, ev, type);
23
+ });
24
+ };
25
+ const resolveContainer = (containerEl) => {
26
+ if (containerEl._qwikjson_ === void 0) {
27
+ const parentJSON = containerEl === doc.documentElement ? doc.body : containerEl;
28
+ let script = parentJSON.lastElementChild;
29
+ while (script) {
30
+ if (script.tagName === "SCRIPT" && script.getAttribute("type") === "qwik/json") {
31
+ containerEl._qwikjson_ = JSON.parse(
32
+ script.textContent.replace(/\\x3C(\/?script)/gi, "<$1")
33
+ );
34
+ break;
35
+ }
36
+ script = script.previousElementSibling;
37
+ }
38
+ }
39
+ };
40
+ const createEvent = (eventName, detail) => new CustomEvent(eventName, {
41
+ detail
42
+ });
43
+ const dispatch = async (element, scope, ev, eventName = ev.type) => {
44
+ const attrName = "on" + scope + ":" + eventName;
45
+ if (element.hasAttribute("preventdefault:" + eventName)) {
46
+ ev.preventDefault();
47
+ }
48
+ if (element.hasAttribute("stoppropagation:" + eventName)) {
49
+ ev.stopPropagation();
50
+ }
51
+ const ctx = element._qc_;
52
+ const relevantListeners = ctx && ctx.li.filter((li) => li[0] === attrName);
53
+ if (relevantListeners && relevantListeners.length > 0) {
54
+ for (const listener of relevantListeners) {
55
+ const results = listener[1].getFn([element, ev], () => element.isConnected)(ev, element);
56
+ const cancelBubble = ev.cancelBubble;
57
+ if (isPromise(results)) {
58
+ await results;
59
+ }
60
+ if (cancelBubble) {
61
+ ev.stopPropagation();
62
+ }
63
+ }
64
+ return;
65
+ }
66
+ const attrValue = element.getAttribute(attrName);
67
+ const qDispatchEvent = element.qDispatchEvent;
68
+ if (qDispatchEvent) {
69
+ return qDispatchEvent(ev, scope);
70
+ }
71
+ if (attrValue) {
72
+ const container = element.closest(
73
+ "[q\\:container]:not([q\\:container=html]):not([q\\:container=text])"
74
+ );
75
+ const qBase = container.getAttribute("q:base");
76
+ const qVersion = container.getAttribute("q:version") || "unknown";
77
+ const qManifest = container.getAttribute("q:manifest-hash") || "dev";
78
+ const base = new URL(qBase, doc.baseURI);
79
+ for (const qrl of attrValue.split("\n")) {
80
+ const url = new URL(qrl, base);
81
+ const href = url.href;
82
+ const symbol = url.hash.replace(/^#?([^?[|]*).*$/, "$1") || "default";
83
+ const reqTime = performance.now();
84
+ let handler;
85
+ let importError;
86
+ let error;
87
+ const isSync = qrl.startsWith("#");
88
+ const eventData = {
89
+ qBase,
90
+ qManifest,
91
+ qVersion,
92
+ href,
93
+ symbol,
94
+ element,
95
+ reqTime
96
+ };
97
+ if (isSync) {
98
+ const hash = container.getAttribute("q:instance");
99
+ handler = (doc["qFuncs_" + hash] || [])[Number.parseInt(symbol)];
100
+ if (!handler) {
101
+ importError = "sync";
102
+ error = new Error("sym:" + symbol);
15
103
  }
16
- if (__getOwnPropSymbols) {
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- __propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]);
19
- }
104
+ } else {
105
+ emitEvent("qsymbol", eventData);
106
+ const uri = url.href.split("#")[0];
107
+ try {
108
+ const module = import(
109
+ /* @vite-ignore */
110
+ uri
111
+ );
112
+ resolveContainer(container);
113
+ handler = (await module)[symbol];
114
+ if (!handler) {
115
+ importError = "no-symbol";
116
+ error = new Error(`${symbol} not in ${uri}`);
117
+ }
118
+ } catch (err) {
119
+ importError || (importError = "async");
120
+ error = err;
20
121
  }
21
- return a;
22
- };
23
- ((doc, hasInitialized) => {
24
- const Q_CONTEXT = "__q_context__";
25
- const win = window;
26
- const events = new Set;
27
- const roots = new Set([ doc ]);
28
- const nativeQuerySelectorAll = (root, selector) => Array.from(root.querySelectorAll(selector));
29
- const querySelectorAll = query => {
30
- const elements = [];
31
- roots.forEach((root => elements.push(...nativeQuerySelectorAll(root, query))));
32
- return elements;
33
- };
34
- const findShadowRoots = fragment => {
35
- processEventOrNode(fragment);
36
- nativeQuerySelectorAll(fragment, "[q\\:shadowroot]").forEach((parent => {
37
- const shadowRoot = parent.shadowRoot;
38
- shadowRoot && findShadowRoots(shadowRoot);
39
- }));
40
- };
41
- const isPromise = promise => promise && "function" == typeof promise.then;
42
- const broadcast = (infix, ev, type = ev.type) => {
43
- querySelectorAll("[on" + infix + "\\:" + type + "]").forEach((el => dispatch(el, infix, ev, type)));
44
- };
45
- const resolveContainer = containerEl => {
46
- if (void 0 === containerEl._qwikjson_) {
47
- let script = (containerEl === doc.documentElement ? doc.body : containerEl).lastElementChild;
48
- while (script) {
49
- if ("SCRIPT" === script.tagName && "qwik/json" === script.getAttribute("type")) {
50
- containerEl._qwikjson_ = JSON.parse(script.textContent.replace(/\\x3C(\/?script)/gi, "<$1"));
51
- break;
52
- }
53
- script = script.previousElementSibling;
54
- }
55
- }
56
- };
57
- const createEvent = (eventName, detail) => new CustomEvent(eventName, {
58
- detail: detail
122
+ }
123
+ if (!handler) {
124
+ emitEvent("qerror", {
125
+ importError,
126
+ error,
127
+ ...eventData
59
128
  });
60
- const dispatch = async (element, scope, ev, eventName = ev.type) => {
61
- const attrName = "on" + scope + ":" + eventName;
62
- element.hasAttribute("preventdefault:" + eventName) && ev.preventDefault();
63
- element.hasAttribute("stoppropagation:" + eventName) && ev.stopPropagation();
64
- const ctx = element._qc_;
65
- const relevantListeners = ctx && ctx.li.filter((li => li[0] === attrName));
66
- if (relevantListeners && relevantListeners.length > 0) {
67
- for (const listener of relevantListeners) {
68
- const results = listener[1].getFn([ element, ev ], (() => element.isConnected))(ev, element);
69
- const cancelBubble = ev.cancelBubble;
70
- isPromise(results) && await results;
71
- cancelBubble && ev.stopPropagation();
72
- }
73
- return;
74
- }
75
- const qDispatchEvent = element.qDispatchEvent;
76
- if (qDispatchEvent) {
77
- return qDispatchEvent(ev, scope);
78
- }
79
- const attrValue = element.getAttribute(attrName);
80
- if (attrValue) {
81
- const container = element.closest("[q\\:container]:not([q\\:container=html]):not([q\\:container=text])");
82
- const qBase = container.getAttribute("q:base");
83
- const qVersion = container.getAttribute("q:version") || "unknown";
84
- const qManifest = container.getAttribute("q:manifest-hash") || "dev";
85
- const base = new URL(qBase, doc.baseURI);
86
- for (const qrl of attrValue.split("\n")) {
87
- const url = new URL(qrl, base);
88
- const href = url.href;
89
- const symbol = url.hash.replace(/^#?([^?[|]*).*$/, "$1") || "default";
90
- const reqTime = performance.now();
91
- let handler;
92
- let importError;
93
- let error;
94
- const isSync = qrl.startsWith("#");
95
- const eventData = {
96
- qBase: qBase,
97
- qManifest: qManifest,
98
- qVersion: qVersion,
99
- href: href,
100
- symbol: symbol,
101
- element: element,
102
- reqTime: reqTime
103
- };
104
- if (isSync) {
105
- const hash = container.getAttribute("q:instance");
106
- handler = (doc["qFuncs_" + hash] || [])[Number.parseInt(symbol)];
107
- if (!handler) {
108
- importError = "sync";
109
- error = new Error("sync handler error for symbol: " + symbol);
110
- }
111
- } else {
112
- const uri = url.href.split("#")[0];
113
- try {
114
- const module = import(
115
- /* @vite-ignore */
116
- uri);
117
- resolveContainer(container);
118
- handler = (await module)[symbol];
119
- if (!handler) {
120
- importError = "no-symbol";
121
- error = new Error(`${symbol} not in ${uri}`);
122
- }
123
- } catch (err) {
124
- importError || (importError = "async");
125
- error = err;
126
- }
127
- }
128
- if (!handler) {
129
- emitEvent("qerror", __spreadValues({
130
- importError: importError,
131
- error: error
132
- }, eventData));
133
- console.error(error);
134
- break;
135
- }
136
- const previousCtx = doc[Q_CONTEXT];
137
- if (element.isConnected) {
138
- try {
139
- doc[Q_CONTEXT] = [ element, ev, url ];
140
- isSync || emitEvent("qsymbol", __spreadValues({}, eventData));
141
- const results = handler(ev, element);
142
- isPromise(results) && await results;
143
- } catch (error2) {
144
- emitEvent("qerror", __spreadValues({
145
- error: error2
146
- }, eventData));
147
- } finally {
148
- doc[Q_CONTEXT] = previousCtx;
149
- }
150
- }
151
- }
152
- }
153
- };
154
- const emitEvent = (eventName, detail) => {
155
- doc.dispatchEvent(createEvent(eventName, detail));
156
- };
157
- const camelToKebab = str => str.replace(/([A-Z])/g, (a => "-" + a.toLowerCase()));
158
- const processDocumentEvent = async ev => {
159
- let type = camelToKebab(ev.type);
160
- let element = ev.target;
161
- broadcast("-document", ev, type);
162
- while (element && element.getAttribute) {
163
- const results = dispatch(element, "", ev, type);
164
- let cancelBubble = ev.cancelBubble;
165
- isPromise(results) && await results;
166
- cancelBubble = cancelBubble || ev.cancelBubble || element.hasAttribute("stoppropagation:" + ev.type);
167
- element = ev.bubbles && !0 !== cancelBubble ? element.parentElement : null;
168
- }
169
- };
170
- const processWindowEvent = ev => {
171
- broadcast("-window", ev, camelToKebab(ev.type));
172
- };
173
- const processReadyStateChange = () => {
174
- var _a;
175
- const readyState = doc.readyState;
176
- if (!hasInitialized && ("interactive" == readyState || "complete" == readyState)) {
177
- roots.forEach(findShadowRoots);
178
- hasInitialized = 1;
179
- emitEvent("qinit");
180
- (null != (_a = win.requestIdleCallback) ? _a : win.setTimeout).bind(win)((() => emitEvent("qidle")));
181
- if (events.has("qvisible")) {
182
- const results = querySelectorAll("[on\\:qvisible]");
183
- const observer = new IntersectionObserver((entries => {
184
- for (const entry of entries) {
185
- if (entry.isIntersecting) {
186
- observer.unobserve(entry.target);
187
- dispatch(entry.target, "", createEvent("qvisible", entry));
188
- }
189
- }
190
- }));
191
- results.forEach((el => observer.observe(el)));
192
- }
193
- }
194
- };
195
- const addEventListener = (el, eventName, handler, capture = !1) => el.addEventListener(eventName, handler, {
196
- capture: capture,
197
- passive: !1
198
- });
199
- const processEventOrNode = (...eventNames) => {
200
- for (const eventNameOrNode of eventNames) {
201
- if ("string" == typeof eventNameOrNode) {
202
- if (!events.has(eventNameOrNode)) {
203
- roots.forEach((root => addEventListener(root, eventNameOrNode, processDocumentEvent, !0)));
204
- addEventListener(win, eventNameOrNode, processWindowEvent, !0);
205
- events.add(eventNameOrNode);
206
- }
207
- } else if (!roots.has(eventNameOrNode)) {
208
- events.forEach((eventName => addEventListener(eventNameOrNode, eventName, processDocumentEvent, !0)));
209
- roots.add(eventNameOrNode);
210
- }
211
- }
212
- };
213
- if (!(Q_CONTEXT in doc)) {
214
- doc[Q_CONTEXT] = 0;
215
- const qwikevents = win.qwikevents;
216
- Array.isArray(qwikevents) && processEventOrNode(...qwikevents);
217
- win.qwikevents = {
218
- events: events,
219
- roots: roots,
220
- push: processEventOrNode
221
- };
222
- addEventListener(doc, "readystatechange", processReadyStateChange);
223
- processReadyStateChange();
129
+ console.error(error);
130
+ break;
131
+ }
132
+ const previousCtx = doc.__q_context__;
133
+ if (element.isConnected) {
134
+ try {
135
+ doc.__q_context__ = [element, ev, url];
136
+ const results = handler(ev, element);
137
+ if (isPromise(results)) {
138
+ await results;
139
+ }
140
+ } catch (error2) {
141
+ emitEvent("qerror", { error: error2, ...eventData });
142
+ } finally {
143
+ doc.__q_context__ = previousCtx;
144
+ }
145
+ }
146
+ }
147
+ }
148
+ };
149
+ const emitEvent = (eventName, detail) => {
150
+ doc.dispatchEvent(createEvent(eventName, detail));
151
+ };
152
+ const camelToKebab = (str) => str.replace(/([A-Z])/g, (a) => "-" + a.toLowerCase());
153
+ const processDocumentEvent = async (ev) => {
154
+ let type = camelToKebab(ev.type);
155
+ let element = ev.target;
156
+ broadcast("-document", ev, type);
157
+ while (element && element.getAttribute) {
158
+ const results = dispatch(element, "", ev, type);
159
+ let cancelBubble = ev.cancelBubble;
160
+ if (isPromise(results)) {
161
+ await results;
162
+ }
163
+ cancelBubble || (cancelBubble = cancelBubble || ev.cancelBubble || element.hasAttribute("stoppropagation:" + ev.type));
164
+ element = ev.bubbles && cancelBubble !== true ? element.parentElement : null;
165
+ }
166
+ };
167
+ const processWindowEvent = (ev) => {
168
+ broadcast("-window", ev, camelToKebab(ev.type));
169
+ };
170
+ const processReadyStateChange = () => {
171
+ const readyState = doc.readyState;
172
+ if (!hasInitialized && (readyState == "interactive" || readyState == "complete")) {
173
+ roots.forEach(findShadowRoots);
174
+ hasInitialized = 1;
175
+ emitEvent("qinit");
176
+ const riC = win.requestIdleCallback ?? win.setTimeout;
177
+ riC.bind(win)(() => emitEvent("qidle"));
178
+ if (events.has("qvisible")) {
179
+ const results = querySelectorAll("[on\\:qvisible]");
180
+ const observer = new IntersectionObserver((entries) => {
181
+ for (const entry of entries) {
182
+ if (entry.isIntersecting) {
183
+ observer.unobserve(entry.target);
184
+ dispatch(entry.target, "", createEvent("qvisible", entry));
185
+ }
224
186
  }
225
- })(document);
226
- })();
187
+ });
188
+ results.forEach((el) => observer.observe(el));
189
+ }
190
+ }
191
+ };
192
+ const addEventListener = (el, eventName, handler, capture = false) => {
193
+ el.addEventListener(eventName, handler, { capture, passive: false });
194
+ };
195
+ const processEventOrNode = (...eventNames) => {
196
+ for (const eventNameOrNode of eventNames) {
197
+ if (typeof eventNameOrNode === "string") {
198
+ if (!events.has(eventNameOrNode)) {
199
+ roots.forEach(
200
+ (root) => addEventListener(root, eventNameOrNode, processDocumentEvent, true)
201
+ );
202
+ addEventListener(win, eventNameOrNode, processWindowEvent, true);
203
+ events.add(eventNameOrNode);
204
+ }
205
+ } else {
206
+ if (!roots.has(eventNameOrNode)) {
207
+ events.forEach(
208
+ (eventName) => addEventListener(eventNameOrNode, eventName, processDocumentEvent, true)
209
+ );
210
+ roots.add(eventNameOrNode);
211
+ }
212
+ }
213
+ }
214
+ };
215
+ if (!("__q_context__" in doc)) {
216
+ doc.__q_context__ = 0;
217
+ const qwikevents = win.qwikevents;
218
+ if (qwikevents) {
219
+ if (Array.isArray(qwikevents)) {
220
+ processEventOrNode(...qwikevents);
221
+ } else {
222
+ processEventOrNode("click", "input");
223
+ }
224
+ }
225
+ win.qwikevents = {
226
+ events,
227
+ roots,
228
+ push: processEventOrNode
229
+ };
230
+ addEventListener(doc, "readystatechange", processReadyStateChange);
231
+ processReadyStateChange();
232
+ }
@@ -1,3 +1 @@
1
- (()=>{var e=Object.defineProperty,t=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable,r=(t,o,n)=>o in t?e(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n,s=(e,s)=>{for(var a in s||(s={}))o.call(s,a)&&r(e,a,s[a]);if(t)for(var a of t(s))n.call(s,a)&&r(e,a,s[a]);return e};((e,t)=>{const o="__q_context__",n=window,r=new Set,a=new Set([e]),i="replace",c="forEach",l="target",f="getAttribute",p="isConnected",b="qvisible",u="_qwikjson_",h=(e,t)=>Array.from(e.querySelectorAll(t)),y=e=>{const t=[];return a.forEach((o=>t.push(...h(o,e)))),t},d=e=>{S(e),h(e,"[q\\:shadowroot]").forEach((e=>{const t=e.shadowRoot;t&&d(t)}))},q=e=>e&&"function"==typeof e.then,m=(e,t,o=t.type)=>{y("[on"+e+"\\:"+o+"]")[c]((n=>g(n,e,t,o)))},w=t=>{if(void 0===t[u]){let o=(t===e.documentElement?e.body:t).lastElementChild;for(;o;){if("SCRIPT"===o.tagName&&"qwik/json"===o[f]("type")){t[u]=JSON.parse(o.textContent[i](/\\x3C(\/?script)/gi,"<$1"));break}o=o.previousElementSibling}}},v=(e,t)=>new CustomEvent(e,{detail:t}),g=async(t,n,r,a=r.type)=>{const c="on"+n+":"+a;t.hasAttribute("preventdefault:"+a)&&r.preventDefault(),t.hasAttribute("stoppropagation:"+a)&&r.stopPropagation();const l=t._qc_,b=l&&l.li.filter((e=>e[0]===c));if(b&&b.length>0){for(const e of b){const o=e[1].getFn([t,r],(()=>t[p]))(r,t),n=r.cancelBubble;q(o)&&await o,n&&r.stopPropagation()}return}const u=t.qDispatchEvent;if(u)return u(r,n);const h=t[f](c);if(h){const n=t.closest("[q\\:container]:not([q\\:container=html]):not([q\\:container=text])"),a=n[f]("q:base"),c=n[f]("q:version")||"unknown",l=n[f]("q:manifest-hash")||"dev",b=new URL(a,e.baseURI);for(const f of h.split("\n")){const u=new URL(f,b),h=u.href,y=u.hash[i](/^#?([^?[|]*).*$/,"$1")||"default",d=performance.now();let m,v,g;const A=f.startsWith("#"),_={qBase:a,qManifest:l,qVersion:c,href:h,symbol:y,element:t,reqTime:d};if(A){const t=n.getAttribute("q:instance");m=(e["qFuncs_"+t]||[])[Number.parseInt(y)],m||(v="sync",g=Error("sync handler error for symbol: "+y))}else{const e=u.href.split("#")[0];try{const t=import(
2
- /* @vite-ignore */
3
- e);w(n),m=(await t)[y],m||(v="no-symbol",g=Error(`${y} not in ${e}`))}catch(e){v||(v="async"),g=e}}if(!m){E("qerror",s({importError:v,error:g},_)),console.error(g);break}const k=e[o];if(t[p])try{e[o]=[t,r,u],A||E("qsymbol",s({},_));const n=m(r,t);q(n)&&await n}catch(e){E("qerror",s({error:e},_))}finally{e[o]=k}}}},E=(t,o)=>{e.dispatchEvent(v(t,o))},A=e=>e[i](/([A-Z])/g,(e=>"-"+e.toLowerCase())),_=async e=>{let t=A(e.type),o=e[l];for(m("-document",e,t);o&&o[f];){const n=g(o,"",e,t);let r=e.cancelBubble;q(n)&&await n,r=r||e.cancelBubble||o.hasAttribute("stoppropagation:"+e.type),o=e.bubbles&&!0!==r?o.parentElement:null}},k=e=>{m("-window",e,A(e.type))},C=()=>{var o;const s=e.readyState;if(!t&&("interactive"==s||"complete"==s)&&(a.forEach(d),t=1,E("qinit"),(null!=(o=n.requestIdleCallback)?o:n.setTimeout).bind(n)((()=>E("qidle"))),r.has(b))){const e=y("[on\\:"+b+"]"),t=new IntersectionObserver((e=>{for(const o of e)o.isIntersecting&&(t.unobserve(o[l]),g(o[l],"",v(b,o)))}));e[c]((e=>t.observe(e)))}},O=(e,t,o,n=!1)=>e.addEventListener(t,o,{capture:n,passive:!1}),S=(...e)=>{for(const t of e)"string"==typeof t?r.has(t)||(a.forEach((e=>O(e,t,_,!0))),O(n,t,k,!0),r.add(t)):a.has(t)||(r.forEach((e=>O(t,e,_,!0))),a.add(t))};if(!(o in e)){e[o]=0;const t=n.qwikevents;Array.isArray(t)&&S(...t),n.qwikevents={events:r,roots:a,push:S},O(e,"readystatechange",C),C()}})(document)})();
1
+ const t=document,e=window,n=new Set,o=new Set([t]);let r;const s=(t,e)=>Array.from(t.querySelectorAll(e)),a=t=>{const e=[];return o.forEach(n=>e.push(...s(n,t))),e},i=t=>{m(t),s(t,"[q\\:shadowroot]").forEach(t=>{const e=t.shadowRoot;e&&i(e)})},c=t=>t&&"function"==typeof t.then,l=(t,e,n=e.type)=>{a("[on"+t+"\\:"+n+"]").forEach(o=>{u(o,t,e,n)})},f=e=>{if(void 0===e._qwikjson_){let n=(e===t.documentElement?t.body:e).lastElementChild;for(;n;){if("SCRIPT"===n.tagName&&"qwik/json"===n.getAttribute("type")){e._qwikjson_=JSON.parse(n.textContent.replace(/\\x3C(\/?script)/gi,"<$1"));break}n=n.previousElementSibling}}},p=(t,e)=>new CustomEvent(t,{detail:e}),u=async(e,n,o,r=o.type)=>{const s="on"+n+":"+r;e.hasAttribute("preventdefault:"+r)&&o.preventDefault(),e.hasAttribute("stoppropagation:"+r)&&o.stopPropagation();const a=e._qc_,i=a&&a.li.filter(t=>t[0]===s);if(i&&i.length>0){for(const t of i){const n=t[1].getFn([e,o],()=>e.isConnected)(o,e),r=o.cancelBubble;c(n)&&await n,r&&o.stopPropagation()}return}const l=e.getAttribute(s),p=e.qDispatchEvent;if(p)return p(o,n);if(l){const n=e.closest("[q\\:container]:not([q\\:container=html]):not([q\\:container=text])"),r=n.getAttribute("q:base"),s=n.getAttribute("q:version")||"unknown",a=n.getAttribute("q:manifest-hash")||"dev",i=new URL(r,t.baseURI);for(const p of l.split("\n")){const l=new URL(p,i),u=l.href,q=l.hash.replace(/^#?([^?[|]*).*$/,"$1")||"default",h=performance.now();let _,d,y;const m=p.startsWith("#"),w={qBase:r,qManifest:a,qVersion:s,href:u,symbol:q,element:e,reqTime:h};if(m){const e=n.getAttribute("q:instance");_=(t["qFuncs_"+e]||[])[Number.parseInt(q)],_||(d="sync",y=Error("sym:"+q))}else{b("qsymbol",w);const t=l.href.split("#")[0];try{const e=import(t);f(n),_=(await e)[q],_||(d="no-symbol",y=Error(`${q} not in ${t}`))}catch(t){d||(d="async"),y=t}}if(!_){b("qerror",{importError:d,error:y,...w}),console.error(y);break}const g=t.__q_context__;if(e.isConnected)try{t.__q_context__=[e,o,l];const n=_(o,e);c(n)&&await n}catch(t){b("qerror",{error:t,...w})}finally{t.__q_context__=g}}}},b=(e,n)=>{t.dispatchEvent(p(e,n))},q=t=>t.replace(/([A-Z])/g,t=>"-"+t.toLowerCase()),h=async t=>{let e=q(t.type),n=t.target;for(l("-document",t,e);n&&n.getAttribute;){const o=u(n,"",t,e);let r=t.cancelBubble;c(o)&&await o,r||(r=r||t.cancelBubble||n.hasAttribute("stoppropagation:"+t.type)),n=t.bubbles&&!0!==r?n.parentElement:null}},_=t=>{l("-window",t,q(t.type))},d=()=>{const s=t.readyState;if(!r&&("interactive"==s||"complete"==s)&&(o.forEach(i),r=1,b("qinit"),(e.requestIdleCallback??e.setTimeout).bind(e)(()=>b("qidle")),n.has("qvisible"))){const t=a("[on\\:qvisible]"),e=new IntersectionObserver(t=>{for(const n of t)n.isIntersecting&&(e.unobserve(n.target),u(n.target,"",p("qvisible",n)))});t.forEach(t=>e.observe(t))}},y=(t,e,n,o=!1)=>{t.addEventListener(e,n,{capture:o,passive:!1})},m=(...t)=>{for(const r of t)"string"==typeof r?n.has(r)||(o.forEach(t=>y(t,r,h,!0)),y(e,r,_,!0),n.add(r)):o.has(r)||(n.forEach(t=>y(r,t,h,!0)),o.add(r))};if(!("__q_context__"in t)){t.__q_context__=0;const r=e.qwikevents;r&&(Array.isArray(r)?m(...r):m("click","input")),e.qwikevents={events:n,roots:o,push:m},y(t,"readystatechange",d),d()}