@getmicdrop/venue-calendar 4.3.38 → 4.3.39

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 (102) hide show
  1. package/dist/{ArrowLeftIcon-bH5d6LQO.js → ArrowLeftIcon-BMuyNOqe.js} +1 -1
  2. package/dist/{BlockPlaceholder-yXhu9HrQ.js → BlockPlaceholder-CUusOhOf.js} +1 -1
  3. package/dist/{Calendar-BjE02HrG.js → Calendar-Dy-jZDff.js} +3 -3
  4. package/dist/{CalendarFoundryView-BWaOYwqK.js → CalendarFoundryView-BWyEe7Xe.js} +23 -23
  5. package/dist/{CalendarIcon-Cg9UUTeu.js → CalendarIcon-B1JasL-W.js} +1 -1
  6. package/dist/{CartView-YRimdA6F.js → CartView-CyU9g9ss.js} +14 -14
  7. package/dist/{Checkbox-24CWEsty.js → Checkbox-BtJwg_CF.js} +1 -0
  8. package/dist/{Checkout-rsX9zvb7.js → Checkout-BGXlW2j2.js} +14 -20
  9. package/dist/{Checkout-djS62Y9-.js → Checkout-DrP1KLR_.js} +15 -15
  10. package/dist/{CheckoutTimer-D3XNCZ36.js → CheckoutTimer-CAKT63di.js} +3 -3
  11. package/dist/{ChevronDownIcon-BA40Kl0C.js → ChevronDownIcon--mG1fNDx.js} +1 -1
  12. package/dist/{ClockIcon-DjC-doTv.js → ClockIcon-B8ahXV8G.js} +1 -1
  13. package/dist/{CloseIcon-BdwmaxDK.js → CloseIcon-C9guTa4C.js} +1 -1
  14. package/dist/{CollectionView-DJMd-lQ5.js → CollectionView-BhBCM-01.js} +6 -6
  15. package/dist/{CropImage-Ct6MRg_a.js → CropImage-BFtvLjTE.js} +1 -1
  16. package/dist/{Event-ETzQP0s-.js → Event-DyX1UrZe.js} +18 -18
  17. package/dist/{EventPage-BDmpGhgp.js → EventPage-DxyEqU7R.js} +14 -14
  18. package/dist/{Input-o-1w57H2.js → Input-DNzDcf6I.js} +1 -1
  19. package/dist/{MailIcon-DCMMhuHr.js → MailIcon-Cf77TYiB.js} +1 -1
  20. package/dist/{PasswordInput-zX7J--jb.js → PasswordInput-C-BH1Do3.js} +1 -1
  21. package/dist/{RecommendationsRail-CKoChbYt.js → RecommendationsRail-CG0vCtgJ.js} +7 -7
  22. package/dist/{ScarcityBadge-CwYWJOsJ.js → ScarcityBadge-D0D6Hqp0.js} +3 -3
  23. package/dist/{SeriesPage-DccLByjM.js → SeriesPage-D9_Nn8gF.js} +3 -3
  24. package/dist/{Success-BVYGRvb8.js → Success-Db843hJe.js} +17 -17
  25. package/dist/{TagIcon-CkfQvNGi.js → TagIcon-DUY8KSZ0.js} +1 -1
  26. package/dist/{ViewTicketsEmbed-D6ZLDsJe.js → ViewTicketsEmbed-rdcE9aPB.js} +5 -5
  27. package/dist/{WarningCircleIcon-Iq24pJJf.js → WarningCircleIcon-C1-Aj9ut.js} +1 -1
  28. package/dist/{WarningTriIcon-Dw5GnHpq.js → WarningTriIcon-BrwQ58VB.js} +1 -1
  29. package/dist/api/api.cjs +1 -1
  30. package/dist/api/api.mjs +1 -1
  31. package/dist/api/authHeaders.d.ts +25 -0
  32. package/dist/api/checkout-availability.d.ts +71 -0
  33. package/dist/api/gate-password-cache.d.ts +60 -0
  34. package/dist/api/recommendations.d.ts +35 -0
  35. package/dist/api/surge-queue.d.ts +133 -0
  36. package/dist/api/types.d.ts +435 -556
  37. package/dist/{api-LOBSDFGW.js → api-DDVVRbC-.js} +3 -3
  38. package/dist/{constants-COyf9Cef.js → constants-7hsFMWgp.js} +1 -1
  39. package/dist/{copyToClipboard-C3IBl2Z1.js → copyToClipboard-4LAkJ_1y.js} +1 -1
  40. package/dist/{de-BY5vJUGN.js → de-DD9e2eok.js} +21 -3
  41. package/dist/{defaultLabels-Zp9QbN37.js → defaultLabels-BkjXKQDd.js} +20 -2
  42. package/dist/{defaults-BS-A8oEj.js → defaults-DthmKRyG.js} +2 -2
  43. package/dist/{es-jUq9nrJk.js → es-CHuPO3ex.js} +21 -3
  44. package/dist/{event-c9mHeEJz.js → event-Dew6DCL7.js} +1 -1
  45. package/dist/{event-transform-BR82y7EY.js → event-transform-CbFR1hRl.js} +4 -4
  46. package/dist/{eventStatusStream-1YtkEBw8.js → eventStatusStream-DTshTZoI.js} +1 -1
  47. package/dist/{fr-BhVwmvlV.js → fr-Ctu5i20f.js} +21 -3
  48. package/dist/{href-1o0O9xTA.js → href-B4azVXj-.js} +2 -2
  49. package/dist/i18n--YZExMpe.js +28 -0
  50. package/dist/{i18n-02Y9QRm0.js → i18n-srcm-H61.js} +6 -6
  51. package/dist/{id-CWU5ZvLv.js → id-DKYW7qEJ.js} +21 -3
  52. package/dist/imageOptimizer-Cf0BbZJ7.js +220 -0
  53. package/dist/{it-wlDmN3hH.js → it-DPWCuCsJ.js} +21 -3
  54. package/dist/{ja-DpA7hJaC.js → ja-CNSRW1XM.js} +21 -3
  55. package/dist/{ko-DdWLaFvo.js → ko--itQbcHD.js} +21 -3
  56. package/dist/locales/{4.3.38 → 4.3.39}/main/de.js +1 -1
  57. package/dist/locales/{4.3.38 → 4.3.39}/main/es.js +1 -1
  58. package/dist/locales/{4.3.38 → 4.3.39}/main/fr.js +1 -1
  59. package/dist/locales/{4.3.38 → 4.3.39}/main/id.js +1 -1
  60. package/dist/locales/{4.3.38 → 4.3.39}/main/it.js +1 -1
  61. package/dist/locales/{4.3.38 → 4.3.39}/main/ja.js +1 -1
  62. package/dist/locales/{4.3.38 → 4.3.39}/main/ko.js +1 -1
  63. package/dist/locales/{4.3.38 → 4.3.39}/main/nl.js +1 -1
  64. package/dist/locales/{4.3.38 → 4.3.39}/main/pl.js +1 -1
  65. package/dist/locales/{4.3.38 → 4.3.39}/main/pt-br.js +1 -1
  66. package/dist/locales/{4.3.38 → 4.3.39}/main/tr.js +1 -1
  67. package/dist/locales/{4.3.38 → 4.3.39}/main/zh.js +1 -1
  68. package/dist/{nl-BwxAfMRa.js → nl-BoZA1-rw.js} +21 -3
  69. package/dist/{order-totals-BEUOdkCb.js → order-totals-DFE6UVG4.js} +3 -3
  70. package/dist/{orders-_DuPjm-g.js → orders-DABdaHOy.js} +1 -1
  71. package/dist/{phoneUtils-CbiDWdEC.js → phoneUtils-CxLRaM5n.js} +1 -1
  72. package/dist/{pixels-BXobnFyk.js → pixels-BVOE_JFH.js} +2 -2
  73. package/dist/{pl-CuRdwJXc.js → pl-tC8ayoR2.js} +21 -3
  74. package/dist/{promo-BrstveEs.js → promo-B3Tj0iQF.js} +1 -1
  75. package/dist/{pt-br-BUWJLxKf.js → pt-br-CTMA1wMi.js} +21 -3
  76. package/dist/{scarcity-CwnIxi1J.js → scarcity-DqbDh1cS.js} +1 -1
  77. package/dist/seo/types.d.ts +137 -156
  78. package/dist/{serverTotals-D2-FzkdS.js → serverTotals-ClEUVCOz.js} +1 -1
  79. package/dist/{showcase-state-options-CDOHpho6.js → showcase-state-options-Dwn2NLOM.js} +1 -1
  80. package/dist/{to-event-card-props-ChcFQ_rl.js → to-event-card-props-CRaeqRxY.js} +2 -2
  81. package/dist/{tr-DTe5Urub.js → tr-CuaYXuAQ.js} +21 -3
  82. package/dist/{utils-DlMAhsnl.js → utils-kRsfuFcG.js} +2 -2
  83. package/dist/venue-calendar.css +1 -1
  84. package/dist/venue-calendar.es.js +471 -462
  85. package/dist/venue-calendar.iife.js +56 -56
  86. package/dist/venue-calendar.umd.js +56 -56
  87. package/dist/{zh-BnBN3ggx.js → zh-Bcr7RKpt.js} +21 -3
  88. package/package.json +2 -2
  89. package/dist/i18n-Dwg2jCJS.js +0 -28
  90. package/dist/imageOptimizer-DkJp4tei.js +0 -140
  91. /package/dist/locales/{4.3.38 → 4.3.39}/flow/de.js +0 -0
  92. /package/dist/locales/{4.3.38 → 4.3.39}/flow/es.js +0 -0
  93. /package/dist/locales/{4.3.38 → 4.3.39}/flow/fr.js +0 -0
  94. /package/dist/locales/{4.3.38 → 4.3.39}/flow/id.js +0 -0
  95. /package/dist/locales/{4.3.38 → 4.3.39}/flow/it.js +0 -0
  96. /package/dist/locales/{4.3.38 → 4.3.39}/flow/ja.js +0 -0
  97. /package/dist/locales/{4.3.38 → 4.3.39}/flow/ko.js +0 -0
  98. /package/dist/locales/{4.3.38 → 4.3.39}/flow/nl.js +0 -0
  99. /package/dist/locales/{4.3.38 → 4.3.39}/flow/pl.js +0 -0
  100. /package/dist/locales/{4.3.38 → 4.3.39}/flow/pt-br.js +0 -0
  101. /package/dist/locales/{4.3.38 → 4.3.39}/flow/tr.js +0 -0
  102. /package/dist/locales/{4.3.38 → 4.3.39}/flow/zh.js +0 -0
package/dist/api/api.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@getmicdrop/svelte-components/utils/logger"),t=require("@getmicdrop/svelte-components/errors"),n=require("@getmicdrop/svelte-components"),r=require("@getmicdrop/svelte-components/datetime"),i=require("@getmicdrop/svelte-components/transforms");require("@getmicdrop/svelte-components/utils/timezones"),require("@getmicdrop/svelte-components/utils/formatters"),(0,e.createLogger)(`VC:config`,{enabled:!0});var a=(0,e.createLogger)(`VC`),o=new Set;function s(e){if(e)for(let t of o)try{t(e)}catch{}}var c=`ABORTED`;function l(e,t){let n=t||void 0;return n?{...e,"X-Widget-Key":n}:e}function u(e,t){let n=`HTTP ${t}`;if(!e||typeof e!=`object`)return{message:n};let r=e,i=r.error&&typeof r.error==`object`?r.error:null,a=typeof r.code==`string`?r.code:typeof i?.code==`string`?i.code:void 0;return{message:typeof r.error==`string`?r.error:typeof i?.message==`string`?i.message:typeof r.message==`string`?r.message:n,code:a}}var d=class extends Error{code;statusCode;constructor(e,t,n){super(e),this.name=`ApiRequestError`,this.code=t,this.statusCode=n}},f={baseUrl:`https://get-micdrop.com`,timeout:3e4,retries:2,retryDelay:500,onError:e=>a.error(`API Error:`,e)};function p(e){f={...f,...e}}function m(){return{...f}}function h(){return`${f.baseUrl}/api/v2/public`}function g(){return`${f.baseUrl}/api/public`}function _(){return`${f.baseUrl}/api/orders/v2/public`}async function ee(){return``}var te=e=>new Promise(t=>setTimeout(t,e));async function v(e,t,n){let r=(t.method||`GET`).toUpperCase(),i=r===`GET`||r===`HEAD`?n.retries+1:1,a;for(let r=1;r<=i;r++){let o=new AbortController,s=setTimeout(()=>o.abort(),n.timeout),c=t.signal,l;c&&(c.aborted?o.abort():(l=()=>o.abort(),c.addEventListener(`abort`,l,{once:!0})));try{let n=await fetch(e,{...t,signal:o.signal});if(n.status>=500&&r<i)a=Error(`HTTP ${n.status}`);else return n}catch(e){if(a=e,c?.aborted)throw e}finally{clearTimeout(s),c&&l&&c.removeEventListener(`abort`,l)}r<i&&await te(n.retryDelay*2**(r-1))}throw a}async function y(e,t){return S(`GET`,e,void 0,t)}async function b(e,t,n){return S(`POST`,e,t,n)}async function ne(e,t,n){return S(`PUT`,e,t,n)}async function x(e,t){return S(`DELETE`,e,void 0,t)}async function S(e,t,n,r){let i=t.startsWith(`http`)||t.startsWith(`/api/`)?t:`${h()}${t}`,{widgetKey:a,suppressOnError:o,headers:p,...m}=r??{},g=e=>{o||f.onError(e)};try{let t=await v(i,{method:e,headers:l({"Content-Type":`application/json`,...p},a),body:n===void 0?void 0:JSON.stringify(n),...m},f);if(!t.ok){let{message:e,code:n}=u(await t.json().catch(()=>({})),t.status);return g(new d(e,n,t.status)),s(n),{success:!1,error:e,errorCode:n,statusCode:t.status}}return{success:!0,data:await t.json(),statusCode:t.status}}catch(e){if(r?.signal?.aborted)return{success:!1,error:`Request aborted`,errorCode:c,aborted:!0};let t=e instanceof Error?e.name===`AbortError`?`Request timed out`:e.message:`Unknown error`;return g(e instanceof Error?e:Error(t)),{success:!1,error:t}}}async function C(e,t){try{let n=e.startsWith(f.baseUrl),{widgetKey:r,...i}=t??{},o=await v(e,{...i,...n?{headers:l(i.headers,r)}:{}},f);if(!o.ok){let e=await o.json().catch(()=>({}));return a.error(`API request failed: ${o.status}`,e),null}return o.json()}catch(e){return a.error(`API request error:`,e),null}}function re(e){let t=e??{};return{ticketID:Number(t.TicketID??t.ticketID??0),quantity:Number(t.Quantity??t.quantity??0),priceAtReservation:Number(t.PriceAtReservation??t.priceAtReservation??0),status:String(t.Status??t.status??``)}}function ie(e){let t=e??{},r=t.Amount??t.amount,i=Number(r);return{giftCardId:Number(t.GiftCardID??t.giftCardId??0),maskedCode:String(t.MaskedCode??t.maskedCode??``),amount:r==null||!Number.isFinite(i)?null:(0,n.centsToDollars)((0,n.toCents)(i))}}function ae(e){let t=e??{};return{uuid:t.UUID??t.uuid??``,eventID:Number(t.EventID??t.eventID??0),status:t.Status??t.status??``,expiresAt:t.ExpiresAt??t.expiresAt??``,reservations:(t.Reservations??t.reservations??[]).map(re),giftCards:(t.GiftCards??t.giftCards??[]).map(ie)}}var w=[`utmSource`,`utmMedium`,`utmCampaign`,`utmContent`,`utmTerm`],oe={utmSource:`utm_source`,utmMedium:`utm_medium`,utmCampaign:`utm_campaign`,utmContent:`utm_content`,utmTerm:`utm_term`},se=`direct`;function ce(e){return e?e.trim().toLowerCase().replace(/\s+/g,`_`):``}function le(e){let t={};for(let n of w)t[n]=ce(e[n]);return t.utmSource||=se,t}function ue(e){let t={};for(let n of w)t[n]=e.get(oe[n]);return le(t)}var T={search:null,referrer:null,pageUrl:null};function de(){if(typeof window>`u`)return!0;try{return window.self===window.top}catch{return!1}}function fe(){let e=typeof window<`u`,t=de(),n=T.search??(e?window.location.search:``),r=T.referrer??(typeof document<`u`?document.referrer:``)??``,i=T.pageUrl??(e&&t?window.location.href:``);return{utm:ue(new URLSearchParams(n)),referrer:r||``,pageUrl:i||``}}var pe=null,me=!1;function he(){return typeof window<`u`&&typeof window.__tcfapi==`function`}function ge(){return typeof navigator<`u`&&navigator.globalPrivacyControl===!0}function _e(){return pe===null?he()||ge():pe}function ve(){return!_e()||me}var ye=`micdrop_session_id`,E=`micdrop_visitor_id`,be=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function D(e){return typeof e==`string`&&be.test(e)}function O(){let e=typeof crypto<`u`?crypto:void 0;if(e?.randomUUID)return e.randomUUID();let t=new Uint8Array(16);if(e?.getRandomValues)e.getRandomValues(t);else for(let e=0;e<16;e++)t[e]=Math.floor(Math.random()*256);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=[];for(let e=0;e<16;e++)n.push(t[e].toString(16).padStart(2,`0`));return`${n[0]}${n[1]}${n[2]}${n[3]}-${n[4]}${n[5]}-${n[6]}${n[7]}-${n[8]}${n[9]}-${n[10]}${n[11]}${n[12]}${n[13]}${n[14]}${n[15]}`}function xe(){let e=(0,n.getSessionStorage)(ye);return e||(e=O(),(0,n.setSessionStorage)(ye,e)),e}function Se(e){let t=(0,n.getLocalStorage)(E);if(D(t))return{id:t,createdAt:e,migrated:!0};if(t&&typeof t==`object`){let{id:n,createdAt:r}=t;if(!D(n))return null;let i=typeof r==`number`&&Number.isFinite(r),a=i?Math.min(r,e):e;return{id:n,createdAt:a,migrated:!i||a!==r}}return null}function Ce(){if(!ve())return null;let e=Date.now(),t=Se(e);if(t&&e-t.createdAt<34128e6){if(t.migrated){let e={id:t.id,createdAt:t.createdAt};(0,n.setLocalStorage)(E,e)}return t.id}let r=O();return(0,n.setLocalStorage)(E,{id:r,createdAt:e}),r}var we=`micdrop_attribution`;function Te(){let e=(0,n.getSessionStorage)(we);return!e||!e.utm||typeof e.utm.utmSource!=`string`?null:e}function k(){let e=Te()??fe();return{sessionId:xe(),visitorId:Ce(),utmSource:e.utm.utmSource,utmMedium:e.utm.utmMedium,utmCampaign:e.utm.utmCampaign,utmContent:e.utm.utmContent,utmTerm:e.utm.utmTerm,referrer:e.referrer||``}}(0,n.createLogger)(`tracking`),$state(0);function Ee(){return typeof navigator>`u`?null:navigator.language||navigator.userLanguage||null}var A=[[`es`,`es`,`es`],[`fr`,`fr`,`fr`],[`pt-br`,`pt-br`,`pt_br`],[`pt`,`pt-br`,`pt_br`],[`de`,`de`,`de`],[`ja`,`ja`,`ja`],[`zh`,`zh`,`zh`],[`ko`,`ko`,`ko`],[`it`,`it`,`it`],[`nl`,`nl`,`nl`],[`tr`,`tr`,`tr`],[`id`,`id`,`id`],[`pl`,`pl`,`pl`]];Array.from(new Set(A.map(([,e])=>e)));var j=new Map([[`en`,`en`],...A.map(([e])=>[e,e===`pt`||e===`pt-br`?`pt-BR`:e])]);function M(e){let t=e||Ee();if(!t||typeof t!=`string`)return;let n=t.toLowerCase();return j.get(n)??j.get(n.split(`-`)[0])}var N=(0,e.createLogger)(`VC`);async function De(e,n,r,i,a){let o=M(a);try{let a=await b(`${_()}/cart/${e}/payment-intent`,{productQuantities:n,...r&&Object.keys(r).length>0?{donationAmounts:r}:{},...i?{firstName:i.firstName,lastName:i.lastName,email:i.email,phone:i.phone??``,questionAnswer:i.questionAnswer??``,mailingList:i.mailingList??!1}:{},attribution:k(),...o?{locale:o}:{}});if(!a.success)throw N.error(`Payment intent creation failed:`,a.error),new t.ApiError(a.error||`Failed to create payment intent`,a.statusCode??0,{endpoint:`${_()}/cart/${e}/payment-intent`,method:`POST`});return N.debug(`Payment intent created:`,a.data),a.data}catch(e){return N.error(`createPaymentIntent error:`,e),null}}async function Oe(e,t){if(!e)return null;try{let n=await y(`${_()}/cart/${e}`);if(!n.success)return null;let{uuid:r,eventID:i,status:a,expiresAt:o,reservations:s,giftCards:c}=ae(n.data);return a!==`reserved`&&a!==`active`||t!==void 0&&i!==Number(t)?null:{uuid:r,eventID:i,status:a,expiresAt:o,reservations:s,giftCards:c}}catch(e){return N.error(`getCartByUUID error:`,e),null}}async function ke(e,t,n){try{let r={};for(let[e,n]of Object.entries(t)){let t=typeof e==`number`?e:parseInt(e,10);!Number.isNaN(t)&&n>0&&(r[t]=n)}let i={};if(n)for(let[e,t]of Object.entries(n)){let n=typeof e==`number`?e:parseInt(e,10);!Number.isNaN(n)&&t>0&&(i[n]=t)}let a=await fetch(`${_()}/cart/${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({quantities:r,...Object.keys(i).length>0?{donationAmounts:i}:{}})});if(!a.ok){let e=await a.json().catch(()=>({}));return N.error(`Cart update failed:`,e),!1}return!0}catch(e){return N.error(`updateCartQuantities error:`,e),!1}}async function Ae(e){try{let t=await b(`${h()}/orders/complete/${e}`);return t.success?{success:!0,message:t.data?.message}:{success:!1,error:t.error||`Failed to complete reservation`}}catch(e){return N.error(`Error completing reservation:`,e),{success:!1,error:`Network error completing reservation`}}}async function je(e){try{let t=await b(`${h()}/orders/cancel/${e}`);return t.success?{success:!0,message:t.data?.message}:{success:!1,error:t.error||`Failed to cancel reservation`}}catch(e){return N.error(`Error cancelling reservation:`,e),{success:!1,error:`Network error cancelling reservation`}}}async function Me(e,t){try{let n=await b(`${h()}/orders/create`,{eventID:e,promoCode:t,attribution:k()});return n.success?n.data:(N.error(`Create order failed:`,n.error),null)}catch(e){return N.error(`createOrder error:`,e),null}}async function Ne(e){return C(`${h()}/orders/${e}`)}async function Pe(e,t,n){let r=M(n);try{let n=await b(`${_()}/validatePaymentIntent/${e}`,{...t,attribution:k(),...r?{locale:r}:{}});if(!n.success)return N.error(`Payment validation failed:`,n.error),{success:!1,status:`failed`,error:n.error||`Payment validation failed`};let i=n.data;return i.eventCanceled||i.eventPostponed?{success:!1,status:`failed`,eventCanceled:i.eventCanceled,eventPostponed:i.eventPostponed}:{success:!0,status:i.status||`Payment succeeded`,orderUUID:i.orderUUID||i.uuid}}catch(e){return N.error(`validatePaymentIntent error:`,e),null}}async function Fe(e){try{let t=await b(`${h()}/orders/extend-session`,{orderUuid:e});if(!t.success)return{success:!1,error:t.error||`Failed to extend session`,statusCode:t.statusCode};let n=t.data;return{success:!0,newExpiryTime:n.newExpiryTime,remainingExtensions:n.remainingExtensions}}catch(e){return N.error(`Error extending checkout session:`,e),{success:!1,error:`Network error extending session`}}}async function Ie(e){try{let t=await y(`${h()}/orders/session/${e}`);if(!t.success)return{error:t.error||`No active session found`,notFound:t.statusCode===404};let n=t.data;return{expiresAt:n.expiresAt,extensionCount:n.extensionCount,remainingExtensions:n.remainingExtensions,canExtend:n.canExtend,reservationCount:n.reservationCount,eventStatus:n.eventStatus}}catch(e){return N.error(`Error getting session status:`,e),{error:`Network error getting session status`}}}async function Le(e={eventID:``}){try{let t=await b(`${h()}/orders/create`,{...e,attribution:k()});return t.success?t.data?.uuid??null:(N.error(`Order initiation failed:`,t.error),null)}catch(e){return N.error(`initiateOrder error:`,e),null}}async function Re(e){if(typeof window>`u`)return;let t=ce(new URLSearchParams(window.location.search).get(`utm_source`))||`direct`;try{await fetch(`${h()}/utm/${e}/${encodeURIComponent(t)}`)}catch(e){N.error(`UTM tracking failed:`,e)}}var P=(0,e.createLogger)(`VC`);function ze(e,t){if(e===404)return`Promo code isn't valid.`;let n=(t??``).toLowerCase();return e===400?n.includes(`not yet active`)?`Promo code doesn't apply.`:n.includes(`expired`)?`Promo code expired.`:n.includes(`limit`)?`Promo code has reached its limit.`:`Promo code isn't valid.`:`Failed to validate code`}async function Be(e,t){try{if(!t||!t.trim())return{valid:!1,error:`Promo code is required`};let n=await y(`/promo-codes/validate/${e}/${encodeURIComponent(t.trim())}`);if(!n.success)return{valid:!1,error:ze(n.statusCode,n.error)};let r=n.data;return{valid:r.valid??!0,revealHiddenTickets:r.revealHiddenTickets,revealTicketIds:r.revealTicketIds,provideDiscount:r.provideDiscount,discountType:r.discountType,amount:r.discount??r.amount,code:r.name||r.code||t,appliesToAllTickets:r.appliesToAllTickets,applyToTicketIds:r.applyToTicketIds}}catch(e){return P.error(`Error validating promo code:`,e),{valid:!1,error:`Network error validating code`}}}async function Ve(e){try{let t=await y(`/promo-codes/check/${e}`);return!t.success||t.data.hasPromoCodes===!0}catch(e){return P.error(`Error checking promo codes availability:`,e),!0}}async function He(e,t,n){try{let r={promoCode:t};n&&Object.keys(n).length>0&&(r.productQuantities=n);let i=await b(`${_()}/cart/${e}/apply-promo`,r);return i.success?{success:!0}:{success:!1,error:i.error||`Failed to apply promo code`}}catch(e){return P.error(`Error applying promo code:`,e),{success:!1,error:`Network error applying code`}}}async function Ue(e){try{let t=await b(`/orders/${e}/remove-promo`);return t.success?{success:!0}:{success:!1,error:t.error||`Failed to remove promo code`}}catch(e){return P.error(`Error removing promo code:`,e),{success:!1,error:`Network error removing code`}}}function We(e){let t=e??{};return{performers:Array.isArray(t.performers)?t.performers:[],showPerformers:t.showPerformers===!0}}function F(e){return{ok:!0,data:e}}function I(e){return{ok:!1,error:e}}function L(e){return{ok:!1,error:e,notFound:!0}}function Ge(e){return e.ok}function Ke(e){return!e.ok}function R(e,t){return e.ok?e.data:t}var z=`/api/v2/public`,B=`/api/orders/v2/public`,V=`/api/orders/v2`,qe=`00000000-0000-0000-0000-000000000000`,H=qe;`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}${H}`,`${B}`,`${B}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${V}`,`${V}`,`${B}`,`${B}`,`${B}`,`${B}`,`${z}`,`${z}${H}`,`${z}`,`${z}`;var U=(0,e.createLogger)(`VC`),W=new Map;async function Je(e,t=fetch,n){let r=n?`${e}:pw`:String(e);if(t===fetch){let e=W.get(r);if(e)return e}let i=(async()=>{try{let r=await t(n?`${h()}/events/${e}?password=${encodeURIComponent(n)}`:`${h()}/events/${e}`);if(!r.ok)return r.status===404?L(`event_not_found`):(U.error(`Failed to fetch event details: ${r.status}`),I(`event_fetch_failed`));let i=await r.json();return i?F(i):L(`event_not_found`)}catch(e){return U.error(`Error fetching event details:`,e),I(`event_fetch_failed`)}})();return t===fetch&&(W.set(r,i),i.finally(()=>{W.get(r)===i&&W.delete(r)})),i}async function Ye(e,t=fetch,n){let r=await Je(e,t,n);return r.ok?r.data:null}async function G(e,t,n=e=>e){try{let r=await C(e);return r?F(n(r)):(U.error(`Failed to load (${t}): network or server error`),I(t))}catch(e){return U.error(`Error loading (${t}):`,e),I(t)}}function K(e){return Array.isArray(e)?e:[]}async function Xe(e,t){let n=t?.trim(),r=n?`?promoCode=${encodeURIComponent(n)}`:``;return G(`${h()}/tickets/event/${e}${r}`,`tickets_fetch_failed`,K)}async function Ze(e,t){return R(await Xe(e,t),[])}async function Qe(e){return e?G(`${h()}/events/${e}/performers`,`performers_fetch_failed`,e=>We(e)):(U.warn(`fetchEventPerformers called without eventId`),I(`performers_missing_event_id`))}async function $e(e){return R(await Qe(e),{performers:[],showPerformers:!1})}async function et(e){return e?G(`${h()}/venues/organization/${e}`,`venues_fetch_failed`,K):(U.warn(`fetchAllVenues called without orgId`),I(`venues_missing_org_id`))}async function tt(e){return R(await et(e),[])}async function nt(e){return e?G(`${h()}/events/venue/${e}`,`venue_events_fetch_failed`,K):(U.warn(`fetchVenueEvents called without venueId`),I(`venue_events_missing_venue_id`))}async function rt(e){return R(await nt(e),[])}function it(e){return Array.isArray(e)?e:Array.isArray(e.events)?e.events:[]}var q=new Map;function at(e,t,n){if(!n?.fresh){let t=q.get(e);if(t)return t}let r=G(e,t,e=>it(e));return q.set(e,r),r.finally(()=>{q.get(e)===r&&q.delete(e)}),r}async function ot(e,t,n,r){return at(`${h()}/events/venue/${e}/month/${t}/${n}`,`month_events_fetch_failed`,r)}async function st(e,t,n){return R(await ot(e,t,n),[])}async function ct(e,t,n,r){return at(`${h()}/events/organization/${e}/month/${t}/${n}`,`org_month_events_fetch_failed`,r)}async function lt(e,t,n){return R(await ct(e,t,n),[])}async function ut(e){return G(`${h()}/series/${e}/occurrences`,`series_occurrences_fetch_failed`)}async function dt(e){let t=await ut(e);return t.ok?t.data:null}async function ft(e,t){return G(`${h()}/series/${e}/occurrences?venueId=${t}`,`series_cta_fetch_failed`)}async function pt(e,t){let n=await ft(e,t);return n.ok?n.data:null}async function mt(e,n){try{let r=n?`?slug=${encodeURIComponent(n)}`:``,i=await C(`${h()}/resolve/${encodeURIComponent(String(e))}${r}`);if(!i||!i.type)throw new t.NotFoundError(`entity`,String(e));return i}catch(e){return U.error(`Error resolving public entity:`,e),null}}async function ht(e,n){try{let r=await C(n?`${h()}/collections/${e}?password=${encodeURIComponent(n)}`:`${h()}/collections/${e}`);if(!r)throw new t.NotFoundError(`collection`,String(e));return r}catch(e){return U.error(`Error fetching collection:`,e),null}}async function gt(e,t){try{return(await C(`${h()}/collections/${e}/check-password`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:t})}))?.valid===!0}catch(e){return U.error(`Error checking collection password:`,e),!1}}async function _t(e,t){try{let n=await C(`${h()}/events/${e}/check-password`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:t})});return typeof n==`boolean`?{valid:n}:{valid:n?.valid===!0}}catch(e){return U.error(`Error checking event password:`,e),{valid:!1}}}async function vt(e,t){try{let n=t?`${h()}/events/venue/${t}`:e?`${h()}/venues/organization/${e}`:`${h()}/venues/${qe}`;return(await fetch(n,{method:`HEAD`})).status<500}catch(e){return U.error(`Network connection test failed:`,e),!1}}var yt=`get-micdrop.com`;function bt(e){let t=typeof e==`string`?e.trim():``;return t?`https://${encodeURIComponent(t)}.${yt}`:``}var J=(0,e.createLogger)(`VC`);async function xt(e){try{if(!e)return J.warn(`getVenue called without venueId`),null;let t=await y(`/venues/${e}`);return t.success?t.data??null:(J.error(`Failed to fetch venue: ${t.statusCode}`),null)}catch(e){return J.error(`Error fetching venue:`,e),null}}async function St(e){let t=await xt(e);return t?{serviceFeePercentage:t.serviceFeePercentage??0,serviceFeeCents:t.serviceFeeCents==null?0:t.serviceFeeCents,taxPercentage:t.taxPercentage??0}:null}async function Ct(e){try{if(!e)return J.warn(`getVenueBySlug called without slug`),null;let t=await y(`/venues/slug/${encodeURIComponent(e)}`);return t.success?t.data??null:(J.error(`Failed to fetch venue by slug: ${t.statusCode}`),null)}catch(e){return J.error(`Error fetching venue by slug:`,e),null}}async function wt(e){let t=bt(e);if(!t)return!1;try{let e=await y(`/sites/by-host/${encodeURIComponent(new URL(t).host)}`);return!!(e.success&&e.data)}catch(e){return J.warn(`hasPublishedSite failed:`,e),!1}}function Y(e,t){return e==null||t(e)}function Tt(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.valid===!0&&Number.isInteger(t.appliedAmount)&&typeof t.remainingTotal==`number`&&Number.isFinite(t.remainingTotal)&&Y(t.giftCardCode,e=>typeof e==`string`)&&Y(t.giftCardBalance,e=>typeof e==`number`&&Number.isFinite(e))&&Y(t.fullyCoveredByCard,e=>typeof e==`boolean`)}var Et=`We couldn't apply that gift card. Please try again.`;function Dt(e){if(!Tt(e))return{valid:!1,error:Et};let t=e,r=(0,n.centsToDollars)((0,n.toCents)(t.appliedAmount)),i=t.remainingTotal,a=t.fullyCoveredByCard??i<=0,o=!a;return{valid:!0,giftCardCode:t.giftCardCode??void 0,giftCardAmount:r,giftCardBalance:t.giftCardBalance??void 0,paymentType:a?`gift_card_only`:`split`,stripeAmount:i,orderTotal:r+i,requiresStripe:o}}var X=(0,e.createLogger)(`VC`);async function Ot(e){try{let n=await b(`${_()}/gift-cards/purchase/create`,e);if(!n.success)throw X.error(`Gift card purchase creation failed:`,n.error),new t.ApiError(n.error||`Failed to create gift card purchase`,n.statusCode??0,{endpoint:`${_()}/gift-cards/purchase/create`,method:`POST`});return X.debug(`Gift card purchase created:`,n.data),n.data}catch(e){return X.error(`Gift card purchase creation error:`,e),null}}async function kt(e,t){try{let n=await b(`${_()}/cart/${e}/apply-gift-card`,{giftCardCode:t});if(!n.success)return n.statusCode===429?{valid:!1,error:`Too many attempts. Please wait a moment and try again.`}:(X.error(`Apply gift card failed:`,n.error),{valid:!1,error:n.error||`Invalid gift card code`});let r=Dt(n.data);return r.valid||X.error(`Apply gift card returned an unusable payload:`,n.data),r}catch(e){return X.error(`applyGiftCard error:`,e),{valid:!1,error:`Network error. Please check your connection and try again.`}}}async function At(e,t){try{let n=t?.giftCardId?{giftCardId:t.giftCardId}:t?.code?{giftCardCode:t.code}:null,r=await x(`${_()}/cart/${e}/gift-card`,n?{body:JSON.stringify(n)}:void 0);if(!r.success)return X.error(`Remove gift card failed:`,r.error),{success:!1,error:r.error||`Failed to remove gift card`};let i=r.data??{},a=i.newTotal??i.NewTotal;return{success:!0,...typeof a==`number`?{remainingTotal:a}:{}}}catch(e){return X.error(`removeGiftCard error:`,e),{success:!1,error:`Network error. Please check your connection and try again.`}}}async function jt(e,t,r){let i=M(r);try{let r=await b(`${_()}/cart/${e}/complete-gift-card-payment`,{customerName:(0,n.formatFullName)(t.firstName,t.lastName),customerEmail:t.email,firstName:t.firstName,lastName:t.lastName,email:t.email,phoneNumber:t.phoneNumber||null,questionAnswer:t.questionAnswer||``,mailingList:t.mailingList||!1,attribution:k(),...i?{locale:i}:{}});return r.success?{success:!0,orderId:r.data?.orderId,confirmationNumber:r.data?.confirmationNumber}:(X.error(`Complete gift card payment failed:`,r.error),{success:!1,error:r.error||`Failed to complete payment`})}catch(e){return X.error(`completeGiftCardPayment error:`,e),{success:!1,error:`Network error. Please check your connection and try again.`}}}var Z=(0,e.createLogger)(`VC`);async function Mt(e,t,n=null,r=!1){try{let i={email:t};n&&r&&(i.phone=n,i.smsOptIn=!0);let a=await b(`/events/${e}/waitlist`,i);return a.success?{success:!0,updated:a.data?.updated,position:a.data?.position}:(Z.error(`Join waitlist failed:`,a.error),{success:!1,errorCode:a.error||`join_failed`})}catch(e){return Z.error(`joinWaitlist error:`,e),{success:!1,errorCode:`network_error`}}}async function Nt(e,t){try{let n=await b(`/checkout/validate-token/${e}`,{email:t});return n.success?{valid:!0,eventId:n.data?.eventId??0,expiresAt:n.data?.expiresAt}:{valid:!1,eventId:0,errorCode:n.error}}catch(e){return Z.error(`validateWaitlistToken error:`,e),{valid:!1,eventId:0,errorCode:`invalid_token`}}}async function Pt(e,t){try{let n=await b(`/waitlist/requeue/${e}`,{email:t});return n.success?{success:!0}:{success:!1,errorCode:n.error}}catch(e){return Z.error(`requeueWaitlistToFront error:`,e),{success:!1,errorCode:`internal_error`}}}async function Ft(e){let t={waitlistEnabled:!1,soldOut:!1,gated:!1};try{let n=await y(`/events/${e}/waitlist/status`);return n.success?{waitlistEnabled:!!n.data?.waitlistEnabled,soldOut:!!n.data?.soldOut,gated:!!n.data?.gated}:t}catch(e){return Z.error(`getWaitlistStatus error:`,e),t}}function It(e){let t=String(e%60).padStart(2,`0`);return e>=3600?`${Math.floor(e/3600)}:${String(Math.floor(e%3600/60)).padStart(2,`0`)}:${t}`:`${Math.floor(e/60)}:${t}`}function Lt(e,t,n={}){let{cancelled:a=!1,isRegistration:o=!1,waitlistEnabled:s=!1}=n,c=(0,r.browserNow)();if(a)return{text:`Cancelled`,disabled:!0,reason:`cancelled`};if((e?.status||``).trim().toLowerCase()===`postponed`)return{text:`Postponed`,disabled:!0,reason:`postponed`};let l=(0,r.toInstantOrNull)(e.endDateTime||e.startDateTime);if(l&&(0,r.compareInstants)(l,c)<0)return{text:`Sales ended`,disabled:!0,reason:`event_past`};let u=(e?.salesStatus||``).trim().toLowerCase();if(u===`paused`)return{text:`Sales paused`,disabled:!0,reason:`sales_paused`};if(u===`ended`)return{text:`Sales ended`,disabled:!0,reason:`sales_ended`};let d=e?.hasPurchasableHiddenTickets===!0||Array.isArray(t)&&t.some(i.isHiddenTicketPurchasable),f=()=>d?{text:o?`Reserve a spot`:`Get tickets`,disabled:!1,reason:`hidden_only`}:s?{text:`Join Waitlist`,disabled:!1,reason:`sold_out_waitlist`}:{text:`Sold out`,disabled:!0,reason:`sold_out`};if(u===`sold_out`)return f();let p=(t||[]).filter(e=>e.salesChannel!==2&&!e.isHidden&&!(typeof e.visibility==`number`&&e.visibility>=i.TICKET_VISIBILITY.HIDDEN));if(p.length===0)return d?{text:o?`Reserve a spot`:`Get tickets`,disabled:!1,reason:`hidden_only`}:{text:`No tickets available`,disabled:!0,reason:`no_tickets`};let m=!1,h=!0,g=!0,_=null;for(let e of p){let t=(0,r.toInstantOrNull)(e.salesBegin||e.salesStart||e.saleBegin||e.onSaleStart),n=(0,r.toInstantOrNull)(e.salesEnd||e.saleEnd||e.onSaleEnd),i=e.remainingCapacity??e.quantityRemaining??e.quantity,a=e.soldOut||i!=null&&i<=0,o=t?(0,r.compareInstants)(t,c)>0:!1,s=n?(0,r.compareInstants)(n,c)<0:!1;!a&&!o&&!s&&(m=!0),a||(h=!1),o||(g=!1),o&&t&&!a&&!s&&(!_||(0,r.compareInstants)(t,_)<0)&&(_=t)}return m?{text:o?`Reserve a spot`:`Get tickets`,disabled:!1,reason:`available`}:g&&_?d?{text:o?`Reserve a spot`:`Get tickets`,disabled:!1,reason:`hidden_only`}:{text:`On sale ${Rt(_,(0,r.compareInstants)(_,c),[e.timezone,e.timeZone].find(e=>!!e&&(0,r.isValidIANATimezone)(e)))}`,disabled:!0,reason:`coming_soon`}:h?f():d?{text:o?`Reserve a spot`:`Get tickets`,disabled:!1,reason:`hidden_only`}:{text:`Sales ended`,disabled:!0,reason:`sales_ended`}}function Rt(e,t,n){let i=t/36e5,a=t/864e5;if(n){let t=e.toISOString(),o=(0,r.formatTzAbbreviation)(n,e),s=`${(0,r.formatEventTime)(t,n)} ${o}`;return i<24?s:a<=7?`${(0,r.formatDayOfWeek)(t,n,!0)} ${s}`:`${(0,r.formatEventDate)(t,n,{includeYear:!1})} ${s}`}let o=e=>(0,r.formatLocal)(e,{hour:`numeric`,minute:`2-digit`,hour12:!0},`en-US`);return i<24?o(e):a<=7?(0,r.formatLocal)(e,{weekday:`short`,hour:`numeric`,minute:`2-digit`,hour12:!0},`en-US`):`${(0,r.formatLocal)(e,{month:`short`,day:`numeric`},`en-US`)} ${o(e)}`}function zt(e){let t=e;return{uuid:t.uuid||String(t.id||t.ID||``),id:t.id||t.ID,ticketNumber:t.ticketNumber||t.ticket_number,orderId:t.orderId||t.order_id,attendeeFirstName:t.attendeeFirstName||t.attendee_first_name||t.firstName,attendeeLastName:t.attendeeLastName||t.attendee_last_name||t.lastName,attendeeEmail:t.attendeeEmail||t.attendee_email||t.email,ticketName:t.ticketName||t.ticket_name||t.name||``,ticketTypeId:t.ticketTypeId||t.ticket_type_id,purchasePrice:t.purchasePrice||t.purchase_price||t.price||0,status:t.status,checkedIn:t.checkedIn||t.checked_in,checkedInAt:t.checkedInAt||t.checked_in_at}}function Bt(e){let t=e,n=t.purchasedTickets||t.tickets||t.purchased_tickets||[];return{uuid:t.uuid||String(t.id||t.ID||``),id:t.id||t.ID,customerEmail:t.customerEmail||t.email||t.customer_email||``,customerFirstName:t.customerFirstName||t.firstName||t.first_name,customerLastName:t.customerLastName||t.lastName||t.last_name,status:t.status||`unknown`,totalAmount:t.totalAmount||t.total||t.total_amount||0,subtotal:t.subtotal,serviceFeesAmount:t.serviceFeesAmount||t.serviceFee||t.service_fee||t.service_fees_amount||0,taxAmount:t.taxAmount||t.tax||t.tax_amount||0,discount:t.discount==null?0:t.discount,paymentIntentId:t.paymentIntentId||t.payment_intent_id,paymentMethod:t.paymentMethod||t.payment_method,purchasedTickets:n.map(zt),createdAt:t.createdAt||t.created_at,updatedAt:t.updatedAt||t.updated_at}}var Vt=zt,Ht=Bt;function Ut(e){let t=Bt(e),r=t.uuid.split(`-`)[0]||t.uuid,i=Number(t.totalAmount);return{orderId:t.uuid,displayOrderId:r,email:t.customerEmail,customerName:[t.customerFirstName,t.customerLastName].filter(Boolean).join(` `),total:t.totalAmount,formattedTotal:`${(0,n.formatCurrency)((0,n.asUSD)(Number.isFinite(i)?i/100:0))}`,ticketCount:t.purchasedTickets.length,status:t.status}}function Wt(e){return(0,n.resolveImageUrl)(e,{cdn:!0})}function Q(e){return Wt(e.imageUrl||e.imageURL||e.image_url||e.image||``)}function Gt(e){switch(e){case`available`:case`sold_out`:case`coming_soon`:case`ended`:return e;default:return null}}function Kt(e){let t=e.ctaState||e.cta_state;if(t){let e=Gt(t);if(e)return e}if(e.isCancelled||e.is_cancelled)return`ended`;let n=(0,r.toInstantOrNull)(e.startDateTime||e.start_date_time||e.date);if(n){let e=Date.now();if(n.getTime()<e)return`ended`}let i=e.ticketsAvailable??e.tickets_available;if(i!==void 0)return i<=0?`sold_out`:`available`;let a=e.availableTickets||e.available_tickets||e.tickets||[];return a.length===0?`coming_soon`:a.reduce((e,t)=>{let n=t.quantityAvailable??t.quantity_available??t.quantity??0,r=t.quantitySold??t.quantity_sold??0;return e+Math.max(0,n-r)},0)<=0?`sold_out`:`available`}function qt(e){let t=e;return{id:t.id||t.ID,name:t.name||t.ticketName||``,description:t.description,price:t.price==null?0:t.price,quantity:t.quantity||t.totalQuantity||0,quantitySold:t.quantitySold||t.quantity_sold||0,quantityAvailable:t.quantityAvailable||t.quantity_available||(t.quantity||0)-(t.quantitySold||0),minPerOrder:t.minPerOrder||t.min_per_order||1,maxPerOrder:t.maxPerOrder||t.max_per_order||10,saleStartDate:t.saleStartDate||t.sale_start_date,saleEndDate:t.saleEndDate||t.sale_end_date,isHidden:t.isHidden||t.is_hidden||!1,revealWithPromoCode:t.revealWithPromoCode||t.reveal_with_promo_code,ticketType:t.ticketType||t.ticket_type||0,sectionId:t.sectionId||t.section_id,sortOrder:t.sortOrder||t.sort_order||0}}function $(e){let t=e,n=(t.availableTickets||t.available_tickets||t.tickets||[]).map(qt),r=n.map(e=>e.price).filter(e=>e>0),i=r.length>0?Math.min(...r):void 0,a=r.length>0?Math.max(...r):void 0;return{eventID:t.eventID||t.id||t.ID||0,id:t.id||t.ID,name:t.name||t.title||``,title:t.title||t.name,slug:t.slug,description:t.description,date:t.date||t.startDateTime||t.start_date_time||``,startDateTime:t.startDateTime||t.start_date_time,endDateTime:t.endDateTime||t.end_date_time,doorsOpenTime:t.doorsOpenTime||t.doors_open_time,timezone:t.timezone||t.time_zone,venueId:t.venueId||t.venue_id,venueName:t.venueName||t.venue_name,venueAddress:t.venueAddress||t.venue_address,location:t.location||t.venueAddress||t.venue_address,imageUrl:Q(t),imageURL:Q(t),status:t.status,isPublished:t.isPublished??t.is_published,isCancelled:t.isCancelled??t.is_cancelled,availableTickets:n,ticketsAvailable:t.ticketsAvailable??t.tickets_available??n.reduce((e,t)=>e+(t.quantityAvailable||0),0),ticketsSold:t.ticketsSold??t.tickets_sold,minPrice:t.minPrice??t.min_price??i,maxPrice:t.maxPrice??t.max_price??a,ctaText:t.ctaText||t.cta_text,ctaState:Kt(t),showPerformers:t.showPerformers??t.show_performers,eventSeriesId:t.eventSeriesId||t.event_series_id,seriesInstanceNumber:t.seriesInstanceNumber||t.series_instance_number,timeZone:t.timeZone,salesStatus:t.salesStatus||t.sales_status,eventSummary:t.eventSummary,password:t.password,hasPassword:t.hasPassword,disclaimer:t.disclaimer,ticketType:t.ticketType,eventTicketingType:t.eventTicketingType,ageRestriction:t.ageRestriction,displayAgeRestriction:t.displayAgeRestriction,displayStartTime:t.displayStartTime,displayEndTime:t.displayEndTime,displayDoorsTime:t.displayDoorsTime,displayTicketsLeft:t.displayTicketsLeft,postSalesMessage:t.postSalesMessage,collectionId:t.collectionId||t.collection_id,ticketsRemaining:t.ticketsRemaining,ticketsTotal:t.ticketsTotal,hasHiddenTickets:t.hasHiddenTickets,stage:t.stage,stageName:t.stageName,stageId:t.stageId,eventCategoryTypes:t.eventCategoryTypes,publicPerformers:t.publicPerformers,collectionIds:t.collectionIds,venue:t.venue,performers:t.performers,faqs:t.faqs,showtimes:t.showtimes,purchasedTickets:t.purchasedTickets}}var Jt=qt,Yt=$,Xt=$;function Zt(e){return(0,n.resolveImageUrl)(e,{cdn:!0})}function Qt(e){let t=e,n=t.logoUrl||t.logo_url||t.logo;return{id:t.id||t.ID||0,name:t.name||``,slug:t.slug,address:t.address,googleLocationNameCache:t.googleLocationNameCache||t.google_location_name_cache,city:t.city,state:t.state,zipCode:t.zipCode||t.zip_code,country:t.country,timezone:t.timezone||t.time_zone,logoUrl:Zt(n),serviceFeePercentage:t.serviceFeePercentage??t.service_fee_percentage??0,serviceFeeCents:t.serviceFeeCents??t.service_fee_cents??0,absorbServiceFee:(t.absorbServiceFee??t.absorb_service_fee)===!0,taxPercentage:t.taxPercentage??t.tax_percentage??0,organizationId:t.organizationId||t.organization_id}}var $t=Qt;function en(e){let t=e;return{serviceFeePercentage:t.serviceFeePercentage??t.service_fee_percentage??0,serviceFeeCents:t.serviceFeeCents??t.service_fee_cents??0,taxPercentage:t.taxPercentage??t.tax_percentage??0}}function tn(e){return[e.address,e.city,e.state,e.zipCode].filter(Boolean).join(`, `)}exports.apiDelete=x,exports.apiGet=y,exports.apiPost=b,exports.apiPut=ne,exports.applyGiftCard=kt,exports.applyPromoCode=He,exports.calculateCtaState=Kt,exports.cancelReservation=je,exports.checkCollectionPassword=gt,exports.checkEventPassword=_t,exports.completeGiftCardPayment=jt,exports.completeReservation=Ae,exports.computeCtaState=Lt,exports.configureApi=p,exports.createGiftCardPurchase=Ot,exports.createOrder=Me,exports.createPaymentIntent=De,exports.err=I,exports.errNotFound=L,exports.extendCheckoutSession=Fe,exports.extractVenueFees=en,exports.fetchAllVenues=tt,exports.fetchAllVenuesResult=et,exports.fetchEventDetails=Ye,exports.fetchEventDetailsResult=Je,exports.fetchEventPerformers=$e,exports.fetchEventPerformersResult=Qe,exports.fetchEventTickets=Ze,exports.fetchEventTicketsResult=Xe,exports.fetchPublicCollection=ht,exports.fetchSeriesOccurrences=pt,exports.fetchSeriesOccurrencesResult=ft,exports.fetchVenueEvents=rt,exports.fetchVenueEventsResult=nt,exports.formatVenueAddress=tn,exports.formatWaitlistWindow=It,exports.getApiConfig=m,exports.getCDNImageUrl=Wt,exports.getCartByUUID=Oe,exports.getClientIP=ee,exports.getEventImageUrl=Q,exports.getLegacyPublicUrl=g,exports.getMonthEvents=st,exports.getMonthEventsResult=ot,exports.getOrder=Ne,exports.getOrdersV2Url=_,exports.getOrgMonthEvents=lt,exports.getOrgMonthEventsResult=ct,exports.getPublicBaseUrl=h,exports.getSeriesOccurrences=dt,exports.getSeriesOccurrencesResult=ut,exports.getSessionStatus=Ie,exports.getVenue=xt,exports.getVenueBySlug=Ct,exports.getVenueFees=St,exports.getWaitlistStatus=Ft,exports.hasPromoCodes=Ve,exports.hasPublishedSite=wt,exports.initiateOrder=Le,exports.isErr=Ke,exports.isOk=Ge,exports.joinWaitlist=Mt,exports.ok=F,exports.removeGiftCard=At,exports.removePromoCode=Ue,exports.requeueWaitlistToFront=Pt,exports.resolvePublicEntity=mt,exports.testNetworkConnection=vt,exports.trackUTMSource=Re,exports.transformAvailableTicket=Jt,exports.transformEvent=Yt,exports.transformEventData=Xt,exports.transformOrder=Ht,exports.transformOrderForDisplay=Ut,exports.transformTicket=Vt,exports.transformVenue=$t,exports.unwrapOr=R,exports.updateCartQuantities=ke,exports.validatePaymentIntent=Pe,exports.validatePromoCode=Be,exports.validateWaitlistToken=Nt;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@getmicdrop/svelte-components/utils/logger"),t=require("@getmicdrop/svelte-components/errors"),n=require("@getmicdrop/svelte-components"),r=require("@getmicdrop/svelte-components/datetime"),i=require("@getmicdrop/svelte-components/transforms");require("@getmicdrop/svelte-components/utils/timezones"),require("@getmicdrop/svelte-components/utils/formatters"),(0,e.createLogger)(`VC:config`,{enabled:!0});var a=(0,e.createLogger)(`VC`),o=new Set;function s(e){if(e)for(let t of o)try{t(e)}catch{}}var c=`ABORTED`;function l(e,t){let n=t||void 0;return n?{...e,"X-Widget-Key":n}:e}function u(e,t){let n=`HTTP ${t}`;if(!e||typeof e!=`object`)return{message:n};let r=e,i=r.error&&typeof r.error==`object`?r.error:null,a=typeof r.code==`string`?r.code:typeof i?.code==`string`?i.code:void 0;return{message:typeof r.error==`string`?r.error:typeof i?.message==`string`?i.message:typeof r.message==`string`?r.message:n,code:a}}var d=class extends Error{code;statusCode;constructor(e,t,n){super(e),this.name=`ApiRequestError`,this.code=t,this.statusCode=n}},f={baseUrl:`https://get-micdrop.com`,timeout:3e4,retries:2,retryDelay:500,onError:e=>a.error(`API Error:`,e)};function p(e){f={...f,...e}}function m(){return{...f}}function h(){return`${f.baseUrl}/api/v2/public`}function g(){return`${f.baseUrl}/api/public`}function _(){return`${f.baseUrl}/api/orders/v2/public`}async function ee(){return``}var te=e=>new Promise(t=>setTimeout(t,e));async function v(e,t,n){let r=(t.method||`GET`).toUpperCase(),i=r===`GET`||r===`HEAD`?n.retries+1:1,a;for(let r=1;r<=i;r++){let o=new AbortController,s=setTimeout(()=>o.abort(),n.timeout),c=t.signal,l;c&&(c.aborted?o.abort():(l=()=>o.abort(),c.addEventListener(`abort`,l,{once:!0})));try{let n=await fetch(e,{...t,signal:o.signal});if(n.status>=500&&r<i)a=Error(`HTTP ${n.status}`);else return n}catch(e){if(a=e,c?.aborted)throw e}finally{clearTimeout(s),c&&l&&c.removeEventListener(`abort`,l)}r<i&&await te(n.retryDelay*2**(r-1))}throw a}async function y(e,t){return S(`GET`,e,void 0,t)}async function b(e,t,n){return S(`POST`,e,t,n)}async function ne(e,t,n){return S(`PUT`,e,t,n)}async function x(e,t){return S(`DELETE`,e,void 0,t)}async function S(e,t,n,r){let i=t.startsWith(`http`)||t.startsWith(`/api/`)?t:`${h()}${t}`,{widgetKey:a,suppressOnError:o,headers:p,...m}=r??{},g=e=>{o||f.onError(e)};try{let t=await v(i,{method:e,headers:l({"Content-Type":`application/json`,...p},a),body:n===void 0?void 0:JSON.stringify(n),...m},f);if(!t.ok){let{message:e,code:n}=u(await t.json().catch(()=>({})),t.status);return g(new d(e,n,t.status)),s(n),{success:!1,error:e,errorCode:n,statusCode:t.status}}return{success:!0,data:await t.json(),statusCode:t.status}}catch(e){if(r?.signal?.aborted)return{success:!1,error:`Request aborted`,errorCode:c,aborted:!0};let t=e instanceof Error?e.name===`AbortError`?`Request timed out`:e.message:`Unknown error`;return g(e instanceof Error?e:Error(t)),{success:!1,error:t}}}async function C(e,t){try{let n=e.startsWith(f.baseUrl),{widgetKey:r,...i}=t??{},o=await v(e,{...i,...n?{headers:l(i.headers,r)}:{}},f);if(!o.ok){let e=await o.json().catch(()=>({}));return a.error(`API request failed: ${o.status}`,e),null}return o.json()}catch(e){return a.error(`API request error:`,e),null}}function re(e){let t=e??{};return{ticketID:Number(t.TicketID??t.ticketID??0),quantity:Number(t.Quantity??t.quantity??0),priceAtReservation:Number(t.PriceAtReservation??t.priceAtReservation??0),status:String(t.Status??t.status??``)}}function ie(e){let t=e??{},r=t.Amount??t.amount,i=Number(r);return{giftCardId:Number(t.GiftCardID??t.giftCardId??0),maskedCode:String(t.MaskedCode??t.maskedCode??``),amount:r==null||!Number.isFinite(i)?null:(0,n.centsToDollars)((0,n.toCents)(i))}}function ae(e){let t=e??{};return{uuid:t.UUID??t.uuid??``,eventID:Number(t.EventID??t.eventID??0),status:t.Status??t.status??``,expiresAt:t.ExpiresAt??t.expiresAt??``,reservations:(t.Reservations??t.reservations??[]).map(re),giftCards:(t.GiftCards??t.giftCards??[]).map(ie)}}var w=[`utmSource`,`utmMedium`,`utmCampaign`,`utmContent`,`utmTerm`],oe={utmSource:`utm_source`,utmMedium:`utm_medium`,utmCampaign:`utm_campaign`,utmContent:`utm_content`,utmTerm:`utm_term`},se=`direct`;function ce(e){return e?e.trim().toLowerCase().replace(/\s+/g,`_`):``}function le(e){let t={};for(let n of w)t[n]=ce(e[n]);return t.utmSource||=se,t}function ue(e){let t={};for(let n of w)t[n]=e.get(oe[n]);return le(t)}var T={search:null,referrer:null,pageUrl:null};function de(){if(typeof window>`u`)return!0;try{return window.self===window.top}catch{return!1}}function fe(){let e=typeof window<`u`,t=de(),n=T.search??(e?window.location.search:``),r=T.referrer??(typeof document<`u`?document.referrer:``)??``,i=T.pageUrl??(e&&t?window.location.href:``);return{utm:ue(new URLSearchParams(n)),referrer:r||``,pageUrl:i||``}}var pe=null,me=!1;function he(){return typeof window<`u`&&typeof window.__tcfapi==`function`}function ge(){return typeof navigator<`u`&&navigator.globalPrivacyControl===!0}function _e(){return pe===null?he()||ge():pe}function ve(){return!_e()||me}var ye=`micdrop_session_id`,E=`micdrop_visitor_id`,be=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function D(e){return typeof e==`string`&&be.test(e)}function O(){let e=typeof crypto<`u`?crypto:void 0;if(e?.randomUUID)return e.randomUUID();let t=new Uint8Array(16);if(e?.getRandomValues)e.getRandomValues(t);else for(let e=0;e<16;e++)t[e]=Math.floor(Math.random()*256);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=[];for(let e=0;e<16;e++)n.push(t[e].toString(16).padStart(2,`0`));return`${n[0]}${n[1]}${n[2]}${n[3]}-${n[4]}${n[5]}-${n[6]}${n[7]}-${n[8]}${n[9]}-${n[10]}${n[11]}${n[12]}${n[13]}${n[14]}${n[15]}`}function xe(){let e=(0,n.getSessionStorage)(ye);return e||(e=O(),(0,n.setSessionStorage)(ye,e)),e}function Se(e){let t=(0,n.getLocalStorage)(E);if(D(t))return{id:t,createdAt:e,migrated:!0};if(t&&typeof t==`object`){let{id:n,createdAt:r}=t;if(!D(n))return null;let i=typeof r==`number`&&Number.isFinite(r),a=i?Math.min(r,e):e;return{id:n,createdAt:a,migrated:!i||a!==r}}return null}function Ce(){if(!ve())return null;let e=Date.now(),t=Se(e);if(t&&e-t.createdAt<34128e6){if(t.migrated){let e={id:t.id,createdAt:t.createdAt};(0,n.setLocalStorage)(E,e)}return t.id}let r=O();return(0,n.setLocalStorage)(E,{id:r,createdAt:e}),r}var we=`micdrop_attribution`;function Te(){let e=(0,n.getSessionStorage)(we);return!e||!e.utm||typeof e.utm.utmSource!=`string`?null:e}function k(){let e=Te()??fe();return{sessionId:xe(),visitorId:Ce(),utmSource:e.utm.utmSource,utmMedium:e.utm.utmMedium,utmCampaign:e.utm.utmCampaign,utmContent:e.utm.utmContent,utmTerm:e.utm.utmTerm,referrer:e.referrer||``}}(0,n.createLogger)(`tracking`),$state(0);function Ee(){return typeof navigator>`u`?null:navigator.language||navigator.userLanguage||null}var A=[[`es`,`es`,`es`],[`fr`,`fr`,`fr`],[`pt-br`,`pt-br`,`pt_br`],[`pt`,`pt-br`,`pt_br`],[`de`,`de`,`de`],[`ja`,`ja`,`ja`],[`zh`,`zh`,`zh`],[`ko`,`ko`,`ko`],[`it`,`it`,`it`],[`nl`,`nl`,`nl`],[`tr`,`tr`,`tr`],[`id`,`id`,`id`],[`pl`,`pl`,`pl`]];Array.from(new Set(A.map(([,e])=>e)));var j=new Map([[`en`,`en`],...A.map(([e])=>[e,e===`pt`||e===`pt-br`?`pt-BR`:e])]);function M(e){let t=e||Ee();if(!t||typeof t!=`string`)return;let n=t.toLowerCase();return j.get(n)??j.get(n.split(`-`)[0])}var N=(0,e.createLogger)(`VC`);async function De(e,n,r,i,a){let o=M(a);try{let a=await b(`${_()}/cart/${e}/payment-intent`,{productQuantities:n,...r&&Object.keys(r).length>0?{donationAmounts:r}:{},...i?{firstName:i.firstName,lastName:i.lastName,email:i.email,phone:i.phone??``,questionAnswer:i.questionAnswer??``,mailingList:i.mailingList??!1}:{},attribution:k(),...o?{locale:o}:{}});if(!a.success)throw N.error(`Payment intent creation failed:`,a.error),new t.ApiError(a.error||`Failed to create payment intent`,a.statusCode??0,{endpoint:`${_()}/cart/${e}/payment-intent`,method:`POST`});return N.debug(`Payment intent created:`,a.data),a.data}catch(e){return N.error(`createPaymentIntent error:`,e),null}}async function Oe(e,t){if(!e)return null;try{let n=await y(`${_()}/cart/${e}`);if(!n.success)return null;let{uuid:r,eventID:i,status:a,expiresAt:o,reservations:s,giftCards:c}=ae(n.data);return a!==`reserved`&&a!==`active`||t!==void 0&&i!==Number(t)?null:{uuid:r,eventID:i,status:a,expiresAt:o,reservations:s,giftCards:c}}catch(e){return N.error(`getCartByUUID error:`,e),null}}async function ke(e,t,n){try{let r={};for(let[e,n]of Object.entries(t)){let t=typeof e==`number`?e:parseInt(e,10);!Number.isNaN(t)&&n>0&&(r[t]=n)}let i={};if(n)for(let[e,t]of Object.entries(n)){let n=typeof e==`number`?e:parseInt(e,10);!Number.isNaN(n)&&t>0&&(i[n]=t)}let a=await fetch(`${_()}/cart/${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({quantities:r,...Object.keys(i).length>0?{donationAmounts:i}:{}})});if(!a.ok){let e=await a.json().catch(()=>({}));return N.error(`Cart update failed:`,e),!1}return!0}catch(e){return N.error(`updateCartQuantities error:`,e),!1}}async function Ae(e){try{let t=await b(`${h()}/orders/complete/${e}`);return t.success?{success:!0,message:t.data?.message}:{success:!1,error:t.error||`Failed to complete reservation`}}catch(e){return N.error(`Error completing reservation:`,e),{success:!1,error:`Network error completing reservation`}}}async function je(e){try{let t=await b(`${h()}/orders/cancel/${e}`);return t.success?{success:!0,message:t.data?.message}:{success:!1,error:t.error||`Failed to cancel reservation`}}catch(e){return N.error(`Error cancelling reservation:`,e),{success:!1,error:`Network error cancelling reservation`}}}async function Me(e,t){try{let n=await b(`${h()}/orders/create`,{eventID:e,promoCode:t,attribution:k()});return n.success?n.data:(N.error(`Create order failed:`,n.error),null)}catch(e){return N.error(`createOrder error:`,e),null}}async function Ne(e){return C(`${h()}/orders/${e}`)}async function Pe(e,t,n){let r=M(n);try{let n=await b(`${_()}/validatePaymentIntent/${e}`,{...t,attribution:k(),...r?{locale:r}:{}});if(!n.success)return N.error(`Payment validation failed:`,n.error),{success:!1,status:`failed`,error:n.error||`Payment validation failed`};let i=n.data;return i.eventCanceled||i.eventPostponed?{success:!1,status:`failed`,eventCanceled:i.eventCanceled,eventPostponed:i.eventPostponed}:{success:!0,status:i.status||`Payment succeeded`,orderUUID:i.orderUUID||i.uuid}}catch(e){return N.error(`validatePaymentIntent error:`,e),null}}async function Fe(e){try{let t=await b(`${h()}/orders/extend-session`,{orderUuid:e});if(!t.success)return{success:!1,error:t.error||`Failed to extend session`,statusCode:t.statusCode};let n=t.data;return{success:!0,newExpiryTime:n.newExpiryTime,remainingExtensions:n.remainingExtensions}}catch(e){return N.error(`Error extending checkout session:`,e),{success:!1,error:`Network error extending session`}}}async function Ie(e){try{let t=await y(`${h()}/orders/session/${e}`);if(!t.success)return{error:t.error||`No active session found`,notFound:t.statusCode===404};let n=t.data;return{expiresAt:n.expiresAt,extensionCount:n.extensionCount,remainingExtensions:n.remainingExtensions,canExtend:n.canExtend,reservationCount:n.reservationCount,eventStatus:n.eventStatus}}catch(e){return N.error(`Error getting session status:`,e),{error:`Network error getting session status`}}}async function Le(e={eventID:``}){try{let t=await b(`${h()}/orders/create`,{...e,attribution:k()});return t.success?t.data?.uuid??null:(N.error(`Order initiation failed:`,t.error),null)}catch(e){return N.error(`initiateOrder error:`,e),null}}async function Re(e){if(typeof window>`u`)return;let t=ce(new URLSearchParams(window.location.search).get(`utm_source`))||`direct`;try{await fetch(`${h()}/utm/${e}/${encodeURIComponent(t)}`)}catch(e){N.error(`UTM tracking failed:`,e)}}var P=(0,e.createLogger)(`VC`);function ze(e,t){if(e===404)return`Promo code isn't valid.`;let n=(t??``).toLowerCase();return e===400?n.includes(`not yet active`)?`Promo code doesn't apply.`:n.includes(`expired`)?`Promo code expired.`:n.includes(`limit`)?`Promo code has reached its limit.`:`Promo code isn't valid.`:`Failed to validate code`}async function Be(e,t){try{if(!t||!t.trim())return{valid:!1,error:`Promo code is required`};let n=await y(`/promo-codes/validate/${e}/${encodeURIComponent(t.trim())}`);if(!n.success)return{valid:!1,error:ze(n.statusCode,n.error)};let r=n.data;return{valid:r.valid??!0,revealHiddenTickets:r.revealHiddenTickets,revealTicketIds:r.revealTicketIds,provideDiscount:r.provideDiscount,discountType:r.discountType,amount:r.discount??r.amount,code:r.name||r.code||t,appliesToAllTickets:r.appliesToAllTickets,applyToTicketIds:r.applyToTicketIds}}catch(e){return P.error(`Error validating promo code:`,e),{valid:!1,error:`Network error validating code`}}}async function Ve(e){try{let t=await y(`/promo-codes/check/${e}`);return!t.success||t.data.hasPromoCodes===!0}catch(e){return P.error(`Error checking promo codes availability:`,e),!0}}async function He(e,t,n){try{let r={promoCode:t};n&&Object.keys(n).length>0&&(r.productQuantities=n);let i=await b(`${_()}/cart/${e}/apply-promo`,r);return i.success?{success:!0}:{success:!1,error:i.error||`Failed to apply promo code`}}catch(e){return P.error(`Error applying promo code:`,e),{success:!1,error:`Network error applying code`}}}async function Ue(e){try{let t=await b(`/orders/${e}/remove-promo`);return t.success?{success:!0}:{success:!1,error:t.error||`Failed to remove promo code`}}catch(e){return P.error(`Error removing promo code:`,e),{success:!1,error:`Network error removing code`}}}function We(e){let t=e??{};return{performers:Array.isArray(t.performers)?t.performers:[],showPerformers:t.showPerformers===!0}}function F(e){return{ok:!0,data:e}}function I(e){return{ok:!1,error:e}}function L(e){return{ok:!1,error:e,notFound:!0}}function Ge(e){return e.ok}function Ke(e){return!e.ok}function R(e,t){return e.ok?e.data:t}var z=`/api/v2/public`,B=`/api/orders/v2/public`,V=`/api/orders/v2`,qe=`00000000-0000-0000-0000-000000000000`,H=qe;`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}${H}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}`,`${z}${H}`,`${B}`,`${B}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${B}`,`${B}${H}`,`${V}`,`${V}`,`${B}`,`${B}`,`${B}`,`${B}`,`${z}`,`${z}${H}`,`${z}`,`${z}`;var U=(0,e.createLogger)(`VC`),W=new Map;async function Je(e,t=fetch,n){let r=n?`${e}:pw`:String(e);if(t===fetch){let e=W.get(r);if(e)return e}let i=(async()=>{try{let r=await t(n?`${h()}/events/${e}?password=${encodeURIComponent(n)}`:`${h()}/events/${e}`);if(!r.ok)return r.status===404?L(`event_not_found`):(U.error(`Failed to fetch event details: ${r.status}`),I(`event_fetch_failed`));let i=await r.json();return i?F(i):L(`event_not_found`)}catch(e){return U.error(`Error fetching event details:`,e),I(`event_fetch_failed`)}})();return t===fetch&&(W.set(r,i),i.finally(()=>{W.get(r)===i&&W.delete(r)})),i}async function Ye(e,t=fetch,n){let r=await Je(e,t,n);return r.ok?r.data:null}async function G(e,t,n=e=>e){try{let r=await C(e);return r?F(n(r)):(U.error(`Failed to load (${t}): network or server error`),I(t))}catch(e){return U.error(`Error loading (${t}):`,e),I(t)}}function K(e){return Array.isArray(e)?e:[]}async function Xe(e,t){let n=t?.trim(),r=n?`?promoCode=${encodeURIComponent(n)}`:``;return G(`${h()}/tickets/event/${e}${r}`,`tickets_fetch_failed`,K)}async function Ze(e,t){return R(await Xe(e,t),[])}async function Qe(e){return e?G(`${h()}/events/${e}/performers`,`performers_fetch_failed`,e=>We(e)):(U.warn(`fetchEventPerformers called without eventId`),I(`performers_missing_event_id`))}async function $e(e){return R(await Qe(e),{performers:[],showPerformers:!1})}async function et(e){return e?G(`${h()}/venues/organization/${e}`,`venues_fetch_failed`,K):(U.warn(`fetchAllVenues called without orgId`),I(`venues_missing_org_id`))}async function tt(e){return R(await et(e),[])}async function nt(e){return e?G(`${h()}/events/venue/${e}`,`venue_events_fetch_failed`,K):(U.warn(`fetchVenueEvents called without venueId`),I(`venue_events_missing_venue_id`))}async function rt(e){return R(await nt(e),[])}function it(e){return Array.isArray(e)?e:Array.isArray(e.events)?e.events:[]}var q=new Map;function at(e,t,n){if(!n?.fresh){let t=q.get(e);if(t)return t}let r=G(e,t,e=>it(e));return q.set(e,r),r.finally(()=>{q.get(e)===r&&q.delete(e)}),r}async function ot(e,t,n,r){return at(`${h()}/events/venue/${e}/month/${t}/${n}`,`month_events_fetch_failed`,r)}async function st(e,t,n){return R(await ot(e,t,n),[])}async function ct(e,t,n,r){return at(`${h()}/events/organization/${e}/month/${t}/${n}`,`org_month_events_fetch_failed`,r)}async function lt(e,t,n){return R(await ct(e,t,n),[])}async function ut(e){return G(`${h()}/series/${e}/occurrences`,`series_occurrences_fetch_failed`)}async function dt(e){let t=await ut(e);return t.ok?t.data:null}async function ft(e,t){return G(`${h()}/series/${e}/occurrences?venueId=${t}`,`series_cta_fetch_failed`)}async function pt(e,t){let n=await ft(e,t);return n.ok?n.data:null}async function mt(e,n){try{let r=n?`?slug=${encodeURIComponent(n)}`:``,i=await C(`${h()}/resolve/${encodeURIComponent(String(e))}${r}`);if(!i||!i.type)throw new t.NotFoundError(`entity`,String(e));return i}catch(e){return U.error(`Error resolving public entity:`,e),null}}async function ht(e,n){try{let r=await C(n?`${h()}/collections/${e}?password=${encodeURIComponent(n)}`:`${h()}/collections/${e}`);if(!r)throw new t.NotFoundError(`collection`,String(e));return r}catch(e){return U.error(`Error fetching collection:`,e),null}}async function gt(e,t){try{return(await C(`${h()}/collections/${e}/check-password`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:t})}))?.valid===!0}catch(e){return U.error(`Error checking collection password:`,e),!1}}async function _t(e,t){try{let n=await C(`${h()}/events/${e}/check-password`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:t})});return typeof n==`boolean`?{valid:n}:{valid:n?.valid===!0}}catch(e){return U.error(`Error checking event password:`,e),{valid:!1}}}async function vt(e,t){try{let n=t?`${h()}/events/venue/${t}`:e?`${h()}/venues/organization/${e}`:`${h()}/venues/${qe}`;return(await fetch(n,{method:`HEAD`})).status<500}catch(e){return U.error(`Network connection test failed:`,e),!1}}var yt=`get-micdrop.com`;function bt(e){let t=typeof e==`string`?e.trim():``;return t?`https://${encodeURIComponent(t)}.${yt}`:``}var J=(0,e.createLogger)(`VC`);async function xt(e){try{if(!e)return J.warn(`getVenue called without venueId`),null;let t=await y(`/venues/${e}`);return t.success?t.data??null:(J.error(`Failed to fetch venue: ${t.statusCode}`),null)}catch(e){return J.error(`Error fetching venue:`,e),null}}async function St(e){let t=await xt(e);return t?{serviceFeePercentage:t.serviceFeePercentage??0,serviceFeeCents:t.serviceFeeCents==null?0:t.serviceFeeCents,taxPercentage:t.taxPercentage??0}:null}async function Ct(e){try{if(!e)return J.warn(`getVenueBySlug called without slug`),null;let t=await y(`/venues/slug/${encodeURIComponent(e)}`);return t.success?t.data??null:(J.error(`Failed to fetch venue by slug: ${t.statusCode}`),null)}catch(e){return J.error(`Error fetching venue by slug:`,e),null}}async function wt(e){let t=bt(e);if(!t)return!1;try{let e=await y(`/sites/by-host/${encodeURIComponent(new URL(t).host)}`);return!!(e.success&&e.data)}catch(e){return J.warn(`hasPublishedSite failed:`,e),!1}}function Y(e,t){return e==null||t(e)}function Tt(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.valid===!0&&Number.isInteger(t.appliedAmount)&&typeof t.remainingTotal==`number`&&Number.isFinite(t.remainingTotal)&&Y(t.giftCardCode,e=>typeof e==`string`)&&Y(t.giftCardBalance,e=>typeof e==`number`&&Number.isFinite(e))&&Y(t.fullyCoveredByCard,e=>typeof e==`boolean`)}var Et=`We couldn't apply that gift card. Please try again.`;function Dt(e){if(!Tt(e))return{valid:!1,error:Et};let t=e,r=(0,n.centsToDollars)((0,n.toCents)(t.appliedAmount)),i=t.remainingTotal,a=t.fullyCoveredByCard??i<=0,o=!a;return{valid:!0,giftCardCode:t.giftCardCode??void 0,giftCardAmount:r,giftCardBalance:t.giftCardBalance??void 0,paymentType:a?`gift_card_only`:`split`,stripeAmount:i,orderTotal:r+i,requiresStripe:o}}var X=(0,e.createLogger)(`VC`);async function Ot(e){try{let n=await b(`${_()}/gift-cards/purchase/create`,e);if(!n.success)throw X.error(`Gift card purchase creation failed:`,n.error),new t.ApiError(n.error||`Failed to create gift card purchase`,n.statusCode??0,{endpoint:`${_()}/gift-cards/purchase/create`,method:`POST`});return X.debug(`Gift card purchase created:`,n.data),n.data}catch(e){return X.error(`Gift card purchase creation error:`,e),null}}async function kt(e,t){try{let n=await b(`${_()}/cart/${e}/apply-gift-card`,{giftCardCode:t});if(!n.success)return n.statusCode===429?{valid:!1,error:`Too many attempts. Please wait a moment and try again.`}:(X.error(`Apply gift card failed:`,n.error),{valid:!1,error:n.error||`Invalid gift card code`});let r=Dt(n.data);return r.valid||X.error(`Apply gift card returned an unusable payload:`,n.data),r}catch(e){return X.error(`applyGiftCard error:`,e),{valid:!1,error:`Network error. Please check your connection and try again.`}}}async function At(e,t){try{let n=t?.giftCardId?{giftCardId:t.giftCardId}:t?.code?{giftCardCode:t.code}:null,r=await x(`${_()}/cart/${e}/gift-card`,n?{body:JSON.stringify(n)}:void 0);if(!r.success)return X.error(`Remove gift card failed:`,r.error),{success:!1,error:r.error||`Failed to remove gift card`};let i=r.data??{},a=i.newTotal??i.NewTotal;return{success:!0,...typeof a==`number`?{remainingTotal:a}:{}}}catch(e){return X.error(`removeGiftCard error:`,e),{success:!1,error:`Network error. Please check your connection and try again.`}}}async function jt(e,t,r){let i=M(r);try{let r=await b(`${_()}/cart/${e}/complete-gift-card-payment`,{customerName:(0,n.formatFullName)(t.firstName,t.lastName),customerEmail:t.email,firstName:t.firstName,lastName:t.lastName,email:t.email,phoneNumber:t.phoneNumber||null,questionAnswer:t.questionAnswer||``,mailingList:t.mailingList||!1,attribution:k(),...i?{locale:i}:{}});return r.success?{success:!0,orderId:r.data?.orderId,confirmationNumber:r.data?.confirmationNumber}:(X.error(`Complete gift card payment failed:`,r.error),{success:!1,error:r.error||`Failed to complete payment`})}catch(e){return X.error(`completeGiftCardPayment error:`,e),{success:!1,error:`Network error. Please check your connection and try again.`}}}var Z=(0,e.createLogger)(`VC`);async function Mt(e,t,n=null,r=!1){try{let i={email:t};n&&r&&(i.phone=n,i.smsOptIn=!0);let a=await b(`/events/${e}/waitlist`,i);return a.success?{success:!0,updated:a.data?.updated,position:a.data?.position}:(Z.error(`Join waitlist failed:`,a.error),{success:!1,errorCode:a.error||`join_failed`})}catch(e){return Z.error(`joinWaitlist error:`,e),{success:!1,errorCode:`network_error`}}}async function Nt(e,t){try{let n=await b(`/checkout/validate-token/${e}`,{email:t});return n.success?{valid:!0,eventId:n.data?.eventId??0,expiresAt:n.data?.expiresAt}:{valid:!1,eventId:0,errorCode:n.error}}catch(e){return Z.error(`validateWaitlistToken error:`,e),{valid:!1,eventId:0,errorCode:`invalid_token`}}}async function Pt(e,t){try{let n=await b(`/waitlist/requeue/${e}`,{email:t});return n.success?{success:!0}:{success:!1,errorCode:n.error}}catch(e){return Z.error(`requeueWaitlistToFront error:`,e),{success:!1,errorCode:`internal_error`}}}async function Ft(e){let t={waitlistEnabled:!1,soldOut:!1,gated:!1};try{let n=await y(`/events/${e}/waitlist/status`);return n.success?{waitlistEnabled:!!n.data?.waitlistEnabled,soldOut:!!n.data?.soldOut,gated:!!n.data?.gated}:t}catch(e){return Z.error(`getWaitlistStatus error:`,e),t}}function It(e){let t=String(e%60).padStart(2,`0`);return e>=3600?`${Math.floor(e/3600)}:${String(Math.floor(e%3600/60)).padStart(2,`0`)}:${t}`:`${Math.floor(e/60)}:${t}`}function Lt(e,t,n={}){let{cancelled:a=!1,isRegistration:o=!1,waitlistEnabled:s=!1}=n,c=(0,r.browserNow)();if(a)return{text:`Canceled`,disabled:!0,reason:`cancelled`};if((e?.status||``).trim().toLowerCase()===`postponed`)return{text:`Postponed`,disabled:!0,reason:`postponed`};let l=(0,r.toInstantOrNull)(e.endDateTime||e.startDateTime);if(l&&(0,r.compareInstants)(l,c)<0)return{text:`Sales ended`,disabled:!0,reason:`event_past`};let u=(e?.salesStatus||``).trim().toLowerCase();if(u===`paused`)return{text:`Sales paused`,disabled:!0,reason:`sales_paused`};if(u===`ended`)return{text:`Sales ended`,disabled:!0,reason:`sales_ended`};let d=e?.hasPurchasableHiddenTickets===!0||Array.isArray(t)&&t.some(i.isHiddenTicketPurchasable),f=()=>d?{text:o?`Reserve a spot`:`Get tickets`,disabled:!1,reason:`hidden_only`}:s?{text:`Join Waitlist`,disabled:!1,reason:`sold_out_waitlist`}:{text:`Sold out`,disabled:!0,reason:`sold_out`};if(u===`sold_out`)return f();let p=(t||[]).filter(e=>e.salesChannel!==2&&!e.isHidden&&!(typeof e.visibility==`number`&&e.visibility>=i.TICKET_VISIBILITY.HIDDEN));if(p.length===0)return d?{text:o?`Reserve a spot`:`Get tickets`,disabled:!1,reason:`hidden_only`}:{text:`No tickets available`,disabled:!0,reason:`no_tickets`};let m=!1,h=!0,g=!0,_=null;for(let e of p){let t=(0,r.toInstantOrNull)(e.salesBegin||e.salesStart||e.saleBegin||e.onSaleStart),n=(0,r.toInstantOrNull)(e.salesEnd||e.saleEnd||e.onSaleEnd),i=e.remainingCapacity??e.quantityRemaining??e.quantity,a=e.soldOut||i!=null&&i<=0,o=t?(0,r.compareInstants)(t,c)>0:!1,s=n?(0,r.compareInstants)(n,c)<0:!1;!a&&!o&&!s&&(m=!0),a||(h=!1),o||(g=!1),o&&t&&!a&&!s&&(!_||(0,r.compareInstants)(t,_)<0)&&(_=t)}return m?{text:o?`Reserve a spot`:`Get tickets`,disabled:!1,reason:`available`}:g&&_?d?{text:o?`Reserve a spot`:`Get tickets`,disabled:!1,reason:`hidden_only`}:{text:`On sale ${Rt(_,(0,r.compareInstants)(_,c),[e.timezone,e.timeZone].find(e=>!!e&&(0,r.isValidIANATimezone)(e)))}`,disabled:!0,reason:`coming_soon`}:h?f():d?{text:o?`Reserve a spot`:`Get tickets`,disabled:!1,reason:`hidden_only`}:{text:`Sales ended`,disabled:!0,reason:`sales_ended`}}function Rt(e,t,n){let i=t/36e5,a=t/864e5;if(n){let t=e.toISOString(),o=(0,r.formatTzAbbreviation)(n,e),s=`${(0,r.formatEventTime)(t,n)} ${o}`;return i<24?s:a<=7?`${(0,r.formatDayOfWeek)(t,n,!0)} ${s}`:`${(0,r.formatEventDate)(t,n,{includeYear:!1})} ${s}`}let o=e=>(0,r.formatLocal)(e,{hour:`numeric`,minute:`2-digit`,hour12:!0},`en-US`);return i<24?o(e):a<=7?(0,r.formatLocal)(e,{weekday:`short`,hour:`numeric`,minute:`2-digit`,hour12:!0},`en-US`):`${(0,r.formatLocal)(e,{month:`short`,day:`numeric`},`en-US`)} ${o(e)}`}function zt(e){let t=e;return{uuid:t.uuid||String(t.id||t.ID||``),id:t.id||t.ID,ticketNumber:t.ticketNumber||t.ticket_number,orderId:t.orderId||t.order_id,attendeeFirstName:t.attendeeFirstName||t.attendee_first_name||t.firstName,attendeeLastName:t.attendeeLastName||t.attendee_last_name||t.lastName,attendeeEmail:t.attendeeEmail||t.attendee_email||t.email,ticketName:t.ticketName||t.ticket_name||t.name||``,ticketTypeId:t.ticketTypeId||t.ticket_type_id,purchasePrice:t.purchasePrice||t.purchase_price||t.price||0,status:t.status,checkedIn:t.checkedIn||t.checked_in,checkedInAt:t.checkedInAt||t.checked_in_at}}function Bt(e){let t=e,n=t.purchasedTickets||t.tickets||t.purchased_tickets||[];return{uuid:t.uuid||String(t.id||t.ID||``),id:t.id||t.ID,customerEmail:t.customerEmail||t.email||t.customer_email||``,customerFirstName:t.customerFirstName||t.firstName||t.first_name,customerLastName:t.customerLastName||t.lastName||t.last_name,status:t.status||`unknown`,totalAmount:t.totalAmount||t.total||t.total_amount||0,subtotal:t.subtotal,serviceFeesAmount:t.serviceFeesAmount||t.serviceFee||t.service_fee||t.service_fees_amount||0,taxAmount:t.taxAmount||t.tax||t.tax_amount||0,discount:t.discount==null?0:t.discount,paymentIntentId:t.paymentIntentId||t.payment_intent_id,paymentMethod:t.paymentMethod||t.payment_method,purchasedTickets:n.map(zt),createdAt:t.createdAt||t.created_at,updatedAt:t.updatedAt||t.updated_at}}var Vt=zt,Ht=Bt;function Ut(e){let t=Bt(e),r=t.uuid.split(`-`)[0]||t.uuid,i=Number(t.totalAmount);return{orderId:t.uuid,displayOrderId:r,email:t.customerEmail,customerName:[t.customerFirstName,t.customerLastName].filter(Boolean).join(` `),total:t.totalAmount,formattedTotal:`${(0,n.formatCurrency)((0,n.asUSD)(Number.isFinite(i)?i/100:0))}`,ticketCount:t.purchasedTickets.length,status:t.status}}function Wt(e){return(0,n.resolveImageUrl)(e,{cdn:!0})}function Q(e){return Wt(e.imageUrl||e.imageURL||e.image_url||e.image||``)}function Gt(e){switch(e){case`available`:case`sold_out`:case`coming_soon`:case`ended`:return e;default:return null}}function Kt(e){let t=e.ctaState||e.cta_state;if(t){let e=Gt(t);if(e)return e}if(e.isCancelled||e.is_cancelled)return`ended`;let n=(0,r.toInstantOrNull)(e.startDateTime||e.start_date_time||e.date);if(n){let e=Date.now();if(n.getTime()<e)return`ended`}let i=e.ticketsAvailable??e.tickets_available;if(i!==void 0)return i<=0?`sold_out`:`available`;let a=e.availableTickets||e.available_tickets||e.tickets||[];return a.length===0?`coming_soon`:a.reduce((e,t)=>{let n=t.quantityAvailable??t.quantity_available??t.quantity??0,r=t.quantitySold??t.quantity_sold??0;return e+Math.max(0,n-r)},0)<=0?`sold_out`:`available`}function qt(e){let t=e;return{id:t.id||t.ID,name:t.name||t.ticketName||``,description:t.description,price:t.price==null?0:t.price,quantity:t.quantity||t.totalQuantity||0,quantitySold:t.quantitySold||t.quantity_sold||0,quantityAvailable:t.quantityAvailable||t.quantity_available||(t.quantity||0)-(t.quantitySold||0),minPerOrder:t.minPerOrder||t.min_per_order||1,maxPerOrder:t.maxPerOrder||t.max_per_order||10,saleStartDate:t.saleStartDate||t.sale_start_date,saleEndDate:t.saleEndDate||t.sale_end_date,isHidden:t.isHidden||t.is_hidden||!1,revealWithPromoCode:t.revealWithPromoCode||t.reveal_with_promo_code,ticketType:t.ticketType||t.ticket_type||0,sectionId:t.sectionId||t.section_id,sortOrder:t.sortOrder||t.sort_order||0}}function $(e){let t=e,n=(t.availableTickets||t.available_tickets||t.tickets||[]).map(qt),r=n.map(e=>e.price).filter(e=>e>0),i=r.length>0?Math.min(...r):void 0,a=r.length>0?Math.max(...r):void 0;return{eventID:t.eventID||t.id||t.ID||0,id:t.id||t.ID,name:t.name||t.title||``,title:t.title||t.name,slug:t.slug,description:t.description,date:t.date||t.startDateTime||t.start_date_time||``,startDateTime:t.startDateTime||t.start_date_time,endDateTime:t.endDateTime||t.end_date_time,doorsOpenTime:t.doorsOpenTime||t.doors_open_time,timezone:t.timezone||t.time_zone,venueId:t.venueId||t.venue_id,venueName:t.venueName||t.venue_name,venueAddress:t.venueAddress||t.venue_address,location:t.location||t.venueAddress||t.venue_address,imageUrl:Q(t),imageURL:Q(t),status:t.status,isPublished:t.isPublished??t.is_published,isCancelled:t.isCancelled??t.is_cancelled,availableTickets:n,ticketsAvailable:t.ticketsAvailable??t.tickets_available??n.reduce((e,t)=>e+(t.quantityAvailable||0),0),ticketsSold:t.ticketsSold??t.tickets_sold,minPrice:t.minPrice??t.min_price??i,maxPrice:t.maxPrice??t.max_price??a,ctaText:t.ctaText||t.cta_text,ctaState:Kt(t),showPerformers:t.showPerformers??t.show_performers,eventSeriesId:t.eventSeriesId||t.event_series_id,seriesInstanceNumber:t.seriesInstanceNumber||t.series_instance_number,timeZone:t.timeZone,salesStatus:t.salesStatus||t.sales_status,eventSummary:t.eventSummary,password:t.password,hasPassword:t.hasPassword,disclaimer:t.disclaimer,ticketType:t.ticketType,eventTicketingType:t.eventTicketingType,ageRestriction:t.ageRestriction,displayAgeRestriction:t.displayAgeRestriction,displayStartTime:t.displayStartTime,displayEndTime:t.displayEndTime,displayDoorsTime:t.displayDoorsTime,displayTicketsLeft:t.displayTicketsLeft,postSalesMessage:t.postSalesMessage,collectionId:t.collectionId||t.collection_id,ticketsRemaining:t.ticketsRemaining,ticketsTotal:t.ticketsTotal,hasHiddenTickets:t.hasHiddenTickets,stage:t.stage,stageName:t.stageName,stageId:t.stageId,eventCategoryTypes:t.eventCategoryTypes,publicPerformers:t.publicPerformers,collectionIds:t.collectionIds,venue:t.venue,performers:t.performers,faqs:t.faqs,showtimes:t.showtimes,purchasedTickets:t.purchasedTickets}}var Jt=qt,Yt=$,Xt=$;function Zt(e){return(0,n.resolveImageUrl)(e,{cdn:!0})}function Qt(e){let t=e,n=t.logoUrl||t.logo_url||t.logo;return{id:t.id||t.ID||0,name:t.name||``,slug:t.slug,address:t.address,googleLocationNameCache:t.googleLocationNameCache||t.google_location_name_cache,city:t.city,state:t.state,zipCode:t.zipCode||t.zip_code,country:t.country,timezone:t.timezone||t.time_zone,logoUrl:Zt(n),serviceFeePercentage:t.serviceFeePercentage??t.service_fee_percentage??0,serviceFeeCents:t.serviceFeeCents??t.service_fee_cents??0,absorbServiceFee:(t.absorbServiceFee??t.absorb_service_fee)===!0,taxPercentage:t.taxPercentage??t.tax_percentage??0,organizationId:t.organizationId||t.organization_id}}var $t=Qt;function en(e){let t=e;return{serviceFeePercentage:t.serviceFeePercentage??t.service_fee_percentage??0,serviceFeeCents:t.serviceFeeCents??t.service_fee_cents??0,taxPercentage:t.taxPercentage??t.tax_percentage??0}}function tn(e){return[e.address,e.city,e.state,e.zipCode].filter(Boolean).join(`, `)}exports.apiDelete=x,exports.apiGet=y,exports.apiPost=b,exports.apiPut=ne,exports.applyGiftCard=kt,exports.applyPromoCode=He,exports.calculateCtaState=Kt,exports.cancelReservation=je,exports.checkCollectionPassword=gt,exports.checkEventPassword=_t,exports.completeGiftCardPayment=jt,exports.completeReservation=Ae,exports.computeCtaState=Lt,exports.configureApi=p,exports.createGiftCardPurchase=Ot,exports.createOrder=Me,exports.createPaymentIntent=De,exports.err=I,exports.errNotFound=L,exports.extendCheckoutSession=Fe,exports.extractVenueFees=en,exports.fetchAllVenues=tt,exports.fetchAllVenuesResult=et,exports.fetchEventDetails=Ye,exports.fetchEventDetailsResult=Je,exports.fetchEventPerformers=$e,exports.fetchEventPerformersResult=Qe,exports.fetchEventTickets=Ze,exports.fetchEventTicketsResult=Xe,exports.fetchPublicCollection=ht,exports.fetchSeriesOccurrences=pt,exports.fetchSeriesOccurrencesResult=ft,exports.fetchVenueEvents=rt,exports.fetchVenueEventsResult=nt,exports.formatVenueAddress=tn,exports.formatWaitlistWindow=It,exports.getApiConfig=m,exports.getCDNImageUrl=Wt,exports.getCartByUUID=Oe,exports.getClientIP=ee,exports.getEventImageUrl=Q,exports.getLegacyPublicUrl=g,exports.getMonthEvents=st,exports.getMonthEventsResult=ot,exports.getOrder=Ne,exports.getOrdersV2Url=_,exports.getOrgMonthEvents=lt,exports.getOrgMonthEventsResult=ct,exports.getPublicBaseUrl=h,exports.getSeriesOccurrences=dt,exports.getSeriesOccurrencesResult=ut,exports.getSessionStatus=Ie,exports.getVenue=xt,exports.getVenueBySlug=Ct,exports.getVenueFees=St,exports.getWaitlistStatus=Ft,exports.hasPromoCodes=Ve,exports.hasPublishedSite=wt,exports.initiateOrder=Le,exports.isErr=Ke,exports.isOk=Ge,exports.joinWaitlist=Mt,exports.ok=F,exports.removeGiftCard=At,exports.removePromoCode=Ue,exports.requeueWaitlistToFront=Pt,exports.resolvePublicEntity=mt,exports.testNetworkConnection=vt,exports.trackUTMSource=Re,exports.transformAvailableTicket=Jt,exports.transformEvent=Yt,exports.transformEventData=Xt,exports.transformOrder=Ht,exports.transformOrderForDisplay=Ut,exports.transformTicket=Vt,exports.transformVenue=$t,exports.unwrapOr=R,exports.updateCartQuantities=ke,exports.validatePaymentIntent=Pe,exports.validatePromoCode=Be,exports.validateWaitlistToken=Nt;
package/dist/api/api.mjs CHANGED
@@ -1144,7 +1144,7 @@ function nn(e) {
1144
1144
  function rn(e, t, n = {}) {
1145
1145
  let { cancelled: r = !1, isRegistration: i = !1, waitlistEnabled: a = !1 } = n, o = ee();
1146
1146
  if (r) return {
1147
- text: "Cancelled",
1147
+ text: "Canceled",
1148
1148
  disabled: !0,
1149
1149
  reason: "cancelled"
1150
1150
  };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Canonical Bearer auth-header builder for venue-calendar (R-AUTH-03).
3
+ *
4
+ * Doctrine: "One Bearer-header builder per app, used everywhere. All HTTP call
5
+ * sites import this builder — no inline Bearer template literals." Every VC call
6
+ * site that needs an `Authorization: Bearer <token>` header routes through here,
7
+ * so the Bearer construction lives in exactly one place and any future
8
+ * rename/format change has a single surface.
9
+ *
10
+ * Empty-token contract: when `token` is falsy (an unset operator token), the
11
+ * `Authorization` value is the empty string — byte-identical to what the call
12
+ * sites sent before migration (`token ? \`Bearer ${token}\` : ''`). The builder
13
+ * preserves that shape; it does not drop the header or alter what an unset token
14
+ * transmits.
15
+ *
16
+ * @stale-doc-comment-allow: Authorization
17
+ * (`Authorization` is an HTTP header NAME, not a code entity. It exists here only
18
+ * as an object key and a type-literal property — both of which stopped resolving
19
+ * in vc#685, because a property key labels a slot rather than declaring a binding.
20
+ * The header is real and external, which is exactly what the per-name hatch is
21
+ * for; a file-level escape would blind the rest of this file.)
22
+ */
23
+ export declare function buildAuthHeaders(token: string | undefined | null): {
24
+ Authorization: string;
25
+ };
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Can this page complete a purchase?
3
+ *
4
+ * WHY THIS EXISTS (embed audit 2026-08-22, blocker B1)
5
+ *
6
+ * The buy path is gated on the `cors_allowed_domains` allowlist: a venue that
7
+ * embeds the calendar on its own website must have that domain registered, or
8
+ * every cart/promo/gift-card/payment call is refused. Before this module the
9
+ * failure was invisible until a buyer had already chosen a ticket — the
10
+ * calendar rendered perfectly, and the dead end was a disabled CTA three
11
+ * screens in. This asks the question up front so the calendar can say so.
12
+ *
13
+ * The probe is deliberately conservative in three ways:
14
+ *
15
+ * 1. It only runs CROSS-ORIGIN. On get-micdrop.com's own pages — the large
16
+ * majority of traffic — the allowlist is not in play and no request is made.
17
+ * 2. It runs ONCE per browser session per origin, memoized in-module (so N
18
+ * widgets on one page share one request) and in sessionStorage (so it
19
+ * survives navigation around the venue's site).
20
+ * 3. Only an explicit `ORIGIN_NOT_REGISTERED` counts as unavailable. A 429, a
21
+ * 5xx, a timeout, an offline browser — anything that merely failed to
22
+ * answer — resolves to `unknown`, which renders nothing. An alert that
23
+ * appears during an unrelated outage would be worse than no alert.
24
+ */
25
+ /** The backend code that means "this domain is not registered for checkout". */
26
+ export declare const ORIGIN_NOT_REGISTERED = "ORIGIN_NOT_REGISTERED";
27
+ export type CheckoutAvailabilityReason =
28
+ /** Purchases work from this origin. */
29
+ 'available'
30
+ /** The host domain is not on the allowlist; buying is refused. */
31
+ | 'origin-not-registered'
32
+ /** Not asked, or the question could not be answered. Render nothing. */
33
+ | 'unknown';
34
+ export interface CheckoutAvailability {
35
+ /** False ONLY when the origin was explicitly rejected. `unknown` is true. */
36
+ available: boolean;
37
+ reason: CheckoutAvailabilityReason;
38
+ /** The page's own origin, for the message. Empty during SSR. */
39
+ origin: string;
40
+ }
41
+ /**
42
+ * True when the widget is running on a domain that is not the API's own.
43
+ *
44
+ * `getApiConfig().baseUrl` is a hard literal (`https://get-micdrop.com`), never
45
+ * derived from the host page, so this is a genuine first-party/third-party test
46
+ * and not a tautology.
47
+ */
48
+ export declare function isCrossOriginEmbed(): boolean;
49
+ /**
50
+ * Subscribe to the answer. Fires immediately with whatever is already known,
51
+ * and again if it changes. Returns an unsubscribe function.
52
+ */
53
+ export declare function onCheckoutAvailabilityChange(listener: (_state: CheckoutAvailability) => void): () => void;
54
+ /**
55
+ * Record that a REAL buy-path call was refused for this origin.
56
+ *
57
+ * This is the authoritative signal — an actual cart or payment request, not a
58
+ * probe — so it overrides a cached `available` and is what keeps the alert
59
+ * correct if the domain is de-registered mid-session, or if the probe was
60
+ * skipped entirely. Wired from the API client, which sees every failure code.
61
+ */
62
+ export declare function noteCheckoutOriginRejected(): void;
63
+ /**
64
+ * Ask whether this origin may complete a purchase.
65
+ *
66
+ * Safe to call from every widget instance on the page: the first call owns the
67
+ * request and the rest await it.
68
+ */
69
+ export declare function probeCheckoutAvailability(): Promise<CheckoutAvailability>;
70
+ /** Test seam: forget the memo, the cache and the subscribers. */
71
+ export declare function resetCheckoutAvailability(): void;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * In-memory cache of gate passwords the server has already accepted.
3
+ *
4
+ * WHY THIS IS NOT sessionStorage (security audit 2026-08-14, F36).
5
+ *
6
+ * `CollectionView` used to persist the plaintext collection password to
7
+ * `sessionStorage` under `micdrop:authedCollections:list`. This widget is a
8
+ * light-DOM embed: it runs on the VENUE'S OWN ORIGIN, alongside whatever else
9
+ * that page loads — tag managers, RUM agents, session-replay recorders,
10
+ * chat widgets. `sessionStorage` is readable by every one of them, and it kept
11
+ * the password readable for the whole tab session, long after the visitor
12
+ * typed it. Gate passwords are stored plaintext at rest server-side and are
13
+ * SHARED BY EVERY ATTENDEE of a private/pre-sale event, so one harvested value
14
+ * defeats the gate for everyone.
15
+ *
16
+ * A module-scoped Map keeps the same UX for the case that actually matters —
17
+ * the widget is a SPA, so navigating collection → event → back re-mounts the
18
+ * component and the unlock still survives — while removing the cross-script
19
+ * read surface and the persistence. The trade is deliberate and narrow: a hard
20
+ * page RELOAD now re-prompts, where before it did not.
21
+ *
22
+ * The server remains the authority either way. A cached password that no
23
+ * longer matches comes back as `passwordRequired` and the caller re-prompts,
24
+ * so nothing here can reveal gated content on its own.
25
+ */
26
+ /** Which gate a cached password belongs to. Keys are namespaced by scope so an
27
+ * unlocked collection never satisfies the per-event gate (or vice versa). */
28
+ export type GateScope = 'collection' | 'event';
29
+ /** Remember a password the server just accepted. No-op for an empty password. */
30
+ export declare function rememberGatePassword(scope: GateScope, id: string | number, password?: string): void;
31
+ /** Recall a previously accepted password for this page load, if any. */
32
+ export declare function recallGatePassword(scope: GateScope, id: string | number): string | undefined;
33
+ /** Drop a cached password the server has since rejected (rotated / revoked). */
34
+ export declare function forgetGatePassword(scope: GateScope, id: string | number): void;
35
+ /**
36
+ * Record that a gate has been unlocked for this page load.
37
+ *
38
+ * This is the ONLY store of "already authenticated" for the event/collection
39
+ * gates. It is deliberately NOT web storage:
40
+ *
41
+ * - a blocked store (sandboxed iframe, Safari private mode, a partitioned
42
+ * third-party context) made the old `sessionStorage.getItem` READ throw, and
43
+ * that throw propagated out of the `isLocked` derivation and out of the
44
+ * correct-password handler — so on a venue's own domain a buyer could type
45
+ * the RIGHT password and still be told nothing happened. A Map cannot throw,
46
+ * so a blocked store now degrades to "re-prompt on the next mount", which is
47
+ * the honest fallback.
48
+ * - it is unreachable from other scripts on the host page, closing the forge
49
+ * surface described on LEGACY_STORAGE_KEYS.
50
+ *
51
+ * The server stays the authority: an unlock recorded here only suppresses the
52
+ * prompt, and any payload that still arrives with `passwordRequired` re-locks.
53
+ */
54
+ export declare function rememberGateUnlock(scope: GateScope, id: string | number): void;
55
+ /** Whether this page load has already cleared that gate. Never throws. */
56
+ export declare function recallGateUnlock(scope: GateScope, id: string | number): boolean;
57
+ /** Re-lock a gate (password rotated / revoked, or the server said so). */
58
+ export declare function forgetGateUnlock(scope: GateScope, id: string | number): void;
59
+ /** Test hook: wipe the whole cache between cases. */
60
+ export declare function clearGatePasswordCache(): void;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Cross-event recommendations — the buyer's read.
3
+ *
4
+ * The rail on an event page and the block on the checkout-success page both
5
+ * come from here. The answer is already materialized and cached server-side, so
6
+ * this is one indexed read; nothing on a buyer's path ever waits on a model.
7
+ *
8
+ * EVERY failure returns an empty list. A cross-sell rail is decoration on
9
+ * somebody's event page — if it cannot load, the page renders without it and
10
+ * nobody sees an error.
11
+ */
12
+ /** Why a show is being recommended. Rendered to the buyer as the badge. */
13
+ export type RecommendationRule = 'performer' | 'genre' | 'weekday' | 'similar' | 'pin';
14
+ /** The surfaces a buyer can see. `email` is rendered server-side at send time. */
15
+ export type RecommendationSurface = 'event_page' | 'success';
16
+ export interface RecommendationCard {
17
+ eventId: number;
18
+ slot: number;
19
+ rule: RecommendationRule;
20
+ title: string;
21
+ startsAt: string | null;
22
+ timeZone: string;
23
+ venueName: string;
24
+ image?: string;
25
+ url?: string;
26
+ minPrice?: number;
27
+ }
28
+ /**
29
+ * Fetches the recommendations for one event and surface.
30
+ *
31
+ * @param eventId - the event being viewed or bought
32
+ * @param surface - which placement is asking
33
+ * @param widgetKey - the embed key, when this render is inside a widget
34
+ */
35
+ export declare function getRecommendations(eventId: number, surface?: RecommendationSurface, widgetKey?: string): Promise<RecommendationCard[]>;
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Surge queue — the virtual waiting room's half of the wire.
3
+ *
4
+ * On a viral on-sale every buyer races for the same inventory decrement on
5
+ * `POST /orders/create`. The backend puts a line in front of that door: a
6
+ * bounded number of buyers hold a checkout pass at any moment and everyone else
7
+ * waits with a position and an estimate. These four calls are how the widget
8
+ * asks about the line, takes a place in it, watches it move, and gives the place
9
+ * back.
10
+ *
11
+ * FAIL OPEN, EVERY TIME. The queue is a protection mechanism, not a money
12
+ * control — the backend itself reports `armed:false` when it cannot reach Redis,
13
+ * because refusing every sale on the platform is a worse outcome than a surge.
14
+ * So every function here degrades to "there is no line": a read that fails must
15
+ * never leave an overlay across a checkout that would have worked. The only
16
+ * thing that actually gates a purchase is the server's `QUEUE_REQUIRED` refusal
17
+ * on `/orders/create`, which `initiateOrder` in src/lib/utils/orderApi.ts
18
+ * surfaces as its own error type — that refusal cannot be lost by a client-side
19
+ * failure, which is what makes failing open here safe.
20
+ *
21
+ * @auth-token-url-escape: the status poll carries its token in the query string
22
+ * because that is the only shape the endpoint answers —
23
+ * `GET /events/:id/queue/status?token=…`. A request header would move it out of
24
+ * nginx logs and browser history, and would also add a CORS preflight to every
25
+ * poll of a line that can be tens of thousands deep, on the one endpoint whose
26
+ * whole purpose is to survive that load. What the token actually grants is one
27
+ * place in one line: it expires with the pass, `leaveQueue` revokes it, and it
28
+ * authorises no order, no payment and no session. The marker is FILE-LEVEL —
29
+ * the only scope the rule offers — so it covers anything added here later.
30
+ */
31
+ /**
32
+ * The refusal code the gate answers on `POST /orders/create` (HTTP 429) when
33
+ * the event is armed and the caller holds no admitted token.
34
+ *
35
+ * Exported so the one consumer that has to recognise it — `initiateOrder` —
36
+ * matches the backend's spelling rather than carrying a second copy of the
37
+ * string. A drifted spelling would classify a queue refusal as a server fault
38
+ * and the buyer would be told the sale failed.
39
+ */
40
+ export declare const QUEUE_REQUIRED = "QUEUE_REQUIRED";
41
+ /**
42
+ * This module's own code for "the queue could not be asked" — a transport
43
+ * failure, not a verdict. Distinct from anything the backend sends so a caller
44
+ * can tell a refusal apart from an unanswered question, and fail open on both.
45
+ */
46
+ export declare const QUEUE_UNAVAILABLE = "queue_unavailable";
47
+ /** The event's own setting: `off` never queues, `on` always does, `auto` arms
48
+ * itself while demand holds and dissolves on its own afterwards. */
49
+ export type QueueMode = 'off' | 'auto' | 'on';
50
+ /**
51
+ * Where one buyer stands.
52
+ *
53
+ * `open` is the answer when the event has no line at all — there is nothing to
54
+ * wait for and no token to carry. `expired` means the line entry or the checkout
55
+ * pass timed out and the client must re-join.
56
+ */
57
+ export type QueueState = 'open' | 'waiting' | 'admitted' | 'expired';
58
+ /** The tokenless "is there a line?" answer — cheap enough for every page load. */
59
+ export interface QueueSnapshot {
60
+ /** The only field the widget branches on: false renders nothing at all. */
61
+ armed: boolean;
62
+ mode: QueueMode;
63
+ /** How many people are in line right now. */
64
+ waiting: number;
65
+ /** The server's estimate for somebody joining now. */
66
+ etaSeconds: number;
67
+ }
68
+ /**
69
+ * A place in line, or a checkout pass — join and status answer the same shape,
70
+ * so a poll is read exactly like the join that started it.
71
+ */
72
+ export interface QueueEntry {
73
+ token: string;
74
+ state: QueueState;
75
+ /** 1-based place in line. */
76
+ position: number;
77
+ /** How many people are in front of this buyer. */
78
+ ahead: number;
79
+ etaSeconds: number;
80
+ /** How long to wait before polling again. The server widens it as the line
81
+ * grows, so a 50k-deep queue does not become its own DDoS — honour it. */
82
+ pollAfterMs: number;
83
+ /** ISO instant the line entry or the checkout pass dies. */
84
+ expiresAt: string;
85
+ }
86
+ export interface QueueEntryResult {
87
+ success: boolean;
88
+ entry?: QueueEntry;
89
+ /** The backend's failure code, or this module's `queue_unavailable`. */
90
+ errorCode?: string;
91
+ /** The HTTP status, so a caller can back off on a 429 from the join or status
92
+ * rate limiter without reading a sentence written for a human. */
93
+ statusCode?: number;
94
+ }
95
+ export interface LeaveQueueResult {
96
+ /** False for an unknown token, which the server answers 200 — leave is a
97
+ * beacon, not a transaction, so "nothing to release" is not a failure. */
98
+ released: boolean;
99
+ }
100
+ /**
101
+ * Is there a line on this event? Tokenless and cheap, for page load.
102
+ *
103
+ * Answers `armed:false` for every failure, so a blip on this call is exactly
104
+ * today's behaviour: the buyer goes straight at the buy button, and the gate
105
+ * decides.
106
+ */
107
+ export declare function getQueueState(eventId: string | number): Promise<QueueSnapshot>;
108
+ /**
109
+ * Take a place in line, or a checkout pass when there is spare capacity.
110
+ *
111
+ * Safe to call again on a reload: the server hands a caller that already holds a
112
+ * live token for this event its existing entry back, so a refresh does not cost
113
+ * the buyer their spot. It does NOT need to be called before every purchase —
114
+ * the reactive entry into the line is the gate's `QUEUE_REQUIRED` refusal.
115
+ */
116
+ export declare function joinQueue(eventId: string | number): Promise<QueueEntryResult>;
117
+ /**
118
+ * The poll. Answers the same shape as the join that started it, and draining the
119
+ * line is its server-side side effect — so stopping the poll stops the line
120
+ * moving for everybody, and polling faster than `pollAfterMs` is what the server
121
+ * widens that number to prevent.
122
+ */
123
+ export declare function getQueueStatus(eventId: string | number, token: string): Promise<QueueEntryResult>;
124
+ /**
125
+ * Give the place in line, or the checkout pass, back.
126
+ *
127
+ * Sent on `pagehide`, which is the whole reason for the two request options:
128
+ * without `keepalive` the browser cancels an in-flight request as the document
129
+ * goes away and the slot is held until the pass expires — the next buyer waits
130
+ * fifteen minutes for a tab that closed. And a beacon fired at unload has nobody
131
+ * left to tell, so its failure is not routed to the global error handler.
132
+ */
133
+ export declare function leaveQueue(eventId: string | number, token: string): Promise<LeaveQueueResult>;