@mj-biz-apps/orders-ng 5.36.1 → 5.37.0

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.
@@ -37189,7 +37189,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Conditional_3_Template(r
37189
37189
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_4_Template(rf, ctx) {
37190
37190
  if (rf & 1) {
37191
37191
  const _r3 = \u0275\u0275getCurrentView();
37192
- \u0275\u0275elementStart(0, "textarea", 38);
37192
+ \u0275\u0275elementStart(0, "textarea", 37);
37193
37193
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_4_Template_textarea_ngModelChange_0_listener($event) {
37194
37194
  \u0275\u0275restoreView(_r3);
37195
37195
  const field_r4 = \u0275\u0275nextContext().$implicit;
@@ -37222,7 +37222,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_For_4_Template(rf
37222
37222
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template(rf, ctx) {
37223
37223
  if (rf & 1) {
37224
37224
  const _r5 = \u0275\u0275getCurrentView();
37225
- \u0275\u0275elementStart(0, "select", 39);
37225
+ \u0275\u0275elementStart(0, "select", 38);
37226
37226
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template_select_ngModelChange_0_listener($event) {
37227
37227
  \u0275\u0275restoreView(_r5);
37228
37228
  const field_r4 = \u0275\u0275nextContext().$implicit;
@@ -37251,7 +37251,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template(rf, ctx)
37251
37251
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template(rf, ctx) {
37252
37252
  if (rf & 1) {
37253
37253
  const _r7 = \u0275\u0275getCurrentView();
37254
- \u0275\u0275elementStart(0, "label", 34)(1, "input", 40);
37254
+ \u0275\u0275elementStart(0, "label", 34)(1, "input", 39);
37255
37255
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template_input_ngModelChange_1_listener($event) {
37256
37256
  \u0275\u0275restoreView(_r7);
37257
37257
  const field_r4 = \u0275\u0275nextContext().$implicit;
@@ -37276,7 +37276,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template(rf, ctx)
37276
37276
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template(rf, ctx) {
37277
37277
  if (rf & 1) {
37278
37278
  const _r8 = \u0275\u0275getCurrentView();
37279
- \u0275\u0275elementStart(0, "input", 41);
37279
+ \u0275\u0275elementStart(0, "input", 40);
37280
37280
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template_input_ngModelChange_0_listener($event) {
37281
37281
  \u0275\u0275restoreView(_r8);
37282
37282
  const field_r4 = \u0275\u0275nextContext().$implicit;
@@ -37295,7 +37295,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template(rf, ctx)
37295
37295
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template(rf, ctx) {
37296
37296
  if (rf & 1) {
37297
37297
  const _r9 = \u0275\u0275getCurrentView();
37298
- \u0275\u0275elementStart(0, "input", 42);
37298
+ \u0275\u0275elementStart(0, "input", 41);
37299
37299
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template_input_ngModelChange_0_listener($event) {
37300
37300
  \u0275\u0275restoreView(_r9);
37301
37301
  const field_r4 = \u0275\u0275nextContext().$implicit;
@@ -37311,10 +37311,17 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template(rf, ctx)
37311
37311
  \u0275\u0275property("ngModel", (tmp_12_0 = ctx_r0.units()[0]) == null ? null : tmp_12_0[field_r4.name])("required", field_r4.required || false);
37312
37312
  }
37313
37313
  }
37314
+ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Conditional_1_Template(rf, ctx) {
37315
+ if (rf & 1) {
37316
+ \u0275\u0275elementStart(0, "p", 43);
37317
+ \u0275\u0275text(1, "Your member discount is tied to this verified e-mail.");
37318
+ \u0275\u0275elementEnd();
37319
+ }
37320
+ }
37314
37321
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template(rf, ctx) {
37315
37322
  if (rf & 1) {
37316
37323
  const _r10 = \u0275\u0275getCurrentView();
37317
- \u0275\u0275elementStart(0, "input", 43);
37324
+ \u0275\u0275elementStart(0, "input", 42);
37318
37325
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template_input_ngModelChange_0_listener($event) {
37319
37326
  \u0275\u0275restoreView(_r10);
37320
37327
  const field_r4 = \u0275\u0275nextContext().$implicit;
@@ -37322,12 +37329,15 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template(rf, ctx)
37322
37329
  return \u0275\u0275resetView(ctx_r0.updateUnitField(0, field_r4.name, $event));
37323
37330
  });
37324
37331
  \u0275\u0275elementEnd();
37332
+ \u0275\u0275conditionalCreate(1, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Conditional_1_Template, 2, 0, "p", 43);
37325
37333
  }
37326
37334
  if (rf & 2) {
37327
37335
  let tmp_13_0;
37328
37336
  const field_r4 = \u0275\u0275nextContext().$implicit;
37329
37337
  const ctx_r0 = \u0275\u0275nextContext(2);
37330
- \u0275\u0275property("type", field_r4.name.toLowerCase().includes("email") ? "email" : "text")("ngModel", (tmp_13_0 = ctx_r0.units()[0]) == null ? null : tmp_13_0[field_r4.name])("placeholder", field_r4.placeholder || "")("required", field_r4.required || false);
37338
+ \u0275\u0275property("type", field_r4.name.toLowerCase().includes("email") ? "email" : "text")("ngModel", (tmp_13_0 = ctx_r0.units()[0]) == null ? null : tmp_13_0[field_r4.name])("placeholder", field_r4.placeholder || "")("readonly", ctx_r0.isLockedEmail(0, field_r4.name))("required", field_r4.required || false);
37339
+ \u0275\u0275advance();
37340
+ \u0275\u0275conditional(ctx_r0.isLockedEmail(0, field_r4.name) ? 1 : -1);
37331
37341
  }
37332
37342
  }
37333
37343
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Template(rf, ctx) {
@@ -37336,7 +37346,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Template(rf, ctx) {
37336
37346
  \u0275\u0275text(2);
37337
37347
  \u0275\u0275conditionalCreate(3, MJCheckoutWidgetComponent_Conditional_17_For_4_Conditional_3_Template, 2, 0, "span", 19);
37338
37348
  \u0275\u0275elementEnd();
37339
- \u0275\u0275conditionalCreate(4, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_4_Template, 2, 3, "textarea", 32)(5, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template, 5, 4, "select", 33)(6, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template, 4, 2, "label", 34)(7, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template, 1, 3, "input", 35)(8, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template, 1, 2, "input", 36)(9, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template, 1, 4, "input", 37);
37349
+ \u0275\u0275conditionalCreate(4, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_4_Template, 2, 3, "textarea", 32)(5, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template, 5, 4, "select", 33)(6, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template, 4, 2, "label", 34)(7, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template, 1, 3, "input", 35)(8, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template, 1, 2, "input", 36)(9, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template, 2, 6);
37340
37350
  \u0275\u0275elementEnd();
37341
37351
  }
37342
37352
  if (rf & 2) {
@@ -37376,7 +37386,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Conditional_3_Temp
37376
37386
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_4_Template(rf, ctx) {
37377
37387
  if (rf & 1) {
37378
37388
  const _r12 = \u0275\u0275getCurrentView();
37379
- \u0275\u0275elementStart(0, "textarea", 38);
37389
+ \u0275\u0275elementStart(0, "textarea", 37);
37380
37390
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_4_Template_textarea_ngModelChange_0_listener($event) {
37381
37391
  \u0275\u0275restoreView(_r12);
37382
37392
  const ctx_r12 = \u0275\u0275nextContext();
@@ -37410,7 +37420,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_For_4_Templ
37410
37420
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template(rf, ctx) {
37411
37421
  if (rf & 1) {
37412
37422
  const _r17 = \u0275\u0275getCurrentView();
37413
- \u0275\u0275elementStart(0, "select", 39);
37423
+ \u0275\u0275elementStart(0, "select", 38);
37414
37424
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template_select_ngModelChange_0_listener($event) {
37415
37425
  \u0275\u0275restoreView(_r17);
37416
37426
  const ctx_r12 = \u0275\u0275nextContext();
@@ -37440,7 +37450,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template(rf
37440
37450
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template(rf, ctx) {
37441
37451
  if (rf & 1) {
37442
37452
  const _r19 = \u0275\u0275getCurrentView();
37443
- \u0275\u0275elementStart(0, "label", 34)(1, "input", 40);
37453
+ \u0275\u0275elementStart(0, "label", 34)(1, "input", 39);
37444
37454
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template_input_ngModelChange_1_listener($event) {
37445
37455
  \u0275\u0275restoreView(_r19);
37446
37456
  const ctx_r12 = \u0275\u0275nextContext();
@@ -37466,7 +37476,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template(rf
37466
37476
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_7_Template(rf, ctx) {
37467
37477
  if (rf & 1) {
37468
37478
  const _r20 = \u0275\u0275getCurrentView();
37469
- \u0275\u0275elementStart(0, "input", 41);
37479
+ \u0275\u0275elementStart(0, "input", 40);
37470
37480
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_7_Template_input_ngModelChange_0_listener($event) {
37471
37481
  \u0275\u0275restoreView(_r20);
37472
37482
  const ctx_r12 = \u0275\u0275nextContext();
@@ -37486,7 +37496,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_7_Template(rf
37486
37496
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_8_Template(rf, ctx) {
37487
37497
  if (rf & 1) {
37488
37498
  const _r21 = \u0275\u0275getCurrentView();
37489
- \u0275\u0275elementStart(0, "input", 42);
37499
+ \u0275\u0275elementStart(0, "input", 41);
37490
37500
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_8_Template_input_ngModelChange_0_listener($event) {
37491
37501
  \u0275\u0275restoreView(_r21);
37492
37502
  const ctx_r12 = \u0275\u0275nextContext();
@@ -37503,10 +37513,17 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_8_Template(rf
37503
37513
  \u0275\u0275property("ngModel", unit_r16[field_r14.name])("required", field_r14.required || false);
37504
37514
  }
37505
37515
  }
37516
+ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Conditional_1_Template(rf, ctx) {
37517
+ if (rf & 1) {
37518
+ \u0275\u0275elementStart(0, "p", 43);
37519
+ \u0275\u0275text(1, "Your member discount is tied to this verified e-mail.");
37520
+ \u0275\u0275elementEnd();
37521
+ }
37522
+ }
37506
37523
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template(rf, ctx) {
37507
37524
  if (rf & 1) {
37508
37525
  const _r22 = \u0275\u0275getCurrentView();
37509
- \u0275\u0275elementStart(0, "input", 43);
37526
+ \u0275\u0275elementStart(0, "input", 42);
37510
37527
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template_input_ngModelChange_0_listener($event) {
37511
37528
  \u0275\u0275restoreView(_r22);
37512
37529
  const ctx_r12 = \u0275\u0275nextContext();
@@ -37516,11 +37533,17 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template(rf
37516
37533
  return \u0275\u0275resetView(ctx_r0.updateUnitField($index_r15, field_r14.name, $event));
37517
37534
  });
37518
37535
  \u0275\u0275elementEnd();
37536
+ \u0275\u0275conditionalCreate(1, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Conditional_1_Template, 2, 0, "p", 43);
37519
37537
  }
37520
37538
  if (rf & 2) {
37521
- const field_r14 = \u0275\u0275nextContext().$implicit;
37539
+ const ctx_r12 = \u0275\u0275nextContext();
37540
+ const field_r14 = ctx_r12.$implicit;
37541
+ const $index_r15 = ctx_r12.$index;
37522
37542
  const unit_r16 = \u0275\u0275nextContext().$implicit;
37523
- \u0275\u0275property("type", field_r14.name.toLowerCase().includes("email") ? "email" : "text")("ngModel", unit_r16[field_r14.name])("placeholder", field_r14.placeholder || "")("required", field_r14.required || false);
37543
+ const ctx_r0 = \u0275\u0275nextContext(2);
37544
+ \u0275\u0275property("type", field_r14.name.toLowerCase().includes("email") ? "email" : "text")("ngModel", unit_r16[field_r14.name])("placeholder", field_r14.placeholder || "")("readonly", ctx_r0.isLockedEmail($index_r15, field_r14.name))("required", field_r14.required || false);
37545
+ \u0275\u0275advance();
37546
+ \u0275\u0275conditional(ctx_r0.isLockedEmail($index_r15, field_r14.name) ? 1 : -1);
37524
37547
  }
37525
37548
  }
37526
37549
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Template(rf, ctx) {
@@ -37529,7 +37552,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Template(rf, ctx)
37529
37552
  \u0275\u0275text(2);
37530
37553
  \u0275\u0275conditionalCreate(3, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Conditional_3_Template, 2, 0, "span", 19);
37531
37554
  \u0275\u0275elementEnd();
37532
- \u0275\u0275conditionalCreate(4, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_4_Template, 2, 3, "textarea", 32)(5, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template, 5, 4, "select", 33)(6, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template, 4, 2, "label", 34)(7, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_7_Template, 1, 3, "input", 35)(8, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_8_Template, 1, 2, "input", 36)(9, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template, 1, 4, "input", 37);
37555
+ \u0275\u0275conditionalCreate(4, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_4_Template, 2, 3, "textarea", 32)(5, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template, 5, 4, "select", 33)(6, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template, 4, 2, "label", 34)(7, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_7_Template, 1, 3, "input", 35)(8, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_8_Template, 1, 2, "input", 36)(9, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template, 2, 6);
37533
37556
  \u0275\u0275elementEnd();
37534
37557
  }
37535
37558
  if (rf & 2) {
@@ -37839,7 +37862,7 @@ function MJCheckoutWidgetComponent_For_41_Template(rf, ctx) {
37839
37862
  }
37840
37863
  function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_7_Template(rf, ctx) {
37841
37864
  if (rf & 1) {
37842
- \u0275\u0275elementStart(0, "p", 75);
37865
+ \u0275\u0275elementStart(0, "p", 76);
37843
37866
  \u0275\u0275text(1);
37844
37867
  \u0275\u0275elementEnd();
37845
37868
  }
@@ -37851,7 +37874,7 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_7_T
37851
37874
  }
37852
37875
  function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_8_Template(rf, ctx) {
37853
37876
  if (rf & 1) {
37854
- \u0275\u0275elementStart(0, "p", 76);
37877
+ \u0275\u0275elementStart(0, "p", 77);
37855
37878
  \u0275\u0275text(1);
37856
37879
  \u0275\u0275elementEnd();
37857
37880
  }
@@ -37865,10 +37888,10 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_8_T
37865
37888
  function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template(rf, ctx) {
37866
37889
  if (rf & 1) {
37867
37890
  const _r35 = \u0275\u0275getCurrentView();
37868
- \u0275\u0275elementStart(0, "div", 66)(1, "label", 71);
37891
+ \u0275\u0275elementStart(0, "div", 66)(1, "label", 72);
37869
37892
  \u0275\u0275text(2, "Promo code");
37870
37893
  \u0275\u0275elementEnd();
37871
- \u0275\u0275elementStart(3, "div", 72)(4, "input", 73);
37894
+ \u0275\u0275elementStart(3, "div", 73)(4, "input", 74);
37872
37895
  \u0275\u0275listener("input", function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template_input_input_4_listener($event) {
37873
37896
  \u0275\u0275restoreView(_r35);
37874
37897
  const ctx_r0 = \u0275\u0275nextContext(2);
@@ -37879,7 +37902,7 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template(rf, ct
37879
37902
  return \u0275\u0275resetView(ctx_r0.applyPromotionCode());
37880
37903
  });
37881
37904
  \u0275\u0275elementEnd();
37882
- \u0275\u0275elementStart(5, "button", 74);
37905
+ \u0275\u0275elementStart(5, "button", 75);
37883
37906
  \u0275\u0275listener("click", function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template_button_click_5_listener() {
37884
37907
  \u0275\u0275restoreView(_r35);
37885
37908
  const ctx_r0 = \u0275\u0275nextContext(2);
@@ -37887,7 +37910,7 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template(rf, ct
37887
37910
  });
37888
37911
  \u0275\u0275text(6, "Apply");
37889
37912
  \u0275\u0275elementEnd()();
37890
- \u0275\u0275conditionalCreate(7, MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_7_Template, 2, 1, "p", 75)(8, MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_8_Template, 2, 3, "p", 76);
37913
+ \u0275\u0275conditionalCreate(7, MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_7_Template, 2, 1, "p", 76)(8, MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_8_Template, 2, 3, "p", 77);
37891
37914
  \u0275\u0275elementEnd();
37892
37915
  }
37893
37916
  if (rf & 2) {
@@ -37905,10 +37928,23 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template(rf, ct
37905
37928
  }
37906
37929
  function MJCheckoutWidgetComponent_Conditional_42_Conditional_11_Template(rf, ctx) {
37907
37930
  if (rf & 1) {
37908
- const _r37 = \u0275\u0275getCurrentView();
37909
- \u0275\u0275elementStart(0, "label", 67)(1, "input", 60);
37910
- \u0275\u0275listener("change", function MJCheckoutWidgetComponent_Conditional_42_Conditional_11_Template_input_change_1_listener($event) {
37911
- \u0275\u0275restoreView(_r37);
37931
+ \u0275\u0275elementStart(0, "p", 67);
37932
+ \u0275\u0275text(1);
37933
+ \u0275\u0275elementEnd();
37934
+ }
37935
+ if (rf & 2) {
37936
+ const member_r37 = ctx;
37937
+ const ctx_r0 = \u0275\u0275nextContext(2);
37938
+ \u0275\u0275advance();
37939
+ \u0275\u0275textInterpolate3(" ", member_r37.code ? member_r37.code + " member discount" : "Member discount", ": \u2212", ctx_r0.currencySymbol(), "", member_r37.discount.toFixed(2), " ");
37940
+ }
37941
+ }
37942
+ function MJCheckoutWidgetComponent_Conditional_42_Conditional_12_Template(rf, ctx) {
37943
+ if (rf & 1) {
37944
+ const _r38 = \u0275\u0275getCurrentView();
37945
+ \u0275\u0275elementStart(0, "label", 68)(1, "input", 60);
37946
+ \u0275\u0275listener("change", function MJCheckoutWidgetComponent_Conditional_42_Conditional_12_Template_input_change_1_listener($event) {
37947
+ \u0275\u0275restoreView(_r38);
37912
37948
  const ctx_r0 = \u0275\u0275nextContext(2);
37913
37949
  return \u0275\u0275resetView(ctx_r0.autoRenewConsent.set($event.target.checked));
37914
37950
  });
@@ -37925,12 +37961,12 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_11_Template(rf, ct
37925
37961
  \u0275\u0275textInterpolate(ctx);
37926
37962
  }
37927
37963
  }
37928
- function MJCheckoutWidgetComponent_Conditional_42_Conditional_12_Template(rf, ctx) {
37964
+ function MJCheckoutWidgetComponent_Conditional_42_Conditional_13_Template(rf, ctx) {
37929
37965
  if (rf & 1) {
37930
- \u0275\u0275elementStart(0, "div", 68)(1, "span", 69);
37966
+ \u0275\u0275elementStart(0, "div", 69)(1, "span", 70);
37931
37967
  \u0275\u0275text(2, "Sales Tax");
37932
37968
  \u0275\u0275elementEnd();
37933
- \u0275\u0275elementStart(3, "span", 70);
37969
+ \u0275\u0275elementStart(3, "span", 71);
37934
37970
  \u0275\u0275text(4);
37935
37971
  \u0275\u0275elementEnd()();
37936
37972
  }
@@ -37954,31 +37990,35 @@ function MJCheckoutWidgetComponent_Conditional_42_Template(rf, ctx) {
37954
37990
  \u0275\u0275text(9, "Secured by Stripe \u2022 PCI-DSS Level 1 Certified \u2022 End-to-end Encrypted");
37955
37991
  \u0275\u0275elementEnd()()()();
37956
37992
  \u0275\u0275conditionalCreate(10, MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template, 9, 8, "div", 66);
37957
- \u0275\u0275conditionalCreate(11, MJCheckoutWidgetComponent_Conditional_42_Conditional_11_Template, 4, 3, "label", 67);
37958
- \u0275\u0275conditionalCreate(12, MJCheckoutWidgetComponent_Conditional_42_Conditional_12_Template, 5, 2, "div", 68);
37959
- \u0275\u0275elementStart(13, "div", 68)(14, "span", 69);
37960
- \u0275\u0275text(15, "Total Due");
37993
+ \u0275\u0275conditionalCreate(11, MJCheckoutWidgetComponent_Conditional_42_Conditional_11_Template, 2, 3, "p", 67);
37994
+ \u0275\u0275conditionalCreate(12, MJCheckoutWidgetComponent_Conditional_42_Conditional_12_Template, 4, 3, "label", 68);
37995
+ \u0275\u0275conditionalCreate(13, MJCheckoutWidgetComponent_Conditional_42_Conditional_13_Template, 5, 2, "div", 69);
37996
+ \u0275\u0275elementStart(14, "div", 69)(15, "span", 70);
37997
+ \u0275\u0275text(16, "Total Due");
37961
37998
  \u0275\u0275elementEnd();
37962
- \u0275\u0275elementStart(16, "span", 70);
37963
- \u0275\u0275text(17);
37999
+ \u0275\u0275elementStart(17, "span", 71);
38000
+ \u0275\u0275text(18);
37964
38001
  \u0275\u0275elementEnd()();
37965
38002
  }
37966
38003
  if (rf & 2) {
37967
38004
  let tmp_2_0;
38005
+ let tmp_3_0;
37968
38006
  const ctx_r0 = \u0275\u0275nextContext();
37969
38007
  \u0275\u0275advance(10);
37970
38008
  \u0275\u0275conditional(ctx_r0.allowsPromotionCodes() ? 10 : -1);
37971
38009
  \u0275\u0275advance();
37972
- \u0275\u0275conditional((tmp_2_0 = ctx_r0.autoRenewConsentText()) ? 11 : -1, tmp_2_0);
38010
+ \u0275\u0275conditional((tmp_2_0 = ctx_r0.activeMemberDiscount()) ? 11 : -1, tmp_2_0);
38011
+ \u0275\u0275advance();
38012
+ \u0275\u0275conditional((tmp_3_0 = ctx_r0.autoRenewConsentText()) ? 12 : -1, tmp_3_0);
37973
38013
  \u0275\u0275advance();
37974
- \u0275\u0275conditional(ctx_r0.quotedTax !== null ? 12 : -1);
38014
+ \u0275\u0275conditional(ctx_r0.quotedTax !== null ? 13 : -1);
37975
38015
  \u0275\u0275advance(5);
37976
38016
  \u0275\u0275textInterpolate2("", ctx_r0.currencySymbol(), "", ctx_r0.totalGross().toFixed(2));
37977
38017
  }
37978
38018
  }
37979
38019
  function MJCheckoutWidgetComponent_Conditional_45_Template(rf, ctx) {
37980
38020
  if (rf & 1) {
37981
- \u0275\u0275element(0, "span", 77);
38021
+ \u0275\u0275element(0, "span", 78);
37982
38022
  \u0275\u0275elementStart(1, "span");
37983
38023
  \u0275\u0275text(2, "Processing...");
37984
38024
  \u0275\u0275elementEnd();
@@ -38046,6 +38086,23 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38046
38086
  }
38047
38087
  /** Why the last code could not be used, in the server's words. Set by the host. */
38048
38088
  promotionError = null;
38089
+ _memberDiscount = signal(null, ...ngDevMode ? [{ debugName: "_memberDiscount" }] : []);
38090
+ /**
38091
+ * The verified member's discount the server priced this checkout with, or null (#919). Set by the
38092
+ * host from a draft. While it holds, the widget shows it as a discount line and hides the
38093
+ * promo-code box: the member code is the one the order carries, as it was on CDP's checkout.
38094
+ */
38095
+ set memberDiscount(val) {
38096
+ this._memberDiscount.set(val);
38097
+ }
38098
+ get memberDiscount() {
38099
+ return this._memberDiscount();
38100
+ }
38101
+ /**
38102
+ * True when the e-mail is the one a member token was signed for (#919). The field is read-only,
38103
+ * since the discount is bound to that address and a changed one would price at full rate.
38104
+ */
38105
+ lockEmail = false;
38049
38106
  _serverPricedTotal = signal(null, ...ngDevMode ? [{ debugName: "_serverPricedTotal" }] : []);
38050
38107
  /**
38051
38108
  * The total the server last priced this checkout at, or null. Set by the host after a draft, so a
@@ -38082,6 +38139,12 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38082
38139
  cancelled = new EventEmitter();
38083
38140
  /** Emitted when an input that changes the price (quantity, location) changes, so the host drops its quote. */
38084
38141
  quoteInvalidated = new EventEmitter();
38142
+ /**
38143
+ * The form as it stands, with no typed code, each time a price input changes while the e-mail
38144
+ * and billing location are complete (#919). A host with a member token prices it in the
38145
+ * background so the buyer sees the member discount before Pay; other hosts ignore it.
38146
+ */
38147
+ quoteRequested = new EventEmitter();
38085
38148
  // Internal error message for client-side validation failures
38086
38149
  internalErrorMessage = signal(null, ...ngDevMode ? [{ debugName: "internalErrorMessage" }] : []);
38087
38150
  displayErrorMessage = computed(() => this._errorMessage() || this.internalErrorMessage(), ...ngDevMode ? [{ debugName: "displayErrorMessage" }] : []);
@@ -38221,8 +38284,16 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38221
38284
  const price = this._config()?.unitPrice ?? 0;
38222
38285
  return price * this.quantity();
38223
38286
  }, ...ngDevMode ? [{ debugName: "subtotal" }] : []);
38224
- /** Whether this widget takes promotion codes — only for a paid checkout whose configuration invites them. */
38225
- allowsPromotionCodes = computed(() => this._config()?.allowCoupons === true && !this.isFree(), ...ngDevMode ? [{ debugName: "allowsPromotionCodes" }] : []);
38287
+ /** The member discount, when it was priced for the current quantity; a stale one is ignored. */
38288
+ activeMemberDiscount = computed(() => {
38289
+ const discount = this._memberDiscount();
38290
+ return discount && discount.quantity === this.quantity() ? discount : null;
38291
+ }, ...ngDevMode ? [{ debugName: "activeMemberDiscount" }] : []);
38292
+ /**
38293
+ * Whether this widget takes promotion codes — only for a paid checkout whose configuration invites
38294
+ * them, and not while a verified member's discount applies (#919).
38295
+ */
38296
+ allowsPromotionCodes = computed(() => this._config()?.allowCoupons === true && !this.isFree() && !this.activeMemberDiscount(), ...ngDevMode ? [{ debugName: "allowsPromotionCodes" }] : []);
38226
38297
  /** The applied promotion, when it was priced for the current quantity; a stale one is ignored. */
38227
38298
  activePromotion = computed(() => {
38228
38299
  const applied = this._appliedPromotion();
@@ -38361,20 +38432,38 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38361
38432
  this.quantity.set(clamped);
38362
38433
  this.syncUnits();
38363
38434
  this.quoteInvalidated.emit();
38435
+ this.requestQuote();
38364
38436
  this.executeLifecycleHook("onQuantityChange", { quantity: clamped });
38365
38437
  }
38366
38438
  onBillingCountryChange(country) {
38367
38439
  this.billingCountry.set(country ?? "");
38368
38440
  this.billingRegion.set("");
38369
38441
  this.quoteInvalidated.emit();
38442
+ this.requestQuote();
38370
38443
  }
38371
38444
  onBillingRegionChange(region) {
38372
38445
  this.billingRegion.set(region ?? "");
38373
38446
  this.quoteInvalidated.emit();
38447
+ this.requestQuote();
38374
38448
  }
38375
38449
  onBillingPostalCodeChange(postalCode) {
38376
38450
  this.billingPostalCode.set(postalCode ?? "");
38377
38451
  this.quoteInvalidated.emit();
38452
+ this.requestQuote();
38453
+ }
38454
+ /** The buyer's e-mail looks complete: the same check `isFormValid` makes. */
38455
+ hasValidEmail() {
38456
+ const em = String(this.units()[0]?.["email"] || this.email()).trim();
38457
+ return em.includes("@");
38458
+ }
38459
+ /**
38460
+ * Ask the host for a background price once the e-mail and the billing location are complete
38461
+ * (#919). Never blocks the form; the host decides whether to price at all.
38462
+ */
38463
+ requestQuote() {
38464
+ if (!this.hasValidEmail() || !this.isBillingLocationValid())
38465
+ return;
38466
+ this.quoteRequested.emit({ ...this.buildSubmission(), promotionCode: void 0 });
38378
38467
  }
38379
38468
  syncUnits() {
38380
38469
  const currentQty = this.quantity();
@@ -38433,8 +38522,17 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38433
38522
  this.title.set(String(value ?? ""));
38434
38523
  }
38435
38524
  this.units.set(list);
38525
+ if (index === 0 && fieldName === "email") {
38526
+ if (this._memberDiscount())
38527
+ this.quoteInvalidated.emit();
38528
+ this.requestQuote();
38529
+ }
38436
38530
  }
38437
38531
  }
38532
+ /** True for the first unit's e-mail field while it is locked to a member token's address (#919). */
38533
+ isLockedEmail(index, fieldName) {
38534
+ return this.lockEmail && index === 0 && fieldName.toLowerCase() === "email";
38535
+ }
38438
38536
  updateAttendee(index, field, value) {
38439
38537
  this.updateUnitField(index, field, value);
38440
38538
  }
@@ -38564,13 +38662,15 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38564
38662
  stripePaymentMethodId: this.isFree() ? void 0 : this.stripePaymentMethodId ?? void 0,
38565
38663
  sessionKey: finalSessionKey,
38566
38664
  autoRenewConsent: this.autoRenewConsentText() ? this.autoRenewConsent() : void 0,
38665
+ // allowsPromotionCodes is false while a member discount applies: the box is hidden, so a
38666
+ // code typed before it appeared is not sent behind the buyer's back.
38567
38667
  promotionCode: this.allowsPromotionCodes() && typedCode ? typedCode : void 0
38568
38668
  };
38569
38669
  }
38570
38670
  static \u0275fac = function MJCheckoutWidgetComponent_Factory(__ngFactoryType__) {
38571
38671
  return new (__ngFactoryType__ || _MJCheckoutWidgetComponent)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(Renderer2));
38572
38672
  };
38573
- static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _MJCheckoutWidgetComponent, selectors: [["mj-checkout-widget"]], inputs: { config: "config", distributionSlug: "distributionSlug", sessionKey: "sessionKey", isProcessing: "isProcessing", errorMessage: "errorMessage", isPaymentReady: "isPaymentReady", stripePaymentMethodId: "stripePaymentMethodId", prefillEmail: "prefillEmail", appliedPromotion: "appliedPromotion", promotionError: "promotionError", serverPricedTotal: "serverPricedTotal", quotedTotal: "quotedTotal", quotedTax: "quotedTax" }, outputs: { submitted: "submitted", promotionCodeApplied: "promotionCodeApplied", cancelled: "cancelled", quoteInvalidated: "quoteInvalidated" }, features: [\u0275\u0275NgOnChangesFeature], decls: 50, vars: 35, consts: [[1, "mj-checkout-widget-container"], [1, "mj-widget-header"], [1, "mj-widget-title"], [1, "mj-widget-description"], ["role", "alert", 1, "mj-widget-error-banner"], [1, "mj-widget-summary-card"], [1, "mj-summary-row"], [1, "mj-summary-item-info"], [1, "mj-product-name"], [1, "mj-badge-free"], [1, "mj-summary-price"], [1, "mj-price-free"], [1, "mj-price-amount"], [1, "mj-quantity-selector-row"], [1, "mj-widget-form-section"], [1, "mj-section-title"], [1, "mj-form-grid"], [1, "mj-form-group"], [1, "mj-label"], [1, "mj-required"], ["autocomplete", "country", "required", "", 1, "mj-select", 3, "ngModelChange", "id", "ngModel"], [3, "ngValue"], ["type", "text", "autocomplete", "postal-code", "maxlength", "20", 1, "mj-input", 3, "ngModelChange", "id", "ngModel", "required"], [1, "mj-widget-actions"], ["type", "button", 1, "mj-btn-submit", 3, "click", "disabled"], ["type", "button", 1, "mj-btn-cancel", 3, "click", "disabled"], [1, "mj-error-icon"], ["for", "quantityInput", 1, "mj-label"], [1, "mj-qty-controls"], ["type", "button", 1, "mj-qty-btn", 3, "click", "disabled"], ["id", "quantityInput", "type", "number", "min", "1", 1, "mj-qty-input", 3, "ngModelChange", "ngModel", "max"], [1, "mj-form-group", 3, "full-width"], [1, "mj-input", "mj-textarea", 3, "ngModel", "placeholder", "required"], [1, "mj-select", 3, "ngModel", "required"], [1, "mj-checkbox-label"], ["type", "number", 1, "mj-input", 3, "ngModel", "placeholder", "required"], ["type", "date", 1, "mj-input", 3, "ngModel", "required"], [1, "mj-input", 3, "type", "ngModel", "placeholder", "required"], [1, "mj-input", "mj-textarea", 3, "ngModelChange", "ngModel", "placeholder", "required"], [1, "mj-select", 3, "ngModelChange", "ngModel", "required"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], ["type", "number", 1, "mj-input", 3, "ngModelChange", "ngModel", "placeholder", "required"], ["type", "date", 1, "mj-input", 3, "ngModelChange", "ngModel", "required"], [1, "mj-input", 3, "ngModelChange", "type", "ngModel", "placeholder", "required"], [1, "mj-multi-attendee-header"], ["type", "button", 1, "mj-btn-link", 3, "click"], [1, "mj-attendee-matrix"], [1, "mj-attendee-card"], [1, "mj-attendee-card-title"], ["autocomplete", "address-level1", "required", "", 1, "mj-select", 3, "ngModelChange", "id", "ngModel"], [1, "mj-form-group", "full-width"], ["type", "text", 1, "mj-input", 3, "id", "ngModel", "required"], [1, "mj-select", 3, "ngModelChange", "id", "ngModel", "required"], ["type", "text", "placeholder", "Please specify", "required", "", 1, "mj-input", "mj-question-other", 3, "ngModel"], ["type", "text", "placeholder", "Please specify", "required", "", 1, "mj-input", "mj-question-other", 3, "ngModelChange", "ngModel"], ["type", "text", 1, "mj-input", 3, "ngModelChange", "id", "ngModel", "required"], [1, "mj-choice-group"], [1, "mj-choice-count"], [1, "mj-choice-options"], [1, "mj-checkbox-label", 3, "is-disabled"], ["type", "checkbox", 3, "change", "checked", "disabled"], [1, "mj-widget-payment-section"], [1, "mj-stripe-container"], ["id", "stripe-card-element", 1, "mj-stripe-mount-point"], [1, "mj-stripe-badge"], [1, "mj-stripe-lock-icon"], [1, "mj-checkout-promo"], [1, "mj-checkout-consent"], [1, "mj-checkout-total-row"], [1, "mj-total-label"], [1, "mj-total-amount"], [1, "mj-checkout-promo__label", 3, "for"], [1, "mj-checkout-promo__row"], ["type", "text", "autocomplete", "off", "maxlength", "60", 1, "mj-input", "mj-checkout-promo__input", 3, "input", "keydown.enter", "id", "value", "disabled"], ["type", "button", 1, "mj-checkout-promo__apply", 3, "click", "disabled"], ["role", "alert", 1, "mj-checkout-promo__error"], ["role", "status", 1, "mj-checkout-promo__applied"], [1, "mj-spinner"]], template: function MJCheckoutWidgetComponent_Template(rf, ctx) {
38673
+ static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _MJCheckoutWidgetComponent, selectors: [["mj-checkout-widget"]], inputs: { config: "config", distributionSlug: "distributionSlug", sessionKey: "sessionKey", isProcessing: "isProcessing", errorMessage: "errorMessage", isPaymentReady: "isPaymentReady", stripePaymentMethodId: "stripePaymentMethodId", prefillEmail: "prefillEmail", appliedPromotion: "appliedPromotion", promotionError: "promotionError", memberDiscount: "memberDiscount", lockEmail: "lockEmail", serverPricedTotal: "serverPricedTotal", quotedTotal: "quotedTotal", quotedTax: "quotedTax" }, outputs: { submitted: "submitted", promotionCodeApplied: "promotionCodeApplied", cancelled: "cancelled", quoteInvalidated: "quoteInvalidated", quoteRequested: "quoteRequested" }, features: [\u0275\u0275NgOnChangesFeature], decls: 50, vars: 35, consts: [[1, "mj-checkout-widget-container"], [1, "mj-widget-header"], [1, "mj-widget-title"], [1, "mj-widget-description"], ["role", "alert", 1, "mj-widget-error-banner"], [1, "mj-widget-summary-card"], [1, "mj-summary-row"], [1, "mj-summary-item-info"], [1, "mj-product-name"], [1, "mj-badge-free"], [1, "mj-summary-price"], [1, "mj-price-free"], [1, "mj-price-amount"], [1, "mj-quantity-selector-row"], [1, "mj-widget-form-section"], [1, "mj-section-title"], [1, "mj-form-grid"], [1, "mj-form-group"], [1, "mj-label"], [1, "mj-required"], ["autocomplete", "country", "required", "", 1, "mj-select", 3, "ngModelChange", "id", "ngModel"], [3, "ngValue"], ["type", "text", "autocomplete", "postal-code", "maxlength", "20", 1, "mj-input", 3, "ngModelChange", "id", "ngModel", "required"], [1, "mj-widget-actions"], ["type", "button", 1, "mj-btn-submit", 3, "click", "disabled"], ["type", "button", 1, "mj-btn-cancel", 3, "click", "disabled"], [1, "mj-error-icon"], ["for", "quantityInput", 1, "mj-label"], [1, "mj-qty-controls"], ["type", "button", 1, "mj-qty-btn", 3, "click", "disabled"], ["id", "quantityInput", "type", "number", "min", "1", 1, "mj-qty-input", 3, "ngModelChange", "ngModel", "max"], [1, "mj-form-group", 3, "full-width"], [1, "mj-input", "mj-textarea", 3, "ngModel", "placeholder", "required"], [1, "mj-select", 3, "ngModel", "required"], [1, "mj-checkbox-label"], ["type", "number", 1, "mj-input", 3, "ngModel", "placeholder", "required"], ["type", "date", 1, "mj-input", 3, "ngModel", "required"], [1, "mj-input", "mj-textarea", 3, "ngModelChange", "ngModel", "placeholder", "required"], [1, "mj-select", 3, "ngModelChange", "ngModel", "required"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], ["type", "number", 1, "mj-input", 3, "ngModelChange", "ngModel", "placeholder", "required"], ["type", "date", 1, "mj-input", 3, "ngModelChange", "ngModel", "required"], [1, "mj-input", 3, "ngModelChange", "type", "ngModel", "placeholder", "readonly", "required"], [1, "mj-field-hint"], [1, "mj-multi-attendee-header"], ["type", "button", 1, "mj-btn-link", 3, "click"], [1, "mj-attendee-matrix"], [1, "mj-attendee-card"], [1, "mj-attendee-card-title"], ["autocomplete", "address-level1", "required", "", 1, "mj-select", 3, "ngModelChange", "id", "ngModel"], [1, "mj-form-group", "full-width"], ["type", "text", 1, "mj-input", 3, "id", "ngModel", "required"], [1, "mj-select", 3, "ngModelChange", "id", "ngModel", "required"], ["type", "text", "placeholder", "Please specify", "required", "", 1, "mj-input", "mj-question-other", 3, "ngModel"], ["type", "text", "placeholder", "Please specify", "required", "", 1, "mj-input", "mj-question-other", 3, "ngModelChange", "ngModel"], ["type", "text", 1, "mj-input", 3, "ngModelChange", "id", "ngModel", "required"], [1, "mj-choice-group"], [1, "mj-choice-count"], [1, "mj-choice-options"], [1, "mj-checkbox-label", 3, "is-disabled"], ["type", "checkbox", 3, "change", "checked", "disabled"], [1, "mj-widget-payment-section"], [1, "mj-stripe-container"], ["id", "stripe-card-element", 1, "mj-stripe-mount-point"], [1, "mj-stripe-badge"], [1, "mj-stripe-lock-icon"], [1, "mj-checkout-promo"], ["role", "status", 1, "mj-checkout-promo__applied", "mj-checkout-member-discount"], [1, "mj-checkout-consent"], [1, "mj-checkout-total-row"], [1, "mj-total-label"], [1, "mj-total-amount"], [1, "mj-checkout-promo__label", 3, "for"], [1, "mj-checkout-promo__row"], ["type", "text", "autocomplete", "off", "maxlength", "60", 1, "mj-input", "mj-checkout-promo__input", 3, "input", "keydown.enter", "id", "value", "disabled"], ["type", "button", 1, "mj-checkout-promo__apply", 3, "click", "disabled"], ["role", "alert", 1, "mj-checkout-promo__error"], ["role", "status", 1, "mj-checkout-promo__applied"], [1, "mj-spinner"]], template: function MJCheckoutWidgetComponent_Template(rf, ctx) {
38574
38674
  if (rf & 1) {
38575
38675
  \u0275\u0275elementStart(0, "div", 0)(1, "header", 1)(2, "h2", 2);
38576
38676
  \u0275\u0275text(3);
@@ -38620,7 +38720,7 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38620
38720
  \u0275\u0275elementEnd()()()();
38621
38721
  \u0275\u0275conditionalCreate(39, MJCheckoutWidgetComponent_Conditional_39_Template, 6, 0, "section", 14);
38622
38722
  \u0275\u0275repeaterCreate(40, MJCheckoutWidgetComponent_For_41_Template, 10, 3, "section", 14, _forTrack1);
38623
- \u0275\u0275conditionalCreate(42, MJCheckoutWidgetComponent_Conditional_42_Template, 18, 5);
38723
+ \u0275\u0275conditionalCreate(42, MJCheckoutWidgetComponent_Conditional_42_Template, 19, 6);
38624
38724
  \u0275\u0275elementStart(43, "div", 23)(44, "button", 24);
38625
38725
  \u0275\u0275listener("click", function MJCheckoutWidgetComponent_Template_button_click_44_listener() {
38626
38726
  return ctx.handleSubmit();
@@ -38687,7 +38787,7 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38687
38787
  \u0275\u0275advance(3);
38688
38788
  \u0275\u0275property("disabled", ctx.isProcessing);
38689
38789
  }
38690
- }, dependencies: [CommonModule, FormsModule, NgSelectOption, \u0275NgSelectMultipleOption, DefaultValueAccessor, NumberValueAccessor, CheckboxControlValueAccessor, SelectControlValueAccessor, NgControlStatus, RequiredValidator, MaxLengthValidator, MinValidator, MaxValidator, NgModel], styles: ['[_nghost-%COMP%] {\n display: block;\n font-family: var(--mj-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);\n color: var(--mj-text-color, #1e293b);\n}\n\n.mj-checkout-widget-container[_ngcontent-%COMP%] {\n max-width: 560px;\n margin: 0 auto;\n background: var(--mj-bg-color, #ffffff);\n border: 1px solid #e2e8f0;\n border-radius: var(--mj-border-radius, 8px);\n padding: 24px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);\n}\n\n.mj-widget-header[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.mj-widget-title[_ngcontent-%COMP%] {\n margin: 0 0 6px 0;\n font-size: 1.35rem;\n font-weight: 700;\n color: var(--mj-text-color, #0f172a);\n}\n\n.mj-widget-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9rem;\n color: #64748b;\n line-height: 1.4;\n}\n\n.mj-widget-error-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #fef2f2;\n border: 1px solid #f87171;\n color: #991b1b;\n padding: 10px 14px;\n border-radius: 6px;\n margin-bottom: 18px;\n font-size: 0.875rem;\n}\n\n.mj-error-icon[_ngcontent-%COMP%] {\n font-size: 1rem;\n}\n\n.mj-widget-summary-card[_ngcontent-%COMP%] {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px 16px;\n margin-bottom: 20px;\n}\n\n.mj-summary-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.mj-summary-price[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.mj-widget-form-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.mj-summary-item-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-product-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 1rem;\n color: #1e293b;\n}\n\n.mj-badge-free[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n font-size: 0.75rem;\n font-weight: 700;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mj-price-free[_ngcontent-%COMP%] {\n font-weight: 700;\n color: #166534;\n font-size: 1.1rem;\n}\n\n.mj-price-amount[_ngcontent-%COMP%] {\n font-weight: 700;\n color: #0f172a;\n font-size: 1.1rem;\n}\n\n.mj-quantity-selector-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px dashed #cbd5e1;\n}\n\n.mj-qty-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.mj-qty-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n background: #ffffff;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-qty-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.mj-qty-input[_ngcontent-%COMP%] {\n width: 44px;\n height: 28px;\n text-align: center;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-weight: 600;\n}\n\n.mj-section-title[_ngcontent-%COMP%] {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 12px 0;\n color: #334155;\n}\n\n.mj-form-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 18px;\n}\n\n.mj-form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mj-form-group.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.mj-label[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n}\n\n.mj-required[_ngcontent-%COMP%] {\n color: #ef4444;\n}\n\n.mj-input[_ngcontent-%COMP%], .mj-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n font-size: 0.9rem;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n background: #ffffff;\n color: #1e293b;\n outline: none;\n transition: border-color 0.15s ease;\n width: 100%;\n box-sizing: border-box;\n}\n\n.mj-textarea[_ngcontent-%COMP%] {\n min-height: 70px;\n resize: vertical;\n font-family: inherit;\n}\n\n.mj-select[_ngcontent-%COMP%] {\n min-height: 38px;\n}\n\n.mj-checkbox-label[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 0.9rem;\n font-weight: 400;\n color: #334155;\n margin-top: 4px;\n}\n\n\n\n.mj-question-other[_ngcontent-%COMP%] {\n margin-top: 8px;\n}\n\n\n\n.mj-choice-group[_ngcontent-%COMP%] {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\n.mj-choice-count[_ngcontent-%COMP%] {\n font-weight: normal;\n color: #64748b;\n}\n\n.mj-choice-options[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.mj-checkbox-label.is-disabled[_ngcontent-%COMP%] {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.mj-input[_ngcontent-%COMP%]:focus, .mj-select[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n.mj-multi-attendee-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.mj-btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-primary-color, #2563eb);\n font-size: 0.8rem;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.mj-attendee-matrix[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 14px;\n margin-bottom: 20px;\n}\n\n.mj-attendee-card[_ngcontent-%COMP%] {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 12px 14px;\n}\n\n.mj-attendee-card-title[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n font-weight: 600;\n color: #475569;\n margin-bottom: 10px;\n}\n\n\n\n.mj-widget-payment-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid #e2e8f0;\n}\n\n.mj-stripe-container[_ngcontent-%COMP%] {\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px;\n margin-bottom: 16px;\n}\n\n.mj-stripe-mount-point[_ngcontent-%COMP%] {\n min-height: 40px;\n}\n\n.mj-stripe-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 10px;\n font-size: 0.75rem;\n color: #64748b;\n}\n\n.mj-stripe-lock-icon[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n}\n\n.mj-checkout-total-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-top: 1px solid #e2e8f0;\n margin-top: 10px;\n margin-bottom: 18px;\n}\n\n.mj-total-label[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 1.05rem;\n color: #0f172a;\n}\n\n.mj-total-amount[_ngcontent-%COMP%] {\n font-weight: 800;\n font-size: 1.25rem;\n color: var(--mj-primary-color, #2563eb);\n}\n\n.mj-widget-actions[_ngcontent-%COMP%] {\n margin-top: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-size: 1rem;\n font-weight: 600;\n border: none;\n border-radius: var(--mj-border-radius, 8px);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: opacity 0.15s ease;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%]:hover:not(:disabled) {\n opacity: 0.92;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mj-btn-cancel[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n color: #64748b;\n font-size: 0.875rem;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: center;\n}\n\n.mj-btn-cancel[_ngcontent-%COMP%]:hover:not(:disabled) {\n color: #334155;\n text-decoration: underline;\n}\n\n.mj-spinner[_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n border: 2px solid #ffffff;\n border-top-color: transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_mj-spin 0.8s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_mj-spin {\n to { transform: rotate(360deg); }\n}\n\n.mj-checkout-consent[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n align-items: flex-start;\n margin: 0.75rem 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.4;\n}\n.mj-checkout-consent[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n margin-top: 0.2rem;\n}\n\n\n\n\n\n.mj-checkbox-label[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%], \n.mj-checkout-consent[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] {\n width: auto;\n height: auto;\n padding: 0;\n border: 0;\n flex: 0 0 auto;\n}\n\n.mj-checkout-promo[_ngcontent-%COMP%] {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__label[_ngcontent-%COMP%] {\n display: block;\n font-size: 0.875rem;\n margin-bottom: 0.25rem;\n}\n.mj-checkout-promo__row[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n.mj-checkout-promo__input[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n}\n.mj-checkout-promo__error[_ngcontent-%COMP%] {\n color: var(--mj-error-color, #b91c1c);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-promo__applied[_ngcontent-%COMP%] {\n color: var(--mj-success-color, #15803d);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-promo__apply[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n padding: 8px 14px;\n background: transparent;\n color: var(--mj-primary-color, #2563eb);\n border: 1px solid var(--mj-border-color, #cbd5e1);\n border-radius: var(--mj-border-radius, 8px);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n}\n.mj-checkout-promo__apply[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}'], changeDetection: 0 });
38790
+ }, dependencies: [CommonModule, FormsModule, NgSelectOption, \u0275NgSelectMultipleOption, DefaultValueAccessor, NumberValueAccessor, CheckboxControlValueAccessor, SelectControlValueAccessor, NgControlStatus, RequiredValidator, MaxLengthValidator, MinValidator, MaxValidator, NgModel], styles: ['[_nghost-%COMP%] {\n display: block;\n font-family: var(--mj-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);\n color: var(--mj-text-color, #1e293b);\n}\n\n.mj-checkout-widget-container[_ngcontent-%COMP%] {\n max-width: 560px;\n margin: 0 auto;\n background: var(--mj-bg-color, #ffffff);\n border: 1px solid #e2e8f0;\n border-radius: var(--mj-border-radius, 8px);\n padding: 24px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);\n}\n\n.mj-widget-header[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.mj-widget-title[_ngcontent-%COMP%] {\n margin: 0 0 6px 0;\n font-size: 1.35rem;\n font-weight: 700;\n color: var(--mj-text-color, #0f172a);\n}\n\n.mj-widget-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9rem;\n color: #64748b;\n line-height: 1.4;\n}\n\n.mj-widget-error-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #fef2f2;\n border: 1px solid #f87171;\n color: #991b1b;\n padding: 10px 14px;\n border-radius: 6px;\n margin-bottom: 18px;\n font-size: 0.875rem;\n}\n\n.mj-error-icon[_ngcontent-%COMP%] {\n font-size: 1rem;\n}\n\n.mj-widget-summary-card[_ngcontent-%COMP%] {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px 16px;\n margin-bottom: 20px;\n}\n\n.mj-summary-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.mj-summary-price[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.mj-widget-form-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.mj-summary-item-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-product-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 1rem;\n color: #1e293b;\n}\n\n.mj-badge-free[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n font-size: 0.75rem;\n font-weight: 700;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mj-price-free[_ngcontent-%COMP%] {\n font-weight: 700;\n color: #166534;\n font-size: 1.1rem;\n}\n\n.mj-price-amount[_ngcontent-%COMP%] {\n font-weight: 700;\n color: #0f172a;\n font-size: 1.1rem;\n}\n\n.mj-quantity-selector-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px dashed #cbd5e1;\n}\n\n.mj-qty-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.mj-qty-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n background: #ffffff;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-qty-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.mj-qty-input[_ngcontent-%COMP%] {\n width: 44px;\n height: 28px;\n text-align: center;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-weight: 600;\n}\n\n.mj-section-title[_ngcontent-%COMP%] {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 12px 0;\n color: #334155;\n}\n\n.mj-form-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 18px;\n}\n\n.mj-form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mj-form-group.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.mj-label[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n}\n\n.mj-required[_ngcontent-%COMP%] {\n color: #ef4444;\n}\n\n.mj-input[_ngcontent-%COMP%], .mj-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n font-size: 0.9rem;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n background: #ffffff;\n color: #1e293b;\n outline: none;\n transition: border-color 0.15s ease;\n width: 100%;\n box-sizing: border-box;\n}\n\n.mj-textarea[_ngcontent-%COMP%] {\n min-height: 70px;\n resize: vertical;\n font-family: inherit;\n}\n\n.mj-select[_ngcontent-%COMP%] {\n min-height: 38px;\n}\n\n.mj-checkbox-label[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 0.9rem;\n font-weight: 400;\n color: #334155;\n margin-top: 4px;\n}\n\n\n\n.mj-question-other[_ngcontent-%COMP%] {\n margin-top: 8px;\n}\n\n\n\n.mj-choice-group[_ngcontent-%COMP%] {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\n.mj-choice-count[_ngcontent-%COMP%] {\n font-weight: normal;\n color: #64748b;\n}\n\n.mj-choice-options[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.mj-checkbox-label.is-disabled[_ngcontent-%COMP%] {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.mj-input[_ngcontent-%COMP%]:focus, .mj-select[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n\n\n.mj-input[readonly][_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #475569;\n cursor: default;\n}\n\n.mj-field-hint[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: #64748b;\n margin: 0.25rem 0 0;\n}\n\n.mj-multi-attendee-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.mj-btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-primary-color, #2563eb);\n font-size: 0.8rem;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.mj-attendee-matrix[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 14px;\n margin-bottom: 20px;\n}\n\n.mj-attendee-card[_ngcontent-%COMP%] {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 12px 14px;\n}\n\n.mj-attendee-card-title[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n font-weight: 600;\n color: #475569;\n margin-bottom: 10px;\n}\n\n\n\n.mj-widget-payment-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid #e2e8f0;\n}\n\n.mj-stripe-container[_ngcontent-%COMP%] {\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px;\n margin-bottom: 16px;\n}\n\n.mj-stripe-mount-point[_ngcontent-%COMP%] {\n min-height: 40px;\n}\n\n.mj-stripe-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 10px;\n font-size: 0.75rem;\n color: #64748b;\n}\n\n.mj-stripe-lock-icon[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n}\n\n.mj-checkout-total-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-top: 1px solid #e2e8f0;\n margin-top: 10px;\n margin-bottom: 18px;\n}\n\n.mj-total-label[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 1.05rem;\n color: #0f172a;\n}\n\n.mj-total-amount[_ngcontent-%COMP%] {\n font-weight: 800;\n font-size: 1.25rem;\n color: var(--mj-primary-color, #2563eb);\n}\n\n.mj-widget-actions[_ngcontent-%COMP%] {\n margin-top: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-size: 1rem;\n font-weight: 600;\n border: none;\n border-radius: var(--mj-border-radius, 8px);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: opacity 0.15s ease;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%]:hover:not(:disabled) {\n opacity: 0.92;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mj-btn-cancel[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n color: #64748b;\n font-size: 0.875rem;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: center;\n}\n\n.mj-btn-cancel[_ngcontent-%COMP%]:hover:not(:disabled) {\n color: #334155;\n text-decoration: underline;\n}\n\n.mj-spinner[_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n border: 2px solid #ffffff;\n border-top-color: transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_mj-spin 0.8s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_mj-spin {\n to { transform: rotate(360deg); }\n}\n\n.mj-checkout-consent[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n align-items: flex-start;\n margin: 0.75rem 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.4;\n}\n.mj-checkout-consent[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n margin-top: 0.2rem;\n}\n\n\n\n\n\n.mj-checkbox-label[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%], \n.mj-checkout-consent[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] {\n width: auto;\n height: auto;\n padding: 0;\n border: 0;\n flex: 0 0 auto;\n}\n\n.mj-checkout-promo[_ngcontent-%COMP%] {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__label[_ngcontent-%COMP%] {\n display: block;\n font-size: 0.875rem;\n margin-bottom: 0.25rem;\n}\n.mj-checkout-promo__row[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n.mj-checkout-promo__input[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n}\n.mj-checkout-promo__error[_ngcontent-%COMP%] {\n color: var(--mj-error-color, #b91c1c);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-promo__applied[_ngcontent-%COMP%] {\n color: var(--mj-success-color, #15803d);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-member-discount[_ngcontent-%COMP%] {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__apply[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n padding: 8px 14px;\n background: transparent;\n color: var(--mj-primary-color, #2563eb);\n border: 1px solid var(--mj-border-color, #cbd5e1);\n border-radius: var(--mj-border-radius, 8px);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n}\n.mj-checkout-promo__apply[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}'], changeDetection: 0 });
38691
38791
  };
38692
38792
  (() => {
38693
38793
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MJCheckoutWidgetComponent, [{
@@ -38816,7 +38916,11 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38816
38916
  [ngModel]="units()[0]?.[field.name]"
38817
38917
  (ngModelChange)="updateUnitField(0, field.name, $event)"
38818
38918
  [placeholder]="field.placeholder || ''"
38919
+ [readonly]="isLockedEmail(0, field.name)"
38819
38920
  [required]="field.required || false" />
38921
+ @if (isLockedEmail(0, field.name)) {
38922
+ <p class="mj-field-hint">Your member discount is tied to this verified e-mail.</p>
38923
+ }
38820
38924
  }
38821
38925
  }
38822
38926
  </div>
@@ -38898,7 +39002,11 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38898
39002
  [ngModel]="unit[field.name]"
38899
39003
  (ngModelChange)="updateUnitField($index, field.name, $event)"
38900
39004
  [placeholder]="field.placeholder || ''"
39005
+ [readonly]="isLockedEmail($index, field.name)"
38901
39006
  [required]="field.required || false" />
39007
+ @if (isLockedEmail($index, field.name)) {
39008
+ <p class="mj-field-hint">Your member discount is tied to this verified e-mail.</p>
39009
+ }
38902
39010
  }
38903
39011
  }
38904
39012
  </div>
@@ -39088,6 +39196,12 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
39088
39196
  </div>
39089
39197
  }
39090
39198
 
39199
+ @if (activeMemberDiscount(); as member) {
39200
+ <p class="mj-checkout-promo__applied mj-checkout-member-discount" role="status">
39201
+ {{ member.code ? member.code + ' member discount' : 'Member discount' }}: \u2212{{ currencySymbol() }}{{ member.discount.toFixed(2) }}
39202
+ </p>
39203
+ }
39204
+
39091
39205
  @if (autoRenewConsentText(); as consentText) {
39092
39206
  <label class="mj-checkout-consent">
39093
39207
  <input type="checkbox"
@@ -39129,7 +39243,7 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
39129
39243
  </button>
39130
39244
  </div>
39131
39245
  </div>
39132
- `, styles: [':host {\n display: block;\n font-family: var(--mj-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);\n color: var(--mj-text-color, #1e293b);\n}\n\n.mj-checkout-widget-container {\n max-width: 560px;\n margin: 0 auto;\n background: var(--mj-bg-color, #ffffff);\n border: 1px solid #e2e8f0;\n border-radius: var(--mj-border-radius, 8px);\n padding: 24px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);\n}\n\n.mj-widget-header {\n margin-bottom: 20px;\n}\n\n.mj-widget-title {\n margin: 0 0 6px 0;\n font-size: 1.35rem;\n font-weight: 700;\n color: var(--mj-text-color, #0f172a);\n}\n\n.mj-widget-description {\n margin: 0;\n font-size: 0.9rem;\n color: #64748b;\n line-height: 1.4;\n}\n\n.mj-widget-error-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #fef2f2;\n border: 1px solid #f87171;\n color: #991b1b;\n padding: 10px 14px;\n border-radius: 6px;\n margin-bottom: 18px;\n font-size: 0.875rem;\n}\n\n.mj-error-icon {\n font-size: 1rem;\n}\n\n.mj-widget-summary-card {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px 16px;\n margin-bottom: 20px;\n}\n\n.mj-summary-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.mj-summary-price {\n display: flex;\n align-items: center;\n}\n\n.mj-widget-form-section {\n margin-bottom: 20px;\n}\n\n.mj-summary-item-info {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-product-name {\n font-weight: 600;\n font-size: 1rem;\n color: #1e293b;\n}\n\n.mj-badge-free {\n background: #dcfce7;\n color: #166534;\n font-size: 0.75rem;\n font-weight: 700;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mj-price-free {\n font-weight: 700;\n color: #166534;\n font-size: 1.1rem;\n}\n\n.mj-price-amount {\n font-weight: 700;\n color: #0f172a;\n font-size: 1.1rem;\n}\n\n.mj-quantity-selector-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px dashed #cbd5e1;\n}\n\n.mj-qty-controls {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.mj-qty-btn {\n width: 28px;\n height: 28px;\n background: #ffffff;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-qty-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.mj-qty-input {\n width: 44px;\n height: 28px;\n text-align: center;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-weight: 600;\n}\n\n.mj-section-title {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 12px 0;\n color: #334155;\n}\n\n.mj-form-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 18px;\n}\n\n.mj-form-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mj-form-group.full-width {\n grid-column: 1 / -1;\n}\n\n.mj-label {\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n}\n\n.mj-required {\n color: #ef4444;\n}\n\n.mj-input, .mj-select {\n padding: 8px 12px;\n font-size: 0.9rem;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n background: #ffffff;\n color: #1e293b;\n outline: none;\n transition: border-color 0.15s ease;\n width: 100%;\n box-sizing: border-box;\n}\n\n.mj-textarea {\n min-height: 70px;\n resize: vertical;\n font-family: inherit;\n}\n\n.mj-select {\n min-height: 38px;\n}\n\n.mj-checkbox-label {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 0.9rem;\n font-weight: 400;\n color: #334155;\n margin-top: 4px;\n}\n\n/* The free-text answer that appears under a question\'s "Other" choice. */\n.mj-question-other {\n margin-top: 8px;\n}\n\n/* A choice group: its options stacked, with how many to pick beside the heading. */\n.mj-choice-group {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\n.mj-choice-count {\n font-weight: normal;\n color: #64748b;\n}\n\n.mj-choice-options {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.mj-checkbox-label.is-disabled {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.mj-input:focus, .mj-select:focus {\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n.mj-multi-attendee-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.mj-btn-link {\n background: none;\n border: none;\n color: var(--mj-primary-color, #2563eb);\n font-size: 0.8rem;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.mj-attendee-matrix {\n display: flex;\n flex-direction: column;\n gap: 14px;\n margin-bottom: 20px;\n}\n\n.mj-attendee-card {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 12px 14px;\n}\n\n.mj-attendee-card-title {\n font-size: 0.85rem;\n font-weight: 600;\n color: #475569;\n margin-bottom: 10px;\n}\n\n/* Stripe Payment Container */\n.mj-widget-payment-section {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid #e2e8f0;\n}\n\n.mj-stripe-container {\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px;\n margin-bottom: 16px;\n}\n\n.mj-stripe-mount-point {\n min-height: 40px;\n}\n\n.mj-stripe-badge {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 10px;\n font-size: 0.75rem;\n color: #64748b;\n}\n\n.mj-stripe-lock-icon {\n font-size: 0.85rem;\n}\n\n.mj-checkout-total-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-top: 1px solid #e2e8f0;\n margin-top: 10px;\n margin-bottom: 18px;\n}\n\n.mj-total-label {\n font-weight: 700;\n font-size: 1.05rem;\n color: #0f172a;\n}\n\n.mj-total-amount {\n font-weight: 800;\n font-size: 1.25rem;\n color: var(--mj-primary-color, #2563eb);\n}\n\n.mj-widget-actions {\n margin-top: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-btn-submit {\n width: 100%;\n padding: 12px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-size: 1rem;\n font-weight: 600;\n border: none;\n border-radius: var(--mj-border-radius, 8px);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: opacity 0.15s ease;\n}\n\n.mj-btn-submit:hover:not(:disabled) {\n opacity: 0.92;\n}\n\n.mj-btn-submit:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mj-btn-cancel {\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n color: #64748b;\n font-size: 0.875rem;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: center;\n}\n\n.mj-btn-cancel:hover:not(:disabled) {\n color: #334155;\n text-decoration: underline;\n}\n\n.mj-spinner {\n width: 16px;\n height: 16px;\n border: 2px solid #ffffff;\n border-top-color: transparent;\n border-radius: 50%;\n animation: mj-spin 0.8s linear infinite;\n}\n\n@keyframes mj-spin {\n to { transform: rotate(360deg); }\n}\n\n.mj-checkout-consent {\n display: flex;\n gap: 0.5rem;\n align-items: flex-start;\n margin: 0.75rem 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.4;\n}\n.mj-checkout-consent input {\n margin-top: 0.2rem;\n}\n\n/* Checkboxes keep their native size even when the host page styles every input\n (e.g. `input { width: 100% }`): this rule is scoped to the widget, so it outranks\n a plain element or class selector on the host page. */\n.mj-checkbox-label input[type=checkbox],\n.mj-checkout-consent input[type=checkbox] {\n width: auto;\n height: auto;\n padding: 0;\n border: 0;\n flex: 0 0 auto;\n}\n\n.mj-checkout-promo {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__label {\n display: block;\n font-size: 0.875rem;\n margin-bottom: 0.25rem;\n}\n.mj-checkout-promo__row {\n display: flex;\n gap: 0.5rem;\n}\n.mj-checkout-promo__input {\n flex: 1 1 auto;\n}\n.mj-checkout-promo__error {\n color: var(--mj-error-color, #b91c1c);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-promo__applied {\n color: var(--mj-success-color, #15803d);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-promo__apply {\n flex: 0 0 auto;\n padding: 8px 14px;\n background: transparent;\n color: var(--mj-primary-color, #2563eb);\n border: 1px solid var(--mj-border-color, #cbd5e1);\n border-radius: var(--mj-border-radius, 8px);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n}\n.mj-checkout-promo__apply:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n'] }]
39246
+ `, styles: [':host {\n display: block;\n font-family: var(--mj-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);\n color: var(--mj-text-color, #1e293b);\n}\n\n.mj-checkout-widget-container {\n max-width: 560px;\n margin: 0 auto;\n background: var(--mj-bg-color, #ffffff);\n border: 1px solid #e2e8f0;\n border-radius: var(--mj-border-radius, 8px);\n padding: 24px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);\n}\n\n.mj-widget-header {\n margin-bottom: 20px;\n}\n\n.mj-widget-title {\n margin: 0 0 6px 0;\n font-size: 1.35rem;\n font-weight: 700;\n color: var(--mj-text-color, #0f172a);\n}\n\n.mj-widget-description {\n margin: 0;\n font-size: 0.9rem;\n color: #64748b;\n line-height: 1.4;\n}\n\n.mj-widget-error-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #fef2f2;\n border: 1px solid #f87171;\n color: #991b1b;\n padding: 10px 14px;\n border-radius: 6px;\n margin-bottom: 18px;\n font-size: 0.875rem;\n}\n\n.mj-error-icon {\n font-size: 1rem;\n}\n\n.mj-widget-summary-card {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px 16px;\n margin-bottom: 20px;\n}\n\n.mj-summary-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.mj-summary-price {\n display: flex;\n align-items: center;\n}\n\n.mj-widget-form-section {\n margin-bottom: 20px;\n}\n\n.mj-summary-item-info {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-product-name {\n font-weight: 600;\n font-size: 1rem;\n color: #1e293b;\n}\n\n.mj-badge-free {\n background: #dcfce7;\n color: #166534;\n font-size: 0.75rem;\n font-weight: 700;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mj-price-free {\n font-weight: 700;\n color: #166534;\n font-size: 1.1rem;\n}\n\n.mj-price-amount {\n font-weight: 700;\n color: #0f172a;\n font-size: 1.1rem;\n}\n\n.mj-quantity-selector-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px dashed #cbd5e1;\n}\n\n.mj-qty-controls {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.mj-qty-btn {\n width: 28px;\n height: 28px;\n background: #ffffff;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-qty-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.mj-qty-input {\n width: 44px;\n height: 28px;\n text-align: center;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-weight: 600;\n}\n\n.mj-section-title {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 12px 0;\n color: #334155;\n}\n\n.mj-form-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 18px;\n}\n\n.mj-form-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mj-form-group.full-width {\n grid-column: 1 / -1;\n}\n\n.mj-label {\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n}\n\n.mj-required {\n color: #ef4444;\n}\n\n.mj-input, .mj-select {\n padding: 8px 12px;\n font-size: 0.9rem;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n background: #ffffff;\n color: #1e293b;\n outline: none;\n transition: border-color 0.15s ease;\n width: 100%;\n box-sizing: border-box;\n}\n\n.mj-textarea {\n min-height: 70px;\n resize: vertical;\n font-family: inherit;\n}\n\n.mj-select {\n min-height: 38px;\n}\n\n.mj-checkbox-label {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 0.9rem;\n font-weight: 400;\n color: #334155;\n margin-top: 4px;\n}\n\n/* The free-text answer that appears under a question\'s "Other" choice. */\n.mj-question-other {\n margin-top: 8px;\n}\n\n/* A choice group: its options stacked, with how many to pick beside the heading. */\n.mj-choice-group {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\n.mj-choice-count {\n font-weight: normal;\n color: #64748b;\n}\n\n.mj-choice-options {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.mj-checkbox-label.is-disabled {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.mj-input:focus, .mj-select:focus {\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n/* The e-mail a member token was signed for (#919): shown, not editable. */\n.mj-input[readonly] {\n background: #f1f5f9;\n color: #475569;\n cursor: default;\n}\n\n.mj-field-hint {\n font-size: 0.8rem;\n color: #64748b;\n margin: 0.25rem 0 0;\n}\n\n.mj-multi-attendee-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.mj-btn-link {\n background: none;\n border: none;\n color: var(--mj-primary-color, #2563eb);\n font-size: 0.8rem;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.mj-attendee-matrix {\n display: flex;\n flex-direction: column;\n gap: 14px;\n margin-bottom: 20px;\n}\n\n.mj-attendee-card {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 12px 14px;\n}\n\n.mj-attendee-card-title {\n font-size: 0.85rem;\n font-weight: 600;\n color: #475569;\n margin-bottom: 10px;\n}\n\n/* Stripe Payment Container */\n.mj-widget-payment-section {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid #e2e8f0;\n}\n\n.mj-stripe-container {\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px;\n margin-bottom: 16px;\n}\n\n.mj-stripe-mount-point {\n min-height: 40px;\n}\n\n.mj-stripe-badge {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 10px;\n font-size: 0.75rem;\n color: #64748b;\n}\n\n.mj-stripe-lock-icon {\n font-size: 0.85rem;\n}\n\n.mj-checkout-total-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-top: 1px solid #e2e8f0;\n margin-top: 10px;\n margin-bottom: 18px;\n}\n\n.mj-total-label {\n font-weight: 700;\n font-size: 1.05rem;\n color: #0f172a;\n}\n\n.mj-total-amount {\n font-weight: 800;\n font-size: 1.25rem;\n color: var(--mj-primary-color, #2563eb);\n}\n\n.mj-widget-actions {\n margin-top: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-btn-submit {\n width: 100%;\n padding: 12px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-size: 1rem;\n font-weight: 600;\n border: none;\n border-radius: var(--mj-border-radius, 8px);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: opacity 0.15s ease;\n}\n\n.mj-btn-submit:hover:not(:disabled) {\n opacity: 0.92;\n}\n\n.mj-btn-submit:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mj-btn-cancel {\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n color: #64748b;\n font-size: 0.875rem;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: center;\n}\n\n.mj-btn-cancel:hover:not(:disabled) {\n color: #334155;\n text-decoration: underline;\n}\n\n.mj-spinner {\n width: 16px;\n height: 16px;\n border: 2px solid #ffffff;\n border-top-color: transparent;\n border-radius: 50%;\n animation: mj-spin 0.8s linear infinite;\n}\n\n@keyframes mj-spin {\n to { transform: rotate(360deg); }\n}\n\n.mj-checkout-consent {\n display: flex;\n gap: 0.5rem;\n align-items: flex-start;\n margin: 0.75rem 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.4;\n}\n.mj-checkout-consent input {\n margin-top: 0.2rem;\n}\n\n/* Checkboxes keep their native size even when the host page styles every input\n (e.g. `input { width: 100% }`): this rule is scoped to the widget, so it outranks\n a plain element or class selector on the host page. */\n.mj-checkbox-label input[type=checkbox],\n.mj-checkout-consent input[type=checkbox] {\n width: auto;\n height: auto;\n padding: 0;\n border: 0;\n flex: 0 0 auto;\n}\n\n.mj-checkout-promo {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__label {\n display: block;\n font-size: 0.875rem;\n margin-bottom: 0.25rem;\n}\n.mj-checkout-promo__row {\n display: flex;\n gap: 0.5rem;\n}\n.mj-checkout-promo__input {\n flex: 1 1 auto;\n}\n.mj-checkout-promo__error {\n color: var(--mj-error-color, #b91c1c);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-promo__applied {\n color: var(--mj-success-color, #15803d);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-member-discount {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__apply {\n flex: 0 0 auto;\n padding: 8px 14px;\n background: transparent;\n color: var(--mj-primary-color, #2563eb);\n border: 1px solid var(--mj-border-color, #cbd5e1);\n border-radius: var(--mj-border-radius, 8px);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n}\n.mj-checkout-promo__apply:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n'] }]
39133
39247
  }], () => [{ type: ElementRef }, { type: Renderer2 }], { config: [{
39134
39248
  type: Input
39135
39249
  }], distributionSlug: [{
@@ -39150,6 +39264,10 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
39150
39264
  type: Input
39151
39265
  }], promotionError: [{
39152
39266
  type: Input
39267
+ }], memberDiscount: [{
39268
+ type: Input
39269
+ }], lockEmail: [{
39270
+ type: Input
39153
39271
  }], serverPricedTotal: [{
39154
39272
  type: Input
39155
39273
  }], quotedTotal: [{
@@ -39164,6 +39282,8 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
39164
39282
  type: Output
39165
39283
  }], quoteInvalidated: [{
39166
39284
  type: Output
39285
+ }], quoteRequested: [{
39286
+ type: Output
39167
39287
  }] });
39168
39288
  })();
39169
39289
  (() => {
@@ -39225,6 +39345,19 @@ function memberDiscountNotice(draft, alreadyShown) {
39225
39345
  const typedCodePriced = Array.isArray(applied) && applied.length > 0;
39226
39346
  return typedCodePriced ? `${message} Submit again to continue.` : `${message} Submit again to continue at the standard rate.`;
39227
39347
  }
39348
+ function memberDiscountFromDraft(draft, quantity) {
39349
+ if (!draft?.["Success"] || draft["MemberDiscountApplied"] !== true) {
39350
+ return null;
39351
+ }
39352
+ const applied = draft["AppliedPromotionCodes"];
39353
+ const code = Array.isArray(applied) && typeof applied[0] === "string" ? applied[0] : "";
39354
+ return {
39355
+ code,
39356
+ discount: Number(draft["Discount"] ?? 0),
39357
+ total: Number(draft["TotalGross"] ?? 0),
39358
+ quantity
39359
+ };
39360
+ }
39228
39361
 
39229
39362
  // dist/lib/checkout-widget/checkout-turnstile.js
39230
39363
  var TURNSTILE_SCRIPT_URL = "https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit";
@@ -39791,17 +39924,21 @@ function CheckoutPublicHostComponent_Conditional_6_For_1_Template(rf, ctx) {
39791
39924
  \u0275\u0275restoreView(_r6);
39792
39925
  const ctx_r0 = \u0275\u0275nextContext(2);
39793
39926
  return \u0275\u0275resetView(ctx_r0.onQuoteInvalidated());
39927
+ })("quoteRequested", function CheckoutPublicHostComponent_Conditional_6_For_1_Template_mj_checkout_widget_quoteRequested_0_listener($event) {
39928
+ \u0275\u0275restoreView(_r6);
39929
+ const ctx_r0 = \u0275\u0275nextContext(2);
39930
+ return \u0275\u0275resetView(ctx_r0.onQuoteRequested($event));
39794
39931
  });
39795
39932
  \u0275\u0275elementEnd();
39796
39933
  }
39797
39934
  if (rf & 2) {
39798
39935
  const ctx_r0 = \u0275\u0275nextContext(2);
39799
- \u0275\u0275property("config", ctx_r0.config)("distributionSlug", ctx_r0.slug)("sessionKey", ctx_r0.sessionKey)("isProcessing", ctx_r0.processing)("isPaymentReady", ctx_r0.isPaymentReady)("stripePaymentMethodId", ctx_r0.stripePaymentMethodId)("prefillEmail", ctx_r0.prefillEmail)("errorMessage", ctx_r0.errorMessage)("appliedPromotion", ctx_r0.appliedPromotion)("serverPricedTotal", ctx_r0.serverPricedTotal)("promotionError", ctx_r0.promotionError)("quotedTotal", ctx_r0.quotedTotal)("quotedTax", ctx_r0.quotedTax);
39936
+ \u0275\u0275property("config", ctx_r0.config)("distributionSlug", ctx_r0.slug)("sessionKey", ctx_r0.sessionKey)("isProcessing", ctx_r0.processing)("isPaymentReady", ctx_r0.isPaymentReady)("stripePaymentMethodId", ctx_r0.stripePaymentMethodId)("prefillEmail", ctx_r0.prefillEmail)("errorMessage", ctx_r0.errorMessage)("appliedPromotion", ctx_r0.appliedPromotion)("serverPricedTotal", ctx_r0.serverPricedTotal)("memberDiscount", ctx_r0.memberDiscount)("lockEmail", ctx_r0.emailLocked)("promotionError", ctx_r0.promotionError)("quotedTotal", ctx_r0.quotedTotal)("quotedTax", ctx_r0.quotedTax);
39800
39937
  }
39801
39938
  }
39802
39939
  function CheckoutPublicHostComponent_Conditional_6_Template(rf, ctx) {
39803
39940
  if (rf & 1) {
39804
- \u0275\u0275repeaterCreate(0, CheckoutPublicHostComponent_Conditional_6_For_1_Template, 1, 13, "mj-checkout-widget", 39, \u0275\u0275repeaterTrackByIdentity);
39941
+ \u0275\u0275repeaterCreate(0, CheckoutPublicHostComponent_Conditional_6_For_1_Template, 1, 15, "mj-checkout-widget", 39, \u0275\u0275repeaterTrackByIdentity);
39805
39942
  }
39806
39943
  if (rf & 2) {
39807
39944
  const ctx_r0 = \u0275\u0275nextContext();
@@ -39850,6 +39987,26 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39850
39987
  /** The server's total and tax for the details last drafted — shown before the buyer is charged. */
39851
39988
  quotedTotal = null;
39852
39989
  quotedTax = null;
39990
+ /** The verified member's discount the server last priced, shown before Pay (#919). */
39991
+ memberDiscount = null;
39992
+ /** How long the form must be still before a member's price is asked for. A field so a test can shorten it. */
39993
+ quoteDebounceMs = 400;
39994
+ quoteTimer = null;
39995
+ /** Bumped by every price change; a background answer for an older generation is dropped. */
39996
+ quoteGeneration = 0;
39997
+ /**
39998
+ * Every background draft still in flight. Pay and Apply wait for all of them, not only the latest: an older
39999
+ * one that lands after Pay's own draft would replace it on the session, and `/payment-intent` charges the
40000
+ * total the session's last draft saved.
40001
+ */
40002
+ backgroundQuotes = /* @__PURE__ */ new Set();
40003
+ /**
40004
+ * The e-mail is locked while a member token is attached and the host supplied the address (#919):
40005
+ * the discount is bound to it. Without a prefilled address the buyer must still be able to type one.
40006
+ */
40007
+ get emailLocked() {
40008
+ return !!this.memberToken && !!this.prefillEmail?.trim();
40009
+ }
39853
40010
  /** The post-payment account step, when the host registered one (#292). */
39854
40011
  account = null;
39855
40012
  password = "";
@@ -39973,6 +40130,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39973
40130
  }
39974
40131
  ngOnDestroy() {
39975
40132
  this.destroyed = true;
40133
+ this.cancelBackgroundQuote();
39976
40134
  this.turnstile.Destroy();
39977
40135
  this.hostEl?.nativeElement?.removeEventListener?.(CHECKOUT_RESET_REQUEST_EVENT, this.onResetRequested);
39978
40136
  try {
@@ -39988,18 +40146,8 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39988
40146
  this.processing = true;
39989
40147
  this.promotionError = null;
39990
40148
  try {
39991
- const draft = await this.post("/draft", {
39992
- sessionId: this.sessionId,
39993
- clientSessionKey: this.sessionKey,
39994
- email: event.email,
39995
- lines: [buildCheckoutDraftLine(this.config.productId, event)],
39996
- billingAddress: event.billingAddress,
39997
- answers: event.answers,
39998
- choices: event.choices,
39999
- ...this.attributionSource ? { attribution: { source: this.attributionSource, reference: this.attributionReference } } : {},
40000
- ...this.memberToken ? { memberToken: this.memberToken } : {},
40001
- promotionCodes: [event.promotionCode]
40002
- });
40149
+ await this.settleBackgroundQuote();
40150
+ const draft = await this.post("/draft", this.draftBody(this.config.productId, event, [event.promotionCode]));
40003
40151
  this.applyPromotionOutcome(draft, event);
40004
40152
  } catch {
40005
40153
  this.promotionError = "The code could not be checked. Please try again.";
@@ -40096,6 +40244,8 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40096
40244
  this.errorMessage = null;
40097
40245
  this.stripePaymentMethodId = null;
40098
40246
  this.serverPricedTotal = null;
40247
+ this.memberDiscount = null;
40248
+ this.cancelBackgroundQuote();
40099
40249
  try {
40100
40250
  this.card?.destroy?.();
40101
40251
  } catch {
@@ -40111,6 +40261,87 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40111
40261
  this.quotedTax = null;
40112
40262
  this.serverPricedTotal = null;
40113
40263
  this.appliedPromotion = null;
40264
+ this.memberDiscount = null;
40265
+ this.cancelBackgroundQuote();
40266
+ }
40267
+ /**
40268
+ * The widget's e-mail and billing location are complete and a price input changed (#919). With a
40269
+ * member token, the form is drafted in the background once it has been still for
40270
+ * `quoteDebounceMs`, so a verified member sees the discount, the total and the Pay button at the
40271
+ * member price before pressing Pay, and one press pays. Without a token nothing is sent.
40272
+ */
40273
+ onQuoteRequested(event) {
40274
+ if (!this.memberToken || this.renewalToken || !this.config?.productId) {
40275
+ return;
40276
+ }
40277
+ this.cancelBackgroundQuote();
40278
+ const generation = this.quoteGeneration;
40279
+ this.quoteTimer = setTimeout(() => {
40280
+ this.quoteTimer = null;
40281
+ const run = this.priceInBackground(event, generation);
40282
+ this.backgroundQuotes.add(run);
40283
+ void run.finally(() => this.backgroundQuotes.delete(run));
40284
+ }, this.quoteDebounceMs);
40285
+ }
40286
+ /**
40287
+ * Drafts the form with the member token and no typed code. Never blocks the form and never
40288
+ * reports an error: on any failure the price stays as it is, and Pay drafts it again. An answer
40289
+ * for an older generation, or one that arrives while Pay is being processed, is dropped. A token
40290
+ * that earned nothing changes nothing here; Pay shows its notice as before.
40291
+ */
40292
+ async priceInBackground(event, generation) {
40293
+ const productId = this.config?.productId;
40294
+ if (!productId || this.processing || this.destroyed) {
40295
+ return;
40296
+ }
40297
+ let draft;
40298
+ try {
40299
+ draft = await this.post("/draft", this.draftBody(productId, event, []));
40300
+ } catch {
40301
+ return;
40302
+ }
40303
+ if (generation !== this.quoteGeneration || this.processing || this.destroyed) {
40304
+ return;
40305
+ }
40306
+ this.memberDiscount = memberDiscountFromDraft(draft, event.quantity);
40307
+ if (this.memberDiscount) {
40308
+ const tax = typeof draft.Tax === "number" ? draft.Tax : 0;
40309
+ this.serverPricedTotal = { total: this.memberDiscount.total, quantity: event.quantity };
40310
+ this.quotedTotal = this.memberDiscount.total;
40311
+ this.quotedTax = tax > 0 ? tax : null;
40312
+ }
40313
+ this.cdr.detectChanges();
40314
+ }
40315
+ /** Drops a pending background draft and makes any answer already on its way stale. */
40316
+ cancelBackgroundQuote() {
40317
+ if (this.quoteTimer) {
40318
+ clearTimeout(this.quoteTimer);
40319
+ this.quoteTimer = null;
40320
+ }
40321
+ this.quoteGeneration++;
40322
+ }
40323
+ /**
40324
+ * Before Pay or Apply drafts: no background draft may start after it, and every one already sent is
40325
+ * waited for, so the server's session holds the buyer's draft rather than a background one.
40326
+ */
40327
+ async settleBackgroundQuote() {
40328
+ this.cancelBackgroundQuote();
40329
+ await Promise.all([...this.backgroundQuotes]);
40330
+ }
40331
+ /** The `/draft` body for a widget submission, priced with the given typed codes. */
40332
+ draftBody(productId, event, promotionCodes) {
40333
+ return {
40334
+ sessionId: this.sessionId,
40335
+ clientSessionKey: this.sessionKey,
40336
+ email: event.email,
40337
+ lines: [buildCheckoutDraftLine(productId, event)],
40338
+ billingAddress: event.billingAddress,
40339
+ answers: event.answers,
40340
+ ...this.attributionSource ? { attribution: { source: this.attributionSource, reference: this.attributionReference } } : {},
40341
+ choices: event.choices,
40342
+ ...this.memberToken ? { memberToken: this.memberToken } : {},
40343
+ promotionCodes
40344
+ };
40114
40345
  }
40115
40346
  async onSubmitted(event) {
40116
40347
  if (this.processing || !this.config?.productId) {
@@ -40120,19 +40351,8 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40120
40351
  this.errorMessage = null;
40121
40352
  this.setState("PROCESSING");
40122
40353
  try {
40123
- const line = buildCheckoutDraftLine(this.config.productId, event);
40124
- const draft = await this.post("/draft", {
40125
- sessionId: this.sessionId,
40126
- clientSessionKey: this.sessionKey,
40127
- email: event.email,
40128
- lines: [line],
40129
- billingAddress: event.billingAddress,
40130
- answers: event.answers,
40131
- ...this.attributionSource ? { attribution: { source: this.attributionSource, reference: this.attributionReference } } : {},
40132
- choices: event.choices,
40133
- ...this.memberToken ? { memberToken: this.memberToken } : {},
40134
- promotionCodes: event.promotionCode ? [event.promotionCode] : []
40135
- });
40354
+ await this.settleBackgroundQuote();
40355
+ const draft = await this.post("/draft", this.draftBody(this.config.productId, event, event.promotionCode ? [event.promotionCode] : []));
40136
40356
  if (!this.applyPromotionOutcome(draft, event)) {
40137
40357
  return;
40138
40358
  }
@@ -40141,6 +40361,9 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40141
40361
  throw new Error(this.str(draft?.ErrorMessage, "Could not price this checkout."));
40142
40362
  }
40143
40363
  this.serverPricedTotal = { total: Number(draft.TotalGross ?? 0), quantity: event.quantity };
40364
+ if (this.memberToken) {
40365
+ this.memberDiscount = memberDiscountFromDraft(draft, event.quantity);
40366
+ }
40144
40367
  const notice = memberDiscountNotice(draft, this.memberNoticeShown);
40145
40368
  if (notice) {
40146
40369
  this.memberNoticeShown = true;
@@ -40697,7 +40920,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40697
40920
  static \u0275fac = function CheckoutPublicHostComponent_Factory(__ngFactoryType__) {
40698
40921
  return new (__ngFactoryType__ || _CheckoutPublicHostComponent)();
40699
40922
  };
40700
- static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _CheckoutPublicHostComponent, selectors: [["mj-orders-checkout"]], inputs: { slug: "slug", apiRoot: "apiRoot", memberToken: "memberToken", renewalToken: "renewalToken" }, outputs: { alreadySubscribed: "checkout-already-subscribed" }, decls: 8, vars: 1, consts: [[1, "mj-checkout-public"], ["role", "alert", 1, "mj-widget-error-banner"], ["role", "status", 1, "mj-checkout-success"], ["role", "status", "aria-live", "polite", 1, "mj-checkout-success"], ["role", "status", 1, "mj-checkout-public__status"], [1, "mj-checkout-renewal"], [1, "mj-checkout-public__turnstile"], ["aria-hidden", "true", 1, "mj-checkout-success__icon"], [1, "mj-checkout-success__title"], [1, "mj-checkout-success__msg"], [1, "mj-checkout-success__order"], ["role", "status", 1, "mj-checkout-success__access", 3, "is-failed"], ["role", "status", 1, "mj-checkout-account__msg"], [1, "mj-checkout-account"], ["role", "status", 1, "mj-checkout-success__access"], [1, "mj-checkout-account", 3, "submit"], [1, "mj-checkout-account__title"], [1, "mj-checkout-account__note"], ["for", "mj-checkout-password", 1, "mj-checkout-account__label"], ["id", "mj-checkout-password", "type", "password", "autocomplete", "new-password", 1, "mj-checkout-account__input", 3, "input", "value"], ["for", "mj-checkout-password-confirm", 1, "mj-checkout-account__label"], ["id", "mj-checkout-password-confirm", "type", "password", "autocomplete", "new-password", 1, "mj-checkout-account__input", 3, "input", "value"], ["role", "alert", 1, "mj-checkout-account__error"], ["type", "submit", 1, "mj-checkout-account__submit", 3, "disabled"], ["type", "button", 1, "mj-checkout-account__skip", 3, "click", "disabled"], [1, "mj-checkout-account", "mj-checkout-account--actions"], ["type", "button", 1, "mj-checkout-account__submit", 3, "click"], ["type", "button", 1, "mj-checkout-account__skip"], ["type", "button", 1, "mj-checkout-account__skip", 3, "click"], [1, "mj-checkout-renewal", 3, "submit"], [1, "mj-checkout-renewal__title"], [1, "mj-checkout-renewal__lead"], [1, "mj-checkout-renewal__summary"], [1, "mj-checkout-renewal__row"], [1, "mj-checkout-renewal__row", "mj-checkout-renewal__row--total"], [1, "mj-checkout-renewal__note"], ["type", "submit", 1, "mj-checkout-renewal__pay", 3, "disabled"], ["for", "stripe-card-element", 1, "mj-checkout-renewal__label"], ["id", "stripe-card-element", 1, "mj-checkout-renewal__card"], [3, "config", "distributionSlug", "sessionKey", "isProcessing", "isPaymentReady", "stripePaymentMethodId", "prefillEmail", "errorMessage", "appliedPromotion", "serverPricedTotal", "promotionError", "quotedTotal", "quotedTax"], [3, "promotionCodeApplied", "submitted", "cancelled", "quoteInvalidated", "config", "distributionSlug", "sessionKey", "isProcessing", "isPaymentReady", "stripePaymentMethodId", "prefillEmail", "errorMessage", "appliedPromotion", "serverPricedTotal", "promotionError", "quotedTotal", "quotedTax"]], template: function CheckoutPublicHostComponent_Template(rf, ctx) {
40923
+ static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _CheckoutPublicHostComponent, selectors: [["mj-orders-checkout"]], inputs: { slug: "slug", apiRoot: "apiRoot", memberToken: "memberToken", renewalToken: "renewalToken" }, outputs: { alreadySubscribed: "checkout-already-subscribed" }, decls: 8, vars: 1, consts: [[1, "mj-checkout-public"], ["role", "alert", 1, "mj-widget-error-banner"], ["role", "status", 1, "mj-checkout-success"], ["role", "status", "aria-live", "polite", 1, "mj-checkout-success"], ["role", "status", 1, "mj-checkout-public__status"], [1, "mj-checkout-renewal"], [1, "mj-checkout-public__turnstile"], ["aria-hidden", "true", 1, "mj-checkout-success__icon"], [1, "mj-checkout-success__title"], [1, "mj-checkout-success__msg"], [1, "mj-checkout-success__order"], ["role", "status", 1, "mj-checkout-success__access", 3, "is-failed"], ["role", "status", 1, "mj-checkout-account__msg"], [1, "mj-checkout-account"], ["role", "status", 1, "mj-checkout-success__access"], [1, "mj-checkout-account", 3, "submit"], [1, "mj-checkout-account__title"], [1, "mj-checkout-account__note"], ["for", "mj-checkout-password", 1, "mj-checkout-account__label"], ["id", "mj-checkout-password", "type", "password", "autocomplete", "new-password", 1, "mj-checkout-account__input", 3, "input", "value"], ["for", "mj-checkout-password-confirm", 1, "mj-checkout-account__label"], ["id", "mj-checkout-password-confirm", "type", "password", "autocomplete", "new-password", 1, "mj-checkout-account__input", 3, "input", "value"], ["role", "alert", 1, "mj-checkout-account__error"], ["type", "submit", 1, "mj-checkout-account__submit", 3, "disabled"], ["type", "button", 1, "mj-checkout-account__skip", 3, "click", "disabled"], [1, "mj-checkout-account", "mj-checkout-account--actions"], ["type", "button", 1, "mj-checkout-account__submit", 3, "click"], ["type", "button", 1, "mj-checkout-account__skip"], ["type", "button", 1, "mj-checkout-account__skip", 3, "click"], [1, "mj-checkout-renewal", 3, "submit"], [1, "mj-checkout-renewal__title"], [1, "mj-checkout-renewal__lead"], [1, "mj-checkout-renewal__summary"], [1, "mj-checkout-renewal__row"], [1, "mj-checkout-renewal__row", "mj-checkout-renewal__row--total"], [1, "mj-checkout-renewal__note"], ["type", "submit", 1, "mj-checkout-renewal__pay", 3, "disabled"], ["for", "stripe-card-element", 1, "mj-checkout-renewal__label"], ["id", "stripe-card-element", 1, "mj-checkout-renewal__card"], [3, "config", "distributionSlug", "sessionKey", "isProcessing", "isPaymentReady", "stripePaymentMethodId", "prefillEmail", "errorMessage", "appliedPromotion", "serverPricedTotal", "memberDiscount", "lockEmail", "promotionError", "quotedTotal", "quotedTax"], [3, "promotionCodeApplied", "submitted", "cancelled", "quoteInvalidated", "quoteRequested", "config", "distributionSlug", "sessionKey", "isProcessing", "isPaymentReady", "stripePaymentMethodId", "prefillEmail", "errorMessage", "appliedPromotion", "serverPricedTotal", "memberDiscount", "lockEmail", "promotionError", "quotedTotal", "quotedTax"]], template: function CheckoutPublicHostComponent_Template(rf, ctx) {
40701
40924
  if (rf & 1) {
40702
40925
  \u0275\u0275elementStart(0, "div", 0);
40703
40926
  \u0275\u0275conditionalCreate(1, CheckoutPublicHostComponent_Conditional_1_Template, 2, 1, "div", 1)(2, CheckoutPublicHostComponent_Conditional_2_Template, 12, 4, "div", 2)(3, CheckoutPublicHostComponent_Conditional_3_Template, 3, 1, "div", 3)(4, CheckoutPublicHostComponent_Conditional_4_Template, 2, 0, "p", 4)(5, CheckoutPublicHostComponent_Conditional_5_Template, 25, 9, "form", 5)(6, CheckoutPublicHostComponent_Conditional_6_Template, 2, 2);
@@ -40836,13 +41059,16 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40836
41059
  [errorMessage]="errorMessage"
40837
41060
  [appliedPromotion]="appliedPromotion"
40838
41061
  [serverPricedTotal]="serverPricedTotal"
41062
+ [memberDiscount]="memberDiscount"
41063
+ [lockEmail]="emailLocked"
40839
41064
  [promotionError]="promotionError"
40840
41065
  (promotionCodeApplied)="onPromotionCodeApplied($event)"
40841
41066
  [quotedTotal]="quotedTotal"
40842
41067
  [quotedTax]="quotedTax"
40843
41068
  (submitted)="onSubmitted($event)"
40844
41069
  (cancelled)="onCancelled()"
40845
- (quoteInvalidated)="onQuoteInvalidated()">
41070
+ (quoteInvalidated)="onQuoteInvalidated()"
41071
+ (quoteRequested)="onQuoteRequested($event)">
40846
41072
  </mj-checkout-widget>
40847
41073
  }
40848
41074
  }
@@ -40863,7 +41089,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40863
41089
  }] });
40864
41090
  })();
40865
41091
  (() => {
40866
- (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(CheckoutPublicHostComponent, { className: "CheckoutPublicHostComponent", filePath: "lib/checkout-widget/checkout-public-host.component.ts", lineNumber: 121 });
41092
+ (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(CheckoutPublicHostComponent, { className: "CheckoutPublicHostComponent", filePath: "lib/checkout-widget/checkout-public-host.component.ts", lineNumber: 122 });
40867
41093
  })();
40868
41094
 
40869
41095
  // scripts/checkout-element-entry.ts