@gomusdev/web-components 3.9.0 → 3.10.1

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.
@@ -1459,7 +1459,7 @@
1459
1459
  if (effect_tracking()) {
1460
1460
  get$2(version);
1461
1461
  render_effect(() => {
1462
- if (subscribers === 0) stop = untrack(() => start(() => increment(version)));
1462
+ if (subscribers === 0) stop = untrack(() => start(() => increment$1(version)));
1463
1463
  subscribers += 1;
1464
1464
  return () => {
1465
1465
  queue_micro_task(() => {
@@ -1467,7 +1467,7 @@
1467
1467
  if (subscribers === 0) {
1468
1468
  stop?.();
1469
1469
  stop = void 0;
1470
- increment(version);
1470
+ increment$1(version);
1471
1471
  }
1472
1472
  });
1473
1473
  };
@@ -2206,7 +2206,7 @@
2206
2206
  * Silently (without using `get`) increment a source
2207
2207
  * @param {Source<number>} source
2208
2208
  */
2209
- function increment(source) {
2209
+ function increment$1(source) {
2210
2210
  set(source, source.v + 1);
2211
2211
  }
2212
2212
  /**
@@ -2296,11 +2296,11 @@
2296
2296
  if (prop in target) {
2297
2297
  const s = with_parent(() => /* @__PURE__ */ state(UNINITIALIZED, stack));
2298
2298
  sources.set(prop, s);
2299
- increment(version);
2299
+ increment$1(version);
2300
2300
  }
2301
2301
  } else {
2302
2302
  set(s, UNINITIALIZED);
2303
- increment(version);
2303
+ increment$1(version);
2304
2304
  }
2305
2305
  return true;
2306
2306
  },
@@ -2382,7 +2382,7 @@
2382
2382
  var n = Number(prop);
2383
2383
  if (Number.isInteger(n) && n >= ls.v) set(ls, n + 1);
2384
2384
  }
2385
- increment(version);
2385
+ increment$1(version);
2386
2386
  }
2387
2387
  return true;
2388
2388
  },
@@ -13909,12 +13909,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
13909
13909
  window.location.assign(url);
13910
13910
  },
13911
13911
  forms: {},
13912
- fields: {}
13912
+ fields: {},
13913
+ quantityStepper: true
13913
13914
  };
13914
13915
  var ConfigStoreSvelte = class {
13915
13916
  defaultConfig = assign(defaultConfig, window.customOptions);
13916
13917
  override = this.defaultConfig;
13917
- #options = /* @__PURE__ */ state(proxy({}));
13918
+ #options = /* @__PURE__ */ state(proxy(this.defaultConfig));
13918
13919
  get options() {
13919
13920
  return get$2(this.#options);
13920
13921
  }
@@ -13990,7 +13991,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
13990
13991
  var getPersonalizationDetails = createGetDetails(KEY$5);
13991
13992
  //#endregion
13992
13993
  //#region src/components/annualTicketPersonalization/components/AnnualTicketPersonalization.svelte
13993
- var root$52 = /* @__PURE__ */ from_html(`<li><a> </a></li>`);
13994
+ var root$53 = /* @__PURE__ */ from_html(`<li><a> </a></li>`);
13994
13995
  var root_1$17 = /* @__PURE__ */ from_html(`<ul class="go-annual-ticket"><li class="go-annual-ticket-title"> </li> <li class="go-annual-ticket-personalization-count"> </li> <!></ul>`);
13995
13996
  function AnnualTicketPersonalization($$anchor, $$props) {
13996
13997
  push($$props, true);
@@ -14025,7 +14026,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14025
14026
  reset(li_1);
14026
14027
  var node_2 = sibling(li_1, 2);
14027
14028
  var consequent = ($$anchor) => {
14028
- var li_2 = root$52();
14029
+ var li_2 = root$53();
14029
14030
  var a = child(li_2);
14030
14031
  var text_2 = child(a, true);
14031
14032
  reset(a);
@@ -14700,7 +14701,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14700
14701
  }
14701
14702
  //#endregion
14702
14703
  //#region src/components/forms/ui/generic/Form.svelte
14703
- var root$51 = /* @__PURE__ */ from_html(`<go-all-fields></go-all-fields> <go-form-feedback><go-errors-feedback></go-errors-feedback> <go-success-feedback></go-success-feedback></go-form-feedback> <go-submit> </go-submit>`, 3);
14704
+ var root$52 = /* @__PURE__ */ from_html(`<go-all-fields></go-all-fields> <go-form-feedback><go-errors-feedback></go-errors-feedback> <go-success-feedback></go-success-feedback></go-form-feedback> <go-submit> </go-submit>`, 3);
14704
14705
  function Form($$anchor, $$props) {
14705
14706
  push($$props, true);
14706
14707
  let formId = prop($$props, "formId", 7), custom = prop($$props, "custom", 7);
@@ -14745,7 +14746,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14745
14746
  var fragment = comment();
14746
14747
  var node = first_child(fragment);
14747
14748
  var consequent = ($$anchor) => {
14748
- var fragment_1 = root$51();
14749
+ var fragment_1 = root$52();
14749
14750
  var go_submit = sibling(sibling(first_child(fragment_1), 2), 2);
14750
14751
  var text = child(go_submit, true);
14751
14752
  reset(go_submit);
@@ -14772,7 +14773,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14772
14773
  }, [], ["details"]));
14773
14774
  //#endregion
14774
14775
  //#region src/components/auth/passwordReset/PasswordReset.svelte
14775
- var root$50 = /* @__PURE__ */ from_html(`<go-form></go-form>`, 2);
14776
+ var root$51 = /* @__PURE__ */ from_html(`<go-form></go-form>`, 2);
14776
14777
  function PasswordReset($$anchor, $$props) {
14777
14778
  push($$props, true);
14778
14779
  let custom = prop($$props, "custom", 7, false);
@@ -14805,7 +14806,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14805
14806
  flushSync();
14806
14807
  }
14807
14808
  };
14808
- var go_form = root$50();
14809
+ var go_form = root$51();
14809
14810
  set_custom_element_data(go_form, "formId", "passwordReset");
14810
14811
  template_effect(() => set_custom_element_data(go_form, "custom", custom()));
14811
14812
  event("submit", go_form, passwordReset);
@@ -15048,7 +15049,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15048
15049
  var getCartDetails = createGetDetails(KEY$3);
15049
15050
  //#endregion
15050
15051
  //#region src/components/cart/components/itemTitles/Coupon.svelte
15051
- var root$49 = /* @__PURE__ */ from_html(`<span class="go-cart-item-title" data-testid="cart-item-title"> </span>`);
15052
+ var root$50 = /* @__PURE__ */ from_html(`<span class="go-cart-item-title" data-testid="cart-item-title"> </span>`);
15052
15053
  function Coupon($$anchor, $$props) {
15053
15054
  push($$props, true);
15054
15055
  let cartItem = prop($$props, "cartItem", 7);
@@ -15061,7 +15062,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15061
15062
  flushSync();
15062
15063
  }
15063
15064
  };
15064
- var span = root$49();
15065
+ var span = root$50();
15065
15066
  var text = child(span, true);
15066
15067
  reset(span);
15067
15068
  template_effect(() => set_text(text, cartItem().product.title));
@@ -15071,7 +15072,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15071
15072
  create_custom_element(Coupon, { cartItem: {} }, [], [], { mode: "open" });
15072
15073
  //#endregion
15073
15074
  //#region src/components/cart/components/itemTitles/Event.svelte
15074
- var root$48 = /* @__PURE__ */ from_html(`<span class="go-cart-item-date" data-testid="cart-item-date"> </span><span class="go-cart-item-time" data-testid="cart-item-time"> </span>`, 1);
15075
+ var root$49 = /* @__PURE__ */ from_html(`<span class="go-cart-item-date" data-testid="cart-item-date"> </span><span class="go-cart-item-time" data-testid="cart-item-time"> </span>`, 1);
15075
15076
  var root_1$16 = /* @__PURE__ */ from_html(`<span class="go-cart-item-title" data-testid="cart-item-title"><span class="go-cart-item-title-event-title"> </span><span class="go-cart-item-title-ticket-title"> </span></span><!>`, 1);
15076
15077
  function Event$2($$anchor, $$props) {
15077
15078
  push($$props, true);
@@ -15098,7 +15099,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15098
15099
  reset(span);
15099
15100
  var node = sibling(span);
15100
15101
  var consequent = ($$anchor) => {
15101
- var fragment_1 = root$48();
15102
+ var fragment_1 = root$49();
15102
15103
  var span_3 = first_child(fragment_1);
15103
15104
  var text_2 = child(span_3, true);
15104
15105
  reset(span_3);
@@ -15127,7 +15128,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15127
15128
  create_custom_element(Event$2, { cartItem: {} }, [], [], { mode: "open" });
15128
15129
  //#endregion
15129
15130
  //#region src/components/cart/components/itemTitles/Ticket.svelte
15130
- var root$47 = /* @__PURE__ */ from_html(`<span class="go-cart-item-time" data-testid="cart-item-time"> </span>`);
15131
+ var root$48 = /* @__PURE__ */ from_html(`<span class="go-cart-item-time" data-testid="cart-item-time"> </span>`);
15131
15132
  var root_1$15 = /* @__PURE__ */ from_html(`<span class="go-cart-item-date" data-testid="cart-item-date"> </span> <!>`, 1);
15132
15133
  var root_2$11 = /* @__PURE__ */ from_html(`<span class="go-cart-item-title" data-testid="cart-item-title"> </span> <!>`, 1);
15133
15134
  function Ticket($$anchor, $$props) {
@@ -15154,7 +15155,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15154
15155
  reset(span_1);
15155
15156
  var node_1 = sibling(span_1, 2);
15156
15157
  var consequent = ($$anchor) => {
15157
- var span_2 = root$47();
15158
+ var span_2 = root$48();
15158
15159
  var text_2 = child(span_2, true);
15159
15160
  reset(span_2);
15160
15161
  template_effect(($0) => set_text(text_2, $0), [() => formatTime(cartItem().time)]);
@@ -15178,6 +15179,208 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15178
15179
  }
15179
15180
  create_custom_element(Ticket, { cartItem: {} }, [], [], { mode: "open" });
15180
15181
  //#endregion
15182
+ //#region src/lib/models/cart/quantityStepper.ts
15183
+ /** `+`: from `0` jump to the order minimum (at least `1`); otherwise step up by one. Capped at `max`. */
15184
+ function increment(value, { min, max }) {
15185
+ const target = value === 0 ? Math.max(min, 1) : value + 1;
15186
+ return target > max ? value : target;
15187
+ }
15188
+ /** `−`: from the order minimum drop straight to `0` (skipping the invalid `1..min-1` band); otherwise step down by one. */
15189
+ function decrement(value, { min }) {
15190
+ return value <= min ? 0 : value - 1;
15191
+ }
15192
+ /** Clamp a typed value into `{0} ∪ [min, max]`: `≤0` → `0`, `0<v<min` rounds up to `min`, `>max` → `max`. */
15193
+ function clampTyped(raw, { min, max }) {
15194
+ if (!Number.isFinite(raw) || raw <= 0) return 0;
15195
+ let v = Math.floor(raw);
15196
+ if (v < min) v = min;
15197
+ if (v > max) v = max;
15198
+ return v;
15199
+ }
15200
+ /** Whether `value` is a committable quantity for these bounds. */
15201
+ function isValid(value, { min, max }) {
15202
+ if (value < 0 || value > max) return false;
15203
+ return value === 0 || value >= min;
15204
+ }
15205
+ /** Whether `+` can change the value (false → the button is `aria-disabled`). */
15206
+ function canIncrement(value, bounds) {
15207
+ return increment(value, bounds) > value;
15208
+ }
15209
+ /** Whether `−` can change the value (false → the button is `aria-disabled`). */
15210
+ function canDecrement(value) {
15211
+ return value > 0;
15212
+ }
15213
+ //#endregion
15214
+ //#region src/components/shared/quantityStepper/QuantityStepper.svelte
15215
+ var root$47 = /* @__PURE__ */ from_html(`<div class="go-quantity-stepper" role="group"><button type="button" class="go-quantity-stepper-button go-quantity-stepper-decrement" tabindex="-1"><span aria-hidden="true">−</span></button> <input class="go-quantity-stepper-value" type="text" role="spinbutton" inputmode="numeric" autocomplete="off"/> <button type="button" class="go-quantity-stepper-button go-quantity-stepper-increment" tabindex="-1"><span aria-hidden="true">+</span></button></div>`);
15216
+ function QuantityStepper($$anchor, $$props) {
15217
+ const inputId = props_id();
15218
+ push($$props, true);
15219
+ let value = prop($$props, "value", 7), min = prop($$props, "min", 7), max = prop($$props, "max", 7), label = prop($$props, "label", 7), decreaseLabel = prop($$props, "decreaseLabel", 7), increaseLabel = prop($$props, "increaseLabel", 7), onChange = prop($$props, "onChange", 7);
15220
+ let inputEl;
15221
+ let invalid = /* @__PURE__ */ state(false);
15222
+ const decDisabled = /* @__PURE__ */ user_derived(() => !canDecrement(value()));
15223
+ const incDisabled = /* @__PURE__ */ user_derived(() => !canIncrement(value(), {
15224
+ min: min(),
15225
+ max: max()
15226
+ }));
15227
+ function emit(next) {
15228
+ if (next !== value()) onChange()(next);
15229
+ }
15230
+ function stepDown() {
15231
+ if (canDecrement(value())) emit(decrement(value(), {
15232
+ min: min(),
15233
+ max: max()
15234
+ }));
15235
+ }
15236
+ function stepUp() {
15237
+ if (canIncrement(value(), {
15238
+ min: min(),
15239
+ max: max()
15240
+ })) emit(increment(value(), {
15241
+ min: min(),
15242
+ max: max()
15243
+ }));
15244
+ }
15245
+ function commitTyped() {
15246
+ const next = clampTyped(parseInt(inputEl.value, 10), {
15247
+ min: min(),
15248
+ max: max()
15249
+ });
15250
+ set(invalid, false);
15251
+ inputEl.value = String(next);
15252
+ emit(next);
15253
+ }
15254
+ function onInput() {
15255
+ const raw = inputEl.value.trim();
15256
+ set(invalid, !(/^\d+$/.test(raw) && isValid(parseInt(raw, 10), {
15257
+ min: min(),
15258
+ max: max()
15259
+ })));
15260
+ }
15261
+ function onKeydown(e) {
15262
+ switch (e.key) {
15263
+ case "ArrowUp":
15264
+ e.preventDefault();
15265
+ stepUp();
15266
+ break;
15267
+ case "ArrowDown":
15268
+ e.preventDefault();
15269
+ stepDown();
15270
+ break;
15271
+ case "Home":
15272
+ e.preventDefault();
15273
+ emit(0);
15274
+ break;
15275
+ case "End":
15276
+ e.preventDefault();
15277
+ emit(max());
15278
+ break;
15279
+ case "Enter":
15280
+ e.preventDefault();
15281
+ commitTyped();
15282
+ break;
15283
+ }
15284
+ }
15285
+ var $$exports = {
15286
+ get value() {
15287
+ return value();
15288
+ },
15289
+ set value($$value) {
15290
+ value($$value);
15291
+ flushSync();
15292
+ },
15293
+ get min() {
15294
+ return min();
15295
+ },
15296
+ set min($$value) {
15297
+ min($$value);
15298
+ flushSync();
15299
+ },
15300
+ get max() {
15301
+ return max();
15302
+ },
15303
+ set max($$value) {
15304
+ max($$value);
15305
+ flushSync();
15306
+ },
15307
+ get label() {
15308
+ return label();
15309
+ },
15310
+ set label($$value) {
15311
+ label($$value);
15312
+ flushSync();
15313
+ },
15314
+ get decreaseLabel() {
15315
+ return decreaseLabel();
15316
+ },
15317
+ set decreaseLabel($$value) {
15318
+ decreaseLabel($$value);
15319
+ flushSync();
15320
+ },
15321
+ get increaseLabel() {
15322
+ return increaseLabel();
15323
+ },
15324
+ set increaseLabel($$value) {
15325
+ increaseLabel($$value);
15326
+ flushSync();
15327
+ },
15328
+ get onChange() {
15329
+ return onChange();
15330
+ },
15331
+ set onChange($$value) {
15332
+ onChange($$value);
15333
+ flushSync();
15334
+ }
15335
+ };
15336
+ var div = root$47();
15337
+ var button = child(div);
15338
+ var input = sibling(button, 2);
15339
+ remove_input_defaults(input);
15340
+ set_attribute(input, "aria-valuemin", 0);
15341
+ bind_this(input, ($$value) => inputEl = $$value, () => inputEl);
15342
+ var button_1 = sibling(input, 2);
15343
+ reset(div);
15344
+ template_effect(() => {
15345
+ set_attribute(div, "aria-label", label());
15346
+ set_attribute(button, "title", decreaseLabel());
15347
+ set_attribute(button, "aria-controls", inputId);
15348
+ set_attribute(button, "aria-disabled", get$2(decDisabled));
15349
+ set_attribute(input, "id", inputId);
15350
+ set_attribute(input, "aria-label", label());
15351
+ set_value(input, value());
15352
+ set_attribute(input, "aria-valuenow", value());
15353
+ set_attribute(input, "aria-valuemax", max());
15354
+ set_attribute(input, "aria-invalid", get$2(invalid) ? "true" : void 0);
15355
+ set_attribute(button_1, "title", increaseLabel());
15356
+ set_attribute(button_1, "aria-controls", inputId);
15357
+ set_attribute(button_1, "aria-disabled", get$2(incDisabled));
15358
+ });
15359
+ delegated("click", button, stepDown);
15360
+ delegated("input", input, onInput);
15361
+ delegated("change", input, commitTyped);
15362
+ event("blur", input, commitTyped);
15363
+ delegated("keydown", input, onKeydown);
15364
+ delegated("click", button_1, stepUp);
15365
+ append($$anchor, div);
15366
+ return pop($$exports);
15367
+ }
15368
+ delegate([
15369
+ "click",
15370
+ "input",
15371
+ "change",
15372
+ "keydown"
15373
+ ]);
15374
+ create_custom_element(QuantityStepper, {
15375
+ value: {},
15376
+ min: {},
15377
+ max: {},
15378
+ label: {},
15379
+ decreaseLabel: {},
15380
+ increaseLabel: {},
15381
+ onChange: {}
15382
+ }, [], [], { mode: "open" });
15383
+ //#endregion
15181
15384
  //#region src/lib/models/cart/selectOptions.ts
15182
15385
  function generateQuantityOptions(from, to, options = { floor: 0 }) {
15183
15386
  const { floor } = options;
@@ -15204,10 +15407,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15204
15407
  var root_2$10 = /* @__PURE__ */ from_html(`<span> </span>`);
15205
15408
  var root_3$7 = /* @__PURE__ */ from_html(`<option> </option>`);
15206
15409
  var root_4$4 = /* @__PURE__ */ from_html(`<select class="go-cart-item-select"></select>`);
15207
- var root_5$2 = /* @__PURE__ */ from_html(`<li class="go-cart-item-remove"><button class="go-cart-remove">⨉</button></li>`);
15410
+ var root_5$3 = /* @__PURE__ */ from_html(`<li class="go-cart-item-remove"><button class="go-cart-remove">⨉</button></li>`);
15208
15411
  var root_6$2 = /* @__PURE__ */ from_html(`<article class="go-cart-item-content"><ul><li class="go-cart-item-title-container"><!></li> <li class="go-cart-item-price"><!></li> <li class="go-cart-item-count"><!></li> <!> <li class="go-cart-item-sum"> </li></ul></article>`);
15209
15412
  function Item$1($$anchor, $$props) {
15210
15413
  push($$props, true);
15414
+ const useStepper = /* @__PURE__ */ user_derived(() => configStore.config.quantityStepper);
15211
15415
  let displayItem = prop($$props, "displayItem", 7), displayCart = prop($$props, "displayCart", 7), preview = prop($$props, "preview", 7);
15212
15416
  let capacity = /* @__PURE__ */ state(void 0);
15213
15417
  const itemInMaincart = /* @__PURE__ */ user_derived(() => shop.cart?.items.find((item) => item.uuid === (displayItem().display?.reference_uuid ?? displayItem().uuid)));
@@ -15218,15 +15422,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15218
15422
  set(capacity, shop.capacityManager.capacity(displayCart(), displayItem(), emptyCart), true);
15219
15423
  });
15220
15424
  });
15221
- function update(target) {
15222
- const el = target;
15425
+ function updateQuantity(nextLineQuantity) {
15223
15426
  if (!get$2(itemInMaincart)) {
15224
15427
  console.error("(CartItem) Could not find main item for line", displayItem());
15225
15428
  return;
15226
15429
  }
15227
- const nextLineQuantity = parseInt(el.value, 10);
15228
15430
  get$2(itemInMaincart).quantity = Math.max(0, get$2(itemInMaincart).quantity - displayItem().quantity + nextLineQuantity);
15229
15431
  }
15432
+ function update(target) {
15433
+ updateQuantity(parseInt(target.value, 10));
15434
+ }
15230
15435
  function del() {
15231
15436
  if (!get$2(itemInMaincart)) {
15232
15437
  console.error("(CartItem) Could not find main item for line", displayItem());
@@ -15261,7 +15466,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15261
15466
  };
15262
15467
  var fragment = comment();
15263
15468
  var node = first_child(fragment);
15264
- var consequent_6 = ($$anchor) => {
15469
+ var consequent_7 = ($$anchor) => {
15265
15470
  var article = root_6$2();
15266
15471
  var ul = child(article);
15267
15472
  var li = child(ul);
@@ -15324,6 +15529,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15324
15529
  template_effect(() => set_text(text_3, displayItem().quantity));
15325
15530
  append($$anchor, span_2);
15326
15531
  };
15532
+ var consequent_5 = ($$anchor) => {
15533
+ {
15534
+ let $0 = /* @__PURE__ */ user_derived(() => displayItem().quantity ?? 0);
15535
+ let $1 = /* @__PURE__ */ user_derived(() => shop.t("quantity.decrease"));
15536
+ let $2 = /* @__PURE__ */ user_derived(() => shop.t("quantity.increase"));
15537
+ QuantityStepper($$anchor, {
15538
+ get value() {
15539
+ return get$2($0);
15540
+ },
15541
+ get min() {
15542
+ return get$2(capacity).min;
15543
+ },
15544
+ get max() {
15545
+ return get$2(capacity).max;
15546
+ },
15547
+ get label() {
15548
+ return displayItem().product.title;
15549
+ },
15550
+ get decreaseLabel() {
15551
+ return get$2($1);
15552
+ },
15553
+ get increaseLabel() {
15554
+ return get$2($2);
15555
+ },
15556
+ onChange: updateQuantity
15557
+ });
15558
+ }
15559
+ };
15327
15560
  var alternate_1 = ($$anchor) => {
15328
15561
  var select = root_4$4();
15329
15562
  each(select, 21, () => generateQuantityOptions(get$2(capacity).min, get$2(capacity).max, { floor: 1 }), (q) => q.value, ($$anchor, q) => {
@@ -15345,12 +15578,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15345
15578
  };
15346
15579
  if_block(node_3, ($$render) => {
15347
15580
  if (preview()) $$render(consequent_4);
15581
+ else if (get$2(useStepper)) $$render(consequent_5, 1);
15348
15582
  else $$render(alternate_1, -1);
15349
15583
  });
15350
15584
  reset(li_2);
15351
15585
  var node_4 = sibling(li_2, 2);
15352
- var consequent_5 = ($$anchor) => {
15353
- var li_3 = root_5$2();
15586
+ var consequent_6 = ($$anchor) => {
15587
+ var li_3 = root_5$3();
15354
15588
  var button = child(li_3);
15355
15589
  reset(li_3);
15356
15590
  template_effect(($0) => set_attribute(button, "aria-label", $0), [() => shop.t("cart.item.remove")]);
@@ -15358,7 +15592,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15358
15592
  append($$anchor, li_3);
15359
15593
  };
15360
15594
  if_block(node_4, ($$render) => {
15361
- if (!preview()) $$render(consequent_5);
15595
+ if (!preview()) $$render(consequent_6);
15362
15596
  });
15363
15597
  var li_4 = sibling(node_4, 2);
15364
15598
  var text_5 = child(li_4, true);
@@ -15369,7 +15603,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15369
15603
  append($$anchor, article);
15370
15604
  };
15371
15605
  if_block(node, ($$render) => {
15372
- if (get$2(capacity)) $$render(consequent_6);
15606
+ if (get$2(capacity)) $$render(consequent_7);
15373
15607
  });
15374
15608
  append($$anchor, fragment);
15375
15609
  return pop($$exports);
@@ -16865,11 +17099,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
16865
17099
  s = this.#source(0);
16866
17100
  sources.set(key, s);
16867
17101
  set(this.#size, super.size);
16868
- increment(version);
17102
+ increment$1(version);
16869
17103
  } else if (prev_res !== value) {
16870
- increment(s);
17104
+ increment$1(s);
16871
17105
  var v_reactions = version.reactions === null ? null : new Set(version.reactions);
16872
- if (v_reactions === null || !s.reactions?.every((r) => v_reactions.has(r))) increment(version);
17106
+ if (v_reactions === null || !s.reactions?.every((r) => v_reactions.has(r))) increment$1(version);
16873
17107
  }
16874
17108
  return res;
16875
17109
  }
@@ -16884,7 +17118,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
16884
17118
  }
16885
17119
  if (res) {
16886
17120
  set(this.#size, super.size);
16887
- increment(this.#version);
17121
+ increment$1(this.#version);
16888
17122
  }
16889
17123
  return res;
16890
17124
  }
@@ -16894,7 +17128,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
16894
17128
  var sources = this.#sources;
16895
17129
  set(this.#size, 0);
16896
17130
  for (var s of sources.values()) set(s, -1);
16897
- increment(this.#version);
17131
+ increment$1(this.#version);
16898
17132
  sources.clear();
16899
17133
  }
16900
17134
  #read_all() {
@@ -30314,7 +30548,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
30314
30548
  var root_2$6 = /* @__PURE__ */ from_html(`<label><!></label> <input/>`, 1);
30315
30549
  var root_3$6 = /* @__PURE__ */ from_html(`<label><!></label> <textarea></textarea>`, 1);
30316
30550
  var root_4$3 = /* @__PURE__ */ from_html(`<figure role="status" aria-live="polite"><img class="go-file-preview"/> <figcaption class="go-file-preview-caption"> </figcaption></figure>`);
30317
- var root_5$1 = /* @__PURE__ */ from_html(`<label><!></label> <input/> <!>`, 1);
30551
+ var root_5$2 = /* @__PURE__ */ from_html(`<label><!></label> <input/> <!>`, 1);
30318
30552
  var root_6$1 = /* @__PURE__ */ from_html(`<label><input/> <span class="go-checkbox-label"><!></span></label>`);
30319
30553
  var root_7$1 = /* @__PURE__ */ from_html(`<img src="" alt=""/> <option> </option>`, 1);
30320
30554
  var root_8$1 = /* @__PURE__ */ from_html(`<option disabled="" hidden="" selected=""> </option> <!>`, 1);
@@ -30385,7 +30619,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
30385
30619
  append($$anchor, fragment_2);
30386
30620
  };
30387
30621
  const file = ($$anchor) => {
30388
- var fragment_3 = root_5$1();
30622
+ var fragment_3 = root_5$2();
30389
30623
  var label_3 = first_child(fragment_3);
30390
30624
  labelText(child(label_3));
30391
30625
  reset(label_3);
@@ -33438,7 +33672,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33438
33672
  var root_2$2 = /* @__PURE__ */ from_html(`<!> <br/> <a class="go-ticket-download" target="_blank" rel="noopener noreferrer"> </a>`, 1);
33439
33673
  var root_3$2 = /* @__PURE__ */ from_html(`<br/> <a class="go-ticket-personalization"> </a>`, 1);
33440
33674
  var root_4$2 = /* @__PURE__ */ from_html(`<a aria-label="passbook link"><img alt="apple wallet icon"/></a>`);
33441
- var root_5 = /* @__PURE__ */ from_html(`<a aria-label="iCal link"> </a>`);
33675
+ var root_5$1 = /* @__PURE__ */ from_html(`<a aria-label="iCal link"> </a>`);
33442
33676
  var root_6 = /* @__PURE__ */ from_html(`<li><article><ul><li class="go-order-breakdown-count"></li> <li class="go-order-breakdown-product"><span class="go-order-item-title"> </span> <!></li> <li class="go-order-breakdown-item-price"> </li> <li class="go-order-breakdown-passbook"><!></li> <li class="go-order-breakdown-ical"><!></li></ul></article></li>`);
33443
33677
  var root_7 = /* @__PURE__ */ from_html(`<a class="go-ticket-download" target="_blank" rel="noopener noreferrer"> </a>`);
33444
33678
  var root_8 = /* @__PURE__ */ from_html(`<a class="go-ticket-personalization"> </a>`);
@@ -33560,7 +33794,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
33560
33794
  var li_5 = sibling(li_4, 2);
33561
33795
  var node_5 = child(li_5);
33562
33796
  var consequent_4 = ($$anchor) => {
33563
- var a_3 = root_5();
33797
+ var a_3 = root_5$1();
33564
33798
  var text_7 = child(a_3, true);
33565
33799
  reset(a_3);
33566
33800
  template_effect(($0) => {
@@ -36200,7 +36434,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
36200
36434
  var root_1$2 = /* @__PURE__ */ from_html(`<li class="go-tickets-item-info"><button type="button" data-testid="ticket-info-toggle"></button></li>`);
36201
36435
  var root_2$1 = /* @__PURE__ */ from_html(`<li class="go-ticket-additional-info" data-testid="ticket-additional-info"> </li>`);
36202
36436
  var root_3$1 = /* @__PURE__ */ from_html(`<option> </option>`);
36203
- var root_4$1 = /* @__PURE__ */ from_html(`<li><article><ul><li class="go-tickets-item-title"><!></li> <!> <li class="go-tickets-item-description" data-go-tickets-description=""></li> <!> <li class="go-tickets-item-price" data-go-tickets-price=""> </li> <li class="go-tickets-item-quality" data-go-tickets-quality=""><select class="go-tickets-item-select"></select></li></ul></article></li>`);
36437
+ var root_4$1 = /* @__PURE__ */ from_html(`<select class="go-tickets-item-select"></select>`);
36438
+ var root_5 = /* @__PURE__ */ from_html(`<li><article><ul><li class="go-tickets-item-title"><!></li> <!> <li class="go-tickets-item-description" data-go-tickets-description=""></li> <!> <li class="go-tickets-item-price" data-go-tickets-price=""> </li> <li class="go-tickets-item-quality" data-go-tickets-quality=""><!></li></ul></article></li>`);
36204
36439
  function Item($$anchor, $$props) {
36205
36440
  const uid = props_id();
36206
36441
  push($$props, true);
@@ -36225,12 +36460,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
36225
36460
  append($$anchor, text_2);
36226
36461
  };
36227
36462
  let item = prop($$props, "item", 7), details = prop($$props, "details", 7);
36463
+ const useStepper = /* @__PURE__ */ user_derived(() => configStore.config.quantityStepper);
36228
36464
  let capacity = /* @__PURE__ */ state(void 0);
36229
36465
  let infoExpanded = /* @__PURE__ */ state(false);
36230
36466
  const reductionReason = /* @__PURE__ */ user_derived(() => item().product?.content?.reduction_reason);
36231
36467
  const infoPanelId = `go-ticket-info-${uid}`;
36232
36468
  user_effect(() => {
36233
36469
  details().preCart.items.map((i) => i.quantity);
36470
+ shop.cart?.items.map((i) => i.quantity);
36234
36471
  untrack(() => {
36235
36472
  set(capacity, shop.capacityManager.capacity(shop.cart, item(), details().preCart), true);
36236
36473
  });
@@ -36258,8 +36495,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
36258
36495
  };
36259
36496
  var fragment_2 = comment();
36260
36497
  var node = first_child(fragment_2);
36261
- var consequent_2 = ($$anchor) => {
36262
- var li = root_4$1();
36498
+ var consequent_3 = ($$anchor) => {
36499
+ var li = root_5();
36263
36500
  var article = child(li);
36264
36501
  var ul = child(article);
36265
36502
  var li_1 = child(ul);
@@ -36305,35 +36542,70 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
36305
36542
  var text_4 = child(li_5, true);
36306
36543
  reset(li_5);
36307
36544
  var li_6 = sibling(li_5, 2);
36308
- var select = child(li_6);
36309
- each(select, 21, () => generateQuantityOptions(get$2(capacity).min, get$2(capacity).max), (q) => q.value, ($$anchor, q) => {
36310
- var option = root_3$1();
36311
- var text_5 = child(option, true);
36312
- reset(option);
36313
- var option_value = {};
36314
- template_effect(() => {
36315
- set_selected(option, item().quantity === get$2(q).value);
36316
- set_text(text_5, get$2(q).label);
36317
- if (option_value !== (option_value = get$2(q).value)) option.value = (option.__value = get$2(q).value) ?? "";
36545
+ var node_4 = child(li_6);
36546
+ var consequent_2 = ($$anchor) => {
36547
+ {
36548
+ let $0 = /* @__PURE__ */ user_derived(() => shop.t("quantity.decrease"));
36549
+ let $1 = /* @__PURE__ */ user_derived(() => shop.t("quantity.increase"));
36550
+ QuantityStepper($$anchor, {
36551
+ get value() {
36552
+ return item().quantity;
36553
+ },
36554
+ get min() {
36555
+ return get$2(capacity).min;
36556
+ },
36557
+ get max() {
36558
+ return get$2(capacity).max;
36559
+ },
36560
+ get label() {
36561
+ return item().product.title;
36562
+ },
36563
+ get decreaseLabel() {
36564
+ return get$2($0);
36565
+ },
36566
+ get increaseLabel() {
36567
+ return get$2($1);
36568
+ },
36569
+ onChange: (q) => item().quantity = q
36570
+ });
36571
+ }
36572
+ };
36573
+ var alternate = ($$anchor) => {
36574
+ var select = root_4$1();
36575
+ each(select, 21, () => generateQuantityOptions(get$2(capacity).min, get$2(capacity).max), (q) => q.value, ($$anchor, q) => {
36576
+ var option = root_3$1();
36577
+ var text_5 = child(option, true);
36578
+ reset(option);
36579
+ var option_value = {};
36580
+ template_effect(() => {
36581
+ set_selected(option, item().quantity === get$2(q).value);
36582
+ set_text(text_5, get$2(q).label);
36583
+ if (option_value !== (option_value = get$2(q).value)) option.value = (option.__value = get$2(q).value) ?? "";
36584
+ });
36585
+ append($$anchor, option);
36318
36586
  });
36319
- append($$anchor, option);
36587
+ reset(select);
36588
+ template_effect(($0) => set_attribute(select, "aria-label", $0), [() => shop.t("cart.content.table.edit")]);
36589
+ delegated("change", select, (e) => update(item(), e.target, details()?.ticketSelectionDetails));
36590
+ append($$anchor, select);
36591
+ };
36592
+ if_block(node_4, ($$render) => {
36593
+ if (get$2(useStepper)) $$render(consequent_2);
36594
+ else $$render(alternate, -1);
36320
36595
  });
36321
- reset(select);
36322
36596
  reset(li_6);
36323
36597
  reset(ul);
36324
36598
  reset(article);
36325
36599
  reset(li);
36326
- template_effect(($0) => {
36600
+ template_effect(() => {
36327
36601
  set_class(article, 1, clsx(["go-tickets-item", get$2(capacity).bookedOut && "is-booked-out"]));
36328
36602
  set_attribute(article, "data-testid", item().uuid);
36329
36603
  set_text(text_4, item().price_formatted);
36330
- set_attribute(select, "aria-label", $0);
36331
- }, [() => shop.t("cart.content.table.edit")]);
36332
- delegated("change", select, (e) => update(item(), e.target, details()?.ticketSelectionDetails));
36604
+ });
36333
36605
  append($$anchor, li);
36334
36606
  };
36335
36607
  if_block(node, ($$render) => {
36336
- if (get$2(capacity) && !get$2(capacity).unavailable) $$render(consequent_2);
36608
+ if (get$2(capacity) && !get$2(capacity).unavailable) $$render(consequent_3);
36337
36609
  });
36338
36610
  append($$anchor, fragment_2);
36339
36611
  return pop($$exports);
@@ -36446,7 +36718,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
36446
36718
  this.timeslots = [];
36447
36719
  return;
36448
36720
  }
36449
- this.timeslots = shop.capacityManager.quotaManager.timeslotsOn(date, this.tsd?.timeslotTicketIds).map((x) => ({
36721
+ const quotaManager = shop.capacityManager.quotaManager;
36722
+ quotaManager.clearPrecart();
36723
+ for (const item of shop.cart?.items ?? []) {
36724
+ const product = item.product;
36725
+ if (isUITicket(product)) quotaManager.setPrecartItemQuantity(product.id, item.quantity ?? 0);
36726
+ }
36727
+ this.timeslots = quotaManager.timeslotsOn(date, this.tsd?.timeslotTicketIds).map((x) => ({
36450
36728
  ...x,
36451
36729
  startAt: x.timeSlot,
36452
36730
  timeFormatted: x.timeSlot.substring(11, 16),
@@ -36473,6 +36751,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
36473
36751
  details.recalculateCapacities();
36474
36752
  });
36475
36753
  });
36754
+ user_effect(() => {
36755
+ shop.cart?.items.map((i) => i.quantity);
36756
+ untrack(() => details.recalculateCapacities());
36757
+ });
36476
36758
  const dispatchTimeslotSelect = (target, selected) => {
36477
36759
  if (!target || !("dispatchEvent" in target)) return;
36478
36760
  target.dispatchEvent(new CustomEvent("go-timeslot-select", {