bitsnap-react 1.22.0 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/AGENTS.md +20 -0
  2. package/dist/BitsnapCart-GK3MQGP7.js +2 -0
  3. package/dist/BitsnapCart-GK3MQGP7.js.map +1 -0
  4. package/dist/BitsnapCart-ZC6LMXLO.mjs +2 -0
  5. package/dist/CartProvider-FJDBDV4N.js +2 -0
  6. package/dist/CartProvider-FJDBDV4N.js.map +1 -0
  7. package/dist/{CartProvider-YUV2Q523.mjs → CartProvider-P7BZVK2M.mjs} +2 -2
  8. package/dist/PanelModelFiles-EKQRLF46.js.map +1 -1
  9. package/dist/analytics.js +1 -1
  10. package/dist/analytics.js.map +1 -1
  11. package/dist/analytics.mjs +1 -1
  12. package/dist/catalog.js +1 -1
  13. package/dist/catalog.js.map +1 -1
  14. package/dist/catalog.mjs +1 -1
  15. package/dist/chat.js +1 -1
  16. package/dist/chat.js.map +1 -1
  17. package/dist/chat.mjs +1 -1
  18. package/dist/{chunk-SAKZOHU7.js → chunk-2CL4B4KM.js} +2 -2
  19. package/dist/chunk-2CL4B4KM.js.map +1 -0
  20. package/dist/chunk-2D2TQK3R.js +2 -0
  21. package/dist/chunk-2D2TQK3R.js.map +1 -0
  22. package/dist/{chunk-C2AJ5B32.mjs → chunk-4AU5SEHU.mjs} +2 -2
  23. package/dist/chunk-6Q3VGPSF.js.map +1 -1
  24. package/dist/{chunk-ZFZR3CI5.js → chunk-7GSQV4NW.js} +2 -2
  25. package/dist/chunk-7GSQV4NW.js.map +1 -0
  26. package/dist/{chunk-WYRECFVW.js → chunk-CA5EJJW7.js} +2 -2
  27. package/dist/chunk-CA5EJJW7.js.map +1 -0
  28. package/dist/{chunk-U37ZH4YJ.js → chunk-DCICRN6G.js} +2 -2
  29. package/dist/chunk-DCICRN6G.js.map +1 -0
  30. package/dist/{chunk-QQSCVPOG.mjs → chunk-EVV25IKM.mjs} +2 -2
  31. package/dist/{chunk-QQSCVPOG.mjs.map → chunk-EVV25IKM.mjs.map} +1 -1
  32. package/dist/{chunk-MBSXTB6G.js → chunk-EVX5SQL2.js} +2 -2
  33. package/dist/chunk-EVX5SQL2.js.map +1 -0
  34. package/dist/chunk-FVZ4W7QG.js +5 -0
  35. package/dist/chunk-FVZ4W7QG.js.map +1 -0
  36. package/dist/chunk-GMQYQTUM.mjs +2 -0
  37. package/dist/chunk-GMQYQTUM.mjs.map +1 -0
  38. package/dist/{chunk-35ZQU353.js → chunk-I6QN3T6K.js} +2 -2
  39. package/dist/chunk-I6QN3T6K.js.map +1 -0
  40. package/dist/chunk-ILYJCT5S.js +2 -0
  41. package/dist/chunk-ILYJCT5S.js.map +1 -0
  42. package/dist/{chunk-QJOMFK4X.mjs → chunk-JRSQ2IGQ.mjs} +2 -2
  43. package/dist/chunk-JSDGZ4NY.js.map +1 -1
  44. package/dist/chunk-KOYBZORL.js.map +1 -1
  45. package/dist/{chunk-5MXBUGY3.mjs → chunk-M6QFQ3DR.mjs} +2 -2
  46. package/dist/chunk-MDAFPGPA.js.map +1 -1
  47. package/dist/{chunk-KFY6IOAA.js → chunk-MY6BPCRV.js} +2 -2
  48. package/dist/{chunk-ZFUE3AX5.mjs.map → chunk-MY6BPCRV.js.map} +1 -1
  49. package/dist/{chunk-QCIETNFZ.mjs → chunk-NMXTTD5M.mjs} +2 -2
  50. package/dist/chunk-PFKZ7KUU.js.map +1 -1
  51. package/dist/chunk-Q337IQNA.js.map +1 -1
  52. package/dist/{chunk-IVB3E4V3.mjs → chunk-RA6M3TJ3.mjs} +2 -2
  53. package/dist/{chunk-NCCP2UDM.mjs → chunk-SKQJESEB.mjs} +2 -2
  54. package/dist/chunk-STDV54FL.mjs +2 -0
  55. package/dist/chunk-STDV54FL.mjs.map +1 -0
  56. package/dist/{chunk-JS3KK56H.js → chunk-SZLSKIYU.js} +2 -2
  57. package/dist/chunk-SZLSKIYU.js.map +1 -0
  58. package/dist/chunk-W3RGQYPD.js.map +1 -1
  59. package/dist/{chunk-TVZLDLAV.mjs → chunk-W4EUYPJ3.mjs} +2 -2
  60. package/dist/chunk-Z3YOJ6NZ.js.map +1 -1
  61. package/dist/chunk-ZMEWUEZJ.mjs +5 -0
  62. package/dist/chunk-ZMEWUEZJ.mjs.map +1 -0
  63. package/dist/consent.js.map +1 -1
  64. package/dist/course.js +1 -1
  65. package/dist/course.js.map +1 -1
  66. package/dist/course.mjs +1 -1
  67. package/dist/embed/analytics.js +1 -1
  68. package/dist/errors.js.map +1 -1
  69. package/dist/index.css +1 -1
  70. package/dist/index.css.map +1 -1
  71. package/dist/index.js +1 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/index.mjs +1 -1
  74. package/dist/index.mjs.map +1 -1
  75. package/dist/internal.js.map +1 -1
  76. package/dist/methods-IEHZTZEY.mjs +2 -0
  77. package/dist/methods-S4KBRY2I.js +2 -0
  78. package/dist/methods-S4KBRY2I.js.map +1 -0
  79. package/dist/model-files-client-P4PORZJ6.js.map +1 -1
  80. package/dist/models.js.map +1 -1
  81. package/dist/returns.js +1 -1
  82. package/dist/returns.js.map +1 -1
  83. package/dist/returns.mjs +1 -1
  84. package/dist/viewer3d.js.map +1 -1
  85. package/dist/viewer3d.mjs +1 -1
  86. package/package.json +2 -2
  87. package/dist/BitsnapCart-AINUJQVF.mjs +0 -2
  88. package/dist/BitsnapCart-GP2UJSG4.js +0 -2
  89. package/dist/BitsnapCart-GP2UJSG4.js.map +0 -1
  90. package/dist/CartProvider-HTKGBPVA.js +0 -2
  91. package/dist/CartProvider-HTKGBPVA.js.map +0 -1
  92. package/dist/chunk-35ZQU353.js.map +0 -1
  93. package/dist/chunk-3TUL63IC.js +0 -2
  94. package/dist/chunk-3TUL63IC.js.map +0 -1
  95. package/dist/chunk-4JR74NXR.js +0 -2
  96. package/dist/chunk-4JR74NXR.js.map +0 -1
  97. package/dist/chunk-GLKBCVNH.mjs +0 -2
  98. package/dist/chunk-GLKBCVNH.mjs.map +0 -1
  99. package/dist/chunk-JS3KK56H.js.map +0 -1
  100. package/dist/chunk-KFY6IOAA.js.map +0 -1
  101. package/dist/chunk-MBSXTB6G.js.map +0 -1
  102. package/dist/chunk-QJBQ45R6.mjs +0 -5
  103. package/dist/chunk-QJBQ45R6.mjs.map +0 -1
  104. package/dist/chunk-SAKZOHU7.js.map +0 -1
  105. package/dist/chunk-SZNTXRFD.js +0 -5
  106. package/dist/chunk-SZNTXRFD.js.map +0 -1
  107. package/dist/chunk-U37ZH4YJ.js.map +0 -1
  108. package/dist/chunk-WYRECFVW.js.map +0 -1
  109. package/dist/chunk-ZFUE3AX5.mjs +0 -2
  110. package/dist/chunk-ZFZR3CI5.js.map +0 -1
  111. package/dist/methods-4Q37ITIM.js +0 -2
  112. package/dist/methods-4Q37ITIM.js.map +0 -1
  113. package/dist/methods-JLVRTNPE.mjs +0 -2
  114. /package/dist/{BitsnapCart-AINUJQVF.mjs.map → BitsnapCart-ZC6LMXLO.mjs.map} +0 -0
  115. /package/dist/{CartProvider-YUV2Q523.mjs.map → CartProvider-P7BZVK2M.mjs.map} +0 -0
  116. /package/dist/{chunk-C2AJ5B32.mjs.map → chunk-4AU5SEHU.mjs.map} +0 -0
  117. /package/dist/{chunk-QJOMFK4X.mjs.map → chunk-JRSQ2IGQ.mjs.map} +0 -0
  118. /package/dist/{chunk-5MXBUGY3.mjs.map → chunk-M6QFQ3DR.mjs.map} +0 -0
  119. /package/dist/{chunk-QCIETNFZ.mjs.map → chunk-NMXTTD5M.mjs.map} +0 -0
  120. /package/dist/{chunk-IVB3E4V3.mjs.map → chunk-RA6M3TJ3.mjs.map} +0 -0
  121. /package/dist/{chunk-NCCP2UDM.mjs.map → chunk-SKQJESEB.mjs.map} +0 -0
  122. /package/dist/{chunk-TVZLDLAV.mjs.map → chunk-W4EUYPJ3.mjs.map} +0 -0
  123. /package/dist/{methods-JLVRTNPE.mjs.map → methods-IEHZTZEY.mjs.map} +0 -0
package/dist/chat.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{a as Fe}from"./chunk-HKRH6FI6.mjs";import{a as ye}from"./chunk-7IP3JWZ3.mjs";import{e as Be}from"./chunk-QCIETNFZ.mjs";import{a as Ue}from"./chunk-XEXPQFKN.mjs";import{b as Te}from"./chunk-CUPG4B5W.mjs";import"./chunk-GLKBCVNH.mjs";import{a as z}from"./chunk-5R6AGO3Z.mjs";import"./chunk-C2AJ5B32.mjs";import"./chunk-QQSCVPOG.mjs";import"./chunk-MDCP5JNP.mjs";import{b as Oe,f as X}from"./chunk-OFPRIENJ.mjs";import"./chunk-U6FLIRIV.mjs";import{useEffect as Ft,useMemo as Ee,useRef as Ot,useState as Ut}from"react";async function ie(e){await Be({id:e.productId,name:e.name??"",price:e.priceCents??0,currency:"",amount:e.amount},{projectID:e.projectID,host:e.host,showCart:!0})}var Ne="https://chat.bitsnap.pl",Re="https://bitsnap.pl",Me="wss://bitsnap-nats-queue-production.up.railway.app";var $=class extends Error{code;status;retryAfter;data;constructor(t,n,a={}){super(`chat: ${t} (${n})`),this.name="ChatError",this.code=t,this.status=n,this.data=a;let r=Number(a.retry_after);Number.isFinite(r)&&r>0&&(this.retryAfter=r)}};function de(e){let t=(e.baseUrl||Ne).replace(/\/+$/,""),n=typeof window<"u"&&["localhost","127.0.0.1"].includes(window.location.hostname)?window.location.origin:void 0,a=(e.attachmentsUrl??n??Re).replace(/\/+$/,""),r=e.fetch??((...l)=>fetch(...l));async function d(l,i,g){let x;try{x=await r(t+i,{method:l,headers:{Authorization:`Bearer ${e.token}`,"X-Bitsnap-Project":e.projectId,...g===void 0?{}:{"Content-Type":"application/json"}},body:g===void 0?void 0:JSON.stringify(g)})}catch{throw new $("network",0)}let k=null;try{let v=await x.text();k=v?JSON.parse(v):null}catch{k=null}if(!x.ok){let v=H(k)?k:{},f=typeof v.error=="string"?v.error:"internal_error";throw new $(f,x.status,v)}return{status:x.status,json:k}}let y=encodeURIComponent,p;return{baseUrl:t,projectId:e.projectId,async me(){let{json:l}=await d("GET","/v1/me");return ct(l)},async openThread(l){let{json:i}=await d("POST","/v1/threads",{product_id:l});return $e(i)},async messages(l,i={}){let g=new URLSearchParams;i.before&&g.set("before",i.before),i.limit&&g.set("limit",String(i.limit));let x=g.toString(),k=x?`?${x}`:"",{json:v}=await d("GET",`/v1/threads/${y(l)}/messages${k}`),f=H(v)?v:{};return{messages:ee(f.messages).map(le),hasMore:f.has_more===!0}},async send(l,i){let{json:g}=await d("POST",`/v1/threads/${y(l)}/messages`,{body:i.body,...i.clientId?{client_id:i.clientId}:{},...i.attachment?{attachment_key:i.attachment.key,attachment_kind:i.attachment.kind,attachment_name:i.attachment.filename,attachment_size:i.attachment.size,attachment_content_type:i.attachment.contentType}:{}}),x=H(g)?g:{};return{message:le(x.message),thread:De(x.thread)}},async uploadAttachment(l,i,g){let x=async(f,T)=>{let C=await r(`${a}/api/chat/attachments/${f}`,{method:"POST",headers:{Authorization:`Bearer ${e.token}`,"X-Bitsnap-Project":e.projectId,"Content-Type":"application/json"},body:JSON.stringify(T)}),h={};try{h=await C.json()}catch{}if(!C.ok)throw new $(typeof h.error=="string"?h.error:"request_failed",C.status,h);return h},k=await x("upload",{project_id:e.projectId,thread_id:l,filename:i.name,content_type:i.type,size:i.size});await new Promise((f,T)=>{let C=new XMLHttpRequest;C.open("PUT",k.uploadURL),C.setRequestHeader("Content-Type",i.type),C.upload.onprogress=h=>{h.lengthComputable&&g(Math.round(h.loaded/h.total*100))},C.onload=()=>C.status>=200&&C.status<300?f():T(new $("upload_failed",C.status)),C.onerror=()=>T(new $("network",0)),C.send(i)});let v=await x("complete",{project_id:e.projectId,thread_id:l,key:k.key,upload_ticket:k.uploadTicket,filename:i.name,content_type:i.type,size:i.size});return{key:v.key,kind:v.kind,filename:v.filename,size:v.size,contentType:v.content_type}},async attachmentURL(l,i){if(!i.attachmentKey)throw new $("invalid_attachment",400);let g=new URLSearchParams({project_id:e.projectId,thread_id:l,key:i.attachmentKey,filename:i.attachmentName??"attachment",size:String(i.attachmentSize??0)}),x=await r(`${a}/api/chat/attachments/read?${g}`,{headers:{Authorization:`Bearer ${e.token}`,"X-Bitsnap-Project":e.projectId}}),k={};try{k=await x.json()}catch{}if(!x.ok||typeof k.url!="string")throw new $(typeof k.error=="string"?k.error:"request_failed",x.status,k);return k.url},async deleteMessage(l,i){await d("DELETE",`/v1/threads/${y(l)}/messages/${y(i)}`)},async mute(l,i){await d("POST",`/v1/threads/${y(l)}/mute`,{muted:i})},async report(l){await d("POST","/v1/reports",{thread_id:l.threadId,...l.messageId?{message_id:l.messageId}:{},reason:l.reason,...l.note?{note:l.note}:{}})},async markRead(l,i){await d("POST",`/v1/threads/${y(l)}/receipts`,{state:"read",message_id:i})},async realtimeToken(l={}){if(!l.fresh&&p&&Date.parse(p.expiresAt)-Date.now()>9e4)return p;let{json:i}=await d("POST","/v1/realtime/token"),g=H(i)?i:{};return p={jwt:U(g.jwt),expiresAt:U(g.expires_at),servers:ee(g.servers).filter(x=>typeof x=="string"),subjects:ee(g.subjects).filter(x=>typeof x=="string"),truncated:g.truncated===!0}}}}function Ie(e){if(!H(e)||typeof e.type!="string")return null;let t=U(e.id);switch(e.type){case"message.created":return{type:"message.created",message:le(e)};case"message.updated":return{type:"message.updated",message:le(H(e.message)?e.message:e)};case"message.rejected":return{type:"message.rejected",id:t,reason:U(e.reason)};case"message.deleted":case"message.pinned":case"message.unpinned":return{type:e.type,id:t};default:return null}}function H(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function ee(e){return Array.isArray(e)?e:[]}function U(e){return typeof e=="string"?e:e==null?"":String(e)}function V(e){let t=Number(e);return Number.isFinite(t)?t:0}function te(e){return typeof e=="string"&&e!==""?e:void 0}function je(e){return typeof e=="string"&&e!==""?e:null}function le(e){let t=H(e)?e:{},n=t.kind==="payment_request"?it(t.payment_request):void 0;return{id:U(t.id),threadId:U(t.thread_id),authorEmail:U(t.author_email),body:U(t.body),kind:t.kind==="payment_request"?"payment_request":"text",...n?{paymentRequest:n}:{},...t.kind==="payment_request"&&!n?{paymentRequestInvalid:!0}:{},attachmentKey:te(t.attachment_key),attachmentKind:te(t.attachment_kind),attachmentName:te(t.attachment_name),attachmentSize:V(t.attachment_size),attachmentContentType:te(t.attachment_content_type),createdAt:U(t.created_at),pinned:t.pinned===!0,deleted:t.deleted===!0,system:t.system===!0,...t.status==="pending"?{status:"pending"}:{}}}function it(e){if(!H(e))return;let t=l=>l==null?null:typeof l=="number"&&Number.isFinite(l)&&l>=0?l:NaN,n=t(e.min_amount_minor),a=t(e.max_amount_minor),r=e.amount_minor,d=e.extra_replies,y=e.extend_expiry_days,p=typeof e.payment_url=="string"&&/^https:\/\//i.test(e.payment_url);if(!(typeof e.request_id!="string"||!e.request_id||typeof e.title!="string"||e.description!==null&&typeof e.description!="string"||e.amount_mode!=="exact"&&e.amount_mode!=="pwyw"||typeof r!="number"||!Number.isFinite(r)||r<0||Number.isNaN(n)||Number.isNaN(a)||e.amount_mode==="pwyw"&&(n==null||a==null||n>a)||typeof e.currency!="string"||!/^[A-Z]{3}$/.test(e.currency)||typeof d!="number"||!Number.isFinite(d)||d<0||typeof y!="number"||!Number.isFinite(y)||y<0||!p||typeof e.expires_at!="string"||!Number.isFinite(Date.parse(e.expires_at))||!["pending","paid","expired","cancelled"].includes(String(e.status))||e.paid_at!=null&&typeof e.paid_at!="string"))return{requestId:e.request_id,title:e.title,description:e.description??"",amountMode:e.amount_mode,amountMinor:r,minAmountMinor:n,maxAmountMinor:a,currency:e.currency,extraReplies:d,extendExpiryDays:y,paymentUrl:e.payment_url,status:e.status,expiresAt:e.expires_at,paidAt:e.paid_at}}function lt(e){let t=H(e)?e:{};return{orderId:U(t.order_id),productId:te(t.product_id),replies:V(t.replies),used:V(t.used),left:V(t.left),expiresAt:je(t.expires_at),expired:t.expired===!0}}function De(e){let t=H(e)?e:{};return{id:U(t.id),kind:t.kind==="channel"?"channel":"pack",repliesTotal:V(t.replies_total),repliesUsed:V(t.replies_used),repliesLeft:V(t.replies_left),expiresAt:je(t.expires_at),composerLocked:t.composer_locked===!0,responseHours:V(t.response_hours)}}function $e(e){let t=H(e)?e:{};return{...De(t),channelId:te(t.channel_id),title:U(t.title),lastMessage:H(t.last_message)?le(t.last_message):void 0,unread:V(t.unread),productId:te(t.product_id),blocked:t.blocked===!0,packs:ee(t.packs).map(lt),muted:t.muted===!0}}function dt(e){let t=H(e)?e:{};return{id:U(t.id),name:U(t.name),topic:U(t.topic),welcome:U(t.welcome),whoCanPost:t.who_can_post==="members"?"members":"creator",productId:U(t.product_id),role:U(t.role),memberCount:V(t.member_count),createdAt:U(t.created_at),blockLinks:t.block_links===!0,blockMedia:t.block_media===!0,cooldownSeconds:V(t.cooldown_seconds)}}function ct(e){let t=H(e)?e:{},n=H(t.entitlements)?t.entitlements:{};return{email:U(t.email),threads:ee(t.threads).map($e),entitlements:{packs:ee(n.packs).map(a=>{let r=H(a)?a:{};return{productId:U(r.product_id),name:U(r.name),repliesLeftHint:V(r.replies_left_hint),expiresAt:je(r.expires_at)}}),channels:ee(n.channels).map(a=>{let r=H(a)?a:{};return{productId:U(r.product_id),channelId:te(r.channel_id)}})},channels:ee(t.channels).map(dt)}}import{AlertCircle as ut,ArrowLeft as mt,Clock as pt,Check as ht,Lock as gt,MoreHorizontal as Ve,Paperclip as ft,Pin as yt,Plus as bt,SendHorizontal as kt,X as xt}from"lucide-react";import{useEffect as se,useId as Ze,useLayoutEffect as Ge,useRef as Q,useState as S}from"react";var He={pl:{inboxHeading:"Wiadomo\u015Bci",inboxIntro:"Rozmowy z tw\xF3rcami i kana\u0142y, do kt\xF3rych nale\u017Cysz.",inboxEmpty:"Nie masz jeszcze rozm\xF3w. Po zakupie pakietu konsultacji lub dost\u0119pu do spo\u0142eczno\u015Bci rozmowa pojawi si\u0119 tutaj.",inboxError:"Nie uda\u0142o si\u0119 wczyta\u0107 wiadomo\u015Bci.",loading:"Wczytywanie\u2026",retry:"Spr\xF3buj ponownie",back:"Wr\xF3\u0107",selectConversation:"Wybierz rozmow\u0119 z listy.",kindChat:"Czat",kindChannel:"Kana\u0142",startSection:"Do rozpocz\u0119cia",startChat:"Rozpocznij rozmow\u0119",openChannel:"Otw\xF3rz kana\u0142",channelNotReady:"Tw\xF3rca jeszcze nie otworzy\u0142 tego kana\u0142u.",chatFallbackTitle:"Czat z tw\xF3rc\u0105",channelFallbackTitle:"Kana\u0142",repliesLeftOne:"Zosta\u0142a {count} odpowied\u017A",repliesLeftFew:"Zosta\u0142y {count} odpowiedzi",repliesLeftMany:"Zosta\u0142o {count} odpowiedzi",noRepliesLeft:"Brak odpowiedzi w pakiecie",expiresOn:"Wa\u017Cny do {date}",expiredOn:"Wygas\u0142 {date}",responseHours:"Odpowied\u017A w ci\u0105gu {hours} h",unread:"Nieprzeczytane: {count}",members:"Cz\u0142onkowie: {count}",mutedBadge:"Wyciszony",noMessagesYet:"Brak wiadomo\u015Bci",emptyThread:"Napisz pierwsz\u0105 wiadomo\u015B\u0107. Tw\xF3rca odpowie w ramach Twojego pakietu.",emptyChannel:"W kanale nie ma jeszcze wiadomo\u015Bci.",privacyNote:"Wiadomo\u015Bci czyta druga strona rozmowy. Bitsnap przechowuje je przez 90 dni.",loadOlder:"Wcze\u015Bniejsze wiadomo\u015Bci",newMessages:"Nowe wiadomo\u015Bci \u2193",blockedNotice:"Tw\xF3rca zablokowa\u0142 mo\u017Cliwo\u015B\u0107 wysy\u0142ania wiadomo\u015Bci w tej rozmowie.",addAttachment:"Dodaj za\u0142\u0105cznik",photo:"Zdj\u0119cie",file:"Plik",removeAttachment:"Usu\u0144 za\u0142\u0105cznik",uploading:"Wysy\u0142anie pliku",attachmentLoadFailed:"Nie uda\u0142o si\u0119 wczyta\u0107 \u2014 pon\xF3w",you:"Ty",creator:"Tw\xF3rca",systemLabel:"Wiadomo\u015B\u0107 automatyczna",pinned:"Przypi\u0119ta",deletedPlaceholder:"Wiadomo\u015B\u0107 zosta\u0142a usuni\u0119ta",attachment:"Za\u0142\u0105cznik",composerLabel:"Wiadomo\u015B\u0107",composerPlaceholder:"Napisz wiadomo\u015B\u0107\u2026",send:"Wy\u015Blij",composerExpired:"Pakiet wygas\u0142, wi\u0119c nie mo\u017Cesz ju\u017C pisa\u0107 w tej rozmowie.",composerCreatorOnly:"W tym kanale pisze tylko tw\xF3rca.",composerMuted:"Masz wyciszone pisanie w tym kanale.",composerReadOnly:"Ten dost\u0119p pozwala tylko czyta\u0107.",lockRepliesTitle:"Odpowiedzi w pakiecie si\u0119 sko\u0144czy\u0142y",lockRepliesBody:"Mo\u017Cesz dalej pisa\u0107, ale tw\xF3rca odpowie dopiero po zakupie kolejnego pakietu.",lockExpiredTitle:"Pakiet wygas\u0142",lockExpiredBody:"Rozmowa zostaje do wgl\u0105du. Kup nowy pakiet, aby j\u0105 kontynuowa\u0107.",lockThreadTitle:"Nie masz pakietu odpowiedzi",lockThreadBody:"Kup pakiet, aby napisa\u0107 do tw\xF3rcy.",lockChannelTitle:"Kana\u0142 dla cz\u0142onk\xF3w",lockChannelBody:"Kup dost\u0119p, aby czyta\u0107 i pisa\u0107 w tym kanale.",buyPack:"Kup pakiet",buyAccess:"Kup dost\u0119p",buying:"Dodawanie do koszyka\u2026",buyError:"Nie uda\u0142o si\u0119 doda\u0107 do koszyka. Spr\xF3buj ponownie.",pending:"Wysy\u0142anie\u2026",notConfirmed:"Czekamy na potwierdzenie wys\u0142ania",rejectedLink:"Linki s\u0105 w tym kanale zablokowane. Usu\u0144 link i wy\u015Blij ponownie.",rejectedBannedWord:"Wiadomo\u015B\u0107 zawiera s\u0142owo zablokowane w tym kanale. Popraw j\u0105 i wy\u015Blij ponownie.",rejectedMedia:"Za\u0142\u0105czniki s\u0105 w tym kanale zablokowane.",rejectedCooldown:"Piszesz za szybko. Spr\xF3buj ponownie za {seconds} s.",rejectedBlocked:"Tw\xF3rca zablokowa\u0142 Ci mo\u017Cliwo\u015B\u0107 pisania w tym sklepie.",rejectedMuted:"Masz wyciszone pisanie w tym kanale.",rejectedReadOnly:"Ten dost\u0119p pozwala tylko czyta\u0107.",rejectedPackEmpty:"Pakiet nie ma ju\u017C odpowiedzi.",rejectedForbidden:"Nie mo\u017Cesz pisa\u0107 w tej rozmowie.",rejectedGeneric:"Nie uda\u0142o si\u0119 wys\u0142a\u0107 wiadomo\u015Bci.",failedNetwork:"Brak po\u0142\u0105czenia. Wiadomo\u015B\u0107 nie zosta\u0142a wys\u0142ana.",editMessage:"Popraw",retrySend:"Wy\u015Blij ponownie",dismiss:"Odrzu\u0107",messageActions:"Opcje wiadomo\u015Bci",deleteMessage:"Usu\u0144 wiadomo\u015B\u0107",deleteConfirm:"Na pewno usun\u0105\u0107?",reportMessage:"Zg\u0142o\u015B wiadomo\u015B\u0107",conversationActions:"Opcje rozmowy",muteThread:"Wycisz powiadomienia",unmuteThread:"W\u0142\u0105cz powiadomienia",muteError:"Nie uda\u0142o si\u0119 zmieni\u0107 powiadomie\u0144.",reportConversation:"Zg\u0142o\u015B rozmow\u0119",reportTitle:"Zg\u0142o\u015B wiadomo\u015B\u0107",reportConversationTitle:"Zg\u0142o\u015B rozmow\u0119",reportReason:"Pow\xF3d zg\u0142oszenia",reasonSpam:"Spam",reasonAbuse:"N\u0119kanie lub obra\u017Aliwe tre\u015Bci",reasonIllegal:"Tre\u015Bci niezgodne z prawem",reasonOther:"Inny pow\xF3d",reportNote:"Opis (opcjonalnie)",reportSend:"Wy\u015Blij zg\u0142oszenie",reportCancel:"Anuluj",reportSent:"Dzi\u0119kujemy. Zg\u0142oszenie trafi\u0142o do moderacji.",reportError:"Nie uda\u0142o si\u0119 wys\u0142a\u0107 zg\u0142oszenia. Spr\xF3buj ponownie.",liveLabel:"Nowe wiadomo\u015Bci pojawiaj\u0105 si\u0119 na bie\u017C\u0105co",pollingLabel:"Nowe wiadomo\u015Bci od\u015Bwie\u017Caj\u0105 si\u0119 co kilka sekund",errorNoToken:"Zaloguj si\u0119 w panelu klienta, aby zobaczy\u0107 rozmow\u0119.",errorUnauthorized:"Sesja wygas\u0142a. Zaloguj si\u0119 ponownie.",errorPlan:"Czat nie jest dost\u0119pny w tym sklepie.",errorNotFound:"Nie znaleziono tej rozmowy.",errorUnavailable:"Czat jest chwilowo niedost\u0119pny. Spr\xF3buj za chwil\u0119.",errorGeneric:"Nie uda\u0142o si\u0119 wczyta\u0107 rozmowy.",paymentRequestPay:"Zap\u0142a\u0107 {amount}",paymentRequestChooseAmount:"Wybierz kwot\u0119 i zap\u0142a\u0107",paymentRequestPaid:"Op\u0142acone",paymentRequestExpired:"Pro\u015Bba wygas\u0142a",paymentRequestCancelled:"Pro\u015Bba anulowana",paymentRequestValidUntil:"Wa\u017Cna do {date}",paymentRequestRepliesOne:"+{count} odpowied\u017A",paymentRequestRepliesFew:"+{count} odpowiedzi",paymentRequestRepliesMany:"+{count} odpowiedzi",paymentRequestExtensionOne:"+{count} dzie\u0144 wa\u017Cno\u015Bci",paymentRequestExtensionFew:"+{count} dni wa\u017Cno\u015Bci",paymentRequestExtensionMany:"+{count} dni wa\u017Cno\u015Bci",paymentRequestRange:"od {min} do {max}",paymentRequestFallback:"Pro\u015Bba o p\u0142atno\u015B\u0107 \u2014 od\u015Bwie\u017C czat, aby j\u0105 zobaczy\u0107",paymentRequestPreview:"Pro\u015Bba o p\u0142atno\u015B\u0107"},en:{inboxHeading:"Messages",inboxIntro:"Your conversations with creators and the channels you belong to.",inboxEmpty:"No conversations yet. When you buy a consultation pack or community access, it shows up here.",inboxError:"Your messages could not be loaded.",loading:"Loading\u2026",retry:"Try again",back:"Back",selectConversation:"Pick a conversation from the list.",kindChat:"Chat",kindChannel:"Channel",startSection:"Ready to start",startChat:"Start the conversation",openChannel:"Open the channel",channelNotReady:"The creator has not opened this channel yet.",chatFallbackTitle:"Chat with the creator",channelFallbackTitle:"Channel",repliesLeftOne:"{count} reply left",repliesLeftFew:"{count} replies left",repliesLeftMany:"{count} replies left",noRepliesLeft:"No replies left in your pack",expiresOn:"Valid until {date}",expiredOn:"Expired on {date}",responseHours:"Replies within {hours} h",unread:"Unread: {count}",members:"Members: {count}",mutedBadge:"Muted",noMessagesYet:"No messages yet",emptyThread:"Write the first message. The creator replies within your pack.",emptyChannel:"There are no messages in this channel yet.",privacyNote:"The other side of the conversation reads your messages. Bitsnap keeps them for 90 days.",loadOlder:"Earlier messages",newMessages:"New messages \u2193",blockedNotice:"The creator has blocked you from sending messages in this conversation.",addAttachment:"Add attachment",photo:"Photo",file:"File",removeAttachment:"Remove attachment",uploading:"Uploading file",attachmentLoadFailed:"Could not load \u2014 retry",you:"You",creator:"Creator",systemLabel:"Automatic message",pinned:"Pinned",deletedPlaceholder:"This message was deleted",attachment:"Attachment",composerLabel:"Message",composerPlaceholder:"Write a message\u2026",send:"Send",composerExpired:"Your pack has expired, so you can no longer write here.",composerCreatorOnly:"Only the creator posts in this channel.",composerMuted:"You are muted in this channel.",composerReadOnly:"This access is read only.",lockRepliesTitle:"Your pack has no replies left",lockRepliesBody:"You can keep writing, but the creator can reply only after you buy another pack.",lockExpiredTitle:"Your pack has expired",lockExpiredBody:"You can still read the conversation. Buy a new pack to continue it.",lockThreadTitle:"You have no reply pack",lockThreadBody:"Buy a pack to write to the creator.",lockChannelTitle:"Members-only channel",lockChannelBody:"Buy access to read and post in this channel.",buyPack:"Buy a pack",buyAccess:"Buy access",buying:"Adding to cart\u2026",buyError:"Could not add it to the cart. Try again.",pending:"Sending\u2026",notConfirmed:"Waiting for the send to be confirmed",rejectedLink:"Links are blocked in this channel. Remove the link and send again.",rejectedBannedWord:"Your message contains a word blocked in this channel. Edit it and send again.",rejectedMedia:"Attachments are blocked in this channel.",rejectedCooldown:"You are posting too fast. Try again in {seconds} s.",rejectedBlocked:"The creator has blocked you from posting in this shop.",rejectedMuted:"You are muted in this channel.",rejectedReadOnly:"This access is read only.",rejectedPackEmpty:"The pack has no replies left.",rejectedForbidden:"You cannot post in this conversation.",rejectedGeneric:"Your message could not be sent.",failedNetwork:"No connection. Your message was not sent.",editMessage:"Edit",retrySend:"Send again",dismiss:"Discard",messageActions:"Message options",deleteMessage:"Delete message",deleteConfirm:"Delete for sure?",reportMessage:"Report message",conversationActions:"Conversation options",muteThread:"Mute notifications",unmuteThread:"Unmute notifications",muteError:"Notifications could not be changed.",reportConversation:"Report conversation",reportTitle:"Report message",reportConversationTitle:"Report conversation",reportReason:"Reason",reasonSpam:"Spam",reasonAbuse:"Harassment or abusive content",reasonIllegal:"Illegal content",reasonOther:"Something else",reportNote:"Details (optional)",reportSend:"Send report",reportCancel:"Cancel",reportSent:"Thank you. Your report went to moderation.",reportError:"Your report could not be sent. Try again.",liveLabel:"New messages appear live",pollingLabel:"New messages refresh every few seconds",errorNoToken:"Log in to the customer panel to see this conversation.",errorUnauthorized:"Your session has expired. Log in again.",errorPlan:"Chat is not available in this shop.",errorNotFound:"This conversation was not found.",errorUnavailable:"Chat is unavailable right now. Try again in a moment.",errorGeneric:"The conversation could not be loaded.",paymentRequestPay:"Pay {amount}",paymentRequestChooseAmount:"Choose an amount and pay",paymentRequestPaid:"Paid",paymentRequestExpired:"Request expired",paymentRequestCancelled:"Request cancelled",paymentRequestValidUntil:"Valid until {date}",paymentRequestRepliesOne:"+{count} reply",paymentRequestRepliesFew:"+{count} replies",paymentRequestRepliesMany:"+{count} replies",paymentRequestExtensionOne:"+{count} day of validity",paymentRequestExtensionFew:"+{count} days of validity",paymentRequestExtensionMany:"+{count} days of validity",paymentRequestRange:"from {min} to {max}",paymentRequestFallback:"Payment request \u2014 refresh chat to see it",paymentRequestPreview:"Payment request"}};function re(e,t=X()){return Oe(He,t,e)}function K(e,t){return e.replace(/\{(\w+)\}/g,(n,a)=>a in t?String(t[a]):n)}function ce(e,t,n=X()){if(t<=0)return e.noRepliesLeft;let a="other";try{a=new Intl.PluralRules(n).select(t)}catch{}let r=a==="one"?e.repliesLeftOne:a==="few"?e.repliesLeftFew:e.repliesLeftMany;return K(r,{count:t})}function oe(e,t=X()){let n=new Date(e);return Number.isNaN(n.getTime())?"":new Intl.DateTimeFormat(t,{day:"numeric",month:"numeric",year:"numeric"}).format(n)}function be(e,t=X(),n=new Date){let a=new Date(e);if(Number.isNaN(a.getTime()))return"";let r=a.toDateString()===n.toDateString();return new Intl.DateTimeFormat(t,r?{hour:"2-digit",minute:"2-digit"}:{day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"}).format(a)}function We(e,t,n){switch(t){case"moderation_link":return e.rejectedLink;case"moderation_banned_word":return e.rejectedBannedWord;case"moderation_media":return e.rejectedMedia;case"cooldown":return K(e.rejectedCooldown,{seconds:n??30});case"blocked":return e.rejectedBlocked;case"muted":return e.rejectedMuted;case"read_only":return e.rejectedReadOnly;case"pack_empty":case"replies_exhausted":return e.rejectedPackEmpty;case"forbidden":case"locked":return e.rejectedForbidden;case"network":case"unavailable":return e.failedNetwork;default:return e.rejectedGeneric}}import{Fragment as Xe,jsx as o,jsxs as N}from"react/jsx-runtime";var ke="focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-neutral-500";function Ke(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Je(e=0){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(0)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function Pe(e,t){typeof e.scrollTo=="function"?e.scrollTo({top:e.scrollHeight,behavior:t?"smooth":"auto"}):e.scrollTop=e.scrollHeight}var Z=z("inline-flex min-h-11 items-center gap-2 rounded-md px-3 text-sm text-neutral-700 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800",ke),xe=z("inline-flex min-h-11 items-center justify-center gap-2 rounded-md bg-neutral-900 px-4 text-sm font-medium text-white hover:bg-neutral-800 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-white dark:text-neutral-900 dark:hover:bg-neutral-200",ke);function ze({host:e,conversation:t,texts:n,locale:a,kind:r,title:d,onBack:y,onBuy:p,className:l}){let[i,g]=S(!1),[x,k]=S(null),[v,f]=S(),[T,C]=S(""),[h,b]=S(!1);se(()=>{if(!h)return;let R=setTimeout(()=>b(!1),6e3);return()=>clearTimeout(R)},[h]);let _=d||t.channel?.name||(r==="channel"?n.channelFallbackTitle:n.chatFallbackTitle),E=wt(t,n,a);return N("section",{"data-bitsnap-chat":r,"aria-label":_,className:z("flex h-full min-h-[28rem] w-full min-w-0 flex-col overflow-hidden rounded-xl border border-neutral-200 bg-white text-neutral-900 dark:border-neutral-800 dark:bg-neutral-900 dark:text-neutral-50",l),children:[N("header",{className:"flex items-start gap-2 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800",children:[y&&o("button",{type:"button",onClick:y,"aria-label":n.back,className:z(Z,"w-11 justify-center px-0"),children:o(mt,{className:"size-5","aria-hidden":"true"})}),N("div",{className:"min-w-0 flex-1 py-1.5",children:[N("h2",{className:"flex items-center gap-2 text-base font-semibold",children:[o("span",{className:"truncate",children:_}),o(Ct,{live:t.live,texts:n})]}),E.length>0&&o("p",{className:"mt-0.5 flex flex-wrap gap-x-3 gap-y-0.5 text-xs text-neutral-600 dark:text-neutral-400",children:E.map(R=>o("span",{children:R},R))})]}),t.status==="ready"&&o("button",{type:"button","aria-label":n.conversationActions,"aria-expanded":i,onClick:()=>g(R=>!R),className:z(Z,"w-11 justify-center px-0"),children:o(Ve,{className:"size-5","aria-hidden":"true"})})]}),i&&t.status==="ready"&&N("div",{className:"flex flex-wrap gap-1 border-b border-neutral-200 bg-neutral-50 px-3 py-1 dark:border-neutral-800 dark:bg-neutral-950",children:[r==="thread"&&t.thread&&o("button",{type:"button",className:Z,onClick:async()=>{g(!1);try{await t.setMuted(!t.thread.muted),f(void 0)}catch{f(n.muteError)}},children:t.thread.muted?n.unmuteThread:n.muteThread}),o("button",{type:"button",className:Z,onClick:()=>{g(!1),k({})},children:n.reportConversation})]}),t.status==="loading"&&o(vt,{texts:n}),t.status==="error"&&o(Nt,{conversation:t,texts:n}),t.status==="locked"&&t.lock&&o("div",{className:"flex flex-1 flex-col justify-center overflow-y-auto p-4",children:o(Ye,{host:e,lock:t.lock,kind:r,texts:n,locale:a,onBuy:p,prominent:!0})}),t.status==="ready"&&N(Xe,{children:[o(Mt,{conversation:t,texts:n,locale:a,kind:r,onReport:R=>k({messageId:R}),onEdit:R=>{C(R.body),t.discard(R.id)}}),v&&o("p",{role:"status",className:"px-4 pb-2 text-xs text-red-700 dark:text-red-400",children:v}),t.lock&&o("div",{className:"border-t border-neutral-200 p-3 dark:border-neutral-800",children:o(Ye,{host:e,lock:t.lock,kind:r,texts:n,locale:a,onBuy:p})}),x?o(Lt,{texts:n,messageId:x.messageId,onCancel:()=>k(null),onSubmit:async(R,w)=>{await t.report({messageId:x.messageId,reason:R,note:w}),k(null),f(void 0),b(!0)}}):o(zt,{conversation:t,texts:n,kind:r,draft:T,setDraft:C})]}),h&&o("p",{role:"status",className:"border-t border-neutral-200 px-4 py-2 text-xs text-neutral-700 dark:border-neutral-800 dark:text-neutral-300",children:n.reportSent})]})}function wt(e,t,n){let a=[];if(e.thread&&e.thread.kind==="pack"){if(a.push(ce(t,e.thread.repliesLeft,n)),e.thread.expiresAt){let r=oe(e.thread.expiresAt,n);a.push(K(e.thread.composerLocked?t.expiredOn:t.expiresOn,{date:r}))}e.thread.responseHours>0&&a.push(K(t.responseHours,{hours:e.thread.responseHours})),e.thread.muted&&a.push(t.mutedBadge)}return e.channel&&(e.channel.topic&&a.push(e.channel.topic),e.channel.memberCount>0&&a.push(K(t.members,{count:e.channel.memberCount}))),a}function Ct({live:e,texts:t}){if(e!=="live"&&e!=="polling")return null;let n=e==="live"?t.liveLabel:t.pollingLabel;return o("span",{title:n,"data-live":e,className:z("inline-block size-2 shrink-0 rounded-full",e==="live"?"bg-emerald-500":"bg-neutral-400 dark:bg-neutral-500"),children:o("span",{className:"sr-only",children:n})})}function vt({texts:e}){return o("div",{role:"status","aria-busy":"true","aria-label":e.loading,className:"flex flex-1 flex-col gap-3 p-4",children:[60,40,70].map((t,n)=>o("div",{"aria-hidden":"true",style:{width:`${t}%`},className:z("h-10 rounded-2xl bg-neutral-100 motion-safe:animate-pulse dark:bg-neutral-800",n===1&&"self-end")},n))})}function Tt(e,t){switch(e){case"no_token":return t.errorNoToken;case"unauthorized":return t.errorUnauthorized;case"plan_required":return t.errorPlan;case"not_found":return t.errorNotFound;case"unavailable":case"network":return t.errorUnavailable;default:return t.errorGeneric}}function Nt({conversation:e,texts:t}){let n=e.error?.code??"",a=n!=="no_token"&&n!=="plan_required"&&n!=="unauthorized";return N("div",{role:"alert",className:"flex flex-1 flex-col items-start justify-center gap-3 p-4",children:[o("p",{className:"text-sm text-neutral-700 dark:text-neutral-300",children:Tt(n,t)}),a&&o("button",{type:"button",className:xe,onClick:e.reload,children:t.retry})]})}function Ye({host:e,lock:t,kind:n,texts:a,locale:r,onBuy:d,prominent:y}){let[p,l]=S(!1),[i,g]=S(""),[x,k]=S(String((t.priceCents??0)/100)),v=x.trim().replace(",","."),f=/^\d+(\.\d{0,2})?$/.test(v)?Math.round(Number(v)*100):NaN,T=t.priceType==="pay_what_you_want",C=t.minimumCents??0,h=t.maximumCents??Number.MAX_SAFE_INTEGER,b=Number.isInteger(f)&&f>=C&&f<=h&&(f>0||t.freeClaimLimit!=null),_=t.freeClaimLimit!=null&&(t.priceType==="free"||T&&C===0&&f===0),[E,R]=S(""),[w,c]=S(""),[L,q]=S(!1),[I,P]=S(null),[u,s]=S(0),[m,j]=S(0),B=Q(null);se(()=>{L&&B.current?.focus()},[L]),se(()=>{if(m<=0)return;let A=window.setTimeout(()=>j(m-1),1e3);return()=>window.clearTimeout(A)},[m]);let D=()=>{q(!1),c(""),P(null),s(A=>A+1),g("")},F=r.toLowerCase().startsWith("en"),[Y,O]=t.reason==="replies"?[a.lockRepliesTitle,a.lockRepliesBody]:t.reason==="expired"?[a.lockExpiredTitle,a.lockExpiredBody]:n==="channel"?[a.lockChannelTitle,a.lockChannelBody]:[a.lockThreadTitle,a.lockThreadBody],J=n==="channel"?a.buyAccess:a.buyPack,ne=d!=null&&t.productId!=null;return N("div",{"data-testid":"chat-lock","data-lock":t.reason,className:z("flex gap-3 rounded-xl bg-neutral-100 p-3 dark:bg-neutral-800",y?"flex-col items-start p-5":"flex-col sm:flex-row sm:items-center"),children:[o(gt,{className:z("shrink-0 text-neutral-500 dark:text-neutral-400",y?"size-6":"hidden size-5 sm:block"),"aria-hidden":"true"}),N("div",{className:"min-w-0 flex-1",children:[o("p",{className:z("font-semibold",y?"text-lg":"text-sm"),children:Y}),o("p",{className:"mt-0.5 text-sm text-neutral-600 dark:text-neutral-300",children:O}),_&&N("div",{className:"mt-3 grid max-w-sm gap-2",children:[N("label",{className:"grid gap-1 text-sm",children:[o("span",{children:F?"Email":"E-mail"}),o("input",{type:"email",autoComplete:"email",value:E,onChange:A=>{R(A.currentTarget.value),D()},disabled:p,className:"h-11 rounded-md border border-neutral-300 bg-white px-3 text-neutral-900 dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-50"})]}),L?N("label",{className:"grid gap-1 text-sm",children:[o("span",{children:F?"Email code":"Kod z\xA0e-maila"}),o("input",{ref:B,inputMode:"numeric",autoComplete:"one-time-code",value:w,onChange:A=>c(A.currentTarget.value),className:"h-11 rounded-md border border-neutral-300 bg-white px-3 text-neutral-900 dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-50"})]}):E.includes("@")?o(Fe,{host:e,action:"free_chat_claim",locale:r,onToken:P,onFailure:()=>P(null)},u):null,L&&N("button",{type:"button",disabled:p||m>0,className:"min-h-11 text-sm underline disabled:opacity-50",onClick:D,children:[F?"Request a new code":"Popro\u015B o\xA0nowy kod",m>0?` (${m}s)`:""]})]}),T&&N("label",{className:"mt-3 grid max-w-xs gap-1 text-sm",children:[o("span",{children:F?`Amount (${(C/100).toFixed(2)}\u2013${Number.isFinite(h)?(h/100).toFixed(2):"\u221E"} PLN)`:`Kwota (${(C/100).toFixed(2)}\u2013${Number.isFinite(h)?(h/100).toFixed(2):"\u221E"} z\u0142)`}),o("input",{"aria-label":F?"Amount":"Kwota",inputMode:"decimal",type:"text",min:C/100,max:Number.isFinite(h)?h/100:void 0,step:"0.01",value:x,onChange:A=>k(A.currentTarget.value),onBlur:()=>{Number.isFinite(f)&&k((f/100).toFixed(2))},className:"h-11 rounded-md border border-neutral-300 bg-white px-3 text-neutral-900 dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-50"}),!b&&o("span",{role:"alert",className:"text-xs text-red-700 dark:text-red-400",children:F?f===0&&t.freeClaimLimit==null?"Free claims are unavailable. Enter a positive amount.":"Enter an amount within the range.":f===0&&t.freeClaimLimit==null?"Darmowy odbi\xF3r jest niedost\u0119pny. Wpisz kwot\u0119 wi\u0119ksz\u0105 od zera.":"Kwota musi mie\u015Bci\u0107 si\u0119 w\xA0podanym zakresie."})]}),t.welcome&&o("p",{className:"mt-3 whitespace-pre-wrap text-sm",children:t.welcome}),i&&o("p",{role:"alert",className:"mt-2 text-sm text-red-700 dark:text-red-400",children:i})]}),ne&&o("button",{type:"button",className:z(xe,"shrink-0"),disabled:p||T&&!b||_&&(!E.includes("@")||!L&&I===null||L&&!w),"aria-busy":p||void 0,onClick:async()=>{l(!0),g("");try{_?(await d({...t,...T?{amount:f}:{},email:E,...L?{code:w}:{turnstileToken:I}}),L||(q(!0),j(60))):await d({...t,...T?{amount:f}:{}})}catch(A){g(At(A,r,a.buyError)),L||(P(null),s(fe=>fe+1))}finally{l(!1)}},children:p?a.buying:T?F?"Choose what you pay":"Kup pakiet, p\u0142ac\u0105c, ile chcesz":_?L?F?"Claim for free":"Odbierz za darmo":F?"Send code":"Wy\u015Blij kod":J})]})}function Rt(e,t,n,a){return t?a.you:n==="thread"?a.creator:e.authorEmail.split("@")[0]||a.creator}function Mt({conversation:e,texts:t,locale:n,kind:a,onReport:r,onEdit:d}){let y=Q(null),p=Q(!0),l=Q(!1),i=Q(null),g=Q(null),[x,k]=S(()=>new Set),[v,f]=S(!1),T=e.messages.length,C=e.messages[T-1]?.id;return se(()=>{if(e.status!=="ready")return;let h=new Set(e.messages.map(w=>w.id)),b=i.current;i.current=h;let _=e.messages.reduce((w,c)=>w==null||c.createdAt<w?c.createdAt:w,null),E=g.current;if(g.current=_,!b)return;let R=e.messages.filter(w=>!b.has(w.id)&&(E==null||w.createdAt>=E));!R.length||e.loadingOlder||(k(w=>new Set([...w,...R.map(c=>c.id)])),p.current?f(!1):f(!0))},[e.messages,e.loadingOlder]),Ge(()=>{let h=y.current;if(h){if(p.current){let b=Ke();Pe(h,!b&&l.current)}l.current=!0}},[T,C]),N("div",{className:"relative flex min-h-0 flex-1 flex-col",children:[v&&o("button",{type:"button",onClick:()=>{let h=y.current;h&&Pe(h,!Ke()),p.current=!0,f(!1)},className:"absolute bottom-3 left-1/2 z-10 -translate-x-1/2 rounded-full bg-neutral-900 px-3 py-1.5 text-xs font-medium text-white shadow-md dark:bg-neutral-100 dark:text-neutral-900",children:t.newMessages??"Nowe wiadomo\u015Bci \u2193"}),N("div",{ref:y,role:"log","aria-live":"polite","aria-relevant":"additions",onLoadCapture:()=>{let h=y.current;h&&p.current&&Pe(h,!1)},onScroll:h=>{let b=h.currentTarget;p.current=b.scrollHeight-b.scrollTop-b.clientHeight<80},className:"flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto overscroll-contain px-3 py-4 sm:px-4",children:[e.hasMore&&o("button",{type:"button",onClick:()=>{p.current=!1,e.loadOlder()},disabled:e.loadingOlder,className:z(Z,"self-center text-xs"),children:e.loadingOlder?t.loading:t.loadOlder}),T===0&&N("div",{className:"m-auto max-w-sm text-center","data-testid":"chat-empty",children:[o("p",{className:"text-sm font-medium",children:t.noMessagesYet}),o("p",{className:"mt-1 text-sm text-neutral-600 dark:text-neutral-400",children:a==="channel"?t.emptyChannel:t.emptyThread}),e.channel?.welcome&&o("p",{className:"mt-3 whitespace-pre-wrap text-sm",children:e.channel.welcome})]}),e.messages.map(h=>o(It,{message:h,mine:h.authorEmail.toLowerCase()===e.me,kind:a,texts:t,locale:n,getAttachmentURL:e.getAttachmentURL,animateEntry:x.has(h.id),onDelete:()=>e.deleteMessage(h.id),onReport:()=>r(h.id),onRetry:()=>void e.retry(h.id),onDiscard:()=>e.discard(h.id),onEdit:()=>d(h)},h.id))]})]})}function It({message:e,mine:t,kind:n,texts:a,locale:r,getAttachmentURL:d,animateEntry:y=!1,onDelete:p,onReport:l,onRetry:i,onDiscard:g,onEdit:x}){let[k,v]=S(!1),[f,T]=S(!1),[C,h]=S(),[b,_]=S(!1),[E,R]=S(0),w=Q(0),c=()=>{h(void 0),_(!1),R(s=>s+1)},L=async s=>{if(C&&Date.now()<w.current)return;s.preventDefault();let m=window.open("about:blank","_blank");m&&(m.opener=null);try{let j=await d(e);w.current=Date.now()+5e4,h(j),m&&(m.location.href=j)}catch{m?.close(),_(!0)}},q=e.local;if(se(()=>{if(!e.attachmentKey||e.deleted||e.local)return;let s=!1;return _(!1),d(e).then(m=>{s||(w.current=Date.now()+5e4,h(m))}).catch(()=>{s||_(!0)}),()=>{s=!0}},[e.attachmentKey,e.deleted,!!e.local,d,E]),e.system)return N("div",{"data-message-id":e.id,className:"mx-auto max-w-md text-center text-xs text-neutral-600 dark:text-neutral-400",children:[o("span",{className:"font-medium",children:a.systemLabel}),e.body&&o("p",{className:"mt-0.5 whitespace-pre-wrap",children:e.body})]});let I=q?.state==="rejected"||q?.state==="failed",P=q?.state==="pending"||q?.state==="unconfirmed",u=!q&&!e.deleted;return N("div",{"data-message-id":e.id,"data-state":q?.state??(e.deleted?"deleted":"stored"),className:z("group flex max-w-[85%] flex-col gap-1 sm:max-w-[75%]",y&&"motion-safe:animate-[bitsnap-chat-message-enter_190ms_ease-out]",t?"items-end self-end":"items-start self-start"),children:[N("div",{className:z("flex items-end gap-1",t&&"flex-row-reverse"),children:[o("div",{className:z("min-w-0 rounded-2xl px-3.5 py-2 text-sm leading-relaxed transition-opacity duration-200 ease-out motion-reduce:transition-none",e.deleted?"border border-dashed border-neutral-300 bg-transparent italic text-neutral-500 dark:border-neutral-700 dark:text-neutral-400":t?"bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900":"bg-neutral-100 text-neutral-900 dark:bg-neutral-800 dark:text-neutral-50",P&&"opacity-70",I&&"border border-red-600 dark:border-red-400"),children:e.deleted?a.deletedPlaceholder:e.kind==="payment_request"?o(jt,{message:e,mine:t,texts:a,locale:r}):N(Xe,{children:[o("p",{className:"whitespace-pre-wrap break-words",children:e.body}),!e.deleted&&e.attachmentName&&(e.attachmentKind==="image"?b?o("button",{type:"button",onClick:c,className:"mt-2 text-xs underline",children:a.attachmentLoadFailed}):C?o("a",{href:C,onClick:L,target:"_blank",rel:"noreferrer",children:o("img",{src:C,onError:()=>{Date.now()>=w.current?c():(h(void 0),_(!0))},alt:e.attachmentName,className:"mt-2 max-h-48 rounded-lg object-cover"})}):o("div",{role:"status","aria-label":a.loading,className:"mt-2 h-32 w-48 animate-pulse rounded-lg bg-current/10 motion-reduce:animate-none"}):N("a",{href:C??"#",onClick:L,download:e.attachmentName,className:"mt-2 flex max-w-56 items-center gap-2 rounded-lg border border-neutral-300/60 px-2 py-1.5 text-xs dark:border-neutral-700",children:[o(ft,{className:"size-3.5 shrink-0","aria-hidden":"true"}),o("span",{className:"min-w-0 flex-1 truncate",children:e.attachmentName}),o("span",{children:Je(e.attachmentSize)})]})),b&&e.attachmentKind!=="image"&&o("button",{type:"button",onClick:c,className:"mt-1 text-xs underline",children:a.attachmentLoadFailed}),e.attachmentName&&q?.state==="pending"&&q.uploadProgress!=null&&N("p",{className:"mt-1 text-[11px] opacity-75",children:[a.uploading," ",q.uploadProgress,"%"]})]})}),u&&o("button",{type:"button","aria-label":a.messageActions,"aria-expanded":k,onClick:()=>{v(s=>!s),T(!1)},className:z("inline-flex size-11 shrink-0 items-center justify-center rounded-md text-neutral-500 opacity-100 hover:bg-neutral-100 sm:opacity-0 sm:group-hover:opacity-100 sm:focus-visible:opacity-100 dark:text-neutral-400 dark:hover:bg-neutral-800",k&&"sm:opacity-100",ke),children:o(Ve,{className:"size-4","aria-hidden":"true"})})]}),N("p",{className:"flex items-center gap-1.5 px-1 text-[11px] text-neutral-500 dark:text-neutral-400",children:[e.pinned&&N("span",{className:"inline-flex items-center gap-0.5",children:[o(yt,{className:"size-3","aria-hidden":"true"}),a.pinned]}),o("span",{children:Rt(e,t,n,a)}),o("span",{"aria-hidden":"true",children:"\xB7"}),P?N("span",{className:"inline-flex items-center gap-1",children:[o(pt,{className:"size-3","aria-hidden":"true"}),q?.state==="pending"?a.pending:a.notConfirmed]}):o("time",{dateTime:e.createdAt,children:be(e.createdAt,r)})]}),I&&N("div",{role:"alert",className:z("flex flex-col gap-1",t?"items-end":"items-start"),children:[N("p",{className:"flex items-start gap-1 text-xs text-red-700 dark:text-red-400",children:[o(ut,{className:"mt-px size-3.5 shrink-0","aria-hidden":"true"}),We(a,q?.reason??"",q?.retryAfter)]}),N("div",{className:"flex flex-wrap gap-1",children:[q?.state==="failed"||q?.reason==="cooldown"?o("button",{type:"button",className:z(Z,"text-xs"),onClick:i,children:a.retrySend}):o("button",{type:"button",className:z(Z,"text-xs"),onClick:x,children:a.editMessage}),o("button",{type:"button",className:z(Z,"text-xs"),onClick:g,children:a.dismiss})]})]}),k&&u&&o("div",{className:"flex flex-wrap gap-1",children:t?o("button",{type:"button",className:z(Z,"text-xs text-red-700 dark:text-red-400"),onClick:async()=>{if(!f){T(!0);return}v(!1),await p().catch(()=>{})},children:f?a.deleteConfirm:a.deleteMessage}):o("button",{type:"button",className:z(Z,"text-xs"),onClick:()=>{v(!1),l()},children:a.reportMessage})})]})}function jt({message:e,mine:t,texts:n,locale:a}){let r=e.paymentRequest;if(!r||e.paymentRequestInvalid)return o("article",{"aria-label":n.paymentRequestFallback,className:"min-w-0 max-w-full text-sm",children:n.paymentRequestFallback});let y=r.status==="expired"||r.status==="pending"&&Date.parse(r.expiresAt)<=Date.now()?"expired":r.status,p=r.amountMode==="exact"?ye(r.amountMinor,r.currency,a):K(n.paymentRequestRange,{min:ye(r.minAmountMinor??0,r.currency,a),max:ye(r.maxAmountMinor??0,r.currency,a)}),l=(g,x,k,v)=>{let f="other";try{f=new Intl.PluralRules(a).select(g)}catch{}return K(f==="one"?x:f==="few"?k:v,{count:g})},i=y==="paid"?n.paymentRequestPaid:y==="expired"?n.paymentRequestExpired:y==="cancelled"?n.paymentRequestCancelled:void 0;return N("article",{"aria-label":r.title,className:"w-full min-w-0 max-w-full rounded-lg border border-neutral-300 bg-white p-3 text-left text-neutral-900 shadow-sm dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-100",children:[o("h3",{className:"break-words text-sm font-semibold",children:r.title}),r.description&&o("p",{className:"mt-1 max-h-24 overflow-hidden whitespace-pre-wrap break-words text-xs text-neutral-600 dark:text-neutral-300",children:r.description}),o("p",{className:"mt-2 break-words text-base font-semibold",children:p}),N("ul",{className:"mt-1 flex flex-wrap gap-x-3 gap-y-1 text-xs text-neutral-600 dark:text-neutral-300",children:[o("li",{children:l(r.extraReplies,n.paymentRequestRepliesOne,n.paymentRequestRepliesFew,n.paymentRequestRepliesMany)}),r.extendExpiryDays>0&&o("li",{children:l(r.extendExpiryDays,n.paymentRequestExtensionOne,n.paymentRequestExtensionFew,n.paymentRequestExtensionMany)})]}),y==="pending"&&o("p",{className:"mt-2 text-xs text-neutral-500 dark:text-neutral-400",children:K(n.paymentRequestValidUntil,{date:oe(r.expiresAt,a)})}),i?N("p",{className:"mt-3 inline-flex items-center gap-1 rounded-full bg-neutral-100 px-2.5 py-1 text-xs font-medium text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300",children:[y==="paid"&&o(ht,{className:"size-3.5","aria-hidden":"true"}),i]}):!t&&y==="pending"?o("button",{type:"button",onClick:()=>window.open(r.paymentUrl,"_blank","noopener,noreferrer"),className:z("mt-3 flex min-h-11 w-full items-center justify-center rounded-md bg-blue-600 px-3 py-2 text-sm font-semibold text-white hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-400",ke),children:r.amountMode==="exact"?K(n.paymentRequestPay,{amount:p}):n.paymentRequestChooseAmount}):null]})}function Pt(e,t,n){if(t==="thread"&&e.thread?.blocked)return n.blockedNotice;if(t==="thread"&&e.thread?.composerLocked)return n.composerExpired;if(t==="channel"&&e.channel){if(e.channel.role==="muted")return n.composerMuted;if(e.channel.whoCanPost==="creator"&&e.channel.role!=="creator")return n.composerCreatorOnly}}function zt({conversation:e,texts:t,kind:n,draft:a,setDraft:r}){let d=Ze(),y=Q(null),p=Q(null),l=Q(null),[i,g]=S(),[x,k]=S(!1),[v,f]=S(!1),[T,C]=S(".pdf,.zip,.txt,.docx,.xlsx"),h=Pt(e,n,t);se(()=>()=>{l.current&&clearTimeout(l.current)},[]);let b=w=>{l.current&&clearTimeout(l.current),l.current=null,k(!1),g(w)},_=()=>{!i||x||(k(!0),l.current=setTimeout(()=>{g(void 0),k(!1),l.current=null},140))};if(Ge(()=>{let w=y.current;w&&(w.style.height="auto",w.style.height=`${Math.min(w.scrollHeight,160)}px`)},[a]),h)return o("p",{"data-testid":"chat-composer-blocked",className:"border-t border-neutral-200 px-4 py-3 text-sm text-neutral-600 dark:border-neutral-800 dark:text-neutral-400",children:h});let E=w=>{w?.preventDefault();let c=a.trim();!c&&!i||(r(""),g(void 0),e.send(c,i),requestAnimationFrame(()=>y.current?.focus()))},R=w=>{w.key==="Enter"&&!w.shiftKey&&!w.nativeEvent.isComposing&&(w.preventDefault(),E())};return N("form",{onSubmit:E,className:"border-t border-neutral-200 px-3 pb-3 pt-2 dark:border-neutral-800",children:[e.messages.length===0&&o("p",{className:"pb-2 text-xs text-neutral-500 dark:text-neutral-400",children:t.privacyNote}),i&&N("div",{className:z("mb-2 flex max-w-sm items-center gap-2 rounded-lg border border-neutral-300 bg-neutral-50 px-3 py-2 text-xs text-neutral-800 dark:border-neutral-700 dark:bg-neutral-900 dark:text-neutral-100",x?"chat-preview-exit":"chat-preview-enter"),children:[o("span",{className:"min-w-0 flex-1 truncate",children:i.name}),o("span",{className:"text-neutral-500 dark:text-neutral-400",children:Je(i.size)}),o("button",{type:"button","aria-label":t.removeAttachment,onClick:_,disabled:x,className:"rounded p-1 hover:bg-neutral-200 disabled:cursor-default dark:hover:bg-neutral-800",children:o(xt,{className:"size-3.5"})})]}),N("div",{className:"flex items-end gap-2",children:[N("div",{className:"relative",children:[o("button",{type:"button","aria-label":t.addAttachment,"aria-expanded":v,onClick:()=>f(w=>!w),className:z(Z,"h-11 w-11 justify-center px-0 transition-transform duration-150 motion-safe:active:scale-95 motion-reduce:transition-none"),children:o(bt,{className:"size-5","aria-hidden":"true"})}),v&&N("div",{role:"menu",className:"absolute bottom-full left-0 z-20 mb-2 min-w-36 rounded-lg border border-neutral-200 bg-white p-1 shadow-lg dark:border-neutral-700 dark:bg-neutral-900",children:[o("button",{type:"button",role:"menuitem",className:"block w-full rounded px-3 py-2 text-left text-sm hover:bg-neutral-100 dark:hover:bg-neutral-800",onClick:()=>{C("image/jpeg,image/png,image/webp,image/gif"),p.current&&(p.current.accept="image/jpeg,image/png,image/webp,image/gif",p.current.click()),f(!1)},children:t.photo}),o("button",{type:"button",role:"menuitem",className:"block w-full rounded px-3 py-2 text-left text-sm hover:bg-neutral-100 dark:hover:bg-neutral-800",onClick:()=>{C(".pdf,.zip,.txt,.docx,.xlsx"),p.current&&(p.current.accept=".pdf,.zip,.txt,.docx,.xlsx",p.current.click()),f(!1)},children:t.file})]}),o("input",{ref:p,hidden:!0,type:"file",accept:T,onChange:w=>{let c=w.target.files?.[0];c&&b(c),w.currentTarget.value=""}})]}),o("label",{htmlFor:d,className:"sr-only",children:t.composerLabel}),o("textarea",{id:d,ref:y,rows:1,value:a,onChange:w=>r(w.target.value),onKeyDown:R,placeholder:t.composerPlaceholder,className:"max-h-40 min-h-11 flex-1 resize-none rounded-xl border border-neutral-300 bg-white px-3 py-2.5 text-sm text-neutral-900 placeholder:text-neutral-500 focus-visible:border-neutral-500 focus-visible:outline-none dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-50 dark:placeholder:text-neutral-400"}),o("button",{type:"submit","aria-label":t.send,disabled:a.trim().length===0&&!i,className:z(xe,"w-11 px-0 transition-[transform,opacity] duration-150 ease-out motion-safe:active:scale-95 disabled:scale-100 motion-reduce:transition-none"),children:o(kt,{className:"size-5","aria-hidden":"true"})})]})]})}var _t=["spam","abuse","illegal","other"];function Lt({texts:e,messageId:t,onCancel:n,onSubmit:a}){let[r,d]=S("spam"),[y,p]=S(""),[l,i]=S(!1),[g,x]=S(!1),k=Ze(),v={spam:e.reasonSpam,abuse:e.reasonAbuse,illegal:e.reasonIllegal,other:e.reasonOther};return N("form",{"data-testid":"chat-report",className:"flex flex-col gap-3 border-t border-neutral-200 p-4 dark:border-neutral-800",onSubmit:async f=>{f.preventDefault(),i(!0),x(!1);try{await a(r,y.trim())}catch{x(!0)}finally{i(!1)}},children:[o("p",{className:"text-sm font-semibold",children:t?e.reportTitle:e.reportConversationTitle}),N("fieldset",{className:"flex flex-col gap-1",children:[o("legend",{className:"mb-1 text-xs text-neutral-600 dark:text-neutral-400",children:e.reportReason}),_t.map(f=>N("label",{className:"flex min-h-9 items-center gap-2 text-sm",children:[o("input",{type:"radio",name:"chat-report-reason",value:f,checked:r===f,onChange:()=>d(f),className:"size-4 accent-neutral-900 dark:accent-white"}),v[f]]},f))]}),N("div",{className:"flex flex-col gap-1",children:[o("label",{htmlFor:k,className:"text-xs text-neutral-600 dark:text-neutral-400",children:e.reportNote}),o("textarea",{id:k,rows:2,maxLength:1e3,value:y,onChange:f=>p(f.target.value),className:"resize-none rounded-xl border border-neutral-300 bg-white px-3 py-2 text-sm focus-visible:border-neutral-500 focus-visible:outline-none dark:border-neutral-700 dark:bg-neutral-950"})]}),g&&o("p",{role:"alert",className:"text-sm text-red-700 dark:text-red-400",children:e.reportError}),N("div",{className:"flex flex-wrap justify-end gap-2",children:[o("button",{type:"button",className:Z,onClick:n,children:e.reportCancel}),o("button",{type:"submit",className:xe,disabled:l,"aria-busy":l||void 0,children:e.reportSend})]})]})}function At(e,t,n){let a=e instanceof Error?e.message:"",r=t.toLowerCase().startsWith("en");return{"amount-below-minimum":["Kwota jest ni\u017Csza od minimalnej.","The amount is below the minimum."],"amount-above-maximum":["Kwota przekracza maksymaln\u0105.","The amount is above the maximum."],"amount-below-gateway-minimum":["Kwota jest za niska dla dost\u0119pnych p\u0142atno\u015Bci.","The amount is too low for available payment methods."],"amount-invalid":["Podaj prawid\u0142ow\u0105 kwot\u0119.","Enter a valid amount."],"email-verification-required":["Potwierd\u017A adres e-mail, aby odebra\u0107 pakiet.","Verify your email to claim this pack."],"free-claim-exists":["Ten adres e-mail wykorzysta\u0142 ju\u017C limit darmowych odbior\xF3w.","This email has reached the free claim limit."],"free-order-not-supported":["Nie mo\u017Cna zrealizowa\u0107 tego darmowego zam\xF3wienia.","This free order cannot be completed."],"captcha-required":["Potwierd\u017A, \u017Ce nie jeste\u015B robotem.","Complete the security check."],"captcha-invalid":["Weryfikacja wygas\u0142a. Spr\xF3buj ponownie.","The security check expired. Try again."],"rate-limited":["Zbyt wiele pr\xF3b. Spr\xF3buj ponownie za chwil\u0119.","Too many attempts. Try again shortly."],"incorrect-code":["Nieprawid\u0142owy kod. Sprawd\u017A wiadomo\u015B\u0107 i\xA0spr\xF3buj ponownie.","The code is incorrect. Check your email and try again."],"too-many-attempts":["Popro\u015B o\xA0nowy kod za kilka minut.","Request a new code in a few minutes."],unavailable:["Weryfikacja jest chwilowo niedost\u0119pna.","Verification is temporarily unavailable."]}[a]?.[r?1:0]??n}import{useCallback as G,useEffect as ue,useRef as me,useState as Qe}from"react";var Et=()=>import("@nats-io/nats-core");function _e(e){let t=e.pollIntervalMs??8e3,n=e.retryMs??6e4,a=e.loadNats??Et,r=`.${e.kind}.${e.id}`,d=!1,y,p="",l,i,g,x=()=>{l!=null&&clearInterval(l),l=void 0},k=()=>{d||(e.onMode("polling"),l==null&&(l=setInterval(()=>{e.poll().catch(()=>{})},t)),i==null&&(i=setTimeout(()=>{i=void 0,f()},n)))},v=T=>{g!=null&&clearTimeout(g);let C=Date.parse(T);if(!Number.isFinite(C))return;let h=Math.max(5e3,C-Date.now()-6e4);g=setTimeout(async()=>{if(!d)try{let b=await e.client.realtimeToken({fresh:!0});p=b.jwt,v(b.expiresAt)}catch{}},h)};async function f(){if(!d){if(typeof WebSocket>"u"){k();return}e.onMode("connecting");try{let T=await e.client.realtimeToken(),C=T.subjects.find(R=>R.endsWith(r));if(C||(T=await e.client.realtimeToken({fresh:!0}),C=T.subjects.find(R=>R.endsWith(r))),!C||!T.jwt)throw new Error("subject not granted");p=T.jwt;let h=await a();if(d)return;let b=e.realtimeUrl?[e.realtimeUrl]:T.servers.length>0?T.servers:[Me],_=await h.wsconnect({servers:b,authenticator:h.jwtAuthenticator(()=>p),name:"bitsnap-react/chat",reconnect:!0,maxReconnectAttempts:5});if(d){_.close().catch(()=>{});return}y=_;let E=new TextDecoder;_.subscribe(C,{callback:(R,w)=>{if(!R)try{let c=Ie(JSON.parse(E.decode(w.data)));c&&e.onEvent(c)}catch{}}}),_.closed().then(()=>{y===_&&(y=void 0,k())}),v(T.expiresAt),x(),e.onMode("live"),e.poll().catch(()=>{})}catch{k()}}}return f(),()=>{d=!0,x(),i!=null&&clearTimeout(i),g!=null&&clearTimeout(g);let T=y;y=void 0,T&&T.close().catch(()=>{})}}var Le=50,ae={status:"loading",messages:[],hasMore:!1,loadingOlder:!1,live:"off"};function St(){let e=globalThis.crypto;if(e&&typeof e.randomUUID=="function")return e.randomUUID();let t=new Uint8Array(16);if(e&&typeof e.getRandomValues=="function")e.getRandomValues(t);else for(let a=0;a<16;a++)t[a]=Math.floor(Math.random()*256);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=Array.from(t,a=>a.toString(16).padStart(2,"0")).join("");return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}function pe(e,t){let n=new Map(e.map(a=>[a.id,a]));for(let a of t){let r=n.get(a.id);if(a.status==="pending"){if(r&&!r.local)continue;n.set(a.id,{...a,retryFile:r?.retryFile,local:r?.local??{state:"pending"}});continue}r?.local&&r.local.state!=="pending"&&r.local.state!=="unconfirmed"||n.set(a.id,{...a,local:void 0})}return[...n.values()].sort((a,r)=>{let d=Date.parse(a.createdAt)||0,y=Date.parse(r.createdAt)||0;return d-y})}function qt(e,t){let n=e.findIndex(r=>r.id===t.id);if(n<0)return e;let a=[...e];return a[n]={...t,local:void 0},a}function Ae(e){if(e.kind==="pack"){if(e.composerLocked)return{reason:"expired",productId:e.productId};if(e.repliesLeft<=0)return{reason:"replies",productId:e.productId}}}function et(e,t,n){let a=Number(e.data.price_cents);return{reason:t,productId:typeof e.data.product_id=="string"&&e.data.product_id?e.data.product_id:n,priceCents:Number.isFinite(a)&&a>0?a:void 0,priceType:e.data.price_type==="free"||e.data.price_type==="pay_what_you_want"?e.data.price_type:"one_time",minimumCents:Number.isFinite(Number(e.data.price_min_cents))?Number(e.data.price_min_cents):void 0,maximumCents:Number.isFinite(Number(e.data.price_max_cents))?Number(e.data.price_max_cents):void 0,freeClaimLimit:Number.isFinite(Number(e.data.free_claim_limit))?Number(e.data.free_claim_limit):void 0,welcome:typeof e.data.welcome=="string"?e.data.welcome:void 0}}function we(e){return e instanceof $?e:new $("internal_error",0)}function Ce(e){let{client:t,target:n}=e,[a,r]=Qe(ae),[d,y]=Qe(0),p=me(a);p.current=a;let l=me(new Set),i=me(void 0),g=me(void 0),x=n.kind==="thread"?`t:${n.threadId??""}:${n.productId??""}`:`c:${n.channelId}:${n.productId??""}`;ue(()=>{let u=!1;if(g.current=void 0,r(ae),t!==null){if(!t){r({...ae,status:"error",error:new $("no_token",401)});return}return(async()=>{try{let s=await t.me(),m=s.email.toLowerCase(),j,B,D;if(n.kind==="thread"){if(j=n.threadId?s.threads.find(Y=>Y.id===n.threadId):s.threads.find(Y=>Y.productId===n.productId),!j&&n.productId)try{j=await t.openThread(n.productId)}catch(Y){let O=we(Y);if(O.code==="locked"||O.status===404){u||r({...ae,status:"locked",me:m,lock:et(O,"no-pack",n.productId)});return}throw O}if(!j)throw new $("not_found",404);D=j.id}else B=s.channels.find(Y=>Y.id===n.channelId),D=n.channelId;let F;try{F=await t.messages(D,{limit:Le})}catch(Y){let O=we(Y);if(O.code==="locked"){u||r({...ae,status:"locked",me:m,thread:j,channel:B,threadId:D,lock:et(O,n.kind==="channel"?"no-access":"no-pack",n.productId??B?.productId??j?.productId)});return}throw O}if(u)return;r({...ae,status:"ready",me:m,thread:j,channel:B,threadId:D,lock:j?Ae(j):void 0,messages:pe([],F.messages),hasMore:F.hasMore})}catch(s){u||r({...ae,status:"error",error:we(s)})}})(),()=>{u=!0}}},[t,x,d]);let k=G(()=>{t&&(i.current&&clearTimeout(i.current),i.current=setTimeout(async()=>{try{let u=await t.me();r(s=>{if(s.status!=="ready")return s;let m=s.thread&&u.threads.find(B=>B.id===s.thread.id),j=s.channel&&u.channels.find(B=>B.id===s.channel.id);return{...s,thread:m??s.thread,channel:j??s.channel,lock:m?Ae(m):s.lock}})}catch{}},1500))},[t]),v=me(new Set);ue(()=>{let u=!1;for(let s of a.messages)s.paymentRequest?.status!=="paid"||v.current.has(s.id)||(v.current.add(s.id),u=!0);u&&k()},[a.messages,k]);let f=G(async()=>{let{threadId:u}=p.current;if(!t||!u)return;let s=await t.messages(u,{limit:Le});r(m=>m.threadId===u?{...m,messages:pe(m.messages,s.messages)}:m)},[t]),T=G(u=>{r(s=>{switch(u.type){case"message.created":return{...s,messages:pe(s.messages,[u.message])};case"message.updated":{let m=qt(s.messages,u.message);return m===s.messages?s:{...s,messages:m}}case"message.rejected":return{...s,messages:s.messages.map(m=>m.id===u.id?{...m,local:{state:"rejected",reason:u.reason||"rejected"}}:m)};case"message.deleted":return{...s,messages:s.messages.map(m=>m.id===u.id?{...m,deleted:!0,body:"",attachmentKey:void 0}:m)};case"message.pinned":case"message.unpinned":return{...s,messages:s.messages.map(m=>m.id===u.id?{...m,pinned:u.type==="message.pinned"}:m)}}}),u.type==="message.created"&&!u.message.system&&u.message.authorEmail.toLowerCase()!==p.current.me&&k()},[k]),h=a.status==="ready"?a.threadId:void 0;ue(()=>{if(!t||!h)return;let u=_e({client:t,kind:n.kind,id:h,onEvent:T,onMode:s=>r(m=>({...m,live:s})),poll:f,pollIntervalMs:e.pollIntervalMs,realtimeUrl:e.realtimeUrl,loadNats:e.loadNats});return()=>{u(),r(s=>({...s,live:"off"}))}},[t,h,T,f]),ue(()=>{if(!t||!a.threadId||a.status!=="ready")return;let u=[...a.messages].reverse().find(s=>!s.local&&s.authorEmail.toLowerCase()!==a.me);!u||g.current===u.id||(g.current=u.id,t.markRead(a.threadId,u.id).catch(()=>{}))},[t,a.threadId,a.status,a.messages,a.me]),ue(()=>()=>{for(let u of l.current)clearTimeout(u);i.current&&clearTimeout(i.current)},[]);let b=(u,s)=>r(m=>({...m,messages:m.messages.map(j=>j.id===u?s(j):j)})),_=G(async(u,s,m)=>{let j=u.trim(),{threadId:B,me:D}=p.current;if(!t||!B||!j&&!s)return;let F=m??St(),Y={id:F,threadId:B,authorEmail:D??"",body:j,kind:"text",retryFile:s,...s?{attachmentName:s.name,attachmentSize:s.size,attachmentContentType:s.type,attachmentKind:s.type.startsWith("image/")?"image":"file"}:{},createdAt:new Date().toISOString(),pinned:!1,deleted:!1,system:!1,status:"pending",local:{state:"pending"}};r(O=>({...O,messages:[...O.messages,Y]}));try{let O=s?await t.uploadAttachment(B,s,A=>b(F,fe=>({...fe,local:{...fe.local,state:"pending",uploadProgress:A}}))):void 0;O&&b(F,A=>({...A,attachmentKey:O.key,attachmentKind:O.kind,attachmentName:O.filename,attachmentSize:O.size,attachmentContentType:O.contentType,local:{state:"pending"}}));let J=await t.send(B,{body:j,clientId:F,...O?{attachment:O}:{}});r(A=>({...A,messages:pe(A.messages,[{...J.message,id:F}]),thread:A.thread?{...A.thread,...J.thread,id:A.thread.id}:A.thread,lock:A.thread?Ae({...A.thread,...J.thread,id:A.thread.id}):A.lock}));let ne=setTimeout(()=>{l.current.delete(ne),b(F,A=>A.local?.state==="pending"?{...A,local:{state:"unconfirmed"}}:A)},e.confirmTimeoutMs??45e3);l.current.add(ne)}catch(O){let J=we(O),ne=J.code==="network"||J.code==="unavailable"||J.status>=500;b(F,A=>({...A,local:{state:ne?"failed":"rejected",reason:J.code,retryAfter:J.retryAfter,keepId:ne||m!=null}}))}},[t,e.confirmTimeoutMs]),E=G(u=>{r(s=>({...s,messages:s.messages.filter(m=>m.id!==u)}))},[]),R=G(async u=>{let s=p.current.messages.find(j=>j.id===u);if(!s)return;let m=s.local?.state!=="rejected"||s.local.keepId===!0;E(u),await _(s.body,s.retryFile,m?u:void 0)},[E,_]),w=G(async u=>{let{threadId:s}=p.current,m=p.current.messages.find(j=>j.id===u);if(!(!t||!s||!m)){b(u,j=>({...j,deleted:!0,body:"",attachmentKey:void 0}));try{await t.deleteMessage(s,u)}catch(j){throw b(u,()=>m),j}}},[t]),c=G(async u=>{let s=p.current.threadId;if(!t||!s)throw new $("not_found",404);return t.attachmentURL(s,u)},[t]),L=G(async u=>{let{threadId:s}=p.current;!t||!s||await t.report({threadId:s,...u})},[t]),q=G(async u=>{let{threadId:s}=p.current;!t||!s||(await t.mute(s,u),r(m=>m.thread?{...m,thread:{...m.thread,muted:u}}:m))},[t]),I=G(async()=>{let{threadId:u,messages:s,hasMore:m,loadingOlder:j}=p.current,B=s.find(D=>!D.local);if(!(!t||!u||!m||j||!B)){r(D=>({...D,loadingOlder:!0}));try{let D=await t.messages(u,{before:B.id,limit:Le});r(F=>({...F,loadingOlder:!1,hasMore:D.hasMore,messages:pe(F.messages,D.messages)}))}catch{r(D=>({...D,loadingOlder:!1}))}}},[t]),P=G(()=>y(u=>u+1),[]);return{...a,send:_,retry:R,getAttachmentURL:c,discard:E,deleteMessage:w,report:L,setMuted:q,loadOlder:I,reload:P}}import{jsx as ve}from"react/jsx-runtime";function tt(e){let[t,n]=Ut(null),a=e.host??Te().host;Ft(()=>{e.client||e.token||n(Ue(e.projectID,a))},[e.client,e.token,e.projectID,a]);let r=e.token??t,d=e.chatProjectID??e.projectID;return Ee(()=>{if(e.client)return e.client;if(r===null)return null;if(r)return de({projectId:d,token:r,baseUrl:e.apiUrl,attachmentsUrl:e.attachmentsUrl})},[e.client,r,d,e.apiUrl,e.attachmentsUrl])}function nt(e){let t=Ot(null);return async n=>{let a=e.buyProductId??n.productId;if(!a)return;let r={productId:a,reason:n.reason,priceCents:n.priceCents,...n.amount!=null?{amount:n.amount}:{},...n.email?{email:n.email}:{},...n.code?{code:n.code}:{},...n.turnstileToken!=null?{turnstileToken:n.turnstileToken}:{}};if(e.onBuy){await e.onBuy(r);return}let d=(e.host??Te().host??"https://bitsnap.pl").replace(/\/+$/,""),y=n.freeClaimLimit!=null&&(n.priceType==="free"||n.priceType==="pay_what_you_want"&&n.minimumCents===0&&r.amount===0);if(y&&r.email&&r.turnstileToken!=null){t.current=null;let p=await fetch(`${d}/api/integrations/${encodeURIComponent(e.projectID)}/public-commerce/free-claim/request-code`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:r.email,turnstileToken:r.turnstileToken})}),l=await p.json();if(!p.ok)throw new Error(l.code??"internal");return}if(y&&r.email&&r.code){let p=JSON.stringify([d,e.projectID,a,r.email,r.code]);if(!t.current||t.current.key!==p||t.current.expires<=Date.now()){t.current=null;let g=await fetch(`${d}/api/integrations/${encodeURIComponent(e.projectID)}/public-commerce/free-claim/verify-code`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:r.email,code:r.code})}),x=await g.json();if(!g.ok||!x.claimToken)throw new Error(x.code??"email-verification-required");t.current={key:p,token:x.claimToken,expires:Date.now()+(x.expiresIn??600)*1e3}}let l=await fetch(`${d}/api/integrations/${encodeURIComponent(e.projectID)}/public-commerce/buy`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({items:[{id:a,quantity:1,amount:0}],details:{email:r.email},claimToken:t.current.token})}),i=await l.json();if(!l.ok||!i.url)throw new Error(i.code??"free-order-not-supported");window.location.assign(i.url);return}await ie({projectID:e.projectID,productId:a,name:e.title,priceCents:n.priceCents,amount:n.amount,host:e.host})}}function Se(e){let t=tt(e),n=e.locale??X(),a=Ee(()=>re(e.texts,n),[e.texts,n]),r=Ce({client:t,target:{kind:"thread",threadId:e.threadId,productId:e.productId},pollIntervalMs:e.pollIntervalMs,realtimeUrl:e.realtimeUrl,loadNats:e.loadNats}),d=nt(e);return ve("div",{className:"bitsnap-react h-full",children:ve(ze,{host:e.host,conversation:r,texts:a,locale:n,kind:"thread",title:e.title,onBack:e.onBack,onBuy:d,className:e.className})})}function qe(e){let t=tt(e),n=e.locale??X(),a=Ee(()=>re(e.texts,n),[e.texts,n]),r=Ce({client:t,target:{kind:"channel",channelId:e.channelId,productId:e.productId},pollIntervalMs:e.pollIntervalMs,realtimeUrl:e.realtimeUrl,loadNats:e.loadNats}),d=nt(e);return ve("div",{className:"bitsnap-react h-full",children:ve(ze,{host:e.host,conversation:r,texts:a,locale:n,kind:"channel",title:e.title,onBack:e.onBack,onBuy:d,className:e.className})})}import{Hash as Bt,MessageCircle as Dt}from"lucide-react";import{lazy as $t,Suspense as Ht,useEffect as Wt,useMemo as he,useState as ge}from"react";import{jsx as M,jsxs as W}from"react/jsx-runtime";var Kt=$t(()=>import("./BitsnapCart-AINUJQVF.mjs"));function Yt(e,t){return e?e.deleted?t.deletedPlaceholder:e.kind==="payment_request"?`${t.paymentRequestPreview}: ${e.paymentRequest?.title??t.paymentRequestFallback}`:e.body:t.noMessagesYet}var rt=e=>e.productType===5||e.productType===6;function ot(e,t){let n=[...new Set(e.filter(rt).map(a=>a.projectId).filter(Boolean))];return n.length>0?n:t?[t]:[]}function Vt(e){let t=new Map;for(let n of e)rt(n)&&n.projectId&&n.chatProjectId&&t.set(n.projectId,n.chatProjectId);return t}function st({accessToken:e,products:t,chatApiUrl:n,projectID:a,host:r,selection:d,onSelect:y,locale:p=X(),texts:l}){let i=he(()=>re(l,p),[l,p]),g=he(()=>ot(t,a),[t,a]),x=he(()=>Vt(t),[t]),k=he(()=>{let I=new Map;for(let P of g)I.set(P,de({projectId:x.get(P)??P,token:e,baseUrl:n}));return I},[g,x,e,n]),[v,f]=ge({}),[T,C]=ge(0),h=`${d.chatProject??""}:${d.thread??""}:${d.channel??""}`;Wt(()=>{let I=!1;for(let[P,u]of k)f(s=>s[P]?.status==="ready"?s:{...s,[P]:{status:"loading"}}),u.me().then(s=>!I&&f(m=>({...m,[P]:{status:"ready",me:s}})),s=>!I&&f(m=>({...m,[P]:{status:"error",error:s instanceof $?s:new $("internal_error",0)}})));return()=>{I=!0}},[k,T,h]);let b=he(()=>{let I=new Map;for(let P of t)I.set(P.productId,P);return I},[t]),[_,E]=ge(),R=I=>async P=>{E(I),await ie({projectID:I,productId:P.productId,name:b.get(P.productId)?.productName,priceCents:P.priceCents,host:r})},w=d.chatProject?k.get(d.chatProject):void 0,c=!!(w&&(d.thread||d.channel)),L=()=>y({}),q=null;if(c&&w&&d.chatProject){let I=d.chatProject,P=v[I],u=P?.status==="ready"?P.me:void 0;if(d.thread){let s=u?.threads.find(m=>m.id===d.thread);q=M(Se,{projectID:I,client:w,threadId:d.thread,title:s?.productId&&b.get(s.productId)?.productName||void 0,locale:p,texts:l,onBack:L,onBuy:R(I)},`t:${I}:${d.thread}`)}else if(d.channel){let s=u?.entitlements.channels.find(m=>m.channelId===d.channel);q=M(qe,{projectID:I,client:w,channelId:d.channel,productId:s?.productId,locale:p,texts:l,onBack:L,onBuy:R(I)},`c:${I}:${d.channel}`)}}return W("div",{className:"flex min-h-0 flex-1 flex-col",children:[W("div",{className:z(c&&"hidden md:block"),children:[M("h3",{className:"text-2xl",children:i.inboxHeading}),M("p",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:i.inboxIntro})]}),W("div",{className:"mt-6 grid min-h-0 flex-1 gap-4 md:grid-cols-[minmax(16rem,22rem)_1fr]",children:[M("div",{className:z("min-w-0",c&&"hidden md:block"),children:M(Zt,{projects:g,loads:v,clients:k,products:t,texts:i,locale:p,selection:d,onSelect:y,onRetry:()=>C(I=>I+1)})}),M("div",{className:z("min-h-[32rem] min-w-0 md:h-[calc(100dvh-10rem)]",!c&&"hidden md:flex"),children:q??M("div",{className:"flex h-full w-full items-center justify-center rounded-xl border border-dashed border-neutral-300 p-6 text-sm text-neutral-600 dark:border-neutral-700 dark:text-neutral-400",children:i.selectConversation})})]}),_&&M(Ht,{fallback:null,children:M(Kt,{projectID:_,locale:p})})]})}var at="flex min-h-11 w-full min-w-0 items-start gap-3 rounded-xl p-3 text-left transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-neutral-500";function Zt({projects:e,loads:t,clients:n,products:a,texts:r,locale:d,selection:y,onSelect:p,onRetry:l}){let[i,g]=ge(),[x,k]=ge(),v=new Map(a.map(b=>[b.productId,b])),f=e.length>1,T=e.map(b=>t[b]??{status:"loading"});if(T.length>0&&T.every(b=>b.status==="loading"))return M("div",{role:"status","aria-busy":"true","aria-label":r.loading,className:"flex flex-col gap-2",children:[0,1,2].map(b=>M("div",{"aria-hidden":"true",className:"h-20 rounded-xl bg-white motion-safe:animate-pulse dark:bg-neutral-800"},b))});if(T.length===0||T.every(b=>b.status==="error"))return W("div",{role:"alert",className:"flex flex-col items-start gap-3","data-testid":"chat-inbox-error",children:[M("p",{className:"text-sm text-neutral-700 dark:text-neutral-300",children:r.inboxError}),M("button",{type:"button",onClick:l,className:"inline-flex min-h-11 items-center rounded-md bg-neutral-900 px-4 text-sm font-medium text-white hover:bg-neutral-800 focus-visible:outline-2 focus-visible:outline-current dark:bg-white dark:text-neutral-900",children:r.retry})]});let C=[],h=[];for(let b of e){let _=t[b];if(_?.status!=="ready")continue;let{me:E}=_,R=f?a.find(c=>c.projectId===b)?.projectName:void 0;for(let c of E.threads){let L=c.productId?v.get(c.productId):void 0,q=y.chatProject===b&&y.thread===c.id,I=[ce(r,c.repliesLeft,d)];c.expiresAt&&I.push(K(c.composerLocked?r.expiredOn:r.expiresOn,{date:oe(c.expiresAt,d)})),c.responseHours>0&&I.push(K(r.responseHours,{hours:c.responseHours}));let P=c.lastMessage;C.push(M("li",{children:W("button",{type:"button","data-thread-id":c.id,"aria-current":q?"true":void 0,onClick:()=>p({chatProject:b,thread:c.id}),className:z(at,q?"bg-neutral-200 dark:bg-neutral-800":"bg-white hover:bg-neutral-50 dark:bg-neutral-900 dark:hover:bg-neutral-800"),children:[M(Dt,{className:"mt-0.5 size-5 shrink-0 text-neutral-500 dark:text-neutral-400","aria-hidden":"true"}),W("span",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[W("span",{className:"flex items-baseline gap-2",children:[M("span",{className:z("truncate",c.unread>0?"font-semibold":"font-medium"),children:L?.productName||r.chatFallbackTitle}),P&&M("time",{dateTime:P.createdAt,className:"ml-auto shrink-0 text-xs text-neutral-500 dark:text-neutral-400",children:be(P.createdAt,d)})]}),R&&M("span",{className:"truncate text-xs text-neutral-500 dark:text-neutral-400",children:R}),W("span",{className:"flex items-center gap-2",children:[M("span",{className:"line-clamp-1 flex-1 text-sm text-neutral-600 dark:text-neutral-300",children:Yt(P,r)}),c.unread>0&&M("span",{"aria-label":K(r.unread,{count:c.unread}),className:"inline-flex min-w-5 shrink-0 items-center justify-center rounded-full bg-neutral-900 px-1.5 text-xs font-semibold text-white tabular-nums dark:bg-white dark:text-neutral-900",children:c.unread})]}),W("span",{className:z("text-xs",c.repliesLeft<=0||c.composerLocked?"text-amber-800 dark:text-amber-300":"text-neutral-500 dark:text-neutral-400"),children:[I.join(" \xB7 "),c.muted&&` \xB7 ${r.mutedBadge}`]})]})]})},`t:${b}:${c.id}`))}for(let c of E.channels){let L=y.chatProject===b&&y.channel===c.id;C.push(M("li",{children:W("button",{type:"button","data-channel-id":c.id,"aria-current":L?"true":void 0,onClick:()=>p({chatProject:b,channel:c.id}),className:z(at,L?"bg-neutral-200 dark:bg-neutral-800":"bg-white hover:bg-neutral-50 dark:bg-neutral-900 dark:hover:bg-neutral-800"),children:[M(Bt,{className:"mt-0.5 size-5 shrink-0 text-neutral-500 dark:text-neutral-400","aria-hidden":"true"}),W("span",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[M("span",{className:"truncate font-medium",children:c.name||r.channelFallbackTitle}),R&&M("span",{className:"truncate text-xs text-neutral-500 dark:text-neutral-400",children:R}),M("span",{className:"line-clamp-1 text-sm text-neutral-600 dark:text-neutral-300",children:c.topic||r.kindChannel}),c.memberCount>0&&M("span",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:K(r.members,{count:c.memberCount})})]})]})},`c:${b}:${c.id}`))}for(let c of E.entitlements.packs){let L=`${b}:${c.productId}`,q=v.get(c.productId)?.productName||c.name||r.chatFallbackTitle;h.push(W("li",{className:"flex flex-col gap-2 rounded-xl bg-white p-3 dark:bg-neutral-900 sm:flex-row sm:items-center",children:[W("span",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[M("span",{className:"truncate font-medium",children:q}),M("span",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:[ce(r,c.repliesLeftHint,d),c.expiresAt?K(r.expiresOn,{date:oe(c.expiresAt,d)}):""].filter(Boolean).join(" \xB7 ")})]}),M("button",{type:"button",disabled:i===L,"aria-busy":i===L||void 0,onClick:async()=>{let I=n.get(b);if(I){g(L),k(void 0);try{let P=await I.openThread(c.productId);p({chatProject:b,thread:P.id})}catch{k(L)}finally{g(void 0)}}},className:"inline-flex min-h-11 shrink-0 items-center justify-center rounded-md bg-neutral-900 px-4 text-sm font-medium text-white hover:bg-neutral-800 disabled:opacity-50 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-neutral-500 dark:bg-white dark:text-neutral-900 dark:hover:bg-neutral-200",children:i===L?r.loading:r.startChat}),x===L&&M("p",{role:"alert",className:"text-xs text-red-700 dark:text-red-400 sm:basis-full",children:r.errorGeneric})]},`p:${L}`))}let w=new Set(E.channels.map(c=>c.id));for(let c of E.entitlements.channels){if(c.channelId&&w.has(c.channelId))continue;let L=v.get(c.productId)?.productName||r.channelFallbackTitle;h.push(W("li",{className:"flex flex-col gap-2 rounded-xl bg-white p-3 dark:bg-neutral-900 sm:flex-row sm:items-center",children:[W("span",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[M("span",{className:"truncate font-medium",children:L}),!c.channelId&&M("span",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:r.channelNotReady})]}),c.channelId&&M("button",{type:"button",onClick:()=>p({chatProject:b,channel:c.channelId}),className:"inline-flex min-h-11 shrink-0 items-center justify-center rounded-md border border-neutral-300 px-4 text-sm font-medium hover:bg-neutral-50 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-neutral-500 dark:border-neutral-700 dark:hover:bg-neutral-800",children:r.openChannel})]},`e:${b}:${c.productId}`))}}return C.length===0&&h.length===0?M("p",{"data-testid":"chat-inbox-empty",className:"text-sm text-neutral-600 dark:text-neutral-400",children:r.inboxEmpty}):W("div",{className:"flex flex-col gap-6","data-testid":"chat-inbox",children:[C.length>0&&M("ul",{className:"flex flex-col gap-2",children:C}),h.length>0&&W("section",{className:"flex flex-col gap-2",children:[M("h4",{className:"text-sm font-semibold text-neutral-700 dark:text-neutral-300",children:r.startSection}),M("ul",{className:"flex flex-col gap-2",children:h})]})]})}export{He as CHAT_TEXT_TABLES,qe as Channel,$ as ChatError,Se as ChatThread,Ne as DEFAULT_CHAT_API_URL,Re as DEFAULT_CHAT_ATTACHMENTS_URL,Me as DEFAULT_CHAT_REALTIME_URL,st as PanelMessages,ie as addPackToCart,ot as chatProjects,de as createChatClient,re as getChatTexts,Ie as parseRealtimeEvent,_e as startLive,Ce as useConversation};
1
+ import{a as Fe}from"./chunk-HKRH6FI6.mjs";import{a as ye}from"./chunk-7IP3JWZ3.mjs";import{e as Be}from"./chunk-NMXTTD5M.mjs";import{a as Ue}from"./chunk-XEXPQFKN.mjs";import{b as Te}from"./chunk-CUPG4B5W.mjs";import"./chunk-STDV54FL.mjs";import{a as z}from"./chunk-5R6AGO3Z.mjs";import"./chunk-4AU5SEHU.mjs";import"./chunk-EVV25IKM.mjs";import"./chunk-MDCP5JNP.mjs";import{b as Oe,f as X}from"./chunk-OFPRIENJ.mjs";import"./chunk-U6FLIRIV.mjs";import{useEffect as Ft,useMemo as Ee,useRef as Ot,useState as Ut}from"react";async function ie(e){await Be({id:e.productId,name:e.name??"",price:e.priceCents??0,currency:"",amount:e.amount},{projectID:e.projectID,host:e.host,showCart:!0})}var Ne="https://chat.bitsnap.pl",Re="https://bitsnap.pl",Me="wss://bitsnap-nats-queue-production.up.railway.app";var $=class extends Error{code;status;retryAfter;data;constructor(t,n,a={}){super(`chat: ${t} (${n})`),this.name="ChatError",this.code=t,this.status=n,this.data=a;let r=Number(a.retry_after);Number.isFinite(r)&&r>0&&(this.retryAfter=r)}};function de(e){let t=(e.baseUrl||Ne).replace(/\/+$/,""),n=typeof window<"u"&&["localhost","127.0.0.1"].includes(window.location.hostname)?window.location.origin:void 0,a=(e.attachmentsUrl??n??Re).replace(/\/+$/,""),r=e.fetch??((...l)=>fetch(...l));async function d(l,i,g){let x;try{x=await r(t+i,{method:l,headers:{Authorization:`Bearer ${e.token}`,"X-Bitsnap-Project":e.projectId,...g===void 0?{}:{"Content-Type":"application/json"}},body:g===void 0?void 0:JSON.stringify(g)})}catch{throw new $("network",0)}let k=null;try{let v=await x.text();k=v?JSON.parse(v):null}catch{k=null}if(!x.ok){let v=H(k)?k:{},f=typeof v.error=="string"?v.error:"internal_error";throw new $(f,x.status,v)}return{status:x.status,json:k}}let y=encodeURIComponent,p;return{baseUrl:t,projectId:e.projectId,async me(){let{json:l}=await d("GET","/v1/me");return ct(l)},async openThread(l){let{json:i}=await d("POST","/v1/threads",{product_id:l});return $e(i)},async messages(l,i={}){let g=new URLSearchParams;i.before&&g.set("before",i.before),i.limit&&g.set("limit",String(i.limit));let x=g.toString(),k=x?`?${x}`:"",{json:v}=await d("GET",`/v1/threads/${y(l)}/messages${k}`),f=H(v)?v:{};return{messages:ee(f.messages).map(le),hasMore:f.has_more===!0}},async send(l,i){let{json:g}=await d("POST",`/v1/threads/${y(l)}/messages`,{body:i.body,...i.clientId?{client_id:i.clientId}:{},...i.attachment?{attachment_key:i.attachment.key,attachment_kind:i.attachment.kind,attachment_name:i.attachment.filename,attachment_size:i.attachment.size,attachment_content_type:i.attachment.contentType}:{}}),x=H(g)?g:{};return{message:le(x.message),thread:De(x.thread)}},async uploadAttachment(l,i,g){let x=async(f,T)=>{let C=await r(`${a}/api/chat/attachments/${f}`,{method:"POST",headers:{Authorization:`Bearer ${e.token}`,"X-Bitsnap-Project":e.projectId,"Content-Type":"application/json"},body:JSON.stringify(T)}),h={};try{h=await C.json()}catch{}if(!C.ok)throw new $(typeof h.error=="string"?h.error:"request_failed",C.status,h);return h},k=await x("upload",{project_id:e.projectId,thread_id:l,filename:i.name,content_type:i.type,size:i.size});await new Promise((f,T)=>{let C=new XMLHttpRequest;C.open("PUT",k.uploadURL),C.setRequestHeader("Content-Type",i.type),C.upload.onprogress=h=>{h.lengthComputable&&g(Math.round(h.loaded/h.total*100))},C.onload=()=>C.status>=200&&C.status<300?f():T(new $("upload_failed",C.status)),C.onerror=()=>T(new $("network",0)),C.send(i)});let v=await x("complete",{project_id:e.projectId,thread_id:l,key:k.key,upload_ticket:k.uploadTicket,filename:i.name,content_type:i.type,size:i.size});return{key:v.key,kind:v.kind,filename:v.filename,size:v.size,contentType:v.content_type}},async attachmentURL(l,i){if(!i.attachmentKey)throw new $("invalid_attachment",400);let g=new URLSearchParams({project_id:e.projectId,thread_id:l,key:i.attachmentKey,filename:i.attachmentName??"attachment",size:String(i.attachmentSize??0)}),x=await r(`${a}/api/chat/attachments/read?${g}`,{headers:{Authorization:`Bearer ${e.token}`,"X-Bitsnap-Project":e.projectId}}),k={};try{k=await x.json()}catch{}if(!x.ok||typeof k.url!="string")throw new $(typeof k.error=="string"?k.error:"request_failed",x.status,k);return k.url},async deleteMessage(l,i){await d("DELETE",`/v1/threads/${y(l)}/messages/${y(i)}`)},async mute(l,i){await d("POST",`/v1/threads/${y(l)}/mute`,{muted:i})},async report(l){await d("POST","/v1/reports",{thread_id:l.threadId,...l.messageId?{message_id:l.messageId}:{},reason:l.reason,...l.note?{note:l.note}:{}})},async markRead(l,i){await d("POST",`/v1/threads/${y(l)}/receipts`,{state:"read",message_id:i})},async realtimeToken(l={}){if(!l.fresh&&p&&Date.parse(p.expiresAt)-Date.now()>9e4)return p;let{json:i}=await d("POST","/v1/realtime/token"),g=H(i)?i:{};return p={jwt:U(g.jwt),expiresAt:U(g.expires_at),servers:ee(g.servers).filter(x=>typeof x=="string"),subjects:ee(g.subjects).filter(x=>typeof x=="string"),truncated:g.truncated===!0}}}}function Ie(e){if(!H(e)||typeof e.type!="string")return null;let t=U(e.id);switch(e.type){case"message.created":return{type:"message.created",message:le(e)};case"message.updated":return{type:"message.updated",message:le(H(e.message)?e.message:e)};case"message.rejected":return{type:"message.rejected",id:t,reason:U(e.reason)};case"message.deleted":case"message.pinned":case"message.unpinned":return{type:e.type,id:t};default:return null}}function H(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function ee(e){return Array.isArray(e)?e:[]}function U(e){return typeof e=="string"?e:e==null?"":String(e)}function V(e){let t=Number(e);return Number.isFinite(t)?t:0}function te(e){return typeof e=="string"&&e!==""?e:void 0}function je(e){return typeof e=="string"&&e!==""?e:null}function le(e){let t=H(e)?e:{},n=t.kind==="payment_request"?it(t.payment_request):void 0;return{id:U(t.id),threadId:U(t.thread_id),authorEmail:U(t.author_email),body:U(t.body),kind:t.kind==="payment_request"?"payment_request":"text",...n?{paymentRequest:n}:{},...t.kind==="payment_request"&&!n?{paymentRequestInvalid:!0}:{},attachmentKey:te(t.attachment_key),attachmentKind:te(t.attachment_kind),attachmentName:te(t.attachment_name),attachmentSize:V(t.attachment_size),attachmentContentType:te(t.attachment_content_type),createdAt:U(t.created_at),pinned:t.pinned===!0,deleted:t.deleted===!0,system:t.system===!0,...t.status==="pending"?{status:"pending"}:{}}}function it(e){if(!H(e))return;let t=l=>l==null?null:typeof l=="number"&&Number.isFinite(l)&&l>=0?l:NaN,n=t(e.min_amount_minor),a=t(e.max_amount_minor),r=e.amount_minor,d=e.extra_replies,y=e.extend_expiry_days,p=typeof e.payment_url=="string"&&/^https:\/\//i.test(e.payment_url);if(!(typeof e.request_id!="string"||!e.request_id||typeof e.title!="string"||e.description!==null&&typeof e.description!="string"||e.amount_mode!=="exact"&&e.amount_mode!=="pwyw"||typeof r!="number"||!Number.isFinite(r)||r<0||Number.isNaN(n)||Number.isNaN(a)||e.amount_mode==="pwyw"&&(n==null||a==null||n>a)||typeof e.currency!="string"||!/^[A-Z]{3}$/.test(e.currency)||typeof d!="number"||!Number.isFinite(d)||d<0||typeof y!="number"||!Number.isFinite(y)||y<0||!p||typeof e.expires_at!="string"||!Number.isFinite(Date.parse(e.expires_at))||!["pending","paid","expired","cancelled"].includes(String(e.status))||e.paid_at!=null&&typeof e.paid_at!="string"))return{requestId:e.request_id,title:e.title,description:e.description??"",amountMode:e.amount_mode,amountMinor:r,minAmountMinor:n,maxAmountMinor:a,currency:e.currency,extraReplies:d,extendExpiryDays:y,paymentUrl:e.payment_url,status:e.status,expiresAt:e.expires_at,paidAt:e.paid_at}}function lt(e){let t=H(e)?e:{};return{orderId:U(t.order_id),productId:te(t.product_id),replies:V(t.replies),used:V(t.used),left:V(t.left),expiresAt:je(t.expires_at),expired:t.expired===!0}}function De(e){let t=H(e)?e:{};return{id:U(t.id),kind:t.kind==="channel"?"channel":"pack",repliesTotal:V(t.replies_total),repliesUsed:V(t.replies_used),repliesLeft:V(t.replies_left),expiresAt:je(t.expires_at),composerLocked:t.composer_locked===!0,responseHours:V(t.response_hours)}}function $e(e){let t=H(e)?e:{};return{...De(t),channelId:te(t.channel_id),title:U(t.title),lastMessage:H(t.last_message)?le(t.last_message):void 0,unread:V(t.unread),productId:te(t.product_id),blocked:t.blocked===!0,packs:ee(t.packs).map(lt),muted:t.muted===!0}}function dt(e){let t=H(e)?e:{};return{id:U(t.id),name:U(t.name),topic:U(t.topic),welcome:U(t.welcome),whoCanPost:t.who_can_post==="members"?"members":"creator",productId:U(t.product_id),role:U(t.role),memberCount:V(t.member_count),createdAt:U(t.created_at),blockLinks:t.block_links===!0,blockMedia:t.block_media===!0,cooldownSeconds:V(t.cooldown_seconds)}}function ct(e){let t=H(e)?e:{},n=H(t.entitlements)?t.entitlements:{};return{email:U(t.email),threads:ee(t.threads).map($e),entitlements:{packs:ee(n.packs).map(a=>{let r=H(a)?a:{};return{productId:U(r.product_id),name:U(r.name),repliesLeftHint:V(r.replies_left_hint),expiresAt:je(r.expires_at)}}),channels:ee(n.channels).map(a=>{let r=H(a)?a:{};return{productId:U(r.product_id),channelId:te(r.channel_id)}})},channels:ee(t.channels).map(dt)}}import{AlertCircle as ut,ArrowLeft as mt,Clock as pt,Check as ht,Lock as gt,MoreHorizontal as Ve,Paperclip as ft,Pin as yt,Plus as bt,SendHorizontal as kt,X as xt}from"lucide-react";import{useEffect as se,useId as Ze,useLayoutEffect as Ge,useRef as Q,useState as S}from"react";var He={pl:{inboxHeading:"Wiadomo\u015Bci",inboxIntro:"Rozmowy z tw\xF3rcami i kana\u0142y, do kt\xF3rych nale\u017Cysz.",inboxEmpty:"Nie masz jeszcze rozm\xF3w. Po zakupie pakietu konsultacji lub dost\u0119pu do spo\u0142eczno\u015Bci rozmowa pojawi si\u0119 tutaj.",inboxError:"Nie uda\u0142o si\u0119 wczyta\u0107 wiadomo\u015Bci.",loading:"Wczytywanie\u2026",retry:"Spr\xF3buj ponownie",back:"Wr\xF3\u0107",selectConversation:"Wybierz rozmow\u0119 z listy.",kindChat:"Czat",kindChannel:"Kana\u0142",startSection:"Do rozpocz\u0119cia",startChat:"Rozpocznij rozmow\u0119",openChannel:"Otw\xF3rz kana\u0142",channelNotReady:"Tw\xF3rca jeszcze nie otworzy\u0142 tego kana\u0142u.",chatFallbackTitle:"Czat z tw\xF3rc\u0105",channelFallbackTitle:"Kana\u0142",repliesLeftOne:"Zosta\u0142a {count} odpowied\u017A",repliesLeftFew:"Zosta\u0142y {count} odpowiedzi",repliesLeftMany:"Zosta\u0142o {count} odpowiedzi",noRepliesLeft:"Brak odpowiedzi w pakiecie",expiresOn:"Wa\u017Cny do {date}",expiredOn:"Wygas\u0142 {date}",responseHours:"Odpowied\u017A w ci\u0105gu {hours} h",unread:"Nieprzeczytane: {count}",members:"Cz\u0142onkowie: {count}",mutedBadge:"Wyciszony",noMessagesYet:"Brak wiadomo\u015Bci",emptyThread:"Napisz pierwsz\u0105 wiadomo\u015B\u0107. Tw\xF3rca odpowie w ramach Twojego pakietu.",emptyChannel:"W kanale nie ma jeszcze wiadomo\u015Bci.",privacyNote:"Wiadomo\u015Bci czyta druga strona rozmowy. Bitsnap przechowuje je przez 90 dni.",loadOlder:"Wcze\u015Bniejsze wiadomo\u015Bci",newMessages:"Nowe wiadomo\u015Bci \u2193",blockedNotice:"Tw\xF3rca zablokowa\u0142 mo\u017Cliwo\u015B\u0107 wysy\u0142ania wiadomo\u015Bci w tej rozmowie.",addAttachment:"Dodaj za\u0142\u0105cznik",photo:"Zdj\u0119cie",file:"Plik",removeAttachment:"Usu\u0144 za\u0142\u0105cznik",uploading:"Wysy\u0142anie pliku",attachmentLoadFailed:"Nie uda\u0142o si\u0119 wczyta\u0107 \u2014 pon\xF3w",you:"Ty",creator:"Tw\xF3rca",systemLabel:"Wiadomo\u015B\u0107 automatyczna",pinned:"Przypi\u0119ta",deletedPlaceholder:"Wiadomo\u015B\u0107 zosta\u0142a usuni\u0119ta",attachment:"Za\u0142\u0105cznik",composerLabel:"Wiadomo\u015B\u0107",composerPlaceholder:"Napisz wiadomo\u015B\u0107\u2026",send:"Wy\u015Blij",composerExpired:"Pakiet wygas\u0142, wi\u0119c nie mo\u017Cesz ju\u017C pisa\u0107 w tej rozmowie.",composerCreatorOnly:"W tym kanale pisze tylko tw\xF3rca.",composerMuted:"Masz wyciszone pisanie w tym kanale.",composerReadOnly:"Ten dost\u0119p pozwala tylko czyta\u0107.",lockRepliesTitle:"Odpowiedzi w pakiecie si\u0119 sko\u0144czy\u0142y",lockRepliesBody:"Mo\u017Cesz dalej pisa\u0107, ale tw\xF3rca odpowie dopiero po zakupie kolejnego pakietu.",lockExpiredTitle:"Pakiet wygas\u0142",lockExpiredBody:"Rozmowa zostaje do wgl\u0105du. Kup nowy pakiet, aby j\u0105 kontynuowa\u0107.",lockThreadTitle:"Nie masz pakietu odpowiedzi",lockThreadBody:"Kup pakiet, aby napisa\u0107 do tw\xF3rcy.",lockChannelTitle:"Kana\u0142 dla cz\u0142onk\xF3w",lockChannelBody:"Kup dost\u0119p, aby czyta\u0107 i pisa\u0107 w tym kanale.",buyPack:"Kup pakiet",buyAccess:"Kup dost\u0119p",buying:"Dodawanie do koszyka\u2026",buyError:"Nie uda\u0142o si\u0119 doda\u0107 do koszyka. Spr\xF3buj ponownie.",pending:"Wysy\u0142anie\u2026",notConfirmed:"Czekamy na potwierdzenie wys\u0142ania",rejectedLink:"Linki s\u0105 w tym kanale zablokowane. Usu\u0144 link i wy\u015Blij ponownie.",rejectedBannedWord:"Wiadomo\u015B\u0107 zawiera s\u0142owo zablokowane w tym kanale. Popraw j\u0105 i wy\u015Blij ponownie.",rejectedMedia:"Za\u0142\u0105czniki s\u0105 w tym kanale zablokowane.",rejectedCooldown:"Piszesz za szybko. Spr\xF3buj ponownie za {seconds} s.",rejectedBlocked:"Tw\xF3rca zablokowa\u0142 Ci mo\u017Cliwo\u015B\u0107 pisania w tym sklepie.",rejectedMuted:"Masz wyciszone pisanie w tym kanale.",rejectedReadOnly:"Ten dost\u0119p pozwala tylko czyta\u0107.",rejectedPackEmpty:"Pakiet nie ma ju\u017C odpowiedzi.",rejectedForbidden:"Nie mo\u017Cesz pisa\u0107 w tej rozmowie.",rejectedGeneric:"Nie uda\u0142o si\u0119 wys\u0142a\u0107 wiadomo\u015Bci.",failedNetwork:"Brak po\u0142\u0105czenia. Wiadomo\u015B\u0107 nie zosta\u0142a wys\u0142ana.",editMessage:"Popraw",retrySend:"Wy\u015Blij ponownie",dismiss:"Odrzu\u0107",messageActions:"Opcje wiadomo\u015Bci",deleteMessage:"Usu\u0144 wiadomo\u015B\u0107",deleteConfirm:"Na pewno usun\u0105\u0107?",reportMessage:"Zg\u0142o\u015B wiadomo\u015B\u0107",conversationActions:"Opcje rozmowy",muteThread:"Wycisz powiadomienia",unmuteThread:"W\u0142\u0105cz powiadomienia",muteError:"Nie uda\u0142o si\u0119 zmieni\u0107 powiadomie\u0144.",reportConversation:"Zg\u0142o\u015B rozmow\u0119",reportTitle:"Zg\u0142o\u015B wiadomo\u015B\u0107",reportConversationTitle:"Zg\u0142o\u015B rozmow\u0119",reportReason:"Pow\xF3d zg\u0142oszenia",reasonSpam:"Spam",reasonAbuse:"N\u0119kanie lub obra\u017Aliwe tre\u015Bci",reasonIllegal:"Tre\u015Bci niezgodne z prawem",reasonOther:"Inny pow\xF3d",reportNote:"Opis (opcjonalnie)",reportSend:"Wy\u015Blij zg\u0142oszenie",reportCancel:"Anuluj",reportSent:"Dzi\u0119kujemy. Zg\u0142oszenie trafi\u0142o do moderacji.",reportError:"Nie uda\u0142o si\u0119 wys\u0142a\u0107 zg\u0142oszenia. Spr\xF3buj ponownie.",liveLabel:"Nowe wiadomo\u015Bci pojawiaj\u0105 si\u0119 na bie\u017C\u0105co",pollingLabel:"Nowe wiadomo\u015Bci od\u015Bwie\u017Caj\u0105 si\u0119 co kilka sekund",errorNoToken:"Zaloguj si\u0119 w panelu klienta, aby zobaczy\u0107 rozmow\u0119.",errorUnauthorized:"Sesja wygas\u0142a. Zaloguj si\u0119 ponownie.",errorPlan:"Czat nie jest dost\u0119pny w tym sklepie.",errorNotFound:"Nie znaleziono tej rozmowy.",errorUnavailable:"Czat jest chwilowo niedost\u0119pny. Spr\xF3buj za chwil\u0119.",errorGeneric:"Nie uda\u0142o si\u0119 wczyta\u0107 rozmowy.",paymentRequestPay:"Zap\u0142a\u0107 {amount}",paymentRequestChooseAmount:"Wybierz kwot\u0119 i zap\u0142a\u0107",paymentRequestPaid:"Op\u0142acone",paymentRequestExpired:"Pro\u015Bba wygas\u0142a",paymentRequestCancelled:"Pro\u015Bba anulowana",paymentRequestValidUntil:"Wa\u017Cna do {date}",paymentRequestRepliesOne:"+{count} odpowied\u017A",paymentRequestRepliesFew:"+{count} odpowiedzi",paymentRequestRepliesMany:"+{count} odpowiedzi",paymentRequestExtensionOne:"+{count} dzie\u0144 wa\u017Cno\u015Bci",paymentRequestExtensionFew:"+{count} dni wa\u017Cno\u015Bci",paymentRequestExtensionMany:"+{count} dni wa\u017Cno\u015Bci",paymentRequestRange:"od {min} do {max}",paymentRequestFallback:"Pro\u015Bba o p\u0142atno\u015B\u0107 \u2014 od\u015Bwie\u017C czat, aby j\u0105 zobaczy\u0107",paymentRequestPreview:"Pro\u015Bba o p\u0142atno\u015B\u0107"},en:{inboxHeading:"Messages",inboxIntro:"Your conversations with creators and the channels you belong to.",inboxEmpty:"No conversations yet. When you buy a consultation pack or community access, it shows up here.",inboxError:"Your messages could not be loaded.",loading:"Loading\u2026",retry:"Try again",back:"Back",selectConversation:"Pick a conversation from the list.",kindChat:"Chat",kindChannel:"Channel",startSection:"Ready to start",startChat:"Start the conversation",openChannel:"Open the channel",channelNotReady:"The creator has not opened this channel yet.",chatFallbackTitle:"Chat with the creator",channelFallbackTitle:"Channel",repliesLeftOne:"{count} reply left",repliesLeftFew:"{count} replies left",repliesLeftMany:"{count} replies left",noRepliesLeft:"No replies left in your pack",expiresOn:"Valid until {date}",expiredOn:"Expired on {date}",responseHours:"Replies within {hours} h",unread:"Unread: {count}",members:"Members: {count}",mutedBadge:"Muted",noMessagesYet:"No messages yet",emptyThread:"Write the first message. The creator replies within your pack.",emptyChannel:"There are no messages in this channel yet.",privacyNote:"The other side of the conversation reads your messages. Bitsnap keeps them for 90 days.",loadOlder:"Earlier messages",newMessages:"New messages \u2193",blockedNotice:"The creator has blocked you from sending messages in this conversation.",addAttachment:"Add attachment",photo:"Photo",file:"File",removeAttachment:"Remove attachment",uploading:"Uploading file",attachmentLoadFailed:"Could not load \u2014 retry",you:"You",creator:"Creator",systemLabel:"Automatic message",pinned:"Pinned",deletedPlaceholder:"This message was deleted",attachment:"Attachment",composerLabel:"Message",composerPlaceholder:"Write a message\u2026",send:"Send",composerExpired:"Your pack has expired, so you can no longer write here.",composerCreatorOnly:"Only the creator posts in this channel.",composerMuted:"You are muted in this channel.",composerReadOnly:"This access is read only.",lockRepliesTitle:"Your pack has no replies left",lockRepliesBody:"You can keep writing, but the creator can reply only after you buy another pack.",lockExpiredTitle:"Your pack has expired",lockExpiredBody:"You can still read the conversation. Buy a new pack to continue it.",lockThreadTitle:"You have no reply pack",lockThreadBody:"Buy a pack to write to the creator.",lockChannelTitle:"Members-only channel",lockChannelBody:"Buy access to read and post in this channel.",buyPack:"Buy a pack",buyAccess:"Buy access",buying:"Adding to cart\u2026",buyError:"Could not add it to the cart. Try again.",pending:"Sending\u2026",notConfirmed:"Waiting for the send to be confirmed",rejectedLink:"Links are blocked in this channel. Remove the link and send again.",rejectedBannedWord:"Your message contains a word blocked in this channel. Edit it and send again.",rejectedMedia:"Attachments are blocked in this channel.",rejectedCooldown:"You are posting too fast. Try again in {seconds} s.",rejectedBlocked:"The creator has blocked you from posting in this shop.",rejectedMuted:"You are muted in this channel.",rejectedReadOnly:"This access is read only.",rejectedPackEmpty:"The pack has no replies left.",rejectedForbidden:"You cannot post in this conversation.",rejectedGeneric:"Your message could not be sent.",failedNetwork:"No connection. Your message was not sent.",editMessage:"Edit",retrySend:"Send again",dismiss:"Discard",messageActions:"Message options",deleteMessage:"Delete message",deleteConfirm:"Delete for sure?",reportMessage:"Report message",conversationActions:"Conversation options",muteThread:"Mute notifications",unmuteThread:"Unmute notifications",muteError:"Notifications could not be changed.",reportConversation:"Report conversation",reportTitle:"Report message",reportConversationTitle:"Report conversation",reportReason:"Reason",reasonSpam:"Spam",reasonAbuse:"Harassment or abusive content",reasonIllegal:"Illegal content",reasonOther:"Something else",reportNote:"Details (optional)",reportSend:"Send report",reportCancel:"Cancel",reportSent:"Thank you. Your report went to moderation.",reportError:"Your report could not be sent. Try again.",liveLabel:"New messages appear live",pollingLabel:"New messages refresh every few seconds",errorNoToken:"Log in to the customer panel to see this conversation.",errorUnauthorized:"Your session has expired. Log in again.",errorPlan:"Chat is not available in this shop.",errorNotFound:"This conversation was not found.",errorUnavailable:"Chat is unavailable right now. Try again in a moment.",errorGeneric:"The conversation could not be loaded.",paymentRequestPay:"Pay {amount}",paymentRequestChooseAmount:"Choose an amount and pay",paymentRequestPaid:"Paid",paymentRequestExpired:"Request expired",paymentRequestCancelled:"Request cancelled",paymentRequestValidUntil:"Valid until {date}",paymentRequestRepliesOne:"+{count} reply",paymentRequestRepliesFew:"+{count} replies",paymentRequestRepliesMany:"+{count} replies",paymentRequestExtensionOne:"+{count} day of validity",paymentRequestExtensionFew:"+{count} days of validity",paymentRequestExtensionMany:"+{count} days of validity",paymentRequestRange:"from {min} to {max}",paymentRequestFallback:"Payment request \u2014 refresh chat to see it",paymentRequestPreview:"Payment request"}};function re(e,t=X()){return Oe(He,t,e)}function K(e,t){return e.replace(/\{(\w+)\}/g,(n,a)=>a in t?String(t[a]):n)}function ce(e,t,n=X()){if(t<=0)return e.noRepliesLeft;let a="other";try{a=new Intl.PluralRules(n).select(t)}catch{}let r=a==="one"?e.repliesLeftOne:a==="few"?e.repliesLeftFew:e.repliesLeftMany;return K(r,{count:t})}function oe(e,t=X()){let n=new Date(e);return Number.isNaN(n.getTime())?"":new Intl.DateTimeFormat(t,{day:"numeric",month:"numeric",year:"numeric"}).format(n)}function be(e,t=X(),n=new Date){let a=new Date(e);if(Number.isNaN(a.getTime()))return"";let r=a.toDateString()===n.toDateString();return new Intl.DateTimeFormat(t,r?{hour:"2-digit",minute:"2-digit"}:{day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"}).format(a)}function We(e,t,n){switch(t){case"moderation_link":return e.rejectedLink;case"moderation_banned_word":return e.rejectedBannedWord;case"moderation_media":return e.rejectedMedia;case"cooldown":return K(e.rejectedCooldown,{seconds:n??30});case"blocked":return e.rejectedBlocked;case"muted":return e.rejectedMuted;case"read_only":return e.rejectedReadOnly;case"pack_empty":case"replies_exhausted":return e.rejectedPackEmpty;case"forbidden":case"locked":return e.rejectedForbidden;case"network":case"unavailable":return e.failedNetwork;default:return e.rejectedGeneric}}import{Fragment as Xe,jsx as o,jsxs as N}from"react/jsx-runtime";var ke="focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-neutral-500";function Ke(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Je(e=0){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(0)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function Pe(e,t){typeof e.scrollTo=="function"?e.scrollTo({top:e.scrollHeight,behavior:t?"smooth":"auto"}):e.scrollTop=e.scrollHeight}var Z=z("inline-flex min-h-11 items-center gap-2 rounded-md px-3 text-sm text-neutral-700 hover:bg-neutral-100 dark:text-neutral-300 dark:hover:bg-neutral-800",ke),xe=z("inline-flex min-h-11 items-center justify-center gap-2 rounded-md bg-neutral-900 px-4 text-sm font-medium text-white hover:bg-neutral-800 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-white dark:text-neutral-900 dark:hover:bg-neutral-200",ke);function ze({host:e,conversation:t,texts:n,locale:a,kind:r,title:d,onBack:y,onBuy:p,className:l}){let[i,g]=S(!1),[x,k]=S(null),[v,f]=S(),[T,C]=S(""),[h,b]=S(!1);se(()=>{if(!h)return;let R=setTimeout(()=>b(!1),6e3);return()=>clearTimeout(R)},[h]);let _=d||t.channel?.name||(r==="channel"?n.channelFallbackTitle:n.chatFallbackTitle),E=wt(t,n,a);return N("section",{"data-bitsnap-chat":r,"aria-label":_,className:z("flex h-full min-h-[28rem] w-full min-w-0 flex-col overflow-hidden rounded-xl border border-neutral-200 bg-white text-neutral-900 dark:border-neutral-800 dark:bg-neutral-900 dark:text-neutral-50",l),children:[N("header",{className:"flex items-start gap-2 border-b border-neutral-200 px-3 py-2 dark:border-neutral-800",children:[y&&o("button",{type:"button",onClick:y,"aria-label":n.back,className:z(Z,"w-11 justify-center px-0"),children:o(mt,{className:"size-5","aria-hidden":"true"})}),N("div",{className:"min-w-0 flex-1 py-1.5",children:[N("h2",{className:"flex items-center gap-2 text-base font-semibold",children:[o("span",{className:"truncate",children:_}),o(Ct,{live:t.live,texts:n})]}),E.length>0&&o("p",{className:"mt-0.5 flex flex-wrap gap-x-3 gap-y-0.5 text-xs text-neutral-600 dark:text-neutral-400",children:E.map(R=>o("span",{children:R},R))})]}),t.status==="ready"&&o("button",{type:"button","aria-label":n.conversationActions,"aria-expanded":i,onClick:()=>g(R=>!R),className:z(Z,"w-11 justify-center px-0"),children:o(Ve,{className:"size-5","aria-hidden":"true"})})]}),i&&t.status==="ready"&&N("div",{className:"flex flex-wrap gap-1 border-b border-neutral-200 bg-neutral-50 px-3 py-1 dark:border-neutral-800 dark:bg-neutral-950",children:[r==="thread"&&t.thread&&o("button",{type:"button",className:Z,onClick:async()=>{g(!1);try{await t.setMuted(!t.thread.muted),f(void 0)}catch{f(n.muteError)}},children:t.thread.muted?n.unmuteThread:n.muteThread}),o("button",{type:"button",className:Z,onClick:()=>{g(!1),k({})},children:n.reportConversation})]}),t.status==="loading"&&o(vt,{texts:n}),t.status==="error"&&o(Nt,{conversation:t,texts:n}),t.status==="locked"&&t.lock&&o("div",{className:"flex flex-1 flex-col justify-center overflow-y-auto p-4",children:o(Ye,{host:e,lock:t.lock,kind:r,texts:n,locale:a,onBuy:p,prominent:!0})}),t.status==="ready"&&N(Xe,{children:[o(Mt,{conversation:t,texts:n,locale:a,kind:r,onReport:R=>k({messageId:R}),onEdit:R=>{C(R.body),t.discard(R.id)}}),v&&o("p",{role:"status",className:"px-4 pb-2 text-xs text-red-700 dark:text-red-400",children:v}),t.lock&&o("div",{className:"border-t border-neutral-200 p-3 dark:border-neutral-800",children:o(Ye,{host:e,lock:t.lock,kind:r,texts:n,locale:a,onBuy:p})}),x?o(Lt,{texts:n,messageId:x.messageId,onCancel:()=>k(null),onSubmit:async(R,w)=>{await t.report({messageId:x.messageId,reason:R,note:w}),k(null),f(void 0),b(!0)}}):o(zt,{conversation:t,texts:n,kind:r,draft:T,setDraft:C})]}),h&&o("p",{role:"status",className:"border-t border-neutral-200 px-4 py-2 text-xs text-neutral-700 dark:border-neutral-800 dark:text-neutral-300",children:n.reportSent})]})}function wt(e,t,n){let a=[];if(e.thread&&e.thread.kind==="pack"){if(a.push(ce(t,e.thread.repliesLeft,n)),e.thread.expiresAt){let r=oe(e.thread.expiresAt,n);a.push(K(e.thread.composerLocked?t.expiredOn:t.expiresOn,{date:r}))}e.thread.responseHours>0&&a.push(K(t.responseHours,{hours:e.thread.responseHours})),e.thread.muted&&a.push(t.mutedBadge)}return e.channel&&(e.channel.topic&&a.push(e.channel.topic),e.channel.memberCount>0&&a.push(K(t.members,{count:e.channel.memberCount}))),a}function Ct({live:e,texts:t}){if(e!=="live"&&e!=="polling")return null;let n=e==="live"?t.liveLabel:t.pollingLabel;return o("span",{title:n,"data-live":e,className:z("inline-block size-2 shrink-0 rounded-full",e==="live"?"bg-emerald-500":"bg-neutral-400 dark:bg-neutral-500"),children:o("span",{className:"sr-only",children:n})})}function vt({texts:e}){return o("div",{role:"status","aria-busy":"true","aria-label":e.loading,className:"flex flex-1 flex-col gap-3 p-4",children:[60,40,70].map((t,n)=>o("div",{"aria-hidden":"true",style:{width:`${t}%`},className:z("h-10 rounded-2xl bg-neutral-100 motion-safe:animate-pulse dark:bg-neutral-800",n===1&&"self-end")},n))})}function Tt(e,t){switch(e){case"no_token":return t.errorNoToken;case"unauthorized":return t.errorUnauthorized;case"plan_required":return t.errorPlan;case"not_found":return t.errorNotFound;case"unavailable":case"network":return t.errorUnavailable;default:return t.errorGeneric}}function Nt({conversation:e,texts:t}){let n=e.error?.code??"",a=n!=="no_token"&&n!=="plan_required"&&n!=="unauthorized";return N("div",{role:"alert",className:"flex flex-1 flex-col items-start justify-center gap-3 p-4",children:[o("p",{className:"text-sm text-neutral-700 dark:text-neutral-300",children:Tt(n,t)}),a&&o("button",{type:"button",className:xe,onClick:e.reload,children:t.retry})]})}function Ye({host:e,lock:t,kind:n,texts:a,locale:r,onBuy:d,prominent:y}){let[p,l]=S(!1),[i,g]=S(""),[x,k]=S(String((t.priceCents??0)/100)),v=x.trim().replace(",","."),f=/^\d+(\.\d{0,2})?$/.test(v)?Math.round(Number(v)*100):NaN,T=t.priceType==="pay_what_you_want",C=t.minimumCents??0,h=t.maximumCents??Number.MAX_SAFE_INTEGER,b=Number.isInteger(f)&&f>=C&&f<=h&&(f>0||t.freeClaimLimit!=null),_=t.freeClaimLimit!=null&&(t.priceType==="free"||T&&C===0&&f===0),[E,R]=S(""),[w,c]=S(""),[L,q]=S(!1),[I,P]=S(null),[u,s]=S(0),[m,j]=S(0),B=Q(null);se(()=>{L&&B.current?.focus()},[L]),se(()=>{if(m<=0)return;let A=window.setTimeout(()=>j(m-1),1e3);return()=>window.clearTimeout(A)},[m]);let D=()=>{q(!1),c(""),P(null),s(A=>A+1),g("")},F=r.toLowerCase().startsWith("en"),[Y,O]=t.reason==="replies"?[a.lockRepliesTitle,a.lockRepliesBody]:t.reason==="expired"?[a.lockExpiredTitle,a.lockExpiredBody]:n==="channel"?[a.lockChannelTitle,a.lockChannelBody]:[a.lockThreadTitle,a.lockThreadBody],J=n==="channel"?a.buyAccess:a.buyPack,ne=d!=null&&t.productId!=null;return N("div",{"data-testid":"chat-lock","data-lock":t.reason,className:z("flex gap-3 rounded-xl bg-neutral-100 p-3 dark:bg-neutral-800",y?"flex-col items-start p-5":"flex-col sm:flex-row sm:items-center"),children:[o(gt,{className:z("shrink-0 text-neutral-500 dark:text-neutral-400",y?"size-6":"hidden size-5 sm:block"),"aria-hidden":"true"}),N("div",{className:"min-w-0 flex-1",children:[o("p",{className:z("font-semibold",y?"text-lg":"text-sm"),children:Y}),o("p",{className:"mt-0.5 text-sm text-neutral-600 dark:text-neutral-300",children:O}),_&&N("div",{className:"mt-3 grid max-w-sm gap-2",children:[N("label",{className:"grid gap-1 text-sm",children:[o("span",{children:F?"Email":"E-mail"}),o("input",{type:"email",autoComplete:"email",value:E,onChange:A=>{R(A.currentTarget.value),D()},disabled:p,className:"h-11 rounded-md border border-neutral-300 bg-white px-3 text-neutral-900 dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-50"})]}),L?N("label",{className:"grid gap-1 text-sm",children:[o("span",{children:F?"Email code":"Kod z\xA0e-maila"}),o("input",{ref:B,inputMode:"numeric",autoComplete:"one-time-code",value:w,onChange:A=>c(A.currentTarget.value),className:"h-11 rounded-md border border-neutral-300 bg-white px-3 text-neutral-900 dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-50"})]}):E.includes("@")?o(Fe,{host:e,action:"free_chat_claim",locale:r,onToken:P,onFailure:()=>P(null)},u):null,L&&N("button",{type:"button",disabled:p||m>0,className:"min-h-11 text-sm underline disabled:opacity-50",onClick:D,children:[F?"Request a new code":"Popro\u015B o\xA0nowy kod",m>0?` (${m}s)`:""]})]}),T&&N("label",{className:"mt-3 grid max-w-xs gap-1 text-sm",children:[o("span",{children:F?`Amount (${(C/100).toFixed(2)}\u2013${Number.isFinite(h)?(h/100).toFixed(2):"\u221E"} PLN)`:`Kwota (${(C/100).toFixed(2)}\u2013${Number.isFinite(h)?(h/100).toFixed(2):"\u221E"} z\u0142)`}),o("input",{"aria-label":F?"Amount":"Kwota",inputMode:"decimal",type:"text",min:C/100,max:Number.isFinite(h)?h/100:void 0,step:"0.01",value:x,onChange:A=>k(A.currentTarget.value),onBlur:()=>{Number.isFinite(f)&&k((f/100).toFixed(2))},className:"h-11 rounded-md border border-neutral-300 bg-white px-3 text-neutral-900 dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-50"}),!b&&o("span",{role:"alert",className:"text-xs text-red-700 dark:text-red-400",children:F?f===0&&t.freeClaimLimit==null?"Free claims are unavailable. Enter a positive amount.":"Enter an amount within the range.":f===0&&t.freeClaimLimit==null?"Darmowy odbi\xF3r jest niedost\u0119pny. Wpisz kwot\u0119 wi\u0119ksz\u0105 od zera.":"Kwota musi mie\u015Bci\u0107 si\u0119 w\xA0podanym zakresie."})]}),t.welcome&&o("p",{className:"mt-3 whitespace-pre-wrap text-sm",children:t.welcome}),i&&o("p",{role:"alert",className:"mt-2 text-sm text-red-700 dark:text-red-400",children:i})]}),ne&&o("button",{type:"button",className:z(xe,"shrink-0"),disabled:p||T&&!b||_&&(!E.includes("@")||!L&&I===null||L&&!w),"aria-busy":p||void 0,onClick:async()=>{l(!0),g("");try{_?(await d({...t,...T?{amount:f}:{},email:E,...L?{code:w}:{turnstileToken:I}}),L||(q(!0),j(60))):await d({...t,...T?{amount:f}:{}})}catch(A){g(At(A,r,a.buyError)),L||(P(null),s(fe=>fe+1))}finally{l(!1)}},children:p?a.buying:T?F?"Choose what you pay":"Kup pakiet, p\u0142ac\u0105c, ile chcesz":_?L?F?"Claim for free":"Odbierz za darmo":F?"Send code":"Wy\u015Blij kod":J})]})}function Rt(e,t,n,a){return t?a.you:n==="thread"?a.creator:e.authorEmail.split("@")[0]||a.creator}function Mt({conversation:e,texts:t,locale:n,kind:a,onReport:r,onEdit:d}){let y=Q(null),p=Q(!0),l=Q(!1),i=Q(null),g=Q(null),[x,k]=S(()=>new Set),[v,f]=S(!1),T=e.messages.length,C=e.messages[T-1]?.id;return se(()=>{if(e.status!=="ready")return;let h=new Set(e.messages.map(w=>w.id)),b=i.current;i.current=h;let _=e.messages.reduce((w,c)=>w==null||c.createdAt<w?c.createdAt:w,null),E=g.current;if(g.current=_,!b)return;let R=e.messages.filter(w=>!b.has(w.id)&&(E==null||w.createdAt>=E));!R.length||e.loadingOlder||(k(w=>new Set([...w,...R.map(c=>c.id)])),p.current?f(!1):f(!0))},[e.messages,e.loadingOlder]),Ge(()=>{let h=y.current;if(h){if(p.current){let b=Ke();Pe(h,!b&&l.current)}l.current=!0}},[T,C]),N("div",{className:"relative flex min-h-0 flex-1 flex-col",children:[v&&o("button",{type:"button",onClick:()=>{let h=y.current;h&&Pe(h,!Ke()),p.current=!0,f(!1)},className:"absolute bottom-3 left-1/2 z-10 -translate-x-1/2 rounded-full bg-neutral-900 px-3 py-1.5 text-xs font-medium text-white shadow-md dark:bg-neutral-100 dark:text-neutral-900",children:t.newMessages??"Nowe wiadomo\u015Bci \u2193"}),N("div",{ref:y,role:"log","aria-live":"polite","aria-relevant":"additions",onLoadCapture:()=>{let h=y.current;h&&p.current&&Pe(h,!1)},onScroll:h=>{let b=h.currentTarget;p.current=b.scrollHeight-b.scrollTop-b.clientHeight<80},className:"flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto overscroll-contain px-3 py-4 sm:px-4",children:[e.hasMore&&o("button",{type:"button",onClick:()=>{p.current=!1,e.loadOlder()},disabled:e.loadingOlder,className:z(Z,"self-center text-xs"),children:e.loadingOlder?t.loading:t.loadOlder}),T===0&&N("div",{className:"m-auto max-w-sm text-center","data-testid":"chat-empty",children:[o("p",{className:"text-sm font-medium",children:t.noMessagesYet}),o("p",{className:"mt-1 text-sm text-neutral-600 dark:text-neutral-400",children:a==="channel"?t.emptyChannel:t.emptyThread}),e.channel?.welcome&&o("p",{className:"mt-3 whitespace-pre-wrap text-sm",children:e.channel.welcome})]}),e.messages.map(h=>o(It,{message:h,mine:h.authorEmail.toLowerCase()===e.me,kind:a,texts:t,locale:n,getAttachmentURL:e.getAttachmentURL,animateEntry:x.has(h.id),onDelete:()=>e.deleteMessage(h.id),onReport:()=>r(h.id),onRetry:()=>void e.retry(h.id),onDiscard:()=>e.discard(h.id),onEdit:()=>d(h)},h.id))]})]})}function It({message:e,mine:t,kind:n,texts:a,locale:r,getAttachmentURL:d,animateEntry:y=!1,onDelete:p,onReport:l,onRetry:i,onDiscard:g,onEdit:x}){let[k,v]=S(!1),[f,T]=S(!1),[C,h]=S(),[b,_]=S(!1),[E,R]=S(0),w=Q(0),c=()=>{h(void 0),_(!1),R(s=>s+1)},L=async s=>{if(C&&Date.now()<w.current)return;s.preventDefault();let m=window.open("about:blank","_blank");m&&(m.opener=null);try{let j=await d(e);w.current=Date.now()+5e4,h(j),m&&(m.location.href=j)}catch{m?.close(),_(!0)}},q=e.local;if(se(()=>{if(!e.attachmentKey||e.deleted||e.local)return;let s=!1;return _(!1),d(e).then(m=>{s||(w.current=Date.now()+5e4,h(m))}).catch(()=>{s||_(!0)}),()=>{s=!0}},[e.attachmentKey,e.deleted,!!e.local,d,E]),e.system)return N("div",{"data-message-id":e.id,className:"mx-auto max-w-md text-center text-xs text-neutral-600 dark:text-neutral-400",children:[o("span",{className:"font-medium",children:a.systemLabel}),e.body&&o("p",{className:"mt-0.5 whitespace-pre-wrap",children:e.body})]});let I=q?.state==="rejected"||q?.state==="failed",P=q?.state==="pending"||q?.state==="unconfirmed",u=!q&&!e.deleted;return N("div",{"data-message-id":e.id,"data-state":q?.state??(e.deleted?"deleted":"stored"),className:z("group flex max-w-[85%] flex-col gap-1 sm:max-w-[75%]",y&&"motion-safe:animate-[bitsnap-chat-message-enter_190ms_ease-out]",t?"items-end self-end":"items-start self-start"),children:[N("div",{className:z("flex items-end gap-1",t&&"flex-row-reverse"),children:[o("div",{className:z("min-w-0 rounded-2xl px-3.5 py-2 text-sm leading-relaxed transition-opacity duration-200 ease-out motion-reduce:transition-none",e.deleted?"border border-dashed border-neutral-300 bg-transparent italic text-neutral-500 dark:border-neutral-700 dark:text-neutral-400":t?"bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900":"bg-neutral-100 text-neutral-900 dark:bg-neutral-800 dark:text-neutral-50",P&&"opacity-70",I&&"border border-red-600 dark:border-red-400"),children:e.deleted?a.deletedPlaceholder:e.kind==="payment_request"?o(jt,{message:e,mine:t,texts:a,locale:r}):N(Xe,{children:[o("p",{className:"whitespace-pre-wrap break-words",children:e.body}),!e.deleted&&e.attachmentName&&(e.attachmentKind==="image"?b?o("button",{type:"button",onClick:c,className:"mt-2 text-xs underline",children:a.attachmentLoadFailed}):C?o("a",{href:C,onClick:L,target:"_blank",rel:"noreferrer",children:o("img",{src:C,onError:()=>{Date.now()>=w.current?c():(h(void 0),_(!0))},alt:e.attachmentName,className:"mt-2 max-h-48 rounded-lg object-cover"})}):o("div",{role:"status","aria-label":a.loading,className:"mt-2 h-32 w-48 animate-pulse rounded-lg bg-current/10 motion-reduce:animate-none"}):N("a",{href:C??"#",onClick:L,download:e.attachmentName,className:"mt-2 flex max-w-56 items-center gap-2 rounded-lg border border-neutral-300/60 px-2 py-1.5 text-xs dark:border-neutral-700",children:[o(ft,{className:"size-3.5 shrink-0","aria-hidden":"true"}),o("span",{className:"min-w-0 flex-1 truncate",children:e.attachmentName}),o("span",{children:Je(e.attachmentSize)})]})),b&&e.attachmentKind!=="image"&&o("button",{type:"button",onClick:c,className:"mt-1 text-xs underline",children:a.attachmentLoadFailed}),e.attachmentName&&q?.state==="pending"&&q.uploadProgress!=null&&N("p",{className:"mt-1 text-[11px] opacity-75",children:[a.uploading," ",q.uploadProgress,"%"]})]})}),u&&o("button",{type:"button","aria-label":a.messageActions,"aria-expanded":k,onClick:()=>{v(s=>!s),T(!1)},className:z("inline-flex size-11 shrink-0 items-center justify-center rounded-md text-neutral-500 opacity-100 hover:bg-neutral-100 sm:opacity-0 sm:group-hover:opacity-100 sm:focus-visible:opacity-100 dark:text-neutral-400 dark:hover:bg-neutral-800",k&&"sm:opacity-100",ke),children:o(Ve,{className:"size-4","aria-hidden":"true"})})]}),N("p",{className:"flex items-center gap-1.5 px-1 text-[11px] text-neutral-500 dark:text-neutral-400",children:[e.pinned&&N("span",{className:"inline-flex items-center gap-0.5",children:[o(yt,{className:"size-3","aria-hidden":"true"}),a.pinned]}),o("span",{children:Rt(e,t,n,a)}),o("span",{"aria-hidden":"true",children:"\xB7"}),P?N("span",{className:"inline-flex items-center gap-1",children:[o(pt,{className:"size-3","aria-hidden":"true"}),q?.state==="pending"?a.pending:a.notConfirmed]}):o("time",{dateTime:e.createdAt,children:be(e.createdAt,r)})]}),I&&N("div",{role:"alert",className:z("flex flex-col gap-1",t?"items-end":"items-start"),children:[N("p",{className:"flex items-start gap-1 text-xs text-red-700 dark:text-red-400",children:[o(ut,{className:"mt-px size-3.5 shrink-0","aria-hidden":"true"}),We(a,q?.reason??"",q?.retryAfter)]}),N("div",{className:"flex flex-wrap gap-1",children:[q?.state==="failed"||q?.reason==="cooldown"?o("button",{type:"button",className:z(Z,"text-xs"),onClick:i,children:a.retrySend}):o("button",{type:"button",className:z(Z,"text-xs"),onClick:x,children:a.editMessage}),o("button",{type:"button",className:z(Z,"text-xs"),onClick:g,children:a.dismiss})]})]}),k&&u&&o("div",{className:"flex flex-wrap gap-1",children:t?o("button",{type:"button",className:z(Z,"text-xs text-red-700 dark:text-red-400"),onClick:async()=>{if(!f){T(!0);return}v(!1),await p().catch(()=>{})},children:f?a.deleteConfirm:a.deleteMessage}):o("button",{type:"button",className:z(Z,"text-xs"),onClick:()=>{v(!1),l()},children:a.reportMessage})})]})}function jt({message:e,mine:t,texts:n,locale:a}){let r=e.paymentRequest;if(!r||e.paymentRequestInvalid)return o("article",{"aria-label":n.paymentRequestFallback,className:"min-w-0 max-w-full text-sm",children:n.paymentRequestFallback});let y=r.status==="expired"||r.status==="pending"&&Date.parse(r.expiresAt)<=Date.now()?"expired":r.status,p=r.amountMode==="exact"?ye(r.amountMinor,r.currency,a):K(n.paymentRequestRange,{min:ye(r.minAmountMinor??0,r.currency,a),max:ye(r.maxAmountMinor??0,r.currency,a)}),l=(g,x,k,v)=>{let f="other";try{f=new Intl.PluralRules(a).select(g)}catch{}return K(f==="one"?x:f==="few"?k:v,{count:g})},i=y==="paid"?n.paymentRequestPaid:y==="expired"?n.paymentRequestExpired:y==="cancelled"?n.paymentRequestCancelled:void 0;return N("article",{"aria-label":r.title,className:"w-full min-w-0 max-w-full rounded-lg border border-neutral-300 bg-white p-3 text-left text-neutral-900 shadow-sm dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-100",children:[o("h3",{className:"break-words text-sm font-semibold",children:r.title}),r.description&&o("p",{className:"mt-1 max-h-24 overflow-hidden whitespace-pre-wrap break-words text-xs text-neutral-600 dark:text-neutral-300",children:r.description}),o("p",{className:"mt-2 break-words text-base font-semibold",children:p}),N("ul",{className:"mt-1 flex flex-wrap gap-x-3 gap-y-1 text-xs text-neutral-600 dark:text-neutral-300",children:[o("li",{children:l(r.extraReplies,n.paymentRequestRepliesOne,n.paymentRequestRepliesFew,n.paymentRequestRepliesMany)}),r.extendExpiryDays>0&&o("li",{children:l(r.extendExpiryDays,n.paymentRequestExtensionOne,n.paymentRequestExtensionFew,n.paymentRequestExtensionMany)})]}),y==="pending"&&o("p",{className:"mt-2 text-xs text-neutral-500 dark:text-neutral-400",children:K(n.paymentRequestValidUntil,{date:oe(r.expiresAt,a)})}),i?N("p",{className:"mt-3 inline-flex items-center gap-1 rounded-full bg-neutral-100 px-2.5 py-1 text-xs font-medium text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300",children:[y==="paid"&&o(ht,{className:"size-3.5","aria-hidden":"true"}),i]}):!t&&y==="pending"?o("button",{type:"button",onClick:()=>window.open(r.paymentUrl,"_blank","noopener,noreferrer"),className:z("mt-3 flex min-h-11 w-full items-center justify-center rounded-md bg-blue-600 px-3 py-2 text-sm font-semibold text-white hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-400",ke),children:r.amountMode==="exact"?K(n.paymentRequestPay,{amount:p}):n.paymentRequestChooseAmount}):null]})}function Pt(e,t,n){if(t==="thread"&&e.thread?.blocked)return n.blockedNotice;if(t==="thread"&&e.thread?.composerLocked)return n.composerExpired;if(t==="channel"&&e.channel){if(e.channel.role==="muted")return n.composerMuted;if(e.channel.whoCanPost==="creator"&&e.channel.role!=="creator")return n.composerCreatorOnly}}function zt({conversation:e,texts:t,kind:n,draft:a,setDraft:r}){let d=Ze(),y=Q(null),p=Q(null),l=Q(null),[i,g]=S(),[x,k]=S(!1),[v,f]=S(!1),[T,C]=S(".pdf,.zip,.txt,.docx,.xlsx"),h=Pt(e,n,t);se(()=>()=>{l.current&&clearTimeout(l.current)},[]);let b=w=>{l.current&&clearTimeout(l.current),l.current=null,k(!1),g(w)},_=()=>{!i||x||(k(!0),l.current=setTimeout(()=>{g(void 0),k(!1),l.current=null},140))};if(Ge(()=>{let w=y.current;w&&(w.style.height="auto",w.style.height=`${Math.min(w.scrollHeight,160)}px`)},[a]),h)return o("p",{"data-testid":"chat-composer-blocked",className:"border-t border-neutral-200 px-4 py-3 text-sm text-neutral-600 dark:border-neutral-800 dark:text-neutral-400",children:h});let E=w=>{w?.preventDefault();let c=a.trim();!c&&!i||(r(""),g(void 0),e.send(c,i),requestAnimationFrame(()=>y.current?.focus()))},R=w=>{w.key==="Enter"&&!w.shiftKey&&!w.nativeEvent.isComposing&&(w.preventDefault(),E())};return N("form",{onSubmit:E,className:"border-t border-neutral-200 px-3 pb-3 pt-2 dark:border-neutral-800",children:[e.messages.length===0&&o("p",{className:"pb-2 text-xs text-neutral-500 dark:text-neutral-400",children:t.privacyNote}),i&&N("div",{className:z("mb-2 flex max-w-sm items-center gap-2 rounded-lg border border-neutral-300 bg-neutral-50 px-3 py-2 text-xs text-neutral-800 dark:border-neutral-700 dark:bg-neutral-900 dark:text-neutral-100",x?"chat-preview-exit":"chat-preview-enter"),children:[o("span",{className:"min-w-0 flex-1 truncate",children:i.name}),o("span",{className:"text-neutral-500 dark:text-neutral-400",children:Je(i.size)}),o("button",{type:"button","aria-label":t.removeAttachment,onClick:_,disabled:x,className:"rounded p-1 hover:bg-neutral-200 disabled:cursor-default dark:hover:bg-neutral-800",children:o(xt,{className:"size-3.5"})})]}),N("div",{className:"flex items-end gap-2",children:[N("div",{className:"relative",children:[o("button",{type:"button","aria-label":t.addAttachment,"aria-expanded":v,onClick:()=>f(w=>!w),className:z(Z,"h-11 w-11 justify-center px-0 transition-transform duration-150 motion-safe:active:scale-95 motion-reduce:transition-none"),children:o(bt,{className:"size-5","aria-hidden":"true"})}),v&&N("div",{role:"menu",className:"absolute bottom-full left-0 z-20 mb-2 min-w-36 rounded-lg border border-neutral-200 bg-white p-1 shadow-lg dark:border-neutral-700 dark:bg-neutral-900",children:[o("button",{type:"button",role:"menuitem",className:"block w-full rounded px-3 py-2 text-left text-sm hover:bg-neutral-100 dark:hover:bg-neutral-800",onClick:()=>{C("image/jpeg,image/png,image/webp,image/gif"),p.current&&(p.current.accept="image/jpeg,image/png,image/webp,image/gif",p.current.click()),f(!1)},children:t.photo}),o("button",{type:"button",role:"menuitem",className:"block w-full rounded px-3 py-2 text-left text-sm hover:bg-neutral-100 dark:hover:bg-neutral-800",onClick:()=>{C(".pdf,.zip,.txt,.docx,.xlsx"),p.current&&(p.current.accept=".pdf,.zip,.txt,.docx,.xlsx",p.current.click()),f(!1)},children:t.file})]}),o("input",{ref:p,hidden:!0,type:"file",accept:T,onChange:w=>{let c=w.target.files?.[0];c&&b(c),w.currentTarget.value=""}})]}),o("label",{htmlFor:d,className:"sr-only",children:t.composerLabel}),o("textarea",{id:d,ref:y,rows:1,value:a,onChange:w=>r(w.target.value),onKeyDown:R,placeholder:t.composerPlaceholder,className:"max-h-40 min-h-11 flex-1 resize-none rounded-xl border border-neutral-300 bg-white px-3 py-2.5 text-sm text-neutral-900 placeholder:text-neutral-500 focus-visible:border-neutral-500 focus-visible:outline-none dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-50 dark:placeholder:text-neutral-400"}),o("button",{type:"submit","aria-label":t.send,disabled:a.trim().length===0&&!i,className:z(xe,"w-11 px-0 transition-[transform,opacity] duration-150 ease-out motion-safe:active:scale-95 disabled:scale-100 motion-reduce:transition-none"),children:o(kt,{className:"size-5","aria-hidden":"true"})})]})]})}var _t=["spam","abuse","illegal","other"];function Lt({texts:e,messageId:t,onCancel:n,onSubmit:a}){let[r,d]=S("spam"),[y,p]=S(""),[l,i]=S(!1),[g,x]=S(!1),k=Ze(),v={spam:e.reasonSpam,abuse:e.reasonAbuse,illegal:e.reasonIllegal,other:e.reasonOther};return N("form",{"data-testid":"chat-report",className:"flex flex-col gap-3 border-t border-neutral-200 p-4 dark:border-neutral-800",onSubmit:async f=>{f.preventDefault(),i(!0),x(!1);try{await a(r,y.trim())}catch{x(!0)}finally{i(!1)}},children:[o("p",{className:"text-sm font-semibold",children:t?e.reportTitle:e.reportConversationTitle}),N("fieldset",{className:"flex flex-col gap-1",children:[o("legend",{className:"mb-1 text-xs text-neutral-600 dark:text-neutral-400",children:e.reportReason}),_t.map(f=>N("label",{className:"flex min-h-9 items-center gap-2 text-sm",children:[o("input",{type:"radio",name:"chat-report-reason",value:f,checked:r===f,onChange:()=>d(f),className:"size-4 accent-neutral-900 dark:accent-white"}),v[f]]},f))]}),N("div",{className:"flex flex-col gap-1",children:[o("label",{htmlFor:k,className:"text-xs text-neutral-600 dark:text-neutral-400",children:e.reportNote}),o("textarea",{id:k,rows:2,maxLength:1e3,value:y,onChange:f=>p(f.target.value),className:"resize-none rounded-xl border border-neutral-300 bg-white px-3 py-2 text-sm focus-visible:border-neutral-500 focus-visible:outline-none dark:border-neutral-700 dark:bg-neutral-950"})]}),g&&o("p",{role:"alert",className:"text-sm text-red-700 dark:text-red-400",children:e.reportError}),N("div",{className:"flex flex-wrap justify-end gap-2",children:[o("button",{type:"button",className:Z,onClick:n,children:e.reportCancel}),o("button",{type:"submit",className:xe,disabled:l,"aria-busy":l||void 0,children:e.reportSend})]})]})}function At(e,t,n){let a=e instanceof Error?e.message:"",r=t.toLowerCase().startsWith("en");return{"amount-below-minimum":["Kwota jest ni\u017Csza od minimalnej.","The amount is below the minimum."],"amount-above-maximum":["Kwota przekracza maksymaln\u0105.","The amount is above the maximum."],"amount-below-gateway-minimum":["Kwota jest za niska dla dost\u0119pnych p\u0142atno\u015Bci.","The amount is too low for available payment methods."],"amount-invalid":["Podaj prawid\u0142ow\u0105 kwot\u0119.","Enter a valid amount."],"email-verification-required":["Potwierd\u017A adres e-mail, aby odebra\u0107 pakiet.","Verify your email to claim this pack."],"free-claim-exists":["Ten adres e-mail wykorzysta\u0142 ju\u017C limit darmowych odbior\xF3w.","This email has reached the free claim limit."],"free-order-not-supported":["Nie mo\u017Cna zrealizowa\u0107 tego darmowego zam\xF3wienia.","This free order cannot be completed."],"captcha-required":["Potwierd\u017A, \u017Ce nie jeste\u015B robotem.","Complete the security check."],"captcha-invalid":["Weryfikacja wygas\u0142a. Spr\xF3buj ponownie.","The security check expired. Try again."],"rate-limited":["Zbyt wiele pr\xF3b. Spr\xF3buj ponownie za chwil\u0119.","Too many attempts. Try again shortly."],"incorrect-code":["Nieprawid\u0142owy kod. Sprawd\u017A wiadomo\u015B\u0107 i\xA0spr\xF3buj ponownie.","The code is incorrect. Check your email and try again."],"too-many-attempts":["Popro\u015B o\xA0nowy kod za kilka minut.","Request a new code in a few minutes."],unavailable:["Weryfikacja jest chwilowo niedost\u0119pna.","Verification is temporarily unavailable."]}[a]?.[r?1:0]??n}import{useCallback as G,useEffect as ue,useRef as me,useState as Qe}from"react";var Et=()=>import("@nats-io/nats-core");function _e(e){let t=e.pollIntervalMs??8e3,n=e.retryMs??6e4,a=e.loadNats??Et,r=`.${e.kind}.${e.id}`,d=!1,y,p="",l,i,g,x=()=>{l!=null&&clearInterval(l),l=void 0},k=()=>{d||(e.onMode("polling"),l==null&&(l=setInterval(()=>{e.poll().catch(()=>{})},t)),i==null&&(i=setTimeout(()=>{i=void 0,f()},n)))},v=T=>{g!=null&&clearTimeout(g);let C=Date.parse(T);if(!Number.isFinite(C))return;let h=Math.max(5e3,C-Date.now()-6e4);g=setTimeout(async()=>{if(!d)try{let b=await e.client.realtimeToken({fresh:!0});p=b.jwt,v(b.expiresAt)}catch{}},h)};async function f(){if(!d){if(typeof WebSocket>"u"){k();return}e.onMode("connecting");try{let T=await e.client.realtimeToken(),C=T.subjects.find(R=>R.endsWith(r));if(C||(T=await e.client.realtimeToken({fresh:!0}),C=T.subjects.find(R=>R.endsWith(r))),!C||!T.jwt)throw new Error("subject not granted");p=T.jwt;let h=await a();if(d)return;let b=e.realtimeUrl?[e.realtimeUrl]:T.servers.length>0?T.servers:[Me],_=await h.wsconnect({servers:b,authenticator:h.jwtAuthenticator(()=>p),name:"bitsnap-react/chat",reconnect:!0,maxReconnectAttempts:5});if(d){_.close().catch(()=>{});return}y=_;let E=new TextDecoder;_.subscribe(C,{callback:(R,w)=>{if(!R)try{let c=Ie(JSON.parse(E.decode(w.data)));c&&e.onEvent(c)}catch{}}}),_.closed().then(()=>{y===_&&(y=void 0,k())}),v(T.expiresAt),x(),e.onMode("live"),e.poll().catch(()=>{})}catch{k()}}}return f(),()=>{d=!0,x(),i!=null&&clearTimeout(i),g!=null&&clearTimeout(g);let T=y;y=void 0,T&&T.close().catch(()=>{})}}var Le=50,ae={status:"loading",messages:[],hasMore:!1,loadingOlder:!1,live:"off"};function St(){let e=globalThis.crypto;if(e&&typeof e.randomUUID=="function")return e.randomUUID();let t=new Uint8Array(16);if(e&&typeof e.getRandomValues=="function")e.getRandomValues(t);else for(let a=0;a<16;a++)t[a]=Math.floor(Math.random()*256);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=Array.from(t,a=>a.toString(16).padStart(2,"0")).join("");return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}function pe(e,t){let n=new Map(e.map(a=>[a.id,a]));for(let a of t){let r=n.get(a.id);if(a.status==="pending"){if(r&&!r.local)continue;n.set(a.id,{...a,retryFile:r?.retryFile,local:r?.local??{state:"pending"}});continue}r?.local&&r.local.state!=="pending"&&r.local.state!=="unconfirmed"||n.set(a.id,{...a,local:void 0})}return[...n.values()].sort((a,r)=>{let d=Date.parse(a.createdAt)||0,y=Date.parse(r.createdAt)||0;return d-y})}function qt(e,t){let n=e.findIndex(r=>r.id===t.id);if(n<0)return e;let a=[...e];return a[n]={...t,local:void 0},a}function Ae(e){if(e.kind==="pack"){if(e.composerLocked)return{reason:"expired",productId:e.productId};if(e.repliesLeft<=0)return{reason:"replies",productId:e.productId}}}function et(e,t,n){let a=Number(e.data.price_cents);return{reason:t,productId:typeof e.data.product_id=="string"&&e.data.product_id?e.data.product_id:n,priceCents:Number.isFinite(a)&&a>0?a:void 0,priceType:e.data.price_type==="free"||e.data.price_type==="pay_what_you_want"?e.data.price_type:"one_time",minimumCents:Number.isFinite(Number(e.data.price_min_cents))?Number(e.data.price_min_cents):void 0,maximumCents:Number.isFinite(Number(e.data.price_max_cents))?Number(e.data.price_max_cents):void 0,freeClaimLimit:Number.isFinite(Number(e.data.free_claim_limit))?Number(e.data.free_claim_limit):void 0,welcome:typeof e.data.welcome=="string"?e.data.welcome:void 0}}function we(e){return e instanceof $?e:new $("internal_error",0)}function Ce(e){let{client:t,target:n}=e,[a,r]=Qe(ae),[d,y]=Qe(0),p=me(a);p.current=a;let l=me(new Set),i=me(void 0),g=me(void 0),x=n.kind==="thread"?`t:${n.threadId??""}:${n.productId??""}`:`c:${n.channelId}:${n.productId??""}`;ue(()=>{let u=!1;if(g.current=void 0,r(ae),t!==null){if(!t){r({...ae,status:"error",error:new $("no_token",401)});return}return(async()=>{try{let s=await t.me(),m=s.email.toLowerCase(),j,B,D;if(n.kind==="thread"){if(j=n.threadId?s.threads.find(Y=>Y.id===n.threadId):s.threads.find(Y=>Y.productId===n.productId),!j&&n.productId)try{j=await t.openThread(n.productId)}catch(Y){let O=we(Y);if(O.code==="locked"||O.status===404){u||r({...ae,status:"locked",me:m,lock:et(O,"no-pack",n.productId)});return}throw O}if(!j)throw new $("not_found",404);D=j.id}else B=s.channels.find(Y=>Y.id===n.channelId),D=n.channelId;let F;try{F=await t.messages(D,{limit:Le})}catch(Y){let O=we(Y);if(O.code==="locked"){u||r({...ae,status:"locked",me:m,thread:j,channel:B,threadId:D,lock:et(O,n.kind==="channel"?"no-access":"no-pack",n.productId??B?.productId??j?.productId)});return}throw O}if(u)return;r({...ae,status:"ready",me:m,thread:j,channel:B,threadId:D,lock:j?Ae(j):void 0,messages:pe([],F.messages),hasMore:F.hasMore})}catch(s){u||r({...ae,status:"error",error:we(s)})}})(),()=>{u=!0}}},[t,x,d]);let k=G(()=>{t&&(i.current&&clearTimeout(i.current),i.current=setTimeout(async()=>{try{let u=await t.me();r(s=>{if(s.status!=="ready")return s;let m=s.thread&&u.threads.find(B=>B.id===s.thread.id),j=s.channel&&u.channels.find(B=>B.id===s.channel.id);return{...s,thread:m??s.thread,channel:j??s.channel,lock:m?Ae(m):s.lock}})}catch{}},1500))},[t]),v=me(new Set);ue(()=>{let u=!1;for(let s of a.messages)s.paymentRequest?.status!=="paid"||v.current.has(s.id)||(v.current.add(s.id),u=!0);u&&k()},[a.messages,k]);let f=G(async()=>{let{threadId:u}=p.current;if(!t||!u)return;let s=await t.messages(u,{limit:Le});r(m=>m.threadId===u?{...m,messages:pe(m.messages,s.messages)}:m)},[t]),T=G(u=>{r(s=>{switch(u.type){case"message.created":return{...s,messages:pe(s.messages,[u.message])};case"message.updated":{let m=qt(s.messages,u.message);return m===s.messages?s:{...s,messages:m}}case"message.rejected":return{...s,messages:s.messages.map(m=>m.id===u.id?{...m,local:{state:"rejected",reason:u.reason||"rejected"}}:m)};case"message.deleted":return{...s,messages:s.messages.map(m=>m.id===u.id?{...m,deleted:!0,body:"",attachmentKey:void 0}:m)};case"message.pinned":case"message.unpinned":return{...s,messages:s.messages.map(m=>m.id===u.id?{...m,pinned:u.type==="message.pinned"}:m)}}}),u.type==="message.created"&&!u.message.system&&u.message.authorEmail.toLowerCase()!==p.current.me&&k()},[k]),h=a.status==="ready"?a.threadId:void 0;ue(()=>{if(!t||!h)return;let u=_e({client:t,kind:n.kind,id:h,onEvent:T,onMode:s=>r(m=>({...m,live:s})),poll:f,pollIntervalMs:e.pollIntervalMs,realtimeUrl:e.realtimeUrl,loadNats:e.loadNats});return()=>{u(),r(s=>({...s,live:"off"}))}},[t,h,T,f]),ue(()=>{if(!t||!a.threadId||a.status!=="ready")return;let u=[...a.messages].reverse().find(s=>!s.local&&s.authorEmail.toLowerCase()!==a.me);!u||g.current===u.id||(g.current=u.id,t.markRead(a.threadId,u.id).catch(()=>{}))},[t,a.threadId,a.status,a.messages,a.me]),ue(()=>()=>{for(let u of l.current)clearTimeout(u);i.current&&clearTimeout(i.current)},[]);let b=(u,s)=>r(m=>({...m,messages:m.messages.map(j=>j.id===u?s(j):j)})),_=G(async(u,s,m)=>{let j=u.trim(),{threadId:B,me:D}=p.current;if(!t||!B||!j&&!s)return;let F=m??St(),Y={id:F,threadId:B,authorEmail:D??"",body:j,kind:"text",retryFile:s,...s?{attachmentName:s.name,attachmentSize:s.size,attachmentContentType:s.type,attachmentKind:s.type.startsWith("image/")?"image":"file"}:{},createdAt:new Date().toISOString(),pinned:!1,deleted:!1,system:!1,status:"pending",local:{state:"pending"}};r(O=>({...O,messages:[...O.messages,Y]}));try{let O=s?await t.uploadAttachment(B,s,A=>b(F,fe=>({...fe,local:{...fe.local,state:"pending",uploadProgress:A}}))):void 0;O&&b(F,A=>({...A,attachmentKey:O.key,attachmentKind:O.kind,attachmentName:O.filename,attachmentSize:O.size,attachmentContentType:O.contentType,local:{state:"pending"}}));let J=await t.send(B,{body:j,clientId:F,...O?{attachment:O}:{}});r(A=>({...A,messages:pe(A.messages,[{...J.message,id:F}]),thread:A.thread?{...A.thread,...J.thread,id:A.thread.id}:A.thread,lock:A.thread?Ae({...A.thread,...J.thread,id:A.thread.id}):A.lock}));let ne=setTimeout(()=>{l.current.delete(ne),b(F,A=>A.local?.state==="pending"?{...A,local:{state:"unconfirmed"}}:A)},e.confirmTimeoutMs??45e3);l.current.add(ne)}catch(O){let J=we(O),ne=J.code==="network"||J.code==="unavailable"||J.status>=500;b(F,A=>({...A,local:{state:ne?"failed":"rejected",reason:J.code,retryAfter:J.retryAfter,keepId:ne||m!=null}}))}},[t,e.confirmTimeoutMs]),E=G(u=>{r(s=>({...s,messages:s.messages.filter(m=>m.id!==u)}))},[]),R=G(async u=>{let s=p.current.messages.find(j=>j.id===u);if(!s)return;let m=s.local?.state!=="rejected"||s.local.keepId===!0;E(u),await _(s.body,s.retryFile,m?u:void 0)},[E,_]),w=G(async u=>{let{threadId:s}=p.current,m=p.current.messages.find(j=>j.id===u);if(!(!t||!s||!m)){b(u,j=>({...j,deleted:!0,body:"",attachmentKey:void 0}));try{await t.deleteMessage(s,u)}catch(j){throw b(u,()=>m),j}}},[t]),c=G(async u=>{let s=p.current.threadId;if(!t||!s)throw new $("not_found",404);return t.attachmentURL(s,u)},[t]),L=G(async u=>{let{threadId:s}=p.current;!t||!s||await t.report({threadId:s,...u})},[t]),q=G(async u=>{let{threadId:s}=p.current;!t||!s||(await t.mute(s,u),r(m=>m.thread?{...m,thread:{...m.thread,muted:u}}:m))},[t]),I=G(async()=>{let{threadId:u,messages:s,hasMore:m,loadingOlder:j}=p.current,B=s.find(D=>!D.local);if(!(!t||!u||!m||j||!B)){r(D=>({...D,loadingOlder:!0}));try{let D=await t.messages(u,{before:B.id,limit:Le});r(F=>({...F,loadingOlder:!1,hasMore:D.hasMore,messages:pe(F.messages,D.messages)}))}catch{r(D=>({...D,loadingOlder:!1}))}}},[t]),P=G(()=>y(u=>u+1),[]);return{...a,send:_,retry:R,getAttachmentURL:c,discard:E,deleteMessage:w,report:L,setMuted:q,loadOlder:I,reload:P}}import{jsx as ve}from"react/jsx-runtime";function tt(e){let[t,n]=Ut(null),a=e.host??Te().host;Ft(()=>{e.client||e.token||n(Ue(e.projectID,a))},[e.client,e.token,e.projectID,a]);let r=e.token??t,d=e.chatProjectID??e.projectID;return Ee(()=>{if(e.client)return e.client;if(r===null)return null;if(r)return de({projectId:d,token:r,baseUrl:e.apiUrl,attachmentsUrl:e.attachmentsUrl})},[e.client,r,d,e.apiUrl,e.attachmentsUrl])}function nt(e){let t=Ot(null);return async n=>{let a=e.buyProductId??n.productId;if(!a)return;let r={productId:a,reason:n.reason,priceCents:n.priceCents,...n.amount!=null?{amount:n.amount}:{},...n.email?{email:n.email}:{},...n.code?{code:n.code}:{},...n.turnstileToken!=null?{turnstileToken:n.turnstileToken}:{}};if(e.onBuy){await e.onBuy(r);return}let d=(e.host??Te().host??"https://bitsnap.pl").replace(/\/+$/,""),y=n.freeClaimLimit!=null&&(n.priceType==="free"||n.priceType==="pay_what_you_want"&&n.minimumCents===0&&r.amount===0);if(y&&r.email&&r.turnstileToken!=null){t.current=null;let p=await fetch(`${d}/api/integrations/${encodeURIComponent(e.projectID)}/public-commerce/free-claim/request-code`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:r.email,turnstileToken:r.turnstileToken})}),l=await p.json();if(!p.ok)throw new Error(l.code??"internal");return}if(y&&r.email&&r.code){let p=JSON.stringify([d,e.projectID,a,r.email,r.code]);if(!t.current||t.current.key!==p||t.current.expires<=Date.now()){t.current=null;let g=await fetch(`${d}/api/integrations/${encodeURIComponent(e.projectID)}/public-commerce/free-claim/verify-code`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:r.email,code:r.code})}),x=await g.json();if(!g.ok||!x.claimToken)throw new Error(x.code??"email-verification-required");t.current={key:p,token:x.claimToken,expires:Date.now()+(x.expiresIn??600)*1e3}}let l=await fetch(`${d}/api/integrations/${encodeURIComponent(e.projectID)}/public-commerce/buy`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({items:[{id:a,quantity:1,amount:0}],details:{email:r.email},claimToken:t.current.token})}),i=await l.json();if(!l.ok||!i.url)throw new Error(i.code??"free-order-not-supported");window.location.assign(i.url);return}await ie({projectID:e.projectID,productId:a,name:e.title,priceCents:n.priceCents,amount:n.amount,host:e.host})}}function Se(e){let t=tt(e),n=e.locale??X(),a=Ee(()=>re(e.texts,n),[e.texts,n]),r=Ce({client:t,target:{kind:"thread",threadId:e.threadId,productId:e.productId},pollIntervalMs:e.pollIntervalMs,realtimeUrl:e.realtimeUrl,loadNats:e.loadNats}),d=nt(e);return ve("div",{className:"bitsnap-react h-full",children:ve(ze,{host:e.host,conversation:r,texts:a,locale:n,kind:"thread",title:e.title,onBack:e.onBack,onBuy:d,className:e.className})})}function qe(e){let t=tt(e),n=e.locale??X(),a=Ee(()=>re(e.texts,n),[e.texts,n]),r=Ce({client:t,target:{kind:"channel",channelId:e.channelId,productId:e.productId},pollIntervalMs:e.pollIntervalMs,realtimeUrl:e.realtimeUrl,loadNats:e.loadNats}),d=nt(e);return ve("div",{className:"bitsnap-react h-full",children:ve(ze,{host:e.host,conversation:r,texts:a,locale:n,kind:"channel",title:e.title,onBack:e.onBack,onBuy:d,className:e.className})})}import{Hash as Bt,MessageCircle as Dt}from"lucide-react";import{lazy as $t,Suspense as Ht,useEffect as Wt,useMemo as he,useState as ge}from"react";import{jsx as M,jsxs as W}from"react/jsx-runtime";var Kt=$t(()=>import("./BitsnapCart-ZC6LMXLO.mjs"));function Yt(e,t){return e?e.deleted?t.deletedPlaceholder:e.kind==="payment_request"?`${t.paymentRequestPreview}: ${e.paymentRequest?.title??t.paymentRequestFallback}`:e.body:t.noMessagesYet}var rt=e=>e.productType===5||e.productType===6;function ot(e,t){let n=[...new Set(e.filter(rt).map(a=>a.projectId).filter(Boolean))];return n.length>0?n:t?[t]:[]}function Vt(e){let t=new Map;for(let n of e)rt(n)&&n.projectId&&n.chatProjectId&&t.set(n.projectId,n.chatProjectId);return t}function st({accessToken:e,products:t,chatApiUrl:n,projectID:a,host:r,selection:d,onSelect:y,locale:p=X(),texts:l}){let i=he(()=>re(l,p),[l,p]),g=he(()=>ot(t,a),[t,a]),x=he(()=>Vt(t),[t]),k=he(()=>{let I=new Map;for(let P of g)I.set(P,de({projectId:x.get(P)??P,token:e,baseUrl:n}));return I},[g,x,e,n]),[v,f]=ge({}),[T,C]=ge(0),h=`${d.chatProject??""}:${d.thread??""}:${d.channel??""}`;Wt(()=>{let I=!1;for(let[P,u]of k)f(s=>s[P]?.status==="ready"?s:{...s,[P]:{status:"loading"}}),u.me().then(s=>!I&&f(m=>({...m,[P]:{status:"ready",me:s}})),s=>!I&&f(m=>({...m,[P]:{status:"error",error:s instanceof $?s:new $("internal_error",0)}})));return()=>{I=!0}},[k,T,h]);let b=he(()=>{let I=new Map;for(let P of t)I.set(P.productId,P);return I},[t]),[_,E]=ge(),R=I=>async P=>{E(I),await ie({projectID:I,productId:P.productId,name:b.get(P.productId)?.productName,priceCents:P.priceCents,host:r})},w=d.chatProject?k.get(d.chatProject):void 0,c=!!(w&&(d.thread||d.channel)),L=()=>y({}),q=null;if(c&&w&&d.chatProject){let I=d.chatProject,P=v[I],u=P?.status==="ready"?P.me:void 0;if(d.thread){let s=u?.threads.find(m=>m.id===d.thread);q=M(Se,{projectID:I,client:w,threadId:d.thread,title:s?.productId&&b.get(s.productId)?.productName||void 0,locale:p,texts:l,onBack:L,onBuy:R(I)},`t:${I}:${d.thread}`)}else if(d.channel){let s=u?.entitlements.channels.find(m=>m.channelId===d.channel);q=M(qe,{projectID:I,client:w,channelId:d.channel,productId:s?.productId,locale:p,texts:l,onBack:L,onBuy:R(I)},`c:${I}:${d.channel}`)}}return W("div",{className:"flex min-h-0 flex-1 flex-col",children:[W("div",{className:z(c&&"hidden md:block"),children:[M("h3",{className:"text-2xl",children:i.inboxHeading}),M("p",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:i.inboxIntro})]}),W("div",{className:"mt-6 grid min-h-0 flex-1 gap-4 md:grid-cols-[minmax(16rem,22rem)_1fr]",children:[M("div",{className:z("min-w-0",c&&"hidden md:block"),children:M(Zt,{projects:g,loads:v,clients:k,products:t,texts:i,locale:p,selection:d,onSelect:y,onRetry:()=>C(I=>I+1)})}),M("div",{className:z("min-h-[32rem] min-w-0 md:h-[calc(100dvh-10rem)]",!c&&"hidden md:flex"),children:q??M("div",{className:"flex h-full w-full items-center justify-center rounded-xl border border-dashed border-neutral-300 p-6 text-sm text-neutral-600 dark:border-neutral-700 dark:text-neutral-400",children:i.selectConversation})})]}),_&&M(Ht,{fallback:null,children:M(Kt,{projectID:_,locale:p})})]})}var at="flex min-h-11 w-full min-w-0 items-start gap-3 rounded-xl p-3 text-left transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-neutral-500";function Zt({projects:e,loads:t,clients:n,products:a,texts:r,locale:d,selection:y,onSelect:p,onRetry:l}){let[i,g]=ge(),[x,k]=ge(),v=new Map(a.map(b=>[b.productId,b])),f=e.length>1,T=e.map(b=>t[b]??{status:"loading"});if(T.length>0&&T.every(b=>b.status==="loading"))return M("div",{role:"status","aria-busy":"true","aria-label":r.loading,className:"flex flex-col gap-2",children:[0,1,2].map(b=>M("div",{"aria-hidden":"true",className:"h-20 rounded-xl bg-white motion-safe:animate-pulse dark:bg-neutral-800"},b))});if(T.length===0||T.every(b=>b.status==="error"))return W("div",{role:"alert",className:"flex flex-col items-start gap-3","data-testid":"chat-inbox-error",children:[M("p",{className:"text-sm text-neutral-700 dark:text-neutral-300",children:r.inboxError}),M("button",{type:"button",onClick:l,className:"inline-flex min-h-11 items-center rounded-md bg-neutral-900 px-4 text-sm font-medium text-white hover:bg-neutral-800 focus-visible:outline-2 focus-visible:outline-current dark:bg-white dark:text-neutral-900",children:r.retry})]});let C=[],h=[];for(let b of e){let _=t[b];if(_?.status!=="ready")continue;let{me:E}=_,R=f?a.find(c=>c.projectId===b)?.projectName:void 0;for(let c of E.threads){let L=c.productId?v.get(c.productId):void 0,q=y.chatProject===b&&y.thread===c.id,I=[ce(r,c.repliesLeft,d)];c.expiresAt&&I.push(K(c.composerLocked?r.expiredOn:r.expiresOn,{date:oe(c.expiresAt,d)})),c.responseHours>0&&I.push(K(r.responseHours,{hours:c.responseHours}));let P=c.lastMessage;C.push(M("li",{children:W("button",{type:"button","data-thread-id":c.id,"aria-current":q?"true":void 0,onClick:()=>p({chatProject:b,thread:c.id}),className:z(at,q?"bg-neutral-200 dark:bg-neutral-800":"bg-white hover:bg-neutral-50 dark:bg-neutral-900 dark:hover:bg-neutral-800"),children:[M(Dt,{className:"mt-0.5 size-5 shrink-0 text-neutral-500 dark:text-neutral-400","aria-hidden":"true"}),W("span",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[W("span",{className:"flex items-baseline gap-2",children:[M("span",{className:z("truncate",c.unread>0?"font-semibold":"font-medium"),children:L?.productName||r.chatFallbackTitle}),P&&M("time",{dateTime:P.createdAt,className:"ml-auto shrink-0 text-xs text-neutral-500 dark:text-neutral-400",children:be(P.createdAt,d)})]}),R&&M("span",{className:"truncate text-xs text-neutral-500 dark:text-neutral-400",children:R}),W("span",{className:"flex items-center gap-2",children:[M("span",{className:"line-clamp-1 flex-1 text-sm text-neutral-600 dark:text-neutral-300",children:Yt(P,r)}),c.unread>0&&M("span",{"aria-label":K(r.unread,{count:c.unread}),className:"inline-flex min-w-5 shrink-0 items-center justify-center rounded-full bg-neutral-900 px-1.5 text-xs font-semibold text-white tabular-nums dark:bg-white dark:text-neutral-900",children:c.unread})]}),W("span",{className:z("text-xs",c.repliesLeft<=0||c.composerLocked?"text-amber-800 dark:text-amber-300":"text-neutral-500 dark:text-neutral-400"),children:[I.join(" \xB7 "),c.muted&&` \xB7 ${r.mutedBadge}`]})]})]})},`t:${b}:${c.id}`))}for(let c of E.channels){let L=y.chatProject===b&&y.channel===c.id;C.push(M("li",{children:W("button",{type:"button","data-channel-id":c.id,"aria-current":L?"true":void 0,onClick:()=>p({chatProject:b,channel:c.id}),className:z(at,L?"bg-neutral-200 dark:bg-neutral-800":"bg-white hover:bg-neutral-50 dark:bg-neutral-900 dark:hover:bg-neutral-800"),children:[M(Bt,{className:"mt-0.5 size-5 shrink-0 text-neutral-500 dark:text-neutral-400","aria-hidden":"true"}),W("span",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[M("span",{className:"truncate font-medium",children:c.name||r.channelFallbackTitle}),R&&M("span",{className:"truncate text-xs text-neutral-500 dark:text-neutral-400",children:R}),M("span",{className:"line-clamp-1 text-sm text-neutral-600 dark:text-neutral-300",children:c.topic||r.kindChannel}),c.memberCount>0&&M("span",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:K(r.members,{count:c.memberCount})})]})]})},`c:${b}:${c.id}`))}for(let c of E.entitlements.packs){let L=`${b}:${c.productId}`,q=v.get(c.productId)?.productName||c.name||r.chatFallbackTitle;h.push(W("li",{className:"flex flex-col gap-2 rounded-xl bg-white p-3 dark:bg-neutral-900 sm:flex-row sm:items-center",children:[W("span",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[M("span",{className:"truncate font-medium",children:q}),M("span",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:[ce(r,c.repliesLeftHint,d),c.expiresAt?K(r.expiresOn,{date:oe(c.expiresAt,d)}):""].filter(Boolean).join(" \xB7 ")})]}),M("button",{type:"button",disabled:i===L,"aria-busy":i===L||void 0,onClick:async()=>{let I=n.get(b);if(I){g(L),k(void 0);try{let P=await I.openThread(c.productId);p({chatProject:b,thread:P.id})}catch{k(L)}finally{g(void 0)}}},className:"inline-flex min-h-11 shrink-0 items-center justify-center rounded-md bg-neutral-900 px-4 text-sm font-medium text-white hover:bg-neutral-800 disabled:opacity-50 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-neutral-500 dark:bg-white dark:text-neutral-900 dark:hover:bg-neutral-200",children:i===L?r.loading:r.startChat}),x===L&&M("p",{role:"alert",className:"text-xs text-red-700 dark:text-red-400 sm:basis-full",children:r.errorGeneric})]},`p:${L}`))}let w=new Set(E.channels.map(c=>c.id));for(let c of E.entitlements.channels){if(c.channelId&&w.has(c.channelId))continue;let L=v.get(c.productId)?.productName||r.channelFallbackTitle;h.push(W("li",{className:"flex flex-col gap-2 rounded-xl bg-white p-3 dark:bg-neutral-900 sm:flex-row sm:items-center",children:[W("span",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[M("span",{className:"truncate font-medium",children:L}),!c.channelId&&M("span",{className:"text-xs text-neutral-500 dark:text-neutral-400",children:r.channelNotReady})]}),c.channelId&&M("button",{type:"button",onClick:()=>p({chatProject:b,channel:c.channelId}),className:"inline-flex min-h-11 shrink-0 items-center justify-center rounded-md border border-neutral-300 px-4 text-sm font-medium hover:bg-neutral-50 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-neutral-500 dark:border-neutral-700 dark:hover:bg-neutral-800",children:r.openChannel})]},`e:${b}:${c.productId}`))}}return C.length===0&&h.length===0?M("p",{"data-testid":"chat-inbox-empty",className:"text-sm text-neutral-600 dark:text-neutral-400",children:r.inboxEmpty}):W("div",{className:"flex flex-col gap-6","data-testid":"chat-inbox",children:[C.length>0&&M("ul",{className:"flex flex-col gap-2",children:C}),h.length>0&&W("section",{className:"flex flex-col gap-2",children:[M("h4",{className:"text-sm font-semibold text-neutral-700 dark:text-neutral-300",children:r.startSection}),M("ul",{className:"flex flex-col gap-2",children:h})]})]})}export{He as CHAT_TEXT_TABLES,qe as Channel,$ as ChatError,Se as ChatThread,Ne as DEFAULT_CHAT_API_URL,Re as DEFAULT_CHAT_ATTACHMENTS_URL,Me as DEFAULT_CHAT_REALTIME_URL,st as PanelMessages,ie as addPackToCart,ot as chatProjects,de as createChatClient,re as getChatTexts,Ie as parseRealtimeEvent,_e as startLive,Ce as useConversation};
2
2
  //# sourceMappingURL=chat.mjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkW3RGQYPDjs = require('./chunk-W3RGQYPD.js');var Oe=Symbol.for("bitsnap.pageViews");function ye(e){let t=e;return t[Oe]??={path:null,starters:new Set,watching:!1}}function De(e,t){let n=()=>{try{t()}catch (e2){}};for(let o of["pushState","replaceState"]){let a=e.history[o];e.history[o]=function(...i){let c=a.apply(this,i);return n(),c}}e.addEventListener("popstate",n)}function A(e,t=window){try{let n=ye(t),o=()=>e();n.watching||(n.watching=!0,De(t,()=>{let i=t.location.pathname;i===n.path||n.starters.size===0||(n.path=i,_optionalChain([n, 'access', _2 => _2.starters, 'access', _3 => _3.values, 'call', _4 => _4(), 'access', _5 => _5.next, 'call', _6 => _6(), 'access', _7 => _7.value, 'optionalCall', _8 => _8()]))})),n.starters.add(o);let a=t.location.pathname;return a!==n.path&&(n.path=a,o()),()=>void n.starters.delete(o)}catch (e3){return()=>{}}}function ge(e=window){let t=ye(e);t.path=null,t.starters.clear()}var ve="1.22.0";function I(e){let t=new Uint8Array(e),n=typeof crypto<"u"?crypto:void 0;if(n&&typeof n.getRandomValues=="function")n.getRandomValues(t);else for(let o=0;o<e;o++)t[o]=Math.floor(Math.random()*256);return t}var me="X-Bitsnap-Visitor",$e=390*24*60*60,Me=/^[A-Za-z0-9_-]{22}$/;function R(e){return e.BitsnapConsent}function je(e,t){for(let n of e.cookie.split(";")){let o=n.indexOf("=");if(o!==-1&&n.slice(0,o).trim()===t)return n.slice(o+1).trim()}return null}function He(e){let t=e.toLowerCase();return t==="bitsnap.pl"||t.endsWith(".bitsnap.pl")}function F(e,t){try{let n=R(e);if(!n)return!1;if(n.scope==="project")return n.projectKey===t;let o=He(e.location.hostname);return n.scope==="global"?!o:!1}catch (e4){return!1}}function J(e,t){try{return _optionalChain([R, 'call', _9 => _9(e), 'optionalAccess', _10 => _10.get, 'call', _11 => _11(), 'optionalAccess', _12 => _12.c, 'access', _13 => _13.analytics])===!0&&F(e,t)}catch (e5){return!1}}function he(){let e="";return I(16).forEach(t=>e+=String.fromCharCode(t)),btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Ee(e,t){try{return je(e,_chunkW3RGQYPDjs.g.call(void 0, t))}catch (e6){return null}}function B(e,t){let n=Ee(e,t);return n!==null&&Me.test(n)?n:null}function ke(e,t,n){try{let o=e.document,a=`${_chunkW3RGQYPDjs.g.call(void 0, t)}=${n}; Max-Age=${$e}; Path=/; SameSite=Lax`+(e.location.protocol==="https:"?"; Secure":"");for(let i of _chunkW3RGQYPDjs.o.call(void 0, e.location.hostname).reverse())if(o.cookie=`${a}; Domain=${i}`,B(o,t)===n)return;o.cookie=a}catch (e7){}}function be(e,t){try{let n=e.document;if(Ee(n,t)===null)return;let o=`${_chunkW3RGQYPDjs.g.call(void 0, t)}=; Max-Age=0; Path=/; SameSite=Lax`+(e.location.protocol==="https:"?"; Secure":"");n.cookie=o;for(let a of _chunkW3RGQYPDjs.o.call(void 0, e.location.hostname))n.cookie=`${o}; Domain=${a}`}catch (e8){}}function N(e,t){try{let n=e.navigator;return _optionalChain([n, 'optionalAccess', _14 => _14.globalPrivacyControl])===!0||_optionalChain([n, 'optionalAccess', _15 => _15.webdriver])===!0?null:J(e,t)?B(e.document,t):null}catch (e9){return null}}var Ue="https://collect.bitsnap.pl",Ke=5e3,Ge=20,Te=32*1024,ze=60*1024,xe=/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function _e(e){return typeof TextEncoder=="function"?new TextEncoder().encode(e).length:unescape(encodeURIComponent(e)).length}var y={track(){},page(){},clientId:()=>null,flush(){},setEnabled(){},onEvent:()=>()=>{},configure(){},destroy(){}};function Ye(e=Date.now()){let t=I(16),n=e;for(let a=5;a>=0;a--)t[a]=n%256,n=Math.floor(n/256);t[6]=t[6]&15|112,t[8]=t[8]&63|128;let o=Array.from(t,a=>a.toString(16).padStart(2,"0")).join("");return`${o.slice(0,8)}-${o.slice(8,12)}-${o.slice(12,16)}-${o.slice(16,20)}-${o.slice(20)}`}var Ce="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function Fe(){return Array.from(I(16),e=>Ce[e%Ce.length]).join("")}function Je(e,t,n=!1){let o=_e(JSON.stringify({k:e,events:[]})),a=[],i=[],c=o,s=()=>{i.length>0&&a.push({body:JSON.stringify({k:e,events:i}),bytes:c,count:i.length}),i=[],c=o};for(let u of t){let l=_e(JSON.stringify(u));o+l>Te||((i.length>=_chunkW3RGQYPDjs.a.maxBatchEvents||c+l+(i.length>0?1:0)>Te)&&s(),c+=l+(i.length>0?1:0),i.push(u))}if(s(),n){let u=0,l=a.length;for(;l>0&&u+a[l-1].bytes<=ze;)u+=a[l-1].bytes,l--;a=a.slice(l)}return a}function Xe(e){try{return typeof window>"u"||typeof document>"u"?y:qe(e,window)}catch (e10){return y}}function qe(e,t){let n=_chunkW3RGQYPDjs.c.call(void 0, _nullishCoalesce(e.projectKey, () => (""))),o=!!e.debug,a=(...r)=>{o&&console.warn("[bitsnap analytics]",...r)};if(!n)return a("invalid projectKey, tracking is off"),y;let i=n,c=r=>`${(r||Ue).replace(/\/+$/,"")}/e`,s=c(e.endpoint),u=_nullishCoalesce(e.source, () => ("sdk_react")),l=_nullishCoalesce(e.channel, () => ("embed")),b=`bitsnap-react@${ve}`,M=Fe(),T=_chunkW3RGQYPDjs.e.call(void 0, t.location.href),j=_nullishCoalesce(e.env, () => ("live"));if(!e.env)try{new URLSearchParams(t.location.search).has("test")&&(j="test")}catch (e11){}let Le=_chunkW3RGQYPDjs.f.call(void 0, document.referrer),H=e.enabled!==!1,ee=null,Re=0,p=[],h=null,C=new Set;e.onEvent&&C.add(e.onEvent);let E=[],g,m=!0;function W(){let r=R(t);!r||r===g||(g=r,m=!r.ready,_optionalChain([r, 'access', _16 => _16.ready, 'optionalAccess', _17 => _17.then, 'call', _18 => _18(()=>{g===r&&(m=!0,re())},()=>{g===r&&(m=!0)})]))}function te(){W();try{if(!g)return!1;let r=g.get();return!!g.denied&&g.denied("analytics")||!!r&&r.c.analytics===!1}catch (e12){return!1}}function ne(r){C.forEach(f=>{try{f(r)}catch (e13){}})}function U(r){try{if(W(),!g||!F(t,i))return;J(t,i)?P()&&B(t.document,i)===null&&ke(t,i,he()):r&&be(t,i)}catch (e14){}}function re(){if(U(!0),te())p=[],E=[],w();else{if(m&&E.length>0){let r=E;E=[],r.forEach(ne)}p.length>0&&x()}}function P(){if(!H)return!1;let r=t.navigator;return r&&(r.globalPrivacyControl===!0||r.webdriver===!0)?!1:!te()}function w(){h!==null&&clearTimeout(h),h=null}function Be(){h===null&&(h=setTimeout(()=>{h=null,x()},Ke),_optionalChain([h, 'access', _19 => _19.unref, 'optionalCall', _20 => _20()]))}function Ne(r){try{if(typeof fetch=="function"){fetch(s,{method:"POST",body:r,keepalive:!0,credentials:"omit",headers:{"Content-Type":"text/plain"}}).catch(()=>{});return}}catch (e15){}try{let f=t.navigator;f&&typeof f.sendBeacon=="function"&&f.sendBeacon(s,new Blob([r],{type:"text/plain"}))}catch (e16){}}function x(r=!1){try{if(w(),p.length===0)return;if(!P()){p=[];return}if(!m)return;U(m);let f=N(t,i),d=f?p.map(k=>({...k,client_id:f})):p;p=[],Je(i,d,r).forEach(k=>Ne(k.body))}catch (e17){}}function oe(r,f,d){if(!P())return;let k=_chunkW3RGQYPDjs.h.call(void 0, r,f);if(!k.ok){a("dropped",r,k.reason);return}let se=_chunkW3RGQYPDjs.e.call(void 0, t.location.href),K={event_id:_optionalChain([d, 'optionalAccess', _21 => _21.event_id])&&xe.test(d.event_id)?d.event_id:Ye(),event:r,ts:Date.now(),schema_version:1,env:j,source:u,channel:l,sdk:b,page_id:M,page_type:_optionalChain([d, 'optionalAccess', _22 => _22.page_type])!==void 0?d.page_type:ee,host:_nullishCoalesce(_optionalChain([se, 'optionalAccess', _23 => _23.host]), () => (null)),path:_optionalChain([d, 'optionalAccess', _24 => _24.path])?_chunkW3RGQYPDjs.d.call(void 0, d.path.split(/[?#]/)[0]):_nullishCoalesce(_optionalChain([se, 'optionalAccess', _25 => _25.path]), () => (null)),referrer_host:Le,utm_source:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _26 => _26.utm_source]), () => (null)),utm_medium:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _27 => _27.utm_medium]), () => (null)),utm_campaign:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _28 => _28.utm_campaign]), () => (null)),utm_content:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _29 => _29.utm_content]), () => (null)),utm_term:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _30 => _30.utm_term]), () => (null)),ref_code:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _31 => _31.ref_code]), () => (null)),product_id:_nullishCoalesce(_optionalChain([d, 'optionalAccess', _32 => _32.product_id]), () => (null)),variant_id:_nullishCoalesce(_optionalChain([d, 'optionalAccess', _33 => _33.variant_id]), () => (null)),order_ref:_nullishCoalesce(_optionalChain([d, 'optionalAccess', _34 => _34.order_ref]), () => (null)),props:k.props};_optionalChain([d, 'optionalAccess', _35 => _35.event_id])&&!xe.test(d.event_id)&&a("ignored invalid event_id",r),u==="dashboard"&&e.visitorId&&(K.visitor_id=e.visitorId);let ce=_chunkW3RGQYPDjs.i.call(void 0, K);if(!ce.ok){a("dropped",r,ce.reason);return}let G=K;m?ne(G):E.push(G),p.push(G),p.length>=Ge?x():Be()}let ie=()=>x(!0),ae=()=>{document.visibilityState==="hidden"&&x(!0)},S=()=>re();return t.addEventListener("pagehide",ie),document.addEventListener("visibilitychange",ae),t.addEventListener("bitsnap:consent",S),t.addEventListener("bitsnap:consent:ready",S),W(),U(m),{track(r,f,d){try{oe(r,f,d)}catch (e18){}},page(r,f){try{r!==void 0&&(ee=r),oe("page_view",{landing:Re++===0},f)}catch (e19){}},clientId(r){try{return r!==void 0&&_chunkW3RGQYPDjs.c.call(void 0, r)!==i?null:P()?N(t,i):null}catch (e20){return null}},flush:()=>x(),setEnabled(r){H=!!r,H||(p=[],E=[],w())},configure(r){try{(r.env==="live"||r.env==="test")&&(j=r.env),typeof r.endpoint=="string"&&r.endpoint&&(s=c(r.endpoint))}catch (e21){}},onEvent(r){return C.add(r),()=>void C.delete(r)},destroy(){p=[],E=[],w(),C.clear(),t.removeEventListener("pagehide",ie),document.removeEventListener("visibilitychange",ae),t.removeEventListener("bitsnap:consent",S),t.removeEventListener("bitsnap:consent:ready",S)}}}var v,O=null;function D(e){if(!v){let t=Xe(e);return t===y||(v=t,O=_chunkW3RGQYPDjs.c.call(void 0, _nullishCoalesce(e.projectKey, () => ("")))),t}try{let t=_chunkW3RGQYPDjs.c.call(void 0, _nullishCoalesce(e.projectKey, () => ("")));t!==O&&e.debug&&console.warn("[bitsnap analytics]","tracker already started for another projectKey, ignoring",e.projectKey),t===O&&((e.env||e.endpoint)&&v.configure({env:e.env,endpoint:e.endpoint}),e.enabled!=null&&v.setEnabled(e.enabled))}catch (e22){}return v}function Ae(){return v}function xt(){typeof window<"u"&&ge(window),_optionalChain([v, 'optionalAccess', _36 => _36.destroy, 'call', _37 => _37()]),v=void 0,O=null}function _t(e){try{if(typeof window>"u")return{};let t=v,n=null;if(t)n=t.clientId(e);else{let o=e?_chunkW3RGQYPDjs.c.call(void 0, e):null;n=o?N(window,o):null}return n?{[me]:n}:{}}catch (e23){return{}}}var _react = require('react');var nt={track:y.track,page:y.page},Pe=_react.createContext.call(void 0, nt);function St({projectKey:e,env:t,enabled:n,endpoint:o,onEvent:a,autoPageViews:i,children:c}){let s=_react.useMemo.call(void 0, ()=>D({projectKey:e,env:t,endpoint:o,enabled:n}),[e,t,o]),u=_react.useRef.call(void 0, a);u.current=a,_chunkW3RGQYPDjs.q.call(void 0, ()=>{s.setEnabled(n!==!1)},[s,n]),_chunkW3RGQYPDjs.q.call(void 0, ()=>{if(!(i===!1||n===!1||s===y))return A(()=>s.page(null))},[s,i,n]),_chunkW3RGQYPDjs.q.call(void 0, ()=>s.onEvent(b=>_optionalChain([u, 'access', _38 => _38.current, 'optionalCall', _39 => _39(b)])),[s]);let l=_react.useMemo.call(void 0, ()=>({track:s.track.bind(s),page:s.page.bind(s)}),[s]);return _react.createElement.call(void 0, Pe.Provider,{value:l},c)}function we(){return _react.useContext.call(void 0, Pe)}var $={track(){}},X=null;function lt(e){let t=Symbol("bitsnap-instrument");function n(){if(typeof window>"u")return null;let{projectKey:i,analytics:c,provided:s}=e();return c===!1?null:s||(i?D({projectKey:i,source:"sdk_react",channel:"embed",env:typeof c=="object"?c.env:void 0}):null)}let o={track(i,c,s){try{let u=n();if(!u)return;let{analytics:l,pageType:b}=e(),M=b&&_optionalChain([s, 'optionalAccess', _40 => _40.page_type])===void 0?{...s,page_type:b}:s;X=typeof l=="object"&&l.onEvent?t:null,u.track(i,c,M)}catch (e24){}finally{X=null}}};function a(){try{if(!n())return()=>{};let i=Ae();if(!i)return()=>{};let c=e().provided?()=>{}:A(()=>i.page(_nullishCoalesce(e().pageType, () => (null)))),s=i.onEvent(u=>{if(X===t)try{let{analytics:l}=e();typeof l=="object"&&_optionalChain([l, 'access', _41 => _41.onEvent, 'optionalCall', _42 => _42(u)])}catch (e25){}});return()=>{c(),s()}}catch (e26){return()=>{}}}return{instrument:o,attach:a}}var Z=_react.createContext.call(void 0, null);function Nt({value:e,children:t}){return _react.createElement.call(void 0, Z.Provider,{value:e},t)}function Ot(){return _nullishCoalesce(_react.useContext.call(void 0, Z), () => ($))}function Dt(e,t,n){let o=_react.useContext.call(void 0, Z),a=we(),i=a.track===y.track?null:a,c=_react.useRef.call(void 0, {projectKey:e,analytics:t,pageType:n,provided:i});c.current={projectKey:e,analytics:t,pageType:n,provided:i};let s=_react.useMemo.call(void 0, ()=>lt(()=>c.current),[]),u=t===void 0&&o!==null,l=typeof t=="object"&&!!t.onEvent;return _react.useLayoutEffect.call(void 0, ()=>{if(!u)return s.attach()},[s,u,l,e]),u?o:s.instrument}var Q=$;function Se(e){Q=_nullishCoalesce(e, () => ($))}var q=0;function $t(){return q>0?$:Q}async function Mt(e){q++;try{return await e()}finally{q--}}function jt(e){_react.useEffect.call(void 0, ()=>(Se(e),()=>{Q===e&&Se(null)}),[e])}function Ht(e){let t=Number.isFinite(e)?Math.max(0,Math.min(100,e)):0;return t>=100?"100":t>=75?"75-99":t>=50?"50-74":t>=25?"25-49":"0-24"}function Wt(e,t){let n=[];for(let o of[25,50,75,100])e>=o&&!t.has(o)&&(t.add(o),n.push(o));return n}exports.a = ve; exports.b = A; exports.c = Ue; exports.d = Xe; exports.e = D; exports.f = Ae; exports.g = xt; exports.h = _t; exports.i = St; exports.j = we; exports.k = $; exports.l = Nt; exports.m = Ot; exports.n = Dt; exports.o = $t; exports.p = Mt; exports.q = jt; exports.r = Ht; exports.s = Wt;
2
- //# sourceMappingURL=chunk-SAKZOHU7.js.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkW3RGQYPDjs = require('./chunk-W3RGQYPD.js');var Oe=Symbol.for("bitsnap.pageViews");function ye(e){let t=e;return t[Oe]??={path:null,starters:new Set,watching:!1}}function De(e,t){let n=()=>{try{t()}catch (e2){}};for(let o of["pushState","replaceState"]){let a=e.history[o];e.history[o]=function(...i){let c=a.apply(this,i);return n(),c}}e.addEventListener("popstate",n)}function A(e,t=window){try{let n=ye(t),o=()=>e();n.watching||(n.watching=!0,De(t,()=>{let i=t.location.pathname;i===n.path||n.starters.size===0||(n.path=i,_optionalChain([n, 'access', _2 => _2.starters, 'access', _3 => _3.values, 'call', _4 => _4(), 'access', _5 => _5.next, 'call', _6 => _6(), 'access', _7 => _7.value, 'optionalCall', _8 => _8()]))})),n.starters.add(o);let a=t.location.pathname;return a!==n.path&&(n.path=a,o()),()=>void n.starters.delete(o)}catch (e3){return()=>{}}}function ge(e=window){let t=ye(e);t.path=null,t.starters.clear()}var ve="1.23.0";function I(e){let t=new Uint8Array(e),n=typeof crypto<"u"?crypto:void 0;if(n&&typeof n.getRandomValues=="function")n.getRandomValues(t);else for(let o=0;o<e;o++)t[o]=Math.floor(Math.random()*256);return t}var me="X-Bitsnap-Visitor",$e=390*24*60*60,Me=/^[A-Za-z0-9_-]{22}$/;function R(e){return e.BitsnapConsent}function je(e,t){for(let n of e.cookie.split(";")){let o=n.indexOf("=");if(o!==-1&&n.slice(0,o).trim()===t)return n.slice(o+1).trim()}return null}function He(e){let t=e.toLowerCase();return t==="bitsnap.pl"||t.endsWith(".bitsnap.pl")}function F(e,t){try{let n=R(e);if(!n)return!1;if(n.scope==="project")return n.projectKey===t;let o=He(e.location.hostname);return n.scope==="global"?!o:!1}catch (e4){return!1}}function J(e,t){try{return _optionalChain([R, 'call', _9 => _9(e), 'optionalAccess', _10 => _10.get, 'call', _11 => _11(), 'optionalAccess', _12 => _12.c, 'access', _13 => _13.analytics])===!0&&F(e,t)}catch (e5){return!1}}function he(){let e="";return I(16).forEach(t=>e+=String.fromCharCode(t)),btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Ee(e,t){try{return je(e,_chunkW3RGQYPDjs.g.call(void 0, t))}catch (e6){return null}}function B(e,t){let n=Ee(e,t);return n!==null&&Me.test(n)?n:null}function ke(e,t,n){try{let o=e.document,a=`${_chunkW3RGQYPDjs.g.call(void 0, t)}=${n}; Max-Age=${$e}; Path=/; SameSite=Lax`+(e.location.protocol==="https:"?"; Secure":"");for(let i of _chunkW3RGQYPDjs.o.call(void 0, e.location.hostname).reverse())if(o.cookie=`${a}; Domain=${i}`,B(o,t)===n)return;o.cookie=a}catch (e7){}}function be(e,t){try{let n=e.document;if(Ee(n,t)===null)return;let o=`${_chunkW3RGQYPDjs.g.call(void 0, t)}=; Max-Age=0; Path=/; SameSite=Lax`+(e.location.protocol==="https:"?"; Secure":"");n.cookie=o;for(let a of _chunkW3RGQYPDjs.o.call(void 0, e.location.hostname))n.cookie=`${o}; Domain=${a}`}catch (e8){}}function N(e,t){try{let n=e.navigator;return _optionalChain([n, 'optionalAccess', _14 => _14.globalPrivacyControl])===!0||_optionalChain([n, 'optionalAccess', _15 => _15.webdriver])===!0?null:J(e,t)?B(e.document,t):null}catch (e9){return null}}var Ue="https://collect.bitsnap.pl",Ke=5e3,Ge=20,Te=32*1024,ze=60*1024,xe=/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function _e(e){return typeof TextEncoder=="function"?new TextEncoder().encode(e).length:unescape(encodeURIComponent(e)).length}var y={track(){},page(){},clientId:()=>null,flush(){},setEnabled(){},onEvent:()=>()=>{},configure(){},destroy(){}};function Ye(e=Date.now()){let t=I(16),n=e;for(let a=5;a>=0;a--)t[a]=n%256,n=Math.floor(n/256);t[6]=t[6]&15|112,t[8]=t[8]&63|128;let o=Array.from(t,a=>a.toString(16).padStart(2,"0")).join("");return`${o.slice(0,8)}-${o.slice(8,12)}-${o.slice(12,16)}-${o.slice(16,20)}-${o.slice(20)}`}var Ce="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function Fe(){return Array.from(I(16),e=>Ce[e%Ce.length]).join("")}function Je(e,t,n=!1){let o=_e(JSON.stringify({k:e,events:[]})),a=[],i=[],c=o,s=()=>{i.length>0&&a.push({body:JSON.stringify({k:e,events:i}),bytes:c,count:i.length}),i=[],c=o};for(let u of t){let l=_e(JSON.stringify(u));o+l>Te||((i.length>=_chunkW3RGQYPDjs.a.maxBatchEvents||c+l+(i.length>0?1:0)>Te)&&s(),c+=l+(i.length>0?1:0),i.push(u))}if(s(),n){let u=0,l=a.length;for(;l>0&&u+a[l-1].bytes<=ze;)u+=a[l-1].bytes,l--;a=a.slice(l)}return a}function Xe(e){try{return typeof window>"u"||typeof document>"u"?y:qe(e,window)}catch (e10){return y}}function qe(e,t){let n=_chunkW3RGQYPDjs.c.call(void 0, _nullishCoalesce(e.projectKey, () => (""))),o=!!e.debug,a=(...r)=>{o&&console.warn("[bitsnap analytics]",...r)};if(!n)return a("invalid projectKey, tracking is off"),y;let i=n,c=r=>`${(r||Ue).replace(/\/+$/,"")}/e`,s=c(e.endpoint),u=_nullishCoalesce(e.source, () => ("sdk_react")),l=_nullishCoalesce(e.channel, () => ("embed")),b=`bitsnap-react@${ve}`,M=Fe(),T=_chunkW3RGQYPDjs.e.call(void 0, t.location.href),j=_nullishCoalesce(e.env, () => ("live"));if(!e.env)try{new URLSearchParams(t.location.search).has("test")&&(j="test")}catch (e11){}let Le=_chunkW3RGQYPDjs.f.call(void 0, document.referrer),H=e.enabled!==!1,ee=null,Re=0,p=[],h=null,C=new Set;e.onEvent&&C.add(e.onEvent);let E=[],g,m=!0;function W(){let r=R(t);!r||r===g||(g=r,m=!r.ready,_optionalChain([r, 'access', _16 => _16.ready, 'optionalAccess', _17 => _17.then, 'call', _18 => _18(()=>{g===r&&(m=!0,re())},()=>{g===r&&(m=!0)})]))}function te(){W();try{if(!g)return!1;let r=g.get();return!!g.denied&&g.denied("analytics")||!!r&&r.c.analytics===!1}catch (e12){return!1}}function ne(r){C.forEach(f=>{try{f(r)}catch (e13){}})}function U(r){try{if(W(),!g||!F(t,i))return;J(t,i)?P()&&B(t.document,i)===null&&ke(t,i,he()):r&&be(t,i)}catch (e14){}}function re(){if(U(!0),te())p=[],E=[],w();else{if(m&&E.length>0){let r=E;E=[],r.forEach(ne)}p.length>0&&x()}}function P(){if(!H)return!1;let r=t.navigator;return r&&(r.globalPrivacyControl===!0||r.webdriver===!0)?!1:!te()}function w(){h!==null&&clearTimeout(h),h=null}function Be(){h===null&&(h=setTimeout(()=>{h=null,x()},Ke),_optionalChain([h, 'access', _19 => _19.unref, 'optionalCall', _20 => _20()]))}function Ne(r){try{if(typeof fetch=="function"){fetch(s,{method:"POST",body:r,keepalive:!0,credentials:"omit",headers:{"Content-Type":"text/plain"}}).catch(()=>{});return}}catch (e15){}try{let f=t.navigator;f&&typeof f.sendBeacon=="function"&&f.sendBeacon(s,new Blob([r],{type:"text/plain"}))}catch (e16){}}function x(r=!1){try{if(w(),p.length===0)return;if(!P()){p=[];return}if(!m)return;U(m);let f=N(t,i),d=f?p.map(k=>({...k,client_id:f})):p;p=[],Je(i,d,r).forEach(k=>Ne(k.body))}catch (e17){}}function oe(r,f,d){if(!P())return;let k=_chunkW3RGQYPDjs.h.call(void 0, r,f);if(!k.ok){a("dropped",r,k.reason);return}let se=_chunkW3RGQYPDjs.e.call(void 0, t.location.href),K={event_id:_optionalChain([d, 'optionalAccess', _21 => _21.event_id])&&xe.test(d.event_id)?d.event_id:Ye(),event:r,ts:Date.now(),schema_version:1,env:j,source:u,channel:l,sdk:b,page_id:M,page_type:_optionalChain([d, 'optionalAccess', _22 => _22.page_type])!==void 0?d.page_type:ee,host:_nullishCoalesce(_optionalChain([se, 'optionalAccess', _23 => _23.host]), () => (null)),path:_optionalChain([d, 'optionalAccess', _24 => _24.path])?_chunkW3RGQYPDjs.d.call(void 0, d.path.split(/[?#]/)[0]):_nullishCoalesce(_optionalChain([se, 'optionalAccess', _25 => _25.path]), () => (null)),referrer_host:Le,utm_source:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _26 => _26.utm_source]), () => (null)),utm_medium:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _27 => _27.utm_medium]), () => (null)),utm_campaign:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _28 => _28.utm_campaign]), () => (null)),utm_content:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _29 => _29.utm_content]), () => (null)),utm_term:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _30 => _30.utm_term]), () => (null)),ref_code:_nullishCoalesce(_optionalChain([T, 'optionalAccess', _31 => _31.ref_code]), () => (null)),product_id:_nullishCoalesce(_optionalChain([d, 'optionalAccess', _32 => _32.product_id]), () => (null)),variant_id:_nullishCoalesce(_optionalChain([d, 'optionalAccess', _33 => _33.variant_id]), () => (null)),order_ref:_nullishCoalesce(_optionalChain([d, 'optionalAccess', _34 => _34.order_ref]), () => (null)),props:k.props};_optionalChain([d, 'optionalAccess', _35 => _35.event_id])&&!xe.test(d.event_id)&&a("ignored invalid event_id",r),u==="dashboard"&&e.visitorId&&(K.visitor_id=e.visitorId);let ce=_chunkW3RGQYPDjs.i.call(void 0, K);if(!ce.ok){a("dropped",r,ce.reason);return}let G=K;m?ne(G):E.push(G),p.push(G),p.length>=Ge?x():Be()}let ie=()=>x(!0),ae=()=>{document.visibilityState==="hidden"&&x(!0)},S=()=>re();return t.addEventListener("pagehide",ie),document.addEventListener("visibilitychange",ae),t.addEventListener("bitsnap:consent",S),t.addEventListener("bitsnap:consent:ready",S),W(),U(m),{track(r,f,d){try{oe(r,f,d)}catch (e18){}},page(r,f){try{r!==void 0&&(ee=r),oe("page_view",{landing:Re++===0},f)}catch (e19){}},clientId(r){try{return r!==void 0&&_chunkW3RGQYPDjs.c.call(void 0, r)!==i?null:P()?N(t,i):null}catch (e20){return null}},flush:()=>x(),setEnabled(r){H=!!r,H||(p=[],E=[],w())},configure(r){try{(r.env==="live"||r.env==="test")&&(j=r.env),typeof r.endpoint=="string"&&r.endpoint&&(s=c(r.endpoint))}catch (e21){}},onEvent(r){return C.add(r),()=>void C.delete(r)},destroy(){p=[],E=[],w(),C.clear(),t.removeEventListener("pagehide",ie),document.removeEventListener("visibilitychange",ae),t.removeEventListener("bitsnap:consent",S),t.removeEventListener("bitsnap:consent:ready",S)}}}var v,O=null;function D(e){if(!v){let t=Xe(e);return t===y||(v=t,O=_chunkW3RGQYPDjs.c.call(void 0, _nullishCoalesce(e.projectKey, () => ("")))),t}try{let t=_chunkW3RGQYPDjs.c.call(void 0, _nullishCoalesce(e.projectKey, () => ("")));t!==O&&e.debug&&console.warn("[bitsnap analytics]","tracker already started for another projectKey, ignoring",e.projectKey),t===O&&((e.env||e.endpoint)&&v.configure({env:e.env,endpoint:e.endpoint}),e.enabled!=null&&v.setEnabled(e.enabled))}catch (e22){}return v}function Ae(){return v}function xt(){typeof window<"u"&&ge(window),_optionalChain([v, 'optionalAccess', _36 => _36.destroy, 'call', _37 => _37()]),v=void 0,O=null}function _t(e){try{if(typeof window>"u")return{};let t=v,n=null;if(t)n=t.clientId(e);else{let o=e?_chunkW3RGQYPDjs.c.call(void 0, e):null;n=o?N(window,o):null}return n?{[me]:n}:{}}catch (e23){return{}}}var _react = require('react');var nt={track:y.track,page:y.page},Pe=_react.createContext.call(void 0, nt);function St({projectKey:e,env:t,enabled:n,endpoint:o,onEvent:a,autoPageViews:i,children:c}){let s=_react.useMemo.call(void 0, ()=>D({projectKey:e,env:t,endpoint:o,enabled:n}),[e,t,o]),u=_react.useRef.call(void 0, a);u.current=a,_chunkW3RGQYPDjs.q.call(void 0, ()=>{s.setEnabled(n!==!1)},[s,n]),_chunkW3RGQYPDjs.q.call(void 0, ()=>{if(!(i===!1||n===!1||s===y))return A(()=>s.page(null))},[s,i,n]),_chunkW3RGQYPDjs.q.call(void 0, ()=>s.onEvent(b=>_optionalChain([u, 'access', _38 => _38.current, 'optionalCall', _39 => _39(b)])),[s]);let l=_react.useMemo.call(void 0, ()=>({track:s.track.bind(s),page:s.page.bind(s)}),[s]);return _react.createElement.call(void 0, Pe.Provider,{value:l},c)}function we(){return _react.useContext.call(void 0, Pe)}var $={track(){}},X=null;function lt(e){let t=Symbol("bitsnap-instrument");function n(){if(typeof window>"u")return null;let{projectKey:i,analytics:c,provided:s}=e();return c===!1?null:s||(i?D({projectKey:i,source:"sdk_react",channel:"embed",env:typeof c=="object"?c.env:void 0}):null)}let o={track(i,c,s){try{let u=n();if(!u)return;let{analytics:l,pageType:b}=e(),M=b&&_optionalChain([s, 'optionalAccess', _40 => _40.page_type])===void 0?{...s,page_type:b}:s;X=typeof l=="object"&&l.onEvent?t:null,u.track(i,c,M)}catch (e24){}finally{X=null}}};function a(){try{if(!n())return()=>{};let i=Ae();if(!i)return()=>{};let c=e().provided?()=>{}:A(()=>i.page(_nullishCoalesce(e().pageType, () => (null)))),s=i.onEvent(u=>{if(X===t)try{let{analytics:l}=e();typeof l=="object"&&_optionalChain([l, 'access', _41 => _41.onEvent, 'optionalCall', _42 => _42(u)])}catch (e25){}});return()=>{c(),s()}}catch (e26){return()=>{}}}return{instrument:o,attach:a}}var Z=_react.createContext.call(void 0, null);function Nt({value:e,children:t}){return _react.createElement.call(void 0, Z.Provider,{value:e},t)}function Ot(){return _nullishCoalesce(_react.useContext.call(void 0, Z), () => ($))}function Dt(e,t,n){let o=_react.useContext.call(void 0, Z),a=we(),i=a.track===y.track?null:a,c=_react.useRef.call(void 0, {projectKey:e,analytics:t,pageType:n,provided:i});c.current={projectKey:e,analytics:t,pageType:n,provided:i};let s=_react.useMemo.call(void 0, ()=>lt(()=>c.current),[]),u=t===void 0&&o!==null,l=typeof t=="object"&&!!t.onEvent;return _react.useLayoutEffect.call(void 0, ()=>{if(!u)return s.attach()},[s,u,l,e]),u?o:s.instrument}var Q=$;function Se(e){Q=_nullishCoalesce(e, () => ($))}var q=0;function $t(){return q>0?$:Q}async function Mt(e){q++;try{return await e()}finally{q--}}function jt(e){_react.useEffect.call(void 0, ()=>(Se(e),()=>{Q===e&&Se(null)}),[e])}function Ht(e){let t=Number.isFinite(e)?Math.max(0,Math.min(100,e)):0;return t>=100?"100":t>=75?"75-99":t>=50?"50-74":t>=25?"25-49":"0-24"}function Wt(e,t){let n=[];for(let o of[25,50,75,100])e>=o&&!t.has(o)&&(t.add(o),n.push(o));return n}exports.a = ve; exports.b = A; exports.c = Ue; exports.d = Xe; exports.e = D; exports.f = Ae; exports.g = xt; exports.h = _t; exports.i = St; exports.j = we; exports.k = $; exports.l = Nt; exports.m = Ot; exports.n = Dt; exports.o = $t; exports.p = Mt; exports.q = jt; exports.r = Ht; exports.s = Wt;
2
+ //# sourceMappingURL=chunk-2CL4B4KM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/emems/.t3/worktrees/bitsnap-react/emems-order-history-panel/dist/chunk-2CL4B4KM.js","../src/analytics/pageviews.ts","../src/version.ts","../src/analytics/random.ts","../src/analytics/visitor.ts"],"names":["REGISTRY","registry","win","holder","watchNavigation","onChange","check","name","original","args","result","startAutoPageViews","send","reg","starter","path","resetAutoPageViews","SDK_VERSION","randomBytes","n","bytes","c","i","VISITOR_HEADER","MAX_AGE_SECONDS","VISITOR_ID_RE","consentApi","readCookie","doc","part","index","isBitsnapHost","hostname","host","consentBelongsTo","projectKey","api","onBitsnap","analyticsGranted","newVisitorId","binary","byte","rawVisitorCookie","clientIdCookieName","readVisitorCookie","value","writeVisitorCookie","id","base"],"mappings":"AAAA,uuBAA2G,ICYrGA,EAAAA,CAAW,MAAA,CAAO,GAAA,CAAI,mBAAmB,CAAA,CAE/C,SAASC,EAAAA,CAASC,CAAAA,CAAuB,CACvC,IAAMC,CAAAA,CAASD,CAAAA,CACf,OAAQC,CAAAA,CAAOH,EAAQ,CAAA,GAAM,CAAE,IAAA,CAAM,IAAA,CAAM,QAAA,CAAU,IAAI,GAAA,CAAO,QAAA,CAAU,CAAA,CAAM,CAClF,CAGA,SAASI,EAAAA,CAAgBF,CAAAA,CAAaG,CAAAA,CAAsB,CAC1D,IAAMC,CAAAA,CAAQ,CAAA,CAAA,EAAM,CAClB,GAAI,CACFD,CAAAA,CAAS,CACX,CAAA,UAAQ,CAAC,CACX,CAAA,CACA,GAAA,CAAA,IAAWE,EAAAA,EAAQ,CAAC,WAAA,CAAa,cAAc,CAAA,CAAY,CACzD,IAAMC,CAAAA,CAAWN,CAAAA,CAAI,OAAA,CAAQK,CAAI,CAAA,CACjCL,CAAAA,CAAI,OAAA,CAAQK,CAAI,CAAA,CAAI,QAAA,CAAA,GAA4BE,CAAAA,CAAwC,CACtF,IAAMC,CAAAA,CAASF,CAAAA,CAAS,KAAA,CAAM,IAAA,CAAMC,CAAI,CAAA,CACxC,OAAAH,CAAAA,CAAM,CAAA,CACCI,CACT,CACF,CACAR,CAAAA,CAAI,gBAAA,CAAiB,UAAA,CAAYI,CAAK,CACxC,CAQO,SAASK,CAAAA,CAAmBC,CAAAA,CAAkBV,CAAAA,CAAc,MAAA,CAAoB,CACrF,GAAI,CACF,IAAMW,CAAAA,CAAMZ,EAAAA,CAASC,CAAG,CAAA,CAClBY,CAAAA,CAAU,CAAA,CAAA,EAAMF,CAAAA,CAAK,CAAA,CACtBC,CAAAA,CAAI,QAAA,EAAA,CACPA,CAAAA,CAAI,QAAA,CAAW,CAAA,CAAA,CACfT,EAAAA,CAAgBF,CAAAA,CAAK,CAAA,CAAA,EAAM,CACzB,IAAMa,CAAAA,CAAOb,CAAAA,CAAI,QAAA,CAAS,QAAA,CAEtBa,CAAAA,GAASF,CAAAA,CAAI,IAAA,EAAQA,CAAAA,CAAI,QAAA,CAAS,IAAA,GAAS,CAAA,EAAA,CAC/CA,CAAAA,CAAI,IAAA,CAAOE,CAAAA,iBACXF,CAAAA,qBAAI,QAAA,qBAAS,MAAA,mBAAO,CAAA,qBAAE,IAAA,mBAAK,CAAA,qBAAE,KAAA,0BAAA,CAAQ,GAAA,CACvC,CAAC,CAAA,CAAA,CAEHA,CAAAA,CAAI,QAAA,CAAS,GAAA,CAAIC,CAAO,CAAA,CACxB,IAAMC,CAAAA,CAAOb,CAAAA,CAAI,QAAA,CAAS,QAAA,CAC1B,OAAIa,CAAAA,GAASF,CAAAA,CAAI,IAAA,EAAA,CACfA,CAAAA,CAAI,IAAA,CAAOE,CAAAA,CACXD,CAAAA,CAAQ,CAAA,CAAA,CAEH,CAAA,CAAA,EAAM,KAAKD,CAAAA,CAAI,QAAA,CAAS,MAAA,CAAOC,CAAO,CAC/C,CAAA,UAAQ,CACN,MAAO,CAAA,CAAA,EAAM,CAAC,CAChB,CACF,CAGO,SAASE,EAAAA,CAAmBd,CAAAA,CAAc,MAAA,CAAQ,CACvD,IAAMW,CAAAA,CAAMZ,EAAAA,CAASC,CAAG,CAAA,CACxBW,CAAAA,CAAI,IAAA,CAAO,IAAA,CACXA,CAAAA,CAAI,QAAA,CAAS,KAAA,CAAM,CACrB,CCzEO,IAAMI,EAAAA,CAAc,QAAA,CCDpB,SAASC,CAAAA,CAAYC,CAAAA,CAAuB,CACjD,IAAMC,CAAAA,CAAQ,IAAI,UAAA,CAAWD,CAAC,CAAA,CACxBE,CAAAA,CAAI,OAAO,MAAA,CAAW,GAAA,CAAc,MAAA,CAAS,KAAA,CAAA,CACnD,EAAA,CAAIA,CAAAA,EAAK,OAAOA,CAAAA,CAAE,eAAA,EAAoB,UAAA,CAAYA,CAAAA,CAAE,eAAA,CAAgBD,CAAK,CAAA,CAAA,KACpE,GAAA,CAAA,IAASE,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIH,CAAAA,CAAGG,CAAAA,EAAAA,CAAKF,CAAAA,CAAME,CAAC,CAAA,CAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAI,GAAG,CAAA,CAC1E,OAAOF,CACT,CCUO,IAAMG,EAAAA,CAAiB,mBAAA,CAExBC,EAAAA,CAAkB,GAAA,CAAM,EAAA,CAAK,EAAA,CAAK,EAAA,CAClCC,EAAAA,CAAgB,qBAAA,CAEf,SAASC,CAAAA,CAAWxB,CAAAA,CAAsC,CAC/D,OAAQA,CAAAA,CAAoD,cAC9D,CAEA,SAASyB,EAAAA,CAAWC,CAAAA,CAAerB,CAAAA,CAA6B,CAC9D,GAAA,CAAA,IAAWsB,EAAAA,GAAQD,CAAAA,CAAI,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAG,CACxC,IAAME,CAAAA,CAAQD,CAAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,CAC9B,EAAA,CAAIC,CAAAA,GAAU,CAAA,CAAA,EAAMD,CAAAA,CAAK,KAAA,CAAM,CAAA,CAAGC,CAAK,CAAA,CAAE,IAAA,CAAK,CAAA,GAAMvB,CAAAA,CAAM,OAAOsB,CAAAA,CAAK,KAAA,CAAMC,CAAAA,CAAQ,CAAC,CAAA,CAAE,IAAA,CAAK,CAC9F,CACA,OAAO,IACT,CAGA,SAASC,EAAAA,CAAcC,CAAAA,CAA2B,CAChD,IAAMC,CAAAA,CAAOD,CAAAA,CAAS,WAAA,CAAY,CAAA,CAClC,OAAOC,CAAAA,GAAS,YAAA,EAAgBA,CAAAA,CAAK,QAAA,CAAS,aAAa,CAC7D,CAOO,SAASC,CAAAA,CAAiBhC,CAAAA,CAAaiC,CAAAA,CAA6B,CACzE,GAAI,CACF,IAAMC,CAAAA,CAAMV,CAAAA,CAAWxB,CAAG,CAAA,CAC1B,EAAA,CAAI,CAACkC,CAAAA,CAAK,MAAO,CAAA,CAAA,CACjB,EAAA,CAAIA,CAAAA,CAAI,KAAA,GAAU,SAAA,CAAW,OAAOA,CAAAA,CAAI,UAAA,GAAeD,CAAAA,CACvD,IAAME,CAAAA,CAAYN,EAAAA,CAAc7B,CAAAA,CAAI,QAAA,CAAS,QAAQ,CAAA,CACrD,OAAIkC,CAAAA,CAAI,KAAA,GAAU,QAAA,CAAiB,CAACC,CAAAA,CAE7B,CAAA,CACT,CAAA,UAAQ,CACN,MAAO,CAAA,CACT,CACF,CAGO,SAASC,CAAAA,CAAiBpC,CAAAA,CAAaiC,CAAAA,CAA6B,CACzE,GAAI,CACF,uBAAOT,CAAAA,mBAAWxB,CAAG,CAAA,+BAAG,GAAA,qBAAI,CAAA,+BAAG,CAAA,uBAAE,WAAA,GAAc,CAAA,CAAA,EAAQgC,CAAAA,CAAiBhC,CAAAA,CAAKiC,CAAU,CACzF,CAAA,UAAQ,CACN,MAAO,CAAA,CACT,CACF,CAGO,SAASI,EAAAA,CAAAA,CAAuB,CACrC,IAAIC,CAAAA,CAAS,EAAA,CACb,OAAAtB,CAAAA,CAAY,EAAE,CAAA,CAAE,OAAA,CAASuB,CAAAA,EAAUD,CAAAA,EAAU,MAAA,CAAO,YAAA,CAAaC,CAAI,CAAE,CAAA,CAChE,IAAA,CAAKD,CAAM,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAO,GAAG,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAO,GAAG,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAO,EAAE,CAC/E,CAGA,SAASE,EAAAA,CAAiBd,CAAAA,CAAeO,CAAAA,CAAmC,CAC1E,GAAI,CACF,OAAOR,EAAAA,CAAWC,CAAAA,CAAKe,gCAAAA,CAA6B,CAAC,CACvD,CAAA,UAAQ,CACN,OAAO,IACT,CACF,CAGO,SAASC,CAAAA,CAAkBhB,CAAAA,CAAeO,CAAAA,CAAmC,CAClF,IAAMU,CAAAA,CAAQH,EAAAA,CAAiBd,CAAAA,CAAKO,CAAU,CAAA,CAC9C,OAAOU,CAAAA,GAAU,IAAA,EAAQpB,EAAAA,CAAc,IAAA,CAAKoB,CAAK,CAAA,CAAIA,CAAAA,CAAQ,IAC/D,CAOO,SAASC,EAAAA,CAAmB5C,CAAAA,CAAaiC,CAAAA,CAAoBY,CAAAA,CAAkB,CACpF,GAAI,CACF,IAAMnB,CAAAA,CAAM1B,CAAAA,CAAI,QAAA,CACV8C,CAAAA,CACJ,CAAA,EAAA","file":"/home/emems/.t3/worktrees/bitsnap-react/emems-order-history-panel/dist/chunk-2CL4B4KM.js","sourcesContent":[null,"/**\n * Page-wide state of the automatic page views. It lives on `window`, so the\n * npm package, a second copy of it and the `analytics.js` script agree on who\n * reports a path and the history is patched once.\n */\ntype Registry = {\n /** Last path some starter reported. */\n path: string | null;\n starters: Set<() => void>;\n watching: boolean;\n};\n\nconst REGISTRY = Symbol.for(\"bitsnap.pageViews\");\n\nfunction registry(win: Window): Registry {\n const holder = win as unknown as Record<symbol, Registry | undefined>;\n return (holder[REGISTRY] ??= { path: null, starters: new Set(), watching: false });\n}\n\n/** Calls `onChange` when the path changes through `history.pushState`/`replaceState` or Back/Forward. */\nfunction watchNavigation(win: Window, onChange: () => void) {\n const check = () => {\n try {\n onChange();\n } catch {}\n };\n for (const name of [\"pushState\", \"replaceState\"] as const) {\n const original = win.history[name];\n win.history[name] = function (this: History, ...args: Parameters<History[typeof name]>) {\n const result = original.apply(this, args);\n check();\n return result;\n };\n }\n win.addEventListener(\"popstate\", check);\n}\n\n/**\n * Calls `send` for the current path and again on every path change, unless\n * another starter on the page already reported that path: the page gets one\n * `page_view` per path change however many providers, components and embeds\n * start it. Returns the function that stops this starter.\n */\nexport function startAutoPageViews(send: () => void, win: Window = window): () => void {\n try {\n const reg = registry(win);\n const starter = () => send();\n if (!reg.watching) {\n reg.watching = true;\n watchNavigation(win, () => {\n const path = win.location.pathname;\n // Nobody listening: leave the path unreported so the next starter sends it.\n if (path === reg.path || reg.starters.size === 0) return;\n reg.path = path;\n reg.starters.values().next().value?.();\n });\n }\n reg.starters.add(starter);\n const path = win.location.pathname;\n if (path !== reg.path) {\n reg.path = path;\n starter();\n }\n return () => void reg.starters.delete(starter);\n } catch {\n return () => {};\n }\n}\n\n/** Forgets the reported path and the starters (tests, hot reload). The history patch stays. */\nexport function resetAutoPageViews(win: Window = window) {\n const reg = registry(win);\n reg.path = null;\n reg.starters.clear();\n}\n","// Generated by scripts/write-version.mjs from package.json. Do not edit.\nexport const SDK_VERSION = \"1.23.0\";\n","export function randomBytes(n: number): Uint8Array {\n const bytes = new Uint8Array(n);\n const c = typeof crypto !== \"undefined\" ? crypto : undefined;\n if (c && typeof c.getRandomValues === \"function\") c.getRandomValues(bytes);\n else for (let i = 0; i < n; i++) bytes[i] = Math.floor(Math.random() * 256);\n return bytes;\n}\n","import { domainCandidates } from \"../consent/core/cookie\";\nimport { clientIdCookieName } from \"./contract\";\nimport { randomBytes } from \"./random\";\n\n/** The part of `window.BitsnapConsent` (`bitsnap-react/consent`) the tracker reads. */\nexport type ConsentLike = {\n /** Absent on a consent script older than 1.9.0, which never counts as the project's banner. */\n scope?: \"global\" | \"project\";\n projectKey?: string | null;\n get(): { c: { analytics?: boolean } } | null;\n /** Also true for a refusal made on an older banner version, which `get()` no longer returns. */\n denied?(category: \"analytics\"): boolean;\n ready?: Promise<unknown>;\n};\n\n/** Sent to the Bitsnap server on the requests that create a checkout or payment link. */\nexport const VISITOR_HEADER = \"X-Bitsnap-Visitor\";\n// 390 days, under the 13 months CNIL allows. Set once, never extended.\nconst MAX_AGE_SECONDS = 390 * 24 * 60 * 60;\nconst VISITOR_ID_RE = /^[A-Za-z0-9_-]{22}$/;\n\nexport function consentApi(win: Window): ConsentLike | undefined {\n return (win as unknown as { BitsnapConsent?: ConsentLike }).BitsnapConsent;\n}\n\nfunction readCookie(doc: Document, name: string): string | null {\n for (const part of doc.cookie.split(\";\")) {\n const index = part.indexOf(\"=\");\n if (index !== -1 && part.slice(0, index).trim() === name) return part.slice(index + 1).trim();\n }\n return null;\n}\n\n/** bitsnap.pl and its subdomains: many merchants share them, and the site-wide choice is bitsnap's own. */\nfunction isBitsnapHost(hostname: string): boolean {\n const host = hostname.toLowerCase();\n return host === \"bitsnap.pl\" || host.endsWith(\".bitsnap.pl\");\n}\n\n/**\n * Whether the page's consent banner speaks for `projectKey`: a project-scope banner of that\n * key, or a site-scope banner on a merchant's own site. On bitsnap.pl a site-scope choice is\n * bitsnap's own, so only a project-scope one counts.\n */\nexport function consentBelongsTo(win: Window, projectKey: string): boolean {\n try {\n const api = consentApi(win);\n if (!api) return false;\n if (api.scope === \"project\") return api.projectKey === projectKey;\n const onBitsnap = isBitsnapHost(win.location.hostname);\n if (api.scope === \"global\") return !onBitsnap;\n // A consent script from before the scope info: it cannot be told apart from another project's banner.\n return false;\n } catch {\n return false;\n }\n}\n\n/** `true` only while a banner that speaks for `projectKey` holds a valid choice that grants `analytics`. */\nexport function analyticsGranted(win: Window, projectKey: string): boolean {\n try {\n return consentApi(win)?.get()?.c.analytics === true && consentBelongsTo(win, projectKey);\n } catch {\n return false;\n }\n}\n\n/** 16 random bytes as 22 base64url characters. */\nexport function newVisitorId(): string {\n let binary = \"\";\n randomBytes(16).forEach((byte) => (binary += String.fromCharCode(byte)));\n return btoa(binary).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\n\n/** Value of the `bs_vid_<projectKey>` cookie, whatever it holds; `null` when it is absent. */\nfunction rawVisitorCookie(doc: Document, projectKey: string): string | null {\n try {\n return readCookie(doc, clientIdCookieName(projectKey));\n } catch {\n return null;\n }\n}\n\n/** The project's client id from its first-party cookie (`bs_vid_<projectKey>`), or `null` if absent or malformed. */\nexport function readVisitorCookie(doc: Document, projectKey: string): string | null {\n const value = rawVisitorCookie(doc, projectKey);\n return value !== null && VISITOR_ID_RE.test(value) ? value : null;\n}\n\n/**\n * Sets the cookie on the widest registrable domain the browser accepts\n * (shortest suffix with two labels first, so `shop.example.co.uk` skips the\n * refused `co.uk`), host-only where no domain sticks (localhost, IP hosts).\n */\nexport function writeVisitorCookie(win: Window, projectKey: string, id: string): void {\n try {\n const doc = win.document;\n const base =\n `${clientIdCookieName(projectKey)}=${id}; Max-Age=${MAX_AGE_SECONDS}; Path=/; SameSite=Lax` +\n (win.location.protocol === \"https:\" ? \"; Secure\" : \"\");\n for (const domain of domainCandidates(win.location.hostname).reverse()) {\n doc.cookie = `${base}; Domain=${domain}`;\n if (readVisitorCookie(doc, projectKey) === id) return;\n }\n doc.cookie = base;\n } catch {\n // cookies blocked (sandboxed frame)\n }\n}\n\n/** Expires the cookie on the host and on every parent domain it may have been set on. */\nexport function deleteVisitorCookie(win: Window, projectKey: string): void {\n try {\n const doc = win.document;\n // Present under any value: a malformed one must go too.\n if (rawVisitorCookie(doc, projectKey) === null) return;\n const base =\n `${clientIdCookieName(projectKey)}=; Max-Age=0; Path=/; SameSite=Lax` +\n (win.location.protocol === \"https:\" ? \"; Secure\" : \"\");\n doc.cookie = base;\n for (const domain of domainCandidates(win.location.hostname)) doc.cookie = `${base}; Domain=${domain}`;\n } catch {\n // best effort\n }\n}\n\n/**\n * The project's client id to send, or `null`: analytics consent is granted,\n * Global Privacy Control is off, the browser is not automated and the cookie exists.\n */\nexport function readVisitorId(win: Window, projectKey: string): string | null {\n try {\n const nav = win.navigator as { globalPrivacyControl?: boolean; webdriver?: boolean } | undefined;\n if (nav?.globalPrivacyControl === true || nav?.webdriver === true) return null;\n return analyticsGranted(win, projectKey) ? readVisitorCookie(win.document, projectKey) : null;\n } catch {\n return null;\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkMY6BPCRVjs = require('./chunk-MY6BPCRV.js');var _chunkMDAFPGPAjs = require('./chunk-MDAFPGPA.js');var _chunk2CL4B4KMjs = require('./chunk-2CL4B4KM.js');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var a=_react.createContext.call(void 0, _chunkMDAFPGPAjs.b.call(void 0, )),u= exports.a =({children:c,analytics:s})=>{let n=_chunkMDAFPGPAjs.b.call(void 0, ),l=_chunk2CL4B4KMjs.n.call(void 0, n.projectID,s,"panel");return _jsxruntime.jsx.call(void 0, _chunkMY6BPCRVjs.k,{children:_jsxruntime.jsx.call(void 0, a.Provider,{value:{...n},children:_jsxruntime.jsx.call(void 0, _chunk2CL4B4KMjs.l,{value:l,children:_jsxruntime.jsx.call(void 0, "div",{className:"bitsnap-react",children:c})})})})},C= exports.b =()=>_react.useContext.call(void 0, a);exports.a = u; exports.b = C;
2
+ //# sourceMappingURL=chunk-2D2TQK3R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/emems/.t3/worktrees/bitsnap-react/emems-order-history-panel/dist/chunk-2D2TQK3R.js","../src/panel/PanelProvider.tsx"],"names":["PanelContext","createContext","getPanelConfig","PanelProvider","children","analytics","config","instrument","useInstrument","jsx","RpcProvider","InstrumentProvider","usePanelConfig","useContext"],"mappings":"AAAA,+HAAuC,sDAAwC,sDAA+C,8BCApF,+CA2BhC,IAlBJA,CAAAA,CAAeC,kCAAAA,gCAA2BC,CAAgB,CAAA,CAEnDC,CAAAA,aASR,CAAC,CAAE,QAAA,CAAAC,CAAAA,CAAU,SAAA,CAAAC,CAAU,CAAA,CAAA,EAAM,CAChC,IAAMC,CAAAA,CAASJ,gCAAAA,CAAe,CACxBK,CAAAA,CAAaC,gCAAAA,CAAcF,CAAO,SAAA,CAAWD,CAAAA,CAAW,OAAO,CAAA,CACrE,OACEI,6BAAAA,kBAACC,CAAA,CACC,QAAA,CAAAD,6BAAAA,CAACT,CAAa,QAAA,CAAb,CAAsB,KAAA,CAAO,CAAE,GAAGM,CAAO,CAAA,CACxC,QAAA,CAAAG,6BAAAA,kBAACE,CAAA,CAAmB,KAAA,CAAOJ,CAAAA,CACzB,QAAA,CAAAE,6BAAAA,KAAC,CAAA,CAAI,SAAA,CAAU,eAAA,CAAiB,QAAA,CAAAL,CAAAA,CAAS,CAAA,CAC3C,CAAA,CACF,CAAA,CACF,CAEJ,CAAA,CAEaQ,CAAAA,aAAiB,CAAA,CAAA,EAAMC,+BAAAA,CAAuB,CAAA,CAAA,6BAAA","file":"/home/emems/.t3/worktrees/bitsnap-react/emems-order-history-panel/dist/chunk-2D2TQK3R.js","sourcesContent":[null,"import { createContext, useContext } from \"react\";\nimport {\n InstrumentProvider,\n useInstrument,\n type AnalyticsOption,\n} from \"../analytics/instrument\";\nimport { RpcProvider } from \"../rpc-provider\";\nimport { getPanelConfig, type PanelConfig } from \"./config\";\n\nconst PanelContext = createContext<PanelConfig>(getPanelConfig());\n\nexport const PanelProvider: React.FC<{\n children: React.ReactNode;\n /**\n * Usage statistics for your Bitsnap dashboard (panel logins, orders viewed,\n * downloads, course progress). On by default; `false` turns it off. An\n * object lets you forward every event: `{ onEvent }`. Nothing is stored on\n * the visitor's device.\n */\n analytics?: AnalyticsOption;\n}> = ({ children, analytics }) => {\n const config = getPanelConfig();\n const instrument = useInstrument(config.projectID, analytics, \"panel\");\n return (\n <RpcProvider>\n <PanelContext.Provider value={{ ...config }}>\n <InstrumentProvider value={instrument}>\n <div className=\"bitsnap-react\">{children}</div>\n </InstrumentProvider>\n </PanelContext.Provider>\n </RpcProvider>\n );\n};\n\nexport const usePanelConfig = () => useContext(PanelContext);\n"]}
@@ -1,2 +1,2 @@
1
- import{a as s}from"./chunk-QQSCVPOG.mjs";var r="X-Bitsnap-Client",o=`bitsnap-react@${s}`,i="bs_client",l={[r]:o},m=t=>e=>(e.header.set(r,o),t(e));function _(t){let e=t.indexOf("#"),n=e===-1?t:t.slice(0,e),c=e===-1?"":t.slice(e),p=n.includes("?")?/[?&]$/.test(n)?"":"&":"?";return`${n}${p}${i}=${encodeURIComponent(o)}${c}`}var a="https://bitsnap.pl",E=a;function H(t){console.log("setCustomHost",t),E=t}export{l as a,m as b,_ as c,a as d,E as e,H as f};
2
- //# sourceMappingURL=chunk-C2AJ5B32.mjs.map
1
+ import{a as s}from"./chunk-EVV25IKM.mjs";var r="X-Bitsnap-Client",o=`bitsnap-react@${s}`,i="bs_client",l={[r]:o},m=t=>e=>(e.header.set(r,o),t(e));function _(t){let e=t.indexOf("#"),n=e===-1?t:t.slice(0,e),c=e===-1?"":t.slice(e),p=n.includes("?")?/[?&]$/.test(n)?"":"&":"?";return`${n}${p}${i}=${encodeURIComponent(o)}${c}`}var a="https://bitsnap.pl",E=a;function H(t){console.log("setCustomHost",t),E=t}export{l as a,m as b,_ as c,a as d,E as e,H as f};
2
+ //# sourceMappingURL=chunk-4AU5SEHU.mjs.map