@mj-biz-apps/orders-ng 5.23.1 → 5.25.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.
Files changed (45) hide show
  1. package/dist/checkout-element/main.js +1401 -218
  2. package/dist/lib/checkout-widget/checkout-access.d.ts +21 -0
  3. package/dist/lib/checkout-widget/checkout-access.d.ts.map +1 -0
  4. package/dist/lib/checkout-widget/checkout-access.js +38 -0
  5. package/dist/lib/checkout-widget/checkout-access.js.map +1 -0
  6. package/dist/lib/checkout-widget/checkout-account.d.ts +6 -2
  7. package/dist/lib/checkout-widget/checkout-account.d.ts.map +1 -1
  8. package/dist/lib/checkout-widget/checkout-account.js +3 -5
  9. package/dist/lib/checkout-widget/checkout-account.js.map +1 -1
  10. package/dist/lib/checkout-widget/checkout-draft-line.d.ts +6 -0
  11. package/dist/lib/checkout-widget/checkout-draft-line.d.ts.map +1 -1
  12. package/dist/lib/checkout-widget/checkout-draft-line.js +12 -0
  13. package/dist/lib/checkout-widget/checkout-draft-line.js.map +1 -1
  14. package/dist/lib/checkout-widget/checkout-public-host.component.d.ts +55 -2
  15. package/dist/lib/checkout-widget/checkout-public-host.component.d.ts.map +1 -1
  16. package/dist/lib/checkout-widget/checkout-public-host.component.js +267 -45
  17. package/dist/lib/checkout-widget/checkout-public-host.component.js.map +1 -1
  18. package/dist/lib/checkout-widget/checkout-redirect.d.ts +15 -0
  19. package/dist/lib/checkout-widget/checkout-redirect.d.ts.map +1 -0
  20. package/dist/lib/checkout-widget/checkout-redirect.js +27 -0
  21. package/dist/lib/checkout-widget/checkout-redirect.js.map +1 -0
  22. package/dist/lib/checkout-widget/checkout-widget.component.d.ts +84 -1
  23. package/dist/lib/checkout-widget/checkout-widget.component.d.ts.map +1 -1
  24. package/dist/lib/checkout-widget/checkout-widget.component.js +462 -162
  25. package/dist/lib/checkout-widget/checkout-widget.component.js.map +1 -1
  26. package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.js +19 -13
  27. package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.js.map +1 -1
  28. package/dist/lib/generated/Entities/mjBizAppsOrdersCustomerPaymentMethod/mjbizappsorderscustomerpaymentmethod.form.component.d.ts.map +1 -1
  29. package/dist/lib/generated/Entities/mjBizAppsOrdersCustomerPaymentMethod/mjbizappsorderscustomerpaymentmethod.form.component.js +23 -5
  30. package/dist/lib/generated/Entities/mjBizAppsOrdersCustomerPaymentMethod/mjbizappsorderscustomerpaymentmethod.form.component.js.map +1 -1
  31. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineProgressMeasurement/mjbizappsordersorderlineprogressmeasurement.form.component.d.ts.map +1 -1
  32. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineProgressMeasurement/mjbizappsordersorderlineprogressmeasurement.form.component.js +30 -7
  33. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineProgressMeasurement/mjbizappsordersorderlineprogressmeasurement.form.component.js.map +1 -1
  34. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscription/mjbizappsorderssubscription.form.component.d.ts.map +1 -1
  35. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscription/mjbizappsorderssubscription.form.component.js +46 -38
  36. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscription/mjbizappsorderssubscription.form.component.js.map +1 -1
  37. package/dist/lib/pages/receivables/progress.page.d.ts +34 -0
  38. package/dist/lib/pages/receivables/progress.page.d.ts.map +1 -1
  39. package/dist/lib/pages/receivables/progress.page.js +204 -37
  40. package/dist/lib/pages/receivables/progress.page.js.map +1 -1
  41. package/dist/lib/services/pricing-scheduler.service.d.ts +6 -9
  42. package/dist/lib/services/pricing-scheduler.service.d.ts.map +1 -1
  43. package/dist/lib/services/pricing-scheduler.service.js +17 -24
  44. package/dist/lib/services/pricing-scheduler.service.js.map +1 -1
  45. package/package.json +4 -4
@@ -31679,6 +31679,21 @@ function createCustomElement(component, config2) {
31679
31679
  return NgElementImpl;
31680
31680
  }
31681
31681
 
31682
+ // dist/lib/checkout-widget/checkout-redirect.js
31683
+ var ORDER_REFERENCE_PARAM = "order";
31684
+ function WithOrderReference(redirectUrl, orderNumber, base) {
31685
+ if (!orderNumber)
31686
+ return redirectUrl;
31687
+ let url;
31688
+ try {
31689
+ url = new URL(redirectUrl, base);
31690
+ } catch {
31691
+ return redirectUrl;
31692
+ }
31693
+ url.searchParams.set(ORDER_REFERENCE_PARAM, orderNumber);
31694
+ return url.toString();
31695
+ }
31696
+
31682
31697
  // dist/lib/checkout-widget/checkout-account.js
31683
31698
  var ACCOUNT_STEP_FAILED = { Outcome: "Failed", CanSetPassword: false };
31684
31699
  function ReadCheckoutAccount(raw) {
@@ -31691,7 +31706,7 @@ function ReadCheckoutAccount(raw) {
31691
31706
  Outcome: a["Outcome"],
31692
31707
  Message: typeof a["Message"] === "string" && a["Message"] ? a["Message"] : void 0,
31693
31708
  CanSetPassword: a["CanSetPassword"] === true,
31694
- VerificationRequired: a["Outcome"] === "Created" && a["VerificationRequired"] === true
31709
+ VerificationRequired: a["Outcome"] === "Created"
31695
31710
  };
31696
31711
  }
31697
31712
  var VERIFY_NOTE = "We are sending a link to your e-mail. Use it to verify your account before you sign in.";
@@ -31700,7 +31715,7 @@ function VerificationNote(account) {
31700
31715
  }
31701
31716
  function AccountMessage(account, passwordSet) {
31702
31717
  if (passwordSet) {
31703
- return account.VerificationRequired ? "Your password is set. Check your e-mail for the link to verify your account, then sign in with the e-mail you used here." : "Your password is set. You can now sign in with the e-mail you used here.";
31718
+ return "Your password is set. Check your e-mail for the link to verify your account, then sign in with the e-mail you used here.";
31704
31719
  }
31705
31720
  if (account.Message)
31706
31721
  return account.Message;
@@ -31751,6 +31766,41 @@ function CheckoutElementEvent(name, detail) {
31751
31766
  return new CustomEvent(name, { detail, bubbles: true, composed: true });
31752
31767
  }
31753
31768
 
31769
+ // dist/lib/checkout-widget/checkout-access.js
31770
+ var CHECKOUT_ACCESS_STATE_EVENT = "checkout-access-state";
31771
+ var ACCESS_POLL_INTERVAL_MS = 2e3;
31772
+ var ACCESS_POLL_TIMEOUT_MS = 6e4;
31773
+ var DEFAULTS = {
31774
+ pending: "Your access is being set up\u2026",
31775
+ ready: "Your access is ready.",
31776
+ failed: "We couldn't finish setting up your access. Please contact support."
31777
+ };
31778
+ function ReadAccessState(response) {
31779
+ if (!response || typeof response !== "object")
31780
+ return null;
31781
+ const r = response;
31782
+ if (r["Success"] !== true)
31783
+ return null;
31784
+ const s = r["State"];
31785
+ return s === "Ready" || s === "Pending" || s === "Failed" || s === "NotTracked" ? s : null;
31786
+ }
31787
+ function AccessMessage(state, messages) {
31788
+ const pick = (key) => {
31789
+ const custom = messages?.[key];
31790
+ return typeof custom === "string" && custom.trim() ? custom : DEFAULTS[key];
31791
+ };
31792
+ if (state === "Pending")
31793
+ return pick("pending");
31794
+ if (state === "Ready")
31795
+ return pick("ready");
31796
+ if (state === "Failed")
31797
+ return pick("failed");
31798
+ return null;
31799
+ }
31800
+ function IsFinalAccessState(state) {
31801
+ return state !== "Pending";
31802
+ }
31803
+
31754
31804
  // ../../node_modules/.pnpm/@angular+forms@21.1.3_@angular+common@21.1.3_@angular+core@21.1.3_@angular+compiler@21._c9921256e4e117964abeb4c1b7e7fb5a/node_modules/@angular/forms/fesm2022/forms.mjs
31755
31805
  var BaseControlValueAccessor = class _BaseControlValueAccessor {
31756
31806
  _renderer;
@@ -36403,6 +36453,414 @@ var ReactiveFormsModule = class _ReactiveFormsModule {
36403
36453
  }], null, null);
36404
36454
  })();
36405
36455
 
36456
+ // ../Entities/dist/billing-location.js
36457
+ var BILLING_COUNTRIES = [
36458
+ { Code: "AF", Name: "Afghanistan" },
36459
+ { Code: "AX", Name: "\xC5land Islands" },
36460
+ { Code: "AL", Name: "Albania" },
36461
+ { Code: "DZ", Name: "Algeria" },
36462
+ { Code: "AS", Name: "American Samoa" },
36463
+ { Code: "AD", Name: "Andorra" },
36464
+ { Code: "AO", Name: "Angola" },
36465
+ { Code: "AI", Name: "Anguilla" },
36466
+ { Code: "AQ", Name: "Antarctica" },
36467
+ { Code: "AG", Name: "Antigua and Barbuda" },
36468
+ { Code: "AR", Name: "Argentina" },
36469
+ { Code: "AM", Name: "Armenia" },
36470
+ { Code: "AW", Name: "Aruba" },
36471
+ { Code: "AU", Name: "Australia" },
36472
+ { Code: "AT", Name: "Austria" },
36473
+ { Code: "AZ", Name: "Azerbaijan" },
36474
+ { Code: "BS", Name: "Bahamas" },
36475
+ { Code: "BH", Name: "Bahrain" },
36476
+ { Code: "BD", Name: "Bangladesh" },
36477
+ { Code: "BB", Name: "Barbados" },
36478
+ { Code: "BY", Name: "Belarus" },
36479
+ { Code: "BE", Name: "Belgium" },
36480
+ { Code: "BZ", Name: "Belize" },
36481
+ { Code: "BJ", Name: "Benin" },
36482
+ { Code: "BM", Name: "Bermuda" },
36483
+ { Code: "BT", Name: "Bhutan" },
36484
+ { Code: "BO", Name: "Bolivia" },
36485
+ { Code: "BQ", Name: "Bonaire, Sint Eustatius and Saba" },
36486
+ { Code: "BA", Name: "Bosnia and Herzegovina" },
36487
+ { Code: "BW", Name: "Botswana" },
36488
+ { Code: "BV", Name: "Bouvet Island" },
36489
+ { Code: "BR", Name: "Brazil" },
36490
+ { Code: "IO", Name: "British Indian Ocean Territory" },
36491
+ { Code: "BN", Name: "Brunei Darussalam" },
36492
+ { Code: "BG", Name: "Bulgaria" },
36493
+ { Code: "BF", Name: "Burkina Faso" },
36494
+ { Code: "BI", Name: "Burundi" },
36495
+ { Code: "CV", Name: "Cabo Verde" },
36496
+ { Code: "KH", Name: "Cambodia" },
36497
+ { Code: "CM", Name: "Cameroon" },
36498
+ { Code: "CA", Name: "Canada" },
36499
+ { Code: "KY", Name: "Cayman Islands" },
36500
+ { Code: "CF", Name: "Central African Republic" },
36501
+ { Code: "TD", Name: "Chad" },
36502
+ { Code: "CL", Name: "Chile" },
36503
+ { Code: "CN", Name: "China" },
36504
+ { Code: "CX", Name: "Christmas Island" },
36505
+ { Code: "CC", Name: "Cocos (Keeling) Islands" },
36506
+ { Code: "CO", Name: "Colombia" },
36507
+ { Code: "KM", Name: "Comoros" },
36508
+ { Code: "CG", Name: "Congo" },
36509
+ { Code: "CD", Name: "Congo, Democratic Republic of the" },
36510
+ { Code: "CK", Name: "Cook Islands" },
36511
+ { Code: "CR", Name: "Costa Rica" },
36512
+ { Code: "CI", Name: "C\xF4te d'Ivoire" },
36513
+ { Code: "HR", Name: "Croatia" },
36514
+ { Code: "CU", Name: "Cuba" },
36515
+ { Code: "CW", Name: "Cura\xE7ao" },
36516
+ { Code: "CY", Name: "Cyprus" },
36517
+ { Code: "CZ", Name: "Czechia" },
36518
+ { Code: "DK", Name: "Denmark" },
36519
+ { Code: "DJ", Name: "Djibouti" },
36520
+ { Code: "DM", Name: "Dominica" },
36521
+ { Code: "DO", Name: "Dominican Republic" },
36522
+ { Code: "EC", Name: "Ecuador" },
36523
+ { Code: "EG", Name: "Egypt" },
36524
+ { Code: "SV", Name: "El Salvador" },
36525
+ { Code: "GQ", Name: "Equatorial Guinea" },
36526
+ { Code: "ER", Name: "Eritrea" },
36527
+ { Code: "EE", Name: "Estonia" },
36528
+ { Code: "SZ", Name: "Eswatini" },
36529
+ { Code: "ET", Name: "Ethiopia" },
36530
+ { Code: "FK", Name: "Falkland Islands (Malvinas)" },
36531
+ { Code: "FO", Name: "Faroe Islands" },
36532
+ { Code: "FJ", Name: "Fiji" },
36533
+ { Code: "FI", Name: "Finland" },
36534
+ { Code: "FR", Name: "France" },
36535
+ { Code: "GF", Name: "French Guiana" },
36536
+ { Code: "PF", Name: "French Polynesia" },
36537
+ { Code: "TF", Name: "French Southern Territories" },
36538
+ { Code: "GA", Name: "Gabon" },
36539
+ { Code: "GM", Name: "Gambia" },
36540
+ { Code: "GE", Name: "Georgia" },
36541
+ { Code: "DE", Name: "Germany" },
36542
+ { Code: "GH", Name: "Ghana" },
36543
+ { Code: "GI", Name: "Gibraltar" },
36544
+ { Code: "GR", Name: "Greece" },
36545
+ { Code: "GL", Name: "Greenland" },
36546
+ { Code: "GD", Name: "Grenada" },
36547
+ { Code: "GP", Name: "Guadeloupe" },
36548
+ { Code: "GU", Name: "Guam" },
36549
+ { Code: "GT", Name: "Guatemala" },
36550
+ { Code: "GG", Name: "Guernsey" },
36551
+ { Code: "GN", Name: "Guinea" },
36552
+ { Code: "GW", Name: "Guinea-Bissau" },
36553
+ { Code: "GY", Name: "Guyana" },
36554
+ { Code: "HT", Name: "Haiti" },
36555
+ { Code: "HM", Name: "Heard Island and McDonald Islands" },
36556
+ { Code: "VA", Name: "Holy See" },
36557
+ { Code: "HN", Name: "Honduras" },
36558
+ { Code: "HK", Name: "Hong Kong" },
36559
+ { Code: "HU", Name: "Hungary" },
36560
+ { Code: "IS", Name: "Iceland" },
36561
+ { Code: "IN", Name: "India" },
36562
+ { Code: "ID", Name: "Indonesia" },
36563
+ { Code: "IR", Name: "Iran" },
36564
+ { Code: "IQ", Name: "Iraq" },
36565
+ { Code: "IE", Name: "Ireland" },
36566
+ { Code: "IM", Name: "Isle of Man" },
36567
+ { Code: "IL", Name: "Israel" },
36568
+ { Code: "IT", Name: "Italy" },
36569
+ { Code: "JM", Name: "Jamaica" },
36570
+ { Code: "JP", Name: "Japan" },
36571
+ { Code: "JE", Name: "Jersey" },
36572
+ { Code: "JO", Name: "Jordan" },
36573
+ { Code: "KZ", Name: "Kazakhstan" },
36574
+ { Code: "KE", Name: "Kenya" },
36575
+ { Code: "KI", Name: "Kiribati" },
36576
+ { Code: "KP", Name: "Korea, Democratic People's Republic of" },
36577
+ { Code: "KR", Name: "Korea, Republic of" },
36578
+ { Code: "KW", Name: "Kuwait" },
36579
+ { Code: "KG", Name: "Kyrgyzstan" },
36580
+ { Code: "LA", Name: "Lao People's Democratic Republic" },
36581
+ { Code: "LV", Name: "Latvia" },
36582
+ { Code: "LB", Name: "Lebanon" },
36583
+ { Code: "LS", Name: "Lesotho" },
36584
+ { Code: "LR", Name: "Liberia" },
36585
+ { Code: "LY", Name: "Libya" },
36586
+ { Code: "LI", Name: "Liechtenstein" },
36587
+ { Code: "LT", Name: "Lithuania" },
36588
+ { Code: "LU", Name: "Luxembourg" },
36589
+ { Code: "MO", Name: "Macao" },
36590
+ { Code: "MG", Name: "Madagascar" },
36591
+ { Code: "MW", Name: "Malawi" },
36592
+ { Code: "MY", Name: "Malaysia" },
36593
+ { Code: "MV", Name: "Maldives" },
36594
+ { Code: "ML", Name: "Mali" },
36595
+ { Code: "MT", Name: "Malta" },
36596
+ { Code: "MH", Name: "Marshall Islands" },
36597
+ { Code: "MQ", Name: "Martinique" },
36598
+ { Code: "MR", Name: "Mauritania" },
36599
+ { Code: "MU", Name: "Mauritius" },
36600
+ { Code: "YT", Name: "Mayotte" },
36601
+ { Code: "MX", Name: "Mexico" },
36602
+ { Code: "FM", Name: "Micronesia" },
36603
+ { Code: "MD", Name: "Moldova" },
36604
+ { Code: "MC", Name: "Monaco" },
36605
+ { Code: "MN", Name: "Mongolia" },
36606
+ { Code: "ME", Name: "Montenegro" },
36607
+ { Code: "MS", Name: "Montserrat" },
36608
+ { Code: "MA", Name: "Morocco" },
36609
+ { Code: "MZ", Name: "Mozambique" },
36610
+ { Code: "MM", Name: "Myanmar" },
36611
+ { Code: "NA", Name: "Namibia" },
36612
+ { Code: "NR", Name: "Nauru" },
36613
+ { Code: "NP", Name: "Nepal" },
36614
+ { Code: "NL", Name: "Netherlands" },
36615
+ { Code: "NC", Name: "New Caledonia" },
36616
+ { Code: "NZ", Name: "New Zealand" },
36617
+ { Code: "NI", Name: "Nicaragua" },
36618
+ { Code: "NE", Name: "Niger" },
36619
+ { Code: "NG", Name: "Nigeria" },
36620
+ { Code: "NU", Name: "Niue" },
36621
+ { Code: "NF", Name: "Norfolk Island" },
36622
+ { Code: "MK", Name: "North Macedonia" },
36623
+ { Code: "MP", Name: "Northern Mariana Islands" },
36624
+ { Code: "NO", Name: "Norway" },
36625
+ { Code: "OM", Name: "Oman" },
36626
+ { Code: "PK", Name: "Pakistan" },
36627
+ { Code: "PW", Name: "Palau" },
36628
+ { Code: "PS", Name: "Palestine, State of" },
36629
+ { Code: "PA", Name: "Panama" },
36630
+ { Code: "PG", Name: "Papua New Guinea" },
36631
+ { Code: "PY", Name: "Paraguay" },
36632
+ { Code: "PE", Name: "Peru" },
36633
+ { Code: "PH", Name: "Philippines" },
36634
+ { Code: "PN", Name: "Pitcairn" },
36635
+ { Code: "PL", Name: "Poland" },
36636
+ { Code: "PT", Name: "Portugal" },
36637
+ { Code: "PR", Name: "Puerto Rico" },
36638
+ { Code: "QA", Name: "Qatar" },
36639
+ { Code: "RE", Name: "R\xE9union" },
36640
+ { Code: "RO", Name: "Romania" },
36641
+ { Code: "RU", Name: "Russian Federation" },
36642
+ { Code: "RW", Name: "Rwanda" },
36643
+ { Code: "BL", Name: "Saint Barth\xE9lemy" },
36644
+ { Code: "SH", Name: "Saint Helena, Ascension and Tristan da Cunha" },
36645
+ { Code: "KN", Name: "Saint Kitts and Nevis" },
36646
+ { Code: "LC", Name: "Saint Lucia" },
36647
+ { Code: "MF", Name: "Saint Martin (French part)" },
36648
+ { Code: "PM", Name: "Saint Pierre and Miquelon" },
36649
+ { Code: "VC", Name: "Saint Vincent and the Grenadines" },
36650
+ { Code: "WS", Name: "Samoa" },
36651
+ { Code: "SM", Name: "San Marino" },
36652
+ { Code: "ST", Name: "Sao Tome and Principe" },
36653
+ { Code: "SA", Name: "Saudi Arabia" },
36654
+ { Code: "SN", Name: "Senegal" },
36655
+ { Code: "RS", Name: "Serbia" },
36656
+ { Code: "SC", Name: "Seychelles" },
36657
+ { Code: "SL", Name: "Sierra Leone" },
36658
+ { Code: "SG", Name: "Singapore" },
36659
+ { Code: "SX", Name: "Sint Maarten (Dutch part)" },
36660
+ { Code: "SK", Name: "Slovakia" },
36661
+ { Code: "SI", Name: "Slovenia" },
36662
+ { Code: "SB", Name: "Solomon Islands" },
36663
+ { Code: "SO", Name: "Somalia" },
36664
+ { Code: "ZA", Name: "South Africa" },
36665
+ { Code: "GS", Name: "South Georgia and the South Sandwich Islands" },
36666
+ { Code: "SS", Name: "South Sudan" },
36667
+ { Code: "ES", Name: "Spain" },
36668
+ { Code: "LK", Name: "Sri Lanka" },
36669
+ { Code: "SD", Name: "Sudan" },
36670
+ { Code: "SR", Name: "Suriname" },
36671
+ { Code: "SJ", Name: "Svalbard and Jan Mayen" },
36672
+ { Code: "SE", Name: "Sweden" },
36673
+ { Code: "CH", Name: "Switzerland" },
36674
+ { Code: "SY", Name: "Syrian Arab Republic" },
36675
+ { Code: "TW", Name: "Taiwan" },
36676
+ { Code: "TJ", Name: "Tajikistan" },
36677
+ { Code: "TZ", Name: "Tanzania" },
36678
+ { Code: "TH", Name: "Thailand" },
36679
+ { Code: "TL", Name: "Timor-Leste" },
36680
+ { Code: "TG", Name: "Togo" },
36681
+ { Code: "TK", Name: "Tokelau" },
36682
+ { Code: "TO", Name: "Tonga" },
36683
+ { Code: "TT", Name: "Trinidad and Tobago" },
36684
+ { Code: "TN", Name: "Tunisia" },
36685
+ { Code: "TR", Name: "T\xFCrkiye" },
36686
+ { Code: "TM", Name: "Turkmenistan" },
36687
+ { Code: "TC", Name: "Turks and Caicos Islands" },
36688
+ { Code: "TV", Name: "Tuvalu" },
36689
+ { Code: "UG", Name: "Uganda" },
36690
+ { Code: "UA", Name: "Ukraine" },
36691
+ { Code: "AE", Name: "United Arab Emirates" },
36692
+ { Code: "GB", Name: "United Kingdom" },
36693
+ { Code: "US", Name: "United States" },
36694
+ { Code: "UM", Name: "United States Minor Outlying Islands" },
36695
+ { Code: "UY", Name: "Uruguay" },
36696
+ { Code: "UZ", Name: "Uzbekistan" },
36697
+ { Code: "VU", Name: "Vanuatu" },
36698
+ { Code: "VE", Name: "Venezuela" },
36699
+ { Code: "VN", Name: "Viet Nam" },
36700
+ { Code: "VG", Name: "Virgin Islands (British)" },
36701
+ { Code: "VI", Name: "Virgin Islands (U.S.)" },
36702
+ { Code: "WF", Name: "Wallis and Futuna" },
36703
+ { Code: "EH", Name: "Western Sahara" },
36704
+ { Code: "YE", Name: "Yemen" },
36705
+ { Code: "ZM", Name: "Zambia" },
36706
+ { Code: "ZW", Name: "Zimbabwe" }
36707
+ ];
36708
+ var BILLING_SUBDIVISIONS = {
36709
+ US: [
36710
+ { Code: "AL", Name: "Alabama" },
36711
+ { Code: "AK", Name: "Alaska" },
36712
+ { Code: "AS", Name: "American Samoa" },
36713
+ { Code: "AZ", Name: "Arizona" },
36714
+ { Code: "AR", Name: "Arkansas" },
36715
+ { Code: "CA", Name: "California" },
36716
+ { Code: "CO", Name: "Colorado" },
36717
+ { Code: "CT", Name: "Connecticut" },
36718
+ { Code: "DE", Name: "Delaware" },
36719
+ { Code: "DC", Name: "District of Columbia" },
36720
+ { Code: "FL", Name: "Florida" },
36721
+ { Code: "GA", Name: "Georgia" },
36722
+ { Code: "GU", Name: "Guam" },
36723
+ { Code: "HI", Name: "Hawaii" },
36724
+ { Code: "ID", Name: "Idaho" },
36725
+ { Code: "IL", Name: "Illinois" },
36726
+ { Code: "IN", Name: "Indiana" },
36727
+ { Code: "IA", Name: "Iowa" },
36728
+ { Code: "KS", Name: "Kansas" },
36729
+ { Code: "KY", Name: "Kentucky" },
36730
+ { Code: "LA", Name: "Louisiana" },
36731
+ { Code: "ME", Name: "Maine" },
36732
+ { Code: "MD", Name: "Maryland" },
36733
+ { Code: "MA", Name: "Massachusetts" },
36734
+ { Code: "MI", Name: "Michigan" },
36735
+ { Code: "MN", Name: "Minnesota" },
36736
+ { Code: "MS", Name: "Mississippi" },
36737
+ { Code: "MO", Name: "Missouri" },
36738
+ { Code: "MT", Name: "Montana" },
36739
+ { Code: "NE", Name: "Nebraska" },
36740
+ { Code: "NV", Name: "Nevada" },
36741
+ { Code: "NH", Name: "New Hampshire" },
36742
+ { Code: "NJ", Name: "New Jersey" },
36743
+ { Code: "NM", Name: "New Mexico" },
36744
+ { Code: "NY", Name: "New York" },
36745
+ { Code: "NC", Name: "North Carolina" },
36746
+ { Code: "ND", Name: "North Dakota" },
36747
+ { Code: "MP", Name: "Northern Mariana Islands" },
36748
+ { Code: "OH", Name: "Ohio" },
36749
+ { Code: "OK", Name: "Oklahoma" },
36750
+ { Code: "OR", Name: "Oregon" },
36751
+ { Code: "PA", Name: "Pennsylvania" },
36752
+ { Code: "PR", Name: "Puerto Rico" },
36753
+ { Code: "RI", Name: "Rhode Island" },
36754
+ { Code: "SC", Name: "South Carolina" },
36755
+ { Code: "SD", Name: "South Dakota" },
36756
+ { Code: "TN", Name: "Tennessee" },
36757
+ { Code: "TX", Name: "Texas" },
36758
+ { Code: "UM", Name: "United States Minor Outlying Islands" },
36759
+ { Code: "UT", Name: "Utah" },
36760
+ { Code: "VT", Name: "Vermont" },
36761
+ { Code: "VI", Name: "Virgin Islands, U.S." },
36762
+ { Code: "VA", Name: "Virginia" },
36763
+ { Code: "WA", Name: "Washington" },
36764
+ { Code: "WV", Name: "West Virginia" },
36765
+ { Code: "WI", Name: "Wisconsin" },
36766
+ { Code: "WY", Name: "Wyoming" }
36767
+ ],
36768
+ CA: [
36769
+ { Code: "AB", Name: "Alberta" },
36770
+ { Code: "BC", Name: "British Columbia" },
36771
+ { Code: "MB", Name: "Manitoba" },
36772
+ { Code: "NB", Name: "New Brunswick" },
36773
+ { Code: "NL", Name: "Newfoundland and Labrador" },
36774
+ { Code: "NT", Name: "Northwest Territories" },
36775
+ { Code: "NS", Name: "Nova Scotia" },
36776
+ { Code: "NU", Name: "Nunavut" },
36777
+ { Code: "ON", Name: "Ontario" },
36778
+ { Code: "PE", Name: "Prince Edward Island" },
36779
+ { Code: "QC", Name: "Quebec" },
36780
+ { Code: "SK", Name: "Saskatchewan" },
36781
+ { Code: "YT", Name: "Yukon" }
36782
+ ],
36783
+ AU: [
36784
+ { Code: "ACT", Name: "Australian Capital Territory" },
36785
+ { Code: "NSW", Name: "New South Wales" },
36786
+ { Code: "NT", Name: "Northern Territory" },
36787
+ { Code: "QLD", Name: "Queensland" },
36788
+ { Code: "SA", Name: "South Australia" },
36789
+ { Code: "TAS", Name: "Tasmania" },
36790
+ { Code: "VIC", Name: "Victoria" },
36791
+ { Code: "WA", Name: "Western Australia" }
36792
+ ]
36793
+ };
36794
+ var REQUIRED_POSTAL_PATTERNS = {
36795
+ US: /^\d{5}(-\d{4})?$/,
36796
+ CA: /^[A-Z]\d[A-Z] ?\d[A-Z]\d$/,
36797
+ AU: /^\d{4}$/
36798
+ };
36799
+ var MAX_POSTAL_CODE_LENGTH = 20;
36800
+ var COUNTRY_CODES = new Set(BILLING_COUNTRIES.map((c) => c.Code));
36801
+ function BillingSubdivisionsFor(countryCode) {
36802
+ return BILLING_SUBDIVISIONS[(countryCode ?? "").trim().toUpperCase()] ?? [];
36803
+ }
36804
+ function BillingPostalCodeRequired(countryCode) {
36805
+ return (countryCode ?? "").trim().toUpperCase() in REQUIRED_POSTAL_PATTERNS;
36806
+ }
36807
+ function CheckBillingLocation(input2) {
36808
+ if (!input2 || typeof input2 !== "object" || Array.isArray(input2)) {
36809
+ return { Valid: false, Reason: "A billing country is required." };
36810
+ }
36811
+ const raw = input2;
36812
+ const country = upperText(raw["Country"]);
36813
+ if (!country) {
36814
+ return { Valid: false, Reason: "A billing country is required." };
36815
+ }
36816
+ if (!COUNTRY_CODES.has(country)) {
36817
+ return { Valid: false, Reason: `'${country}' is not an ISO 3166-1 alpha-2 country code.` };
36818
+ }
36819
+ const region = checkRegion(country, upperText(raw["StateProvince"]));
36820
+ if (region.Valid === false)
36821
+ return { Valid: false, Reason: region.Reason };
36822
+ const postal = checkPostalCode(country, upperText(raw["PostalCode"]));
36823
+ if (postal.Valid === false)
36824
+ return { Valid: false, Reason: postal.Reason };
36825
+ return { Valid: true, Location: { Country: country, StateProvince: region.Value, PostalCode: postal.Value } };
36826
+ }
36827
+ function checkRegion(country, region) {
36828
+ const options = BillingSubdivisionsFor(country);
36829
+ if (options.length === 0) {
36830
+ return { Valid: true, Value: null };
36831
+ }
36832
+ if (!region) {
36833
+ return { Valid: false, Reason: `A state or province is required for ${country}.` };
36834
+ }
36835
+ const code = region.startsWith(`${country}-`) ? region.slice(country.length + 1) : region;
36836
+ if (!options.some((o) => o.Code === code)) {
36837
+ return { Valid: false, Reason: `'${region}' is not a state or province code for ${country}.` };
36838
+ }
36839
+ return { Valid: true, Value: code };
36840
+ }
36841
+ function checkPostalCode(country, postal) {
36842
+ const pattern = REQUIRED_POSTAL_PATTERNS[country];
36843
+ if (!pattern) {
36844
+ if (postal && postal.length > MAX_POSTAL_CODE_LENGTH) {
36845
+ return { Valid: false, Reason: `A postal code may be at most ${MAX_POSTAL_CODE_LENGTH} characters.` };
36846
+ }
36847
+ return { Valid: true, Value: postal };
36848
+ }
36849
+ if (!postal) {
36850
+ return { Valid: false, Reason: `A postal code is required for ${country}.` };
36851
+ }
36852
+ if (!pattern.test(postal)) {
36853
+ return { Valid: false, Reason: `'${postal}' is not a valid postal code for ${country}.` };
36854
+ }
36855
+ return { Valid: true, Value: postal };
36856
+ }
36857
+ function upperText(value) {
36858
+ if (typeof value !== "string")
36859
+ return null;
36860
+ const trimmed = value.trim().toUpperCase();
36861
+ return trimmed.length > 0 ? trimmed : null;
36862
+ }
36863
+
36406
36864
  // ../Entities/dist/checkout-questions.js
36407
36865
  var MAX_CHECKOUT_QUESTION_KEY_LENGTH = 100;
36408
36866
  var MAX_CHECKOUT_QUESTION_LABEL_LENGTH = 500;
@@ -36605,13 +37063,14 @@ function CheckChoicesAgainstGroups(groups, picks, options) {
36605
37063
  }
36606
37064
 
36607
37065
  // dist/lib/checkout-widget/checkout-widget.component.js
36608
- var _forTrack0 = ($index, $item) => $item.key;
36609
- var _forTrack1 = ($index, $item) => $item.name;
36610
- var _forTrack2 = ($index, $item) => $item.value;
36611
- function _forTrack3($index, $item) {
37066
+ var _forTrack0 = ($index, $item) => $item.Code;
37067
+ var _forTrack1 = ($index, $item) => $item.key;
37068
+ var _forTrack2 = ($index, $item) => $item.name;
37069
+ var _forTrack3 = ($index, $item) => $item.value;
37070
+ function _forTrack4($index, $item) {
36612
37071
  return this.optionValue($item);
36613
37072
  }
36614
- function _forTrack4($index, $item) {
37073
+ function _forTrack5($index, $item) {
36615
37074
  return this.choiceValue($item);
36616
37075
  }
36617
37076
  function MJCheckoutWidgetComponent_Conditional_4_Template(rf, ctx) {
@@ -36628,7 +37087,7 @@ function MJCheckoutWidgetComponent_Conditional_4_Template(rf, ctx) {
36628
37087
  }
36629
37088
  function MJCheckoutWidgetComponent_Conditional_5_Template(rf, ctx) {
36630
37089
  if (rf & 1) {
36631
- \u0275\u0275elementStart(0, "div", 4)(1, "span", 18);
37090
+ \u0275\u0275elementStart(0, "div", 4)(1, "span", 26);
36632
37091
  \u0275\u0275text(2, "\u26A0\uFE0F");
36633
37092
  \u0275\u0275elementEnd();
36634
37093
  \u0275\u0275elementStart(3, "span");
@@ -36670,10 +37129,10 @@ function MJCheckoutWidgetComponent_Conditional_14_Template(rf, ctx) {
36670
37129
  function MJCheckoutWidgetComponent_Conditional_15_Template(rf, ctx) {
36671
37130
  if (rf & 1) {
36672
37131
  const _r2 = \u0275\u0275getCurrentView();
36673
- \u0275\u0275elementStart(0, "div", 13)(1, "label", 19);
37132
+ \u0275\u0275elementStart(0, "div", 13)(1, "label", 27);
36674
37133
  \u0275\u0275text(2, "Quantity");
36675
37134
  \u0275\u0275elementEnd();
36676
- \u0275\u0275elementStart(3, "div", 20)(4, "button", 21);
37135
+ \u0275\u0275elementStart(3, "div", 28)(4, "button", 29);
36677
37136
  \u0275\u0275listener("click", function MJCheckoutWidgetComponent_Conditional_15_Template_button_click_4_listener() {
36678
37137
  \u0275\u0275restoreView(_r2);
36679
37138
  const ctx_r0 = \u0275\u0275nextContext();
@@ -36681,14 +37140,14 @@ function MJCheckoutWidgetComponent_Conditional_15_Template(rf, ctx) {
36681
37140
  });
36682
37141
  \u0275\u0275text(5, "-");
36683
37142
  \u0275\u0275elementEnd();
36684
- \u0275\u0275elementStart(6, "input", 22);
37143
+ \u0275\u0275elementStart(6, "input", 30);
36685
37144
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_15_Template_input_ngModelChange_6_listener($event) {
36686
37145
  \u0275\u0275restoreView(_r2);
36687
37146
  const ctx_r0 = \u0275\u0275nextContext();
36688
37147
  return \u0275\u0275resetView(ctx_r0.onQuantityChange($event));
36689
37148
  });
36690
37149
  \u0275\u0275elementEnd();
36691
- \u0275\u0275elementStart(7, "button", 21);
37150
+ \u0275\u0275elementStart(7, "button", 29);
36692
37151
  \u0275\u0275listener("click", function MJCheckoutWidgetComponent_Conditional_15_Template_button_click_7_listener() {
36693
37152
  \u0275\u0275restoreView(_r2);
36694
37153
  const ctx_r0 = \u0275\u0275nextContext();
@@ -36709,7 +37168,7 @@ function MJCheckoutWidgetComponent_Conditional_15_Template(rf, ctx) {
36709
37168
  }
36710
37169
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Conditional_3_Template(rf, ctx) {
36711
37170
  if (rf & 1) {
36712
- \u0275\u0275elementStart(0, "span", 28);
37171
+ \u0275\u0275elementStart(0, "span", 19);
36713
37172
  \u0275\u0275text(1, "*");
36714
37173
  \u0275\u0275elementEnd();
36715
37174
  }
@@ -36717,7 +37176,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Conditional_3_Template(r
36717
37176
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_4_Template(rf, ctx) {
36718
37177
  if (rf & 1) {
36719
37178
  const _r3 = \u0275\u0275getCurrentView();
36720
- \u0275\u0275elementStart(0, "textarea", 35);
37179
+ \u0275\u0275elementStart(0, "textarea", 38);
36721
37180
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_4_Template_textarea_ngModelChange_0_listener($event) {
36722
37181
  \u0275\u0275restoreView(_r3);
36723
37182
  const field_r4 = \u0275\u0275nextContext().$implicit;
@@ -36736,7 +37195,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_4_Template(rf, ctx)
36736
37195
  }
36737
37196
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_For_4_Template(rf, ctx) {
36738
37197
  if (rf & 1) {
36739
- \u0275\u0275elementStart(0, "option", 37);
37198
+ \u0275\u0275elementStart(0, "option", 21);
36740
37199
  \u0275\u0275text(1);
36741
37200
  \u0275\u0275elementEnd();
36742
37201
  }
@@ -36750,17 +37209,17 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_For_4_Template(rf
36750
37209
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template(rf, ctx) {
36751
37210
  if (rf & 1) {
36752
37211
  const _r5 = \u0275\u0275getCurrentView();
36753
- \u0275\u0275elementStart(0, "select", 36);
37212
+ \u0275\u0275elementStart(0, "select", 39);
36754
37213
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template_select_ngModelChange_0_listener($event) {
36755
37214
  \u0275\u0275restoreView(_r5);
36756
37215
  const field_r4 = \u0275\u0275nextContext().$implicit;
36757
37216
  const ctx_r0 = \u0275\u0275nextContext(2);
36758
37217
  return \u0275\u0275resetView(ctx_r0.updateUnitField(0, field_r4.name, $event));
36759
37218
  });
36760
- \u0275\u0275elementStart(1, "option", 37);
37219
+ \u0275\u0275elementStart(1, "option", 21);
36761
37220
  \u0275\u0275text(2);
36762
37221
  \u0275\u0275elementEnd();
36763
- \u0275\u0275repeaterCreate(3, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_For_4_Template, 2, 2, "option", 37, _forTrack2);
37222
+ \u0275\u0275repeaterCreate(3, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_For_4_Template, 2, 2, "option", 21, _forTrack3);
36764
37223
  \u0275\u0275elementEnd();
36765
37224
  }
36766
37225
  if (rf & 2) {
@@ -36779,7 +37238,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template(rf, ctx)
36779
37238
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template(rf, ctx) {
36780
37239
  if (rf & 1) {
36781
37240
  const _r7 = \u0275\u0275getCurrentView();
36782
- \u0275\u0275elementStart(0, "label", 31)(1, "input", 38);
37241
+ \u0275\u0275elementStart(0, "label", 34)(1, "input", 40);
36783
37242
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template_input_ngModelChange_1_listener($event) {
36784
37243
  \u0275\u0275restoreView(_r7);
36785
37244
  const field_r4 = \u0275\u0275nextContext().$implicit;
@@ -36804,7 +37263,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template(rf, ctx)
36804
37263
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template(rf, ctx) {
36805
37264
  if (rf & 1) {
36806
37265
  const _r8 = \u0275\u0275getCurrentView();
36807
- \u0275\u0275elementStart(0, "input", 39);
37266
+ \u0275\u0275elementStart(0, "input", 41);
36808
37267
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template_input_ngModelChange_0_listener($event) {
36809
37268
  \u0275\u0275restoreView(_r8);
36810
37269
  const field_r4 = \u0275\u0275nextContext().$implicit;
@@ -36823,7 +37282,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template(rf, ctx)
36823
37282
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template(rf, ctx) {
36824
37283
  if (rf & 1) {
36825
37284
  const _r9 = \u0275\u0275getCurrentView();
36826
- \u0275\u0275elementStart(0, "input", 40);
37285
+ \u0275\u0275elementStart(0, "input", 42);
36827
37286
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template_input_ngModelChange_0_listener($event) {
36828
37287
  \u0275\u0275restoreView(_r9);
36829
37288
  const field_r4 = \u0275\u0275nextContext().$implicit;
@@ -36842,7 +37301,7 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template(rf, ctx)
36842
37301
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template(rf, ctx) {
36843
37302
  if (rf & 1) {
36844
37303
  const _r10 = \u0275\u0275getCurrentView();
36845
- \u0275\u0275elementStart(0, "input", 41);
37304
+ \u0275\u0275elementStart(0, "input", 43);
36846
37305
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template_input_ngModelChange_0_listener($event) {
36847
37306
  \u0275\u0275restoreView(_r10);
36848
37307
  const field_r4 = \u0275\u0275nextContext().$implicit;
@@ -36860,11 +37319,11 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template(rf, ctx)
36860
37319
  }
36861
37320
  function MJCheckoutWidgetComponent_Conditional_17_For_4_Template(rf, ctx) {
36862
37321
  if (rf & 1) {
36863
- \u0275\u0275elementStart(0, "div", 26)(1, "label", 27);
37322
+ \u0275\u0275elementStart(0, "div", 17)(1, "label", 18);
36864
37323
  \u0275\u0275text(2);
36865
- \u0275\u0275conditionalCreate(3, MJCheckoutWidgetComponent_Conditional_17_For_4_Conditional_3_Template, 2, 0, "span", 28);
37324
+ \u0275\u0275conditionalCreate(3, MJCheckoutWidgetComponent_Conditional_17_For_4_Conditional_3_Template, 2, 0, "span", 19);
36866
37325
  \u0275\u0275elementEnd();
36867
- \u0275\u0275conditionalCreate(4, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_4_Template, 2, 3, "textarea", 29)(5, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template, 5, 4, "select", 30)(6, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template, 4, 2, "label", 31)(7, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template, 1, 3, "input", 32)(8, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template, 1, 2, "input", 33)(9, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template, 1, 4, "input", 34);
37326
+ \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);
36868
37327
  \u0275\u0275elementEnd();
36869
37328
  }
36870
37329
  if (rf & 2) {
@@ -36881,11 +37340,11 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Template(rf, ctx) {
36881
37340
  }
36882
37341
  function MJCheckoutWidgetComponent_Conditional_17_Template(rf, ctx) {
36883
37342
  if (rf & 1) {
36884
- \u0275\u0275elementStart(0, "h3", 23);
37343
+ \u0275\u0275elementStart(0, "h3", 15);
36885
37344
  \u0275\u0275text(1, "Details");
36886
37345
  \u0275\u0275elementEnd();
36887
- \u0275\u0275elementStart(2, "div", 24);
36888
- \u0275\u0275repeaterCreate(3, MJCheckoutWidgetComponent_Conditional_17_For_4_Template, 10, 5, "div", 25, _forTrack1);
37346
+ \u0275\u0275elementStart(2, "div", 16);
37347
+ \u0275\u0275repeaterCreate(3, MJCheckoutWidgetComponent_Conditional_17_For_4_Template, 10, 5, "div", 31, _forTrack2);
36889
37348
  \u0275\u0275elementEnd();
36890
37349
  }
36891
37350
  if (rf & 2) {
@@ -36896,7 +37355,7 @@ function MJCheckoutWidgetComponent_Conditional_17_Template(rf, ctx) {
36896
37355
  }
36897
37356
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Conditional_3_Template(rf, ctx) {
36898
37357
  if (rf & 1) {
36899
- \u0275\u0275elementStart(0, "span", 28);
37358
+ \u0275\u0275elementStart(0, "span", 19);
36900
37359
  \u0275\u0275text(1, "*");
36901
37360
  \u0275\u0275elementEnd();
36902
37361
  }
@@ -36904,7 +37363,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Conditional_3_Temp
36904
37363
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_4_Template(rf, ctx) {
36905
37364
  if (rf & 1) {
36906
37365
  const _r12 = \u0275\u0275getCurrentView();
36907
- \u0275\u0275elementStart(0, "textarea", 35);
37366
+ \u0275\u0275elementStart(0, "textarea", 38);
36908
37367
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_4_Template_textarea_ngModelChange_0_listener($event) {
36909
37368
  \u0275\u0275restoreView(_r12);
36910
37369
  const ctx_r12 = \u0275\u0275nextContext();
@@ -36924,7 +37383,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_4_Template(rf
36924
37383
  }
36925
37384
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_For_4_Template(rf, ctx) {
36926
37385
  if (rf & 1) {
36927
- \u0275\u0275elementStart(0, "option", 37);
37386
+ \u0275\u0275elementStart(0, "option", 21);
36928
37387
  \u0275\u0275text(1);
36929
37388
  \u0275\u0275elementEnd();
36930
37389
  }
@@ -36938,7 +37397,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_For_4_Templ
36938
37397
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template(rf, ctx) {
36939
37398
  if (rf & 1) {
36940
37399
  const _r17 = \u0275\u0275getCurrentView();
36941
- \u0275\u0275elementStart(0, "select", 36);
37400
+ \u0275\u0275elementStart(0, "select", 39);
36942
37401
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template_select_ngModelChange_0_listener($event) {
36943
37402
  \u0275\u0275restoreView(_r17);
36944
37403
  const ctx_r12 = \u0275\u0275nextContext();
@@ -36947,10 +37406,10 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template(rf
36947
37406
  const ctx_r0 = \u0275\u0275nextContext(3);
36948
37407
  return \u0275\u0275resetView(ctx_r0.updateUnitField($index_r15, field_r14.name, $event));
36949
37408
  });
36950
- \u0275\u0275elementStart(1, "option", 37);
37409
+ \u0275\u0275elementStart(1, "option", 21);
36951
37410
  \u0275\u0275text(2);
36952
37411
  \u0275\u0275elementEnd();
36953
- \u0275\u0275repeaterCreate(3, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_For_4_Template, 2, 2, "option", 37, _forTrack2);
37412
+ \u0275\u0275repeaterCreate(3, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_For_4_Template, 2, 2, "option", 21, _forTrack3);
36954
37413
  \u0275\u0275elementEnd();
36955
37414
  }
36956
37415
  if (rf & 2) {
@@ -36968,7 +37427,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template(rf
36968
37427
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template(rf, ctx) {
36969
37428
  if (rf & 1) {
36970
37429
  const _r19 = \u0275\u0275getCurrentView();
36971
- \u0275\u0275elementStart(0, "label", 31)(1, "input", 38);
37430
+ \u0275\u0275elementStart(0, "label", 34)(1, "input", 40);
36972
37431
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template_input_ngModelChange_1_listener($event) {
36973
37432
  \u0275\u0275restoreView(_r19);
36974
37433
  const ctx_r12 = \u0275\u0275nextContext();
@@ -36994,7 +37453,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template(rf
36994
37453
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_7_Template(rf, ctx) {
36995
37454
  if (rf & 1) {
36996
37455
  const _r20 = \u0275\u0275getCurrentView();
36997
- \u0275\u0275elementStart(0, "input", 39);
37456
+ \u0275\u0275elementStart(0, "input", 41);
36998
37457
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_7_Template_input_ngModelChange_0_listener($event) {
36999
37458
  \u0275\u0275restoreView(_r20);
37000
37459
  const ctx_r12 = \u0275\u0275nextContext();
@@ -37014,7 +37473,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_7_Template(rf
37014
37473
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_8_Template(rf, ctx) {
37015
37474
  if (rf & 1) {
37016
37475
  const _r21 = \u0275\u0275getCurrentView();
37017
- \u0275\u0275elementStart(0, "input", 40);
37476
+ \u0275\u0275elementStart(0, "input", 42);
37018
37477
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_8_Template_input_ngModelChange_0_listener($event) {
37019
37478
  \u0275\u0275restoreView(_r21);
37020
37479
  const ctx_r12 = \u0275\u0275nextContext();
@@ -37034,7 +37493,7 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_8_Template(rf
37034
37493
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template(rf, ctx) {
37035
37494
  if (rf & 1) {
37036
37495
  const _r22 = \u0275\u0275getCurrentView();
37037
- \u0275\u0275elementStart(0, "input", 41);
37496
+ \u0275\u0275elementStart(0, "input", 43);
37038
37497
  \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template_input_ngModelChange_0_listener($event) {
37039
37498
  \u0275\u0275restoreView(_r22);
37040
37499
  const ctx_r12 = \u0275\u0275nextContext();
@@ -37053,11 +37512,11 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template(rf
37053
37512
  }
37054
37513
  function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Template(rf, ctx) {
37055
37514
  if (rf & 1) {
37056
- \u0275\u0275elementStart(0, "div", 26)(1, "label", 27);
37515
+ \u0275\u0275elementStart(0, "div", 17)(1, "label", 18);
37057
37516
  \u0275\u0275text(2);
37058
- \u0275\u0275conditionalCreate(3, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Conditional_3_Template, 2, 0, "span", 28);
37517
+ \u0275\u0275conditionalCreate(3, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Conditional_3_Template, 2, 0, "span", 19);
37059
37518
  \u0275\u0275elementEnd();
37060
- \u0275\u0275conditionalCreate(4, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_4_Template, 2, 3, "textarea", 29)(5, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template, 5, 4, "select", 30)(6, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template, 4, 2, "label", 31)(7, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_7_Template, 1, 3, "input", 32)(8, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_8_Template, 1, 2, "input", 33)(9, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template, 1, 4, "input", 34);
37519
+ \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);
37061
37520
  \u0275\u0275elementEnd();
37062
37521
  }
37063
37522
  if (rf & 2) {
@@ -37074,11 +37533,11 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Template(rf, ctx)
37074
37533
  }
37075
37534
  function MJCheckoutWidgetComponent_Conditional_18_For_7_Template(rf, ctx) {
37076
37535
  if (rf & 1) {
37077
- \u0275\u0275elementStart(0, "div", 45)(1, "div", 46);
37536
+ \u0275\u0275elementStart(0, "div", 47)(1, "div", 48);
37078
37537
  \u0275\u0275text(2);
37079
37538
  \u0275\u0275elementEnd();
37080
- \u0275\u0275elementStart(3, "div", 24);
37081
- \u0275\u0275repeaterCreate(4, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Template, 10, 5, "div", 25, _forTrack1);
37539
+ \u0275\u0275elementStart(3, "div", 16);
37540
+ \u0275\u0275repeaterCreate(4, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Template, 10, 5, "div", 31, _forTrack2);
37082
37541
  \u0275\u0275elementEnd()();
37083
37542
  }
37084
37543
  if (rf & 2) {
@@ -37093,10 +37552,10 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_Template(rf, ctx) {
37093
37552
  function MJCheckoutWidgetComponent_Conditional_18_Template(rf, ctx) {
37094
37553
  if (rf & 1) {
37095
37554
  const _r11 = \u0275\u0275getCurrentView();
37096
- \u0275\u0275elementStart(0, "div", 42)(1, "h3", 23);
37555
+ \u0275\u0275elementStart(0, "div", 44)(1, "h3", 15);
37097
37556
  \u0275\u0275text(2);
37098
37557
  \u0275\u0275elementEnd();
37099
- \u0275\u0275elementStart(3, "button", 43);
37558
+ \u0275\u0275elementStart(3, "button", 45);
37100
37559
  \u0275\u0275listener("click", function MJCheckoutWidgetComponent_Conditional_18_Template_button_click_3_listener() {
37101
37560
  \u0275\u0275restoreView(_r11);
37102
37561
  const ctx_r0 = \u0275\u0275nextContext();
@@ -37104,8 +37563,8 @@ function MJCheckoutWidgetComponent_Conditional_18_Template(rf, ctx) {
37104
37563
  });
37105
37564
  \u0275\u0275text(4, "Copy Primary Info to All");
37106
37565
  \u0275\u0275elementEnd()();
37107
- \u0275\u0275elementStart(5, "div", 44);
37108
- \u0275\u0275repeaterCreate(6, MJCheckoutWidgetComponent_Conditional_18_For_7_Template, 6, 1, "div", 45, \u0275\u0275repeaterTrackByIndex);
37566
+ \u0275\u0275elementStart(5, "div", 46);
37567
+ \u0275\u0275repeaterCreate(6, MJCheckoutWidgetComponent_Conditional_18_For_7_Template, 6, 1, "div", 47, \u0275\u0275repeaterTrackByIndex);
37109
37568
  \u0275\u0275elementEnd();
37110
37569
  }
37111
37570
  if (rf & 2) {
@@ -37116,123 +37575,188 @@ function MJCheckoutWidgetComponent_Conditional_18_Template(rf, ctx) {
37116
37575
  \u0275\u0275repeater(ctx_r0.units());
37117
37576
  }
37118
37577
  }
37119
- function MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_3_Template(rf, ctx) {
37578
+ function MJCheckoutWidgetComponent_For_32_Template(rf, ctx) {
37120
37579
  if (rf & 1) {
37121
- \u0275\u0275elementStart(0, "span", 28);
37580
+ \u0275\u0275elementStart(0, "option", 21);
37581
+ \u0275\u0275text(1);
37582
+ \u0275\u0275elementEnd();
37583
+ }
37584
+ if (rf & 2) {
37585
+ const c_r24 = ctx.$implicit;
37586
+ \u0275\u0275property("ngValue", c_r24.Code);
37587
+ \u0275\u0275advance();
37588
+ \u0275\u0275textInterpolate(c_r24.Name);
37589
+ }
37590
+ }
37591
+ function MJCheckoutWidgetComponent_Conditional_33_For_9_Template(rf, ctx) {
37592
+ if (rf & 1) {
37593
+ \u0275\u0275elementStart(0, "option", 21);
37594
+ \u0275\u0275text(1);
37595
+ \u0275\u0275elementEnd();
37596
+ }
37597
+ if (rf & 2) {
37598
+ const r_r26 = ctx.$implicit;
37599
+ \u0275\u0275property("ngValue", r_r26.Code);
37600
+ \u0275\u0275advance();
37601
+ \u0275\u0275textInterpolate(r_r26.Name);
37602
+ }
37603
+ }
37604
+ function MJCheckoutWidgetComponent_Conditional_33_Template(rf, ctx) {
37605
+ if (rf & 1) {
37606
+ const _r25 = \u0275\u0275getCurrentView();
37607
+ \u0275\u0275elementStart(0, "div", 17)(1, "label", 18);
37608
+ \u0275\u0275text(2, " State / Province ");
37609
+ \u0275\u0275elementStart(3, "span", 19);
37610
+ \u0275\u0275text(4, "*");
37611
+ \u0275\u0275elementEnd()();
37612
+ \u0275\u0275elementStart(5, "select", 49);
37613
+ \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_33_Template_select_ngModelChange_5_listener($event) {
37614
+ \u0275\u0275restoreView(_r25);
37615
+ const ctx_r0 = \u0275\u0275nextContext();
37616
+ return \u0275\u0275resetView(ctx_r0.onBillingRegionChange($event));
37617
+ });
37618
+ \u0275\u0275elementStart(6, "option", 21);
37619
+ \u0275\u0275text(7, "Select state or province");
37620
+ \u0275\u0275elementEnd();
37621
+ \u0275\u0275repeaterCreate(8, MJCheckoutWidgetComponent_Conditional_33_For_9_Template, 2, 2, "option", 21, _forTrack0);
37622
+ \u0275\u0275elementEnd()();
37623
+ }
37624
+ if (rf & 2) {
37625
+ const ctx_r0 = \u0275\u0275nextContext();
37626
+ \u0275\u0275advance();
37627
+ \u0275\u0275attribute("for", ctx_r0.widgetInstanceId + "-billing-region");
37628
+ \u0275\u0275advance(4);
37629
+ \u0275\u0275property("id", ctx_r0.widgetInstanceId + "-billing-region")("ngModel", ctx_r0.billingRegion());
37630
+ \u0275\u0275advance();
37631
+ \u0275\u0275property("ngValue", "");
37632
+ \u0275\u0275advance(2);
37633
+ \u0275\u0275repeater(ctx_r0.billingRegions());
37634
+ }
37635
+ }
37636
+ function MJCheckoutWidgetComponent_Conditional_37_Template(rf, ctx) {
37637
+ if (rf & 1) {
37638
+ \u0275\u0275elementStart(0, "span", 19);
37122
37639
  \u0275\u0275text(1, "*");
37123
37640
  \u0275\u0275elementEnd();
37124
37641
  }
37125
37642
  }
37126
- function MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_4_For_4_Template(rf, ctx) {
37643
+ function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_3_Template(rf, ctx) {
37127
37644
  if (rf & 1) {
37128
- \u0275\u0275elementStart(0, "option", 37);
37645
+ \u0275\u0275elementStart(0, "span", 19);
37646
+ \u0275\u0275text(1, "*");
37647
+ \u0275\u0275elementEnd();
37648
+ }
37649
+ }
37650
+ function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_For_4_Template(rf, ctx) {
37651
+ if (rf & 1) {
37652
+ \u0275\u0275elementStart(0, "option", 21);
37129
37653
  \u0275\u0275text(1);
37130
37654
  \u0275\u0275elementEnd();
37131
37655
  }
37132
37656
  if (rf & 2) {
37133
- const opt_r26 = ctx.$implicit;
37657
+ const opt_r29 = ctx.$implicit;
37134
37658
  const ctx_r0 = \u0275\u0275nextContext(4);
37135
- \u0275\u0275property("ngValue", ctx_r0.optionValue(opt_r26));
37659
+ \u0275\u0275property("ngValue", ctx_r0.optionValue(opt_r29));
37136
37660
  \u0275\u0275advance();
37137
- \u0275\u0275textInterpolate(ctx_r0.optionLabel(opt_r26));
37661
+ \u0275\u0275textInterpolate(ctx_r0.optionLabel(opt_r29));
37138
37662
  }
37139
37663
  }
37140
- function MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_4_Conditional_5_Template(rf, ctx) {
37664
+ function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Conditional_5_Template(rf, ctx) {
37141
37665
  if (rf & 1) {
37142
- const _r27 = \u0275\u0275getCurrentView();
37143
- \u0275\u0275elementStart(0, "input", 51);
37144
- \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_4_Conditional_5_Template_input_ngModelChange_0_listener($event) {
37145
- \u0275\u0275restoreView(_r27);
37146
- const question_r25 = \u0275\u0275nextContext(2).$implicit;
37666
+ const _r30 = \u0275\u0275getCurrentView();
37667
+ \u0275\u0275elementStart(0, "input", 54);
37668
+ \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Conditional_5_Template_input_ngModelChange_0_listener($event) {
37669
+ \u0275\u0275restoreView(_r30);
37670
+ const question_r28 = \u0275\u0275nextContext(2).$implicit;
37147
37671
  const ctx_r0 = \u0275\u0275nextContext(2);
37148
- return \u0275\u0275resetView(ctx_r0.updateAnswer(question_r25.key, { OtherText: $event }));
37672
+ return \u0275\u0275resetView(ctx_r0.updateAnswer(question_r28.key, { OtherText: $event }));
37149
37673
  });
37150
37674
  \u0275\u0275elementEnd();
37151
37675
  }
37152
37676
  if (rf & 2) {
37153
- const question_r25 = \u0275\u0275nextContext(2).$implicit;
37677
+ const question_r28 = \u0275\u0275nextContext(2).$implicit;
37154
37678
  const ctx_r0 = \u0275\u0275nextContext(2);
37155
- \u0275\u0275property("ngModel", ctx_r0.answerFor(question_r25.key).OtherText ?? "");
37156
- \u0275\u0275attribute("aria-label", question_r25.label + " (please specify)")("maxlength", ctx_r0.answerMaxLength(question_r25));
37679
+ \u0275\u0275property("ngModel", ctx_r0.answerFor(question_r28.key).OtherText ?? "");
37680
+ \u0275\u0275attribute("aria-label", question_r28.label + " (please specify)")("maxlength", ctx_r0.answerMaxLength(question_r28));
37157
37681
  }
37158
37682
  }
37159
- function MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_4_Template(rf, ctx) {
37683
+ function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Template(rf, ctx) {
37160
37684
  if (rf & 1) {
37161
- const _r24 = \u0275\u0275getCurrentView();
37162
- \u0275\u0275elementStart(0, "select", 49);
37163
- \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_4_Template_select_ngModelChange_0_listener($event) {
37164
- \u0275\u0275restoreView(_r24);
37165
- const question_r25 = \u0275\u0275nextContext().$implicit;
37685
+ const _r27 = \u0275\u0275getCurrentView();
37686
+ \u0275\u0275elementStart(0, "select", 52);
37687
+ \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Template_select_ngModelChange_0_listener($event) {
37688
+ \u0275\u0275restoreView(_r27);
37689
+ const question_r28 = \u0275\u0275nextContext().$implicit;
37166
37690
  const ctx_r0 = \u0275\u0275nextContext(2);
37167
- return \u0275\u0275resetView(ctx_r0.updateAnswer(question_r25.key, { Value: $event }));
37691
+ return \u0275\u0275resetView(ctx_r0.updateAnswer(question_r28.key, { Value: $event }));
37168
37692
  });
37169
- \u0275\u0275elementStart(1, "option", 37);
37693
+ \u0275\u0275elementStart(1, "option", 21);
37170
37694
  \u0275\u0275text(2, "Select an answer");
37171
37695
  \u0275\u0275elementEnd();
37172
- \u0275\u0275repeaterCreate(3, MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_4_For_4_Template, 2, 2, "option", 37, _forTrack3, true);
37696
+ \u0275\u0275repeaterCreate(3, MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_For_4_Template, 2, 2, "option", 21, _forTrack4, true);
37173
37697
  \u0275\u0275elementEnd();
37174
- \u0275\u0275conditionalCreate(5, MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_4_Conditional_5_Template, 1, 3, "input", 50);
37698
+ \u0275\u0275conditionalCreate(5, MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Conditional_5_Template, 1, 3, "input", 53);
37175
37699
  }
37176
37700
  if (rf & 2) {
37177
- const question_r25 = \u0275\u0275nextContext().$implicit;
37701
+ const question_r28 = \u0275\u0275nextContext().$implicit;
37178
37702
  const ctx_r0 = \u0275\u0275nextContext(2);
37179
- \u0275\u0275property("id", ctx_r0.widgetInstanceId + "-q-" + question_r25.key)("ngModel", ctx_r0.answerFor(question_r25.key).Value ?? "")("required", question_r25.required || false);
37703
+ \u0275\u0275property("id", ctx_r0.widgetInstanceId + "-q-" + question_r28.key)("ngModel", ctx_r0.answerFor(question_r28.key).Value ?? "")("required", question_r28.required || false);
37180
37704
  \u0275\u0275advance();
37181
37705
  \u0275\u0275property("ngValue", "");
37182
37706
  \u0275\u0275advance(2);
37183
- \u0275\u0275repeater(question_r25.options);
37707
+ \u0275\u0275repeater(question_r28.options);
37184
37708
  \u0275\u0275advance(2);
37185
- \u0275\u0275conditional(ctx_r0.isOtherChosen(question_r25) ? 5 : -1);
37709
+ \u0275\u0275conditional(ctx_r0.isOtherChosen(question_r28) ? 5 : -1);
37186
37710
  }
37187
37711
  }
37188
- function MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_5_Template(rf, ctx) {
37712
+ function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_5_Template(rf, ctx) {
37189
37713
  if (rf & 1) {
37190
- const _r28 = \u0275\u0275getCurrentView();
37191
- \u0275\u0275elementStart(0, "input", 52);
37192
- \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_5_Template_input_ngModelChange_0_listener($event) {
37193
- \u0275\u0275restoreView(_r28);
37194
- const question_r25 = \u0275\u0275nextContext().$implicit;
37714
+ const _r31 = \u0275\u0275getCurrentView();
37715
+ \u0275\u0275elementStart(0, "input", 55);
37716
+ \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_5_Template_input_ngModelChange_0_listener($event) {
37717
+ \u0275\u0275restoreView(_r31);
37718
+ const question_r28 = \u0275\u0275nextContext().$implicit;
37195
37719
  const ctx_r0 = \u0275\u0275nextContext(2);
37196
- return \u0275\u0275resetView(ctx_r0.updateAnswer(question_r25.key, { Value: $event }));
37720
+ return \u0275\u0275resetView(ctx_r0.updateAnswer(question_r28.key, { Value: $event }));
37197
37721
  });
37198
37722
  \u0275\u0275elementEnd();
37199
37723
  }
37200
37724
  if (rf & 2) {
37201
- const question_r25 = \u0275\u0275nextContext().$implicit;
37725
+ const question_r28 = \u0275\u0275nextContext().$implicit;
37202
37726
  const ctx_r0 = \u0275\u0275nextContext(2);
37203
- \u0275\u0275property("id", ctx_r0.widgetInstanceId + "-q-" + question_r25.key)("ngModel", ctx_r0.answerFor(question_r25.key).Value ?? "")("required", question_r25.required || false);
37204
- \u0275\u0275attribute("maxlength", ctx_r0.answerMaxLength(question_r25));
37727
+ \u0275\u0275property("id", ctx_r0.widgetInstanceId + "-q-" + question_r28.key)("ngModel", ctx_r0.answerFor(question_r28.key).Value ?? "")("required", question_r28.required || false);
37728
+ \u0275\u0275attribute("maxlength", ctx_r0.answerMaxLength(question_r28));
37205
37729
  }
37206
37730
  }
37207
- function MJCheckoutWidgetComponent_Conditional_19_For_5_Template(rf, ctx) {
37731
+ function MJCheckoutWidgetComponent_Conditional_39_For_5_Template(rf, ctx) {
37208
37732
  if (rf & 1) {
37209
- \u0275\u0275elementStart(0, "div", 47)(1, "label", 27);
37733
+ \u0275\u0275elementStart(0, "div", 50)(1, "label", 18);
37210
37734
  \u0275\u0275text(2);
37211
- \u0275\u0275conditionalCreate(3, MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_3_Template, 2, 0, "span", 28);
37735
+ \u0275\u0275conditionalCreate(3, MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_3_Template, 2, 0, "span", 19);
37212
37736
  \u0275\u0275elementEnd();
37213
- \u0275\u0275conditionalCreate(4, MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_4_Template, 6, 5)(5, MJCheckoutWidgetComponent_Conditional_19_For_5_Conditional_5_Template, 1, 4, "input", 48);
37737
+ \u0275\u0275conditionalCreate(4, MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Template, 6, 5)(5, MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_5_Template, 1, 4, "input", 51);
37214
37738
  \u0275\u0275elementEnd();
37215
37739
  }
37216
37740
  if (rf & 2) {
37217
- const question_r25 = ctx.$implicit;
37741
+ const question_r28 = ctx.$implicit;
37218
37742
  const ctx_r0 = \u0275\u0275nextContext(2);
37219
37743
  \u0275\u0275advance();
37220
- \u0275\u0275attribute("for", ctx_r0.widgetInstanceId + "-q-" + question_r25.key);
37744
+ \u0275\u0275attribute("for", ctx_r0.widgetInstanceId + "-q-" + question_r28.key);
37221
37745
  \u0275\u0275advance();
37222
- \u0275\u0275textInterpolate1(" ", question_r25.label, " ");
37746
+ \u0275\u0275textInterpolate1(" ", question_r28.label, " ");
37223
37747
  \u0275\u0275advance();
37224
- \u0275\u0275conditional(question_r25.required ? 3 : -1);
37748
+ \u0275\u0275conditional(question_r28.required ? 3 : -1);
37225
37749
  \u0275\u0275advance();
37226
- \u0275\u0275conditional(question_r25.type === "select" ? 4 : 5);
37750
+ \u0275\u0275conditional(question_r28.type === "select" ? 4 : 5);
37227
37751
  }
37228
37752
  }
37229
- function MJCheckoutWidgetComponent_Conditional_19_Template(rf, ctx) {
37753
+ function MJCheckoutWidgetComponent_Conditional_39_Template(rf, ctx) {
37230
37754
  if (rf & 1) {
37231
- \u0275\u0275elementStart(0, "section", 14)(1, "h3", 23);
37755
+ \u0275\u0275elementStart(0, "section", 14)(1, "h3", 15);
37232
37756
  \u0275\u0275text(2, "A few questions");
37233
37757
  \u0275\u0275elementEnd();
37234
- \u0275\u0275elementStart(3, "div", 24);
37235
- \u0275\u0275repeaterCreate(4, MJCheckoutWidgetComponent_Conditional_19_For_5_Template, 6, 4, "div", 47, _forTrack0);
37758
+ \u0275\u0275elementStart(3, "div", 16);
37759
+ \u0275\u0275repeaterCreate(4, MJCheckoutWidgetComponent_Conditional_39_For_5_Template, 6, 4, "div", 50, _forTrack1);
37236
37760
  \u0275\u0275elementEnd()();
37237
37761
  }
37238
37762
  if (rf & 2) {
@@ -37241,22 +37765,22 @@ function MJCheckoutWidgetComponent_Conditional_19_Template(rf, ctx) {
37241
37765
  \u0275\u0275repeater(ctx_r0.questions());
37242
37766
  }
37243
37767
  }
37244
- function MJCheckoutWidgetComponent_For_21_Conditional_6_Template(rf, ctx) {
37768
+ function MJCheckoutWidgetComponent_For_41_Conditional_6_Template(rf, ctx) {
37245
37769
  if (rf & 1) {
37246
- \u0275\u0275elementStart(0, "span", 28);
37770
+ \u0275\u0275elementStart(0, "span", 19);
37247
37771
  \u0275\u0275text(1, "*");
37248
37772
  \u0275\u0275elementEnd();
37249
37773
  }
37250
37774
  }
37251
- function MJCheckoutWidgetComponent_For_21_For_9_Template(rf, ctx) {
37775
+ function MJCheckoutWidgetComponent_For_41_For_9_Template(rf, ctx) {
37252
37776
  if (rf & 1) {
37253
- const _r29 = \u0275\u0275getCurrentView();
37254
- \u0275\u0275elementStart(0, "label", 31)(1, "input", 57);
37255
- \u0275\u0275listener("change", function MJCheckoutWidgetComponent_For_21_For_9_Template_input_change_1_listener() {
37256
- const opt_r30 = \u0275\u0275restoreView(_r29).$implicit;
37257
- const group_r31 = \u0275\u0275nextContext().$implicit;
37777
+ const _r32 = \u0275\u0275getCurrentView();
37778
+ \u0275\u0275elementStart(0, "label", 34)(1, "input", 60);
37779
+ \u0275\u0275listener("change", function MJCheckoutWidgetComponent_For_41_For_9_Template_input_change_1_listener() {
37780
+ const opt_r33 = \u0275\u0275restoreView(_r32).$implicit;
37781
+ const group_r34 = \u0275\u0275nextContext().$implicit;
37258
37782
  const ctx_r0 = \u0275\u0275nextContext();
37259
- return \u0275\u0275resetView(ctx_r0.toggleChoice(group_r31, ctx_r0.choiceValue(opt_r30)));
37783
+ return \u0275\u0275resetView(ctx_r0.toggleChoice(group_r34, ctx_r0.choiceValue(opt_r33)));
37260
37784
  });
37261
37785
  \u0275\u0275elementEnd();
37262
37786
  \u0275\u0275elementStart(2, "span");
@@ -37264,84 +37788,197 @@ function MJCheckoutWidgetComponent_For_21_For_9_Template(rf, ctx) {
37264
37788
  \u0275\u0275elementEnd()();
37265
37789
  }
37266
37790
  if (rf & 2) {
37267
- const opt_r30 = ctx.$implicit;
37268
- const group_r31 = \u0275\u0275nextContext().$implicit;
37791
+ const opt_r33 = ctx.$implicit;
37792
+ const group_r34 = \u0275\u0275nextContext().$implicit;
37269
37793
  const ctx_r0 = \u0275\u0275nextContext();
37270
- \u0275\u0275classProp("is-disabled", ctx_r0.isGroupFull(group_r31) && !ctx_r0.isChosen(group_r31.key, ctx_r0.choiceValue(opt_r30)));
37794
+ \u0275\u0275classProp("is-disabled", ctx_r0.isGroupFull(group_r34) && !ctx_r0.isChosen(group_r34.key, ctx_r0.choiceValue(opt_r33)));
37271
37795
  \u0275\u0275advance();
37272
- \u0275\u0275property("checked", ctx_r0.isChosen(group_r31.key, ctx_r0.choiceValue(opt_r30)))("disabled", ctx_r0.isGroupFull(group_r31) && !ctx_r0.isChosen(group_r31.key, ctx_r0.choiceValue(opt_r30)));
37796
+ \u0275\u0275property("checked", ctx_r0.isChosen(group_r34.key, ctx_r0.choiceValue(opt_r33)))("disabled", ctx_r0.isGroupFull(group_r34) && !ctx_r0.isChosen(group_r34.key, ctx_r0.choiceValue(opt_r33)));
37273
37797
  \u0275\u0275advance(2);
37274
- \u0275\u0275textInterpolate(ctx_r0.choiceLabel(opt_r30));
37798
+ \u0275\u0275textInterpolate(ctx_r0.choiceLabel(opt_r33));
37275
37799
  }
37276
37800
  }
37277
- function MJCheckoutWidgetComponent_For_21_Template(rf, ctx) {
37801
+ function MJCheckoutWidgetComponent_For_41_Template(rf, ctx) {
37278
37802
  if (rf & 1) {
37279
- \u0275\u0275elementStart(0, "section", 14)(1, "fieldset", 53)(2, "legend", 23);
37803
+ \u0275\u0275elementStart(0, "section", 14)(1, "fieldset", 56)(2, "legend", 15);
37280
37804
  \u0275\u0275text(3);
37281
- \u0275\u0275elementStart(4, "span", 54);
37805
+ \u0275\u0275elementStart(4, "span", 57);
37282
37806
  \u0275\u0275text(5);
37283
37807
  \u0275\u0275elementEnd();
37284
- \u0275\u0275conditionalCreate(6, MJCheckoutWidgetComponent_For_21_Conditional_6_Template, 2, 0, "span", 28);
37808
+ \u0275\u0275conditionalCreate(6, MJCheckoutWidgetComponent_For_41_Conditional_6_Template, 2, 0, "span", 19);
37285
37809
  \u0275\u0275elementEnd();
37286
- \u0275\u0275elementStart(7, "div", 55);
37287
- \u0275\u0275repeaterCreate(8, MJCheckoutWidgetComponent_For_21_For_9_Template, 4, 5, "label", 56, _forTrack4, true);
37810
+ \u0275\u0275elementStart(7, "div", 58);
37811
+ \u0275\u0275repeaterCreate(8, MJCheckoutWidgetComponent_For_41_For_9_Template, 4, 5, "label", 59, _forTrack5, true);
37288
37812
  \u0275\u0275elementEnd()()();
37289
37813
  }
37290
37814
  if (rf & 2) {
37291
- const group_r31 = ctx.$implicit;
37815
+ const group_r34 = ctx.$implicit;
37292
37816
  const ctx_r0 = \u0275\u0275nextContext();
37293
37817
  \u0275\u0275advance(3);
37294
- \u0275\u0275textInterpolate1(" ", group_r31.label, " ");
37818
+ \u0275\u0275textInterpolate1(" ", group_r34.label, " ");
37295
37819
  \u0275\u0275advance(2);
37296
- \u0275\u0275textInterpolate1("(choose ", ctx_r0.choiceCount(group_r31), ")");
37820
+ \u0275\u0275textInterpolate1("(choose ", ctx_r0.choiceCount(group_r34), ")");
37297
37821
  \u0275\u0275advance();
37298
- \u0275\u0275conditional(group_r31.min > 0 ? 6 : -1);
37822
+ \u0275\u0275conditional(group_r34.min > 0 ? 6 : -1);
37299
37823
  \u0275\u0275advance(2);
37300
- \u0275\u0275repeater(group_r31.options);
37824
+ \u0275\u0275repeater(group_r34.options);
37301
37825
  }
37302
37826
  }
37303
- function MJCheckoutWidgetComponent_Conditional_22_Template(rf, ctx) {
37827
+ function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_7_Template(rf, ctx) {
37304
37828
  if (rf & 1) {
37305
- \u0275\u0275elementStart(0, "section", 58)(1, "h3", 23);
37829
+ \u0275\u0275elementStart(0, "p", 75);
37830
+ \u0275\u0275text(1);
37831
+ \u0275\u0275elementEnd();
37832
+ }
37833
+ if (rf & 2) {
37834
+ const ctx_r0 = \u0275\u0275nextContext(3);
37835
+ \u0275\u0275advance();
37836
+ \u0275\u0275textInterpolate(ctx_r0.promotionError);
37837
+ }
37838
+ }
37839
+ function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_8_Template(rf, ctx) {
37840
+ if (rf & 1) {
37841
+ \u0275\u0275elementStart(0, "p", 76);
37842
+ \u0275\u0275text(1);
37843
+ \u0275\u0275elementEnd();
37844
+ }
37845
+ if (rf & 2) {
37846
+ const promo_r36 = ctx;
37847
+ const ctx_r0 = \u0275\u0275nextContext(3);
37848
+ \u0275\u0275advance();
37849
+ \u0275\u0275textInterpolate3(" ", promo_r36.code, " applied: \u2212", ctx_r0.currencySymbol(), "", promo_r36.discount.toFixed(2), " ");
37850
+ }
37851
+ }
37852
+ function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template(rf, ctx) {
37853
+ if (rf & 1) {
37854
+ const _r35 = \u0275\u0275getCurrentView();
37855
+ \u0275\u0275elementStart(0, "div", 66)(1, "label", 71);
37856
+ \u0275\u0275text(2, "Promo code");
37857
+ \u0275\u0275elementEnd();
37858
+ \u0275\u0275elementStart(3, "div", 72)(4, "input", 73);
37859
+ \u0275\u0275listener("input", function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template_input_input_4_listener($event) {
37860
+ \u0275\u0275restoreView(_r35);
37861
+ const ctx_r0 = \u0275\u0275nextContext(2);
37862
+ return \u0275\u0275resetView(ctx_r0.promotionCodeInput.set($event.target.value));
37863
+ })("keydown.enter", function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template_input_keydown_enter_4_listener() {
37864
+ \u0275\u0275restoreView(_r35);
37865
+ const ctx_r0 = \u0275\u0275nextContext(2);
37866
+ return \u0275\u0275resetView(ctx_r0.applyPromotionCode());
37867
+ });
37868
+ \u0275\u0275elementEnd();
37869
+ \u0275\u0275elementStart(5, "button", 74);
37870
+ \u0275\u0275listener("click", function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template_button_click_5_listener() {
37871
+ \u0275\u0275restoreView(_r35);
37872
+ const ctx_r0 = \u0275\u0275nextContext(2);
37873
+ return \u0275\u0275resetView(ctx_r0.applyPromotionCode());
37874
+ });
37875
+ \u0275\u0275text(6, "Apply");
37876
+ \u0275\u0275elementEnd()();
37877
+ \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);
37878
+ \u0275\u0275elementEnd();
37879
+ }
37880
+ if (rf & 2) {
37881
+ let tmp_7_0;
37882
+ const ctx_r0 = \u0275\u0275nextContext(2);
37883
+ \u0275\u0275advance();
37884
+ \u0275\u0275property("for", \u0275\u0275interpolate1("", ctx_r0.widgetInstanceId, "-promo"));
37885
+ \u0275\u0275advance(3);
37886
+ \u0275\u0275property("id", \u0275\u0275interpolate1("", ctx_r0.widgetInstanceId, "-promo"))("value", ctx_r0.promotionCodeInput())("disabled", ctx_r0.isProcessing);
37887
+ \u0275\u0275advance();
37888
+ \u0275\u0275property("disabled", ctx_r0.isProcessing || !ctx_r0.promotionCodeInput().trim());
37889
+ \u0275\u0275advance(2);
37890
+ \u0275\u0275conditional(ctx_r0.promotionError ? 7 : (tmp_7_0 = ctx_r0.activePromotion()) ? 8 : -1, tmp_7_0);
37891
+ }
37892
+ }
37893
+ function MJCheckoutWidgetComponent_Conditional_42_Conditional_11_Template(rf, ctx) {
37894
+ if (rf & 1) {
37895
+ const _r37 = \u0275\u0275getCurrentView();
37896
+ \u0275\u0275elementStart(0, "label", 67)(1, "input", 60);
37897
+ \u0275\u0275listener("change", function MJCheckoutWidgetComponent_Conditional_42_Conditional_11_Template_input_change_1_listener($event) {
37898
+ \u0275\u0275restoreView(_r37);
37899
+ const ctx_r0 = \u0275\u0275nextContext(2);
37900
+ return \u0275\u0275resetView(ctx_r0.autoRenewConsent.set($event.target.checked));
37901
+ });
37902
+ \u0275\u0275elementEnd();
37903
+ \u0275\u0275elementStart(2, "span");
37904
+ \u0275\u0275text(3);
37905
+ \u0275\u0275elementEnd()();
37906
+ }
37907
+ if (rf & 2) {
37908
+ const ctx_r0 = \u0275\u0275nextContext(2);
37909
+ \u0275\u0275advance();
37910
+ \u0275\u0275property("checked", ctx_r0.autoRenewConsent())("disabled", ctx_r0.isProcessing);
37911
+ \u0275\u0275advance(2);
37912
+ \u0275\u0275textInterpolate(ctx);
37913
+ }
37914
+ }
37915
+ function MJCheckoutWidgetComponent_Conditional_42_Conditional_12_Template(rf, ctx) {
37916
+ if (rf & 1) {
37917
+ \u0275\u0275elementStart(0, "div", 68)(1, "span", 69);
37918
+ \u0275\u0275text(2, "Sales Tax");
37919
+ \u0275\u0275elementEnd();
37920
+ \u0275\u0275elementStart(3, "span", 70);
37921
+ \u0275\u0275text(4);
37922
+ \u0275\u0275elementEnd()();
37923
+ }
37924
+ if (rf & 2) {
37925
+ const ctx_r0 = \u0275\u0275nextContext(2);
37926
+ \u0275\u0275advance(4);
37927
+ \u0275\u0275textInterpolate2("", ctx_r0.currencySymbol(), "", (ctx_r0.quotedTax ?? 0).toFixed(2));
37928
+ }
37929
+ }
37930
+ function MJCheckoutWidgetComponent_Conditional_42_Template(rf, ctx) {
37931
+ if (rf & 1) {
37932
+ \u0275\u0275elementStart(0, "section", 61)(1, "h3", 15);
37306
37933
  \u0275\u0275text(2, "Payment");
37307
37934
  \u0275\u0275elementEnd();
37308
- \u0275\u0275elementStart(3, "div", 59);
37309
- \u0275\u0275element(4, "div", 60);
37310
- \u0275\u0275elementStart(5, "div", 61)(6, "span", 62);
37935
+ \u0275\u0275elementStart(3, "div", 62);
37936
+ \u0275\u0275element(4, "div", 63);
37937
+ \u0275\u0275elementStart(5, "div", 64)(6, "span", 65);
37311
37938
  \u0275\u0275text(7, "\u{1F512}");
37312
37939
  \u0275\u0275elementEnd();
37313
37940
  \u0275\u0275elementStart(8, "span");
37314
37941
  \u0275\u0275text(9, "Secured by Stripe \u2022 PCI-DSS Level 1 Certified \u2022 End-to-end Encrypted");
37315
37942
  \u0275\u0275elementEnd()()()();
37316
- \u0275\u0275elementStart(10, "div", 63)(11, "span", 64);
37317
- \u0275\u0275text(12, "Total Due");
37943
+ \u0275\u0275conditionalCreate(10, MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template, 9, 8, "div", 66);
37944
+ \u0275\u0275conditionalCreate(11, MJCheckoutWidgetComponent_Conditional_42_Conditional_11_Template, 4, 3, "label", 67);
37945
+ \u0275\u0275conditionalCreate(12, MJCheckoutWidgetComponent_Conditional_42_Conditional_12_Template, 5, 2, "div", 68);
37946
+ \u0275\u0275elementStart(13, "div", 68)(14, "span", 69);
37947
+ \u0275\u0275text(15, "Total Due");
37318
37948
  \u0275\u0275elementEnd();
37319
- \u0275\u0275elementStart(13, "span", 65);
37320
- \u0275\u0275text(14);
37949
+ \u0275\u0275elementStart(16, "span", 70);
37950
+ \u0275\u0275text(17);
37321
37951
  \u0275\u0275elementEnd()();
37322
37952
  }
37323
37953
  if (rf & 2) {
37954
+ let tmp_2_0;
37324
37955
  const ctx_r0 = \u0275\u0275nextContext();
37325
- \u0275\u0275advance(14);
37956
+ \u0275\u0275advance(10);
37957
+ \u0275\u0275conditional(ctx_r0.allowsPromotionCodes() ? 10 : -1);
37958
+ \u0275\u0275advance();
37959
+ \u0275\u0275conditional((tmp_2_0 = ctx_r0.autoRenewConsentText()) ? 11 : -1, tmp_2_0);
37960
+ \u0275\u0275advance();
37961
+ \u0275\u0275conditional(ctx_r0.quotedTax !== null ? 12 : -1);
37962
+ \u0275\u0275advance(5);
37326
37963
  \u0275\u0275textInterpolate2("", ctx_r0.currencySymbol(), "", ctx_r0.totalGross().toFixed(2));
37327
37964
  }
37328
37965
  }
37329
- function MJCheckoutWidgetComponent_Conditional_25_Template(rf, ctx) {
37966
+ function MJCheckoutWidgetComponent_Conditional_45_Template(rf, ctx) {
37330
37967
  if (rf & 1) {
37331
- \u0275\u0275element(0, "span", 66);
37968
+ \u0275\u0275element(0, "span", 77);
37332
37969
  \u0275\u0275elementStart(1, "span");
37333
37970
  \u0275\u0275text(2, "Processing...");
37334
37971
  \u0275\u0275elementEnd();
37335
37972
  }
37336
37973
  }
37337
- function MJCheckoutWidgetComponent_Conditional_26_Template(rf, ctx) {
37974
+ function MJCheckoutWidgetComponent_Conditional_46_Template(rf, ctx) {
37338
37975
  if (rf & 1) {
37339
37976
  \u0275\u0275elementStart(0, "span");
37340
37977
  \u0275\u0275text(1, "Complete Free Registration");
37341
37978
  \u0275\u0275elementEnd();
37342
37979
  }
37343
37980
  }
37344
- function MJCheckoutWidgetComponent_Conditional_27_Template(rf, ctx) {
37981
+ function MJCheckoutWidgetComponent_Conditional_47_Template(rf, ctx) {
37345
37982
  if (rf & 1) {
37346
37983
  \u0275\u0275elementStart(0, "span");
37347
37984
  \u0275\u0275text(1);
@@ -37386,8 +38023,52 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
37386
38023
  stripePaymentMethodId = null;
37387
38024
  /** An e-mail the embedding host already knows. Fills the field only while it is empty. */
37388
38025
  prefillEmail = null;
38026
+ _appliedPromotion = signal(null, ...ngDevMode ? [{ debugName: "_appliedPromotion" }] : []);
38027
+ /** The code the server last priced for this checkout, or null. Set by the host after an Apply. */
38028
+ set appliedPromotion(val) {
38029
+ this._appliedPromotion.set(val);
38030
+ }
38031
+ get appliedPromotion() {
38032
+ return this._appliedPromotion();
38033
+ }
38034
+ /** Why the last code could not be used, in the server's words. Set by the host. */
38035
+ promotionError = null;
38036
+ _serverPricedTotal = signal(null, ...ngDevMode ? [{ debugName: "_serverPricedTotal" }] : []);
38037
+ /**
38038
+ * The total the server last priced this checkout at, or null. Set by the host after a draft, so a
38039
+ * discount the widget cannot see (a verified member's) shows in the total and the Pay button.
38040
+ */
38041
+ set serverPricedTotal(val) {
38042
+ this._serverPricedTotal.set(val);
38043
+ }
38044
+ get serverPricedTotal() {
38045
+ return this._serverPricedTotal();
38046
+ }
38047
+ /**
38048
+ * The server's priced total and tax for the current details, once the host has drafted them.
38049
+ * Tax depends on the billing location, so the client cannot compute it; while no quote is set
38050
+ * the widget shows the pre-tax subtotal.
38051
+ */
38052
+ _quotedTotal = signal(null, ...ngDevMode ? [{ debugName: "_quotedTotal" }] : []);
38053
+ _quotedTax = signal(null, ...ngDevMode ? [{ debugName: "_quotedTax" }] : []);
38054
+ set quotedTotal(val) {
38055
+ this._quotedTotal.set(val);
38056
+ }
38057
+ get quotedTotal() {
38058
+ return this._quotedTotal();
38059
+ }
38060
+ set quotedTax(val) {
38061
+ this._quotedTax.set(val);
38062
+ }
38063
+ get quotedTax() {
38064
+ return this._quotedTax();
38065
+ }
37389
38066
  submitted = new EventEmitter();
38067
+ /** The buyer pressed Apply: the current form, with the code to price. The host asks the server. */
38068
+ promotionCodeApplied = new EventEmitter();
37390
38069
  cancelled = new EventEmitter();
38070
+ /** Emitted when an input that changes the price (quantity, location) changes, so the host drops its quote. */
38071
+ quoteInvalidated = new EventEmitter();
37391
38072
  // Internal error message for client-side validation failures
37392
38073
  internalErrorMessage = signal(null, ...ngDevMode ? [{ debugName: "internalErrorMessage" }] : []);
37393
38074
  displayErrorMessage = computed(() => this._errorMessage() || this.internalErrorMessage(), ...ngDevMode ? [{ debugName: "displayErrorMessage" }] : []);
@@ -37449,6 +38130,23 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
37449
38130
  company = signal("", ...ngDevMode ? [{ debugName: "company" }] : []);
37450
38131
  title = signal("", ...ngDevMode ? [{ debugName: "title" }] : []);
37451
38132
  quantity = signal(1, ...ngDevMode ? [{ debugName: "quantity" }] : []);
38133
+ /** The buyer's tick on the automatic-renewal agreement, when the widget asks for one. */
38134
+ autoRenewConsent = signal(false, ...ngDevMode ? [{ debugName: "autoRenewConsent" }] : []);
38135
+ /** What the buyer has typed in the promotion-code field. */
38136
+ promotionCodeInput = signal("", ...ngDevMode ? [{ debugName: "promotionCodeInput" }] : []);
38137
+ // Billing location — required before payment so the sale can be placed in a tax jurisdiction
38138
+ billingCountries = BILLING_COUNTRIES;
38139
+ billingCountry = signal("", ...ngDevMode ? [{ debugName: "billingCountry" }] : []);
38140
+ billingRegion = signal("", ...ngDevMode ? [{ debugName: "billingRegion" }] : []);
38141
+ billingPostalCode = signal("", ...ngDevMode ? [{ debugName: "billingPostalCode" }] : []);
38142
+ billingRegions = computed(() => BillingSubdivisionsFor(this.billingCountry()), ...ngDevMode ? [{ debugName: "billingRegions" }] : []);
38143
+ billingPostalRequired = computed(() => BillingPostalCodeRequired(this.billingCountry()), ...ngDevMode ? [{ debugName: "billingPostalRequired" }] : []);
38144
+ billingAddress = computed(() => ({
38145
+ Country: this.billingCountry(),
38146
+ StateProvince: this.billingRegion() || void 0,
38147
+ PostalCode: this.billingPostalCode().trim() || void 0
38148
+ }), ...ngDevMode ? [{ debugName: "billingAddress" }] : []);
38149
+ isBillingLocationValid = computed(() => CheckBillingLocation(this.billingAddress()).Valid, ...ngDevMode ? [{ debugName: "isBillingLocationValid" }] : []);
37452
38150
  // Generic units array holding field maps for each unit
37453
38151
  units = signal([], ...ngDevMode ? [{ debugName: "units" }] : []);
37454
38152
  // Backward-compatibility signal for legacy attendees
@@ -37495,6 +38193,11 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
37495
38193
  }, ...ngDevMode ? [{ debugName: "activeFieldDefs" }] : []);
37496
38194
  // Computed properties
37497
38195
  isFree = computed(() => (this._config()?.unitPrice ?? 0) <= 0, ...ngDevMode ? [{ debugName: "isFree" }] : []);
38196
+ /** The agreement text, when this widget sells something that renews on its own and must say so. */
38197
+ autoRenewConsentText = computed(() => {
38198
+ const text2 = this._config()?.autoRenewConsentText;
38199
+ return typeof text2 === "string" && text2.trim() && !this.isFree() ? text2.trim() : null;
38200
+ }, ...ngDevMode ? [{ debugName: "autoRenewConsentText" }] : []);
37498
38201
  isPerUnit = computed(() => {
37499
38202
  const cfg = this._config();
37500
38203
  return cfg?.unitMode === "perUnit" || Boolean(cfg?.isEvent);
@@ -37505,7 +38208,19 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
37505
38208
  const price = this._config()?.unitPrice ?? 0;
37506
38209
  return price * this.quantity();
37507
38210
  }, ...ngDevMode ? [{ debugName: "subtotal" }] : []);
37508
- totalGross = computed(() => this.subtotal(), ...ngDevMode ? [{ debugName: "totalGross" }] : []);
38211
+ /** Whether this widget takes promotion codes — only for a paid checkout whose configuration invites them. */
38212
+ allowsPromotionCodes = computed(() => this._config()?.allowCoupons === true && !this.isFree(), ...ngDevMode ? [{ debugName: "allowsPromotionCodes" }] : []);
38213
+ /** The applied promotion, when it was priced for the current quantity; a stale one is ignored. */
38214
+ activePromotion = computed(() => {
38215
+ const applied = this._appliedPromotion();
38216
+ return applied && applied.quantity === this.quantity() ? applied : null;
38217
+ }, ...ngDevMode ? [{ debugName: "activePromotion" }] : []);
38218
+ /** The server's last priced total, while the quantity it was priced at still holds. */
38219
+ activeServerTotal = computed(() => {
38220
+ const priced = this._serverPricedTotal();
38221
+ return priced && priced.quantity === this.quantity() ? priced.total : null;
38222
+ }, ...ngDevMode ? [{ debugName: "activeServerTotal" }] : []);
38223
+ totalGross = computed(() => this.activePromotion()?.total ?? this.activeServerTotal() ?? this._quotedTotal() ?? this.subtotal(), ...ngDevMode ? [{ debugName: "totalGross" }] : []);
37509
38224
  currencySymbol = computed(() => {
37510
38225
  const c = this._config()?.currency?.toUpperCase() ?? "USD";
37511
38226
  switch (c) {
@@ -37632,8 +38347,22 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
37632
38347
  const clamped = Math.max(1, Math.min(newQty, this.config?.maxQuantity ?? 50));
37633
38348
  this.quantity.set(clamped);
37634
38349
  this.syncUnits();
38350
+ this.quoteInvalidated.emit();
37635
38351
  this.executeLifecycleHook("onQuantityChange", { quantity: clamped });
37636
38352
  }
38353
+ onBillingCountryChange(country) {
38354
+ this.billingCountry.set(country ?? "");
38355
+ this.billingRegion.set("");
38356
+ this.quoteInvalidated.emit();
38357
+ }
38358
+ onBillingRegionChange(region) {
38359
+ this.billingRegion.set(region ?? "");
38360
+ this.quoteInvalidated.emit();
38361
+ }
38362
+ onBillingPostalCodeChange(postalCode) {
38363
+ this.billingPostalCode.set(postalCode ?? "");
38364
+ this.quoteInvalidated.emit();
38365
+ }
37637
38366
  syncUnits() {
37638
38367
  const currentQty = this.quantity();
37639
38368
  const currentUnits = this.units();
@@ -37714,8 +38443,13 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
37714
38443
  this.units.set(list);
37715
38444
  }
37716
38445
  isFormValid() {
38446
+ if (this.autoRenewConsentText() && !this.autoRenewConsent())
38447
+ return false;
37717
38448
  const currentUnits = this.units();
37718
38449
  const fields = this.activeFieldDefs();
38450
+ if (!this.isBillingLocationValid()) {
38451
+ return false;
38452
+ }
37719
38453
  if (!currentUnits || currentUnits.length === 0) {
37720
38454
  const em = this.email().trim();
37721
38455
  const fn = this.firstName().trim();
@@ -37771,16 +38505,40 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
37771
38505
  }
37772
38506
  return true;
37773
38507
  }
38508
+ /** Ask the host to price the typed code against the form as it stands. */
38509
+ applyPromotionCode() {
38510
+ const code = this.promotionCodeInput().trim();
38511
+ if (!code || this.isProcessing)
38512
+ return;
38513
+ this.promotionCodeApplied.emit({ ...this.buildSubmission(), promotionCode: code });
38514
+ }
37774
38515
  handleSubmit() {
37775
38516
  if (!this.isFormValid() || this.isProcessing)
37776
38517
  return;
37777
38518
  this.internalErrorMessage.set(null);
38519
+ const submission = this.buildSubmission();
38520
+ try {
38521
+ const customValidationResult = this.executeLifecycleHook("onValidate", submission);
38522
+ if (customValidationResult === false || typeof customValidationResult === "string") {
38523
+ this.internalErrorMessage.set(typeof customValidationResult === "string" ? customValidationResult : "Submission validation rejected.");
38524
+ return;
38525
+ }
38526
+ } catch (hookErr) {
38527
+ this.internalErrorMessage.set("Validation failed: " + (hookErr instanceof Error ? hookErr.message : String(hookErr)));
38528
+ return;
38529
+ }
38530
+ this.executeLifecycleHook("onBeforeSubmit", submission);
38531
+ this.submitted.emit(submission);
38532
+ }
38533
+ buildSubmission() {
37778
38534
  const currentUnits = this.units();
37779
38535
  const isPerUnit = this.isPerUnit();
37780
38536
  const finalSessionKey = this.sessionKey || this._fallbackSessionKey;
37781
- const submission = {
38537
+ const typedCode = this.promotionCodeInput().trim();
38538
+ return {
37782
38539
  email: String(currentUnits[0]?.["email"] || this.email()).trim().toLowerCase(),
37783
38540
  quantity: this.quantity(),
38541
+ billingAddress: this.billingAddress(),
37784
38542
  attendees: isPerUnit ? this.attendees() : [],
37785
38543
  extensionData: {
37786
38544
  entityName: this.config?.extensionEntityName,
@@ -37791,25 +38549,15 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
37791
38549
  answers: this.answers(),
37792
38550
  choices: this.choices(),
37793
38551
  stripePaymentMethodId: this.isFree() ? void 0 : this.stripePaymentMethodId ?? void 0,
37794
- sessionKey: finalSessionKey
38552
+ sessionKey: finalSessionKey,
38553
+ autoRenewConsent: this.autoRenewConsentText() ? this.autoRenewConsent() : void 0,
38554
+ promotionCode: this.allowsPromotionCodes() && typedCode ? typedCode : void 0
37795
38555
  };
37796
- try {
37797
- const customValidationResult = this.executeLifecycleHook("onValidate", submission);
37798
- if (customValidationResult === false || typeof customValidationResult === "string") {
37799
- this.internalErrorMessage.set(typeof customValidationResult === "string" ? customValidationResult : "Submission validation rejected.");
37800
- return;
37801
- }
37802
- } catch (hookErr) {
37803
- this.internalErrorMessage.set("Validation failed: " + (hookErr instanceof Error ? hookErr.message : String(hookErr)));
37804
- return;
37805
- }
37806
- this.executeLifecycleHook("onBeforeSubmit", submission);
37807
- this.submitted.emit(submission);
37808
38556
  }
37809
38557
  static \u0275fac = function MJCheckoutWidgetComponent_Factory(__ngFactoryType__) {
37810
38558
  return new (__ngFactoryType__ || _MJCheckoutWidgetComponent)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(Renderer2));
37811
38559
  };
37812
- 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" }, outputs: { submitted: "submitted", cancelled: "cancelled" }, features: [\u0275\u0275NgOnChangesFeature], decls: 30, vars: 25, 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-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-section-title"], [1, "mj-form-grid"], [1, "mj-form-group", 3, "full-width"], [1, "mj-form-group"], [1, "mj-label"], [1, "mj-required"], [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"], [3, "ngValue"], ["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"], [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-total-row"], [1, "mj-total-label"], [1, "mj-total-amount"], [1, "mj-spinner"]], template: function MJCheckoutWidgetComponent_Template(rf, ctx) {
38560
+ 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) {
37813
38561
  if (rf & 1) {
37814
38562
  \u0275\u0275elementStart(0, "div", 0)(1, "header", 1)(2, "h2", 2);
37815
38563
  \u0275\u0275text(3);
@@ -37830,20 +38578,47 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
37830
38578
  \u0275\u0275elementStart(16, "section", 14);
37831
38579
  \u0275\u0275conditionalCreate(17, MJCheckoutWidgetComponent_Conditional_17_Template, 5, 0)(18, MJCheckoutWidgetComponent_Conditional_18_Template, 8, 1);
37832
38580
  \u0275\u0275elementEnd();
37833
- \u0275\u0275conditionalCreate(19, MJCheckoutWidgetComponent_Conditional_19_Template, 6, 0, "section", 14);
37834
- \u0275\u0275repeaterCreate(20, MJCheckoutWidgetComponent_For_21_Template, 10, 3, "section", 14, _forTrack0);
37835
- \u0275\u0275conditionalCreate(22, MJCheckoutWidgetComponent_Conditional_22_Template, 15, 2);
37836
- \u0275\u0275elementStart(23, "div", 15)(24, "button", 16);
37837
- \u0275\u0275listener("click", function MJCheckoutWidgetComponent_Template_button_click_24_listener() {
38581
+ \u0275\u0275elementStart(19, "section", 14)(20, "h3", 15);
38582
+ \u0275\u0275text(21, "Billing Location");
38583
+ \u0275\u0275elementEnd();
38584
+ \u0275\u0275elementStart(22, "div", 16)(23, "div", 17)(24, "label", 18);
38585
+ \u0275\u0275text(25, " Country ");
38586
+ \u0275\u0275elementStart(26, "span", 19);
38587
+ \u0275\u0275text(27, "*");
38588
+ \u0275\u0275elementEnd()();
38589
+ \u0275\u0275elementStart(28, "select", 20);
38590
+ \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Template_select_ngModelChange_28_listener($event) {
38591
+ return ctx.onBillingCountryChange($event);
38592
+ });
38593
+ \u0275\u0275elementStart(29, "option", 21);
38594
+ \u0275\u0275text(30, "Select country");
38595
+ \u0275\u0275elementEnd();
38596
+ \u0275\u0275repeaterCreate(31, MJCheckoutWidgetComponent_For_32_Template, 2, 2, "option", 21, _forTrack0);
38597
+ \u0275\u0275elementEnd()();
38598
+ \u0275\u0275conditionalCreate(33, MJCheckoutWidgetComponent_Conditional_33_Template, 10, 4, "div", 17);
38599
+ \u0275\u0275elementStart(34, "div", 17)(35, "label", 18);
38600
+ \u0275\u0275text(36, " Postal Code ");
38601
+ \u0275\u0275conditionalCreate(37, MJCheckoutWidgetComponent_Conditional_37_Template, 2, 0, "span", 19);
38602
+ \u0275\u0275elementEnd();
38603
+ \u0275\u0275elementStart(38, "input", 22);
38604
+ \u0275\u0275listener("ngModelChange", function MJCheckoutWidgetComponent_Template_input_ngModelChange_38_listener($event) {
38605
+ return ctx.onBillingPostalCodeChange($event);
38606
+ });
38607
+ \u0275\u0275elementEnd()()()();
38608
+ \u0275\u0275conditionalCreate(39, MJCheckoutWidgetComponent_Conditional_39_Template, 6, 0, "section", 14);
38609
+ \u0275\u0275repeaterCreate(40, MJCheckoutWidgetComponent_For_41_Template, 10, 3, "section", 14, _forTrack1);
38610
+ \u0275\u0275conditionalCreate(42, MJCheckoutWidgetComponent_Conditional_42_Template, 18, 5);
38611
+ \u0275\u0275elementStart(43, "div", 23)(44, "button", 24);
38612
+ \u0275\u0275listener("click", function MJCheckoutWidgetComponent_Template_button_click_44_listener() {
37838
38613
  return ctx.handleSubmit();
37839
38614
  });
37840
- \u0275\u0275conditionalCreate(25, MJCheckoutWidgetComponent_Conditional_25_Template, 3, 0)(26, MJCheckoutWidgetComponent_Conditional_26_Template, 2, 0, "span")(27, MJCheckoutWidgetComponent_Conditional_27_Template, 2, 2, "span");
38615
+ \u0275\u0275conditionalCreate(45, MJCheckoutWidgetComponent_Conditional_45_Template, 3, 0)(46, MJCheckoutWidgetComponent_Conditional_46_Template, 2, 0, "span")(47, MJCheckoutWidgetComponent_Conditional_47_Template, 2, 2, "span");
37841
38616
  \u0275\u0275elementEnd();
37842
- \u0275\u0275elementStart(28, "button", 17);
37843
- \u0275\u0275listener("click", function MJCheckoutWidgetComponent_Template_button_click_28_listener() {
38617
+ \u0275\u0275elementStart(48, "button", 25);
38618
+ \u0275\u0275listener("click", function MJCheckoutWidgetComponent_Template_button_click_48_listener() {
37844
38619
  return ctx.cancelled.emit();
37845
38620
  });
37846
- \u0275\u0275text(29, " Cancel ");
38621
+ \u0275\u0275text(49, " Cancel ");
37847
38622
  \u0275\u0275elementEnd()()();
37848
38623
  }
37849
38624
  if (rf & 2) {
@@ -37870,20 +38645,36 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
37870
38645
  \u0275\u0275conditional((ctx.config == null ? null : ctx.config.allowQuantity) ? 15 : -1);
37871
38646
  \u0275\u0275advance(2);
37872
38647
  \u0275\u0275conditional(ctx.isSingleUnit() ? 17 : 18);
38648
+ \u0275\u0275advance(7);
38649
+ \u0275\u0275attribute("for", ctx.widgetInstanceId + "-billing-country");
38650
+ \u0275\u0275advance(4);
38651
+ \u0275\u0275property("id", ctx.widgetInstanceId + "-billing-country")("ngModel", ctx.billingCountry());
38652
+ \u0275\u0275advance();
38653
+ \u0275\u0275property("ngValue", "");
38654
+ \u0275\u0275advance(2);
38655
+ \u0275\u0275repeater(ctx.billingCountries);
37873
38656
  \u0275\u0275advance(2);
37874
- \u0275\u0275conditional(ctx.questions().length > 0 ? 19 : -1);
38657
+ \u0275\u0275conditional(ctx.billingRegions().length > 0 ? 33 : -1);
38658
+ \u0275\u0275advance(2);
38659
+ \u0275\u0275attribute("for", ctx.widgetInstanceId + "-billing-postal");
38660
+ \u0275\u0275advance(2);
38661
+ \u0275\u0275conditional(ctx.billingPostalRequired() ? 37 : -1);
38662
+ \u0275\u0275advance();
38663
+ \u0275\u0275property("id", ctx.widgetInstanceId + "-billing-postal")("ngModel", ctx.billingPostalCode())("required", ctx.billingPostalRequired());
38664
+ \u0275\u0275advance();
38665
+ \u0275\u0275conditional(ctx.questions().length > 0 ? 39 : -1);
37875
38666
  \u0275\u0275advance();
37876
38667
  \u0275\u0275repeater(ctx.choiceGroups());
37877
38668
  \u0275\u0275advance(2);
37878
- \u0275\u0275conditional(!ctx.isFree() ? 22 : -1);
38669
+ \u0275\u0275conditional(!ctx.isFree() ? 42 : -1);
37879
38670
  \u0275\u0275advance(2);
37880
38671
  \u0275\u0275property("disabled", !ctx.isFormValid() || ctx.isProcessing);
37881
38672
  \u0275\u0275advance();
37882
- \u0275\u0275conditional(ctx.isProcessing ? 25 : ctx.isFree() ? 26 : 27);
38673
+ \u0275\u0275conditional(ctx.isProcessing ? 45 : ctx.isFree() ? 46 : 47);
37883
38674
  \u0275\u0275advance(3);
37884
38675
  \u0275\u0275property("disabled", ctx.isProcessing);
37885
38676
  }
37886
- }, dependencies: [CommonModule, FormsModule, NgSelectOption, \u0275NgSelectMultipleOption, DefaultValueAccessor, NumberValueAccessor, CheckboxControlValueAccessor, SelectControlValueAccessor, NgControlStatus, RequiredValidator, 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 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}'], changeDetection: 0 });
38677
+ }, 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 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 line-height: 1.4;\n}\n.mj-checkout-consent[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n margin-top: 0.2rem;\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 });
37887
38678
  };
37888
38679
  (() => {
37889
38680
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MJCheckoutWidgetComponent, [{
@@ -38106,6 +38897,65 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38106
38897
  }
38107
38898
  </section>
38108
38899
 
38900
+ <!-- Billing Location \u2014 required so the sale can be placed in a tax jurisdiction -->
38901
+ <section class="mj-widget-form-section">
38902
+ <h3 class="mj-section-title">Billing Location</h3>
38903
+ <div class="mj-form-grid">
38904
+ <div class="mj-form-group">
38905
+ <label class="mj-label" [attr.for]="widgetInstanceId + '-billing-country'">
38906
+ Country <span class="mj-required">*</span>
38907
+ </label>
38908
+ <select
38909
+ class="mj-select"
38910
+ [id]="widgetInstanceId + '-billing-country'"
38911
+ autocomplete="country"
38912
+ [ngModel]="billingCountry()"
38913
+ (ngModelChange)="onBillingCountryChange($event)"
38914
+ required>
38915
+ <option [ngValue]="''">Select country</option>
38916
+ @for (c of billingCountries; track c.Code) {
38917
+ <option [ngValue]="c.Code">{{ c.Name }}</option>
38918
+ }
38919
+ </select>
38920
+ </div>
38921
+ @if (billingRegions().length > 0) {
38922
+ <div class="mj-form-group">
38923
+ <label class="mj-label" [attr.for]="widgetInstanceId + '-billing-region'">
38924
+ State / Province <span class="mj-required">*</span>
38925
+ </label>
38926
+ <select
38927
+ class="mj-select"
38928
+ [id]="widgetInstanceId + '-billing-region'"
38929
+ autocomplete="address-level1"
38930
+ [ngModel]="billingRegion()"
38931
+ (ngModelChange)="onBillingRegionChange($event)"
38932
+ required>
38933
+ <option [ngValue]="''">Select state or province</option>
38934
+ @for (r of billingRegions(); track r.Code) {
38935
+ <option [ngValue]="r.Code">{{ r.Name }}</option>
38936
+ }
38937
+ </select>
38938
+ </div>
38939
+ }
38940
+ <div class="mj-form-group">
38941
+ <label class="mj-label" [attr.for]="widgetInstanceId + '-billing-postal'">
38942
+ Postal Code
38943
+ @if (billingPostalRequired()) {
38944
+ <span class="mj-required">*</span>
38945
+ }
38946
+ </label>
38947
+ <input
38948
+ type="text"
38949
+ class="mj-input"
38950
+ [id]="widgetInstanceId + '-billing-postal'"
38951
+ autocomplete="postal-code"
38952
+ maxlength="20"
38953
+ [ngModel]="billingPostalCode()"
38954
+ (ngModelChange)="onBillingPostalCodeChange($event)"
38955
+ [required]="billingPostalRequired()" />
38956
+ </div>
38957
+ </div>
38958
+ </section>
38109
38959
  <!-- Questions from the widget's Configuration; answers are recorded on the order -->
38110
38960
  @if (questions().length > 0) {
38111
38961
  <section class="mj-widget-form-section">
@@ -38202,7 +39052,46 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38202
39052
  </div>
38203
39053
  </section>
38204
39054
 
39055
+ @if (allowsPromotionCodes()) {
39056
+ <div class="mj-checkout-promo">
39057
+ <label class="mj-checkout-promo__label" for="{{ widgetInstanceId }}-promo">Promo code</label>
39058
+ <div class="mj-checkout-promo__row">
39059
+ <input id="{{ widgetInstanceId }}-promo" type="text" class="mj-input mj-checkout-promo__input" autocomplete="off" maxlength="60"
39060
+ [value]="promotionCodeInput()"
39061
+ (input)="promotionCodeInput.set($any($event.target).value)"
39062
+ (keydown.enter)="applyPromotionCode()"
39063
+ [disabled]="isProcessing" />
39064
+ <button type="button" class="mj-checkout-promo__apply"
39065
+ [disabled]="isProcessing || !promotionCodeInput().trim()"
39066
+ (click)="applyPromotionCode()">Apply</button>
39067
+ </div>
39068
+ @if (promotionError) {
39069
+ <p class="mj-checkout-promo__error" role="alert">{{ promotionError }}</p>
39070
+ } @else if (activePromotion(); as promo) {
39071
+ <p class="mj-checkout-promo__applied" role="status">
39072
+ {{ promo.code }} applied: \u2212{{ currencySymbol() }}{{ promo.discount.toFixed(2) }}
39073
+ </p>
39074
+ }
39075
+ </div>
39076
+ }
39077
+
39078
+ @if (autoRenewConsentText(); as consentText) {
39079
+ <label class="mj-checkout-consent">
39080
+ <input type="checkbox"
39081
+ [checked]="autoRenewConsent()"
39082
+ (change)="autoRenewConsent.set($any($event.target).checked)"
39083
+ [disabled]="isProcessing" />
39084
+ <span>{{ consentText }}</span>
39085
+ </label>
39086
+ }
39087
+
38205
39088
  <!-- Final Total Line -->
39089
+ @if (quotedTax !== null) {
39090
+ <div class="mj-checkout-total-row">
39091
+ <span class="mj-total-label">Sales Tax</span>
39092
+ <span class="mj-total-amount">{{ currencySymbol() }}{{ (quotedTax ?? 0).toFixed(2) }}</span>
39093
+ </div>
39094
+ }
38206
39095
  <div class="mj-checkout-total-row">
38207
39096
  <span class="mj-total-label">Total Due</span>
38208
39097
  <span class="mj-total-amount">{{ currencySymbol() }}{{ totalGross().toFixed(2) }}</span>
@@ -38630,6 +39519,60 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38630
39519
  @keyframes mj-spin {
38631
39520
  to { transform: rotate(360deg); }
38632
39521
  }
39522
+
39523
+ .mj-checkout-consent {
39524
+ display: flex;
39525
+ gap: 0.5rem;
39526
+ align-items: flex-start;
39527
+ margin: 0.75rem 0;
39528
+ font-size: 0.875rem;
39529
+ line-height: 1.4;
39530
+ }
39531
+ .mj-checkout-consent input {
39532
+ margin-top: 0.2rem;
39533
+ flex: 0 0 auto;
39534
+ }
39535
+
39536
+ .mj-checkout-promo {
39537
+ margin: 0.75rem 0;
39538
+ }
39539
+ .mj-checkout-promo__label {
39540
+ display: block;
39541
+ font-size: 0.875rem;
39542
+ margin-bottom: 0.25rem;
39543
+ }
39544
+ .mj-checkout-promo__row {
39545
+ display: flex;
39546
+ gap: 0.5rem;
39547
+ }
39548
+ .mj-checkout-promo__input {
39549
+ flex: 1 1 auto;
39550
+ }
39551
+ .mj-checkout-promo__error {
39552
+ color: var(--mj-error-color, #b91c1c);
39553
+ font-size: 0.875rem;
39554
+ margin: 0.35rem 0 0;
39555
+ }
39556
+ .mj-checkout-promo__applied {
39557
+ color: var(--mj-success-color, #15803d);
39558
+ font-size: 0.875rem;
39559
+ margin: 0.35rem 0 0;
39560
+ }
39561
+ .mj-checkout-promo__apply {
39562
+ flex: 0 0 auto;
39563
+ padding: 8px 14px;
39564
+ background: transparent;
39565
+ color: var(--mj-primary-color, #2563eb);
39566
+ border: 1px solid var(--mj-border-color, #cbd5e1);
39567
+ border-radius: var(--mj-border-radius, 8px);
39568
+ font-size: 0.875rem;
39569
+ font-weight: 600;
39570
+ cursor: pointer;
39571
+ }
39572
+ .mj-checkout-promo__apply:disabled {
39573
+ opacity: 0.5;
39574
+ cursor: not-allowed;
39575
+ }
38633
39576
  `] }]
38634
39577
  }], () => [{ type: ElementRef }, { type: Renderer2 }], { config: [{
38635
39578
  type: Input
@@ -38647,14 +39590,28 @@ var MJCheckoutWidgetComponent = class _MJCheckoutWidgetComponent {
38647
39590
  type: Input
38648
39591
  }], prefillEmail: [{
38649
39592
  type: Input
39593
+ }], appliedPromotion: [{
39594
+ type: Input
39595
+ }], promotionError: [{
39596
+ type: Input
39597
+ }], serverPricedTotal: [{
39598
+ type: Input
39599
+ }], quotedTotal: [{
39600
+ type: Input
39601
+ }], quotedTax: [{
39602
+ type: Input
38650
39603
  }], submitted: [{
38651
39604
  type: Output
39605
+ }], promotionCodeApplied: [{
39606
+ type: Output
38652
39607
  }], cancelled: [{
38653
39608
  type: Output
39609
+ }], quoteInvalidated: [{
39610
+ type: Output
38654
39611
  }] });
38655
39612
  })();
38656
39613
  (() => {
38657
- (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(MJCheckoutWidgetComponent, { className: "MJCheckoutWidgetComponent", filePath: "lib/checkout-widget/checkout-widget.component.ts", lineNumber: 142 });
39614
+ (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(MJCheckoutWidgetComponent, { className: "MJCheckoutWidgetComponent", filePath: "lib/checkout-widget/checkout-widget.component.ts", lineNumber: 181 });
38658
39615
  })();
38659
39616
 
38660
39617
  // dist/lib/checkout-widget/checkout-draft-line.js
@@ -38689,6 +39646,13 @@ function stripeConfirmAlreadyCollected(error) {
38689
39646
  function formatStripeError(error) {
38690
39647
  return error?.message?.trim() || "Payment failed.";
38691
39648
  }
39649
+ function memberDiscountNotice(draft, alreadyShown) {
39650
+ const message = draft?.["MemberDiscountMessage"];
39651
+ if (alreadyShown || typeof message !== "string" || !message) {
39652
+ return null;
39653
+ }
39654
+ return `${message} Submit again to continue at the standard rate.`;
39655
+ }
38692
39656
 
38693
39657
  // dist/lib/checkout-widget/checkout-public-host.component.js
38694
39658
  var _c0 = (a0) => [a0];
@@ -38718,14 +39682,27 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_7_Template(rf, ct
38718
39682
  }
38719
39683
  function CheckoutPublicHostComponent_Conditional_2_Conditional_8_Template(rf, ctx) {
38720
39684
  if (rf & 1) {
38721
- \u0275\u0275elementStart(0, "p", 8);
39685
+ \u0275\u0275elementStart(0, "p", 11);
39686
+ \u0275\u0275text(1);
39687
+ \u0275\u0275elementEnd();
39688
+ }
39689
+ if (rf & 2) {
39690
+ const ctx_r0 = \u0275\u0275nextContext(2);
39691
+ \u0275\u0275classProp("is-failed", ctx_r0.accessState === "Failed");
39692
+ \u0275\u0275advance();
39693
+ \u0275\u0275textInterpolate(ctx_r0.accessMessage);
39694
+ }
39695
+ }
39696
+ function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template(rf, ctx) {
39697
+ if (rf & 1) {
39698
+ \u0275\u0275elementStart(0, "p", 9);
38722
39699
  \u0275\u0275text(1, "Setting up your account\u2026");
38723
39700
  \u0275\u0275elementEnd();
38724
39701
  }
38725
39702
  }
38726
- function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Conditional_3_Template(rf, ctx) {
39703
+ function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_3_Template(rf, ctx) {
38727
39704
  if (rf & 1) {
38728
- \u0275\u0275elementStart(0, "p", 12);
39705
+ \u0275\u0275elementStart(0, "p", 14);
38729
39706
  \u0275\u0275text(1);
38730
39707
  \u0275\u0275elementEnd();
38731
39708
  }
@@ -38735,9 +39712,9 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Conditional_3_T
38735
39712
  \u0275\u0275textInterpolate(ctx_r0.verificationNote);
38736
39713
  }
38737
39714
  }
38738
- function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Conditional_10_Template(rf, ctx) {
39715
+ function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_10_Template(rf, ctx) {
38739
39716
  if (rf & 1) {
38740
- \u0275\u0275elementStart(0, "p", 17);
39717
+ \u0275\u0275elementStart(0, "p", 19);
38741
39718
  \u0275\u0275text(1);
38742
39719
  \u0275\u0275elementEnd();
38743
39720
  }
@@ -38747,46 +39724,46 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Conditional_10_
38747
39724
  \u0275\u0275textInterpolate(ctx_r0.passwordError);
38748
39725
  }
38749
39726
  }
38750
- function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template(rf, ctx) {
39727
+ function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template(rf, ctx) {
38751
39728
  if (rf & 1) {
38752
39729
  const _r2 = \u0275\u0275getCurrentView();
38753
- \u0275\u0275elementStart(0, "form", 10);
38754
- \u0275\u0275listener("submit", function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template_form_submit_0_listener($event) {
39730
+ \u0275\u0275elementStart(0, "form", 12);
39731
+ \u0275\u0275listener("submit", function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template_form_submit_0_listener($event) {
38755
39732
  \u0275\u0275restoreView(_r2);
38756
39733
  const ctx_r0 = \u0275\u0275nextContext(2);
38757
39734
  $event.preventDefault();
38758
39735
  return \u0275\u0275resetView(ctx_r0.submitPassword());
38759
39736
  });
38760
- \u0275\u0275elementStart(1, "h2", 11);
39737
+ \u0275\u0275elementStart(1, "h2", 13);
38761
39738
  \u0275\u0275text(2, "Set a password for your account");
38762
39739
  \u0275\u0275elementEnd();
38763
- \u0275\u0275conditionalCreate(3, CheckoutPublicHostComponent_Conditional_2_Conditional_9_Conditional_3_Template, 2, 1, "p", 12);
38764
- \u0275\u0275elementStart(4, "label", 13);
39740
+ \u0275\u0275conditionalCreate(3, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_3_Template, 2, 1, "p", 14);
39741
+ \u0275\u0275elementStart(4, "label", 15);
38765
39742
  \u0275\u0275text(5, "Password");
38766
39743
  \u0275\u0275elementEnd();
38767
- \u0275\u0275elementStart(6, "input", 14);
38768
- \u0275\u0275listener("input", function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template_input_input_6_listener($event) {
39744
+ \u0275\u0275elementStart(6, "input", 16);
39745
+ \u0275\u0275listener("input", function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template_input_input_6_listener($event) {
38769
39746
  \u0275\u0275restoreView(_r2);
38770
39747
  const ctx_r0 = \u0275\u0275nextContext(2);
38771
39748
  return \u0275\u0275resetView(ctx_r0.password = $event.target.value);
38772
39749
  });
38773
39750
  \u0275\u0275elementEnd();
38774
- \u0275\u0275elementStart(7, "label", 15);
39751
+ \u0275\u0275elementStart(7, "label", 17);
38775
39752
  \u0275\u0275text(8, "Confirm password");
38776
39753
  \u0275\u0275elementEnd();
38777
- \u0275\u0275elementStart(9, "input", 16);
38778
- \u0275\u0275listener("input", function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template_input_input_9_listener($event) {
39754
+ \u0275\u0275elementStart(9, "input", 18);
39755
+ \u0275\u0275listener("input", function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template_input_input_9_listener($event) {
38779
39756
  \u0275\u0275restoreView(_r2);
38780
39757
  const ctx_r0 = \u0275\u0275nextContext(2);
38781
39758
  return \u0275\u0275resetView(ctx_r0.passwordConfirmation = $event.target.value);
38782
39759
  });
38783
39760
  \u0275\u0275elementEnd();
38784
- \u0275\u0275conditionalCreate(10, CheckoutPublicHostComponent_Conditional_2_Conditional_9_Conditional_10_Template, 2, 1, "p", 17);
38785
- \u0275\u0275elementStart(11, "button", 18);
39761
+ \u0275\u0275conditionalCreate(10, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_10_Template, 2, 1, "p", 19);
39762
+ \u0275\u0275elementStart(11, "button", 20);
38786
39763
  \u0275\u0275text(12);
38787
39764
  \u0275\u0275elementEnd();
38788
- \u0275\u0275elementStart(13, "button", 19);
38789
- \u0275\u0275listener("click", function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template_button_click_13_listener() {
39765
+ \u0275\u0275elementStart(13, "button", 21);
39766
+ \u0275\u0275listener("click", function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template_button_click_13_listener() {
38790
39767
  \u0275\u0275restoreView(_r2);
38791
39768
  const ctx_r0 = \u0275\u0275nextContext(2);
38792
39769
  return \u0275\u0275resetView(ctx_r0.skipPassword());
@@ -38812,11 +39789,11 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template(rf, ct
38812
39789
  \u0275\u0275property("disabled", ctx_r0.passwordBusy);
38813
39790
  }
38814
39791
  }
38815
- function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_2_Conditional_3_Template(rf, ctx) {
39792
+ function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Conditional_3_Template(rf, ctx) {
38816
39793
  if (rf & 1) {
38817
39794
  const _r4 = \u0275\u0275getCurrentView();
38818
- \u0275\u0275elementStart(0, "button", 23);
38819
- \u0275\u0275listener("click", function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_2_Conditional_3_Template_button_click_0_listener() {
39795
+ \u0275\u0275elementStart(0, "button", 25);
39796
+ \u0275\u0275listener("click", function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Conditional_3_Template_button_click_0_listener() {
38820
39797
  \u0275\u0275restoreView(_r4);
38821
39798
  const ctx_r0 = \u0275\u0275nextContext(4);
38822
39799
  return \u0275\u0275resetView(ctx_r0.dismissAccount());
@@ -38825,18 +39802,18 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_2_
38825
39802
  \u0275\u0275elementEnd();
38826
39803
  }
38827
39804
  }
38828
- function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_2_Template(rf, ctx) {
39805
+ function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Template(rf, ctx) {
38829
39806
  if (rf & 1) {
38830
39807
  const _r3 = \u0275\u0275getCurrentView();
38831
- \u0275\u0275elementStart(0, "div", 20)(1, "button", 21);
38832
- \u0275\u0275listener("click", function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_2_Template_button_click_1_listener() {
39808
+ \u0275\u0275elementStart(0, "div", 22)(1, "button", 23);
39809
+ \u0275\u0275listener("click", function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Template_button_click_1_listener() {
38833
39810
  \u0275\u0275restoreView(_r3);
38834
39811
  const ctx_r0 = \u0275\u0275nextContext(3);
38835
39812
  return \u0275\u0275resetView(ctx_r0.retryAccount());
38836
39813
  });
38837
39814
  \u0275\u0275text(2, "Try again");
38838
39815
  \u0275\u0275elementEnd();
38839
- \u0275\u0275conditionalCreate(3, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_2_Conditional_3_Template, 2, 0, "button", 22);
39816
+ \u0275\u0275conditionalCreate(3, CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Conditional_3_Template, 2, 0, "button", 24);
38840
39817
  \u0275\u0275elementEnd();
38841
39818
  }
38842
39819
  if (rf & 2) {
@@ -38845,12 +39822,12 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_2_
38845
39822
  \u0275\u0275conditional((ctx_r0.config == null ? null : ctx_r0.config.redirectUrl) ? 3 : -1);
38846
39823
  }
38847
39824
  }
38848
- function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template(rf, ctx) {
39825
+ function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Template(rf, ctx) {
38849
39826
  if (rf & 1) {
38850
- \u0275\u0275elementStart(0, "p", 8);
39827
+ \u0275\u0275elementStart(0, "p", 9);
38851
39828
  \u0275\u0275text(1);
38852
39829
  \u0275\u0275elementEnd();
38853
- \u0275\u0275conditionalCreate(2, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_2_Template, 4, 1, "div", 20);
39830
+ \u0275\u0275conditionalCreate(2, CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Template, 4, 1, "div", 22);
38854
39831
  }
38855
39832
  if (rf & 2) {
38856
39833
  const ctx_r0 = \u0275\u0275nextContext(2);
@@ -38872,7 +39849,8 @@ function CheckoutPublicHostComponent_Conditional_2_Template(rf, ctx) {
38872
39849
  \u0275\u0275text(6);
38873
39850
  \u0275\u0275elementEnd();
38874
39851
  \u0275\u0275conditionalCreate(7, CheckoutPublicHostComponent_Conditional_2_Conditional_7_Template, 2, 1, "p", 7);
38875
- \u0275\u0275conditionalCreate(8, CheckoutPublicHostComponent_Conditional_2_Conditional_8_Template, 2, 0, "p", 8)(9, CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template, 15, 7, "form", 9)(10, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template, 3, 2);
39852
+ \u0275\u0275conditionalCreate(8, CheckoutPublicHostComponent_Conditional_2_Conditional_8_Template, 2, 3, "p", 8);
39853
+ \u0275\u0275conditionalCreate(9, CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template, 2, 0, "p", 9)(10, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template, 15, 7, "form", 10)(11, CheckoutPublicHostComponent_Conditional_2_Conditional_11_Template, 3, 2);
38876
39854
  \u0275\u0275elementEnd();
38877
39855
  }
38878
39856
  if (rf & 2) {
@@ -38882,7 +39860,9 @@ function CheckoutPublicHostComponent_Conditional_2_Template(rf, ctx) {
38882
39860
  \u0275\u0275advance();
38883
39861
  \u0275\u0275conditional(ctx_r0.orderNumber ? 7 : -1);
38884
39862
  \u0275\u0275advance();
38885
- \u0275\u0275conditional(ctx_r0.accountLoading ? 8 : (ctx_r0.account == null ? null : ctx_r0.account.CanSetPassword) ? 9 : ctx_r0.accountMessage ? 10 : -1);
39863
+ \u0275\u0275conditional(ctx_r0.accessMessage ? 8 : -1);
39864
+ \u0275\u0275advance();
39865
+ \u0275\u0275conditional(ctx_r0.accountLoading ? 9 : (ctx_r0.account == null ? null : ctx_r0.account.CanSetPassword) ? 10 : ctx_r0.accountMessage ? 11 : -1);
38886
39866
  }
38887
39867
  }
38888
39868
  function CheckoutPublicHostComponent_Conditional_3_Template(rf, ctx) {
@@ -38895,8 +39875,12 @@ function CheckoutPublicHostComponent_Conditional_3_Template(rf, ctx) {
38895
39875
  function CheckoutPublicHostComponent_Conditional_4_For_1_Template(rf, ctx) {
38896
39876
  if (rf & 1) {
38897
39877
  const _r5 = \u0275\u0275getCurrentView();
38898
- \u0275\u0275elementStart(0, "mj-checkout-widget", 25);
38899
- \u0275\u0275listener("submitted", function CheckoutPublicHostComponent_Conditional_4_For_1_Template_mj_checkout_widget_submitted_0_listener($event) {
39878
+ \u0275\u0275elementStart(0, "mj-checkout-widget", 27);
39879
+ \u0275\u0275listener("promotionCodeApplied", function CheckoutPublicHostComponent_Conditional_4_For_1_Template_mj_checkout_widget_promotionCodeApplied_0_listener($event) {
39880
+ \u0275\u0275restoreView(_r5);
39881
+ const ctx_r0 = \u0275\u0275nextContext(2);
39882
+ return \u0275\u0275resetView(ctx_r0.onPromotionCodeApplied($event));
39883
+ })("submitted", function CheckoutPublicHostComponent_Conditional_4_For_1_Template_mj_checkout_widget_submitted_0_listener($event) {
38900
39884
  \u0275\u0275restoreView(_r5);
38901
39885
  const ctx_r0 = \u0275\u0275nextContext(2);
38902
39886
  return \u0275\u0275resetView(ctx_r0.onSubmitted($event));
@@ -38904,17 +39888,21 @@ function CheckoutPublicHostComponent_Conditional_4_For_1_Template(rf, ctx) {
38904
39888
  \u0275\u0275restoreView(_r5);
38905
39889
  const ctx_r0 = \u0275\u0275nextContext(2);
38906
39890
  return \u0275\u0275resetView(ctx_r0.onCancelled());
39891
+ })("quoteInvalidated", function CheckoutPublicHostComponent_Conditional_4_For_1_Template_mj_checkout_widget_quoteInvalidated_0_listener() {
39892
+ \u0275\u0275restoreView(_r5);
39893
+ const ctx_r0 = \u0275\u0275nextContext(2);
39894
+ return \u0275\u0275resetView(ctx_r0.onQuoteInvalidated());
38907
39895
  });
38908
39896
  \u0275\u0275elementEnd();
38909
39897
  }
38910
39898
  if (rf & 2) {
38911
39899
  const ctx_r0 = \u0275\u0275nextContext(2);
38912
- \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);
39900
+ \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);
38913
39901
  }
38914
39902
  }
38915
39903
  function CheckoutPublicHostComponent_Conditional_4_Template(rf, ctx) {
38916
39904
  if (rf & 1) {
38917
- \u0275\u0275repeaterCreate(0, CheckoutPublicHostComponent_Conditional_4_For_1_Template, 1, 8, "mj-checkout-widget", 24, \u0275\u0275repeaterTrackByIdentity);
39905
+ \u0275\u0275repeaterCreate(0, CheckoutPublicHostComponent_Conditional_4_For_1_Template, 1, 13, "mj-checkout-widget", 26, \u0275\u0275repeaterTrackByIdentity);
38918
39906
  }
38919
39907
  if (rf & 2) {
38920
39908
  const ctx_r0 = \u0275\u0275nextContext();
@@ -38926,6 +39914,8 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
38926
39914
  cdr = inject2(ChangeDetectorRef);
38927
39915
  slug = "";
38928
39916
  apiRoot = "/checkout";
39917
+ /** A host-signed membership token, verified server-side on /draft and never stored (#324). */
39918
+ memberToken = "";
38929
39919
  config = null;
38930
39920
  sessionKey = "";
38931
39921
  sessionId = "";
@@ -38936,6 +39926,15 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
38936
39926
  loadError = null;
38937
39927
  successMessage = null;
38938
39928
  orderNumber = null;
39929
+ /** The code the server last priced, fed back to the widget so it shows the discounted total. */
39930
+ appliedPromotion = null;
39931
+ /** Why the last code could not be used. */
39932
+ promotionError = null;
39933
+ /** The total the server last priced the draft at, fed back so the widget charges what it shows. */
39934
+ serverPricedTotal = null;
39935
+ /** The server's total and tax for the details last drafted — shown before the buyer is charged. */
39936
+ quotedTotal = null;
39937
+ quotedTax = null;
38939
39938
  /** The post-payment account step, when the host registered one (#292). */
38940
39939
  account = null;
38941
39940
  password = "";
@@ -38953,10 +39952,21 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
38953
39952
  get verificationNote() {
38954
39953
  return VerificationNote(this.account);
38955
39954
  }
39955
+ /** Whether the buyer's access is ready (#325); null while nothing is tracked. */
39956
+ accessState = null;
39957
+ /** How often, and for how long, the success screen asks. Fields so a test can shorten them. */
39958
+ accessPollIntervalMs = ACCESS_POLL_INTERVAL_MS;
39959
+ accessPollTimeoutMs = ACCESS_POLL_TIMEOUT_MS;
39960
+ /** True while access is being asked for; the redirect waits on it. */
39961
+ accessTracking = false;
39962
+ get accessMessage() {
39963
+ return AccessMessage(this.accessState, this.config?.accessMessages);
39964
+ }
38956
39965
  stripe = null;
38957
39966
  card = null;
38958
39967
  cardMounted = false;
38959
39968
  destroyed = false;
39969
+ memberNoticeShown = false;
38960
39970
  state = null;
38961
39971
  /** Bumped by Cancel: the template re-creates the widget, which clears everything the buyer entered. */
38962
39972
  formGeneration = 0;
@@ -38969,6 +39979,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
38969
39979
  return (this.config?.unitPrice ?? 0) <= 0;
38970
39980
  }
38971
39981
  async ngOnInit() {
39982
+ this.loadError = null;
38972
39983
  this.readHostAttributes();
38973
39984
  if (!this.slug) {
38974
39985
  this.loadError = "This checkout link is missing its reference.";
@@ -39035,6 +40046,63 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39035
40046
  } catch {
39036
40047
  }
39037
40048
  }
40049
+ /** The buyer pressed Apply: price the form with the code and show what it does. */
40050
+ async onPromotionCodeApplied(event) {
40051
+ if (this.processing || !this.config?.productId || !event.promotionCode) {
40052
+ return;
40053
+ }
40054
+ this.processing = true;
40055
+ this.promotionError = null;
40056
+ try {
40057
+ const draft = await this.post("/draft", {
40058
+ sessionId: this.sessionId,
40059
+ clientSessionKey: this.sessionKey,
40060
+ email: event.email,
40061
+ lines: [buildCheckoutDraftLine(this.config.productId, event)],
40062
+ billingAddress: event.billingAddress,
40063
+ answers: event.answers,
40064
+ choices: event.choices,
40065
+ ...this.attributionSource ? { attribution: { source: this.attributionSource, reference: this.attributionReference } } : {},
40066
+ ...this.memberToken ? { memberToken: this.memberToken } : {},
40067
+ promotionCodes: [event.promotionCode]
40068
+ });
40069
+ this.applyPromotionOutcome(draft, event);
40070
+ } catch {
40071
+ this.promotionError = "The code could not be checked. Please try again.";
40072
+ } finally {
40073
+ this.processing = false;
40074
+ this.cdr.detectChanges();
40075
+ }
40076
+ }
40077
+ /**
40078
+ * Read a draft's verdict on the buyer's code into the widget's inputs. Returns true when the
40079
+ * draft priced the code (or no code was sent), false when the code was refused.
40080
+ */
40081
+ applyPromotionOutcome(draft, event) {
40082
+ if (!event.promotionCode) {
40083
+ this.appliedPromotion = null;
40084
+ return true;
40085
+ }
40086
+ if (!draft?.Success) {
40087
+ this.appliedPromotion = null;
40088
+ this.promotionError = this.str(draft?.ErrorMessage, "That code could not be applied.");
40089
+ return false;
40090
+ }
40091
+ const unusable = Array.isArray(draft.UnusablePromotionCodes) ? draft.UnusablePromotionCodes : [];
40092
+ if (unusable.length > 0) {
40093
+ this.appliedPromotion = null;
40094
+ this.promotionError = `${this.str(unusable[0].Code, event.promotionCode)} can't be used: ${this.str(unusable[0].Reason, "not valid for this order")}.`;
40095
+ return false;
40096
+ }
40097
+ const applied = Array.isArray(draft.AppliedPromotionCodes) ? draft.AppliedPromotionCodes : [];
40098
+ this.appliedPromotion = {
40099
+ code: this.str(applied[0], event.promotionCode),
40100
+ discount: Number(draft.Discount ?? 0),
40101
+ total: Number(draft.TotalGross ?? 0),
40102
+ quantity: event.quantity
40103
+ };
40104
+ return true;
40105
+ }
39038
40106
  /**
39039
40107
  * Cancel resets the checkout to a blank form and tells the host page, which may close the modal
39040
40108
  * the checkout sits in. The widget is re-created, so every field the buyer filled in is cleared,
@@ -39093,6 +40161,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39093
40161
  resetForm() {
39094
40162
  this.errorMessage = null;
39095
40163
  this.stripePaymentMethodId = null;
40164
+ this.serverPricedTotal = null;
39096
40165
  try {
39097
40166
  this.card?.destroy?.();
39098
40167
  } catch {
@@ -39102,6 +40171,13 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39102
40171
  this.isPaymentReady = !this.config?.stripePublishableKey;
39103
40172
  this.formGeneration++;
39104
40173
  }
40174
+ /** A price input changed: every total the server priced for the old inputs is stale, tax included. */
40175
+ onQuoteInvalidated() {
40176
+ this.quotedTotal = null;
40177
+ this.quotedTax = null;
40178
+ this.serverPricedTotal = null;
40179
+ this.appliedPromotion = null;
40180
+ }
39105
40181
  async onSubmitted(event) {
39106
40182
  if (this.processing || !this.config?.productId) {
39107
40183
  return;
@@ -39116,20 +40192,37 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39116
40192
  clientSessionKey: this.sessionKey,
39117
40193
  email: event.email,
39118
40194
  lines: [line],
40195
+ billingAddress: event.billingAddress,
39119
40196
  answers: event.answers,
39120
40197
  ...this.attributionSource ? { attribution: { source: this.attributionSource, reference: this.attributionReference } } : {},
39121
- choices: event.choices
40198
+ choices: event.choices,
40199
+ ...this.memberToken ? { memberToken: this.memberToken } : {},
40200
+ promotionCodes: event.promotionCode ? [event.promotionCode] : []
39122
40201
  });
40202
+ if (!this.applyPromotionOutcome(draft, event)) {
40203
+ return;
40204
+ }
39123
40205
  if (!draft?.Success) {
39124
40206
  throw new Error(this.str(draft?.ErrorMessage, "Could not price this checkout."));
39125
40207
  }
40208
+ this.serverPricedTotal = { total: Number(draft.TotalGross ?? 0), quantity: event.quantity };
40209
+ const notice = memberDiscountNotice(draft, this.memberNoticeShown);
40210
+ if (notice) {
40211
+ this.memberNoticeShown = true;
40212
+ this.errorMessage = notice;
40213
+ return;
40214
+ }
39126
40215
  if (!draft.RequiresPayment) {
39127
40216
  await this.finish();
39128
40217
  return;
39129
40218
  }
40219
+ if (this.quoteChanged(draft, event.totalGross)) {
40220
+ return;
40221
+ }
39130
40222
  const intent = await this.post("/payment-intent", {
39131
40223
  sessionId: this.sessionId,
39132
- clientSessionKey: this.sessionKey
40224
+ clientSessionKey: this.sessionKey,
40225
+ autoRenewConsent: event.autoRenewConsent === true
39133
40226
  });
39134
40227
  if (!intent?.Success) {
39135
40228
  throw new Error(this.str(intent?.ErrorMessage, "Could not start payment."));
@@ -39147,7 +40240,14 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39147
40240
  const result = await this.stripe.confirmCardPayment(String(intent.ClientSecret), {
39148
40241
  payment_method: {
39149
40242
  card: this.card,
39150
- billing_details: { email: event.email }
40243
+ billing_details: {
40244
+ email: event.email,
40245
+ address: {
40246
+ country: event.billingAddress.Country,
40247
+ state: event.billingAddress.StateProvince,
40248
+ postal_code: event.billingAddress.PostalCode
40249
+ }
40250
+ }
39151
40251
  }
39152
40252
  });
39153
40253
  if (result.error) {
@@ -39170,6 +40270,22 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39170
40270
  this.cdr.detectChanges();
39171
40271
  }
39172
40272
  }
40273
+ /**
40274
+ * Stop before charging when the server's total differs from what the buyer was shown. Tax
40275
+ * depends on the billing location, so the first press of Pay is also the first time the total
40276
+ * including tax is known; the buyer sees it and presses Pay again.
40277
+ */
40278
+ quoteChanged(draft, shownTotal) {
40279
+ const total = typeof draft.TotalGross === "number" ? draft.TotalGross : 0;
40280
+ const tax = typeof draft.Tax === "number" ? draft.Tax : 0;
40281
+ if (Math.abs(total - shownTotal) <= 5e-3) {
40282
+ return false;
40283
+ }
40284
+ this.quotedTotal = total;
40285
+ this.quotedTax = tax > 0 ? tax : null;
40286
+ this.errorMessage = tax > 0 ? `The total is ${total.toFixed(2)}, including ${tax.toFixed(2)} sales tax. Review it and press Pay again.` : `The total is ${total.toFixed(2)}. Review it and press Pay again.`;
40287
+ return true;
40288
+ }
39173
40289
  async finish() {
39174
40290
  this.rememberCompleting(this.sessionId);
39175
40291
  const done = await this.post("/complete", {
@@ -39191,14 +40307,49 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39191
40307
  // The applied promotion code, once the checkout takes one.
39192
40308
  coupon: null
39193
40309
  }));
40310
+ this.cdr.detectChanges();
40311
+ const access = this.trackAccess();
39194
40312
  if (done.AccountStep === true) {
39195
40313
  await this.loadAccount();
39196
40314
  } else {
39197
40315
  this.forgetCompleting();
39198
40316
  this.leaveIfDone();
39199
40317
  }
40318
+ await access;
39200
40319
  this.cdr.detectChanges();
39201
40320
  }
40321
+ /**
40322
+ * Asks whether the order's access is ready until it is, it has failed, or the wait runs out.
40323
+ * Never throws: a status that cannot be read leaves the confirmation as it is. Holds the
40324
+ * redirect while it runs, and follows it once it ends if nothing else is left to do.
40325
+ */
40326
+ async trackAccess() {
40327
+ this.accessTracking = true;
40328
+ try {
40329
+ const deadline = Date.now() + this.accessPollTimeoutMs;
40330
+ for (; ; ) {
40331
+ let state = null;
40332
+ try {
40333
+ state = ReadAccessState(await this.post("/access-status", { sessionId: this.sessionId, clientSessionKey: this.sessionKey }));
40334
+ } catch {
40335
+ return;
40336
+ }
40337
+ if (state === null || state === "NotTracked")
40338
+ return;
40339
+ if (state !== this.accessState) {
40340
+ this.accessState = state;
40341
+ this.dispatch(CHECKOUT_ACCESS_STATE_EVENT, { state });
40342
+ this.cdr.detectChanges();
40343
+ }
40344
+ if (IsFinalAccessState(state) || Date.now() >= deadline)
40345
+ return;
40346
+ await new Promise((resolve) => setTimeout(resolve, this.accessPollIntervalMs));
40347
+ }
40348
+ } finally {
40349
+ this.accessTracking = false;
40350
+ this.leaveIfDone();
40351
+ }
40352
+ }
39202
40353
  /** Asks for the account step of the completed checkout. The host is asked again only after a failure. */
39203
40354
  async loadAccount() {
39204
40355
  this.accountLoading = true;
@@ -39216,6 +40367,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39216
40367
  }
39217
40368
  if (IsAccountSettled(this.account))
39218
40369
  this.forgetCompleting();
40370
+ this.syncAccountState();
39219
40371
  this.leaveIfDone();
39220
40372
  this.cdr.detectChanges();
39221
40373
  }
@@ -39250,6 +40402,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39250
40402
  this.account = account;
39251
40403
  if (IsAccountSettled(account))
39252
40404
  this.forgetCompleting();
40405
+ this.syncAccountState();
39253
40406
  return true;
39254
40407
  } catch {
39255
40408
  return false;
@@ -39275,6 +40428,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39275
40428
  this.account = ReadCheckoutAccount(res.Account) ?? this.account;
39276
40429
  if (IsAccountSettled(this.account))
39277
40430
  this.forgetCompleting();
40431
+ this.syncAccountState();
39278
40432
  if (res.Success) {
39279
40433
  this.passwordSet = true;
39280
40434
  this.password = "";
@@ -39295,12 +40449,25 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39295
40449
  if (this.account)
39296
40450
  this.account = { ...this.account, CanSetPassword: false };
39297
40451
  this.forgetCompleting();
40452
+ this.syncAccountState();
39298
40453
  this.leaveIfDone();
39299
40454
  }
40455
+ /**
40456
+ * `PASSWORD` while the account step's password form shows, and `SUCCESS` once it no longer does.
40457
+ * Nothing is sent when the form never showed: `finish()` has already reported `SUCCESS`, and a
40458
+ * reload that resumes a settled step should not report a second sale.
40459
+ */
40460
+ syncAccountState() {
40461
+ if (this.account?.CanSetPassword) {
40462
+ this.setState("PASSWORD");
40463
+ } else if (this.state === "PASSWORD") {
40464
+ this.setState("SUCCESS");
40465
+ }
40466
+ }
39300
40467
  /** Follows the widget's redirect once nothing is left for the buyer to do here. */
39301
40468
  leaveIfDone() {
39302
- if (this.config?.redirectUrl && !this.accountLoading && MayRedirect(this.account, this.accountDismissed)) {
39303
- window.location.href = this.config.redirectUrl;
40469
+ if (this.config?.redirectUrl && !this.accountLoading && !this.accessTracking && MayRedirect(this.account, this.accountDismissed)) {
40470
+ window.location.href = WithOrderReference(this.config.redirectUrl, this.orderNumber, window.location.href);
39304
40471
  }
39305
40472
  }
39306
40473
  /** Reports a state the host page can track; repeats of the same state are not re-sent. */
@@ -39375,6 +40542,10 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39375
40542
  if (apiRoot) {
39376
40543
  this.apiRoot = apiRoot.replace(/\/+$/, "");
39377
40544
  }
40545
+ const memberToken = el.getAttribute("member-token") || el.getAttribute("data-member-token");
40546
+ if (memberToken) {
40547
+ this.memberToken = memberToken;
40548
+ }
39378
40549
  this.readConversationAttributes();
39379
40550
  el.addEventListener?.(CHECKOUT_RESET_REQUEST_EVENT, this.onResetRequested);
39380
40551
  }
@@ -39464,17 +40635,17 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39464
40635
  static \u0275fac = function CheckoutPublicHostComponent_Factory(__ngFactoryType__) {
39465
40636
  return new (__ngFactoryType__ || _CheckoutPublicHostComponent)();
39466
40637
  };
39467
- static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _CheckoutPublicHostComponent, selectors: [["mj-orders-checkout"]], inputs: { slug: "slug", apiRoot: "apiRoot" }, decls: 5, vars: 1, consts: [[1, "mj-checkout-public"], ["role", "alert", 1, "mj-widget-error-banner"], ["role", "status", 1, "mj-checkout-success"], ["role", "status", 1, "mj-checkout-public__status"], ["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-account__msg"], [1, "mj-checkout-account"], [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"], [3, "config", "distributionSlug", "sessionKey", "isProcessing", "isPaymentReady", "stripePaymentMethodId", "prefillEmail", "errorMessage"], [3, "submitted", "cancelled", "config", "distributionSlug", "sessionKey", "isProcessing", "isPaymentReady", "stripePaymentMethodId", "prefillEmail", "errorMessage"]], template: function CheckoutPublicHostComponent_Template(rf, ctx) {
40638
+ static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _CheckoutPublicHostComponent, selectors: [["mj-orders-checkout"]], inputs: { slug: "slug", apiRoot: "apiRoot", memberToken: "memberToken" }, decls: 5, vars: 1, consts: [[1, "mj-checkout-public"], ["role", "alert", 1, "mj-widget-error-banner"], ["role", "status", 1, "mj-checkout-success"], ["role", "status", 1, "mj-checkout-public__status"], ["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"], [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) {
39468
40639
  if (rf & 1) {
39469
40640
  \u0275\u0275elementStart(0, "div", 0);
39470
- \u0275\u0275conditionalCreate(1, CheckoutPublicHostComponent_Conditional_1_Template, 2, 1, "div", 1)(2, CheckoutPublicHostComponent_Conditional_2_Template, 11, 3, "div", 2)(3, CheckoutPublicHostComponent_Conditional_3_Template, 2, 0, "p", 3)(4, CheckoutPublicHostComponent_Conditional_4_Template, 2, 2);
40641
+ \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, 2, 0, "p", 3)(4, CheckoutPublicHostComponent_Conditional_4_Template, 2, 2);
39471
40642
  \u0275\u0275elementEnd();
39472
40643
  }
39473
40644
  if (rf & 2) {
39474
40645
  \u0275\u0275advance();
39475
40646
  \u0275\u0275conditional(ctx.loadError ? 1 : ctx.successMessage ? 2 : !ctx.config ? 3 : 4);
39476
40647
  }
39477
- }, dependencies: [CommonModule, MJCheckoutWidgetComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.mj-checkout-public[_ngcontent-%COMP%] {\n max-width: 580px;\n margin: 0 auto;\n}\n\n.mj-checkout-public__status[_ngcontent-%COMP%] {\n text-align: center;\n color: #64748b;\n font-size: 0.95rem;\n padding: 2rem 0;\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 font-size: 0.875rem;\n}\n\n.mj-checkout-success[_ngcontent-%COMP%] {\n text-align: center;\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n padding: 2rem 1.5rem;\n box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);\n}\n\n.mj-checkout-success__icon[_ngcontent-%COMP%] {\n width: 3rem;\n height: 3rem;\n margin: 0 auto 1rem;\n border-radius: 50%;\n background: #dcfce7;\n color: #16a34a;\n font-size: 1.5rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-checkout-success__title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n font-size: 1.5rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.mj-checkout-success__msg[_ngcontent-%COMP%], \n.mj-checkout-success__order[_ngcontent-%COMP%] {\n margin: 0;\n color: #64748b;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-success__order[_ngcontent-%COMP%] {\n margin-top: 0.75rem;\n font-weight: 600;\n color: #334155;\n}\n\n\n\n.mj-checkout-account[_ngcontent-%COMP%] {\n margin: 1.5rem auto 0;\n max-width: 320px;\n text-align: left;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.mj-checkout-account__title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n font-size: 1.05rem;\n font-weight: 700;\n color: #0f172a;\n text-align: center;\n}\n\n.mj-checkout-account__label[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n font-weight: 600;\n color: #334155;\n}\n\n.mj-checkout-account__input[_ngcontent-%COMP%] {\n padding: 8px 10px;\n border: 1px solid #cbd5e1;\n border-radius: 6px;\n font-size: 0.95rem;\n font-family: inherit;\n}\n\n.mj-checkout-account__input[_ngcontent-%COMP%]:focus {\n outline: none;\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-checkout-account__error[_ngcontent-%COMP%] {\n margin: 4px 0 0;\n color: #991b1b;\n font-size: 0.85rem;\n}\n\n.mj-checkout-account__submit[_ngcontent-%COMP%] {\n margin-top: 10px;\n padding: 10px;\n border: 0;\n border-radius: 6px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-weight: 600;\n cursor: pointer;\n}\n\n.mj-checkout-account__skip[_ngcontent-%COMP%] {\n padding: 6px;\n border: 0;\n background: none;\n color: #64748b;\n font-size: 0.85rem;\n cursor: pointer;\n}\n\n.mj-checkout-account__submit[_ngcontent-%COMP%]:disabled, \n.mj-checkout-account__skip[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mj-checkout-account__msg[_ngcontent-%COMP%] {\n margin: 1rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-account__note[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n color: #475569;\n font-size: 0.85rem;\n line-height: 1.45;\n text-align: center;\n}\n\n.mj-checkout-account--actions[_ngcontent-%COMP%] {\n margin-top: 0.75rem;\n}"] });
40648
+ }, dependencies: [CommonModule, MJCheckoutWidgetComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.mj-checkout-public[_ngcontent-%COMP%] {\n max-width: 580px;\n margin: 0 auto;\n}\n\n.mj-checkout-public__status[_ngcontent-%COMP%] {\n text-align: center;\n color: #64748b;\n font-size: 0.95rem;\n padding: 2rem 0;\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 font-size: 0.875rem;\n}\n\n.mj-checkout-success[_ngcontent-%COMP%] {\n text-align: center;\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n padding: 2rem 1.5rem;\n box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);\n}\n\n.mj-checkout-success__icon[_ngcontent-%COMP%] {\n width: 3rem;\n height: 3rem;\n margin: 0 auto 1rem;\n border-radius: 50%;\n background: #dcfce7;\n color: #16a34a;\n font-size: 1.5rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-checkout-success__title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n font-size: 1.5rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.mj-checkout-success__msg[_ngcontent-%COMP%], \n.mj-checkout-success__order[_ngcontent-%COMP%] {\n margin: 0;\n color: #64748b;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-success__order[_ngcontent-%COMP%] {\n margin-top: 0.75rem;\n font-weight: 600;\n color: #334155;\n}\n\n\n\n.mj-checkout-success__access[_ngcontent-%COMP%] {\n margin: 0.75rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n}\n\n.mj-checkout-success__access.is-failed[_ngcontent-%COMP%] {\n color: #991b1b;\n}\n\n\n\n.mj-checkout-account[_ngcontent-%COMP%] {\n margin: 1.5rem auto 0;\n max-width: 320px;\n text-align: left;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.mj-checkout-account__title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n font-size: 1.05rem;\n font-weight: 700;\n color: #0f172a;\n text-align: center;\n}\n\n.mj-checkout-account__label[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n font-weight: 600;\n color: #334155;\n}\n\n.mj-checkout-account__input[_ngcontent-%COMP%] {\n padding: 8px 10px;\n border: 1px solid #cbd5e1;\n border-radius: 6px;\n font-size: 0.95rem;\n font-family: inherit;\n}\n\n.mj-checkout-account__input[_ngcontent-%COMP%]:focus {\n outline: none;\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-checkout-account__error[_ngcontent-%COMP%] {\n margin: 4px 0 0;\n color: #991b1b;\n font-size: 0.85rem;\n}\n\n.mj-checkout-account__submit[_ngcontent-%COMP%] {\n margin-top: 10px;\n padding: 10px;\n border: 0;\n border-radius: 6px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-weight: 600;\n cursor: pointer;\n}\n\n.mj-checkout-account__skip[_ngcontent-%COMP%] {\n padding: 6px;\n border: 0;\n background: none;\n color: #64748b;\n font-size: 0.85rem;\n cursor: pointer;\n}\n\n.mj-checkout-account__submit[_ngcontent-%COMP%]:disabled, \n.mj-checkout-account__skip[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mj-checkout-account__msg[_ngcontent-%COMP%] {\n margin: 1rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-account__note[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n color: #475569;\n font-size: 0.85rem;\n line-height: 1.45;\n text-align: center;\n}\n\n.mj-checkout-account--actions[_ngcontent-%COMP%] {\n margin-top: 0.75rem;\n}"] });
39478
40649
  };
39479
40650
  (() => {
39480
40651
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CheckoutPublicHostComponent, [{
@@ -39490,6 +40661,9 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39490
40661
  @if (orderNumber) {
39491
40662
  <p class="mj-checkout-success__order">Order {{ orderNumber }}</p>
39492
40663
  }
40664
+ @if (accessMessage) {
40665
+ <p class="mj-checkout-success__access" [class.is-failed]="accessState === 'Failed'" role="status">{{ accessMessage }}</p>
40666
+ }
39493
40667
  @if (accountLoading) {
39494
40668
  <p class="mj-checkout-account__msg" role="status">Setting up your account\u2026</p>
39495
40669
  } @else if (account?.CanSetPassword) {
@@ -39549,21 +40723,30 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39549
40723
  [stripePaymentMethodId]="stripePaymentMethodId"
39550
40724
  [prefillEmail]="prefillEmail"
39551
40725
  [errorMessage]="errorMessage"
40726
+ [appliedPromotion]="appliedPromotion"
40727
+ [serverPricedTotal]="serverPricedTotal"
40728
+ [promotionError]="promotionError"
40729
+ (promotionCodeApplied)="onPromotionCodeApplied($event)"
40730
+ [quotedTotal]="quotedTotal"
40731
+ [quotedTax]="quotedTax"
39552
40732
  (submitted)="onSubmitted($event)"
39553
- (cancelled)="onCancelled()">
40733
+ (cancelled)="onCancelled()"
40734
+ (quoteInvalidated)="onQuoteInvalidated()">
39554
40735
  </mj-checkout-widget>
39555
40736
  }
39556
40737
  }
39557
40738
  </div>
39558
- `, styles: [":host {\n display: block;\n}\n\n.mj-checkout-public {\n max-width: 580px;\n margin: 0 auto;\n}\n\n.mj-checkout-public__status {\n text-align: center;\n color: #64748b;\n font-size: 0.95rem;\n padding: 2rem 0;\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 font-size: 0.875rem;\n}\n\n.mj-checkout-success {\n text-align: center;\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n padding: 2rem 1.5rem;\n box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);\n}\n\n.mj-checkout-success__icon {\n width: 3rem;\n height: 3rem;\n margin: 0 auto 1rem;\n border-radius: 50%;\n background: #dcfce7;\n color: #16a34a;\n font-size: 1.5rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-checkout-success__title {\n margin: 0 0 0.5rem;\n font-size: 1.5rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.mj-checkout-success__msg,\n.mj-checkout-success__order {\n margin: 0;\n color: #64748b;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-success__order {\n margin-top: 0.75rem;\n font-weight: 600;\n color: #334155;\n}\n\n/* Post-payment account step: set a password for the account the host created (#292). */\n.mj-checkout-account {\n margin: 1.5rem auto 0;\n max-width: 320px;\n text-align: left;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.mj-checkout-account__title {\n margin: 0 0 0.5rem;\n font-size: 1.05rem;\n font-weight: 700;\n color: #0f172a;\n text-align: center;\n}\n\n.mj-checkout-account__label {\n font-size: 0.85rem;\n font-weight: 600;\n color: #334155;\n}\n\n.mj-checkout-account__input {\n padding: 8px 10px;\n border: 1px solid #cbd5e1;\n border-radius: 6px;\n font-size: 0.95rem;\n font-family: inherit;\n}\n\n.mj-checkout-account__input:focus {\n outline: none;\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-checkout-account__error {\n margin: 4px 0 0;\n color: #991b1b;\n font-size: 0.85rem;\n}\n\n.mj-checkout-account__submit {\n margin-top: 10px;\n padding: 10px;\n border: 0;\n border-radius: 6px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-weight: 600;\n cursor: pointer;\n}\n\n.mj-checkout-account__skip {\n padding: 6px;\n border: 0;\n background: none;\n color: #64748b;\n font-size: 0.85rem;\n cursor: pointer;\n}\n\n.mj-checkout-account__submit:disabled,\n.mj-checkout-account__skip:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mj-checkout-account__msg {\n margin: 1rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-account__note {\n margin: 0 0 0.5rem;\n color: #475569;\n font-size: 0.85rem;\n line-height: 1.45;\n text-align: center;\n}\n\n.mj-checkout-account--actions {\n margin-top: 0.75rem;\n}\n"] }]
40739
+ `, styles: [":host {\n display: block;\n}\n\n.mj-checkout-public {\n max-width: 580px;\n margin: 0 auto;\n}\n\n.mj-checkout-public__status {\n text-align: center;\n color: #64748b;\n font-size: 0.95rem;\n padding: 2rem 0;\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 font-size: 0.875rem;\n}\n\n.mj-checkout-success {\n text-align: center;\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n padding: 2rem 1.5rem;\n box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);\n}\n\n.mj-checkout-success__icon {\n width: 3rem;\n height: 3rem;\n margin: 0 auto 1rem;\n border-radius: 50%;\n background: #dcfce7;\n color: #16a34a;\n font-size: 1.5rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-checkout-success__title {\n margin: 0 0 0.5rem;\n font-size: 1.5rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.mj-checkout-success__msg,\n.mj-checkout-success__order {\n margin: 0;\n color: #64748b;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-success__order {\n margin-top: 0.75rem;\n font-weight: 600;\n color: #334155;\n}\n\n/* Whether the buyer's access is ready yet (#325). */\n.mj-checkout-success__access {\n margin: 0.75rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n}\n\n.mj-checkout-success__access.is-failed {\n color: #991b1b;\n}\n\n/* Post-payment account step: set a password for the account the host created (#292). */\n.mj-checkout-account {\n margin: 1.5rem auto 0;\n max-width: 320px;\n text-align: left;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.mj-checkout-account__title {\n margin: 0 0 0.5rem;\n font-size: 1.05rem;\n font-weight: 700;\n color: #0f172a;\n text-align: center;\n}\n\n.mj-checkout-account__label {\n font-size: 0.85rem;\n font-weight: 600;\n color: #334155;\n}\n\n.mj-checkout-account__input {\n padding: 8px 10px;\n border: 1px solid #cbd5e1;\n border-radius: 6px;\n font-size: 0.95rem;\n font-family: inherit;\n}\n\n.mj-checkout-account__input:focus {\n outline: none;\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-checkout-account__error {\n margin: 4px 0 0;\n color: #991b1b;\n font-size: 0.85rem;\n}\n\n.mj-checkout-account__submit {\n margin-top: 10px;\n padding: 10px;\n border: 0;\n border-radius: 6px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-weight: 600;\n cursor: pointer;\n}\n\n.mj-checkout-account__skip {\n padding: 6px;\n border: 0;\n background: none;\n color: #64748b;\n font-size: 0.85rem;\n cursor: pointer;\n}\n\n.mj-checkout-account__submit:disabled,\n.mj-checkout-account__skip:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mj-checkout-account__msg {\n margin: 1rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-account__note {\n margin: 0 0 0.5rem;\n color: #475569;\n font-size: 0.85rem;\n line-height: 1.45;\n text-align: center;\n}\n\n.mj-checkout-account--actions {\n margin-top: 0.75rem;\n}\n"] }]
39559
40740
  }], null, { slug: [{
39560
40741
  type: Input
39561
40742
  }], apiRoot: [{
39562
40743
  type: Input
40744
+ }], memberToken: [{
40745
+ type: Input
39563
40746
  }] });
39564
40747
  })();
39565
40748
  (() => {
39566
- (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(CheckoutPublicHostComponent, { className: "CheckoutPublicHostComponent", filePath: "lib/checkout-widget/checkout-public-host.component.ts", lineNumber: 84 });
40749
+ (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(CheckoutPublicHostComponent, { className: "CheckoutPublicHostComponent", filePath: "lib/checkout-widget/checkout-public-host.component.ts", lineNumber: 105 });
39567
40750
  })();
39568
40751
 
39569
40752
  // scripts/checkout-element-entry.ts