1import{n as o,e as n,f as t,C as g,F as A,y as D,V as S,W as M,q as m,k as E,p as U,s as b,E as F,u as B,j as C,x as c,A as k,D as v,S as G,av as z,U as O,aw as H}from"./vendor-D9irJiho.js";import{E as W}from"./image-McLObl8n.js";import{T as L}from"./TextButton-D6GhDerm.js";import{_ as P,e as T,d as Z,S as N}from"./index-CewzeHm4.js";import{L as q}from"./LoadingCircle-eJJ0VwEG.js";import{B as K}from"./Breadcrumbs-B17pWWRN.js";import{M as Q}from"./Modal-DWyhZN2B.js";import{D as j}from"./DirectionIcon-DLaWS4Jd.js";import{H as Y,I as J,B as X}from"./format_ink_highlighter-DtZd0c-D.js";import{T as $,t as ee}from"./richTextRenderer-Xxe6N0gV.js";const te={height:"24",viewBox:"0 -960 960 960",width:"24",fill:"#5f6368",version:"1.1",id:"svg1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"};function se(s,e){return o(),n("svg",te,[...e[0]||(e[0]=[t("defs",{id:"defs1"},null,-1),t("path",{d:"M 480,-80 Q 397,-80 324,-111.5 251,-143 197,-197 143,-251 111.5,-324 80,-397 80,-480 q 0,-83 31.5,-156 31.5,-73 85.5,-127 54,-54 127,-85.5 73,-31.5 156,-31.5 83,0 156,31.5 73,31.5 127,85.5 54,54 85.5,127 31.5,73 31.5,156 0,83 -31.5,156 -31.5,73 -85.5,127 -54,54 -127,85.5 Q 563,-80 480,-80 Z m 0,-80 q 54,0 104,-17.5 50,-17.5 92,-50.5 L 228,-676 q -33,42 -50.5,92 -17.5,50 -17.5,104 0,134 93,227 93,93 227,93 z m 252,-124 q 33,-42 50.5,-92 17.5,-50 17.5,-104 0,-134 -93,-227 -93,-93 -227,-93 -54,0 -104,17.5 -50,17.5 -92,50.5 z",id:"path1",style:{fill:"#782121"}},null,-1)])])}const ie={render:se},le={name:"ListEditor",components:{TextButton:L},props:{modelValue:{type:Array,required:!0,default:()=>[]},title:{type:String,required:!0},description:{type:String,required:!0}},data(){return{items:[...this.modelValue],inputText:""}},watch:{modelValue(s){this.items=[...s]}},methods:{updateItem(){this.$emit("update:modelValue",[...this.items])},addItem(){this.inputText.trim()&&(this.items.push(this.inputText.trim()),this.$emit("update:modelValue",[...this.items]),this.inputText="")},removeItem(s){this.items.splice(s,1),this.$emit("update:modelValue",[...this.items])},async addAiGeneratedItem(s){this.inputText="",await this.animateInputText(s,100),this.items.push(this.inputText),this.$emit("update:modelValue",[...this.items]),this.inputText=""},animateInputText(s,e){return new Promise(u=>{let h=0;const l=()=>{h<s.length?(this.inputText+=s.charAt(h),h++,setTimeout(l,e)):u()};this.inputText="",l()})}}},oe=["onUpdate:modelValue"],ne={class:"input-container"};function re(s,e,u,h,l,i){const f=b("TextButton");return o(),n("div",null,[t("h3",null,g(u.title),1),t("p",null,g(u.description),1),t("ul",null,[(o(!0),n(A,null,D(l.items,(I,a)=>(o(),n("li",{key:a},[S(t("input",{type:"text","onUpdate:modelValue":p=>l.items[a]=p,onBlur:e[0]||(e[0]=(...p)=>i.updateItem&&i.updateItem(...p))},null,40,oe),[[M,l.items[a]]]),m(f,{onClick:p=>i.removeItem(a),category:"neutral"},{default:E(()=>[...e[2]||(e[2]=[U("Delete",-1)])]),_:1},8,["onClick"])]))),128))]),t("div",ne,[S(t("input",{type:"text","onUpdate:modelValue":e[1]||(e[1]=I=>l.inputText=I),ref:"animatedInput",placeholder:"Add new item"},null,512),[[M,l.inputText]]),m(f,{onClick:i.addItem,category:"action",class:"action"},{default:E(()=>[...e[3]||(e[3]=[U("Add",-1)])]),_:1},8,["onClick"])])])}const ae=P(le,[["render",re],["__scopeId","data-v-26745562"]]),de={xmlns:"http://www.w3.org/2000/svg",height:"24px",viewBox:"0 -960 960 960",width:"24px",fill:"#000000"};function ue(s,e){return o(),n("svg",de,[...e[0]||(e[0]=[t("path",{d:"M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h240l80 80h320q33 0 56.5 23.5T880-640H447l-80-80H160v480l96-320h684L837-217q-8 26-29.5 41.5T760-160H160Zm84-80h516l72-240H316l-72 240Zm0 0 72-240-72 240Zm-84-400v-80 80Z"},null,-1)])])}const ce={render:ue},ge={name:"ImageModal",components:{Modal:Q,LoadingCircle:q,FolderIcon:ce,DirectionIcon:j},props:{show:{type:Boolean,default:!1},type:{type:String,default:"question"},cardId:{type:String,required:!0}},data(){return{activeTab:"upload",selectedFiles:[],generatedImages:[],imagePrompt:"",dragOver:!1,uploading:!1,generating:!1,showTips:!1,insufficientCredits:!1,dailyLimitReached:!1,generationError:null,pexelsQuery:"",pexelsResults:[],pexelsImages:[],pexelsSearching:!1,pexelsError:null}},computed:{...B("featureAccess",["isSubscribed"]),...F("auth",{userData:s=>s.userData}),aiBalance(){return this.userData?.aiBalance||0}},methods:{onViewerInited(s){s.$el.addEventListener("hidden",()=>
1{this.$refs.addBtn?.focus()})},formatBalance(s){return`${Math.round(s).toLocaleString()} bolts`},close(){this.resetModal(),this.$emit("close")},resetModal(){this.activeTab="upload",this.selectedFiles=[],this.generatedImages=[],this.imagePrompt="",this.dragOver=!1,this.uploading=!1,this.generating=!1,this.insufficientCredits=!1,this.dailyLimitReached=!1,this.generationError=null,this.pexelsQuery="",this.pexelsResults=[],this.pexelsImages=[],this.pexelsSearching=!1,this.pexelsError=null},triggerFileInput(){this.$refs.fileInput.click()},handleFileSelect(s){const e=Array.from(s.target.files);this.processFiles(e)},handleDrop(s){s.preventDefault(),this.dragOver=!1;const e=Array.from(s.dataTransfer.files);this.processFiles(e)},processFiles(s){s.filter(u=>u.type.startsWith("image/")).forEach(u=>{if(u.size>10*1024*1024){T.error(`File ${u.name} is too large. Maximum size is 10MB.`);return}const h=new FileReader;h.onload=l=>{this.selectedFiles.push({file:u,name:u.name,preview:l.target.result})},h.readAsDataURL(u)}),this.$refs.fileInput.value=""},removeFile(s){this.selectedFiles.splice(s,1)},removeGeneratedImage(s){this.generatedImages.splice(s,1)},async handlePexelsSearch(){if(this.pexelsQuery.trim()){this.pexelsSearching=!0,this.pexelsError=null;try{const s=await this.$store.dispatch("images/searchPexels",{query:this.pexelsQuery,page:1});s.ok?this.pexelsResults=s.results:(this.pexelsResults=[],this.pexelsError=s.message||"Failed to search stock photos.")}catch(s){console.error("Error searching Pexels:",s),this.pexelsError="Error searching stock photos. Please try again."}finally{this.pexelsSearching=!1}}},isPexelsSelected(s){return this.pexelsImages.some(e=>e.id===s.id)},togglePexelsImage(s){const e=this.pexelsImages.findIndex(u=>u.id===s.id);e===-1?this.pexelsImages.push(s):this.pexelsImages.splice(e,1)},removePexelsImage(s){this.pexelsImages.splice(s,1)},async handleGenerate(){if(this.imagePrompt.trim()){this.insufficientCredits=!1,this.dailyLimitReached=!1,this.generationError=null,this.generating=!0;try{const s=await this.$store.dispatch("openai/generateImage",{prompt:this.imagePrompt,model:"gemini-3-pro-image",quality:"standard",cardId:this.cardId,side:this.type});s.ok?(this.generatedImages.push({url:s.imageUrl,prompt:this.imagePrompt}),this.imagePrompt="",this.insufficientCredits=!1,await this.$store.dispatch("auth/fetchUserData")):s.errorCode===402?this.insufficientCredits=!0:s.errorCode===429?this.dailyLimitReached=!0:this.generationError=s.message||"Something went wrong. Try again or upload your own image."}catch(s){console.error("Error generating image:",s),T.error("Error generating image. Please try again.")}finally{this.generating=!1}}},async handleAdd(){if(!(this.selectedFiles.length===0&&this.generatedImages.length===0&&this.pexelsImages.length===0)){this.uploading=!0;try{for(const s of this.selectedFiles)await this.$store.dispatch(`cards/upload${this.type==="question"?"Question":"Answer"}Image`,{image:s.file,cardId:this.cardId});for(const s of this.generatedImages)this.$store.commit(`editDeckContentPage/card${this.type==="question"?"Question":"Answer"}Image`,{_id:this.cardId,link:s.url},{root:!0});for(const s of this.pexelsImages)(await this.$store.dispatch("cards/addGeneratedImageToCard",{cardId:this.cardId,imageUrl:s.full,type:this.type,attribution:{source:"pexels",photographer:s.photographer,photographerUrl:s.photographerUrl,pexelsUrl:s.pexelsUrl}})).ok&&this.$store.commit(`editDeckContentPage/card${this.type==="question"?"Question":"Answer"}Image`,{_id:this.cardId,link:s.full},{root:!0});this.$emit("imagesAdded"),this.close()}catch(s){console.error("Error adding images:",s),T.error("Error adding images. Please try again.")}finally{this.uploading=!1}}}},watch:{show(s){s?this.$store.dispatch("auth/fetchUserData"):this.resetModal()}},async mounted(){await this.$store.dispatch("auth/fetchUserData")}},me={class:"image-modal"},pe={class:"modal-header"},he={class:"modal-body"},ve={key:0,class:"ai-balance-display"},fe={class:"balance-amount"},Ie={class:"tab-selector"},be={key:1,class:"tab-content"},ye={class:"upload-section"},ke={class:"upload-content"},we={key:2,class:"tab-content"},Ae={class:"generate-section"},Ce={key:0,class:"prompt-tip"},xe={key:3,class:"tab-content"},Te={class:"pexels-section"},De={class:"pexels-search-row"},_e=["disabled"],Se={key:0,class:"insufficient-notice"},Ee={key:1,class:"pexels-results-grid"},Fe=["onClick"],Me=["src","alt"],Ue={class:"pexels-credit"},Pe={key:4,class:"preview-section"},Ve=["src","alt"],Be={class:"preview-info"},qe={class:"file-name"},Le=["onClick"],Qe=["src"],Re={class:"preview-info"},Ge={class:"file-name"},ze=["onClick"],Oe=["src"],He={class:"preview-info"},We=["href"],Ze=["onClick"],Ne={key:5,class:"loading-section"},Ke={key:6,class:"insufficient-notice"},je={key:7,class:"insufficient-notice"},Ye={key:8,class:"insufficient-notice"},Je={class:"modal-footer"},Xe=["disabled"],$e=["disabled"],et=["disabled"];function tt(s,e,u,h,l,i){const f=b("FolderIcon"),I=b("DirectionIcon"),a=b("LoadingCircle"),p=b("Modal"),w=z("viewer");return o(),C(p,{show:u.show,onClose:i.close},{default:E(()=>[t("div",me,[t("div",pe,[e[20]||(e[20]=t("h3",null,"Add Image",-1)),t("button",{class:"close-btn",onClick:e[0]||(e[0]=(...r)=>i.close&&i.close(...r))}
1,"Ã")]),t("div",he,[s.isSubscribed?(o(),n("div",ve,[e[21]||(e[21]=t("span",{class:"balance-label"},"â¡ Bolt Balance:",-1)),t("span",fe,g(i.formatBalance(i.aiBalance)),1)])):c("",!0),t("div",Ie,[t("button",{class:k(["tab-btn",{active:l.activeTab==="upload"}]),onClick:e[1]||(e[1]=r=>l.activeTab="upload")}," Upload Image ",2),s.isSubscribed?(o(),n("button",{key:0,class:k(["tab-btn",{active:l.activeTab==="generate"}]),onClick:e[2]||(e[2]=r=>l.activeTab="generate")}," Generate with AI ",2)):c("",!0),s.isSubscribed?(o(),n("button",{key:1,class:k(["tab-btn",{active:l.activeTab==="pexels"}]),onClick:e[3]||(e[3]=r=>l.activeTab="pexels")}," Stock Photos ",2)):c("",!0)]),l.activeTab==="upload"?(o(),n("div",be,[t("div",ye,[t("div",{class:k(["upload-drop-zone",{"drag-over":l.dragOver}]),onDrop:e[4]||(e[4]=(...r)=>i.handleDrop&&i.handleDrop(...r)),onDragover:e[5]||(e[5]=v(r=>l.dragOver=!0,["prevent"])),onDragleave:e[6]||(e[6]=v(r=>l.dragOver=!1,["prevent"])),onClick:e[7]||(e[7]=(...r)=>i.triggerFileInput&&i.triggerFileInput(...r))},[t("div",ke,[m(f,{class:"upload-icon"}),e[22]||(e[22]=t("p",{class:"upload-text"},"Click to select or drag & drop images",-1)),e[23]||(e[23]=t("p",{class:"upload-hint"},"JPG, PNG, GIF ⢠Max 10MB",-1))])],34),t("input",{ref:"fileInput",type:"file",accept:"image/*",multiple:"",onChange:e[8]||(e[8]=(...r)=>i.handleFileSelect&&i.handleFileSelect(...r)),style:{display:"none"}},null,544)])])):c("",!0),l.activeTab==="generate"&&s.isSubscribed?(o(),n("div",we,[t("div",Ae,[e[26]||(e[26]=t("label",{for:"image-prompt",class:"generate-label"}," Describe the image: ",-1)),S(t("textarea",{id:"image-prompt","onUpdate:modelValue":e[9]||(e[9]=r=>l.imagePrompt=r),class:"generate-textarea",placeholder:"e.g., An elephant walking, A human heart diagram, The Eiffel Tower at sunset",rows:"3"},null,512),[[M,l.imagePrompt]]),t("button",{class:"tips-toggle",onClick:e[10]||(e[10]=r=>l.showTips=!l.showTips),type:"button"},[m(I,{name:"chevron",direction:l.showTips?"down":"right",class:"tips-toggle-chevron"},null,8,["direction"]),e[24]||(e[24]=t("span",null,"Tips for best results",-1))]),l.showTips?(o(),n("div",Ce,[...e[25]||(e[25]=[t("ul",{class:"tip-list"},[t("li",null,"Be specific â include subject, setting, and style"),t("li",null," Handles complex scenes, diagrams, and illustrations well "),t("li",null,' Specify a style: "realistic photo", "flat illustration", "diagram" '),t("li",null,' Add "white background" for cleaner, card-friendly images '),t("li",null," Avoid requesting text or labels â they often come out distorted ")],-1)])])):c("",!0),e[27]||(e[27]=t("div",{class:"generate-options"},[t("div",{class:"pricing-note"},"160 bolts per image")],-1))])])):c("",!0),l.activeTab==="pexels"&&s.isSubscribed?(o(),n("div",xe,[t("div",Te,[e[28]||(e[28]=t("label",{for:"pexels-query",class:"generate-label"}," Search stock photos: ",-1)),t("div",De,[S(t("input",{id:"pexels-query","onUpdate:modelValue":e[11]||(e[11]=r=>l.pexelsQuery=r),type:"text",class:"pexels-input",placeholder:"e.g., cell biology, ancient Rome, solar system",onKeyup:e[12]||(e[12]=G((...r)=>i.handlePexelsSearch&&i.handlePexelsSearch(...r),["enter"]))},null,544),[[M,l.pexelsQuery]]),t("button",{class:"pexels-search-btn",type:"button",onClick:e[13]||(e[13]=(...r)=>i.handlePexelsSearch&&i.handlePexelsSearch(...r)),disabled:!l.pexelsQuery.trim()||l.pexelsSearching},g(l.pexelsSearching?"Searching...":"Search"),9,_e)]),l.pexelsError?(o(),n("div",Se,[t("p",null,g(l.pexelsError),1)])):c("",!0),l.pexelsResults.length>0?(o(),n("div",Ee,[(o(!0),n(A,null,D(l.pexelsResults,r=>(o(),n("div",{key:r.id,class:k(["pexels-result-item",{selected:i.isPexelsSelected(r)}]),onClick:y=>i.togglePexelsImage(r)},[t("img",{src:r.thumbnail,alt:r.alt,class:"pexels-result-image"},null,8,Me),t("div",Ue,g(r.photographer),1)],10,Fe))),128))])):c("",!0),e[29]||(e[29]=t("p",{class:"pexels-attribution-note"},[U(" Photos provided by "),t("a",{href:"https://www.pexels.com",target:"_blank",rel:"noopener"},"Pexels")],-1))])])):c("",!0),l.selectedFiles.length>0||l.generatedImages.length>0||l.pexelsImages.length>0?(o(),n("div",Pe,[e[30]||(e[30]=t("h4",null,"Selected Images:",-1)),S((o(),n("div",{onInited:e[15]||(e[15]=(...r)=>i.onViewerInited&&i.onViewerInited(...r)),class:"image-preview-grid"},[(o(!0),n(A,null,D(l.selectedFiles,(r,y)=>(o(),n("div",{key:`file-${y}`,class:"preview-item"},[t("img",{src:r.preview,alt:r.name,class:"preview-image"},null,8,Ve),t("div",Be,[t("span",qe,g(r.name),1),t("button",{class:"remove-btn",onClick:v(V=>i.removeFile(y),["stop"])}," à ",8,Le)])]))),128)),(o(!0),n(A,null,D(l.generatedImages,(r,y)=>(o(),n("div",{key:`gen-${y}`,class:"preview-item"},[t("img",{src:r.url,alt:"Generated image",class:"preview-image"},null,8,Qe),t("div",Re,[t("span",Ge,"Generated Image "+g(y+1),1),t("button",{class:"remove-btn",onClick:v(V=>i.removeGeneratedImage(y),["stop"])}," à ",8,ze)])]))),128)),(o(!0),n(A,null,D(l.pexelsImages,(r,y)=>(o(),n("div",{key:`pexels-${y}`,class:"preview-item"},[t("img",{src:r.thumbnail,alt:"Stock photo",class:"preview-image"},null,8,Oe),t("div",He,[t("a",{href:r.pexelsUrl,target:"_blank",rel:"noopener",class:"pexels-credit-link",onClick:e[14]||(e[14]=v(()=>{},["stop"]))}," Photo by "+g(r.photographer)+" on Pexels ",9,We),t("button",{class:"remove-btn",onClick:v(V=>i.removePexelsImage(y),["stop"])}," à ",8,Ze)])]))),128))],32)),[[w]])])):c("",!0),l.uploading||l.generating?(o(),n("div",Ne,[m(a,{size:40}),t("p",null,g(l.uploading?"Uploading images...":"Generating image..."),1)])):c("",!0),l.insufficientCredits?(o(),n("div",Ke,[e[31]||(e[31]=t("p",null," Not enough bolts to generate an image. Top up your balance to continue. ",-1)),t("button",{class:"top-up-btn",onClick:e[16]||(e[16]=r=>{s.$router.push("/credits"),i.close()})}," Top Up ")])):c("",!0),l.dailyLimitReached?(o(),n("div",je,[...e[32]||(e[32]=[t("p",null," You've reached your daily image limit (20 images). Resets at midnight UTC. ",-1)])])):c("",!0),l.generationError?(o(),n("div",Ye,[t("p",null,g(l.generationError),1)])):c("",!0)]),t("div",Je,[t("button",{class:"cancel-btn",onClick:e[17]||(e[17]=(...r)=>i.close&&i.close(...r)),disabled:l.uploading||l.generating}
1," Cancel ",8,Xe),l.activeTab==="generate"&&s.isSubscribed?(o(),n("button",{key:0,class:"generate-btn",onClick:e[18]||(e[18]=(...r)=>i.handleGenerate&&i.handleGenerate(...r)),disabled:!l.imagePrompt.trim()||l.generating||l.uploading},g(l.generating?"Generating...":"Generate Image"),9,$e)):c("",!0),t("button",{ref:"addBtn",class:"add-btn",onClick:e[19]||(e[19]=(...r)=>i.handleAdd&&i.handleAdd(...r)),disabled:l.selectedFiles.length===0&&l.generatedImages.length===0&&l.pexelsImages.length===0||l.uploading||l.generating},g(l.uploading?"Adding...":`Add ${l.selectedFiles.length+l.generatedImages.length+l.pexelsImages.length} Image(s)`),9,et)])])]),_:1},8,["show","onClose"])}const st=P(ge,[["render",tt],["__scopeId","data-v-2f83f6a7"]]),it=[{id:"alloy",label:"Alloy",description:"Neutral"},{id:"echo",label:"Echo",description:"Smooth"},{id:"fable",label:"Fable",description:"Storytelling"},{id:"onyx",label:"Onyx",description:"Deep"},{id:"nova",label:"Nova",description:"Energetic"},{id:"shimmer",label:"Shimmer",description:"Soft"}],lt={name:"AudioModal",components:{Modal:Q,LoadingCircle:q},props:{show:{type:Boolean,default:!1},type:{type:String,default:"question"},cardId:{type:String,required:!0},existingAudio:{type:String,default:null}},data(){return{activeTab:"upload",selectedFile:null,generatedAudio:null,ttsText:"",selectedVoice:"alloy",voices:it,dragOver:!1,uploading:!1,generating:!1,insufficientCredits:!1}},computed:{...B("featureAccess",["isSubscribed"]),...F("auth",{userData:s=>s.userData}),aiBalance(){return this.userData?.aiBalance||0},estimatedCost(){const s=this.ttsText.length*.01875;return s<1?"< 1 bolt":`~${Math.round(s)} bolts`}},methods:{formatBalance(s){return`${Math.round(s).toLocaleString()} bolts`},close(){this.resetModal(),this.$emit("close")},resetModal(){this.activeTab="upload",this.selectedFile?.previewUrl&&URL.revokeObjectURL(this.selectedFile.previewUrl),this.selectedFile=null,this.generatedAudio=null,this.ttsText="",this.selectedVoice="alloy",this.dragOver=!1,this.uploading=!1,this.generating=!1,this.insufficientCredits=!1},triggerFileInput(){this.$refs.fileInput.click()},handleFileSelect(s){const e=s.target.files[0];e&&this.processFile(e),s.target.value=""},handleDrop(s){s.preventDefault(),this.dragOver=!1;const e=s.dataTransfer.files[0];e&&this.processFile(e)},processFile(s){if(!s.type.startsWith("audio/")){T.error("Please select an audio file.");return}if(s.size>5*1024*1024){T.error("File is too large. Maximum size is 5MB.");return}this.selectedFile?.previewUrl&&URL.revokeObjectURL(this.selectedFile.previewUrl),this.selectedFile={file:s,name:s.name,previewUrl:URL.createObjectURL(s)},this.generatedAudio=null},removeAudio(){this.selectedFile?.previewUrl&&URL.revokeObjectURL(this.selectedFile.previewUrl),this.selectedFile=null,this.generatedAudio=null},async handleGenerate(){if(this.ttsText.trim()){this.generating=!0;try{const s=await Z.post(`${N}/api/audio/generate`,{text:this.ttsText,voice:this.selectedVoice,model:"tts-1"},{withCredentials:!0});s.data.ok?(this.generatedAudio={url:s.data.audioUrl,language:s.data.language||null},this.selectedFile=null,this.ttsText="",this.insufficientCredits=!1,await this.$store.dispatch("auth/fetchUserData")):T.error("Failed to generate audio: "+s.data.message)}catch(s){s.response?.status===402?this.insufficientCredits=!0:(console.error("Error generating audio:",s),T.error("Error generating audio. Please try again."))}finally{this.generating=!1}}},async handleAdd(){if(!(!this.selectedFile&&!this.generatedAudio)){this.uploading=!0;try{if(this.selectedFile){const s=this.type==="question"?"cards/uploadQuestionAudio":"cards/uploadAnswerAudio";await this.$store.dispatch(s,{audio:this.selectedFile.file,cardId:this.cardId})}else if(this.generatedAudio){const s=this.type==="question"?"cards/setQuestionAudioUrl":"cards/setAnswerAudioUrl";await this.$store.dispatch(s,{audioUrl:this.generatedAudio.url,language:this.generatedAudio.language,cardId:this.cardId})}this.$emit("audioAdded"),this.close()}catch(s){console.error("Error adding audio:",s),T.error("Error adding audio. Please try again.")}finally{this.uploading=!1}}}},watch:{show(s){s?this.$store.dispatch("auth/fetchUserData"):this.resetModal()}},async mounted(){await this.$store.dispatch("auth/fetchUserData")},beforeUnmount(){this.selectedFile?.previewUrl&&URL.revokeObjectURL(this.selectedFile.previewUrl)}},ot={class:"audio-modal"},nt={class:"modal-header"},rt={class:"modal-body"},at={key:0,class:"ai-balance-display"},dt={class:"balance-amount"},ut={class:"tab-selector"},ct={key:1,class:"tab-content"},gt={class:"upload-section"},mt={key:2,class:"tab-content"},pt={class:"generate-section"},ht={class:"char-count"},vt={class:"voice-picker"},ft=["onClick"],It={class:"voice-name"},bt={class:"voice-desc"},yt={class:"generate-options"},kt={class:"model-info"},wt={class:"pricing-info"},At={class:"price-amount"},Ct={class:"price-detail"},xt={key:3,class:"preview-section"},Tt={class:"audio-preview"},Dt={class:"audio-preview-item"},_t=["src"],St={class:"preview-info"},Et={class:"file-name"},Ft={key:4,class:"existing-notice"},Mt={key:5,class:"loading-section"},Ut={key:6,class:"insufficient-notice"},Pt={class:"modal-footer"},Vt=["disabled"],Bt=["disabled"],qt=["disabled"];function Lt(s,e,u,h,l,i){const f=b("LoadingCircle"),I=b("Modal");return o(),C(I,{show:u.show,onClose:i.close},{default:E(()=>[t("div",ot,[t("div",nt,[t("h3",null,g(u.existingAudio?"Replace Audio":"Add Audio"),1),t("button",{class:"close-btn",onClick:e[0]||(e[0]=(...a)=>i.close&&i.close(...a))},"Ã")]),t("div",rt,[s.isSubscribed?(o(),n("div",at,[e[14]||(e[14]=t("span",{class:"balance-label"},"â¡ Bolt Balance:",-1)),t("span",dt,g(i.formatBalance(i.aiBalance)),1)])):c("",!0),t("div",ut,[t("button",{class:k(["tab-btn",{active:l.activeTab==="upload"}]),onClick:e[1]||(e[1]=a=>l.activeTab="upload")}," Upload Audio ",2),s.isSubscribed?(o(),n("button",{key:0,class:k(["tab-btn",{active:l.activeTab==="generate"}]),onClick:e[2]||(e[2]=a=>l.activeTab="generate")}," Generate with AI ",2)):c("",!0)]),l.activeTab==="upload"?(o(),n("div",ct,[t("div",gt,[t("div",{class:k(["upload-drop-zone",{"drag-over":l.dragOver}]),onDrop:e[3]||(e[3]=(...a)=>i.handleDrop&&i.handleDrop(...a)),onDragover:e[4]||(e[4]=v(a=>l.dragOver=!0,["prevent"])),onDragleave:e[5]||(e[5]=v(a=>l.dragOver=!1,["prevent"])),onClick:e[6]||(e[6]=(...a)=>i.triggerFileInput&&i.triggerFileInput(...a))},[...e[15]||(e[15]=[t("div",{class:"upload-content"},[t("div",{class:"upload-icon-wrapper"},[t("svg",{class:"upload-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 9l10.5-3m0 6.553v3.75a2.25 2.25 0 01-1.632 2.163l-1.32.377a1.803 1.803 0 11-.99-3.467l2.31-.66a2.25 2.25 0 001.632-2.163zm0 0V2.25L9 5.25v10.303m0 0v3.75a2.25 2.25 0 01-1.632 2.163l-1.32.377a1.803 1.803 0 01-.99-3.467l2.31-.66A2.25 2.25 0 009 15.553z"})])]),t("p",{class:"upload-text"},"Click to select or drag & drop audio"),t("p",{class:"upload-hint"},"MP3, WAV, M4A, AAC ⢠Max 5MB")],-1)])],34),t("input",{ref:"fileInput",type:"file",accept:".mp3,.wav,.m4a,.aac,audio/mpeg,audio/mp3,audio/wav,audio/wave,audio/mp4,audio/x-m4a,audio/aac",onChange:e[7]||(e[7]=(...a)=>i.handleFileSelect&&i.handleFileSelect(...a)),style:{display:"none"}},null,544)])])):c("",!0),l.activeTab==="generate"&&s.isSubscribed?(o(),n("div",mt,[t("div",pt,[e[18]||(e[18]=t("label",{for:"tts-text",class:"generate-label"}," Text to speak: ",-1)),S(t("textarea",{id:"tts-text","onUpdate:modelValue":e[8]||(e[8]=a=>l.ttsText=a),class:"generate-textarea",placeholder:"Enter the text you want converted to speech...",rows:"4",maxlength:"4096"},null,512),[[M,l.ttsText]]),t("div",ht,g(l.ttsText.length)+" / 4096",1),e[19]||(e[19]=t("label",{class:"generate-label"},"Voice:",-1)),t("div",vt,[(o(!0),n(A,null,D(l.voices,a=>(o(),n("button",{key:a.id,class:k(["voice-btn",{active:l.selectedVoice===a.id}]),onClick:p=>l.selectedVoice=a.id,type:"button"},[t("span",It,g(a.label),1),t("span",bt,g(a.description),1)],10,ft))),128))]),t("div",yt,[t("div",kt,[e[17]||(e[17]=t("div",{class:"model-header"},[t("span",{class:"model-name"},"OpenAI TTS-1"),t("span",{class:"model-badge"},"Text to Speech")],-1)),t("div",wt,[e[16]||(e[16]=t("span",{class:"price-label"},"Cost:",-1)),t("span",At,g(i.estimatedCost),1),t("span",Ct,"for "+g(l.ttsText.length||0)+" chars",1)])])])])])):c("",!0),l.selectedFile||l.generatedAudio?(o(),n("div",xt,[t("h4",null,g(l.generatedAudio?"Generated Audio:":"Selected Audio:"),1),t("div",Tt,[t("div",Dt,[t("audio",{controls:"",src:l.selectedFile?l.selectedFile.previewUrl:l.generatedAudio.url,class:"audio-player"},null,8,_t),t("div",St,[t("span",Et,g(l.selectedFile?l.selectedFile.name:"Generated Audio"),1),t("button",{class:"remove-btn",onClick:e[9]||(e[9]=(...a)=>i.removeAudio&&i.removeAudio(...a))},"Ã")])])])])):c("",!0),u.existingAudio&&!l.selectedFile&&!l.generatedAudio?(o(),n("div",Ft,[...e[20]||(e[20]=[t("p",null," This card already has audio. Uploading or generating will replace it. ",-1)])])):c("",!0),l.uploading||l.generating?(o(),n("div",Mt,[m(f,{size:40}),t("p",null,g(l.uploading?"Uploading audio...":"Generating audio..."),1)])):c("",!0),l.insufficientCredits?(o(),n("div",Ut,[e[21]||(e[21]=t("p",null," Not enough bolts to generate audio. Top up your balance to continue. ",-1)),t("button",{class:"top-up-btn",onClick:e[10]||(e[10]=a=>{s.$router.push("/credits"),i.close()})}," Top Up ")])):c("",!0)]),t("div",Pt,[t("button",{class:"cancel-btn",onClick:e[11]||(e[11]=(...a)=>i.close&&i.close(...a)),disabled:l.uploading||l.generating}
1," Cancel ",8,Vt),l.activeTab==="generate"&&s.isSubscribed?(o(),n("button",{key:0,class:"generate-btn",onClick:e[12]||(e[12]=(...a)=>i.handleGenerate&&i.handleGenerate(...a)),disabled:!l.ttsText.trim()||l.generating||l.uploading},g(l.generating?"Generating...":"Generate Audio"),9,Bt)):c("",!0),t("button",{class:"add-btn",onClick:e[13]||(e[13]=(...a)=>i.handleAdd&&i.handleAdd(...a)),disabled:!l.selectedFile&&!l.generatedAudio||l.uploading||l.generating},g(l.uploading?"Adding...":u.existingAudio?"Replace Audio":"Add Audio"),9,qt)])])]),_:1},8,["show","onClose"])}const Qt=P(lt,[["render",Lt],["__scopeId","data-v-43427ca2"]]),Rt={name:"TextEditor",props:{modelValue:{type:String,default:""}},emits:["update:modelValue"],data(){return{internalValue:this.modelValue,lastSel:{start:0,end:0}}},watch:{modelValue(s){this.internalValue=s},internalValue(s){this.$emit("update:modelValue",s)}},computed:{renderedHtml(){return ee(this.internalValue)}},components:{BoldFormat:X,ItalicFormat:J,HighlightFormat:Y},methods:{getTA(){return this.$refs.editor},saveSel(){const s=this.getTA();s&&(this.lastSel={start:s.selectionStart,end:s.selectionEnd})},restoreSel(){const s=this.getTA();if(!s)return;const{start:e,end:u}=this.lastSel;s.selectionStart=e,s.selectionEnd=u},toggleFormat(s){const e=this.getTA();if(!e)return;e.focus(),this.restoreSel();const u=$[s];if(!u)return;const{open:h,close:l}=u,i=this.internalValue??"",f=e.selectionStart,I=e.selectionEnd,a=i.slice(f,I);if(f>=h.length&&i.slice(f-h.length,f)===h&&i.slice(I,I+l.length)===l){const w=i.slice(0,f-h.length)+a+i.slice(I+l.length);this.internalValue=w,this.$nextTick(()=>{e.focus(),e.selectionStart=f-h.length,e.selectionEnd=I-h.length,this.saveSel()})}else{const w=i.slice(0,f)+h+a+l+i.slice(I);this.internalValue=w,this.$nextTick(()=>{e.focus(),e.selectionStart=f+h.length,e.selectionEnd=I+h.length,this.saveSel()})}},onKeydown(){this.$nextTick(this.saveSel)}}},Gt={class:"rte-container"},zt={class:"rte-editor-box"},Ot={class:"rte-toolbar"},Ht={class:"rte-group"},Wt={class:"rte-group"},Zt={class:"rte-group"},Nt={key:0,class:"rte-preview"},Kt=["innerHTML"];function jt(s,e,u,h,l,i){const f=b("BoldFormat"),I=b("ItalicFormat"),a=b("HighlightFormat");return o(),n("div",Gt,[t("div",zt,[t("div",Ot,[t("div",Ht,[t("button",{type:"button",class:"rte-btn",onMousedown:e[0]||(e[0]=v(p=>i.toggleFormat("bold"),["prevent"])),title:"Bold â wrap selection in **"},[m(f,{class:"rte-icon"})],32),t("button",{type:"button",class:"rte-btn",onMousedown:e[1]||(e[1]=v(p=>i.toggleFormat("italic"),["prevent"])),title:"Italic â wrap selection in //"},[m(I,{class:"rte-icon"})],32)]),e[18]||(e[18]=t("div",{class:"rte-sep"},null,-1)),t("div",Wt,[t("button",{type:"button",class:"rte-btn",onMousedown:e[2]||(e[2]=v(p=>i.toggleFormat("code"),["prevent"])),title:"Inline code â wrap selection in `backticks`"},[...e[12]||(e[12]=[t("span",{class:"rte-code-icon"},"` `",-1)])],32),t("button",{type:"button",class:"rte-btn",onMousedown:e[3]||(e[3]=v(p=>i.toggleFormat("codeBlock"),["prevent"])),title:"Code block â wrap selection in ```triple backticks```"},[...e[13]||(e[13]=[t("span",{class:"rte-code-icon"},"</>",-1)])],32)]),e[19]||(e[19]=t("div",{class:"rte-sep"},null,-1)),t("div",Zt,[t("button",{type:"button",class:"rte-btn rte-hl-y",onMousedown:e[4]||(e[4]=v(p=>i.toggleFormat("hiliteY"),["prevent"])),title:"Highlight Yellow"},[m(a,{class:"rte-icon"}),e[14]||(e[14]=t("span",{class:"rte-dot"},null,-1))],32),t("button",{type:"button",class:"rte-btn rte-hl-g",onMousedown:e[5]||(e[5]=v(p=>i.toggleFormat("hiliteG"),["prevent"])),title:"Highlight Green"},[m(a,{class:"rte-icon"}),e[15]||(e[15]=t("span",{class:"rte-dot"},null,-1))],32),t("button",{type:"button",class:"rte-btn rte-hl-p",onMousedown:e[6]||(e[6]=v(p=>i.toggleFormat("hiliteP"),["prevent"])),title:"Highlight Pink"},[m(a,{class:"rte-icon"}),e[16]||(e[16]=t("span",{class:"rte-dot"},null,-1))],32),t("button",{type:"button",class:"rte-btn rte-hl-b",onMousedown:e[7]||(e[7]=v(p=>i.toggleFormat("hiliteB"),["prevent"])),title:"Highlight Blue"},[m(a,{class:"rte-icon"}),e[17]||(e[17]=t("span",{class:"rte-dot"},null,-1))],32)]),e[20]||(e[20]=t("div",{class:"rte-hint"},[t("span",null,"**bold**"),t("span",null,"//italic//"),t("span",null,"`code`")],-1))]),S(t("textarea",{ref:"editor",class:"rte-textarea",placeholder:"Write your card content hereâ¦","onUpdate:modelValue":e[8]||(e[8]=p=>l.internalValue=p),onKeydown:e[9]||(e[9]=(...p)=>i.onKeydown&&i.onKeydown(...p)),onMouseup:e[10]||(e[10]=(...p)=>i.saveSel&&i.saveSel(...p)),onKeyup:e[11]||(e[11]=(...p)=>i.saveSel&&i.saveSel(...p)),spellcheck:"true"},null,544),[[M,l.internalValue]])]),l.internalValue?(o(),n("div",Nt,[e[21]||(e[21]=t("div",{class:"rte-preview-header"},[t("span",{class:"rte-preview-label"},"Preview")],-1)),t("div",{class:"rte-preview-body",innerHTML:i.renderedHtml},null,8,Kt)])):c("",!0)])}
1const Yt=P(Rt,[["render",jt],["__scopeId","data-v-d8e55feb"]]),Jt={name:"CardDetail",props:{cardId:{type:String,required:!0}},data(){return{uploadingQuestionImage:!1,uploadingAnswerImage:!1,errorQuestionImage:!1,errorAnswerImage:!1,showImageModal:!1,modalImageType:"question",showAudioModal:!1,modalAudioType:"question",zoomSrc:null,generatingAssets:!1}},components:{EmptyImage:W,ListEditor:ae,DeleteImage:ie,LoadingCircle:q,BreadCrumbs:K,TextButton:L,ImageModal:st,AudioModal:Qt,RichTextEditor:Yt},computed:{...F("folders",{selectedFolderData:s=>s.selectedFolderData}),...F("decks",{selectedDeck:s=>s.selectedDeck,selectedDeckData:s=>s.selectedDeckData}),...F("editDeckContentPage",{cards:s=>s.cards}),...B("featureAccess",["isSubscribed"]),...F("auth",{userData:s=>s.userData}),formattedBalance(){return(Math.floor(this.userData.aiBalance*100)/100).toFixed(2)},card(){return this.cards.find(s=>s._id===this.cardId)},...B("editDeckContentPage",{deckId:"getDeckId",cards:"getCards",hasUnsavedData:"getHasUnsavedData",preventEditMountedMethods:"getPreventEditMounted",detailPageHasBeenSetUp:"getDetailPageHasBeenSetUp"})},methods:{openZoom(s){s&&(this.zoomSrc=s,document.body.style.overflow="hidden")},closeZoom(){this.zoomSrc=null,document.body.style.overflow=""},onZoomKey(s){s.key==="Escape"&&this.zoomSrc&&this.closeZoom()},getImageAttribution(s){return this.card?.imageAttributions?.find(e=>e.url===s)},handleFolderBack(){this.$router.push({name:"folder",params:{folderId:this.selectedDeckData.folderId}})},handleBack(){this.$store.dispatch("decks/setSelectedDeck",this.selectedDeck),this.$router.push({name:"deck",params:{deckId:this.selectedDeck}})},handleBackToDeckEdit(){this.$router.push({name:"editdeck",params:{deckId:this.selectedDeckData._id}})},saveCard(){this.generatingAssets||(this.$store.dispatch("editDeckContentPage/updateCard",{cardId:this.card._id,cardData:this.card}),this.$router.push("/"))},openImageModal(s){this.modalImageType=s,this.showImageModal=!0},closeImageModal(){this.showImageModal=!1},handleImagesAdded(){this.closeImageModal()},openAudioModal(s){this.modalAudioType=s,this.showAudioModal=!0}
1,closeAudioModal(){this.showAudioModal=!1},handleAudioAdded(){this.closeAudioModal()},async deleteQuestionAudio(){try{await this.$store.dispatch("editDeckContentPage/deleteQuestionAudio",{cardId:this.card._id})}catch(s){console.error("Error deleting question audio:",s)}},async deleteAnswerAudio(){try{await this.$store.dispatch("editDeckContentPage/deleteAnswerAudio",{cardId:this.card._id})}catch(s){console.error("Error deleting answer audio:",s)}},triggerQuestionImagePicker(){this.$refs.questionImageInput.click()},async handleQuestionImageChange(s){const e=Array.from(s.target.files);if(e.length>0){this.uploadingQuestionImage=!0;for(const u of e)try{await this.$store.dispatch("editDeckContentPage/uploadQuestionImage",{image:u,cardId:this.card._id})}catch(h){console.error("Error uploading question image:",h),this.errorQuestionImage=!0}this.uploadingQuestionImage=!1,s.target.value=""}},handleQuestionImageError(){this.errorQuestionImage=!0},triggerAnswerImagePicker(){this.$refs.answerImageInput.click()},async handleAnswerImageChange(s){const e=Array.from(s.target.files);if(e.length>0){this.uploadingAnswerImage=!0;for(const u of e)try{await this.$store.dispatch("editDeckContentPage/uploadAnswerImage",{image:u,cardId:this.card._id})}catch(h){console.error("Error uploading answer image:",h),this.errorAnswerImage=!0}this.uploadingAnswerImage=!1,s.target.value=""}},handleAnswerImageError(){this.errorAnswerImage=!0},async deleteQuestionImage(s){if(this.card.questionImages&&this.card.questionImages.length>s)try{await this.$store.dispatch("editDeckContentPage/deleteQuestionImage",{index:s,cardId:this.card._id})}catch(e){console.error("Error deleting question image:",e)}},async deleteAnswerImage(s){if(this.card.answerImages&&this.card.answerImages.length>s)try{await this.$store.dispatch("editDeckContentPage/deleteAnswerImage",{index:s,cardId:this.card._id})}catch(e){console.error("Error deleting answer image:",e)}},async generateAssets(){if(!this.generatingAssets){this.generatingAssets=!0;try{const s=await this.$store.dispatch("editDeckContentPage/generateAssets",{question:this.card.question,answer:this.card.answer});if(s&&s.assets){if(s.assets.wrongs)for(const e of s.assets.wrongs)await this.$refs.listEditor.addAiGeneratedItem(e);if(s.assets.associations)for(const e of s.assets.associations)await this.$refs.associationsEditor.addAiGeneratedItem(e)}}finally{this.generatingAssets=!1}}},async fetchInitialData(){const s=!!this.$store.state.decks.deckData,e=Array.isArray(this.$store.state.editDeckContentPage.cards)&&this.$store.state.editDeckContentPage.cards.length>0;this.$store.state.editDeckContentPage.cards,!s&&!e&&(this.deckId,this.$route.params,this.$router.push({name:"editdeck",params:{deckId:this.deckId}})),s||await this.$store.dispatch("decks/getDeckData",this.$route.params.deckId),e||await this.$store.dispatch("editDeckContentPage/fetchDeckCards",this.$route.params.deckId)}},beforeUnmount(){document.removeEventListener("keydown",this.onZoomKey),document.body.style.overflow=""},async mounted(){document.addEventListener("keydown",this.onZoomKey),this.preventEditMountedMethods,!this.preventEditMountedMethods&&await this.fetchInitialData()},beforeRouteUpdate(s,e,u){(s.params.deckId!==e.params.deckId||s.params.cardId!==e.params.cardId)&&this.fetchInitialData(),u()},beforeRouteLeave(s,e,u){if(s.name=="editdeck"){this.$store.dispatch("editDeckContentPage/setPreventEditMountedMethods",!0),u();return}else{this.$store.dispatch("editDeckContentPage/setPreventEditMountedMethods",!1),u();return}}},Xt={key:0},$t={class:"page"},es={class:"banner"},ts={class:"template"},ss={class:"qaset"},is={class:"textEditor"},ls={key:0,class:"inputWithImage"},os={class:"audioContainer"},ns={key:0,class:"audioWrapper"},rs=["src"],as={class:"imageContainer"},ds={key:0,class:"multipleImagesWrapper"},us=["src"],cs=["onClick"],gs=["onClick"],ms={class:"imageIndex"},ps=["href","title"],hs={key:1,class:"imageWrapper"},vs={key:1},fs={key:0,class:"inputWithImage"},Is={class:"audioContainer"},bs={key:0,class:"audioWrapper"},ys=["src"],ks={class:"imageContainer"},ws={key:0,class:"multipleImagesWrapper"},As=["src"],Cs=["onClick"],xs=["onClick"],Ts={class:"imageIndex"},Ds=["href","title"],_s={key:1,class:"imageWrapper"},Ss={key:1},Es={class:"detailsContainer"},Fs={key:0,class:"generate-row"},Ms={class:"generate-btn-content"},Us=["src"];function Ps(s,e,u,h,l,i){const f=b("BreadCrumbs"),I=b("TextButton"),a=b("RichTextEditor"),p=b("DeleteImage"),w=b("LoadingCircle"),r=b("EmptyImage"),y=b("ListEditor"),V=b("ImageModal"),R=b("AudioModal");return o(),n(A,null,[t("div",null,[i.card?(o(),n("div",Xt,[t("div",$t,[m(f),e[34]||(e[34]=t("br",null,null,-1)),t("div",es,[t("span",{class:k(["ai-balance",s.userData.aiBalance>0?"positive":"negative"])}," AI Balance: "+g(i.formattedBalance)+" Bolts ",3),m(I,{onClick:i.saveC
1ard,category:"action",disabled:l.generatingAssets},{default:E(()=>[...e[25]||(e[25]=[U("Save Card",-1)])]),_:1},8,["onClick","disabled"])]),t("div",ts,[t("div",ss,[t("div",is,[s.isSubscribed?(o(),n("div",ls,[t("div",null,[e[26]||(e[26]=t("p",{class:"label"},"Question:",-1)),m(a,{modelValue:i.card.question,"onUpdate:modelValue":e[0]||(e[0]=d=>i.card.question=d)},null,8,["modelValue"])]),t("div",os,[i.card.questionAudio?(o(),n("div",ns,[t("audio",{controls:"",src:i.card.questionAudio,class:"cardAudio"},null,8,rs),t("button",{class:"deleteAudio",onClick:e[1]||(e[1]=(...d)=>i.deleteQuestionAudio&&i.deleteQuestionAudio(...d)),title:"Delete audio"},[m(p)])])):(o(),n("button",{key:1,class:"addAudioBtn",onClick:e[2]||(e[2]=d=>i.openAudioModal("question")),title:"Add audio"},[...e[27]||(e[27]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5",class:"audioIcon"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 9l10.5-3m0 6.553v3.75a2.25 2.25 0 01-1.632 2.163l-1.32.377a1.803 1.803 0 11-.99-3.467l2.31-.66a2.25 2.25 0 001.632-2.163zm0 0V2.25L9 5.25v10.303m0 0v3.75a2.25 2.25 0 01-1.632 2.163l-1.32.377a1.803 1.803 0 01-.99-3.467l2.31-.66A2.25 2.25 0 009 15.553z"})],-1),t("span",null,"Add Audio",-1)])]))]),t("div",as,[i.card.questionImages?.length?(o(),n("div",ds,[(o(!0),n(A,null,D(i.card.questionImages,(d,_)=>(o(),n("div",{key:`question-${_}`,class:"imageWrapper"},[!l.errorQuestionImage&&!l.uploadingQuestionImage?(o(),n("img",{key:0,src:d,class:"cardImage",onError:e[3]||(e[3]=(...x)=>i.handleQuestionImageError&&i.handleQuestionImageError(...x)),onClick:e[4]||(e[4]=x=>i.openImageModal("question"))},null,40,us)):c("",!0),t("button",{class:"zoomImage",onClick:v(x=>i.openZoom(d),["stop"]),title:"Zoom image"}," ⤢ ",8,cs),t("button",{class:"deleteImage",onClick:x=>i.deleteQuestionImage(_),title:"Delete image"},[m(p)],8,gs),t("div",ms,g(_+1),1),i.getImageAttribution(d)?(o(),n("a",{key:1,href:i.getImageAttribution(d).pexelsUrl,target:"_blank",rel:"noopener noreferrer",class:"imageCredit",title:`Photo by ${i.getImageAttribution(d).photographer} on Pexels`,onClick:e[5]||(e[5]=v(()=>{},["stop"]))},"ð· "+g(i.getImageAttribution(d).photographer),9,ps)):c("",!0)]))),128)),t("div",{class:k(["imageWrapper addImageWrapper",{disabled:l.uploadingQuestionImage}]),onClick:e[6]||(e[6]=d=>!l.uploadingQuestionImage&&i.openImageModal("question"))},[l.uploadingQuestionImage?(o(),C(w,{key:0,size:"30"})):(o(),n(A,{key:1},[m(r,{class:"emptyImage"}),e[28]||(e[28]=t("div",{class:"addImageText"},"+",-1))],64))],2)])):(o(),n("div",hs,[l.uploadingQuestionImage?c("",!0):(o(),C(r,{key:0,class:"emptyImage",onClick:e[7]||(e[7]=d=>i.openImageModal("question"))})),l.uploadingQuestionImage?(o(),C(w,{key:1,size:"30"})):c("",!0)]))]),t("input",{type:"file",ref:"questionImageInput",accept:"image/*",multiple:"",onChange:e[8]||(e[8]=(...d)=>i.handleQuestionImageChange&&i.handleQuestionImageChange(...d)),style:{display:"none"}},null,544)])):(o(),n("div",vs,[e[29]||(e[29]=t("p",{class:"label"},"Question:",-1)),m(a,{modelValue:i.card.question,"onUpdate:modelValue":e[9]||(e[9]=d=>i.card.question=d)},null,8,["modelValue"])]))]),s.isSubscribed?(o(),n("div",fs,[t("div",null,[e[30]||(e[30]=t("p",{class:"label"},"Answer:",-1)),m(a,{modelValue:i.card.answer,"onUpdate:modelValue":e[10]||(e[10]=d=>i.card.answer=d)},null,8,["modelValue"])]),t("div",Is,[i.card.answerAudio?(o(),n("div",bs,[t("audio",{controls:"",src:i.card.answerAudio,class:"cardAudio"},null,8,ys),t("button",{class:"deleteAudio",onClick:e[11]||(e[11]=(...d)=>i.deleteAnswerAudio&&i.deleteAnswerAudio(...d)),title:"Delete audio"},[m(p)])])):(o(),n("button",{key:1,class:"addAudioBtn",onClick:e[12]||(e[12]=d=>i.openAudioModal("answer")),title:"Add audio"},[...e[31]||(e[31]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5",class:"audioIcon"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 9l10.5-3m0 6.553v3.75a2.25 2.25 0 01-1.632 2.163l-1.32.377a1.803 1.803 0 11-.99-3.467l2.31-.66a2.25 2.25 0 001.632-2.163zm0 0V2.25L9 5.25v10.303m0 0v3.75a2.25 2.25 0 01-1.632 2.163l-1.32.377a1.803 1.803 0 01-.99-3.467l2.31-.66A2.25 2.25 0 009 15.553z"})],-1),t("span",null,"Add Audio",-1)])]))]),t("div",ks,[i.card.answerImages?.length?(o(),n("div",ws,[(o(!0),n(A,null,D(i.card.answerImages,(d,_)=>(o(),n("div",{key:`answer-${_}`,class:"imageWrapper"},[!l.errorAnswerImage&&!l.uploadingAnswerImage?(o(),n("img",{key:0,src:d,class:"cardImage",onError:e[13]||(e[13]=(...x)=>i.handleAnswerImageError&&i.handleAnswerImageError(...x)),onClick:e[14]||(e[14]=x=>i.openImageModal("answer"))},null,40,As)):c("",!0),t("button",{class:"zoomImage",onClick:v(x=>i.openZoom(d),["stop"]),title:"Zoom image"}," ⤢ ",8,Cs),t("button",{class:"deleteImage",onClick:x=>i.deleteAnswerImage(_),title:"Delete image"},[m(p)],8,xs),t("div",Ts,g(_+1),1),i.getImageAttribution(d)?(o(),n("a",{key:1,href:i.getImageAttribution(d).pexelsUrl,target:"_blank",rel:"noopener noreferrer",class:"imageCredit",title:`Photo by ${i.getImageAttribution(d).photographer} on Pexels`,onClick:e[15]||(e[15]=v(()=>{},["stop"]))},"ð· "+g(i.getImageAttribution(d).photographer),9,Ds)):c("",!0)]))),128)),t("div",{class:k(["imageWrapper addImageWrapper",{disabled:l.uploadingAnswerImage}]),onClick:e[16]||(e[16]=d=>!l.uploadingAnswerImage&&i.openImageModal("answer"))},[l.uploadingAnswerImage?(o(),C(w,{key:0,size:"30"})):(o(),n(A,{key:1},[m(r,{class:"emptyImage"}),e[32]||(e[32]=t("div",{class:"addImageText"},"+",-1))],64))],2)])):(o(),n("div",_s,[l.uploadingAnswerImage?c("",!0):(o(),C(r,{key:0,class:"emptyImage",onClick:e[17]||(e[17]=d=>i.openImageModal("answer"))})),l.uploadingAnswerImage?(o(),C(w,{key:1,size:"30"})):c("",!0)]))]),t("input",{type:"file",ref:"answerImageInput",accept:"image/*",multiple:"",onChange:e[18]||(e[18]=(...d)=>i.handleAnswerImageChange&&i.handleAnswerImageChange(...d)),style:{display:"none"}},null,544)])):(o(),n("div",Ss,[e[33]||(e[33]=t("p",{class:"label"},"Answer:",-1)),m(a,{modelValue:i.card.answer,"onUpdate:modelValue":e[19]||(e[19]=d=>i.card.answer=d)},null,8,["modelValue"])]))]),t("div",Es,[s.isSubscribed?(o(),n("div",Fs,[m(I,{onClick:i.generateAssets,category:"action",disabled:l.generatingAssets},{default:E(()=>[t("span",Ms,[l.generatingAssets?(o(),C(w,{key:0,size:"16"})):c("",!0),U(" "+g(l.generatingAssets?"Generatingâ¦":"Generate Incorrect Choices and Associations"),1)])]),_:1},8,["onClick","disabled"])])):c("",!0),m(y,{title:"Incorrect Choices",description:"These wrong choices may appear in different study modes.",modelValue:i.card.wrongs,"onUpdate:modelValue":e[20]||(e[20]=d=>i.card.wrongs=d),ref:"listEditor"},null,8,["modelValue"]),m(y,{title:"Associations",description:"Associations help you remember and tie in a question to its answer via different topics.",modelValue:i.card.associations,"onUpdate:modelValue":e[21]||(e[21]=d=>i.card.associations=d),ref:"associationsEditor"},null,8,["modelValue"])])])])])):c("",!0),m(V,{show:l.showImageModal,type:l.modalImageType,"card-id":u.cardId,onClose:i.closeImageModal,onImagesAdded:i.handleImagesAdded},null,8,["show","type","card-id","onClose","onImagesAdded"]),m(R,{show:l.showAudioModal,type:l.modalAudioType,"card-id":u.cardId,"existing-audio":l.modalAudioType==="question"?i.card?.questionAudio:i.card?.answerAudio,onClose:i.closeAudioMo
1dal,onAudioAdded:i.handleAudioAdded},null,8,["show","type","card-id","existing-audio","onClose","onAudioAdded"])]),(o(),C(H,{to:"body"},[m(O,{name:"zoom-fade"},{default:E(()=>[l.zoomSrc?(o(),n("div",{key:0,class:"image-zoom-overlay",onClick:e[24]||(e[24]=(...d)=>i.closeZoom&&i.closeZoom(...d))},[t("button",{class:"zoom-close",onClick:e[22]||(e[22]=v((...d)=>i.closeZoom&&i.closeZoom(...d),["stop"])),"aria-label":"Close"}," Ã "),t("img",{src:l.zoomSrc,class:"zoom-image",onClick:e[23]||(e[23]=v(()=>{},["stop"]))},null,8,Us)])):c("",!0)]),_:1})]))],64)}const Ws=P(Jt,[["render",Ps],["__scopeId","data-v-7149d670"]]);export{Ws as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.