@qwik.dev/core 2.0.0-beta.24 → 2.0.0-beta.26

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.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * @qwik.dev/core/testing 2.0.0-beta.24-dev+314726b
3
+ * @qwik.dev/core/testing 2.0.0-beta.26-dev+c693cf5
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
@@ -24004,6 +24004,7 @@ var createPlatform = () => {
24004
24004
  if (regSym) {
24005
24005
  return regSym;
24006
24006
  }
24007
+ throw qError(6 /* dynamicImportFailed */, [symbolName]);
24007
24008
  }
24008
24009
  if (!url) {
24009
24010
  throw qError(14 /* qrlMissingChunk */, [symbolName]);
@@ -24288,7 +24289,7 @@ Object.freeze(EMPTY_ARRAY);
24288
24289
  Object.freeze(EMPTY_OBJ);
24289
24290
 
24290
24291
  // packages/qwik/src/core/shared/qrl/qrl-class.ts
24291
- import { isBrowser as isBrowser2, isDev as isDev18 } from "@qwik.dev/core/build";
24292
+ import { isBrowser as isBrowser3, isDev as isDev18 } from "@qwik.dev/core/build";
24292
24293
  import { p as preload } from "@qwik.dev/core/preloader";
24293
24294
 
24294
24295
  // packages/qwik/src/core/reactive-primitives/backref.ts
@@ -24346,6 +24347,9 @@ var ElementVNode = class extends VirtualVNode {
24346
24347
  }
24347
24348
  };
24348
24349
 
24350
+ // packages/qwik/src/core/shared/serdes/inflate.ts
24351
+ import { isServer as isServer9 } from "@qwik.dev/core/build";
24352
+
24349
24353
  // packages/qwik/src/core/shared/serdes/qrl-to-string.ts
24350
24354
  import { isDev as isDev6 } from "@qwik.dev/core/build";
24351
24355
  function qrlToString(serializationContext, qrl, raw) {
@@ -24415,7 +24419,13 @@ function parseQRL(qrl) {
24415
24419
  var QRL_RUNTIME_CHUNK = "mock-chunk";
24416
24420
 
24417
24421
  // packages/qwik/src/core/client/run-qrl.ts
24418
- function runEventHandlerQRL(handler, event, element, ctx = newInvokeContextFromDOM(event, element)) {
24422
+ function runEventHandlerQRL(handler, event, element, ctx) {
24423
+ if (!element.isConnected) {
24424
+ return;
24425
+ }
24426
+ if (!ctx) {
24427
+ ctx = newInvokeContextFromDOM(event, element);
24428
+ }
24419
24429
  const container = ctx.$container$;
24420
24430
  const hostElement = ctx.$hostElement$;
24421
24431
  vnode_ensureElementInflated(container, hostElement);
@@ -26567,8 +26577,8 @@ function setAttribute(journal, vnode, key, value, scopedStyleIdPrefix, originalV
26567
26577
  )
26568
26578
  );
26569
26579
  }
26570
- var vnode_diff = (container, journal, jsxNode, vStartNode, cursor, scopedStyleIdPrefix) => {
26571
- const diffContext = {
26580
+ function createDiffContext(container, journal, cursor, scopedStyleIdPrefix) {
26581
+ return {
26572
26582
  container,
26573
26583
  journal,
26574
26584
  cursor,
@@ -26599,6 +26609,9 @@ var vnode_diff = (container, journal, jsxNode, vStartNode, cursor, scopedStyleId
26599
26609
  })
26600
26610
  }
26601
26611
  };
26612
+ }
26613
+ var vnode_diff = (container, journal, jsxNode, vStartNode, cursor, scopedStyleIdPrefix) => {
26614
+ const diffContext = createDiffContext(container, journal, cursor, scopedStyleIdPrefix);
26602
26615
  diff(diffContext, jsxNode, vStartNode);
26603
26616
  const result2 = drainAsyncQueue(diffContext);
26604
26617
  if (isPromise(result2)) {
@@ -26917,6 +26930,7 @@ function expectSlot(diffContext) {
26917
26930
  vnode_setProp(diffContext.vNewNode, QSlot, slotNameKey);
26918
26931
  vHost && vnode_setProp(vHost, slotNameKey, diffContext.vNewNode);
26919
26932
  isDev14 && vnode_setProp(diffContext.vNewNode, DEBUG_TYPE, "P" /* Projection */);
26933
+ vnode_inflateProjectionTrailingText(diffContext.journal, diffContext.vNewNode);
26920
26934
  vnode_insertBefore(
26921
26935
  diffContext.journal,
26922
26936
  diffContext.vParent,
@@ -27492,24 +27506,20 @@ function expectComponent(diffContext, component) {
27492
27506
  const vNodeLookupKey = getKey(host) || vNodeComponentHash;
27493
27507
  const lookupKeysAreEqual = lookupKey === vNodeLookupKey;
27494
27508
  const hashesAreEqual = componentHash === vNodeComponentHash;
27495
- if (!lookupKeysAreEqual) {
27496
- if (moveOrCreateKeyedNode(
27497
- diffContext,
27498
- null,
27499
- lookupKey,
27500
- lookupKey,
27501
- diffContext.vParent
27502
- )) {
27509
+ if (lookupKeysAreEqual) {
27510
+ if (hashesAreEqual) {
27511
+ deleteFromSideBuffer(diffContext, null, lookupKey);
27512
+ } else {
27503
27513
  insertNewComponent(diffContext, host, componentQRL, jsxProps);
27514
+ host = diffContext.vNewNode;
27504
27515
  shouldRender = true;
27505
27516
  }
27506
- host = diffContext.vNewNode || diffContext.vCurrent;
27507
- } else if (!hashesAreEqual || !jsxNode.key) {
27508
- insertNewComponent(diffContext, host, componentQRL, jsxProps);
27509
- host = diffContext.vNewNode;
27510
- shouldRender = true;
27511
27517
  } else {
27512
- deleteFromSideBuffer(diffContext, null, lookupKey);
27518
+ if (moveOrCreateKeyedNode(diffContext, null, lookupKey, lookupKey, diffContext.vParent)) {
27519
+ insertNewComponent(diffContext, host, componentQRL, jsxProps);
27520
+ shouldRender = true;
27521
+ }
27522
+ host = diffContext.vNewNode || diffContext.vCurrent;
27513
27523
  }
27514
27524
  if (host) {
27515
27525
  const vNodeProps = vnode_getProp(
@@ -27518,7 +27528,13 @@ function expectComponent(diffContext, component) {
27518
27528
  diffContext.container.$getObjectById$
27519
27529
  );
27520
27530
  if (!shouldRender) {
27521
- shouldRender || (shouldRender = handleProps(host, jsxProps, vNodeProps, diffContext.container));
27531
+ const propsChanged = handleProps(host, jsxProps, vNodeProps, diffContext.container);
27532
+ if (propsChanged && jsxNode.key == null) {
27533
+ insertNewComponent(diffContext, host, componentQRL, jsxProps);
27534
+ host = diffContext.vNewNode;
27535
+ shouldRender = true;
27536
+ }
27537
+ shouldRender || (shouldRender = propsChanged);
27522
27538
  }
27523
27539
  if (shouldRender) {
27524
27540
  vnode_setProp(host, OnRenderProp, componentQRL);
@@ -27538,7 +27554,7 @@ function expectComponent(diffContext, component) {
27538
27554
  const lookupKeysAreEqual = lookupKey === vNodeLookupKey;
27539
27555
  const vNodeComponentHash = getComponentHash(host, diffContext.container.$getObjectById$);
27540
27556
  const isInlineComponent = vNodeComponentHash == null;
27541
- if (host && !isInlineComponent || lookupKey == null) {
27557
+ if (host && !isInlineComponent || !host) {
27542
27558
  insertNewInlineComponent(diffContext);
27543
27559
  host = diffContext.vNewNode;
27544
27560
  } else if (!lookupKeysAreEqual) {
@@ -28211,7 +28227,7 @@ var createMacroTask = (fn) => {
28211
28227
  };
28212
28228
 
28213
28229
  // packages/qwik/src/core/shared/cursor/cursor-walker.ts
28214
- import { isDev as isDev15, isServer as isServer7 } from "@qwik.dev/core/build";
28230
+ import { isBrowser as isBrowser2, isDev as isDev15, isServer as isServer7 } from "@qwik.dev/core/build";
28215
28231
  var DEBUG6 = false;
28216
28232
  var nextMicroTask = createMicroTask(processCursorQueue);
28217
28233
  var nextMacroTask = createMacroTask(processCursorQueue);
@@ -28318,7 +28334,7 @@ function walkCursor(cursor, options) {
28318
28334
  });
28319
28335
  return;
28320
28336
  }
28321
- if (!isRunningOnServer && !import.meta.env.TEST) {
28337
+ if (isBrowser2) {
28322
28338
  const elapsed = performance.now() - startTime;
28323
28339
  if (elapsed >= timeBudget) {
28324
28340
  scheduleYield();
@@ -28332,11 +28348,11 @@ function walkCursor(cursor, options) {
28332
28348
  );
28333
28349
  finishWalk(container, cursor, cursorData, isRunningOnServer);
28334
28350
  }
28335
- function finishWalk(container, cursor, cursorData, isServer12) {
28351
+ function finishWalk(container, cursor, cursorData, isServer13) {
28336
28352
  if (!(cursor.dirty & 127 /* DIRTY_MASK */)) {
28337
28353
  removeCursorFromQueue(cursor, container);
28338
28354
  DEBUG6 && console.warn("walkCursor: cursor done", cursor.toString());
28339
- if (!isServer12) {
28355
+ if (!isServer13) {
28340
28356
  executeFlushPhase(cursor, container);
28341
28357
  }
28342
28358
  if (cursorData.extraPromises) {
@@ -28386,10 +28402,10 @@ function getNextVNode(vNode, cursor) {
28386
28402
  return null;
28387
28403
  }
28388
28404
  let parent = null;
28389
- if (vNode.parent && vNode.parent.dirty & 32 /* CHILDREN */) {
28390
- parent = vNode.parent;
28391
- } else if (vNode.slotParent && vNode.slotParent.dirty & 32 /* CHILDREN */) {
28405
+ if (vNode.slotParent && vNode.slotParent.dirty & 32 /* CHILDREN */) {
28392
28406
  parent = vNode.slotParent;
28407
+ } else if (vNode.parent && vNode.parent.dirty & 32 /* CHILDREN */) {
28408
+ parent = vNode.parent;
28393
28409
  }
28394
28410
  if (!parent) {
28395
28411
  if (cursor.dirty & 127 /* DIRTY_MASK */) {
@@ -28457,12 +28473,14 @@ function propagatePath(target) {
28457
28473
  const parent = reusablePath[i + 1] || target;
28458
28474
  parent.dirty |= 32 /* CHILDREN */;
28459
28475
  parent.dirtyChildren || (parent.dirtyChildren = []);
28460
- parent.dirtyChildren.push(child);
28476
+ if (!parent.dirtyChildren.includes(child)) {
28477
+ parent.dirtyChildren.push(child);
28478
+ }
28461
28479
  }
28462
28480
  }
28463
28481
  function propagateToCursorRoot(vNode, cursorRoot) {
28464
28482
  reusablePath.push(vNode);
28465
- let current = vNode.parent || vNode.slotParent;
28483
+ let current = vNode.slotParent || vNode.parent;
28466
28484
  while (current) {
28467
28485
  const isDirty = current.dirty & 127 /* DIRTY_MASK */;
28468
28486
  const currentIsCursor = isCursor(current);
@@ -28484,14 +28502,14 @@ function propagateToCursorRoot(vNode, cursorRoot) {
28484
28502
  }
28485
28503
  }
28486
28504
  reusablePath.push(current);
28487
- current = current.parent || current.slotParent;
28505
+ current = current.slotParent || current.parent;
28488
28506
  }
28489
28507
  reusablePath.length = 0;
28490
28508
  throwErrorAndStop("Cursor root not found in current path!");
28491
28509
  }
28492
28510
  function findAndPropagateToBlockingCursor(vNode) {
28493
28511
  reusablePath.push(vNode);
28494
- let current = vNode.parent || vNode.slotParent;
28512
+ let current = vNode.slotParent || vNode.parent;
28495
28513
  while (current) {
28496
28514
  const currentIsCursor = isCursor(current);
28497
28515
  if (currentIsCursor) {
@@ -28500,7 +28518,7 @@ function findAndPropagateToBlockingCursor(vNode) {
28500
28518
  return true;
28501
28519
  }
28502
28520
  reusablePath.push(current);
28503
- current = current.parent || current.slotParent;
28521
+ current = current.slotParent || current.parent;
28504
28522
  }
28505
28523
  reusablePath.length = 0;
28506
28524
  return false;
@@ -28522,7 +28540,7 @@ function markVNodeDirty(container, vNode, bits, cursorRoot = null) {
28522
28540
  if ((isRealDirty ? prevDirty & 127 /* DIRTY_MASK */ : prevDirty) || vNode === cursorRoot) {
28523
28541
  return;
28524
28542
  }
28525
- const parent = vNode.parent || vNode.slotParent;
28543
+ const parent = vNode.slotParent || vNode.parent;
28526
28544
  if (cursorRoot && isRealDirty && parent && !parent.dirty) {
28527
28545
  propagateToCursorRoot(vNode, cursorRoot);
28528
28546
  return;
@@ -28532,7 +28550,9 @@ function markVNodeDirty(container, vNode, bits, cursorRoot = null) {
28532
28550
  parent.dirty |= 32 /* CHILDREN */;
28533
28551
  }
28534
28552
  parent.dirtyChildren || (parent.dirtyChildren = []);
28535
- parent.dirtyChildren.push(vNode);
28553
+ if (!parent.dirtyChildren.includes(vNode)) {
28554
+ parent.dirtyChildren.push(vNode);
28555
+ }
28536
28556
  if (isRealDirty && vNode.dirtyChildren) {
28537
28557
  const cursor = findCursor(vNode);
28538
28558
  if (cursor) {
@@ -28540,7 +28560,7 @@ function markVNodeDirty(container, vNode, bits, cursorRoot = null) {
28540
28560
  let cursorPosition = cursorData.position;
28541
28561
  if (cursorPosition) {
28542
28562
  while (cursorPosition !== cursor) {
28543
- cursorPosition = cursorPosition.parent || cursorPosition.slotParent;
28563
+ cursorPosition = cursorPosition.slotParent || cursorPosition.parent;
28544
28564
  if (cursorPosition === vNode) {
28545
28565
  cursorData.position = vNode;
28546
28566
  break;
@@ -29081,12 +29101,7 @@ var Serializer = class {
29081
29101
  value.data.$isConst$
29082
29102
  ]);
29083
29103
  } else if (value instanceof EffectSubscription) {
29084
- this.output(32 /* EffectSubscription */, [
29085
- value.consumer,
29086
- value.property,
29087
- value.backRef,
29088
- value.data
29089
- ]);
29104
+ this.output(32 /* EffectSubscription */, [value.consumer, value.property, value.data]);
29090
29105
  } else if (isStore(value)) {
29091
29106
  const storeHandler = getStoreHandler(value);
29092
29107
  const storeTarget = getStoreTarget(value);
@@ -29156,19 +29171,13 @@ var Serializer = class {
29156
29171
  });
29157
29172
  this.output(2 /* ForwardRef */, forwardRefId);
29158
29173
  } else {
29159
- this.output(26 /* SerializerSignal */, [
29160
- value.$computeQrl$,
29161
- filterEffectBackRefs(value[_EFFECT_BACK_REF]),
29162
- value.$effects$,
29163
- maybeValue
29164
- ]);
29174
+ this.output(26 /* SerializerSignal */, [value.$computeQrl$, value.$effects$, maybeValue]);
29165
29175
  }
29166
29176
  return;
29167
29177
  }
29168
29178
  if (value instanceof WrappedSignalImpl) {
29169
29179
  this.output(23 /* WrappedSignal */, [
29170
29180
  ...serializeWrappingFn(this.$serializationContext$, value),
29171
- filterEffectBackRefs(value[_EFFECT_BACK_REF]),
29172
29181
  value.$flags$,
29173
29182
  value.$hostElement$,
29174
29183
  ...value.$effects$ || []
@@ -29191,11 +29200,7 @@ var Serializer = class {
29191
29200
  } else if (shouldNeverSerialize) {
29192
29201
  v = NEEDS_COMPUTATION;
29193
29202
  }
29194
- const out = [
29195
- value.$computeQrl$,
29196
- filterEffectBackRefs(value[_EFFECT_BACK_REF]),
29197
- value.$effects$
29198
- ];
29203
+ const out = [value.$computeQrl$, value.$effects$];
29199
29204
  if (isAsync) {
29200
29205
  out.push(value.$loadingEffects$, value.$errorEffects$, value.$untrackedError$);
29201
29206
  out.push(asyncFlags || void 0);
@@ -29298,14 +29303,7 @@ var Serializer = class {
29298
29303
  }
29299
29304
  this.output(29 /* JSXNode */, out);
29300
29305
  } else if (value instanceof Task) {
29301
- const out = [
29302
- value.$qrl$,
29303
- value.$flags$,
29304
- value.$index$,
29305
- value.$el$,
29306
- value[_EFFECT_BACK_REF],
29307
- value.$state$
29308
- ];
29306
+ const out = [value.$qrl$, value.$flags$, value.$index$, value.$el$, value.$state$];
29309
29307
  while (out[out.length - 1] === void 0) {
29310
29308
  out.pop();
29311
29309
  }
@@ -29474,18 +29472,6 @@ function serializeWrappingFn(serializationContext, value) {
29474
29472
  );
29475
29473
  return [syncFnId, value.$args$];
29476
29474
  }
29477
- function filterEffectBackRefs(effectBackRef) {
29478
- let effectBackRefToSerialize = void 0;
29479
- if (effectBackRef) {
29480
- for (const [effectProp, effect] of effectBackRef) {
29481
- if (effect.backRef) {
29482
- effectBackRefToSerialize || (effectBackRefToSerialize = /* @__PURE__ */ new Map());
29483
- effectBackRefToSerialize.set(effectProp, effect);
29484
- }
29485
- }
29486
- }
29487
- return effectBackRefToSerialize;
29488
- }
29489
29475
  function tryGetBackRefs(props) {
29490
29476
  return Object.prototype.hasOwnProperty.call(props, QBackRefs) ? props[QBackRefs] : void 0;
29491
29477
  }
@@ -29830,8 +29816,7 @@ var inflate = (container, target, typeId, data) => {
29830
29816
  task.$flags$ = v[1];
29831
29817
  task.$index$ = v[2];
29832
29818
  task.$el$ = v[3];
29833
- task[_EFFECT_BACK_REF] = v[4];
29834
- task.$state$ = v[5];
29819
+ task.$state$ = v[4];
29835
29820
  break;
29836
29821
  case 21 /* Component */:
29837
29822
  target[SERIALIZABLE_STATE][0] = data[0];
@@ -29847,6 +29832,7 @@ var inflate = (container, target, typeId, data) => {
29847
29832
  const storeHandler = getStoreHandler(target);
29848
29833
  storeHandler.$flags$ = flags;
29849
29834
  storeHandler.$effects$ = effects;
29835
+ restoreEffectBackRefForEffectsMap(storeHandler.$effects$, store);
29850
29836
  break;
29851
29837
  }
29852
29838
  case 22 /* Signal */: {
@@ -29854,6 +29840,7 @@ var inflate = (container, target, typeId, data) => {
29854
29840
  const d2 = data;
29855
29841
  signal.$untrackedValue$ = d2[0];
29856
29842
  signal.$effects$ = new Set(d2.slice(1));
29843
+ restoreEffectBackRefForEffects(signal.$effects$, signal);
29857
29844
  break;
29858
29845
  }
29859
29846
  case 23 /* WrappedSignal */: {
@@ -29861,38 +29848,40 @@ var inflate = (container, target, typeId, data) => {
29861
29848
  const d2 = data;
29862
29849
  signal.$func$ = container.getSyncFn(d2[0]);
29863
29850
  signal.$args$ = d2[1];
29864
- signal[_EFFECT_BACK_REF] = d2[2];
29865
29851
  signal.$untrackedValue$ = NEEDS_COMPUTATION;
29866
- signal.$flags$ = d2[3];
29852
+ signal.$flags$ = d2[2];
29867
29853
  signal.$flags$ |= 1 /* INVALID */;
29868
- signal.$hostElement$ = d2[4];
29869
- signal.$effects$ = new Set(d2.slice(5));
29854
+ signal.$hostElement$ = d2[3];
29855
+ signal.$effects$ = new Set(d2.slice(4));
29870
29856
  inflateWrappedSignalValue(signal);
29857
+ restoreEffectBackRefForEffects(signal.$effects$, signal);
29871
29858
  break;
29872
29859
  }
29873
29860
  case 25 /* AsyncSignal */: {
29874
29861
  const asyncSignal = target;
29875
29862
  const d2 = data;
29876
29863
  asyncSignal.$computeQrl$ = d2[0];
29877
- asyncSignal[_EFFECT_BACK_REF] = d2[1];
29878
- asyncSignal.$effects$ = new Set(d2[2]);
29879
- asyncSignal.$loadingEffects$ = new Set(d2[3]);
29880
- asyncSignal.$errorEffects$ = new Set(d2[4]);
29881
- asyncSignal.$untrackedError$ = d2[5];
29882
- asyncSignal.$flags$ = d2[6] ?? 0;
29864
+ asyncSignal.$effects$ = new Set(d2[1]);
29865
+ asyncSignal.$loadingEffects$ = new Set(d2[2]);
29866
+ asyncSignal.$errorEffects$ = new Set(d2[3]);
29867
+ asyncSignal.$untrackedError$ = d2[4];
29868
+ asyncSignal.$flags$ = d2[5] ?? 0;
29883
29869
  if (asyncSignal.$flags$ & 64 /* CLIENT_ONLY */) {
29884
29870
  asyncSignal.$untrackedLoading$ = true;
29885
29871
  }
29886
- const hasValue = d2.length > 7;
29872
+ const hasValue = d2.length > 6;
29887
29873
  if (hasValue) {
29888
- asyncSignal.$untrackedValue$ = d2[7];
29874
+ asyncSignal.$untrackedValue$ = d2[6];
29889
29875
  }
29890
29876
  if (asyncSignal.$untrackedValue$ === NEEDS_COMPUTATION) {
29891
29877
  asyncSignal.$flags$ |= 1 /* INVALID */;
29892
29878
  }
29893
- asyncSignal.interval = d2[8] ?? 0;
29894
- asyncSignal.$concurrency$ = d2[9] ?? 1;
29895
- asyncSignal.$timeoutMs$ = d2[10] ?? 0;
29879
+ asyncSignal.interval = d2[7] ?? 0;
29880
+ asyncSignal.$concurrency$ = d2[8] ?? 1;
29881
+ asyncSignal.$timeoutMs$ = d2[9] ?? 0;
29882
+ restoreEffectBackRefForEffects(asyncSignal.$effects$, asyncSignal);
29883
+ restoreEffectBackRefForEffects(asyncSignal.$loadingEffects$, asyncSignal);
29884
+ restoreEffectBackRefForEffects(asyncSignal.$errorEffects$, asyncSignal);
29896
29885
  break;
29897
29886
  }
29898
29887
  // Inflating a SerializerSignal is the same as inflating a ComputedSignal
@@ -29904,17 +29893,17 @@ var inflate = (container, target, typeId, data) => {
29904
29893
  const p = computed.$computeQrl$.resolve(container).catch(() => {
29905
29894
  });
29906
29895
  loading = loading.finally(() => p);
29907
- computed[_EFFECT_BACK_REF] = d2[1];
29908
- if (d2[2]) {
29909
- computed.$effects$ = new Set(d2[2]);
29896
+ if (d2[1]) {
29897
+ computed.$effects$ = new Set(d2[1]);
29910
29898
  }
29911
- const hasValue = d2.length > 3;
29899
+ const hasValue = d2.length > 2;
29912
29900
  if (hasValue) {
29913
- computed.$untrackedValue$ = d2[3];
29901
+ computed.$untrackedValue$ = d2[2];
29914
29902
  }
29915
29903
  if (typeId !== 26 /* SerializerSignal */ && computed.$untrackedValue$ !== NEEDS_COMPUTATION) {
29916
29904
  computed.$flags$ &= ~1 /* INVALID */;
29917
29905
  }
29906
+ restoreEffectBackRefForEffects(computed.$effects$, computed);
29918
29907
  break;
29919
29908
  }
29920
29909
  case 15 /* Error */: {
@@ -29988,7 +29977,9 @@ var inflate = (container, target, typeId, data) => {
29988
29977
  owner._proxy = propsProxy;
29989
29978
  }
29990
29979
  propsProxy[_OWNER] = owner;
29991
- propsProxy[_PROPS_HANDLER].$effects$ = d[3];
29980
+ const propsHandler = propsProxy[_PROPS_HANDLER];
29981
+ propsHandler.$effects$ = d[3];
29982
+ restoreEffectBackRefForEffectsMap(propsHandler.$effects$, propsProxy);
29992
29983
  break;
29993
29984
  case 31 /* SubscriptionData */: {
29994
29985
  const effectData = target;
@@ -30001,8 +29992,8 @@ var inflate = (container, target, typeId, data) => {
30001
29992
  const d2 = data;
30002
29993
  effectSub.consumer = d2[0];
30003
29994
  effectSub.property = d2[1];
30004
- effectSub.backRef = d2[2];
30005
- effectSub.data = d2[3];
29995
+ effectSub.data = d2[2];
29996
+ restoreEffectBackRefForConsumer(effectSub);
30006
29997
  break;
30007
29998
  }
30008
29999
  default:
@@ -30051,6 +30042,31 @@ function inflateWrappedSignalValue(signal) {
30051
30042
  }
30052
30043
  }
30053
30044
  }
30045
+ function restoreEffectBackRefForConsumer(effect) {
30046
+ var _a6;
30047
+ const isServerSide = import.meta.env.TEST ? isServerPlatform() : isServer9;
30048
+ const consumerBackRef = effect.consumer;
30049
+ if (isServerSide && !consumerBackRef) {
30050
+ return;
30051
+ }
30052
+ consumerBackRef[_a6 = _EFFECT_BACK_REF] || (consumerBackRef[_a6] = /* @__PURE__ */ new Map());
30053
+ consumerBackRef[_EFFECT_BACK_REF].set(effect.property, effect);
30054
+ }
30055
+ function restoreEffectBackRefForEffects(effects, consumer) {
30056
+ if (effects) {
30057
+ for (const effect of effects) {
30058
+ effect.backRef || (effect.backRef = /* @__PURE__ */ new Set());
30059
+ effect.backRef.add(consumer);
30060
+ }
30061
+ }
30062
+ }
30063
+ function restoreEffectBackRefForEffectsMap(effectsMap, consumer) {
30064
+ if (effectsMap) {
30065
+ for (const [, effects] of effectsMap) {
30066
+ restoreEffectBackRefForEffects(effects, consumer);
30067
+ }
30068
+ }
30069
+ }
30054
30070
 
30055
30071
  // packages/qwik/src/core/shared/qrl/qrl-class.ts
30056
30072
  var _captures = null;
@@ -30124,7 +30140,7 @@ var makeResolveFunction = (qrl, symbolFn) => {
30124
30140
  const qFuncs2 = getQFuncs(doc2, hash3);
30125
30141
  return qrl.resolved = symbolRef = qFuncs2[Number(qrl.$symbol$)];
30126
30142
  }
30127
- if (isBrowser2 && qrl.$chunk$) {
30143
+ if (isBrowser3 && qrl.$chunk$) {
30128
30144
  preload(qrl.$chunk$, 1);
30129
30145
  }
30130
30146
  const start = now();
@@ -30222,7 +30238,7 @@ var createQRL = (chunk, symbol, symbolRef, symbolFn, captures) => {
30222
30238
  })
30223
30239
  );
30224
30240
  }
30225
- if (isBrowser2 && chunk) {
30241
+ if (isBrowser3 && chunk) {
30226
30242
  preload(chunk, 0.8);
30227
30243
  }
30228
30244
  return qrl;
@@ -30285,6 +30301,10 @@ var _jsxSplit = (type, varProps, constProps, children, flags, key, dev) => {
30285
30301
  constProps[attr] = constProps[k];
30286
30302
  }
30287
30303
  delete constProps[k];
30304
+ } else if (k === BIND_CHECKED) {
30305
+ bindCheckedSignal = constProps[k];
30306
+ } else if (k === BIND_VALUE) {
30307
+ bindValueSignal = constProps[k];
30288
30308
  }
30289
30309
  processedKeys.add(k);
30290
30310
  }
@@ -30310,40 +30330,59 @@ var _jsxSplit = (type, varProps, constProps, children, flags, key, dev) => {
30310
30330
  }
30311
30331
  processedKeys.add(k);
30312
30332
  }
30313
- if (bindCheckedSignal || bindValueSignal) {
30314
- if (!varPropsCopied) {
30315
- varProps = { ...varProps };
30316
- varPropsCopied = true;
30317
- }
30318
- if (bindCheckedSignal) {
30333
+ }
30334
+ if (bindCheckedSignal || bindValueSignal) {
30335
+ if (!varPropsCopied) {
30336
+ varProps = { ...varProps };
30337
+ varPropsCopied = true;
30338
+ }
30339
+ varProps || (varProps = {});
30340
+ if (bindCheckedSignal) {
30341
+ if (varProps && _hasOwnProperty3.call(varProps, BIND_CHECKED)) {
30319
30342
  delete varProps[BIND_CHECKED];
30320
- varProps.checked = bindCheckedSignal;
30321
- const handler = createQRL(null, "_chk", _chk, null, [bindCheckedSignal]);
30322
- if (constProps && _hasOwnProperty3.call(constProps, "q-e:input")) {
30323
- if (!constPropsCopied) {
30324
- constProps = { ...constProps };
30325
- constPropsCopied = true;
30326
- }
30327
- const existingHandler = constProps["q-e:input"];
30328
- delete constProps["q-e:input"];
30329
- toSort = mergeHandlers(varProps, "q-e:input", existingHandler) || toSort;
30330
- }
30331
- toSort = mergeHandlers(varProps, "q-e:input", handler) || toSort;
30332
- } else if (bindValueSignal) {
30343
+ }
30344
+ if (constProps && _hasOwnProperty3.call(constProps, BIND_CHECKED)) {
30345
+ if (!constPropsCopied) {
30346
+ constProps = { ...constProps };
30347
+ constPropsCopied = true;
30348
+ }
30349
+ delete constProps[BIND_CHECKED];
30350
+ }
30351
+ varProps.checked = bindCheckedSignal;
30352
+ const handler = createQRL(null, "_chk", _chk, null, [bindCheckedSignal]);
30353
+ if (constProps && _hasOwnProperty3.call(constProps, "q-e:input")) {
30354
+ if (!constPropsCopied) {
30355
+ constProps = { ...constProps };
30356
+ constPropsCopied = true;
30357
+ }
30358
+ const existingHandler = constProps["q-e:input"];
30359
+ delete constProps["q-e:input"];
30360
+ toSort = mergeHandlers(varProps, "q-e:input", existingHandler) || toSort;
30361
+ }
30362
+ toSort = mergeHandlers(varProps, "q-e:input", handler) || toSort;
30363
+ } else if (bindValueSignal) {
30364
+ if (varProps && _hasOwnProperty3.call(varProps, BIND_VALUE)) {
30333
30365
  delete varProps[BIND_VALUE];
30334
- varProps.value = bindValueSignal;
30335
- const handler = createQRL(null, "_val", _val, null, [bindValueSignal]);
30336
- if (constProps && _hasOwnProperty3.call(constProps, "q-e:input")) {
30337
- if (!constPropsCopied) {
30338
- constProps = { ...constProps };
30339
- constPropsCopied = true;
30340
- }
30341
- const existingHandler = constProps["q-e:input"];
30342
- delete constProps["q-e:input"];
30343
- toSort = mergeHandlers(varProps, "q-e:input", existingHandler) || toSort;
30366
+ }
30367
+ if (constProps && _hasOwnProperty3.call(constProps, BIND_VALUE)) {
30368
+ if (!constPropsCopied) {
30369
+ constProps = { ...constProps };
30370
+ constPropsCopied = true;
30371
+ }
30372
+ delete constProps[BIND_VALUE];
30373
+ }
30374
+ varProps.value = bindValueSignal;
30375
+ const handler = createQRL(null, "_val", _val, null, [bindValueSignal]);
30376
+ if (constProps && _hasOwnProperty3.call(constProps, "q-e:input")) {
30377
+ if (!constPropsCopied) {
30378
+ constProps = { ...constProps };
30379
+ constPropsCopied = true;
30344
30380
  }
30345
- toSort = mergeHandlers(varProps, "q-e:input", handler) || toSort;
30381
+ const existingHandler = constProps["q-e:input"];
30382
+ delete constProps["q-e:input"];
30383
+ toSort = mergeHandlers(varProps, "q-e:input", existingHandler) || toSort;
30346
30384
  }
30385
+ toSort = mergeHandlers(varProps, "q-e:input", handler) || toSort;
30347
30386
  }
30348
30387
  }
30349
30388
  if (varProps && _hasOwnProperty3.call(varProps, "className")) {
@@ -31059,17 +31098,17 @@ var DomContainer = class extends _SharedContainer {
31059
31098
  };
31060
31099
 
31061
31100
  // packages/qwik/src/core/preloader/queue.ts
31062
- import { isBrowser as isBrowser4 } from "@qwik.dev/core/build";
31101
+ import { isBrowser as isBrowser5 } from "@qwik.dev/core/build";
31063
31102
 
31064
31103
  // packages/qwik/src/core/preloader/constants.ts
31065
- import { isBrowser as isBrowser3 } from "@qwik.dev/core/build";
31066
- var doc = isBrowser3 ? document : void 0;
31104
+ import { isBrowser as isBrowser4 } from "@qwik.dev/core/build";
31105
+ var doc = isBrowser4 ? document : void 0;
31067
31106
  var config = {
31068
31107
  $DEBUG$: false,
31069
31108
  $maxIdlePreloads$: 25,
31070
31109
  $invPreloadProbability$: 0.65
31071
31110
  };
31072
- var rel = isBrowser3 && doc.createElement("link").relList.supports("modulepreload") ? "modulePreload" : "preload";
31111
+ var rel = isBrowser4 && doc.createElement("link").relList.supports("modulepreload") ? "modulePreload" : "preload";
31073
31112
  var loadStart = Date.now();
31074
31113
  var isJSRegex = /\.[mc]?js$/;
31075
31114
 
@@ -31316,11 +31355,11 @@ var preload2 = (name, probability) => {
31316
31355
  } else {
31317
31356
  handleBundle(name, inverseProbability);
31318
31357
  }
31319
- if (isBrowser4) {
31358
+ if (isBrowser5) {
31320
31359
  trigger();
31321
31360
  }
31322
31361
  };
31323
- if (isBrowser4) {
31362
+ if (isBrowser5) {
31324
31363
  document.addEventListener("qsymbol", (ev) => {
31325
31364
  const { symbol, href } = ev.detail;
31326
31365
  if (href) {
@@ -31331,10 +31370,10 @@ if (isBrowser4) {
31331
31370
  }
31332
31371
 
31333
31372
  // packages/qwik/src/core/use/use-locale.ts
31334
- import { isServer as isServer9 } from "@qwik.dev/core/build";
31373
+ import { isServer as isServer10 } from "@qwik.dev/core/build";
31335
31374
  var _locale = void 0;
31336
31375
  var localAsyncStore;
31337
- if (isServer9) {
31376
+ if (isServer10) {
31338
31377
  import("node:async_hooks").then((module) => {
31339
31378
  localAsyncStore = new module.AsyncLocalStorage();
31340
31379
  }).catch(() => {
@@ -31458,7 +31497,7 @@ var trackSignalAndAssignHost = (value, host, property, container, data) => {
31458
31497
  };
31459
31498
 
31460
31499
  // packages/qwik/src/core/reactive-primitives/impl/store.ts
31461
- import { isDev as isDev21, isServer as isServer10 } from "@qwik.dev/core/build";
31500
+ import { isDev as isDev21, isServer as isServer11 } from "@qwik.dev/core/build";
31462
31501
  var DEBUG7 = false;
31463
31502
  var log6 = (...args) => console.log("STORE", ...args.map(qwikDebugToString));
31464
31503
  var getStoreHandler = (value) => {
@@ -31622,7 +31661,7 @@ function addStoreEffect(target, prop, store, effectSubscription) {
31622
31661
  }
31623
31662
  ensureContainsSubscription(effects, effectSubscription);
31624
31663
  ensureContainsBackRef(effectSubscription, target);
31625
- (import.meta.env.TEST ? !isDomContainer(store.$container$) : isServer10) && addQrlToSerializationCtx(effectSubscription, store.$container$);
31664
+ (import.meta.env.TEST ? !isDomContainer(store.$container$) : isServer11) && addQrlToSerializationCtx(effectSubscription, store.$container$);
31626
31665
  DEBUG7 && log6(
31627
31666
  "sub",
31628
31667
  pad(
@@ -31963,7 +32002,7 @@ var NoSerializeSymbol = /* @__PURE__ */ Symbol("noSerialize");
31963
32002
  var SerializerSymbol = /* @__PURE__ */ Symbol("serialize");
31964
32003
 
31965
32004
  // packages/qwik/src/core/reactive-primitives/utils.ts
31966
- import { isDev as isDev23, isServer as isServer11 } from "@qwik.dev/core/build";
32005
+ import { isDev as isDev23, isServer as isServer12 } from "@qwik.dev/core/build";
31967
32006
  var DEBUG8 = false;
31968
32007
  var log7 = (...args) => console.log("SIGNAL", ...args.map(qwikDebugToString));
31969
32008
  var throwIfQRLNotResolved = (qrl) => {
@@ -31999,7 +32038,7 @@ var addQrlToSerializationCtx = (effectSubscriber, container) => {
31999
32038
  }
32000
32039
  };
32001
32040
  var scheduleEffects = (container, signal, effects) => {
32002
- const isBrowser5 = import.meta.env.TEST ? !isServerPlatform() : !isServer11;
32041
+ const isBrowser6 = import.meta.env.TEST ? !isServerPlatform() : !isServer12;
32003
32042
  if (effects) {
32004
32043
  const scheduleEffect = (effectSubscription) => {
32005
32044
  const consumer = effectSubscription.consumer;
@@ -32013,7 +32052,7 @@ var scheduleEffects = (container, signal, effects) => {
32013
32052
  } else if (property === ":" /* COMPONENT */) {
32014
32053
  markVNodeDirty(container, consumer, 4 /* COMPONENT */);
32015
32054
  } else if (property === "." /* VNODE */) {
32016
- if (isBrowser5) {
32055
+ if (isBrowser6) {
32017
32056
  setNodeDiffPayload(consumer, signal);
32018
32057
  markVNodeDirty(container, consumer, 2 /* NODE_DIFF */);
32019
32058
  }
@@ -32026,7 +32065,7 @@ var scheduleEffects = (container, signal, effects) => {
32026
32065
  scopedStyleIdPrefix: data.$scopedStyleIdPrefix$,
32027
32066
  value: signal
32028
32067
  };
32029
- if (isBrowser5) {
32068
+ if (isBrowser6) {
32030
32069
  setNodePropData(consumer, property, payload);
32031
32070
  } else {
32032
32071
  const node = consumer;
@@ -32440,6 +32479,7 @@ function vnode_walkDirectChildren(journal, vParent, callback) {
32440
32479
  function vnode_walkVNode(vNode, callback) {
32441
32480
  let vCursor = vNode;
32442
32481
  if (vnode_isTextVNode(vNode)) {
32482
+ callback?.(vNode, null);
32443
32483
  return;
32444
32484
  }
32445
32485
  let vParent = null;
@@ -32535,11 +32575,6 @@ var vnode_getDomSibling = (vNode, nextDirection, descend2) => {
32535
32575
  }
32536
32576
  return null;
32537
32577
  };
32538
- var vnode_ensureInflatedIfText = (journal, vNode) => {
32539
- if (vnode_isTextVNode(vNode)) {
32540
- vnode_ensureTextInflated(journal, vNode);
32541
- }
32542
- };
32543
32578
  var vnode_ensureTextInflated = (journal, vnode) => {
32544
32579
  const textVNode = ensureTextVNode(vnode);
32545
32580
  const flags = textVNode.flags;
@@ -32886,7 +32921,7 @@ var vnode_findInsertBefore = (journal, parent, insertBefore) => {
32886
32921
  } else {
32887
32922
  adjustedInsertBefore = insertBefore;
32888
32923
  }
32889
- adjustedInsertBefore && vnode_ensureInflatedIfText(journal, adjustedInsertBefore);
32924
+ adjustedInsertBefore && vnode_isTextVNode(adjustedInsertBefore) && vnode_ensureTextInflated(journal, adjustedInsertBefore);
32890
32925
  return adjustedInsertBefore;
32891
32926
  };
32892
32927
  var vnode_connectSiblings = (parent, vNode, vNext) => {
@@ -32910,6 +32945,15 @@ var vnode_unlinkFromOldParent = (journal, currentParent, newParent, newChild) =>
32910
32945
  vnode_remove(journal, currentParent, newChild, false);
32911
32946
  }
32912
32947
  };
32948
+ var vnode_inflateProjectionTrailingText = (journal, projection) => {
32949
+ let last = projection;
32950
+ while (last && vnode_isVirtualVNode(last)) {
32951
+ last = last.lastChild;
32952
+ }
32953
+ if (last && vnode_isTextVNode(last) && (last.flags & 8 /* Inflated */) === 0) {
32954
+ vnode_ensureTextInflated(journal, last);
32955
+ }
32956
+ };
32913
32957
  var vnode_insertBefore = (journal, parent, newChild, insertBefore) => {
32914
32958
  if (vnode_isElementOrTextVNode(newChild)) {
32915
32959
  vnode_insertElementBefore(journal, parent, newChild, insertBefore);
@@ -33488,6 +33532,15 @@ function materializeFromVNodeData(vParent, vData, element, child) {
33488
33532
  vnode_ensureElementKeyInflated(elementVNode);
33489
33533
  addVNode(elementVNode);
33490
33534
  child = fastNextSibling(child);
33535
+ while (
33536
+ // skip only elements, not text nodes
33537
+ isElement(child) && shouldSkipElement(child)
33538
+ ) {
33539
+ child = fastNextSibling(child);
33540
+ if (!child && value > 0) {
33541
+ throw qError(27 /* materializeVNodeDataError */, [vData, peek(), nextToConsumeIdx]);
33542
+ }
33543
+ }
33491
33544
  }
33492
33545
  } else if (peek() === VNodeDataChar.SCOPED_STYLE) {
33493
33546
  vnode_setProp(vParent, QScopedStyle, consumeValue());
@@ -34209,10 +34262,7 @@ function diffJsxVNode(received, expected, path = [], container, isSsr) {
34209
34262
  return [path.join(" > ") + " missing"];
34210
34263
  }
34211
34264
  if (!container.qContainer) {
34212
- try {
34213
- _getDomContainer(container);
34214
- } catch {
34215
- }
34265
+ _getDomContainer(container);
34216
34266
  }
34217
34267
  const diffs = [];
34218
34268
  if (typeof expected === "string") {
@@ -34857,15 +34907,7 @@ function createPlatform3(opts, resolvedManifest) {
34857
34907
  if (regSym) {
34858
34908
  return regSym;
34859
34909
  }
34860
- let modulePath = String(url);
34861
- if (!modulePath.endsWith(".js")) {
34862
- modulePath += ".js";
34863
- }
34864
- const module = __require(modulePath);
34865
- if (!(symbolName in module)) {
34866
- throw new Error(`Q-ERROR: missing symbol '${symbolName}' in module '${modulePath}'.`);
34867
- }
34868
- return module[symbolName];
34910
+ throw qError(6 /* dynamicImportFailed */, [symbolName]);
34869
34911
  },
34870
34912
  raf: () => {
34871
34913
  console.error("server can not rerender");