@ticketlayer/elements 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/ticketlayer-elements.cjs.js +1 -1
  3. package/dist/cjs/tl-buy-modal.cjs.entry.js +2 -2
  4. package/dist/cjs/tl-cart-drawer.cjs.entry.js +3 -3
  5. package/dist/cjs/tl-order-tickets_2.cjs.entry.js +48 -3
  6. package/dist/cjs/tl-seat-map.cjs.entry.js +2 -2
  7. package/dist/collection/components/tl-buy-modal/tl-buy-modal.css +57 -3
  8. package/dist/collection/components/tl-buy-modal/tl-buy-modal.js +1 -1
  9. package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.css +43 -1
  10. package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.js +2 -2
  11. package/dist/collection/components/tl-order-tickets/tl-order-tickets.css +32 -0
  12. package/dist/collection/components/tl-order-tickets/tl-order-tickets.js +64 -3
  13. package/dist/collection/components/tl-seat-map/tl-seat-map.js +2 -2
  14. package/dist/components/tl-buy-modal.js +1 -1
  15. package/dist/components/tl-cart-drawer.js +1 -1
  16. package/dist/components/tl-order-tickets2.js +1 -1
  17. package/dist/components/tl-seat-map.js +1 -1
  18. package/dist/elements.docs.json +2 -2
  19. package/dist/esm/loader.js +1 -1
  20. package/dist/esm/ticketlayer-elements.js +1 -1
  21. package/dist/esm/tl-buy-modal.entry.js +2 -2
  22. package/dist/esm/tl-cart-drawer.entry.js +3 -3
  23. package/dist/esm/tl-order-tickets_2.entry.js +48 -3
  24. package/dist/esm/tl-seat-map.entry.js +2 -2
  25. package/dist/ticketlayer-elements/{p-ee3aa227.entry.js → p-9372ff1f.entry.js} +1 -1
  26. package/dist/ticketlayer-elements/p-9cb3ab24.entry.js +1 -0
  27. package/dist/ticketlayer-elements/p-f5846f61.entry.js +1 -0
  28. package/dist/ticketlayer-elements/p-f6314d1e.entry.js +1 -0
  29. package/dist/ticketlayer-elements/ticketlayer-elements.esm.js +1 -1
  30. package/dist/types/components/tl-order-tickets/tl-order-tickets.d.ts +28 -0
  31. package/dist/types/components.d.ts +48 -0
  32. package/elements.catalogue.json +3 -3
  33. package/package.json +1 -1
  34. package/dist/ticketlayer-elements/p-10f01a1f.entry.js +0 -1
  35. package/dist/ticketlayer-elements/p-9d8163d6.entry.js +0 -1
  36. package/dist/ticketlayer-elements/p-dd43f015.entry.js +0 -1
@@ -0,0 +1 @@
1
+ import{r as e,c as t,h as a,H as r}from"./p-Ba-RZTFI.js";import{w as i,g as o}from"./p-CqhvfyKV.js";const s=class{constructor(a){e(this,a),this.tlClose=t(this,"tlClose"),this.tlCheckout=t(this,"tlCheckout"),this.tlError=t(this,"tlError"),this.step="loading",this.eventName="",this.imageUrl="",this.venueLabel="",this.dateSummary="",this.selectedOccurrenceId=null,this.occurrenceCount=0,this.occurrenceLabel="",this.error=null,this.handleOccurrenceSelect=e=>{const t=e.detail.occurrence;this.selectedOccurrenceId=t.id,this.occurrenceLabel=this.labelFor(t),this.step="tickets"},this.handleAdded=()=>{this.step="done"},this.backToDates=()=>{this.selectedOccurrenceId=null,this.step="occurrence"},this.close=()=>this.tlClose.emit(),this.goCheckout=()=>this.tlCheckout.emit()}async componentWillLoad(){if(this.eventId)try{await i();const e=await o().getEventsManager().get(this.eventId);this.eventName=e?.name??"Tickets",this.imageUrl=e?.imageUrl||e?.heroImageUrl||"",this.venueLabel=[e?.venueName,e?.venueCity].filter(Boolean).join(", ");const t=e?.occurrences??[];this.occurrenceCount=t.length,this.dateSummary=this.summariseDates(t);const a=this.occurrenceId??(1===t.length?t[0]?.id:null);a?(this.selectedOccurrenceId=a,this.occurrenceLabel=this.labelFor(t.find((e=>e.id===a))),this.step="tickets"):this.step="occurrence"}catch(e){this.fail(e instanceof Error?e.message:"Could not load this event")}else this.fail("No event specified")}fail(e){this.error=e,this.step="error",this.tlError.emit({message:e})}summariseDates(e){const t=e.map((e=>e.startsAt)).filter((e=>!!e)).sort();if(0===t.length)return"";const a=e=>new Date(e).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"});if(1===t.length)return new Date(t[0]).toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",year:"numeric"});const r=a(t[0]),i=a(t[t.length-1]);return`${r===i?r:`${r} – ${i}`} · ${t.length} dates`}labelFor(e){return e?.startsAt?new Date(e.startsAt).toLocaleString("en-GB",{weekday:"short",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"}):""}stepKicker(){switch(this.step){case"occurrence":return"Choose a date";case"tickets":return"Select tickets";case"done":return"Nice one";default:return"Tickets"}}render(){return a(r,{key:"1245e518c2b5232f4d9dba091cf808cd3867fbef"},a("div",{key:"4e770fccdd785444f1cc87df4adab5a5dc1bf58a",class:"overlay",onClick:e=>{e.target===e.currentTarget&&this.close()}},a("div",{key:"57b13dac690028aeebd6a601acfba07f00854c40",class:{panel:!0,"panel--wide":"occurrence"===this.step},role:"dialog","aria-modal":"true","aria-label":this.eventName},a("header",{key:"881e9cc70a0ca25947f272b9ebcb2e6d4b4268f2",class:"panel-header"},this.imageUrl&&a("div",{key:"753f7df1b5118dfacbbc6b89b4e5d7ba114f6cdf",class:"event-thumb",style:{backgroundImage:`url(${this.imageUrl})`}}),a("div",{key:"9aaa32d1add90fabd1b0ea0c100f198962f4e6a5",class:"titles"},a("span",{key:"538032bdf2338206ad763417386852ff97cc472f",class:"kicker"},this.stepKicker()),a("h2",{key:"71429804179e7fbbea1fa90a2937a065517092f5",class:"event-name"},this.eventName),this.venueLabel&&a("p",{key:"dd968b397deab890df3a4fbdff33226e82bd9660",class:"event-meta"},this.venueLabel),this.dateSummary&&a("p",{key:"f40e6049d09b06c9f599e7d14d6fbb43b39b22fd",class:"event-meta"},this.dateSummary)),a("button",{key:"dbe0908f8cd8544654b627921f68cc4961802b77",class:"close-btn","aria-label":"Close",onClick:this.close},a("svg",{key:"23a750830e6e16d28cbcd5025507d25848aaadf7",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},a("path",{key:"e81b8763a5c781f72c1ca8a2113482948e3ba8cc",d:"M6 6l12 12M18 6L6 18","stroke-linecap":"round"})))),a("div",{key:"da71e610f907cf53e78246d2065aaf526d5ceffd",class:"panel-body"},"loading"===this.step&&a("div",{key:"28cbb9a98c7b08fa8dcb9d8d5dfbf3bec93fe38d",class:"state-msg"},a("span",{key:"915c8de87cbdc7da1ccf0622ce6c0f02fccf2cad",class:"spinner"})," Loading…"),"error"===this.step&&a("div",{key:"5785578bfef6f1ee81d938d91ffd3ded975f8c12",class:"state-msg error"},this.error),"occurrence"===this.step&&a("tl-occurrence-selector",{key:"eeb853eab141c3c103015e82d221a140f6a3a109",eventId:this.eventId,onTlSelect:this.handleOccurrenceSelect}),"tickets"===this.step&&this.selectedOccurrenceId&&a("div",{key:"f608f592ba651eb431375433eb4ff9393863ade5",class:"tickets-step"},this.occurrenceCount>1&&a("button",{key:"84adfbdbeaceb2cf4238c6ffd09558b4499ca940",class:"back-link",onClick:this.backToDates},"← Change date"),this.occurrenceLabel&&a("p",{key:"0317e9194049608711e8c622142c3ad2c0a5dc12",class:"occ-label"},this.occurrenceLabel),a("tl-ticket-selector",{key:"27b1e05d9d92fb8d519375e2b27d4b5ea0a4890a",eventId:this.eventId,occurrenceId:this.selectedOccurrenceId,onTlAddToCart:this.handleAdded})),"done"===this.step&&a("div",{key:"0853088206988c66d489f8804df7899821d49e64",class:"done-step"},a("div",{key:"c2955b893c4dffaadcdfd27bee96ef2724a131a6",class:"done-mark"},"🎟️"),a("p",{key:"370c30dfcbc0c25b4794d984dd261a3a5779a9dc",class:"done-title"},"Added to your cart"),a("p",{key:"c462f3c9292740e2fd2c74b173484f80a5dc1a30",class:"done-sub"},"Held for you while you check out."),a("button",{key:"484991f79572e3213ad6413a1af87599880c3643",class:"primary-btn",onClick:this.goCheckout},"Go to checkout"),a("button",{key:"5b4ba5a472b794e8f5af0f131dad1c8c11b869f5",class:"ghost-btn",onClick:this.close},"Keep browsing")))),a("div",{key:"9acdd36744d363f41f0bed7938ecea33322362d1",class:"powered-by"},a("div",{key:"f45545a8fc625336618352f0c0e9e84a1babce96",class:"pb-links"},a("a",{key:"dd929b12419b8353d9a09ad242a9f351dfd699e2",href:"https://ticketlayer.com/privacy",target:"_blank",rel:"noopener noreferrer"},"Privacy Policy"),a("a",{key:"859be221bdc76602defaebdb89a997778cda6a91",href:"https://ticketlayer.com/report-abuse",target:"_blank",rel:"noopener noreferrer"},"Report Abuse")),a("a",{key:"d4e1f44b3b084160d2df8b9d15e075ddc5e05363",class:"pb-brand",href:"https://ticketlayer.com",target:"_blank",rel:"noopener noreferrer"},a("span",{key:"fe7fd86576a4e9772daa2c4c449da060f20fa143",class:"pb-pre"},"Powered by"),a("svg",{key:"19412bd9e5522f0af9f847fe8fda6aa0f0004a3a",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},a("path",{key:"c159efd1b8fce42b8c0fd5bac21792b4dc2728ce",d:"M4 7.5A1.5 1.5 0 0 1 5.5 6h13A1.5 1.5 0 0 1 20 7.5v2a2 2 0 0 0 0 5v2a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 16.5v-2a2 2 0 0 0 0-5v-2Z",fill:"currentColor"}),a("path",{key:"283956eead27e5919301c30882da6eaa7b093a1a",d:"M13 7v10",stroke:"var(--tl-pb-perforation, var(--tl-background, #fff))","stroke-width":"1.2","stroke-dasharray":"1.5 1.8","stroke-linecap":"round"})),a("span",{key:"bc045fda144885737b88bf81b4f9000ec8d333be",class:"pb-word"},"Ticketlayer")))))}};s.style=":host{--_bg:var(--tl-background, #ffffff);--_fg:var(--tl-foreground, #111827);--_muted:var(--tl-muted, #f3f4f6);--_muted-fg:var(--tl-muted-foreground, #6b7280);--_border:var(--tl-border, #e5e7eb);--_primary:var(--tl-primary, #6366f1);--_primary-fg:var(--tl-primary-foreground, #ffffff);--_radius:var(--tl-radius-lg, var(--tl-radius, 0.75rem));--_font:var(--tl-font-family, system-ui, -apple-system, sans-serif);font-family:var(--_font)}.overlay{position:fixed;inset:0;z-index:2147483646;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px;background:rgba(8, 8, 16, 0.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:tl-fade 0.18s ease-out}.panel{width:100%;max-width:460px;max-height:86vh;display:flex;flex-direction:column;overflow:hidden;background:var(--_bg);color:var(--_fg);border:1px solid var(--_border);border-radius:var(--_radius);box-shadow:0 24px 64px rgba(0, 0, 0, 0.45);animation:tl-rise 0.22s cubic-bezier(0.16, 1, 0.3, 1);transition:max-width 0.25s cubic-bezier(0.16, 1, 0.3, 1)}.panel--wide{max-width:720px}.powered-by{--tl-pb-perforation:rgba(8, 8, 16, 0.6);width:100%;max-width:460px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 4px;font-size:12px;font-weight:500;color:rgba(255, 255, 255, 0.78);animation:tl-fade 0.3s ease-out}.powered-by a{color:inherit;text-decoration:none;opacity:0.85;transition:opacity 0.15s ease}.powered-by a:hover{opacity:1}.powered-by .pb-links{display:flex;gap:16px;align-items:center}.powered-by .pb-brand{display:inline-flex;align-items:center;gap:6px;opacity:0.92}.powered-by .pb-brand svg{display:block}.powered-by .pb-pre{opacity:0.7}.powered-by .pb-word{font-weight:700;letter-spacing:0.01em}.panel-header{display:flex;align-items:center;gap:14px;padding:16px 18px;border-bottom:1px solid var(--_border)}.event-thumb{flex:none;width:56px;height:56px;border-radius:12px;background-size:cover;background-position:center;background-color:var(--_muted);border:1px solid var(--_border)}.titles{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.event-meta{margin:0;font-size:0.8rem;color:var(--_muted-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kicker{font-size:0.72rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--_primary)}.event-name{margin:0;font-size:1.18rem;font-weight:700;line-height:1.25;color:var(--_fg);overflow:hidden;text-overflow:ellipsis}.close-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:999px;background:var(--_muted);color:var(--_muted-fg);cursor:pointer;transition:color 0.15s, background 0.15s}.close-btn:hover{color:var(--_fg)}.close-btn svg{width:16px;height:16px}.panel-body{padding:18px 22px 22px;overflow-y:auto}.state-msg{display:flex;align-items:center;justify-content:center;gap:10px;padding:40px 0;color:var(--_muted-fg)}.state-msg.error{color:#b91c1c}.spinner{width:16px;height:16px;border:2px solid var(--_border);border-top-color:var(--_primary);border-radius:999px;animation:tl-spin 0.7s linear infinite}.tickets-step{display:flex;flex-direction:column;gap:6px}.back-link{align-self:flex-start;padding:0;border:0;background:none;color:var(--_primary);font-size:0.85rem;font-weight:500;cursor:pointer}.back-link:hover{text-decoration:underline}.occ-label{margin:2px 0 8px;font-size:0.9rem;font-weight:600;color:var(--_fg)}.done-step{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:16px 0 4px}.done-mark{font-size:2.4rem;line-height:1;margin-bottom:6px}.done-title{margin:0;font-size:1.1rem;font-weight:700;color:var(--_fg)}.done-sub{margin:0 0 14px;font-size:0.9rem;color:var(--_muted-fg)}.primary-btn{width:100%;padding:13px;border:0;border-radius:var(--tl-radius-md, 0.5rem);background:var(--_primary);color:var(--_primary-fg);font-size:0.98rem;font-weight:600;cursor:pointer;transition:opacity 0.15s}.primary-btn:hover{opacity:0.9}.ghost-btn{width:100%;margin-top:8px;padding:12px;border:1px solid var(--_border);border-radius:var(--tl-radius-md, 0.5rem);background:transparent;color:var(--_fg);font-size:0.95rem;font-weight:500;cursor:pointer;transition:background 0.15s}.ghost-btn:hover{background:var(--_muted)}@keyframes tl-fade{from{opacity:0}}@keyframes tl-rise{from{opacity:0;transform:translateY(12px) scale(0.98)}}@keyframes tl-spin{to{transform:rotate(360deg)}}";export{s as tl_buy_modal}
@@ -1 +1 @@
1
- import{p as e,g as r,b as t}from"./p-Ba-RZTFI.js";export{s as setNonce}from"./p-Ba-RZTFI.js";(()=>{const r=import.meta.url,t={};return""!==r&&(t.resourcesUrl=new URL(".",r).href),e(t)})().then((async e=>(await r(),t([["p-340ab4f5",[[1,"tl-my-orders",{emptyMessage:[1,"empty-message"],columns:[2],orders:[32],authenticated:[32],loading:[32],error:[32],expandedId:[32]}]]],["p-10f01a1f",[[1,"tl-buy-modal",{eventId:[1,"event-id"],occurrenceId:[1,"occurrence-id"],step:[32],eventName:[32],imageUrl:[32],venueLabel:[32],dateSummary:[32],selectedOccurrenceId:[32],occurrenceCount:[32],occurrenceLabel:[32],error:[32]}]]],["p-eb640760",[[1,"tl-order-confirmation",{orderId:[1,"order-id"],customerEmail:[1,"customer-email"],showTickets:[4,"show-tickets"],columns:[2],order:[32],resolvedOrderId:[32],loading:[32],error:[32],paymentFailed:[32],occurrence:[32],signedInCustomer:[32]},null,{orderId:[{watchOrderId:0}]}]]],["p-dd43f015",[[1,"tl-cart-drawer",{side:[1],heading:[1],open:[1028],visible:[32]},null,{open:[{onOpenProp:0}]}]]],["p-9a903ff6",[[1,"tl-event-list",{limit:[2],category:[1],columns:[2],events:[32],loading:[32],error:[32]},null,{limit:[{watchFiltersChange:0}],category:[{watchFiltersChange:0}]}]]],["p-11273f8f",[[1,"tl-buy-tickets-button",{eventId:[1,"event-id"],occurrenceId:[1,"occurrence-id"],state:[1],label:[1],variant:[1],size:[1],fullWidth:[4,"full-width"],price:[2],currency:[1],pricePrefix:[1,"price-prefix"],disabled:[4],isHovered:[32]}]]],["p-82752e3b",[[260,"tl-buy-tickets-wrapper",{eventId:[1,"event-id"],occurrenceId:[1,"occurrence-id"],disabled:[4]}]]],["p-9c9072c8",[[1,"tl-cart-badge",{showEmpty:[4,"show-empty"],icon:[1],size:[1],badgeOnly:[4,"badge-only"],itemCount:[32]}]]],["p-41d22d7c",[[260,"tl-checkout-wrapper",{disabled:[4]}]]],["p-0291df4c",[[1,"tl-promo-code",{placeholder:[1],buttonLabel:[1,"button-label"],code:[32],applying:[32],applied:[32],error:[32]}]]],["p-ee3aa227",[[1,"tl-seat-map",{occurrenceId:[1,"occurrence-id"],hboUrl:[1,"hbo-url"],apiUrl:[1,"api-url"],height:[1],width:[1],isReady:[32],isLoading:[32],error:[32],seatsInCart:[32]},null,{occurrenceId:[{watchOccurrenceId:0}]}]]],["p-b6d479ad",[[1,"tl-cart",{showCheckoutButton:[4,"show-checkout-button"],checkoutLabel:[1,"checkout-label"],showRemoveButtons:[4,"show-remove-buttons"],compact:[4],cart:[32],loading:[32],error:[32],removingItemId:[32]}]]],["p-fb9444c4",[[1,"tl-event-card",{event:[16],eventId:[1,"event-id"],loadedEvent:[32],loading:[32],error:[32]},null,{eventId:[{watchEventId:0}]}]]],["p-a5c90b68",[[1,"tl-login",{heading:[1],allowCodeEntry:[4,"allow-code-entry"],phase:[32],email:[32],code:[32],busy:[32],error:[32],notice:[32],customer:[32]}]]],["p-976770f3",[[1,"tl-occurrence-selector",{eventId:[1,"event-id"],displayMode:[1,"display-mode"],orientation:[1],theme:[16],loading:[32],error:[32],occurrences:[32],currentMonth:[32],selectedDate:[32],computedDisplayMode:[32],containerWidth:[32]},null,{eventId:[{onEventIdChange:0}]}],[1,"tl-ticket-selector",{eventId:[1,"event-id"],occurrenceId:[1,"occurrence-id"],showButton:[4,"show-button"],buttonLabel:[1,"button-label"],ticketTypes:[32],quantities:[32],loading:[32],error:[32],adding:[32],addSuccess:[32]},null,{eventId:[{watchPropsChange:0}],occurrenceId:[{watchPropsChange:0}]}]]],["p-9d8163d6",[[1,"tl-order-tickets",{orderId:[1,"order-id"],columns:[2],tickets:[32],loading:[32],error:[32]},null,{orderId:[{watchOrder:0}]}],[1,"tl-ticket",{ticket:[16],orderId:[1,"order-id"],qrSvg:[32],downloading:[32]},null,{ticket:[{generateQr:0}]}]]]],e))));
1
+ import{p as e,g as r,b as t}from"./p-Ba-RZTFI.js";export{s as setNonce}from"./p-Ba-RZTFI.js";(()=>{const r=import.meta.url,t={};return""!==r&&(t.resourcesUrl=new URL(".",r).href),e(t)})().then((async e=>(await r(),t([["p-340ab4f5",[[1,"tl-my-orders",{emptyMessage:[1,"empty-message"],columns:[2],orders:[32],authenticated:[32],loading:[32],error:[32],expandedId:[32]}]]],["p-f6314d1e",[[1,"tl-buy-modal",{eventId:[1,"event-id"],occurrenceId:[1,"occurrence-id"],step:[32],eventName:[32],imageUrl:[32],venueLabel:[32],dateSummary:[32],selectedOccurrenceId:[32],occurrenceCount:[32],occurrenceLabel:[32],error:[32]}]]],["p-eb640760",[[1,"tl-order-confirmation",{orderId:[1,"order-id"],customerEmail:[1,"customer-email"],showTickets:[4,"show-tickets"],columns:[2],order:[32],resolvedOrderId:[32],loading:[32],error:[32],paymentFailed:[32],occurrence:[32],signedInCustomer:[32]},null,{orderId:[{watchOrderId:0}]}]]],["p-9cb3ab24",[[1,"tl-cart-drawer",{side:[1],heading:[1],open:[1028],visible:[32]},null,{open:[{onOpenProp:0}]}]]],["p-9a903ff6",[[1,"tl-event-list",{limit:[2],category:[1],columns:[2],events:[32],loading:[32],error:[32]},null,{limit:[{watchFiltersChange:0}],category:[{watchFiltersChange:0}]}]]],["p-11273f8f",[[1,"tl-buy-tickets-button",{eventId:[1,"event-id"],occurrenceId:[1,"occurrence-id"],state:[1],label:[1],variant:[1],size:[1],fullWidth:[4,"full-width"],price:[2],currency:[1],pricePrefix:[1,"price-prefix"],disabled:[4],isHovered:[32]}]]],["p-82752e3b",[[260,"tl-buy-tickets-wrapper",{eventId:[1,"event-id"],occurrenceId:[1,"occurrence-id"],disabled:[4]}]]],["p-9c9072c8",[[1,"tl-cart-badge",{showEmpty:[4,"show-empty"],icon:[1],size:[1],badgeOnly:[4,"badge-only"],itemCount:[32]}]]],["p-41d22d7c",[[260,"tl-checkout-wrapper",{disabled:[4]}]]],["p-0291df4c",[[1,"tl-promo-code",{placeholder:[1],buttonLabel:[1,"button-label"],code:[32],applying:[32],applied:[32],error:[32]}]]],["p-9372ff1f",[[1,"tl-seat-map",{occurrenceId:[1,"occurrence-id"],hboUrl:[1,"hbo-url"],apiUrl:[1,"api-url"],height:[1],width:[1],isReady:[32],isLoading:[32],error:[32],seatsInCart:[32]},null,{occurrenceId:[{watchOccurrenceId:0}]}]]],["p-b6d479ad",[[1,"tl-cart",{showCheckoutButton:[4,"show-checkout-button"],checkoutLabel:[1,"checkout-label"],showRemoveButtons:[4,"show-remove-buttons"],compact:[4],cart:[32],loading:[32],error:[32],removingItemId:[32]}]]],["p-fb9444c4",[[1,"tl-event-card",{event:[16],eventId:[1,"event-id"],loadedEvent:[32],loading:[32],error:[32]},null,{eventId:[{watchEventId:0}]}]]],["p-a5c90b68",[[1,"tl-login",{heading:[1],allowCodeEntry:[4,"allow-code-entry"],phase:[32],email:[32],code:[32],busy:[32],error:[32],notice:[32],customer:[32]}]]],["p-976770f3",[[1,"tl-occurrence-selector",{eventId:[1,"event-id"],displayMode:[1,"display-mode"],orientation:[1],theme:[16],loading:[32],error:[32],occurrences:[32],currentMonth:[32],selectedDate:[32],computedDisplayMode:[32],containerWidth:[32]},null,{eventId:[{onEventIdChange:0}]}],[1,"tl-ticket-selector",{eventId:[1,"event-id"],occurrenceId:[1,"occurrence-id"],showButton:[4,"show-button"],buttonLabel:[1,"button-label"],ticketTypes:[32],quantities:[32],loading:[32],error:[32],adding:[32],addSuccess:[32]},null,{eventId:[{watchPropsChange:0}],occurrenceId:[{watchPropsChange:0}]}]]],["p-f5846f61",[[1,"tl-order-tickets",{orderId:[1,"order-id"],columns:[2],tickets:[32],loading:[32],error:[32],issuing:[32]},null,{orderId:[{watchOrder:0}]}],[1,"tl-ticket",{ticket:[16],orderId:[1,"order-id"],qrSvg:[32],downloading:[32]},null,{ticket:[{generateQr:0}]}]]]],e))));
@@ -5,6 +5,21 @@ import type { TlTicketData } from '../tl-ticket/tl-ticket';
5
5
  * gated by the session), so it works on a confirmation page or in an account.
6
6
  *
7
7
  * Usage: <tl-order-tickets order-id="ord_xxx"></tl-order-tickets>
8
+ *
9
+ * On an empty result it waits rather than concluding there is nothing.
10
+ *
11
+ * Tickets are issued asynchronously: the payment confirms, the order is
12
+ * marked paid, and entitlement issuance follows a moment later. A confirmation
13
+ * page therefore renders BEFORE the passes exist - reliably, not occasionally.
14
+ * The component used to answer that with "No tickets for this order yet",
15
+ * which is true and reads as "something went wrong" to someone who has just
16
+ * been charged. Refreshing showed them, so the only thing missing was the
17
+ * waiting.
18
+ *
19
+ * So: an empty order is treated as issuance in flight and polled, with the
20
+ * gaps widening, for about a minute. Then it stops and says the tickets are
21
+ * coming by email, because at that point something probably is wrong and a
22
+ * page that polls forever is worse than one that admits it.
8
23
  */
9
24
  export declare class TlOrderTickets {
10
25
  /** The order whose tickets to show. */
@@ -14,8 +29,21 @@ export declare class TlOrderTickets {
14
29
  tickets: TlTicketData[];
15
30
  loading: boolean;
16
31
  error: string | null;
32
+ /** The order loaded, but has no tickets yet and we are still waiting. */
33
+ issuing: boolean;
34
+ /**
35
+ * Gaps between polls, in milliseconds. Front-loaded because issuance
36
+ * usually lands in the first few seconds, then widening so a genuinely
37
+ * stuck order is not hammered. Sums to roughly one minute.
38
+ */
39
+ private static readonly POLL_DELAYS_MS;
40
+ private timer?;
41
+ private poll;
17
42
  watchOrder(): void;
18
43
  componentWillLoad(): Promise<void>;
44
+ disconnectedCallback(): void;
45
+ private reset;
46
+ private stopPolling;
19
47
  private load;
20
48
  render(): any;
21
49
  }
@@ -348,6 +348,18 @@ export namespace Components {
348
348
  * cards with PDF download. Fetches the order through the SDK (order-access
349
349
  * gated by the session), so it works on a confirmation page or in an account.
350
350
  * Usage: <tl-order-tickets order-id="ord_xxx"></tl-order-tickets>
351
+ * On an empty result it waits rather than concluding there is nothing.
352
+ * Tickets are issued asynchronously: the payment confirms, the order is
353
+ * marked paid, and entitlement issuance follows a moment later. A confirmation
354
+ * page therefore renders BEFORE the passes exist - reliably, not occasionally.
355
+ * The component used to answer that with "No tickets for this order yet",
356
+ * which is true and reads as "something went wrong" to someone who has just
357
+ * been charged. Refreshing showed them, so the only thing missing was the
358
+ * waiting.
359
+ * So: an empty order is treated as issuance in flight and polled, with the
360
+ * gaps widening, for about a minute. Then it stops and says the tickets are
361
+ * coming by email, because at that point something probably is wrong and a
362
+ * page that polls forever is worse than one that admits it.
351
363
  */
352
364
  interface TlOrderTickets {
353
365
  /**
@@ -834,6 +846,18 @@ declare global {
834
846
  * cards with PDF download. Fetches the order through the SDK (order-access
835
847
  * gated by the session), so it works on a confirmation page or in an account.
836
848
  * Usage: <tl-order-tickets order-id="ord_xxx"></tl-order-tickets>
849
+ * On an empty result it waits rather than concluding there is nothing.
850
+ * Tickets are issued asynchronously: the payment confirms, the order is
851
+ * marked paid, and entitlement issuance follows a moment later. A confirmation
852
+ * page therefore renders BEFORE the passes exist - reliably, not occasionally.
853
+ * The component used to answer that with "No tickets for this order yet",
854
+ * which is true and reads as "something went wrong" to someone who has just
855
+ * been charged. Refreshing showed them, so the only thing missing was the
856
+ * waiting.
857
+ * So: an empty order is treated as issuance in flight and polled, with the
858
+ * gaps widening, for about a minute. Then it stops and says the tickets are
859
+ * coming by email, because at that point something probably is wrong and a
860
+ * page that polls forever is worse than one that admits it.
837
861
  */
838
862
  interface HTMLTlOrderTicketsElement extends Components.TlOrderTickets, HTMLStencilElement {
839
863
  }
@@ -1342,6 +1366,18 @@ declare namespace LocalJSX {
1342
1366
  * cards with PDF download. Fetches the order through the SDK (order-access
1343
1367
  * gated by the session), so it works on a confirmation page or in an account.
1344
1368
  * Usage: <tl-order-tickets order-id="ord_xxx"></tl-order-tickets>
1369
+ * On an empty result it waits rather than concluding there is nothing.
1370
+ * Tickets are issued asynchronously: the payment confirms, the order is
1371
+ * marked paid, and entitlement issuance follows a moment later. A confirmation
1372
+ * page therefore renders BEFORE the passes exist - reliably, not occasionally.
1373
+ * The component used to answer that with "No tickets for this order yet",
1374
+ * which is true and reads as "something went wrong" to someone who has just
1375
+ * been charged. Refreshing showed them, so the only thing missing was the
1376
+ * waiting.
1377
+ * So: an empty order is treated as issuance in flight and polled, with the
1378
+ * gaps widening, for about a minute. Then it stops and says the tickets are
1379
+ * coming by email, because at that point something probably is wrong and a
1380
+ * page that polls forever is worse than one that admits it.
1345
1381
  */
1346
1382
  interface TlOrderTickets {
1347
1383
  /**
@@ -1602,6 +1638,18 @@ declare module "@stencil/core" {
1602
1638
  * cards with PDF download. Fetches the order through the SDK (order-access
1603
1639
  * gated by the session), so it works on a confirmation page or in an account.
1604
1640
  * Usage: <tl-order-tickets order-id="ord_xxx"></tl-order-tickets>
1641
+ * On an empty result it waits rather than concluding there is nothing.
1642
+ * Tickets are issued asynchronously: the payment confirms, the order is
1643
+ * marked paid, and entitlement issuance follows a moment later. A confirmation
1644
+ * page therefore renders BEFORE the passes exist - reliably, not occasionally.
1645
+ * The component used to answer that with "No tickets for this order yet",
1646
+ * which is true and reads as "something went wrong" to someone who has just
1647
+ * been charged. Refreshing showed them, so the only thing missing was the
1648
+ * waiting.
1649
+ * So: an empty order is treated as issuance in flight and polled, with the
1650
+ * gaps widening, for about a minute. Then it stops and says the tickets are
1651
+ * coming by email, because at that point something probably is wrong and a
1652
+ * page that polls forever is worse than one that admits it.
1605
1653
  */
1606
1654
  "tl-order-tickets": LocalJSX.TlOrderTickets & JSXBase.HTMLAttributes<HTMLTlOrderTicketsElement>;
1607
1655
  /**
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.2.0",
3
- "generatedAt": "2026-09-15T02:29:28.321Z",
2
+ "version": "0.3.1",
3
+ "generatedAt": "2026-09-16T16:56:22.377Z",
4
4
  "elements": [
5
5
  {
6
6
  "tag": "tl-buy-modal",
@@ -715,7 +715,7 @@
715
715
  },
716
716
  {
717
717
  "tag": "tl-order-tickets",
718
- "docs": "tl-order-tickets - renders all the tickets for an order as scannable QR\ncards with PDF download. Fetches the order through the SDK (order-access\ngated by the session), so it works on a confirmation page or in an account.\n\nUsage: <tl-order-tickets order-id=\"ord_xxx\"></tl-order-tickets>",
718
+ "docs": "tl-order-tickets - renders all the tickets for an order as scannable QR\ncards with PDF download. Fetches the order through the SDK (order-access\ngated by the session), so it works on a confirmation page or in an account.\n\nUsage: <tl-order-tickets order-id=\"ord_xxx\"></tl-order-tickets>\n\nOn an empty result it waits rather than concluding there is nothing.\n\nTickets are issued asynchronously: the payment confirms, the order is\nmarked paid, and entitlement issuance follows a moment later. A confirmation\npage therefore renders BEFORE the passes exist - reliably, not occasionally.\nThe component used to answer that with \"No tickets for this order yet\",\nwhich is true and reads as \"something went wrong\" to someone who has just\nbeen charged. Refreshing showed them, so the only thing missing was the\nwaiting.\n\nSo: an empty order is treated as issuance in flight and polled, with the\ngaps widening, for about a minute. Then it stops and says the tickets are\ncoming by email, because at that point something probably is wrong and a\npage that polls forever is worse than one that admits it.",
719
719
  "props": [
720
720
  {
721
721
  "name": "columns",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ticketlayer/elements",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Ticketlayer UI components built with Stencil.js",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1 +0,0 @@
1
- import{r as e,c as t,h as r,H as a}from"./p-Ba-RZTFI.js";import{w as i,g as s}from"./p-CqhvfyKV.js";const o=class{constructor(r){e(this,r),this.tlClose=t(this,"tlClose"),this.tlCheckout=t(this,"tlCheckout"),this.tlError=t(this,"tlError"),this.step="loading",this.eventName="",this.imageUrl="",this.venueLabel="",this.dateSummary="",this.selectedOccurrenceId=null,this.occurrenceCount=0,this.occurrenceLabel="",this.error=null,this.handleOccurrenceSelect=e=>{const t=e.detail.occurrence;this.selectedOccurrenceId=t.id,this.occurrenceLabel=this.labelFor(t),this.step="tickets"},this.handleAdded=()=>{this.step="done"},this.backToDates=()=>{this.selectedOccurrenceId=null,this.step="occurrence"},this.close=()=>this.tlClose.emit(),this.goCheckout=()=>this.tlCheckout.emit()}async componentWillLoad(){if(this.eventId)try{await i();const e=await s().getEventsManager().get(this.eventId);this.eventName=e?.name??"Tickets",this.imageUrl=e?.imageUrl||e?.heroImageUrl||"",this.venueLabel=[e?.venueName,e?.venueCity].filter(Boolean).join(", ");const t=e?.occurrences??[];this.occurrenceCount=t.length,this.dateSummary=this.summariseDates(t);const r=this.occurrenceId??(1===t.length?t[0]?.id:null);r?(this.selectedOccurrenceId=r,this.occurrenceLabel=this.labelFor(t.find((e=>e.id===r))),this.step="tickets"):this.step="occurrence"}catch(e){this.fail(e instanceof Error?e.message:"Could not load this event")}else this.fail("No event specified")}fail(e){this.error=e,this.step="error",this.tlError.emit({message:e})}summariseDates(e){const t=e.map((e=>e.startsAt)).filter((e=>!!e)).sort();if(0===t.length)return"";const r=e=>new Date(e).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"});if(1===t.length)return new Date(t[0]).toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",year:"numeric"});const a=r(t[0]),i=r(t[t.length-1]);return`${a===i?a:`${a} – ${i}`} · ${t.length} dates`}labelFor(e){return e?.startsAt?new Date(e.startsAt).toLocaleString("en-GB",{weekday:"short",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"}):""}stepKicker(){switch(this.step){case"occurrence":return"Choose a date";case"tickets":return"Select tickets";case"done":return"Nice one";default:return"Tickets"}}render(){return r(a,{key:"1245e518c2b5232f4d9dba091cf808cd3867fbef"},r("div",{key:"4e770fccdd785444f1cc87df4adab5a5dc1bf58a",class:"overlay",onClick:e=>{e.target===e.currentTarget&&this.close()}},r("div",{key:"57b13dac690028aeebd6a601acfba07f00854c40",class:{panel:!0,"panel--wide":"occurrence"===this.step},role:"dialog","aria-modal":"true","aria-label":this.eventName},r("header",{key:"881e9cc70a0ca25947f272b9ebcb2e6d4b4268f2",class:"panel-header"},this.imageUrl&&r("div",{key:"753f7df1b5118dfacbbc6b89b4e5d7ba114f6cdf",class:"event-thumb",style:{backgroundImage:`url(${this.imageUrl})`}}),r("div",{key:"9aaa32d1add90fabd1b0ea0c100f198962f4e6a5",class:"titles"},r("span",{key:"538032bdf2338206ad763417386852ff97cc472f",class:"kicker"},this.stepKicker()),r("h2",{key:"71429804179e7fbbea1fa90a2937a065517092f5",class:"event-name"},this.eventName),this.venueLabel&&r("p",{key:"dd968b397deab890df3a4fbdff33226e82bd9660",class:"event-meta"},this.venueLabel),this.dateSummary&&r("p",{key:"f40e6049d09b06c9f599e7d14d6fbb43b39b22fd",class:"event-meta"},this.dateSummary)),r("button",{key:"dbe0908f8cd8544654b627921f68cc4961802b77",class:"close-btn","aria-label":"Close",onClick:this.close},r("svg",{key:"23a750830e6e16d28cbcd5025507d25848aaadf7",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},r("path",{key:"e81b8763a5c781f72c1ca8a2113482948e3ba8cc",d:"M6 6l12 12M18 6L6 18","stroke-linecap":"round"})))),r("div",{key:"da71e610f907cf53e78246d2065aaf526d5ceffd",class:"panel-body"},"loading"===this.step&&r("div",{key:"28cbb9a98c7b08fa8dcb9d8d5dfbf3bec93fe38d",class:"state-msg"},r("span",{key:"915c8de87cbdc7da1ccf0622ce6c0f02fccf2cad",class:"spinner"})," Loading…"),"error"===this.step&&r("div",{key:"5785578bfef6f1ee81d938d91ffd3ded975f8c12",class:"state-msg error"},this.error),"occurrence"===this.step&&r("tl-occurrence-selector",{key:"eeb853eab141c3c103015e82d221a140f6a3a109",eventId:this.eventId,onTlSelect:this.handleOccurrenceSelect}),"tickets"===this.step&&this.selectedOccurrenceId&&r("div",{key:"f608f592ba651eb431375433eb4ff9393863ade5",class:"tickets-step"},this.occurrenceCount>1&&r("button",{key:"84adfbdbeaceb2cf4238c6ffd09558b4499ca940",class:"back-link",onClick:this.backToDates},"← Change date"),this.occurrenceLabel&&r("p",{key:"0317e9194049608711e8c622142c3ad2c0a5dc12",class:"occ-label"},this.occurrenceLabel),r("tl-ticket-selector",{key:"27b1e05d9d92fb8d519375e2b27d4b5ea0a4890a",eventId:this.eventId,occurrenceId:this.selectedOccurrenceId,onTlAddToCart:this.handleAdded})),"done"===this.step&&r("div",{key:"0853088206988c66d489f8804df7899821d49e64",class:"done-step"},r("div",{key:"c2955b893c4dffaadcdfd27bee96ef2724a131a6",class:"done-mark"},"🎟️"),r("p",{key:"370c30dfcbc0c25b4794d984dd261a3a5779a9dc",class:"done-title"},"Added to your cart"),r("p",{key:"c462f3c9292740e2fd2c74b173484f80a5dc1a30",class:"done-sub"},"Held for you while you check out."),r("button",{key:"484991f79572e3213ad6413a1af87599880c3643",class:"primary-btn",onClick:this.goCheckout},"Go to checkout"),r("button",{key:"5b4ba5a472b794e8f5af0f131dad1c8c11b869f5",class:"ghost-btn",onClick:this.close},"Keep browsing"))))))}};o.style=":host{--_bg:var(--tl-background, #ffffff);--_fg:var(--tl-foreground, #111827);--_muted:var(--tl-muted, #f3f4f6);--_muted-fg:var(--tl-muted-foreground, #6b7280);--_border:var(--tl-border, #e5e7eb);--_primary:var(--tl-primary, #6366f1);--_primary-fg:var(--tl-primary-foreground, #ffffff);--_radius:var(--tl-radius-lg, var(--tl-radius, 0.75rem));--_font:var(--tl-font-family, system-ui, -apple-system, sans-serif);font-family:var(--_font)}.overlay{position:fixed;inset:0;z-index:2147483646;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(8, 8, 16, 0.72);backdrop-filter:blur(4px);animation:tl-fade 0.18s ease-out}.panel{width:100%;max-width:460px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;background:var(--_bg);color:var(--_fg);border:1px solid var(--_border);border-radius:var(--_radius);box-shadow:0 24px 64px rgba(0, 0, 0, 0.45);animation:tl-rise 0.22s cubic-bezier(0.16, 1, 0.3, 1);transition:max-width 0.25s cubic-bezier(0.16, 1, 0.3, 1)}.panel--wide{max-width:720px}.panel-header{display:flex;align-items:center;gap:14px;padding:16px 18px;border-bottom:1px solid var(--_border)}.event-thumb{flex:none;width:56px;height:56px;border-radius:12px;background-size:cover;background-position:center;background-color:var(--_muted);border:1px solid var(--_border)}.titles{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.event-meta{margin:0;font-size:0.8rem;color:var(--_muted-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kicker{font-size:0.72rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--_primary)}.event-name{margin:0;font-size:1.18rem;font-weight:700;line-height:1.25;color:var(--_fg);overflow:hidden;text-overflow:ellipsis}.close-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:999px;background:var(--_muted);color:var(--_muted-fg);cursor:pointer;transition:color 0.15s, background 0.15s}.close-btn:hover{color:var(--_fg)}.close-btn svg{width:16px;height:16px}.panel-body{padding:18px 22px 22px;overflow-y:auto}.state-msg{display:flex;align-items:center;justify-content:center;gap:10px;padding:40px 0;color:var(--_muted-fg)}.state-msg.error{color:#b91c1c}.spinner{width:16px;height:16px;border:2px solid var(--_border);border-top-color:var(--_primary);border-radius:999px;animation:tl-spin 0.7s linear infinite}.tickets-step{display:flex;flex-direction:column;gap:6px}.back-link{align-self:flex-start;padding:0;border:0;background:none;color:var(--_primary);font-size:0.85rem;font-weight:500;cursor:pointer}.back-link:hover{text-decoration:underline}.occ-label{margin:2px 0 8px;font-size:0.9rem;font-weight:600;color:var(--_fg)}.done-step{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:16px 0 4px}.done-mark{font-size:2.4rem;line-height:1;margin-bottom:6px}.done-title{margin:0;font-size:1.1rem;font-weight:700;color:var(--_fg)}.done-sub{margin:0 0 14px;font-size:0.9rem;color:var(--_muted-fg)}.primary-btn{width:100%;padding:13px;border:0;border-radius:var(--tl-radius-md, 0.5rem);background:var(--_primary);color:var(--_primary-fg);font-size:0.98rem;font-weight:600;cursor:pointer;transition:opacity 0.15s}.primary-btn:hover{opacity:0.9}.ghost-btn{width:100%;margin-top:8px;padding:12px;border:1px solid var(--_border);border-radius:var(--tl-radius-md, 0.5rem);background:transparent;color:var(--_fg);font-size:0.95rem;font-weight:500;cursor:pointer;transition:background 0.15s}.ghost-btn:hover{background:var(--_muted)}@keyframes tl-fade{from{opacity:0}}@keyframes tl-rise{from{opacity:0;transform:translateY(12px) scale(0.98)}}@keyframes tl-spin{to{transform:rotate(360deg)}}";export{o as tl_buy_modal}
@@ -1 +0,0 @@
1
- import{r as t,h as n}from"./p-Ba-RZTFI.js";import{w as r}from"./p-CqhvfyKV.js";const e=class{constructor(n){t(this,n),this.columns=2,this.tickets=[],this.loading=!0,this.error=null}watchOrder(){this.load()}async componentWillLoad(){await this.load()}async load(){try{this.loading=!0,this.error=null;const t=await r(),n=t.getOrdersManager?.();if(!n)throw new Error("Tickets are not available");const e=await n.get(this.orderId);this.tickets=e?.tickets??[]}catch(t){this.error=t instanceof Error?t.message:"Failed to load tickets"}finally{this.loading=!1}}render(){return this.loading?n("div",{class:"state"},"Loading tickets…"):this.error?n("div",{class:"state error"},this.error):0===this.tickets.length?n("div",{class:"state"},"No tickets for this order yet."):n("div",{class:`grid cols-${this.columns}`},this.tickets.map((t=>n("tl-ticket",{key:t.id,ticket:t,orderId:this.orderId}))))}static get watchers(){return{orderId:[{watchOrder:0}]}}};function o(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}e.style=":host{display:block;font-family:var(--tl-font-family, system-ui, sans-serif)}.grid{display:grid;gap:var(--tl-spacing-4, 1rem);grid-template-columns:1fr}@media (min-width: 480px){.grid.cols-2{grid-template-columns:repeat(2, 1fr)}.grid.cols-3{grid-template-columns:repeat(3, 1fr)}}.state{padding:var(--tl-spacing-6, 1.5rem);text-align:center;color:var(--tl-muted-foreground, #6b7280);font-size:0.875rem}.state.error{color:var(--tl-error, #dc2626)}";var i,u,s={};function c(){return u?i:(u=1,i=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then})}var a,f={},l={};function h(){if(a)return l;let t;a=1;const n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return l.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return 4*t+17},l.getSymbolTotalCodewords=function(t){return n[t]},l.getBCHDigit=function(t){let n=0;for(;0!==t;)n++,t>>>=1;return n},l.setToSJISFunction=function(n){if("function"!=typeof n)throw new Error('"toSJISFunc" is not a valid function.');t=n},l.isKanjiModeEnabled=function(){return void 0!==t},l.toSJIS=function(n){return t(n)},l}var d,w,m,p,g,v={};function y(){return d||(d=1,(t=v).L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2},t.isValid=function(t){return t&&void 0!==t.bit&&t.bit>=0&&t.bit<4},t.from=function(n,r){if(t.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+n)}}(n)}catch(t){return r}}),v;var t}var b,E,k,A,x={},M={},T={},R={};function I(){if(A)return R;A=1;const t=y(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return R.getBlocksCount=function(r,e){switch(e){case t.L:return n[4*(r-1)+0];case t.M:return n[4*(r-1)+1];case t.Q:return n[4*(r-1)+2];case t.H:return n[4*(r-1)+3];default:return}},R.getTotalCodewordsCount=function(n,e){switch(e){case t.L:return r[4*(n-1)+0];case t.M:return r[4*(n-1)+1];case t.Q:return r[4*(n-1)+2];case t.H:return r[4*(n-1)+3];default:return}},R}var U,F,P,N,C={},B={};var _,q={},L={},$={};function z(){return _||(_=1,$.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}),$}var Q,S,j,O={};function Z(){if(Q)return O;Q=1;const t="[0-9]+";let n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";n=n.replace(/u/g,"\\u");const r="(?:(?![A-Z0-9 $%*+\\-./:]|"+n+")(?:.|[\r\n]))+";O.KANJI=new RegExp(n,"g"),O.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),O.BYTE=new RegExp(r,"g"),O.NUMERIC=new RegExp(t,"g"),O.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");const e=new RegExp("^"+n+"$"),o=new RegExp("^"+t+"$"),i=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return O.testKanji=function(t){return e.test(t)},O.testNumeric=function(t){return o.test(t)},O.testAlphanumeric=function(t){return i.test(t)},O}function D(){return S||(S=1,function(t){const n=z(),r=Z();t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(t,r){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!n.isValid(r))throw new Error("Invalid version: "+r);return r>=1&&r<10?t.ccBits[0]:r<27?t.ccBits[1]:t.ccBits[2]},t.getBestModeForData=function(n){return r.testNumeric(n)?t.NUMERIC:r.testAlphanumeric(n)?t.ALPHANUMERIC:r.testKanji(n)?t.KANJI:t.BYTE},t.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},t.isValid=function(t){return t&&t.bit&&t.ccBits},t.from=function(n,r){if(t.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw new Error("Unknown mode: "+n)}}(n)}catch(t){return r}}}(L)),L}var H,J,K,V,W,Y,G,X,tt,nt,rt,et,ot={},it={},ut={exports:{}};function st(){return nt||(nt=1,function(t){var n={single_source_shortest_paths:function(t,r,e){var o={},i={};i[r]=0;var u,s,c,a,f,l,h=n.PriorityQueue.make();for(h.push(r,0);!h.empty();)for(c in a=(u=h.pop()).cost,f=t[s=u.value]||{})f.hasOwnProperty(c)&&(l=a+f[c],(void 0===i[c]||i[c]>l)&&(i[c]=l,h.push(c,l),o[c]=s));if(void 0!==e&&void 0===i[e]){var d=["Could not find a path from ",r," to ",e,"."].join("");throw new Error(d)}return o},extract_shortest_path_from_predecessor_list:function(t,n){for(var r=[],e=n;e;)r.push(e),e=t[e];return r.reverse(),r},find_path:function(t,r,e){var o=n.single_source_shortest_paths(t,r,e);return n.extract_shortest_path_from_predecessor_list(o,e)},PriorityQueue:{make:function(t){var r,e=n.PriorityQueue,o={};for(r in t=t||{},e)e.hasOwnProperty(r)&&(o[r]=e[r]);return o.queue=[],o.sorter=t.sorter||e.default_sorter,o},default_sorter:function(t,n){return t.cost-n.cost},push:function(t,n){this.queue.push({value:t,cost:n}),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};t.exports=n}(ut)),ut.exports}function ct(){if(et)return f;et=1;const t=h(),n=y(),r=function(){if(m)return w;function t(){this.buffer=[],this.length=0}return m=1,t.prototype={get:function(t){const n=Math.floor(t/8);return 1==(this.buffer[n]>>>7-t%8&1)},put:function(t,n){for(let r=0;r<n;r++)this.putBit(1==(t>>>n-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),t&&(this.buffer[n]|=128>>>this.length%8),this.length++}},w=t}(),e=function(){if(g)return p;function t(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}return g=1,t.prototype.set=function(t,n,r,e){const o=t*this.size+n;this.data[o]=r,e&&(this.reservedBit[o]=!0)},t.prototype.get=function(t,n){return this.data[t*this.size+n]},t.prototype.xor=function(t,n,r){this.data[t*this.size+n]^=r},t.prototype.isReserved=function(t,n){return this.reservedBit[t*this.size+n]},p=t}(),o=(b||(b=1,function(t){const n=h().getSymbolSize;t.getRowColCoords=function(t){if(1===t)return[];const r=Math.floor(t/7)+2,e=n(t),o=145===e?26:2*Math.ceil((e-13)/(2*r-2)),i=[e-7];for(let t=1;t<r-1;t++)i[t]=i[t-1]-o;return i.push(6),i.reverse()},t.getPositions=function(n){const r=[],e=t.getRowColCoords(n),o=e.length;for(let t=0;t<o;t++)for(let n=0;n<o;n++)0===t&&0===n||0===t&&n===o-1||t===o-1&&0===n||r.push([e[t],e[n]]);return r}}(x)),x),i=function(){if(E)return M;E=1;const t=h().getSymbolSize;return M.getPositions=function(n){const r=t(n);return[[0,0],[r-7,0],[0,r-7]]},M}(),u=(k||(k=1,function(t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};function n(n,r,e){switch(n){case t.Patterns.PATTERN000:return(r+e)%2==0;case t.Patterns.PATTERN001:return r%2==0;case t.Patterns.PATTERN010:return e%3==0;case t.Patterns.PATTERN011:return(r+e)%3==0;case t.Patterns.PATTERN100:return(Math.floor(r/2)+Math.floor(e/3))%2==0;case t.Patterns.PATTERN101:return r*e%2+r*e%3==0;case t.Patterns.PATTERN110:return(r*e%2+r*e%3)%2==0;case t.Patterns.PATTERN111:return(r*e%3+(r+e)%2)%2==0;default:throw new Error("bad maskPattern:"+n)}}t.isValid=function(t){return null!=t&&""!==t&&!isNaN(t)&&t>=0&&t<=7},t.from=function(n){return t.isValid(n)?parseInt(n,10):void 0},t.getPenaltyN1=function(t){const n=t.size;let r=0,e=0,o=0,i=null,u=null;for(let s=0;s<n;s++){e=o=0,i=u=null;for(let c=0;c<n;c++){let n=t.get(s,c);n===i?e++:(e>=5&&(r+=e-5+3),i=n,e=1),n=t.get(c,s),n===u?o++:(o>=5&&(r+=o-5+3),u=n,o=1)}e>=5&&(r+=e-5+3),o>=5&&(r+=o-5+3)}return r},t.getPenaltyN2=function(t){const n=t.size;let r=0;for(let e=0;e<n-1;e++)for(let o=0;o<n-1;o++){const n=t.get(e,o)+t.get(e,o+1)+t.get(e+1,o)+t.get(e+1,o+1);4!==n&&0!==n||r++}return 3*r},t.getPenaltyN3=function(t){const n=t.size;let r=0,e=0,o=0;for(let i=0;i<n;i++){e=o=0;for(let u=0;u<n;u++)e=e<<1&2047|t.get(i,u),u>=10&&(1488===e||93===e)&&r++,o=o<<1&2047|t.get(u,i),u>=10&&(1488===o||93===o)&&r++}return 40*r},t.getPenaltyN4=function(t){let n=0;const r=t.data.length;for(let e=0;e<r;e++)n+=t.data[e];return 10*Math.abs(Math.ceil(100*n/r/5)-10)},t.applyMask=function(t,r){const e=r.size;for(let o=0;o<e;o++)for(let i=0;i<e;i++)r.isReserved(i,o)||r.xor(i,o,n(t,i,o))},t.getBestMask=function(n,r){const e=Object.keys(t.Patterns).length;let o=0,i=1/0;for(let u=0;u<e;u++){r(u),t.applyMask(u,n);const e=t.getPenaltyN1(n)+t.getPenaltyN2(n)+t.getPenaltyN3(n)+t.getPenaltyN4(n);t.applyMask(u,n),e<i&&(i=e,o=u)}return o}}(T)),T),s=I(),c=function(){if(N)return P;N=1;const t=(F||(F=1,function(t){const n=function(){if(U)return B;U=1;const t=new Uint8Array(512),n=new Uint8Array(256);return function(){let r=1;for(let e=0;e<255;e++)t[e]=r,n[r]=e,r<<=1,256&r&&(r^=285);for(let n=255;n<512;n++)t[n]=t[n-255]}(),B.log=function(t){if(t<1)throw new Error("log("+t+")");return n[t]},B.exp=function(n){return t[n]},B.mul=function(r,e){return 0===r||0===e?0:t[n[r]+n[e]]},B}();t.mul=function(t,r){const e=new Uint8Array(t.length+r.length-1);for(let o=0;o<t.length;o++)for(let i=0;i<r.length;i++)e[o+i]^=n.mul(t[o],r[i]);return e},t.mod=function(t,r){let e=new Uint8Array(t);for(;e.length-r.length>=0;){const t=e[0];for(let o=0;o<r.length;o++)e[o]^=n.mul(r[o],t);let o=0;for(;o<e.length&&0===e[o];)o++;e=e.slice(o)}return e},t.generateECPolynomial=function(r){let e=new Uint8Array([1]);for(let o=0;o<r;o++)e=t.mul(e,new Uint8Array([1,n.exp(o)]));return e}}(C)),C);function n(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}return n.prototype.initialize=function(n){this.degree=n,this.genPoly=t.generateECPolynomial(this.degree)},n.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const r=new Uint8Array(n.length+this.degree);r.set(n);const e=t.mod(r,this.genPoly),o=this.degree-e.length;if(o>0){const t=new Uint8Array(this.degree);return t.set(e,o),t}return e},P=n}(),a=(j||(j=1,function(t){const n=h(),r=I(),e=y(),o=D(),i=z(),u=n.getBCHDigit(7973);function s(t,n){return o.getCharCountIndicator(t,n)+4}function c(t,n){let r=0;return t.forEach((function(t){const e=s(t.mode,n);r+=e+t.getBitsLength()})),r}t.from=function(t,n){return i.isValid(t)?parseInt(t,10):n},t.getCapacity=function(t,e,u){if(!i.isValid(t))throw new Error("Invalid QR Code version");void 0===u&&(u=o.BYTE);const c=8*(n.getSymbolTotalCodewords(t)-r.getTotalCodewordsCount(t,e));if(u===o.MIXED)return c;const a=c-s(u,t);switch(u){case o.NUMERIC:return Math.floor(a/10*3);case o.ALPHANUMERIC:return Math.floor(a/11*2);case o.KANJI:return Math.floor(a/13);default:return Math.floor(a/8)}},t.getBestVersionForData=function(n,r){let i;const u=e.from(r,e.M);if(Array.isArray(n)){if(n.length>1)return function(n,r){for(let e=1;e<=40;e++)if(c(n,e)<=t.getCapacity(e,r,o.MIXED))return e}(n,u);if(0===n.length)return 1;i=n[0]}else i=n;return function(n,r,e){for(let o=1;o<=40;o++)if(r<=t.getCapacity(o,e,n))return o}(i.mode,i.getLength(),u)},t.getEncodedBits=function(t){if(!i.isValid(t)||t<7)throw new Error("Invalid QR Code version");let r=t<<12;for(;n.getBCHDigit(r)-u>=0;)r^=7973<<n.getBCHDigit(r)-u;return t<<12|r}}(q)),q),l=function(){if(H)return ot;H=1;const t=h(),n=t.getBCHDigit(1335);return ot.getEncodedBits=function(r,e){const o=r.bit<<3|e;let i=o<<10;for(;t.getBCHDigit(i)-n>=0;)i^=1335<<t.getBCHDigit(i)-n;return 21522^(o<<10|i)},ot}(),d=D(),v=(rt||(rt=1,function(t){const n=D(),r=function(){if(K)return J;K=1;const t=D();function n(n){this.mode=t.NUMERIC,this.data=n.toString()}return n.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%3*3+1:0)},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(t){let n,r,e;for(n=0;n+3<=this.data.length;n+=3)r=this.data.substr(n,3),e=parseInt(r,10),t.put(e,10);const o=this.data.length-n;o>0&&(r=this.data.substr(n),e=parseInt(r,10),t.put(e,3*o+1))},J=n}(),e=function(){if(W)return V;W=1;const t=D(),n=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function r(n){this.mode=t.ALPHANUMERIC,this.data=n}return r.getBitsLength=function(t){return 11*Math.floor(t/2)+t%2*6},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(t){let r;for(r=0;r+2<=this.data.length;r+=2){let e=45*n.indexOf(this.data[r]);e+=n.indexOf(this.data[r+1]),t.put(e,11)}this.data.length%2&&t.put(n.indexOf(this.data[r]),6)},V=r}(),o=function(){if(G)return Y;G=1;const t=D();function n(n){this.mode=t.BYTE,this.data="string"==typeof n?(new TextEncoder).encode(n):new Uint8Array(n)}return n.getBitsLength=function(t){return 8*t},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(t){for(let n=0,r=this.data.length;n<r;n++)t.put(this.data[n],8)},Y=n}(),i=function(){if(tt)return X;tt=1;const t=D(),n=h();function r(n){this.mode=t.KANJI,this.data=n}return r.getBitsLength=function(t){return 13*t},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(t){let r;for(r=0;r<this.data.length;r++){let e=n.toSJIS(this.data[r]);if(e>=33088&&e<=40956)e-=33088;else{if(!(e>=57408&&e<=60351))throw new Error("Invalid SJIS character: "+this.data[r]+"\nMake sure your charset is UTF-8");e-=49472}e=192*(e>>>8&255)+(255&e),t.put(e,13)}},X=r}(),u=Z(),s=h(),c=st();function a(t){return unescape(encodeURIComponent(t)).length}function f(t,n,r){const e=[];let o;for(;null!==(o=t.exec(r));)e.push({data:o[0],index:o.index,mode:n,length:o[0].length});return e}function l(t){const r=f(u.NUMERIC,n.NUMERIC,t),e=f(u.ALPHANUMERIC,n.ALPHANUMERIC,t);let o,i;return s.isKanjiModeEnabled()?(o=f(u.BYTE,n.BYTE,t),i=f(u.KANJI,n.KANJI,t)):(o=f(u.BYTE_KANJI,n.BYTE,t),i=[]),r.concat(e,o,i).sort((function(t,n){return t.index-n.index})).map((function(t){return{data:t.data,mode:t.mode,length:t.length}}))}function d(t,u){switch(u){case n.NUMERIC:return r.getBitsLength(t);case n.ALPHANUMERIC:return e.getBitsLength(t);case n.KANJI:return i.getBitsLength(t);case n.BYTE:return o.getBitsLength(t)}}function w(t,u){let c;const a=n.getBestModeForData(t);if(c=n.from(u,a),c!==n.BYTE&&c.bit<a.bit)throw new Error('"'+t+'" cannot be encoded with mode '+n.toString(c)+".\n Suggested mode is: "+n.toString(a));switch(c!==n.KANJI||s.isKanjiModeEnabled()||(c=n.BYTE),c){case n.NUMERIC:return new r(t);case n.ALPHANUMERIC:return new e(t);case n.KANJI:return new i(t);case n.BYTE:return new o(t)}}t.fromArray=function(t){return t.reduce((function(t,n){return"string"==typeof n?t.push(w(n,null)):n.data&&t.push(w(n.data,n.mode)),t}),[])},t.fromString=function(r,e){const o=function(t,r){const e={},o={start:{}};let i=["start"];for(let u=0;u<t.length;u++){const s=t[u],c=[];for(let t=0;t<s.length;t++){const a=s[t],f=""+u+t;c.push(f),e[f]={node:a,lastCount:0},o[f]={};for(let t=0;t<i.length;t++){const u=i[t];e[u]&&e[u].node.mode===a.mode?(o[u][f]=d(e[u].lastCount+a.length,a.mode)-d(e[u].lastCount,a.mode),e[u].lastCount+=a.length):(e[u]&&(e[u].lastCount=a.length),o[u][f]=d(a.length,a.mode)+4+n.getCharCountIndicator(a.mode,r))}}i=c}for(let t=0;t<i.length;t++)o[i[t]].end=0;return{map:o,table:e}}(function(t){const r=[];for(let e=0;e<t.length;e++){const o=t[e];switch(o.mode){case n.NUMERIC:r.push([o,{data:o.data,mode:n.ALPHANUMERIC,length:o.length},{data:o.data,mode:n.BYTE,length:o.length}]);break;case n.ALPHANUMERIC:r.push([o,{data:o.data,mode:n.BYTE,length:o.length}]);break;case n.KANJI:r.push([o,{data:o.data,mode:n.BYTE,length:a(o.data)}]);break;case n.BYTE:r.push([{data:o.data,mode:n.BYTE,length:a(o.data)}])}}return r}(l(r,s.isKanjiModeEnabled())),e),i=c.find_path(o.map,"start","end"),u=[];for(let t=1;t<i.length-1;t++)u.push(o.table[i[t]].node);return t.fromArray(u.reduce((function(t,n){const r=t.length-1>=0?t[t.length-1]:null;return r&&r.mode===n.mode?(t[t.length-1].data+=n.data,t):(t.push(n),t)}),[]))},t.rawSplit=function(n){return t.fromArray(l(n,s.isKanjiModeEnabled()))}}(it)),it);function A(t,n,r){const e=t.size,o=l.getEncodedBits(n,r);let i,u;for(i=0;i<15;i++)u=1==(o>>i&1),t.set(i<6?i:i<8?i+1:e-15+i,8,u,!0),t.set(8,i<8?e-i-1:i<9?15-i-1+1:15-i-1,u,!0);t.set(e-8,8,1,!0)}function R(n,f,l,h){let w;if(Array.isArray(n))w=v.fromArray(n);else{if("string"!=typeof n)throw new Error("Invalid data");{let t=f;if(!t){const r=v.rawSplit(n);t=a.getBestVersionForData(r,l)}w=v.fromString(n,t||40)}}const m=a.getBestVersionForData(w,l);if(!m)throw new Error("The amount of data is too big to be stored in a QR Code");if(f){if(f<m)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+m+".\n")}else f=m;const p=function(n,e,o){const i=new r;o.forEach((function(t){i.put(t.mode.bit,4),i.put(t.getLength(),d.getCharCountIndicator(t.mode,n)),t.write(i)}));const u=8*(t.getSymbolTotalCodewords(n)-s.getTotalCodewordsCount(n,e));for(i.getLengthInBits()+4<=u&&i.put(0,4);i.getLengthInBits()%8!=0;)i.putBit(0);const a=(u-i.getLengthInBits())/8;for(let t=0;t<a;t++)i.put(t%2?17:236,8);return function(n,r,e){const o=t.getSymbolTotalCodewords(r),i=o-s.getTotalCodewordsCount(r,e),u=s.getBlocksCount(r,e),a=u-o%u,f=Math.floor(o/u),l=Math.floor(i/u),h=l+1,d=f-l,w=new c(d);let m=0;const p=new Array(u),g=new Array(u);let v=0;const y=new Uint8Array(n.buffer);for(let t=0;t<u;t++){const n=t<a?l:h;p[t]=y.slice(m,m+n),g[t]=w.encode(p[t]),m+=n,v=Math.max(v,n)}const b=new Uint8Array(o);let E,k,A=0;for(E=0;E<v;E++)for(k=0;k<u;k++)E<p[k].length&&(b[A++]=p[k][E]);for(E=0;E<d;E++)for(k=0;k<u;k++)b[A++]=g[k][E];return b}(i,n,e)}(f,l,w),g=t.getSymbolSize(f),y=new e(g);return function(t,n){const r=t.size,e=i.getPositions(n);for(let n=0;n<e.length;n++){const o=e[n][0],i=e[n][1];for(let n=-1;n<=7;n++)if(!(o+n<=-1||r<=o+n))for(let e=-1;e<=7;e++)i+e<=-1||r<=i+e||t.set(o+n,i+e,n>=0&&n<=6&&(0===e||6===e)||e>=0&&e<=6&&(0===n||6===n)||n>=2&&n<=4&&e>=2&&e<=4,!0)}}(y,f),function(t){const n=t.size;for(let r=8;r<n-8;r++){const n=r%2==0;t.set(r,6,n,!0),t.set(6,r,n,!0)}}(y),function(t,n){const r=o.getPositions(n);for(let n=0;n<r.length;n++){const e=r[n][0],o=r[n][1];for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)t.set(e+n,o+r,-2===n||2===n||-2===r||2===r||0===n&&0===r,!0)}}(y,f),A(y,l,0),f>=7&&function(t,n){const r=t.size,e=a.getEncodedBits(n);let o,i,u;for(let n=0;n<18;n++)o=Math.floor(n/3),i=n%3+r-8-3,u=1==(e>>n&1),t.set(o,i,u,!0),t.set(i,o,u,!0)}(y,f),function(t,n){const r=t.size;let e=-1,o=r-1,i=7,u=0;for(let s=r-1;s>0;s-=2)for(6===s&&s--;;){for(let r=0;r<2;r++)if(!t.isReserved(o,s-r)){let e=!1;u<n.length&&(e=1==(n[u]>>>i&1)),t.set(o,s-r,e),i--,-1===i&&(u++,i=7)}if(o+=e,o<0||r<=o){o-=e,e=-e;break}}}(y,p),isNaN(h)&&(h=u.getBestMask(y,A.bind(null,y,l))),u.applyMask(h,y),A(y,l,h),{modules:y,version:f,errorCorrectionLevel:l,maskPattern:h,segments:w}}return f.create=function(r,e){if(void 0===r||""===r)throw new Error("No input text");let o,i,s=n.M;return void 0!==e&&(s=n.from(e.errorCorrectionLevel,n.M),o=a.from(e.version),i=u.from(e.maskPattern),e.toSJISFunc&&t.setToSJISFunction(e.toSJISFunc)),R(r,o,s,i)},f}var at,ft,lt={},ht={};function dt(){return at||(at=1,function(t){function n(t){if("number"==typeof t&&(t=t.toString()),"string"!=typeof t)throw new Error("Color should be defined as hex string");let n=t.slice().replace("#","").split("");if(n.length<3||5===n.length||n.length>8)throw new Error("Invalid hex color: "+t);3!==n.length&&4!==n.length||(n=Array.prototype.concat.apply([],n.map((function(t){return[t,t]})))),6===n.length&&n.push("F","F");const r=parseInt(n.join(""),16);return{r:r>>24&255,g:r>>16&255,b:r>>8&255,a:255&r,hex:"#"+n.slice(0,6).join("")}}t.getOptions=function(t){t||(t={}),t.color||(t.color={});const r=t.width&&t.width>=21?t.width:void 0;return{width:r,scale:r?4:t.scale||4,margin:null==t.margin||t.margin<0?4:t.margin,color:{dark:n(t.color.dark||"#000000ff"),light:n(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}},t.getScale=function(t,n){return n.width&&n.width>=t+2*n.margin?n.width/(t+2*n.margin):n.scale},t.getImageWidth=function(n,r){const e=t.getScale(n,r);return Math.floor((n+2*r.margin)*e)},t.qrToImageData=function(n,r,e){const o=r.modules.size,i=r.modules.data,u=t.getScale(o,e),s=Math.floor((o+2*e.margin)*u),c=e.margin*u,a=[e.color.light,e.color.dark];for(let t=0;t<s;t++)for(let r=0;r<s;r++){let f=4*(t*s+r),l=e.color.light;t>=c&&r>=c&&t<s-c&&r<s-c&&(l=a[i[Math.floor((t-c)/u)*o+Math.floor((r-c)/u)]?1:0]),n[f++]=l.r,n[f++]=l.g,n[f++]=l.b,n[f]=l.a}}}(ht)),ht}var wt,mt,pt={};var gt=function(){if(mt)return s;mt=1;const t=c(),n=ct(),r=(ft||(ft=1,function(t){const n=dt();t.render=function(t,r,e){let o=e,i=r;void 0!==o||r&&r.getContext||(o=r,r=void 0),r||(i=function(){try{return document.createElement("canvas")}catch(t){throw new Error("You need to specify a canvas element")}}()),o=n.getOptions(o);const u=n.getImageWidth(t.modules.size,o),s=i.getContext("2d"),c=s.createImageData(u,u);return n.qrToImageData(c.data,t,o),function(t,n,r){t.clearRect(0,0,n.width,n.height),n.style||(n.style={}),n.height=r,n.width=r,n.style.height=r+"px",n.style.width=r+"px"}(s,i,u),s.putImageData(c,0,0),i},t.renderToDataURL=function(n,r,e){let o=e;return void 0!==o||r&&r.getContext||(o=r,r=void 0),o||(o={}),t.render(n,r,o).toDataURL(o.type||"image/png",(o.rendererOpts||{}).quality)}}(lt)),lt),e=function(){if(wt)return pt;wt=1;const t=dt();function n(t,n){const r=t.a/255,e=n+'="'+t.hex+'"';return r<1?e+" "+n+'-opacity="'+r.toFixed(2).slice(1)+'"':e}function r(t,n,r){let e=t+n;return void 0!==r&&(e+=" "+r),e}return pt.render=function(e,o,i){const u=t.getOptions(o),s=e.modules.size,c=e.modules.data,a=s+2*u.margin,f=u.color.light.a?"<path "+n(u.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",l="<path "+n(u.color.dark,"stroke")+' d="'+function(t,n,e){let o="",i=0,u=!1,s=0;for(let c=0;c<t.length;c++){const a=Math.floor(c%n),f=Math.floor(c/n);a||u||(u=!0),t[c]?(s++,c>0&&a>0&&t[c-1]||(o+=u?r("M",a+e,.5+f+e):r("m",i,0),i=0,u=!1),a+1<n&&t[c+1]||(o+=r("h",s),s=0)):i++}return o}(c,s,u.margin)+'"/>',h='<svg xmlns="http://www.w3.org/2000/svg" '+(u.width?'width="'+u.width+'" height="'+u.width+'" ':"")+'viewBox="0 0 '+a+" "+a+'" shape-rendering="crispEdges">'+f+l+"</svg>\n";return"function"==typeof i&&i(null,h),h},pt}();function o(r,e,o,i,u){const s=[].slice.call(arguments,1),c=s.length,a="function"==typeof s[c-1];if(!a&&!t())throw new Error("Callback required as last argument");if(!a){if(c<1)throw new Error("Too few arguments provided");return 1===c?(o=e,e=i=void 0):2!==c||e.getContext||(i=o,o=e,e=void 0),new Promise((function(t,u){try{const u=n.create(o,i);t(r(u,e,i))}catch(t){u(t)}}))}if(c<2)throw new Error("Too few arguments provided");2===c?(u=o,o=e,e=i=void 0):3===c&&(e.getContext&&void 0===u?(u=i,i=void 0):(u=i,i=o,o=e,e=void 0));try{const t=n.create(o,i);u(null,r(t,e,i))}catch(t){u(t)}}return s.create=n.create,s.toCanvas=o.bind(null,r.render),s.toDataURL=o.bind(null,r.renderToDataURL),s.toString=o.bind(null,(function(t,n,r){return e.render(t,r)})),s}(),vt=o(gt);const yt=class{constructor(n){t(this,n),this.qrSvg="",this.downloading=!1}async generateQr(){this.ticket?.barcode&&(this.qrSvg=await vt.toString(this.ticket.barcode,{type:"svg",margin:0,errorCorrectionLevel:"M"}))}async componentWillLoad(){await this.generateQr()}async download(){try{this.downloading=!0;const t=await r(),n=t.getOrdersManager?.();if(!n)throw new Error("Ticket downloads are not available");const e=await n.ticketPdf(this.orderId,this.ticket.id),o=URL.createObjectURL(e),i=document.createElement("a");i.href=o,i.download=`ticket-${this.ticket.id}.pdf`,document.body.appendChild(i),i.click(),i.remove(),URL.revokeObjectURL(o)}catch(t){console.error("[tl-ticket] download failed",t)}finally{this.downloading=!1}}render(){const t=this.ticket;if(!t)return null;const r="fully_redeemed"===t.admissionStatus,e=["cancelled","expired"].includes(t.status),o=r||e;return n("div",{class:"ticket"},n("div",{class:"qr-wrap"},n("div",{class:{qr:!0,inactive:o},innerHTML:this.qrSvg}),o&&n("span",{class:"stamp"},r?"Used":"Void")),n("p",{class:"name"},t.name),t.seatLabel&&n("p",{class:"meta"},"Seat ",t.seatLabel),t.holderName&&n("p",{class:"meta"},t.holderName),n("p",{class:"barcode"},t.barcode),n("button",{class:"download",disabled:this.downloading,onClick:()=>this.download()},this.downloading?"Preparing…":"Download PDF"))}static get watchers(){return{ticket:[{generateQr:0}]}}};yt.style=":host{display:block;font-family:var(--tl-font-family, system-ui, sans-serif)}.ticket{border:1px solid var(--tl-border, #e5e7eb);border-radius:var(--tl-radius-lg, 0.75rem);background:var(--tl-card, #ffffff);padding:var(--tl-spacing-5, 1.25rem);text-align:center}.qr-wrap{position:relative;width:160px;height:160px;margin:0 auto}.qr{width:160px;height:160px}.qr svg{width:100%;height:100%;display:block}.qr.inactive{opacity:0.3}.stamp{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);padding:0.25rem 0.5rem;border-radius:var(--tl-radius-sm, 0.25rem);background:rgba(17, 24, 39, 0.85);color:#ffffff;font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em}.name{margin:1rem 0 0;font-weight:600;color:var(--tl-foreground, #111827)}.meta{margin:0.125rem 0 0;font-size:0.875rem;color:var(--tl-muted-foreground, #6b7280)}.barcode{margin:0.25rem 0 0;font-family:ui-monospace, monospace;font-size:0.625rem;color:var(--tl-muted-foreground, #9ca3af);word-break:break-all}.download{margin-top:0.75rem;padding:0.375rem 0.75rem;border:1px solid var(--tl-border, #e5e7eb);border-radius:var(--tl-radius-md, 0.5rem);background:transparent;color:var(--tl-foreground, #111827);font-size:0.875rem;font-weight:500;cursor:pointer}.download:hover{background:var(--tl-muted, #f3f4f6)}.download:disabled{opacity:0.5;cursor:default}";export{e as tl_order_tickets,yt as tl_ticket}
@@ -1 +0,0 @@
1
- import{r as e,c as t,h as r,H as a}from"./p-Ba-RZTFI.js";import{o}from"./p-CqhvfyKV.js";const s=class{constructor(r){e(this,r),this.tlOpen=t(this,"tlOpen"),this.tlClose=t(this,"tlClose"),this.side="right",this.heading="Your cart",this.open=!1,this.visible=!1,this.onKey=e=>{"Escape"===e.key&&this.visible&&this.setOpen(!1)},this.close=()=>this.setOpen(!1)}connectedCallback(){this.visible=this.open,this.offCart=o("ui:cart-requested",(()=>this.setOpen(!0))),this.offClose=o("ui:modal-close-requested",(()=>this.setOpen(!1))),"undefined"!=typeof document&&document.addEventListener("keydown",this.onKey)}disconnectedCallback(){this.offCart?.(),this.offClose?.(),"undefined"!=typeof document&&document.removeEventListener("keydown",this.onKey)}onOpenProp(e){this.visible=e}setOpen(e){this.visible!==e&&(this.open=e,this.visible=e,e?this.tlOpen.emit():this.tlClose.emit())}render(){return r(a,{key:"5b4dbc69206ef19bcf3b0ba619a67728c8e35e68"},r("div",{key:"0312918752eb5eebb86206be7094c1024dbd3457",class:{overlay:!0,"is-open":this.visible},onClick:e=>{e.target===e.currentTarget&&this.close()}},r("aside",{key:"8c50e6b0cfacf3a881e4ec1ab272ef8da13cd796",class:{panel:!0,[`panel--${this.side}`]:!0,"is-open":this.visible},role:"dialog","aria-modal":"true","aria-label":this.heading,"aria-hidden":this.visible?"false":"true"},r("header",{key:"ee7efe3700ff05c921f6ace97f39f957ebf6670e",class:"drawer-header"},r("h2",{key:"07841a92eea5bca5db0ebf64df91a14eaa5ecffc",class:"drawer-title"},this.heading),r("button",{key:"c2099831dfaf89b44b7228c1ee5634d61c5af919",class:"close-btn",onClick:this.close,"aria-label":"Close cart"},r("svg",{key:"a2c8e0ecf42e4fe43ca1d6b6ccc6f4687e6af483",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},r("path",{key:"de07e2ce6b0b60a137d8b534826963a03421af7b",d:"M6 6l12 12M18 6L6 18","stroke-linecap":"round"})))),r("div",{key:"f67798d0e026cce074bf15b246cdd3b726be98f6",class:"drawer-body"},r("tl-cart",{key:"1b2a5a44e1862a3b4754bd36e17de063d012453e"})))))}static get watchers(){return{open:[{onOpenProp:0}]}}};s.style=":host{--_bg:var(--tl-background, #ffffff);--_fg:var(--tl-foreground, #111827);--_muted-fg:var(--tl-muted-foreground, #6b7280);--_muted:var(--tl-muted, #f3f4f6);--_border:var(--tl-border, #e5e7eb);--_font:var(--tl-font-family, system-ui, -apple-system, sans-serif);font-family:var(--_font)}.overlay{position:fixed;inset:0;z-index:2147483640;background:rgba(8, 8, 16, 0.6);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity 0.25s ease}.overlay.is-open{opacity:1;pointer-events:auto}.panel{position:fixed;top:0;bottom:0;width:min(420px, 100%);display:flex;flex-direction:column;background:var(--_bg);color:var(--_fg);box-shadow:0 0 48px rgba(0, 0, 0, 0.5);transition:transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);will-change:transform}.panel--right{right:0;border-left:1px solid var(--_border);transform:translateX(100%)}.panel--left{left:0;border-right:1px solid var(--_border);transform:translateX(-100%)}.panel.is-open{transform:translateX(0)}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--_border)}.drawer-title{margin:0;font-size:1.1rem;font-weight:700}.close-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:999px;background:var(--_muted);color:var(--_muted-fg);cursor:pointer;transition:color 0.15s}.close-btn:hover{color:var(--_fg)}.close-btn svg{width:16px;height:16px}.drawer-body{flex:1;overflow-y:auto;padding:18px 20px}";export{s as tl_cart_drawer}