@qwik.dev/core 2.0.0-beta.7 → 2.0.0-beta.8

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 (38) 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.win32-x64-msvc.node +0 -0
  5. package/bindings/qwik_wasm_bg.wasm +0 -0
  6. package/dist/build/package.json +1 -1
  7. package/dist/cli.cjs +17 -17
  8. package/dist/core-internal.d.ts +8 -2
  9. package/dist/core.cjs +48 -15
  10. package/dist/core.cjs.map +1 -1
  11. package/dist/core.min.mjs +1 -1
  12. package/dist/core.mjs +47 -16
  13. package/dist/core.mjs.map +1 -1
  14. package/dist/core.prod.cjs +20 -14
  15. package/dist/core.prod.mjs +23 -14
  16. package/dist/loader/index.cjs +2 -2
  17. package/dist/loader/index.mjs +2 -2
  18. package/dist/loader/package.json +1 -1
  19. package/dist/optimizer.cjs +5 -5
  20. package/dist/optimizer.mjs +5 -5
  21. package/dist/qwikloader.debug.js +0 -13
  22. package/dist/qwikloader.js +1 -1
  23. package/dist/server.cjs +76 -23
  24. package/dist/server.mjs +75 -23
  25. package/dist/starters/features/auth/package.json +1 -1
  26. package/dist/starters/features/localize/package.json +3 -3
  27. package/dist/starters/features/pandacss/package.json +1 -1
  28. package/dist/starters/features/playwright/playwright-report/index.html +943 -903
  29. package/dist/starters/features/postcss/postcss.config.js +1 -1
  30. package/dist/starters/features/tailwind/package.json +2 -2
  31. package/dist/starters/features/tailwind/prettier.config.js +10 -0
  32. package/dist/starters/features/tailwind-v3/package.json +1 -1
  33. package/dist/starters/features/tailwind-v3/prettier.config.js +10 -0
  34. package/dist/testing/index.cjs +81 -29
  35. package/dist/testing/index.mjs +80 -29
  36. package/dist/testing/package.json +1 -1
  37. package/package.json +6 -6
  38. package/dist/starters/features/tailwind/.prettierrc.js +0 -3
package/dist/server.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * @qwik.dev/core/server 2.0.0-beta.7-dev+2dd89a6
3
+ * @qwik.dev/core/server 2.0.0-beta.8-dev+434cd18
4
4
  * Copyright QwikDev. All Rights Reserved.
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://github.com/QwikDev/qwik/blob/main/LICENSE
@@ -81,15 +81,15 @@ var mapApp_findIndx = (array, key, start) => {
81
81
  }
82
82
  return bottom << 1 ^ -1;
83
83
  };
84
- var mapArray_set = (array, key, value, start) => {
84
+ var mapArray_set = (array, key, value, start, allowNullValue = false) => {
85
85
  const indx = mapApp_findIndx(array, key, start);
86
86
  if (indx >= 0) {
87
- if (value == null) {
87
+ if (value == null && !allowNullValue) {
88
88
  array.splice(indx, 2);
89
89
  } else {
90
90
  array[indx + 1] = value;
91
91
  }
92
- } else if (value != null) {
92
+ } else if (value != null || allowNullValue) {
93
93
  array.splice(indx ^ -1, 0, key, value);
94
94
  }
95
95
  };
@@ -1141,7 +1141,7 @@ function getBuildBase(opts) {
1141
1141
  return `${import.meta.env.BASE_URL || "/"}build/`;
1142
1142
  }
1143
1143
  var versions = {
1144
- qwik: "2.0.0-beta.7-dev+2dd89a6",
1144
+ qwik: "2.0.0-beta.8-dev+434cd18",
1145
1145
  qwikDom: "2.1.19"
1146
1146
  };
1147
1147
 
@@ -1157,8 +1157,8 @@ import {
1157
1157
  import { isDev as isDev5 } from "@qwik.dev/core/build";
1158
1158
 
1159
1159
  // packages/qwik/src/server/scripts.ts
1160
- var QWIK_LOADER_DEFAULT_MINIFIED = 'const t=document,e=window,n=new Set,o=new Set([t]);let r;const s=(t,e)=>Array.from(t.querySelectorAll(e)),i=t=>{const e=[];return o.forEach(n=>e.push(...s(n,t))),e},a=t=>{v(t),s(t,"[q\\\\:shadowroot]").forEach(t=>{const e=t.shadowRoot;e&&a(e)})},c=t=>t&&"function"==typeof t.then;let l=!0;const f=(t,e,n=e.type)=>{let o=l;i("[on"+t+"\\\\:"+n+"]").forEach(r=>{o=!0,b(r,t,e,n)}),o||window[t.slice(1)].removeEventListener(n,"-window"===t?d:_)},p=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}}},u=(t,e)=>new CustomEvent(t,{detail:e}),b=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 i=e._qc_,a=i&&i.li.filter(t=>t[0]===s);if(a&&a.length>0){for(const t of a){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),f=e.qDispatchEvent;if(f)return f(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",i=n.getAttribute("q:manifest-hash")||"dev",a=new URL(r,t.baseURI);for(const f of l.split("\\n")){const l=new URL(f,a),u=l.href,b=l.hash.replace(/^#?([^?[|]*).*$/,"$1")||"default",h=performance.now();let _,d,w;const m=f.startsWith("#"),y={qBase:r,qManifest:i,qVersion:s,href:u,symbol:b,element:e,reqTime:h};if(m){const e=n.getAttribute("q:instance");_=(t["qFuncs_"+e]||[])[Number.parseInt(b)],_||(d="sync",w=Error("sym:"+b))}else{q("qsymbol",y);const t=l.href.split("#")[0];try{const e=import(t);p(n),_=(await e)[b],_||(d="no-symbol",w=Error(`${b} not in ${t}`))}catch(t){d||(d="async"),w=t}}if(!_){q("qerror",{importError:d,error:w,...y}),console.error(w);break}const v=t.__q_context__;if(e.isConnected)try{t.__q_context__=[e,o,l];const n=_(o,e);c(n)&&await n}catch(t){q("qerror",{error:t,...y})}finally{t.__q_context__=v}}}},q=(e,n)=>{t.dispatchEvent(u(e,n))},h=t=>t.replace(/([A-Z])/g,t=>"-"+t.toLowerCase()),_=async t=>{let e=h(t.type),n=t.target;for(f("-document",t,e);n&&n.getAttribute;){const o=b(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}},d=t=>{f("-window",t,h(t.type))},w=()=>{var s;const c=t.readyState;if(!r&&("interactive"==c||"complete"==c)&&(o.forEach(a),r=1,q("qinit"),(null!=(s=e.requestIdleCallback)?s:e.setTimeout).bind(e)(()=>q("qidle")),n.has("qvisible"))){const t=i("[on\\\\:qvisible]"),e=new IntersectionObserver(t=>{for(const n of t)n.isIntersecting&&(e.unobserve(n.target),b(n.target,"",u("qvisible",n)))});t.forEach(t=>e.observe(t))}},m=(t,e,n,o=!1)=>{t.addEventListener(e,n,{capture:o,passive:!1})};let y;const v=(...t)=>{l=!0,clearTimeout(y),y=setTimeout(()=>l=!1,2e4);for(const r of t)"string"==typeof r?n.has(r)||(o.forEach(t=>m(t,r,_,!0)),m(e,r,d,!0),n.add(r)):o.has(r)||(n.forEach(t=>m(r,t,_,!0)),o.add(r))};if(!("__q_context__"in t)){t.__q_context__=0;const r=e.qwikevents;r&&(Array.isArray(r)?v(...r):v("click","input")),e.qwikevents={events:n,roots:o,push:v},m(t,"readystatechange",w),w()}';
1161
- var QWIK_LOADER_DEFAULT_DEBUG = 'const doc = document;\nconst win = window;\nconst events = /* @__PURE__ */ new Set();\nconst roots = /* @__PURE__ */ new Set([doc]);\nlet hasInitialized;\nconst nativeQuerySelectorAll = (root, selector) => Array.from(root.querySelectorAll(selector));\nconst querySelectorAll = (query) => {\n const elements = [];\n roots.forEach((root) => elements.push(...nativeQuerySelectorAll(root, query)));\n return elements;\n};\nconst findShadowRoots = (fragment) => {\n processEventOrNode(fragment);\n nativeQuerySelectorAll(fragment, "[q\\\\:shadowroot]").forEach((parent) => {\n const shadowRoot = parent.shadowRoot;\n shadowRoot && findShadowRoots(shadowRoot);\n });\n};\nconst isPromise = (promise) => promise && typeof promise.then === "function";\nlet doNotClean = true;\nconst broadcast = (infix, ev, type = ev.type) => {\n let found = doNotClean;\n querySelectorAll("[on" + infix + "\\\\:" + type + "]").forEach((el) => {\n found = true;\n dispatch(el, infix, ev, type);\n });\n if (!found) {\n window[infix.slice(1)].removeEventListener(\n type,\n infix === "-window" ? processWindowEvent : processDocumentEvent\n );\n }\n};\nconst resolveContainer = (containerEl) => {\n if (containerEl._qwikjson_ === void 0) {\n const parentJSON = containerEl === doc.documentElement ? doc.body : containerEl;\n let script = parentJSON.lastElementChild;\n while (script) {\n if (script.tagName === "SCRIPT" && script.getAttribute("type") === "qwik/json") {\n containerEl._qwikjson_ = JSON.parse(\n script.textContent.replace(/\\\\x3C(\\/?script)/gi, "<$1")\n );\n break;\n }\n script = script.previousElementSibling;\n }\n }\n};\nconst createEvent = (eventName, detail) => new CustomEvent(eventName, {\n detail\n});\nconst dispatch = async (element, scope, ev, eventName = ev.type) => {\n const attrName = "on" + scope + ":" + eventName;\n if (element.hasAttribute("preventdefault:" + eventName)) {\n ev.preventDefault();\n }\n if (element.hasAttribute("stoppropagation:" + eventName)) {\n ev.stopPropagation();\n }\n const ctx = element._qc_;\n const relevantListeners = ctx && ctx.li.filter((li) => li[0] === attrName);\n if (relevantListeners && relevantListeners.length > 0) {\n for (const listener of relevantListeners) {\n const results = listener[1].getFn([element, ev], () => element.isConnected)(ev, element);\n const cancelBubble = ev.cancelBubble;\n if (isPromise(results)) {\n await results;\n }\n if (cancelBubble) {\n ev.stopPropagation();\n }\n }\n return;\n }\n const attrValue = element.getAttribute(attrName);\n const qDispatchEvent = element.qDispatchEvent;\n if (qDispatchEvent) {\n return qDispatchEvent(ev, scope);\n }\n if (attrValue) {\n const container = element.closest(\n "[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])"\n );\n const qBase = container.getAttribute("q:base");\n const qVersion = container.getAttribute("q:version") || "unknown";\n const qManifest = container.getAttribute("q:manifest-hash") || "dev";\n const base = new URL(qBase, doc.baseURI);\n for (const qrl of attrValue.split("\\n")) {\n const url = new URL(qrl, base);\n const href = url.href;\n const symbol = url.hash.replace(/^#?([^?[|]*).*$/, "$1") || "default";\n const reqTime = performance.now();\n let handler;\n let importError;\n let error;\n const isSync = qrl.startsWith("#");\n const eventData = {\n qBase,\n qManifest,\n qVersion,\n href,\n symbol,\n element,\n reqTime\n };\n if (isSync) {\n const hash = container.getAttribute("q:instance");\n handler = (doc["qFuncs_" + hash] || [])[Number.parseInt(symbol)];\n if (!handler) {\n importError = "sync";\n error = new Error("sym:" + symbol);\n }\n } else {\n emitEvent("qsymbol", eventData);\n const uri = url.href.split("#")[0];\n try {\n const module = import(\n uri\n );\n resolveContainer(container);\n handler = (await module)[symbol];\n if (!handler) {\n importError = "no-symbol";\n error = new Error(`${symbol} not in ${uri}`);\n }\n } catch (err) {\n importError || (importError = "async");\n error = err;\n }\n }\n if (!handler) {\n emitEvent("qerror", {\n importError,\n error,\n ...eventData\n });\n console.error(error);\n break;\n }\n const previousCtx = doc.__q_context__;\n if (element.isConnected) {\n try {\n doc.__q_context__ = [element, ev, url];\n const results = handler(ev, element);\n if (isPromise(results)) {\n await results;\n }\n } catch (error2) {\n emitEvent("qerror", { error: error2, ...eventData });\n } finally {\n doc.__q_context__ = previousCtx;\n }\n }\n }\n }\n};\nconst emitEvent = (eventName, detail) => {\n doc.dispatchEvent(createEvent(eventName, detail));\n};\nconst camelToKebab = (str) => str.replace(/([A-Z])/g, (a) => "-" + a.toLowerCase());\nconst processDocumentEvent = async (ev) => {\n let type = camelToKebab(ev.type);\n let element = ev.target;\n broadcast("-document", ev, type);\n while (element && element.getAttribute) {\n const results = dispatch(element, "", ev, type);\n let cancelBubble = ev.cancelBubble;\n if (isPromise(results)) {\n await results;\n }\n cancelBubble || (cancelBubble = cancelBubble || ev.cancelBubble || element.hasAttribute("stoppropagation:" + ev.type));\n element = ev.bubbles && cancelBubble !== true ? element.parentElement : null;\n }\n};\nconst processWindowEvent = (ev) => {\n broadcast("-window", ev, camelToKebab(ev.type));\n};\nconst processReadyStateChange = () => {\n var _a;\n const readyState = doc.readyState;\n if (!hasInitialized && (readyState == "interactive" || readyState == "complete")) {\n roots.forEach(findShadowRoots);\n hasInitialized = 1;\n emitEvent("qinit");\n const riC = (_a = win.requestIdleCallback) != null ? _a : win.setTimeout;\n riC.bind(win)(() => emitEvent("qidle"));\n if (events.has("qvisible")) {\n const results = querySelectorAll("[on\\\\:qvisible]");\n const observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n dispatch(entry.target, "", createEvent("qvisible", entry));\n }\n }\n });\n results.forEach((el) => observer.observe(el));\n }\n }\n};\nconst addEventListener = (el, eventName, handler, capture = false) => {\n el.addEventListener(eventName, handler, { capture, passive: false });\n};\nlet cleanTimer;\nconst processEventOrNode = (...eventNames) => {\n doNotClean = true;\n clearTimeout(cleanTimer);\n cleanTimer = setTimeout(() => doNotClean = false, 2e4);\n for (const eventNameOrNode of eventNames) {\n if (typeof eventNameOrNode === "string") {\n if (!events.has(eventNameOrNode)) {\n roots.forEach(\n (root) => addEventListener(root, eventNameOrNode, processDocumentEvent, true)\n );\n addEventListener(win, eventNameOrNode, processWindowEvent, true);\n events.add(eventNameOrNode);\n }\n } else {\n if (!roots.has(eventNameOrNode)) {\n events.forEach(\n (eventName) => addEventListener(eventNameOrNode, eventName, processDocumentEvent, true)\n );\n roots.add(eventNameOrNode);\n }\n }\n }\n};\nif (!("__q_context__" in doc)) {\n doc.__q_context__ = 0;\n const qwikevents = win.qwikevents;\n if (qwikevents) {\n if (Array.isArray(qwikevents)) {\n processEventOrNode(...qwikevents);\n } else {\n processEventOrNode("click", "input");\n }\n }\n win.qwikevents = {\n events,\n roots,\n push: processEventOrNode\n };\n addEventListener(doc, "readystatechange", processReadyStateChange);\n processReadyStateChange();\n}';
1160
+ var QWIK_LOADER_DEFAULT_MINIFIED = '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=()=>{var s;const c=t.readyState;if(!r&&("interactive"==c||"complete"==c)&&(o.forEach(i),r=1,b("qinit"),(null!=(s=e.requestIdleCallback)?s: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()}';
1161
+ var QWIK_LOADER_DEFAULT_DEBUG = 'const doc = document;\nconst win = window;\nconst events = /* @__PURE__ */ new Set();\nconst roots = /* @__PURE__ */ new Set([doc]);\nlet hasInitialized;\nconst nativeQuerySelectorAll = (root, selector) => Array.from(root.querySelectorAll(selector));\nconst querySelectorAll = (query) => {\n const elements = [];\n roots.forEach((root) => elements.push(...nativeQuerySelectorAll(root, query)));\n return elements;\n};\nconst findShadowRoots = (fragment) => {\n processEventOrNode(fragment);\n nativeQuerySelectorAll(fragment, "[q\\\\:shadowroot]").forEach((parent) => {\n const shadowRoot = parent.shadowRoot;\n shadowRoot && findShadowRoots(shadowRoot);\n });\n};\nconst isPromise = (promise) => promise && typeof promise.then === "function";\nconst broadcast = (infix, ev, type = ev.type) => {\n querySelectorAll("[on" + infix + "\\\\:" + type + "]").forEach((el) => {\n dispatch(el, infix, ev, type);\n });\n};\nconst resolveContainer = (containerEl) => {\n if (containerEl._qwikjson_ === void 0) {\n const parentJSON = containerEl === doc.documentElement ? doc.body : containerEl;\n let script = parentJSON.lastElementChild;\n while (script) {\n if (script.tagName === "SCRIPT" && script.getAttribute("type") === "qwik/json") {\n containerEl._qwikjson_ = JSON.parse(\n script.textContent.replace(/\\\\x3C(\\/?script)/gi, "<$1")\n );\n break;\n }\n script = script.previousElementSibling;\n }\n }\n};\nconst createEvent = (eventName, detail) => new CustomEvent(eventName, {\n detail\n});\nconst dispatch = async (element, scope, ev, eventName = ev.type) => {\n const attrName = "on" + scope + ":" + eventName;\n if (element.hasAttribute("preventdefault:" + eventName)) {\n ev.preventDefault();\n }\n if (element.hasAttribute("stoppropagation:" + eventName)) {\n ev.stopPropagation();\n }\n const ctx = element._qc_;\n const relevantListeners = ctx && ctx.li.filter((li) => li[0] === attrName);\n if (relevantListeners && relevantListeners.length > 0) {\n for (const listener of relevantListeners) {\n const results = listener[1].getFn([element, ev], () => element.isConnected)(ev, element);\n const cancelBubble = ev.cancelBubble;\n if (isPromise(results)) {\n await results;\n }\n if (cancelBubble) {\n ev.stopPropagation();\n }\n }\n return;\n }\n const attrValue = element.getAttribute(attrName);\n const qDispatchEvent = element.qDispatchEvent;\n if (qDispatchEvent) {\n return qDispatchEvent(ev, scope);\n }\n if (attrValue) {\n const container = element.closest(\n "[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])"\n );\n const qBase = container.getAttribute("q:base");\n const qVersion = container.getAttribute("q:version") || "unknown";\n const qManifest = container.getAttribute("q:manifest-hash") || "dev";\n const base = new URL(qBase, doc.baseURI);\n for (const qrl of attrValue.split("\\n")) {\n const url = new URL(qrl, base);\n const href = url.href;\n const symbol = url.hash.replace(/^#?([^?[|]*).*$/, "$1") || "default";\n const reqTime = performance.now();\n let handler;\n let importError;\n let error;\n const isSync = qrl.startsWith("#");\n const eventData = {\n qBase,\n qManifest,\n qVersion,\n href,\n symbol,\n element,\n reqTime\n };\n if (isSync) {\n const hash = container.getAttribute("q:instance");\n handler = (doc["qFuncs_" + hash] || [])[Number.parseInt(symbol)];\n if (!handler) {\n importError = "sync";\n error = new Error("sym:" + symbol);\n }\n } else {\n emitEvent("qsymbol", eventData);\n const uri = url.href.split("#")[0];\n try {\n const module = import(\n uri\n );\n resolveContainer(container);\n handler = (await module)[symbol];\n if (!handler) {\n importError = "no-symbol";\n error = new Error(`${symbol} not in ${uri}`);\n }\n } catch (err) {\n importError || (importError = "async");\n error = err;\n }\n }\n if (!handler) {\n emitEvent("qerror", {\n importError,\n error,\n ...eventData\n });\n console.error(error);\n break;\n }\n const previousCtx = doc.__q_context__;\n if (element.isConnected) {\n try {\n doc.__q_context__ = [element, ev, url];\n const results = handler(ev, element);\n if (isPromise(results)) {\n await results;\n }\n } catch (error2) {\n emitEvent("qerror", { error: error2, ...eventData });\n } finally {\n doc.__q_context__ = previousCtx;\n }\n }\n }\n }\n};\nconst emitEvent = (eventName, detail) => {\n doc.dispatchEvent(createEvent(eventName, detail));\n};\nconst camelToKebab = (str) => str.replace(/([A-Z])/g, (a) => "-" + a.toLowerCase());\nconst processDocumentEvent = async (ev) => {\n let type = camelToKebab(ev.type);\n let element = ev.target;\n broadcast("-document", ev, type);\n while (element && element.getAttribute) {\n const results = dispatch(element, "", ev, type);\n let cancelBubble = ev.cancelBubble;\n if (isPromise(results)) {\n await results;\n }\n cancelBubble || (cancelBubble = cancelBubble || ev.cancelBubble || element.hasAttribute("stoppropagation:" + ev.type));\n element = ev.bubbles && cancelBubble !== true ? element.parentElement : null;\n }\n};\nconst processWindowEvent = (ev) => {\n broadcast("-window", ev, camelToKebab(ev.type));\n};\nconst processReadyStateChange = () => {\n var _a;\n const readyState = doc.readyState;\n if (!hasInitialized && (readyState == "interactive" || readyState == "complete")) {\n roots.forEach(findShadowRoots);\n hasInitialized = 1;\n emitEvent("qinit");\n const riC = (_a = win.requestIdleCallback) != null ? _a : win.setTimeout;\n riC.bind(win)(() => emitEvent("qidle"));\n if (events.has("qvisible")) {\n const results = querySelectorAll("[on\\\\:qvisible]");\n const observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n dispatch(entry.target, "", createEvent("qvisible", entry));\n }\n }\n });\n results.forEach((el) => observer.observe(el));\n }\n }\n};\nconst addEventListener = (el, eventName, handler, capture = false) => {\n el.addEventListener(eventName, handler, { capture, passive: false });\n};\nconst processEventOrNode = (...eventNames) => {\n for (const eventNameOrNode of eventNames) {\n if (typeof eventNameOrNode === "string") {\n if (!events.has(eventNameOrNode)) {\n roots.forEach(\n (root) => addEventListener(root, eventNameOrNode, processDocumentEvent, true)\n );\n addEventListener(win, eventNameOrNode, processWindowEvent, true);\n events.add(eventNameOrNode);\n }\n } else {\n if (!roots.has(eventNameOrNode)) {\n events.forEach(\n (eventName) => addEventListener(eventNameOrNode, eventName, processDocumentEvent, true)\n );\n roots.add(eventNameOrNode);\n }\n }\n }\n};\nif (!("__q_context__" in doc)) {\n doc.__q_context__ = 0;\n const qwikevents = win.qwikevents;\n if (qwikevents) {\n if (Array.isArray(qwikevents)) {\n processEventOrNode(...qwikevents);\n } else {\n processEventOrNode("click", "input");\n }\n }\n win.qwikevents = {\n events,\n roots,\n push: processEventOrNode\n };\n addEventListener(doc, "readystatechange", processReadyStateChange);\n processReadyStateChange();\n}';
1162
1162
  function getQwikLoaderScript(opts = {}) {
1163
1163
  return opts.debug ? QWIK_LOADER_DEFAULT_DEBUG : QWIK_LOADER_DEFAULT_MINIFIED;
1164
1164
  }
@@ -1371,6 +1371,10 @@ var allowedContent = (state) => {
1371
1371
  case 514 /* PHRASING_INSIDE_INPUT */:
1372
1372
  case 1026 /* PHRASING_CONTAINER */:
1373
1373
  return ["phrasing content", "<a>, <b>, <img>, <input> ... (no <div>, <p> ...)"];
1374
+ case 2050 /* PICTURE */:
1375
+ return ["picture content", "<source>, <img>"];
1376
+ case 4098 /* BUTTON */:
1377
+ return ["button content", "phrasing content except interactive elements"];
1374
1378
  case 1 /* DOCUMENT */:
1375
1379
  return ["document", "<html>"];
1376
1380
  }
@@ -1412,6 +1416,10 @@ function isTagAllowed(state, tag) {
1412
1416
  return isInPhrasing(tag, true);
1413
1417
  case 514 /* PHRASING_INSIDE_INPUT */:
1414
1418
  return isInPhrasing(tag, false);
1419
+ case 2050 /* PICTURE */:
1420
+ return isInPicture(tag);
1421
+ case 4098 /* BUTTON */:
1422
+ return isInButton(tag);
1415
1423
  case 1 /* DOCUMENT */:
1416
1424
  if (tag === "html") {
1417
1425
  return 32 /* HTML */;
@@ -1491,9 +1499,12 @@ function isInAnything(text) {
1491
1499
  case "body":
1492
1500
  return 0 /* NOT_ALLOWED */;
1493
1501
  case "button":
1502
+ return 4098 /* BUTTON */;
1494
1503
  case "input":
1495
1504
  case "textarea":
1496
1505
  return 514 /* PHRASING_INSIDE_INPUT */;
1506
+ case "picture":
1507
+ return 2050 /* PICTURE */;
1497
1508
  default:
1498
1509
  return 10 /* ANYTHING */;
1499
1510
  }
@@ -1537,12 +1548,35 @@ function isInTableColGroup(text) {
1537
1548
  return 0 /* NOT_ALLOWED */;
1538
1549
  }
1539
1550
  }
1551
+ function isInPicture(text) {
1552
+ switch (text) {
1553
+ case "source":
1554
+ return 4 /* EMPTY */;
1555
+ case "img":
1556
+ return 4 /* EMPTY */;
1557
+ default:
1558
+ return 0 /* NOT_ALLOWED */;
1559
+ }
1560
+ }
1561
+ function isInButton(text) {
1562
+ switch (text) {
1563
+ case "button":
1564
+ case "input":
1565
+ case "textarea":
1566
+ case "select":
1567
+ case "a":
1568
+ return 0 /* NOT_ALLOWED */;
1569
+ case "picture":
1570
+ return 2050 /* PICTURE */;
1571
+ default:
1572
+ return isInPhrasing(text, false);
1573
+ }
1574
+ }
1540
1575
  function isInPhrasing(text, allowInput) {
1541
1576
  switch (text) {
1542
1577
  case "svg":
1543
1578
  case "math":
1544
1579
  return 1026 /* PHRASING_CONTAINER */;
1545
- case "button":
1546
1580
  case "input":
1547
1581
  case "textarea":
1548
1582
  return allowInput ? 514 /* PHRASING_INSIDE_INPUT */ : 0 /* NOT_ALLOWED */;
@@ -1554,6 +1588,7 @@ function isInPhrasing(text, allowInput) {
1554
1588
  case "bdi":
1555
1589
  case "bdo":
1556
1590
  case "br":
1591
+ case "button":
1557
1592
  case "canvas":
1558
1593
  case "cite":
1559
1594
  case "code":
@@ -1581,7 +1616,6 @@ function isInPhrasing(text, allowInput) {
1581
1616
  case "object":
1582
1617
  case "option":
1583
1618
  case "output":
1584
- case "picture":
1585
1619
  case "progress":
1586
1620
  case "q":
1587
1621
  case "ruby":
@@ -1604,6 +1638,8 @@ function isInPhrasing(text, allowInput) {
1604
1638
  return allowInput ? 258 /* PHRASING_ANY */ : 514 /* PHRASING_INSIDE_INPUT */;
1605
1639
  case "style":
1606
1640
  return 2 /* TEXT */;
1641
+ case "picture":
1642
+ return 2050 /* PICTURE */;
1607
1643
  default:
1608
1644
  return 0 /* NOT_ALLOWED */;
1609
1645
  }
@@ -1823,7 +1859,11 @@ var preloaderPre = (container, options, nonce) => {
1823
1859
  }
1824
1860
  }
1825
1861
  const optsStr = opts.length ? `,{${opts.join(",")}}` : "";
1826
- container.openElement("link", null, ["rel", "modulepreload", "href", preloaderBundle]);
1862
+ const preloaderLinkAttrs = ["rel", "modulepreload", "href", preloaderBundle];
1863
+ if (nonce) {
1864
+ preloaderLinkAttrs.push("nonce", nonce);
1865
+ }
1866
+ container.openElement("link", null, preloaderLinkAttrs);
1827
1867
  container.closeElement();
1828
1868
  container.openElement("link", null, [
1829
1869
  "rel",
@@ -1847,7 +1887,11 @@ var preloaderPre = (container, options, nonce) => {
1847
1887
  }
1848
1888
  const corePath = simplifyPath(base2, resolvedManifest?.manifest.core);
1849
1889
  if (corePath) {
1850
- container.openElement("link", null, ["rel", "modulepreload", "href", corePath]);
1890
+ const linkAttrs = ["rel", "modulepreload", "href", corePath];
1891
+ if (nonce) {
1892
+ linkAttrs.push("nonce", nonce);
1893
+ }
1894
+ container.openElement("link", null, linkAttrs);
1851
1895
  container.closeElement();
1852
1896
  }
1853
1897
  };
@@ -2056,21 +2100,18 @@ var SSRContainer = class extends _SharedContainer {
2056
2100
  setContext(host, context, value) {
2057
2101
  const ssrNode = host;
2058
2102
  let ctx = ssrNode.getProp(QCtxAttr);
2059
- if (!ctx) {
2103
+ if (ctx == null) {
2060
2104
  ssrNode.setProp(QCtxAttr, ctx = []);
2061
2105
  }
2062
- mapArray_set(ctx, context.id, value, 0);
2106
+ mapArray_set(ctx, context.id, value, 0, true);
2063
2107
  this.addRoot(ssrNode);
2064
2108
  }
2065
2109
  resolveContext(host, contextId) {
2066
2110
  let ssrNode = host;
2067
2111
  while (ssrNode) {
2068
2112
  const ctx = ssrNode.getProp(QCtxAttr);
2069
- if (ctx) {
2070
- const value = mapArray_get(ctx, contextId.id, 0);
2071
- if (value) {
2072
- return value;
2073
- }
2113
+ if (ctx != null && mapArray_has(ctx, contextId.id, 0)) {
2114
+ return mapArray_get(ctx, contextId.id, 0);
2074
2115
  }
2075
2116
  ssrNode = ssrNode.parentSsrNode;
2076
2117
  }
@@ -2522,9 +2563,18 @@ var SSRContainer = class extends _SharedContainer {
2522
2563
  let qwikLoaderBundle = this.resolvedManifest.manifest.qwikLoader;
2523
2564
  if (qwikLoaderBundle) {
2524
2565
  qwikLoaderBundle = this.$buildBase$ + qwikLoaderBundle;
2525
- this.openElement("link", ["rel", "modulepreload", "href", qwikLoaderBundle]);
2566
+ const linkAttrs = ["rel", "modulepreload", "href", qwikLoaderBundle];
2567
+ const nonce = this.renderOptions.serverData?.nonce;
2568
+ if (nonce) {
2569
+ linkAttrs.push("nonce", nonce);
2570
+ }
2571
+ this.openElement("link", linkAttrs);
2526
2572
  this.closeElement();
2527
- this.openElement("script", ["type", "module", "async", true, "src", qwikLoaderBundle]);
2573
+ const scriptAttrs = ["type", "module", "async", true, "src", qwikLoaderBundle];
2574
+ if (nonce) {
2575
+ scriptAttrs.push("nonce", nonce);
2576
+ }
2577
+ this.openElement("script", scriptAttrs);
2528
2578
  this.closeElement();
2529
2579
  }
2530
2580
  }
@@ -2748,9 +2798,11 @@ var SSRContainer = class extends _SharedContainer {
2748
2798
  value = this.trackSignalValue(value, lastNode, key, signalData);
2749
2799
  }
2750
2800
  if (key === dangerouslySetInnerHTML) {
2751
- innerHTML = String(value);
2752
- key = QContainerAttr;
2753
- value = "html" /* HTML */;
2801
+ if (value) {
2802
+ innerHTML = String(value);
2803
+ key = QContainerAttr;
2804
+ value = "html" /* HTML */;
2805
+ }
2754
2806
  if (tag === "style") {
2755
2807
  continue;
2756
2808
  }
@@ -17,6 +17,6 @@
17
17
  }
18
18
  },
19
19
  "devDependencies": {
20
- "@auth/qwik": "0.5.4"
20
+ "@auth/qwik": "0.8.0"
21
21
  }
22
22
  }
@@ -22,11 +22,11 @@
22
22
  }
23
23
  },
24
24
  "dependencies": {
25
- "@angular/localize": "^16.2.2"
25
+ "@angular/localize": "^18.2.13"
26
26
  },
27
27
  "devDependencies": {
28
- "@angular/compiler": "^16.2.2",
29
- "@angular/compiler-cli": "^16.2.2"
28
+ "@angular/compiler": "^18.2.13",
29
+ "@angular/compiler-cli": "^18.2.13"
30
30
  },
31
31
  "scripts": {
32
32
  "build.client": "vite build && npm run i18n-translate",
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "devDependencies": {
25
25
  "@builder.io/vite-plugin-macro": "~0.0.7",
26
- "@pandacss/dev": "^0.51.1"
26
+ "@pandacss/dev": "^0.54.0"
27
27
  },
28
28
  "scripts": {
29
29
  "prebuild.pandacss": "panda codegen --silent"