@turnix-co/konva-editor 2.0.25 → 2.0.28
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.
- package/README.md +409 -265
- package/dist/index.d.ts +106 -41
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/styles.css +2 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export{default as Konva}from'konva';import*as xe from'react';import xe__default,{forwardRef,useRef,useEffect,useCallback,useImperativeHandle,memo,useState,createElement,useMemo,useId,useLayoutEffect}from'react';import {Group,Image,Line,Rect,Arc,Arrow,Wedge,Ring,Ellipse,RegularPolygon,Star,Circle,Text,Stage,Layer,Transformer}from'react-konva';import {useSelector,useDispatch}from'react-redux';export{Provider as ReduxProvider}from'react-redux';import {createSlice,configureStore}from'@reduxjs/toolkit';import Tl from'perfect-freehand';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Html}from'react-konva-utils';import {CameraPlus,Camera,Stop,X as X$1,Microphone,MicrophoneSlash,Record,Download,Cursor,PenNib,Eraser,TextAa,Shapes,Cards,Image as Image$1,Square,Circle as Circle$1,Triangle,Hexagon,Star as Star$1,Pizza,ArrowRight,LineSegment,Circuitry,MonitorPlay,ListBullets,ToggleRight,Textbox,TextUnderline,ArrowCounterClockwise,ArrowClockwise,Trash,SidebarSimple,Plus,Export,ArrowUpIcon,Lock,LinkIcon,SpeakerHifiIcon,NotePencilIcon,Palette,ScissorsIcon,PencilSimple,CopySimple,Chat,Stack as Stack$1,Check,Play,SpeakerSimpleSlash,SpeakerHigh,TextB,TextItalic,Warning,CloudArrowUp as CloudArrowUp$1,ArrowsDownUp,Shuffle}from'@phosphor-icons/react/dist/ssr';import {Stack,X as X$2,DotsSixVertical,ArrowUp,ArrowDown,CaretLeft,CloudArrowUp,GearSix,User,Question,FrameCorners,Cards as Cards$1,TextT,Shapes as Shapes$1,VideoCamera,Image as Image$2,EyeIcon}from'@phosphor-icons/react';import {createPortal}from'react-dom';import Rd from'use-image';import {Reorder,motion,AnimatePresence}from'framer-motion';import {useSyncExternalStoreWithSelector}from'use-sync-external-store/shim/with-selector.js';import {v4}from'uuid';import {QueryClient}from'@tanstack/react-query';var vl=e=>{throw TypeError(e)};var yl=(e,o,t)=>o.has(e)||vl("Cannot "+t);var j=(e,o,t)=>(yl(e,o,"read from private field"),t?t.call(e):o.get(e)),ke=(e,o,t)=>o.has(e)?vl("Cannot add the same private member more than once"):o instanceof WeakSet?o.add(e):o.set(e,t),Se=(e,o,t,a)=>(yl(e,o,"write to private field"),o.set(e,t),t);var wl=(e,o,t,a)=>({set _(r){Se(e,o,r);},get _(){return j(e,o,a)}});var ge=()=>useDispatch(),J=e=>useSelector(e),Ht=ge,aa=J;var Gs=20,Ll=e=>({id:`slide-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,name:e||`Slide ${Date.now()}`,thumbnail:void 0,backgroundColor:"#ffffff",lines:[],shapes:[],images:[],videos:[],flashcards:[],photoFrames:[],texts:[],activityType:"",multipleChoices:[],trueFalses:[],shortAnswers:[],LongAnswer:[],fillInTheBlanks:[],showMcqForm:false,showFlashcardForm:false,editingActivity:null,editingFlashcard:null,createdAt:Date.now(),updatedAt:Date.now()}),Ws=Ll("Slide 1"),Kf={slides:[Ws],currentSlideId:Ws.id,history:{[Ws.id]:{past:[],future:[]}},isSketchMode:true,editingTextId:null},Sl=createSlice({name:"canvas",initialState:Kf,reducers:{addSlide:e=>{if(e.slides.length>=Gs)return;let o=Ll(`Slide ${e.slides.length+1}`);e.slides.push(o),e.currentSlideId=o.id,e.history[o.id]={past:[],future:[]};},deleteSlide:(e,o)=>{if(e.slides.length<=1)return;let t=e.slides.findIndex(a=>a.id===o.payload);if(t!==-1&&(e.slides.splice(t,1),delete e.history[o.payload],e.currentSlideId===o.payload)){let a=Math.max(0,t-1);e.currentSlideId=e.slides[a].id;}},duplicateSlide:(e,o)=>{if(e.slides.length>=Gs)return;let t=e.slides.findIndex(n=>n.id===o.payload);if(t===-1)return;let a=e.slides[t],r={...a,id:`slide-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,name:`${a.name} (Copy)`,createdAt:Date.now(),updatedAt:Date.now(),lines:JSON.parse(JSON.stringify(a.lines)),images:JSON.parse(JSON.stringify(a.images)),videos:JSON.parse(JSON.stringify(a.videos)),shapes:JSON.parse(JSON.stringify(a.shapes)),flashcards:JSON.parse(JSON.stringify(a.flashcards)),photoFrames:JSON.parse(JSON.stringify(a.photoFrames))};e.slides.splice(t+1,0,r),e.currentSlideId=r.id,e.history[r.id]={past:[],future:[]};},setCurrentSlide:(e,o)=>{e.slides.find(a=>a.id===o.payload)&&(e.currentSlideId=o.payload);},updateSlideThumbnail:(e,o)=>{let t=e.slides.find(a=>a.id===o.payload.id);t&&(t.thumbnail=o.payload.thumbnail,t.updatedAt=Date.now());},setBackgroundColor:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.backgroundColor=o.payload,t.updatedAt=Date.now());},reorderSlides:(e,o)=>{let{fromIndex:t,toIndex:a}=o.payload;if(t<0||t>=e.slides.length||a<0||a>=e.slides.length)return;let[r]=e.slides.splice(t,1);e.slides.splice(a,0,r);},loadSlides:(e,o)=>{e.slides=o.payload.slides.map(t=>({...t,showMcqForm:false})),e.currentSlideId=o.payload.currentSlideId,e.history={},o.payload.slides.forEach(t=>{e.history[t.id]={past:[],future:[]};});},addLine:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,id:o.payload.id||`line-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,timestamp:o.payload.timestamp||Date.now(),x:o.payload.x||0,y:o.payload.y||0};t.lines.push(a),t.updatedAt=Date.now();}},removeLine:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);t&&o.payload>=0&&o.payload<t.lines.length&&(t.lines.splice(o.payload,1),t.updatedAt=Date.now());},updateLastLine:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);t&&t.lines.length>0&&(t.lines[t.lines.length-1].points=o.payload,t.updatedAt=Date.now());},finalizeDrawing:e=>{let o=e.slides.find(t=>t.id===e.currentSlideId);o&&(o.updatedAt=Date.now());},setLines:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.lines=o.payload,t.updatedAt=Date.now());},updateLinePosition:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.lines.find(r=>r.id===o.payload.id);a&&(a.x=o.payload.x,a.y=o.payload.y,t.updatedAt=Date.now());}},updateLineTransform:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.lines.find(r=>r.id===o.payload.id);a&&(a.x=o.payload.x,a.y=o.payload.y,a.scaleX=o.payload.scaleX,a.scaleY=o.payload.scaleY,a.rotation=o.payload.rotation,t.updatedAt=Date.now());}},deleteLineById:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.lines.findIndex(r=>r.id===o.payload);a!==-1&&(t.lines.splice(a,1),t.updatedAt=Date.now());}},duplicateLine:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.lines.find(r=>r.id===o.payload);if(a){let r={...a,id:`line-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,x:(a.x||0)+20,y:(a.y||0)+20,timestamp:Date.now()};t.lines.push(r),t.updatedAt=Date.now();}}},updateElementOrder:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r,newTimestamp:n}=o.payload;switch(r){case "image":let s=t.images.find(g=>g.id===a);s&&(s.timestamp=n);break;case "video":let l=t.videos.find(g=>g.id===a);l&&(l.timestamp=n);break;case "shape":let c=t.shapes.find(g=>g.id===a);c&&(c.timestamp=n);break;case "text":let i=t.texts.find(g=>g.id===a);i&&(i.timestamp=n);break;case "flashcard":let d=t.flashcards.find(g=>g.id===a);d&&(d.timestamp=n);break;case "photoFrame":let f=t.photoFrames.find(g=>g.id===a);f&&(f.timestamp=n);break;case "mcq":let m=t.multipleChoices.find(g=>g.id===a);m&&(m.timestamp=n);break;case "trueFalse":let u=t.trueFalses.find(g=>g.id===a);u&&(u.timestamp=n);break;case "shortAnswer":let p=t.shortAnswers.find(g=>g.id===a);p&&(p.timestamp=n);break;case "longAnswer":let x=t.LongAnswer.find(g=>g.id===a);x&&(x.timestamp=n);break;case "fillInTheBlanks":let h=t.fillInTheBlanks.find(g=>g.id===a);h&&(h.timestamp=n);break;case "line":let v=t.lines.find(g=>g.id===a);v&&(v.timestamp=n);break}t.updatedAt=Date.now();}},addImage(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};t.images.push(a),t.updatedAt=Date.now();}},updateImage(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.images[a]={...t.images[a],...o.payload},t.updatedAt=Date.now());}},deleteImage(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.images=t.images.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateImage(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.find(r=>r.id===o.payload);if(a){let r={...a,id:`img-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.images.push(r),t.updatedAt=Date.now();}}},addVideo(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};t.videos.push(a),t.updatedAt=Date.now();}},updateVideo(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.videos.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.videos[a]={...t.videos[a],...o.payload},t.updatedAt=Date.now());}},toggleVideoPlaying(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.videos.find(r=>r.id===o.payload);a&&(a.isPlaying=!a.isPlaying,t.updatedAt=Date.now());}},deleteVideo(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.videos=t.videos.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateVideo(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.videos.find(r=>r.id===o.payload);if(a){let r={...a,id:`vid-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,isPlaying:false,timestamp:Date.now()};t.videos.push(r),t.updatedAt=Date.now();}}},addShape(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};t.shapes?.push(a),t.updatedAt=Date.now();}},updateShape(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.shapes.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.shapes[a]={...t.shapes[a],...o.payload},t.updatedAt=Date.now());}},duplicateShape(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.shapes.find(r=>r.id===o.payload);if(a){let r={...a,id:`shape-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.shapes.push(r),t.updatedAt=Date.now();}}},deleteShape(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.shapes=t.shapes.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},addMultipleChoice(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){t.multipleChoices||(t.multipleChoices=[]);let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.multipleChoices.length>0){let r=t.multipleChoices[t.multipleChoices.length-1];a.x=r.x+20,a.y=r.y+20;}t.multipleChoices.push(a),t.updatedAt=Date.now();}},updateMultipleChoice(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t&&t.multipleChoices){let a=t.multipleChoices.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.multipleChoices[a]={...t.multipleChoices[a],...o.payload},t.updatedAt=Date.now());}},editMultipleChoice(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t&&t.multipleChoices){let a=t.multipleChoices.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.multipleChoices[a]={...t.multipleChoices[a],...o.payload},t.updatedAt=Date.now());}},duplicateMultipleChoice(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.multipleChoices.find(r=>r.id===o.payload);if(a){let r={...a,id:`mcq-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.multipleChoices.push(r),t.updatedAt=Date.now();}}},deleteMultipleChoice(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.multipleChoices=t.multipleChoices.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},addTrueFalse(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){t.trueFalses||(t.trueFalses=[]);let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.trueFalses.length>0){let r=t.trueFalses[t.trueFalses.length-1];a.x=r.x+20,a.y=r.y+20;}t.trueFalses.push(a),t.updatedAt=Date.now();}},updateTrueFalse(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.trueFalses.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.trueFalses[a]={...t.trueFalses[a],...o.payload},t.updatedAt=Date.now());}},deleteTrueFalse(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.trueFalses=t.trueFalses.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateTrueFalse(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.trueFalses.find(r=>r.id===o.payload);if(a){let r={...a,id:`shape-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.trueFalses.push(r),t.updatedAt=Date.now();}}},addShortAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){t.shortAnswers||(t.shortAnswers=[]);let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.shortAnswers.length>0){let r=t.shortAnswers[t.shortAnswers.length-1];a.x=r.x+20,a.y=r.y+20;}t.shortAnswers.push(a),t.updatedAt=Date.now();}},updateShortAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.shortAnswers.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.shortAnswers[a]={...t.shortAnswers[a],...o.payload},t.updatedAt=Date.now());}},duplicateShortAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.shortAnswers.find(r=>r.id===o.payload);if(a){let r={...a,id:`shortAnswer-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.shortAnswers.push(r),t.updatedAt=Date.now();}}},deleteShortAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.shortAnswers=t.shortAnswers.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},addLongAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){t.LongAnswer||(t.LongAnswer=[]);let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.LongAnswer.length>0){let r=t.LongAnswer[t.LongAnswer.length-1];a.x=r.x+20,a.y=r.y+20;}t.LongAnswer.push(a),t.updatedAt=Date.now();}},updateLongAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.LongAnswer.find(r=>r.id===o.payload.id);a&&(Object.assign(a,o.payload),t.updatedAt=Date.now());}},deleteLongAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.LongAnswer=t.LongAnswer.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateLongAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.LongAnswer.find(r=>r.id===o.payload);if(a){let r={...a,id:`${a.id}-copy-${Date.now()}`,timestamp:Date.now()};t.LongAnswer.push(r),t.updatedAt=Date.now();}}},setShowMcqForm(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.showMcqForm=o.payload,t.updatedAt=Date.now());},setShowFlashcardForm(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.showFlashcardForm=o.payload,t.updatedAt=Date.now());},addFillInTheBlanks(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){t.fillInTheBlanks||(t.fillInTheBlanks=[]);let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.fillInTheBlanks.length>0){let r=t.fillInTheBlanks[t.fillInTheBlanks.length-1];a.x=r.x+20,a.y=r.y+20;}t.fillInTheBlanks.push(a),t.updatedAt=Date.now();}},updateFillInTheBlanks(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.fillInTheBlanks.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.fillInTheBlanks[a]={...t.fillInTheBlanks[a],...o.payload},t.updatedAt=Date.now());}},deleteFillInTheBlanks(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.fillInTheBlanks=t.fillInTheBlanks.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateFillInTheBlanks(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.fillInTheBlanks.find(r=>r.id===o.payload);if(a){let r={...a,id:`fillInTheBlank-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.fillInTheBlanks.push(r),t.updatedAt=Date.now();}}},setActivityType(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.activityType=o.payload,t.updatedAt=Date.now());},setEditingActivity(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.editingActivity=o.payload,t.updatedAt=Date.now());},bringToFront(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r}=o.payload;if(r==="image"){let n=t.images.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.images.splice(n,1);t.images.push(s);}}else if(r==="video"){let n=t.videos.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.videos.splice(n,1);t.videos.push(s);}}else if(r==="shape"){let n=t.shapes.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.shapes.splice(n,1);t.shapes.push(s);}}else if(r==="flashcard"){let n=t.flashcards.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.flashcards.splice(n,1);t.flashcards.push(s);}}else if(r==="photoFrame"){let n=t.photoFrames.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.photoFrames.splice(n,1);t.photoFrames.push(s);}}else if(r==="text"){let n=t.texts.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.texts.splice(n,1);t.texts.push(s);}}else if(r==="trueFalse"){let n=t.trueFalses.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.trueFalses.splice(n,1);t.trueFalses.push(s);}}else if(r==="shortAnswer"){let n=t.shortAnswers.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.shortAnswers.splice(n,1);t.shortAnswers.push(s);}}else if(r==="fillInTheBlanks"){let n=t.fillInTheBlanks.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.fillInTheBlanks.splice(n,1);t.fillInTheBlanks.push(s);}}t.updatedAt=Date.now();}},sendToBack(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r}=o.payload;if(r==="image"){let n=t.images.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.images.splice(n,1);t.images.unshift(s);}}else if(r==="video"){let n=t.videos.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.videos.splice(n,1);t.videos.unshift(s);}}else if(r==="shape"){let n=t.shapes.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.shapes.splice(n,1);t.shapes.unshift(s);}}else if(r==="flashcard"){let n=t.flashcards.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.flashcards.splice(n,1);t.flashcards.unshift(s);}}else if(r==="photoFrame"){let n=t.photoFrames.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.photoFrames.splice(n,1);t.photoFrames.unshift(s);}}else if(r==="text"){let n=t.texts.findIndex(s=>s.id===a);if(n!==-1){let[s]=t.texts.splice(n,1);t.texts.unshift(s);}}t.updatedAt=Date.now();}},toggleLock(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r}=o.payload,s=(r==="image"?t.images:r==="video"?t.videos:r==="shape"?t.shapes:r==="flashcard"?t.flashcards:r==="photoFrame"?t.photoFrames:r==="trueFalse"?t.trueFalses:r==="shortAnswer"?t.shortAnswers:r==="fillInTheBlanks"?t.fillInTheBlanks:t.texts).find(l=>l.id===a);s&&(s.locked=!s.locked,"draggable"in s&&(s.draggable=!s.locked),t.updatedAt=Date.now());}},setLink(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r,link:n}=o.payload,l=(r==="image"?t.images:r==="video"?t.videos:r==="shape"?t.shapes:r==="flashcard"?t.flashcards:r==="photoFrame"?t.photoFrames:r==="mcq"?t.multipleChoices:r==="trueFalse"?t.trueFalses:r==="shortAnswer"?t.shortAnswers:r==="fillInTheBlanks"?t.fillInTheBlanks:t.texts).find(c=>c.id===a);l&&(l.link=n,t.updatedAt=Date.now());}},setAltText(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r,altText:n}=o.payload,l=(r==="image"?t.images:r==="video"?t.videos:r==="shape"?t.shapes:r==="flashcard"?t.flashcards:r==="photoFrame"?t.photoFrames:r==="trueFalse"?t.trueFalses:r==="shortAnswer"?t.shortAnswers:r==="fillInTheBlanks"?t.fillInTheBlanks:t.texts).find(c=>c.id===a);l&&(l.altText=n,t.updatedAt=Date.now());}},setAudioData(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r,audioData:n}=o.payload,l=(r==="image"?t.images:r==="video"?t.videos:r==="shape"?t.shapes:r==="flashcard"?t.flashcards:r==="photoFrame"?t.photoFrames:r==="trueFalse"?t.trueFalses:r==="shortAnswer"?t.shortAnswers:r==="fillInTheBlanks"?t.fillInTheBlanks:t.texts).find(c=>c.id===a);l&&(l.audioData=n,t.updatedAt=Date.now());}},clearCanvas:e=>{let o=e.slides.find(t=>t.id===e.currentSlideId);o&&(o.lines=[],o.images=[],o.videos=[],o.shapes=[],o.flashcards=[],o.photoFrames=[],o.texts=[],o.multipleChoices=[],o.trueFalses=[],o.shortAnswers=[],o.LongAnswer=[],o.fillInTheBlanks=[],o.updatedAt=Date.now());},addText(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};t.texts.push(a),t.updatedAt=Date.now();}},updateText(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.texts.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.texts[a]={...t.texts[a],...o.payload},t.updatedAt=Date.now());}},deleteText(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.texts=t.texts.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateText(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.texts.find(r=>r.id===o.payload);if(a){let r={...a,id:`text-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.texts.push(r),t.updatedAt=Date.now();}}},addFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.flashcards.length>=40){alert("You can add maximum 40 flashcards");return}t.flashcards.push(a),t.updatedAt=Date.now();}},updateFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.flashcards.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.flashcards[a]={...t.flashcards[a],...o.payload},t.updatedAt=Date.now());}},deleteFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.flashcards=t.flashcards.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.flashcards.find(r=>r.id===o.payload);if(a){let r={...a,id:`flashcard-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,currentIndex:0,timestamp:Date.now()};t.flashcards.push(r),t.updatedAt=Date.now();}}},editFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.editingFlashcard=o.payload);},nextFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.flashcards.find(r=>r.id===o.payload);if(a&&a.images.length>0){if(a.order==="sequential")a.currentIndex=(a.currentIndex+1)%a.images.length;else {a.navigationHistory||(a.navigationHistory=[a.currentIndex]);let r=a.images.map((n,s)=>s).filter(n=>n!==a.currentIndex);if(r.length>0){let n=r[Math.floor(Math.random()*r.length)];a.navigationHistory.push(n),a.currentIndex=n;}}t.updatedAt=Date.now();}}},previousFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.flashcards.find(r=>r.id===o.payload);a&&a.images.length>0&&(a.order==="sequential"?a.currentIndex=(a.currentIndex-1+a.images.length)%a.images.length:a.navigationHistory&&a.navigationHistory.length>1&&(a.navigationHistory.pop(),a.currentIndex=a.navigationHistory[a.navigationHistory.length-1]),t.updatedAt=Date.now());}},addPhotoFrame(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};t.photoFrames.push(a),t.updatedAt=Date.now();}},updatePhotoFrame(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.photoFrames[a]={...t.photoFrames[a],...o.payload},t.updatedAt=Date.now());}},deletePhotoFrame(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.photoFrames=t.photoFrames.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicatePhotoFrame(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.find(r=>r.id===o.payload);if(a){let r={...a,id:`photoframe-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,isCapturing:false,timestamp:Date.now()};t.photoFrames.push(r),t.updatedAt=Date.now();}}},toggleImageDrawingMode(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.find(r=>r.id===o.payload);a&&(a.isDrawingMode=!a.isDrawingMode,a.annotations||(a.annotations=[]),t.updatedAt=Date.now());}},addImageAnnotation(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.find(r=>r.id===o.payload.imageId);a&&(a.annotations||(a.annotations=[]),a.annotations.push(o.payload.line),t.updatedAt=Date.now());}},updateImageAnnotation(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.find(r=>r.id===o.payload.imageId);a&&a.annotations&&a.annotations.length>0&&(a.annotations[a.annotations.length-1].points=o.payload.points,t.updatedAt=Date.now());}},clearImageAnnotations(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.find(r=>r.id===o.payload);a&&(a.annotations=[],t.updatedAt=Date.now());}},togglePhotoFrameDrawingMode(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.find(r=>r.id===o.payload);a&&(a.isDrawingMode=!a.isDrawingMode,a.annotations||(a.annotations=[]),t.updatedAt=Date.now());}},addPhotoFrameAnnotation(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.find(r=>r.id===o.payload.frameId);a&&(a.annotations||(a.annotations=[]),a.annotations.push(o.payload.line),t.updatedAt=Date.now());}},updatePhotoFrameAnnotation(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.find(r=>r.id===o.payload.frameId);a&&a.annotations&&a.annotations.length>0&&(a.annotations[a.annotations.length-1].points=o.payload.points,t.updatedAt=Date.now());}},clearPhotoFrameAnnotations(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.find(r=>r.id===o.payload);a&&(a.annotations=[],t.updatedAt=Date.now());}},undo:e=>{let o=e.history[e.currentSlideId];if(o&&o.past.length>0){let t=e.slides.findIndex(a=>a.id===e.currentSlideId);if(t>=0)try{let a=e.slides[t];o.future.unshift(JSON.parse(JSON.stringify(a)));let r=o.past.pop();e.slides[t]=r;}catch(a){console.warn("Failed to undo - data too large:",a),o.past=[],o.future=[];}}},redo:e=>{let o=e.history[e.currentSlideId];if(o&&o.future.length>0){let t=e.slides.findIndex(a=>a.id===e.currentSlideId);if(t>=0)try{let a=e.slides[t];o.past.push(JSON.parse(JSON.stringify(a)));let r=o.future.shift();e.slides[t]=r;}catch(a){console.warn("Failed to redo - data too large:",a),o.past=[],o.future=[];}}},saveToHistory:e=>{let o=e.slides.findIndex(t=>t.id===e.currentSlideId);if(o>=0){let t=e.slides[o],a=e.history[e.currentSlideId];if(a)try{let r=JSON.parse(JSON.stringify(t));a.past.push(r),a.future=[],a.past.length>20&&a.past.shift();}catch(r){console.warn("Failed to save to history - data too large:",r),a.past.length>5&&(a.past=a.past.slice(-5)),a.future=[];}}},toggleSketchMode:e=>{e.isSketchMode=!e.isSketchMode;},setSketchMode:(e,o)=>{e.isSketchMode=o.payload;},setEditingTextId:(e,o)=>{e.editingTextId=o.payload;}}}),{addSlide:Ks,deleteSlide:js,duplicateSlide:_s,setCurrentSlide:Xs,updateSlideThumbnail:$s,setBackgroundColor:Ys,reorderSlides:jf,loadSlides:Js,addLine:Zs,removeLine:Er,addImage:Qs,updateImage:$a,deleteImage:en,duplicateImage:Fr,addVideo:Br,updateVideo:Or,deleteVideo:tn,duplicateVideo:Nr,toggleVideoPlaying:Mo,addShape:an,updateShape:Ya,duplicateShape:Vr,deleteShape:on,addText:rn,updateText:yt,deleteText:sn,duplicateText:qr,addFlashcard:nn,updateFlashcard:Ja,deleteFlashcard:ln,duplicateFlashcard:Hr,editFlashcard:Ao,nextFlashcard:dn,previousFlashcard:un,addPhotoFrame:cn,updatePhotoFrame:Ra,deletePhotoFrame:fn,duplicatePhotoFrame:Ur,toggleImageDrawingMode:mn,addImageAnnotation:pn,updateImageAnnotation:_f,clearImageAnnotations:Xf,togglePhotoFrameDrawingMode:hn,addPhotoFrameAnnotation:gn,updatePhotoFrameAnnotation:$f,clearPhotoFrameAnnotations:Yf,addMultipleChoice:xn,updateMultipleChoice:oa,editMultipleChoice:Jf,deleteMultipleChoice:bn,duplicateMultipleChoice:zr,addTrueFalse:vn,updateTrueFalse:ra,deleteTrueFalse:yn,duplicateTrueFalse:Wr,addShortAnswer:wn,updateShortAnswer:To,deleteShortAnswer:Ln,duplicateShortAnswer:Gr,addLongAnswer:Sn,updateLongAnswer:Ro,deleteLongAnswer:In,duplicateLongAnswer:Kr,addFillInTheBlanks:Cn,updateFillInTheBlanks:Po,deleteFillInTheBlanks:kn,duplicateFillInTheBlanks:jr,setShowMcqForm:sa,setShowFlashcardForm:Pa,setActivityType:Mn,setEditingActivity:Do,bringToFront:An,sendToBack:Tn,toggleLock:Rn,setLink:_r,setAltText:Xr,setAudioData:$r,updateLastLine:Zf,finalizeDrawing:Pn,setLines:Qf,updateLinePosition:em,updateLineTransform:Yr,deleteLineById:Dn,duplicateLine:En,updateElementOrder:Eo,clearCanvas:Fn,undo:Bn,redo:On,saveToHistory:de,toggleSketchMode:tm,setSketchMode:ct,setEditingTextId:Fo}=Sl.actions,Bo=e=>e.canvas.currentSlideId,pe=e=>{let o=e.canvas.currentSlideId,t=e.canvas.slides.findIndex(a=>a.id===o);return t>=0?e.canvas.slides[t]:void 0},Oo=e=>e.canvas.slides,Nn=e=>e.canvas.slides.length<Gs,am=e=>o=>{let t=o.canvas.slides.findIndex(a=>a.id===e);return t>=0?o.canvas.slides[t]:void 0},Il=Sl.reducer;var kl=e=>{let o=ge(),t=useRef(null),a=useRef(false),r=J(u=>u.toolbar.selectedTool),n=J(u=>u.toolbar.penColor),s=J(u=>u.toolbar.strokeWidth),l=J(u=>u.canvas.isSketchMode),c=J(u=>u.canvas.slides.find(x=>x.id===u.canvas.currentSlideId)?.lines||[]),i=useCallback(u=>{t.current=u;},[]),d=useCallback(u=>{r==="pen"&&t.current&&(o(de()),t.current.startDrawing(u),a.current=true);},[r,o]),f=useCallback(u=>{!t.current||!a.current||t.current.draw(u);},[]),m=useCallback(()=>{if(!t.current||!a.current)return;let u=t.current.stopDrawing();a.current=false,u&&u.points.length>=4&&o(Zs(u)),o(Pn()),e?.();},[o,e]);return {lines:c,tool:r,color:n,strokeWidth:s,isSketchMode:l,setCanvasRef:i,startDrawing:d,draw:f,stopDrawing:m}};var Rl=forwardRef(({width:e,height:o,tool:t,color:a,strokeWidth:r,isSketchMode:n,style:s},l)=>{let c=useRef(null),i=useRef(false),d=useRef([]),f=useRef(null),m=useRef(t),u=useRef(a),p=useRef(r),x=useRef(n);useEffect(()=>{m.current=t,u.current=a,p.current=r,x.current=n;},[t,a,r,n]);let h=useCallback(()=>{let g=c.current;if(!g)return;let b=g.getContext("2d");b&&b.clearRect(0,0,g.width,g.height);},[]),v=useCallback(()=>{let g=c.current,b=d.current;if(!g||b.length<1)return;let y=g.getContext("2d");if(!y)return;if(y.clearRect(0,0,g.width,g.height),m.current==="eraser"?(y.globalCompositeOperation="destination-out",y.fillStyle="rgba(0,0,0,1)"):(y.globalCompositeOperation="source-over",y.fillStyle=u.current),b.length===1){y.beginPath(),y.arc(b[0].x,b[0].y,p.current/2,0,Math.PI*2),y.fill();return}let I=Tl(b,{size:p.current,thinning:.5,smoothing:.5,streamline:.5,simulatePressure:true,easing:S=>S,start:{taper:0,cap:true},end:{taper:0,cap:true}});if(!(I.length<2)){y.beginPath(),y.moveTo(I[0][0],I[0][1]);for(let S=1;S<I.length;S++)y.lineTo(I[S][0],I[S][1]);y.closePath(),y.fill();}},[]);return useImperativeHandle(l,()=>({startDrawing:g=>{i.current=true,d.current=[{x:g.x,y:g.y}],f.current=g,v();},draw:g=>{if(!i.current||!f.current)return;let b=g.x-f.current.x,y=g.y-f.current.y;Math.sqrt(b*b+y*y)<2||(d.current.push({x:g.x,y:g.y}),f.current=g,v());},stopDrawing:()=>{if(!i.current)return null;if(i.current=false,d.current.length<2)return d.current=[],f.current=null,h(),null;let b=Tl(d.current,{size:p.current,thinning:.5,smoothing:.5,streamline:.5,simulatePressure:true,easing:C=>C,start:{taper:0,cap:true},end:{taper:0,cap:true}}).flatMap(C=>[C[0],C[1]]),y={tool:m.current,points:b,color:u.current,strokeWidth:p.current,isSketch:true};return d.current=[],f.current=null,h(),y},clear:()=>{h(),d.current=[],f.current=null,i.current=false;},isDrawing:()=>i.current,getCanvasElement:()=>c.current}),[h,v]),useEffect(()=>{let g=c.current;g&&(g.width=e,g.height=o);},[e,o]),jsx("canvas",{ref:c,width:e,height:o,style:{position:"absolute",top:0,left:0,pointerEvents:"none",zIndex:1e3,...s}})});Rl.displayName="DirectDrawingCanvas";var Pl=Rl;var El=e=>{let o=ge(),a=J(pe)?.images||[],r=useRef(new Map),n=useRef(new Map),s=useRef(new Set);useEffect(()=>{let d=new Set(a.map(f=>f.id));s.current.forEach(f=>{if(!d.has(f)){let m=n.current.get(f);m&&(m.src="",n.current.delete(f)),r.current.delete(f);}}),s.current=d;},[a]),useEffect(()=>()=>{n.current.forEach(d=>{d.src="";}),n.current.clear(),r.current.clear();},[]);let l=useCallback(d=>{if(n.current.has(d.id))return n.current.get(d.id);let f=new window.Image;return f.src=d.src,n.current.set(d.id,f),f},[]),c=useCallback((d,f)=>{let m=d.target,u=m.id();a.find(x=>x.id===u)&&(o($a({id:u,x:m.x(),y:m.y(),width:m.width(),height:m.height(),rotation:m.rotation()})),f?.());},[a,o]),i=useCallback((d,f)=>{let m=f.target,u=r.current.get(d);if(!u){console.error("\u274C Image node not found for id:",d);return}let p=m.scaleX(),x=m.scaleY(),h=m.rotation(),v=u.width(),g=u.height(),b=Math.max(5,v*p),y=Math.max(5,g*x);m.scaleX(1),m.scaleY(1),u.width(b),u.height(y),o($a({id:d,width:b,height:y,x:m.x(),y:m.y(),rotation:h})),m.getLayer()?.batchDraw(),e?.();},[o,e]);return {images:a,getLoadedImage:l,imageRefs:r,handleDragEnd:c,handleImageTransformEnd:i}};var Fl=e=>{let o=useDispatch(),t=useSelector(pe),a=useRef(new Map),r=useMemo(()=>t?.multipleChoices||[],[t?.multipleChoices]),n=useCallback((l,c)=>{let i=c.target,d=i.scaleX(),f=i.scaleY(),m=i.rotation(),u=Math.max(5,i.width()*d),p=Math.max(5,i.height()*f);i.scaleX(1),i.scaleY(1),i.width(u),i.height(p),o(oa({id:l,width:u,height:p,x:i.x(),y:i.y(),rotation:m})),i.getLayer()?.batchDraw(),e?.();},[o,e]);return {multipleChoice:r,handleMcqTransform:n,mcqRefs:a,handleDragEnd:(l,c)=>{o(oa({id:c,x:l.target.x(),y:l.target.y()})),e?.();}}};var Bl=e=>{let o=useDispatch(),t=useSelector(pe),a=useRef(new Map),r=useMemo(()=>t?.trueFalses||[],[t?.trueFalses]),n=useCallback((l,c)=>{let i=c.target,d=i.scaleX(),f=i.scaleY(),m=i.rotation(),u=Math.max(5,i.width()*d),p=Math.max(5,i.height()*f);i.scaleX(1),i.scaleY(1),i.width(u),i.height(p),o(ra({id:l,width:u,height:p,x:i.x(),y:i.y(),rotation:m})),i.getLayer()?.batchDraw(),e?.();},[o,e]);return {trueFalse:r,handleTrueFalseTransform:n,handleTrueFalseDragEnd:(l,c)=>{o(ra({id:c,x:l.target.x(),y:l.target.y()})),e?.();},trueFalseRefs:a}};var Ol=e=>{let o=ge(),a=J(pe)?.videos||[],r=useRef(new Map),n=useCallback(c=>{o(Mo(c));},[o]),s=useCallback((c,i)=>{let d=i.target;o(Or({id:c,x:d.x(),y:d.y()})),e?.();},[o,e]),l=useCallback((c,i)=>{let d=i.target,f=d.scaleX(),m=d.scaleY(),u=d.rotation(),p=Math.max(5,d.width()*f),x=Math.max(5,d.height()*m);d.scaleX(1),d.scaleY(1),d.width(p),d.height(x),o(Or({id:c,width:p,height:x,x:d.x(),y:d.y(),rotation:u})),d.getLayer()?.batchDraw(),e?.();},[o,e]);return {videos:a,videoRefs:r,handleVideoClick:n,handleVideoDragEnd:s,handleVideoTransformEnd:l}};var ql=e=>{let o=ge(),a=J(pe)?.shapes||[],r=useRef(new Map),n=useRef(new Map),[s,l]=useState(false),c=useCallback((d,f)=>{let m=f.target;o(Ya({id:d,x:m.x(),y:m.y()})),e?.();},[o,e]),i=useCallback((d,f)=>{let m=f.target,u=a.find(b=>b.id===d);if(!u)return;let p=m.scaleX(),x=m.scaleY(),h=u.type?.toLowerCase();h==="arrow"||h==="line"||(m.scaleX(1),m.scaleY(1));let g={id:d,x:m.x(),y:m.y(),width:Math.max(5,m.width()*p),height:Math.max(5,m.height()*x),rotation:m.rotation()};switch(h){case "circle":g.radius=m.width()*p/2;break;case "star":g.innerRadius=m.width()*p/4,g.outerRadius=m.width()*p/2;break;case "triangle":g.radius=m.width()*p/2;break;case "ellipse":g.radiusX=m.width()*p/2,g.radiusY=m.height()*x/2;break;case "polygon":g.radius=m.width()*p/2;break;case "ring":let b=p;g.innerRadius=u.innerRadius&&u.innerRadius*b,g.outerRadius=u.outerRadius&&u.outerRadius*b;break;case "wedge":g.radius=u.radius&&u.radius*p;break;case "arc":g.innerRadius=u.innerRadius&&u.innerRadius*p,g.outerRadius=u.outerRadius&&u.outerRadius*p;break;case "arrow":case "line":{g.scaleX=p,g.scaleY=x,delete g.width,delete g.height;break}}o(Ya(g)),e?.();},[o,e,a]);return {shapes:a,shapeRefs:r,isDragging:s,loadedShapesRef:n,handleShapeDragEnd:c,handleShapeResizeEnd:i}};var Ul=(e,o)=>{let t=Ht(),r=J(pe)?.texts||[],n=useRef(new Map),[s,l]=useState(null),[c,i]=useState("");return {texts:r,textRefs:n,handleDragEnd:(h,v)=>{let g=h.target;t(de()),t(yt({id:v,x:g.x(),y:g.y()})),e();},handleTransformEnd:h=>{let v=n.current.get(h);if(!v)return;let g=v.scaleX(),b=v.scaleY(),y=r.find(I=>I.id===h);if(!y)return;let C=(g+b)/2;v.scaleX(1),v.scaleY(1),t(de()),t(yt({id:h,x:v.x(),y:v.y(),width:Math.max(5,(y.width||100)*g),height:Math.max(5,(y.height||50)*b),fontSize:Math.round(Math.max(8,y.fontSize*C)),rotation:v.rotation()})),e();},handleDoubleClick:h=>{let v=r.find(g=>g.id===h);v&&!v.locked&&(l(h),i(v.text));},startEditing:h=>{let v=r.find(g=>g.id===h);v&&!v.locked&&(l(h),i(v.text));},editingTextId:s,editingValue:c,handleEditingChange:h=>{i(h);},finishEditing:()=>{if(s){let h=n.current.get(s),v=r.find(b=>b.id===s);t(de());let g={id:s,text:c};if(v&&(v.fontWeight!==void 0&&(g.fontWeight=v.fontWeight),v.fontStyle!==void 0&&(g.fontStyle=v.fontStyle),v.textDecoration!==void 0&&(g.textDecoration=v.textDecoration)),o?.current&&c.trim()){let b=o.current,y=b.offsetWidth,C=b.offsetHeight,I=1;if(h){let H=h.getStage();H&&(I=H.scaleX());}let S=14,w=(y-S)/I,N=(C-S)/I,U=c.split(`
|
|
3
|
-
`).length,D=r.find(H=>H.id===s)?.fontSize||24,T=U*D*1.2+10;g.width=Math.max(200,w),g.height=Math.max(50,N,T);}else if(h&&c.trim()){let b=h.text(),y=h.width();h.text(c),h.width(void 0);let C=h.width(),I=h.height();h.text(b),h.width(y),g.width=Math.max(200,C+20),g.height=Math.max(50,I+20);}t(yt(g)),l(null),i(""),t(Fo(null)),e();}}}};var zl=e=>{let o=useDispatch(),a=useSelector(pe)?.shortAnswers||[],r=useRef(new Map),n=useCallback((s,l)=>{let c=s.target;o(To({id:l,x:c.x(),y:c.y()})),e?.();},[o,e]);return {shortAnswers:a,saRefs:r,handleShortAnswerDragEnd:n}};var Wl=e=>{let o=useDispatch(),t=useSelector(pe),a=useMemo(()=>t?.LongAnswer||[],[t?.LongAnswer]),r=useCallback((n,s)=>{let l=n.target;o(Ro({id:s,x:l.x(),y:l.y()})),e?.();},[o,e]);return {longAnswers:a,handleLongAnswerDragEnd:r}};var Kl=e=>{let o=ge(),a=J(pe)?.flashcards||[],r=useRef(new Map),n=useRef(new Map),s=useCallback((f,m)=>{if(n.current.has(m))return n.current.get(m);let u=new window.Image;return u.src=f,n.current.set(m,u),u},[]),l=useCallback((f,m)=>{let u=f.target,p=u.id();a.find(h=>h.id===p)&&(o(Ja({id:p,x:u.x(),y:u.y()})),m?.());},[a,o]),c=useCallback((f,m)=>{let u=m.target,p=u.scaleX(),x=u.scaleY(),h=u.rotation(),v=Math.max(50,u.width()*p),g=Math.max(50,u.height()*x);u.scaleX(1),u.scaleY(1),u.width(v),u.height(g),o(Ja({id:f,width:v,height:g,x:u.x(),y:u.y(),rotation:h})),u.getLayer()?.batchDraw(),e?.();},[o,e]),i=useCallback(f=>{o(dn(f)),e?.();},[o,e]),d=useCallback(f=>{o(un(f)),e?.();},[o,e]);return {flashcards:a,getLoadedImage:s,flashcardRefs:r,handleDragEnd:l,handleFlashcardTransformEnd:c,handleNext:i,handlePrevious:d}};var Xl=e=>{let o=ge(),a=J(pe)?.photoFrames||[],r=useRef(new Map),[n,s]=useState(new Map),l=useCallback((u,p)=>{console.log("handleDragEnd"),o(Ra({id:p,x:u.target.x(),y:u.target.y()})),e?.();},[o,e]),c=useCallback((u,p)=>{let x=p.target,h=x.scaleX(),v=x.scaleY(),g=x.rotation(),b=a.find(I=>I.id===u);if(!b)return;let y=Math.max(100,b.width*h),C=Math.max(100,b.height*v);x.scaleX(1),x.scaleY(1),o(Ra({id:u,width:y,height:C,x:x.x(),y:x.y(),rotation:g})),x.getLayer()?.batchDraw(),e?.();},[o,e,a]),i=useCallback(async u=>{try{let p=await navigator.mediaDevices.getUserMedia({video:{width:640,height:480},audio:!1});return s(x=>{let h=new Map(x);return h.set(u,p),h}),o(Ra({id:u,isCapturing:!0})),e?.(),p}catch(p){return console.error("Error accessing camera:",p),null}},[o,e]),d=useCallback(u=>{let p=n.get(u);p&&(p.getTracks().forEach(x=>x.stop()),s(x=>{let h=new Map(x);return h.delete(u),h}),o(Ra({id:u,isCapturing:false})),e?.());},[n,o,e]),f=useCallback((u,p)=>{let x=document.createElement("canvas");x.width=p.videoWidth,x.height=p.videoHeight;let h=x.getContext("2d");if(h){h.drawImage(p,0,0,x.width,x.height);let v=x.toDataURL("image/jpeg",.8);return o(Ra({id:u,capturedImageUrl:v,isCapturing:false})),d(u),e?.(),v}return null},[o,d,e]),m=useRef(n);return useEffect(()=>{m.current=n;},[n]),useEffect(()=>()=>{m.current.forEach(u=>{u.getTracks().forEach(p=>p.stop());});},[]),{photoFrames:a,photoFrameRefs:r,handleDragEnd:l,handlePhotoFrameTransformEnd:c,startCamera:i,stopCamera:d,capturePhoto:f,cameraStreams:n}};var $l=()=>{let e=useRef(null),o=useMemo(()=>({minWidth:340,minHeight:400,maxWidth:520,maxHeight:600}),[]),t=useCallback((n,s)=>e.current?.nodes()[0]?.name()==="mcq-element"?{...s,width:Math.max(o.minWidth,Math.min(s.width,o.maxWidth)),height:Math.max(o.minHeight,Math.min(s.height,o.maxHeight))}:s,[o]),a=useCallback((n,s,l,c,i,d,f=[])=>{if(e.current){if(n&&!f.find(p=>p.id===n)?.isPlaying){let p=s.get(n)||l.get(n)||c.get(n)||i.get(n)||d.get(n);if(p){e.current.boundBoxFunc(t),e.current.nodes([p]),e.current.getLayer()?.batchDraw();return}}e.current.nodes([]),e.current.getLayer()?.batchDraw();}},[]),r=useCallback(()=>{e.current&&(e.current.nodes([]),e.current.getLayer()?.batchDraw());},[]);return {transformerRef:e,attachTransformer:a,deselectTransformer:r,boundBoxFunc:t}};var Rm=(e,o)=>{let t=useRef(void 0);return useEffect(()=>()=>{t.current&&clearTimeout(t.current);},[]),useCallback((...a)=>{t.current&&clearTimeout(t.current),t.current=setTimeout(()=>{e(...a);},o);},[o])},Ql=(e,o)=>{let t=Ht(),a=useRef(e);useEffect(()=>{a.current=e;},[e]);let r=useCallback(()=>{if(o.current)try{let s=o.current.toDataURL({pixelRatio:.2,mimeType:"image/jpeg",quality:.6});t($s({id:a.current,thumbnail:s}));}catch(s){console.error("Error generating thumbnail:",s);}},[o,t]),n=Rm(r,500);return {generateThumbnail:r,debouncedGenerateThumbnail:n}};var Dm=e=>e.flatMap(o=>[o[0],o[1]]),Zr=(e,o)=>{let t=Tl(e,{size:o?.size||8,thinning:o?.thinning||.5,smoothing:o?.smoothing||.5,streamline:o?.streamline||.5,simulatePressure:o?.simulatePressure!==false,easing:a=>a,start:{taper:0,cap:true},end:{taper:0,cap:true}});return Dm(t)};var ed=e=>{let o=ge(),t=useRef(false),a=useRef(false),r=useRef([]),[n,s]=useState(null),l=J(b=>b.toolbar.selectedTool),c=J(b=>b.toolbar.penColor),i=J(b=>b.toolbar.strokeWidth),d=J(b=>b.canvas.isSketchMode),f=J(b=>b.canvas.slides.find(C=>C.id===b.canvas.currentSlideId)?.images.find(C=>C.id===e)),m=f?.annotations||[],u=f?.isDrawingMode||false,p=f?.width||1,x=f?.height||1,h=useCallback(b=>{if(l!=="pen"&&l!=="eraser")return;t.current=true,a.current=false,r.current=[{x:b.x,y:b.y}];let y=b.x/p,C=b.y/x;s({tool:l,points:[y,C],color:c,strokeWidth:i/p,isSketch:d});},[l,c,i,d,p,x]),v=useCallback(b=>{if(!t.current||!n)return;a.current=true;let y=r.current[r.current.length-1];if(Math.sqrt(Math.pow(b.x-y.x,2)+Math.pow(b.y-y.y,2))<2)return;r.current.push({x:b.x,y:b.y});let I;if(d)I=Zr(r.current,{size:i*2,thinning:.6,smoothing:.5,streamline:.5,simulatePressure:true}).map((w,N)=>N%2===0?w/p:w/x);else {let S=b.x/p,w=b.y/x;I=[...n.points,S,w];}s(S=>S?{...S,points:I}:null);},[d,i,n,p,x]),g=useCallback(()=>{t.current&&(n&&n.points.length>0&&o(pn({imageId:e,line:n})),s(null),t.current=false,a.current=false,r.current=[]);},[o,e,n]);return {annotations:m,activeLine:n,isDrawingMode:u,startDrawing:h,draw:v,stopDrawing:g,tool:l}};var rd=memo(({img:e,loadedImage:o,imageRefs:t,onDragEnd:a,onTransform:r,onSelect:n,onContextMenu:s})=>{let{annotations:l,activeLine:c,stopDrawing:m,tool:u}=ed(e.id);useEffect(()=>{let g=t.current.get(e.id);g&&(g.width()!==e.width||g.height()!==e.height)&&(console.log("\u{1F504} Syncing dimensions from Redux to Konva:",{id:e.id,reduxWidth:e.width,reduxHeight:e.height,konvaWidth:g.width(),konvaHeight:g.height()}),g.width(e.width),g.height(e.height),g.getLayer()?.batchDraw());},[e.id,e.width,e.height,t]);let p=false;useEffect(()=>{return;},[m,p]);let x=g=>{{n(e.id);return}},h=g=>{return;},v=g=>{};return jsxs(Group,{listening:u!=="pen"&&u!=="eraser",children:[jsx(Image,{id:e.id,ref:g=>{if(g){t.current.set(e.id,g),g.width(e.width),g.height(e.height),g.getLayer()?.batchDraw();let b=g.getStage()?.container();if(b){let y=C=>{let I=g.getStage()?.getPointerPosition();if(I){let S={x:e.x,y:e.y,width:e.width,height:e.height};I.x>=S.x&&I.x<=S.x+S.width&&I.y>=S.y&&I.y<=S.y+S.height&&s(C,e.id,"image");}};b.addEventListener("contextmenu",y),g._contextMenuCleanup=()=>{b.removeEventListener("contextmenu",y);};}}else {let b=t.current.get(e.id);b?._contextMenuCleanup&&b._contextMenuCleanup(),t.current.delete(e.id);}},rotation:e.rotation,draggable:u!=="pen"&&u!=="eraser",onDragEnd:a,onTransformEnd:g=>r(e.id,g),image:o,x:e.x,y:e.y,width:e.width,height:e.height,...u!=="pen"&&u!=="eraser"?{onClick:x,onTap:x,onMouseDown:x,onTouchStart:x,onMouseMove:h,onTouchMove:h,onMouseUp:v,onTouchEnd:v}:{}}),l?.map((g,b)=>{let y=g.points.map((I,S)=>S%2===0?I*e.width+e.x:I*e.height+e.y),C=g.strokeWidth*e.width;return jsx(Line,{points:y,stroke:g.tool==="eraser"?"white":g.color,strokeWidth:C,tension:.5,lineCap:"round",lineJoin:"round",globalCompositeOperation:g.tool==="eraser"?"destination-out":"source-over",fill:g.isSketch?g.color:void 0,closed:g.isSketch,listening:false},b)}),c&&jsx(Line,{points:c.points.map((g,b)=>b%2===0?g*e.width+e.x:g*e.height+e.y),stroke:c.tool==="eraser"?"white":c.color,strokeWidth:c.strokeWidth*e.width,tension:.5,lineCap:"round",lineJoin:"round",globalCompositeOperation:c.tool==="eraser"?"destination-out":"source-over",fill:c.isSketch?c.color:void 0,closed:c.isSketch,listening:false},"active")]})});rd.displayName="ImageWithDrawing";var Gn=memo(({images:e,getLoadedImage:o,imageRefs:t,onDragEnd:a,onTransform:r,onSelect:n,onContextMenu:s})=>jsx(Fragment,{children:e.map(l=>{let c=o(l);return c?jsx(rd,{img:l,loadedImage:c,imageRefs:t,onDragEnd:a,onTransform:r,onSelect:n,onContextMenu:s},l.id):null})}));Gn.displayName="ImageLayer";var zm=({src:e,x:o,id:t,y:a,width:r,height:n,isSelected:s,rotation:l=0,onTransformEnd:c,onDragEnd:i})=>{let d=ge(),f=useRef(null),m=u=>{d(Mo(u));};return jsxs(Group,{draggable:true,x:o,y:a,width:r,height:n,rotation:l,onDragEnd:i,onTransformEnd:c,children:[jsx(Rect,{width:r,height:n,fill:"black",stroke:s?"#4A90E2":"transparent",strokeWidth:2}),jsx(Html,{divProps:{style:{width:`${r}px`,height:`${n}px`,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"center"}},children:jsx("video",{ref:f,src:e,controls:true,autoPlay:true,onClick:()=>m(t),onSeeking:u=>u.stopPropagation(),style:{width:"100%",height:"100%",objectFit:"contain",pointerEvents:"auto"}})})]})},sd=zm;var Ym=({video:e,isSelected:o,onClick:t,onDragEnd:a,onTransformEnd:r,onContextMenu:n,nodeRef:s})=>{let[l,c]=useState(null),i=useSelector(x=>x.toolbar.selectedTool),d=i==="pen"||i==="eraser";if(useEffect(()=>{if(e.thumbnailDataUrl){let x=new window.Image;x.src=e.thumbnailDataUrl,x.onload=()=>{c(x);};}},[e.thumbnailDataUrl]),!l)return null;let f=e.width/2,m=e.height/2,u=Math.min(e.width,e.height)*.08,p=Math.max(40,Math.min(u,80));return jsxs(Group,{draggable:!d,listening:!d,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,...d?{}:{onDragEnd:a,onTransformEnd:r},ref:x=>{if(s(x),x){let h=x.getStage()?.container();if(h){let v=g=>{let b=x.getStage()?.getPointerPosition();if(b){let y={x:e.x,y:e.y,width:e.width,height:e.height};b.x>=y.x&&b.x<=y.x+y.width&&b.y>=y.y&&b.y<=y.y+y.height&&n(g);}};h.addEventListener("contextmenu",v),x._contextMenuCleanup=()=>{h.removeEventListener("contextmenu",v);};}}},children:[jsx(Image,{image:l,width:e.width,height:e.height,listening:!d,...d?{}:{onClick:t,onTap:t},shadowColor:"black",shadowBlur:o?10:0,shadowOpacity:o?.3:0}),jsx(Circle,{x:f,y:m,radius:p,fill:"white",listening:!d,shadowColor:"black",shadowBlur:20,shadowOpacity:.4,shadowOffsetX:0,shadowOffsetY:2,...d?{}:{onClick:t,onTap:t}}),jsx(Circle,{x:f,y:m,radius:p*.88,fill:"rgba(0, 0, 0, 0.75)",listening:!d,...d?{}:{onClick:t,onTap:t}}),jsx(RegularPolygon,{x:f+p*.1,y:m,sides:3,radius:p*.35,fill:"white",rotation:90,listening:!d,...d?{}:{onClick:t,onTap:t}})]})},id=Ym;var _n=memo(({videos:e,selectedId:o,videoRefs:t,onVideoClick:a,onDragEnd:r,onTransformEnd:n,onContextMenu:s})=>jsx(Fragment,{children:e.map(l=>jsxs(xe__default.Fragment,{children:[jsx(id,{video:l,isSelected:!l.isPlaying&&o===l.id,onClick:()=>a(l.id),onDragEnd:c=>r(l.id,c),onTransformEnd:c=>n(l.id,c),onContextMenu:c=>s(c,l.id,"video"),nodeRef:c=>{c?t.current.set(l.id,c):t.current.delete(l.id);}}),l.isPlaying&&(()=>{let c=l.x,i=l.y;if(l.isRecorded){let d=typeof window<"u"?window.innerWidth:l.width,f=typeof window<"u"?window.innerHeight:l.height;c=(d-l.width)/2,i=(f-l.height)/2;}return jsx(sd,{id:l.id,src:l.objectUrl,x:c,y:i,width:l.width,height:l.height,isSelected:false,rotation:l.rotation,onTransformEnd:d=>n(l.id,d),onDragEnd:d=>r(l.id,d)})})()]},l.id))}));_n.displayName="VideoLayer";var Xn=memo(({shapes:e,shapeRefs:o,handleShapeDragEnd:t,handleShapeResizeEnd:a,onSelect:r,handleShapeDragStart:n,onContextMenu:s})=>{let l=useSelector(i=>i.toolbar.selectedTool),c=l==="pen"||l==="eraser";return jsx(Fragment,{children:e.map((i,d)=>{let f=i.id||d,m={id:i.id,x:i.x,y:i.y,rotation:i.rotation,draggable:!i.locked&&!c,listening:!c,fill:i.color||"#096B76",stroke:"#000000",strokeWidth:2,opacity:1};switch(i.type?.toLowerCase()){case "circle":return jsx(Circle,{ref:u=>{u?o.current.set(i.id,u):o.current.delete(i.id);},...m,draggable:!i.locked&&!c,...c?{}:{onDragStart:u=>{n?.();},onDragEnd:u=>t(i.id,u),onTransformEnd:u=>a(i.id,u),onClick:()=>r(i.id),onContextMenu:u=>{u.evt.preventDefault(),s(u.evt,i.id,"shape");}},radius:i.radius||i.width/2,width:i.width,height:i.width},f);case "star":return jsx(Star,{ref:u=>{u?o.current.set(i.id,u):o.current.delete(i.id);},...m,draggable:!i.locked&&!c,...c?{}:{onDragStart:u=>{n?.();},onDragEnd:u=>t(i.id,u),onTransformEnd:u=>a(i.id,u),onClick:()=>r(i.id),onContextMenu:u=>{u.evt.preventDefault(),s(u.evt,i.id,"shape");}},numPoints:5,innerRadius:i.innerRadius||i.width/4,outerRadius:i.outerRadius||i.width/2},f);case "triangle":return jsx(RegularPolygon,{ref:u=>{u?o.current.set(i.id,u):o.current.delete(i.id);},...m,draggable:!i.locked&&!c,...c?{}:{onDragStart:u=>{n?.();},onDragEnd:u=>t(i.id,u),onTransformEnd:u=>a(i.id,u),onClick:()=>r(i.id),onContextMenu:u=>{u.evt.preventDefault(),s(u.evt,i.id,"shape");}},sides:3,radius:i.radius||i.width/2},f);case "polygon":return jsx(RegularPolygon,{ref:u=>{u?o.current.set(i.id,u):o.current.delete(i.id);},...m,draggable:!i.locked&&!c,...c?{}:{onDragStart:u=>{n?.();},onDragEnd:u=>t(i.id,u),onTransformEnd:u=>a(i.id,u),onClick:()=>r(i.id),onContextMenu:u=>{u.evt.preventDefault(),s(u.evt,i.id,"shape");}},sides:i.sides||6,radius:i.radius||i.width/2},f);case "ellipse":return jsx(Ellipse,{ref:u=>{u?o.current.set(i.id,u):o.current.delete(i.id);},...m,draggable:!i.locked&&!c,...c?{}:{onDragStart:u=>{n?.();},onDragEnd:u=>t(i.id,u),onTransformEnd:u=>a(i.id,u),onClick:()=>r(i.id),onContextMenu:u=>{u.evt.preventDefault(),s(u.evt,i.id,"shape");}},radiusX:i.radiusX||i.width/2,radiusY:i.radiusY||i.height/2},f);case "ring":return jsx(Ring,{ref:u=>{u?o.current.set(i.id,u):o.current.delete(i.id);},...m,draggable:!i.locked&&!c,...c?{}:{onDragStart:u=>{n?.();},onDragEnd:u=>t(i.id,u),onTransformEnd:u=>a(i.id,u),onClick:()=>r(i.id),onContextMenu:u=>{u.evt.preventDefault(),s(u.evt,i.id,"shape");}},innerRadius:i.innerRadius||i.width/4,outerRadius:i.outerRadius||i.width/2},f);case "wedge":return jsx(Wedge,{ref:u=>{u?o.current.set(i.id,u):o.current.delete(i.id);},...m,draggable:!i.locked&&!c,...c?{}:{onDragStart:u=>{n?.();},onDragEnd:u=>t(i.id,u),onTransformEnd:u=>a(i.id,u),onClick:()=>r(i.id),onContextMenu:u=>{u.evt.preventDefault(),s(u.evt,i.id,"shape");}},radius:i.radius||i.width/2,angle:i.angle||60},f);case "arrow":return jsx(Arrow,{ref:u=>{u?o.current.set(i.id,u):o.current.delete(i.id);},...m,scaleX:i.scaleX||1,scaleY:i.scaleY||1,draggable:!i.locked&&!c,...c?{}:{onDragStart:u=>{n?.();},onDragEnd:u=>t(i.id,u),onTransformEnd:u=>a(i.id,u),onClick:()=>r(i.id),onContextMenu:u=>{u.evt.preventDefault(),s(u.evt,i.id,"shape");}},points:i.points||[0,0,i.width,0],pointerLength:i.pointerLength||10,pointerWidth:i.pointerWidth||10,stroke:"#000000",strokeWidth:i.strokeWidth||3,fill:"transparent"},f);case "line":return jsx(Line,{ref:u=>{u?o.current.set(i.id,u):o.current.delete(i.id);},...m,scaleX:i.scaleX||1,scaleY:i.scaleY||1,draggable:!i.locked&&!c,...c?{}:{onDragStart:u=>{n?.();},onDragEnd:u=>t(i.id,u),onTransformEnd:u=>a(i.id,u),onClick:()=>r(i.id),onContextMenu:u=>{u.evt.preventDefault(),s(u.evt,i.id,"shape");}},points:i.points||[0,0,i.width,0],stroke:"#000000",strokeWidth:i.strokeWidth||3,fill:"transparent"},f);case "arc":return jsx(Arc,{ref:u=>{u?o.current.set(i.id,u):o.current.delete(i.id);},...m,draggable:!i.locked&&!c,...c?{}:{onDragStart:u=>{n?.();},onDragEnd:u=>t(i.id,u),onTransformEnd:u=>a(i.id,u),onClick:()=>r(i.id),onContextMenu:u=>{u.evt.preventDefault(),s(u.evt,i.id,"shape");}},innerRadius:i.innerRadius||i.width/4,outerRadius:i.outerRadius||i.width/2,angle:i.angle||90},f);case "rectangle":default:return jsx(Rect,{ref:u=>{u?o.current.set(i.id,u):o.current.delete(i.id);},...m,draggable:!i.locked&&!c,...c?{}:{onDragStart:u=>{n?.();},onDragEnd:u=>t(i.id,u),onTransformEnd:u=>a(i.id,u),onClick:()=>r(i.id),onContextMenu:u=>{u.evt.preventDefault(),s(u.evt,i.id,"shape");}},width:i.width,height:i.height,cornerRadius:i.type==="rounded-rectangle"?10:0},f)}})})});Xn.displayName="ShapeLayer";var ud=({texts:e,textRefs:o,onDragEnd:t,onTransformEnd:a,onSelect:r,onContextMenu:n,onDoubleClick:s,editingTextId:l})=>{let c=useSelector(d=>d.toolbar.selectedTool),i=c==="pen"||c==="eraser";return jsx(Fragment,{children:e.map(d=>{let f=d.id===l,m=d.fontWeight==="bold",u=m?Math.max(1,d.fontSize/25):0;return jsx(Text,{id:d.id,ref:p=>{p?o.current.set(d.id,p):o.current.delete(d.id);},text:d.text,x:d.x,y:d.y,width:d.width,height:d.height,rotation:d.rotation,draggable:!d.locked&&!f&&!i,listening:!i,fontSize:d.fontSize,fontFamily:d.fontFamily,fontStyle:d.fontStyle,fontWeight:d.fontWeight,textDecoration:d.textDecoration,fill:d.fill,stroke:m?d.fill:void 0,strokeWidth:u,align:d.align,wrap:"none",lineHeight:1.2,opacity:f?0:1,visible:!f,...i?{}:{onClick:()=>r(d.id),onTap:()=>r(d.id),onDblClick:()=>s(d.id),onDblTap:()=>s(d.id),onDragEnd:p=>t(p,d.id),onTransformEnd:()=>a(d.id),onContextMenu:p=>{p.evt.preventDefault();let x=p.evt;n(x,d.id,"text");}}},d.id)})})};var wp=({flashcard:e,isSelected:o,onClick:t,onDragEnd:a,onTransformEnd:r,onContextMenu:n,onNext:s,onPrevious:l,nodeRef:c})=>{let[i,d]=useState(null);if(useEffect(()=>{if(e.images.length>0&&e.images[e.currentIndex]){let h=new window.Image;h.src=e.images[e.currentIndex],h.onload=()=>{d(h);};}},[e.images,e.currentIndex]),!i||e.images.length===0)return null;let f=8,m=2,u=Math.min(e.width,e.height)*.08,p=Math.max(16,Math.min(u,32)),x=15;return jsxs(Group,{id:e.id,draggable:e.draggable&&!e.locked,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,onDragEnd:a,onTransformEnd:r,ref:h=>{if(c(h),h){let v=h.getStage()?.container();if(v){let g=b=>{let y=h.getStage()?.getPointerPosition();if(y){let C={x:e.x,y:e.y,width:e.width,height:e.height};y.x>=C.x&&y.x<=C.x+C.width&&y.y>=C.y&&y.y<=C.y+C.height&&n(b);}};v.addEventListener("contextmenu",g),h._contextMenuCleanup=()=>{v.removeEventListener("contextmenu",g);};}}},children:[jsx(Rect,{width:e.width,height:e.height,cornerRadius:f,fill:"white",shadowColor:"black",shadowBlur:o?12:8,shadowOpacity:o?.3:.2,shadowOffsetX:0,shadowOffsetY:2,onClick:t,onTap:t}),jsx(Rect,{width:e.width,height:e.height,cornerRadius:f,stroke:"#E5E7EB",strokeWidth:m,listening:false}),jsx(Image,{x:m+4,y:m+4,image:i,width:e.width-(m+4)*2,height:e.height-(m+4)*2,cornerRadius:f-m,onClick:t,onTap:t}),jsx(Rect,{x:m,y:e.height-50,width:e.width-m*2,height:50,cornerRadius:[0,0,f-m,f-m],fillLinearGradientStartPoint:{x:0,y:0},fillLinearGradientEndPoint:{x:0,y:50},fillLinearGradientColorStops:[0,"rgba(255, 255, 255, 0)",1,"rgba(255, 255, 255, 0.95)"],listening:false}),e.images.length>1&&(e.order==="sequential"||e.order==="random"&&e.navigationHistory&&e.navigationHistory.length>1)&&jsxs(Group,{x:x+p,y:e.height/2,onClick:h=>{h.cancelBubble=true,l();},onTap:h=>{h.cancelBubble=true,l();},children:[jsx(Circle,{radius:p,fill:"white",shadowColor:"black",shadowBlur:4,shadowOpacity:.15}),jsx(Line,{points:[-4,-6,-10,0,-4,6],stroke:"#6B7280",strokeWidth:2,lineCap:"round",lineJoin:"round"})]}),e.images.length>1&&jsxs(Group,{x:e.width-x-p,y:e.height/2,onClick:h=>{h.cancelBubble=true,s();},onTap:h=>{h.cancelBubble=true,s();},children:[jsx(Circle,{radius:p,fill:"white",shadowColor:"black",shadowBlur:4,shadowOpacity:.15}),jsx(Line,{points:[4,-6,10,0,4,6],stroke:"#6B7280",strokeWidth:2,lineCap:"round",lineJoin:"round"})]}),jsx(Rect,{x:e.width-60,y:e.height-35,width:50,height:24,cornerRadius:4,fill:"rgba(255, 255, 255, 0.9)"}),jsx(Text,{x:e.width-60,y:e.height-35,width:50,height:24,text:`${e.currentIndex+1}/${e.images.length}`,fontSize:11,fontFamily:"Arial",fill:"#6B7280",align:"center",verticalAlign:"middle"})]})},md=wp;var Jn=memo(({flashcards:e,flashcardRefs:o,selectedId:t,onDragEnd:a,onTransform:r,onSelect:n,onNext:s,onPrevious:l,onContextMenu:c})=>jsx(Fragment,{children:e.map(i=>jsx(md,{flashcard:i,isSelected:t===i.id,onClick:()=>n(i.id),onDragEnd:a,onTransformEnd:d=>r(i.id,d),onContextMenu:d=>c(d,i.id,"flashcard"),onNext:()=>s(i.id),onPrevious:()=>l(i.id),nodeRef:d=>{d?o.current.set(i.id,d):o.current.delete(i.id);}},i.id))}));Jn.displayName="FlashcardLayer";var hd=e=>{let o=ge(),t=useRef(false),a=useRef(false),r=useRef([]),[n,s]=useState(null);J(b=>b.toolbar.selectedTool);let c=J(b=>b.toolbar.penColor),i=J(b=>b.toolbar.strokeWidth),d=J(b=>b.canvas.isSketchMode),f=J(b=>b.canvas.slides.find(C=>C.id===b.canvas.currentSlideId)?.photoFrames.find(C=>C.id===e)),m=f?.annotations||[],u=f?.isDrawingMode||false,p=f?.width||1,x=f?.height||1,h=useCallback(b=>{if(!u)return;t.current=true,a.current=false,r.current=[{x:b.x,y:b.y}];let y=b.x/p,C=b.y/x;s({tool:"pen",points:[y,C],color:c,strokeWidth:i/p,isSketch:d});},[u,c,i,d,p,x]),v=useCallback(b=>{if(!t.current||!n)return;a.current=true;let y=r.current[r.current.length-1];if(Math.sqrt(Math.pow(b.x-y.x,2)+Math.pow(b.y-y.y,2))<2)return;r.current.push({x:b.x,y:b.y});let I;if(d)I=Zr(r.current,{size:i*2,thinning:.6,smoothing:.5,streamline:.5,simulatePressure:true}).map((w,N)=>N%2===0?w/p:w/x);else {let S=b.x/p,w=b.y/x;I=[...n.points,S,w];}s(S=>S?{...S,points:I}:null);},[d,i,n,p,x]),g=useCallback(()=>{t.current&&(n&&n.points.length>0&&o(gn({frameId:e,line:n})),s(null),t.current=false,a.current=false,r.current=[]);},[o,e,n]);return {annotations:m,activeLine:n,isDrawingMode:u,startDrawing:h,draw:v,stopDrawing:g}};var Rp=({photoFrame:e,isSelected:o,onClick:t,onDragEnd:a,onTransformEnd:r,onContextMenu:n,onStartCamera:s,onCapture:l,cameraStream:c,nodeRef:i})=>{let[d,f]=useState(null),[m,u]=useState(null),p=useRef(null),x=useRef(null),h=useRef(null),v=useRef(null),g=useRef(0),b=33,y=useSelector(R=>R.toolbar.selectedTool),C=y==="pen"||y==="eraser",{annotations:I,activeLine:S,isDrawingMode:w,startDrawing:N,draw:U,stopDrawing:E}=hd(e.id);useEffect(()=>{if(!w)return;let R=()=>{E();},q=()=>{E();};return window.addEventListener("mouseup",R),window.addEventListener("touchend",q),()=>{window.removeEventListener("mouseup",R),window.removeEventListener("touchend",q);}},[E,w]),useEffect(()=>{if(e.capturedImageUrl){let R=new window.Image;R.src=e.capturedImageUrl,R.onload=()=>{f(R);};}},[e.capturedImageUrl]),useEffect(()=>{if(e.isCapturing&&c){p.current||(p.current=document.createElement("video"),p.current.autoplay=true,p.current.playsInline=true),x.current||(x.current=document.createElement("canvas"));let R=p.current,q=x.current;R.srcObject=c;let W=()=>{q.width=R.videoWidth||640,q.height=R.videoHeight||480,console.log("\u{1F4F9} Starting live capture, canvas size:",q.width,q.height);let $=ee=>{if(ee-g.current<b){h.current=requestAnimationFrame($);return}g.current=ee;let re=q.getContext("2d");if(re&&R.readyState===R.HAVE_ENOUGH_DATA){re.drawImage(R,0,0,q.width,q.height);let ie=q.toDataURL("image/jpeg",.6),Ge=new window.Image;Ge.onload=()=>{u(Ge);},Ge.src=ie;}h.current=requestAnimationFrame($);};h.current=requestAnimationFrame($);};return R.onloadedmetadata=W,R.readyState>=R.HAVE_METADATA&&W(),R.play().catch($=>console.error("Error playing video:",$)),()=>{h.current&&(cancelAnimationFrame(h.current),h.current=null);}}return ()=>{u(null),v.current&&(v.current.src="");}},[e.isCapturing,c]);let D=()=>{p.current&&e.isCapturing&&l(p.current);},F=R=>{if(e.capturedImageUrl){if(!w){t();return}let q=R.currentTarget,W=q.getAbsoluteTransform().copy(),ee=q.getStage()?.getPointerPosition();if(ee){W.invert();let re=W.point(ee);N(re);}R.cancelBubble=true;}else t();},T=R=>{if(!w||!e.capturedImageUrl)return;let q=R.currentTarget,W=q.getAbsoluteTransform().copy(),ee=q.getStage()?.getPointerPosition();if(ee){W.invert();let re=W.point(ee);U(re);}},H=()=>{!w||!e.capturedImageUrl||E();},V=e.isCapturing?m:d,te=Math.min(e.width,e.height)*.12,P=Math.max(25,Math.min(te,50)),ae=e.width/2,z=e.height/2;return jsxs(Group,{id:e.id,draggable:!w&&!C,listening:true,x:e.x,y:e.y,...C?{}:{onDragEnd:a,onTransformEnd:r},rotation:e.rotation,width:e.width,height:e.height,ref:R=>{if(i(R),R){let q=R.getStage()?.container();if(q){let W=$=>{let ee=R.getStage()?.getPointerPosition();if(ee){let re={x:e.x,y:e.y,width:e.width,height:e.height};ee.x>=re.x&&ee.x<=re.x+re.width&&ee.y>=re.y&&ee.y<=re.y+re.height&&n($);}};q.addEventListener("contextmenu",W),R._contextMenuCleanup=()=>{q.removeEventListener("contextmenu",W);};}}},children:[jsx(Rect,{x:-20,y:-20,width:e.width+50,height:e.height+50,fill:V?"transparent":"white",strokeWidth:o?0:2,cornerRadius:8,listening:true,onClick:t,onTap:t,shadowColor:"rgba(0,0,0,0.35)",shadowBlur:15,shadowOpacity:.4,shadowOffset:{x:0,y:4}}),V&&jsx(Image,{image:V,width:e.width,height:e.height,cornerRadius:8,listening:true,onClick:F,onTap:F,onMouseDown:F,onTouchStart:F,onMouseMove:T,onTouchMove:T,onMouseUp:H,onTouchEnd:H,...C?{}:{onDragEnd:a,onTransformEnd:r}}),I?.map((R,q)=>{let W=R.points.map((ee,re)=>re%2===0?ee*e.width:ee*e.height),$=R.strokeWidth*e.width;return jsx(Line,{points:W,stroke:R.tool==="eraser"?"white":R.color,strokeWidth:$,tension:.5,lineCap:"round",lineJoin:"round",globalCompositeOperation:R.tool==="eraser"?"destination-out":"source-over",fill:R.isSketch?R.color:void 0,closed:R.isSketch,listening:false},q)}),S&&jsx(Line,{points:S.points.map((R,q)=>q%2===0?R*e.width:R*e.height),stroke:S.tool==="eraser"?"white":S.color,strokeWidth:S.strokeWidth*e.width,tension:.5,lineCap:"round",lineJoin:"round",globalCompositeOperation:S.tool==="eraser"?"destination-out":"source-over",fill:S.isSketch?S.color:void 0,closed:S.isSketch,listening:false},"active"),!V&&!e.isCapturing&&jsxs(Fragment,{children:[jsx(Text,{x:10,y:6,width:e.width,text:"Take a Photo",fontSize:22,fontStyle:"bold",fill:"#000000CC",fontFamily:"Arial"}),jsx(Text,{x:12,y:32,width:e.width,text:"Capture a photo to add directly into your canvas.",fontSize:12,fill:"#00000099",fontFamily:"Arial"}),jsx(Rect,{x:0,y:z-90,width:e.width,fill:"#EBF6F7",height:180,stroke:"#00000066",strokeWidth:1.5,dash:[4,4],cornerRadius:8}),!e.capturedImageUrl&&jsxs(Fragment,{children:[jsx(Rect,{x:ae-P+6,y:z-60,width:P*1.6,height:P*1.6,radius:P,fill:"white",cornerRadius:8,listening:true,onClick:R=>{R.cancelBubble=true,e.isCapturing?D():s();},onTap:R=>{R.cancelBubble=true,e.isCapturing?D():s();}}),jsx(Html,{groupProps:{x:ae-12,y:z-40,width:P*2,height:16},children:jsx(CameraPlus,{weight:"fill",color:"#096B76",size:24,onClick:R=>{R.stopPropagation(),e.isCapturing?D():s();}})})]}),jsx(Text,{x:0,y:z,width:e.width,height:40,text:"Click on the camera to start",fontStyle:"bold",fontSize:18,fontFamily:"Arial",fill:"#666",align:"center",verticalAlign:"middle"}),jsx(Text,{x:0,y:z+24,width:e.width,height:40,text:"Make sure you have good lighting!",fontSize:14,fontFamily:"Arial",fill:"#666",align:"center",verticalAlign:"middle"}),jsx(Rect,{x:ae-24,y:z+104,width:P*1.6,height:P*1.6,radius:P,fill:"#096B76",cornerRadius:P,listening:true,onClick:R=>{R.cancelBubble=true,e.isCapturing?D():s();},onTap:R=>{R.cancelBubble=true,e.isCapturing?D():s();}}),jsx(Html,{groupProps:{x:ae-8,y:z+120,width:P*2,height:16},children:jsx(Camera,{weight:"fill",color:"white",size:24,onClick:R=>{R.stopPropagation(),e.isCapturing?D():s();}})})]}),e.isCapturing&&jsxs(Fragment,{children:[jsx(Rect,{x:10,y:10,width:60,height:25,fill:"rgba(231, 76, 60, 0.9)",cornerRadius:4}),jsx(Text,{x:10,y:10,width:60,height:25,text:"\u25CF LIVE",fontSize:12,fontFamily:"Arial",fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle"})]})]})},vd=Rp;var ai=memo(({photoFrames:e,photoFrameRefs:o,selectedId:t,onDragEnd:a,onTransform:r,onSelect:n,onStartCamera:s,onCapture:l,cameraStreams:c,onContextMenu:i})=>jsx(Fragment,{children:e.map(d=>jsx(vd,{photoFrame:d,isSelected:t===d.id,onClick:()=>n(d.id),onDragEnd:f=>a(f,d.id),onTransformEnd:f=>r(d.id,f),onContextMenu:f=>i(f,d.id,"photoFrame"),onStartCamera:()=>s(d.id),onCapture:f=>l(d.id,f),cameraStream:c.get(d.id),nodeRef:f=>{f?o.current.set(d.id,f):o.current.delete(d.id);}},d.id))}));ai.displayName="PhotoFrameLayer";var Id=({x:e,y:o,onAction:t,onClose:a,type:r,isDrawingMode:n,menuRef:s})=>{useEffect(()=>{let i=f=>{s?.current&&!s.current.contains(f.target)&&a();},d=f=>{f.key==="Escape"&&a();};return document.addEventListener("mousedown",i),document.addEventListener("keydown",d),()=>{document.removeEventListener("mousedown",i),document.removeEventListener("keydown",d);}},[a]);let l=[{action:"order",label:"Order",icon:jsx(ArrowUpIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),hasSubmenu:true},{action:"lock",label:"Lock",icon:jsx(Lock,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),hasSubmenu:true},{action:"link",label:"Link",icon:jsx(LinkIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"})},{action:"voice",label:"Voice",icon:jsx(SpeakerHifiIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"})},...r==="mcq"||r==="trueFalse"||r==="shortAnswer"||r==="longAnswer"||r==="fillInTheBlanks"?[{action:"edit",label:"Edit",icon:jsx(NotePencilIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"})}]:[],...r==="shape"?[{action:"color",label:"Change Color",icon:jsx(Palette,{className:"h-5 w-5",weight:"fill",color:"#00000099"})}]:[],...r==="image"?[{action:"crop",label:"Crop Image",icon:jsx(ScissorsIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"})},{action:"draw",label:n?"Exit Drawing Mode":"Draw on Image",icon:jsx(PencilSimple,{className:"h-5 w-5",weight:"fill",color:"#00000099"})}]:[],...r==="photoFrame"?[{action:"draw",label:n?"Exit Drawing Mode":"Draw on Frame",icon:jsx(PencilSimple,{className:"h-5 w-5",weight:"fill",color:"#00000099"})}]:[],...r==="flashcard"?[{action:"editFlashcard",label:"Edit Flashcard",icon:jsx(NotePencilIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"})}]:[],{action:"duplicate",label:"Duplicate",icon:jsx(CopySimple,{className:"h-5 w-5",weight:"fill",color:"#00000099"})},{action:"infinite-clone",label:"Infinite Clone",icon:jsx(Square,{className:"h-5 w-5",weight:"fill",color:"#00000099"})},{action:"make-response",label:"Make Response",icon:jsx(Chat,{className:"h-5 w-5",weight:"fill",color:"#00000099"})},{action:"accessibility",label:"Accessibility",icon:jsx(EyeIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"})},{action:"layers",label:"Layers",icon:jsx(Stack$1,{className:"h-5 w-5",weight:"fill",color:"#00000099"})},{action:"delete",label:"Delete",icon:jsx(Trash,{className:"h-5 w-5",weight:"fill",color:"#E92222"}),isDanger:true}],c=(i,d)=>{i==="order"||i==="lock"?t(i,d):(t(i),a());};return jsx("div",{ref:s,className:"absolute z-100 min-w-[200px] rounded-2xl border border-gray-200 bg-white shadow-xl",style:{left:`${e}px`,top:`${o}px`},children:jsx("div",{className:"space-y-1 p-2",children:l.map((i,d)=>jsxs("button",{onClick:f=>c(i.action,f),className:`flex w-full items-center justify-between rounded-md px-4 py-2 text-left text-sm transition-colors hover:cursor-pointer hover:bg-[#0000000A] ${i.isDanger?"text-red-600 hover:bg-red-50":"text-gray-700"}`,children:[jsxs("div",{className:"flex items-center gap-3",children:[i.icon,jsx("span",{className:`font-medium ${i.isDanger?"text-[#E92222]":"text-[#00000099]"}`,children:i.label})]}),i.hasSubmenu&&jsx("svg",{className:"h-4 w-4 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})]},d))})})};var Cd=({x:e,y:o,items:t,onClose:a})=>{let r=useRef(null);return useEffect(()=>{let n=s=>{r.current&&!r.current.contains(s.target)&&a();};return document.addEventListener("mousedown",n),()=>{document.removeEventListener("mousedown",n);}},[a]),jsx("div",{ref:r,className:"fixed z-101 min-w-[180px] rounded-lg border border-gray-200 bg-white shadow-xl",style:{left:`${e}px`,top:`${o}px`},children:jsx("div",{className:"py-2",children:t.map((n,s)=>jsx("button",{onClick:()=>{n.onClick(),a();},className:"flex w-full items-center px-4 py-2.5 text-left text-sm text-gray-700 transition-colors hover:bg-gray-50",children:jsx("span",{className:"font-medium",children:n.label})},s))})})};var kd=({title:e,label:o,placeholder:t,defaultValue:a="",onSave:r,onClose:n})=>{let[s,l]=useState(a),c=useRef(null);useEffect(()=>{c.current?.focus();},[]);let i=()=>{r(s),n();};return jsx("div",{className:"fixed inset-0 z-102 flex items-center justify-center bg-black/50",children:jsxs("div",{className:"w-full max-w-md rounded-lg bg-white p-6 shadow-2xl",children:[jsxs("div",{className:"mb-4 flex items-center justify-between",children:[jsx("h2",{className:"text-xl font-semibold text-gray-900",children:e}),jsx("button",{onClick:n,className:"rounded-lg p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600",children:jsx(X$1,{className:"h-5 w-5"})})]}),jsxs("div",{className:"mb-6",children:[jsx("label",{className:"mb-2 block text-sm font-medium text-gray-700",children:o}),jsx("input",{ref:c,type:"text",value:s,onChange:f=>l(f.target.value),onKeyDown:f=>{f.key==="Enter"?i():f.key==="Escape"&&n();},placeholder:t,className:"w-full rounded-lg border border-gray-300 px-4 py-2 focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20 focus:outline-none"})]}),jsxs("div",{className:"flex justify-end gap-3",children:[jsx("button",{onClick:n,className:"rounded-lg border border-gray-300 px-4 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50",children:"Cancel"}),jsx("button",{onClick:i,className:"rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700",children:"Save"})]})]})})};var Md=({defaultColor:e="#096B76",onConfirm:o,onCancel:t})=>{let[a,r]=useState(e),n=useRef(null);useEffect(()=>{let d=f=>{f.key==="Escape"&&t();};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[t]);let s=d=>{d.preventDefault(),o(a);},l=(d,f,m)=>{m/=100;let u=f*Math.min(m,1-m)/100,p=x=>{let h=(x+d/30)%12,v=m-u*Math.max(Math.min(h-3,9-h,1),-1);return Math.round(255*v).toString(16).padStart(2,"0")};return `#${p(0)}${p(8)}${p(4)}`},i=jsx("div",{className:"pointer-events-none fixed inset-0 z-100 flex items-center justify-center",onMouseDown:d=>d.stopPropagation(),onMouseUp:d=>d.stopPropagation(),onMouseMove:d=>d.stopPropagation(),onTouchStart:d=>d.stopPropagation(),onTouchMove:d=>d.stopPropagation(),onTouchEnd:d=>d.stopPropagation(),children:jsxs("div",{ref:n,className:"pointer-events-auto max-h-[90vh] w-96 max-w-[90vw] overflow-y-auto rounded-xl border border-gray-200 bg-white p-6 shadow-2xl",onClick:d=>d.stopPropagation(),children:[jsxs("div",{className:"mb-4 flex items-center justify-between",children:[jsx("h3",{className:"text-lg font-semibold text-gray-800",children:"Change Shape Color"}),jsx("button",{onClick:t,className:"rounded-lg p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600",children:jsx(X$1,{size:20,weight:"bold"})})]}),jsxs("form",{onSubmit:s,children:[jsxs("div",{className:"space-y-4",children:[jsxs("div",{className:"flex items-center gap-3",children:[jsx("div",{className:"h-16 w-16 rounded-lg border-2 border-gray-300 shadow-sm",style:{backgroundColor:a}}),jsxs("div",{className:"flex-1",children:[jsx("label",{className:"mb-1 block text-xs font-semibold text-gray-500",children:"HEX COLOR"}),jsx("input",{type:"text",value:a,onChange:d=>r(d.target.value),className:"w-full rounded-lg border border-gray-300 px-3 py-2 font-mono text-sm focus:border-blue-500 focus:ring-2 focus:ring-blue-200 focus:outline-none",placeholder:"#000000"})]})]}),jsxs("div",{children:[jsx("label",{className:"mb-1 block text-xs font-semibold text-gray-500",children:"COLOR PICKER"}),jsx("input",{type:"color",value:a,onChange:d=>r(d.target.value),className:"h-12 w-full cursor-pointer rounded-lg border border-gray-300"})]}),jsxs("div",{children:[jsx("label",{className:"mb-1 block text-xs font-semibold text-gray-500",children:"HUE SLIDER"}),jsx("input",{type:"range",min:"0",max:"360",defaultValue:"180",onChange:d=>{let f=parseInt(d.target.value),m=l(f,100,50);r(m);},className:"h-3 w-full cursor-pointer appearance-none rounded-full",style:{background:"linear-gradient(to right, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%)"}})]}),jsxs("div",{children:[jsx("label",{className:"mb-2 block text-xs font-semibold text-gray-500",children:"PRESET COLORS"}),jsx("div",{className:"grid grid-cols-8 gap-2",children:["#FF6B6B","#4ECDC4","#45B7D1","#FFA07A","#98D8C8","#F7DC6F","#BB8FCE","#85C1E2","#096B76","#2C3E50","#E74C3C","#3498DB","#2ECC71","#F39C12","#9B59B6","#1ABC9C"].map(d=>jsx("button",{type:"button",onClick:()=>r(d),className:`h-8 w-8 rounded-lg border-2 transition-all hover:scale-110 ${a.toUpperCase()===d.toUpperCase()?"border-blue-500 ring-2 ring-blue-200":"border-gray-300"}`,style:{backgroundColor:d},title:d},d))})]})]}),jsxs("div",{className:"mt-6 flex gap-3",children:[jsx("button",{type:"button",onClick:t,className:"flex-1 rounded-lg border border-gray-300 px-4 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50",children:"Cancel"}),jsx("button",{type:"submit",className:"flex-1 rounded-lg bg-blue-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-600",children:"Apply Color"})]})]})]})});return createPortal(jsx("div",{className:"konva-editor-root",children:i}),document.body)};var uh=({imageSrc:e,onCrop:o})=>{let[t]=Rd(e),a=useRef(null),r=useRef(null),n=useRef(null),s=useMemo(()=>{if(!t)return {width:600,height:400};let p=Math.min(600/t.width,400/t.height);return {width:t.width*p,height:t.height*p}},[t]),l=useMemo(()=>{let m=s.width*.5,u=s.height*.5,p=(s.width-m)/2,x=(s.height-u)/2;return {x:p,y:x,width:m,height:u}},[s]),[c,i]=useState(l);useEffect(()=>{i(l);},[l]),useEffect(()=>{n.current&&r.current&&(n.current.nodes([r.current]),n.current.getLayer()?.batchDraw());},[c]),useEffect(()=>{o(c.x,c.y,c.width,c.height);},[c,o]);let d=()=>{let m=r.current;if(!m)return;let u=m.scaleX(),p=m.scaleY();m.scaleX(1),m.scaleY(1),i({x:m.x(),y:m.y(),width:Math.max(20,m.width()*u),height:Math.max(20,m.height()*p)});},f=()=>{let m=r.current;m&&i({x:m.x(),y:m.y(),width:m.width(),height:m.height()});};return jsx(Stage,{width:s.width,height:s.height,className:"border border-gray-300",children:jsxs(Layer,{children:[jsx(Image,{ref:a,image:t,width:s.width,height:s.height}),jsx(Rect,{x:0,y:0,width:s.width,height:s.height,fill:"rgba(0, 0, 0, 0.5)",globalCompositeOperation:"source-over"}),jsx(Rect,{x:c.x,y:c.y,width:c.width,height:c.height,globalCompositeOperation:"destination-out"}),jsx(Rect,{ref:r,x:c.x,y:c.y,width:c.width,height:c.height,stroke:"#4A90E2",strokeWidth:2,draggable:true,onDragEnd:f,onTransformEnd:d,dragBoundFunc:m=>{let u=Math.max(0,Math.min(m.x,s.width-c.width)),p=Math.max(0,Math.min(m.y,s.height-c.height));return {x:u,y:p}}}),jsx(Transformer,{ref:n,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:false,keepRatio:false,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"],boundBoxFunc:(m,u)=>u.width<20||u.height<20||u.x<0||u.y<0||u.x+u.width>s.width||u.y+u.height>s.height?m:u})]})})},Pd=({imageSrc:e,onConfirm:o,onCancel:t})=>{let a=useRef(null),[r,n]=useState({x:0,y:0,width:0,height:0}),[s]=Rd(e);return useEffect(()=>{let d=f=>{f.key==="Escape"&&t();};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[t]),createPortal(jsx("div",{className:"konva-editor-root",children:jsx("div",{className:"bg-opacity-50 pointer-events-none fixed inset-0 z-100 flex items-center justify-center bg-black",onMouseDown:d=>d.stopPropagation(),onMouseUp:d=>d.stopPropagation(),onMouseMove:d=>d.stopPropagation(),onTouchStart:d=>d.stopPropagation(),onTouchMove:d=>d.stopPropagation(),onTouchEnd:d=>d.stopPropagation(),children:jsxs("div",{ref:a,className:"pointer-events-auto max-h-[90vh] w-auto max-w-[90vw] overflow-y-auto rounded-xl border border-gray-200 bg-white p-6 shadow-2xl",onClick:d=>d.stopPropagation(),children:[jsxs("div",{className:"mb-4 flex items-center justify-between",children:[jsx("h3",{className:"text-lg font-semibold text-gray-800",children:"Crop Image"}),jsx("button",{onClick:t,className:"rounded-lg p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600",children:jsx(X$1,{size:20,weight:"bold"})})]}),jsx("div",{className:"mb-4 text-sm text-gray-600",children:"Drag the corners to resize the crop area, or drag the rectangle to move it."}),jsx("div",{className:"mb-6",children:jsx(uh,{imageSrc:e,onCrop:(d,f,m,u)=>{n({x:d,y:f,width:m,height:u});}})}),jsxs("div",{className:"flex gap-3",children:[jsx("button",{type:"button",onClick:t,className:"flex-1 rounded-lg border border-gray-300 px-4 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50",children:"Cancel"}),jsxs("button",{type:"button",onClick:()=>{if(!s)return;let m=Math.min(600/s.width,400/s.height),u=r.x/m,p=r.y/m,x=r.width/m,h=r.height/m,v=document.createElement("canvas");v.width=x,v.height=h;let g=v.getContext("2d");if(!g)return;g.drawImage(s,u,p,x,h,0,0,x,h);let b=v.toDataURL("image/png");o(b);},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-blue-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-600",children:[jsx(Check,{size:16,weight:"bold"}),"Crop Image"]})]})]})})}),document.body)};var Go=({onClose:e,stageRef:o,onRecordingComplete:t,directDrawingCanvasRef:a})=>{let[r,n]=useState(false),[s,l]=useState(null),[c,i]=useState(0),[d,f]=useState(true),m=useRef(null),u=useRef([]),p=useRef(null),x=useRef(null),h=useRef(null),v=useRef(null),g=useRef(null),b=useRef(null);useEffect(()=>()=>{h.current&&cancelAnimationFrame(h.current),p.current&&clearInterval(p.current),x.current&&x.current.getTracks().forEach(w=>w.stop());},[]);let y=async()=>{try{let w,N=null;if(o?.current){console.log("Creating recording canvas from Konva stage...");let T=o.current.getLayers();console.log("Konva layers:",T.length),T.forEach((q,W)=>{let $=q.getChildren();console.log(`Layer ${W} children count:`,$.length);});let H=document.createElement("canvas");H.width=o.current.width(),H.height=o.current.height();let V=H.getContext("2d",{willReadFrequently:!1});if(!V){console.error("Could not get recording canvas context"),alert("Failed to create recording canvas.");return}console.log("Recording canvas created, dimensions:",H.width,"x",H.height),g.current=H;let te=()=>{if(V.clearRect(0,0,H.width,H.height),T.forEach(q=>{let W=q.getCanvas()._canvas;W&&V.drawImage(W,0,0);}),a?.current){let q=a.current;V.drawImage(q,0,0);}};b.current=te,o.current.draw(),te(),await new Promise(q=>setTimeout(q,100)),console.log("Creating captureStream..."),w=H.captureStream(30),console.log("Canvas stream created, tracks:",w.getTracks().length);let ae=w.getVideoTracks()[0];ae&&console.log("Video track:",ae.label,"state:",ae.readyState);let z=0,R=()=>{te(),o?.current&&(o.current.getLayers().forEach(W=>{W.batchDraw();}),z++,z%60===0&&console.log("Drawing frame:",z)),h.current=requestAnimationFrame(R);};R();}else {console.error("Stage ref not provided"),alert("Stage reference not available.");return}if(d)try{N=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0}});}catch(T){console.warn("Microphone access denied:",T);}let U=[...w.getVideoTracks()];N&&U.push(...N.getAudioTracks());let E=new MediaStream(U);x.current=E;let D="video/webm";MediaRecorder.isTypeSupported("video/webm;codecs=vp9,opus")?D="video/webm;codecs=vp9,opus":MediaRecorder.isTypeSupported("video/webm;codecs=vp8,opus")?D="video/webm;codecs=vp8,opus":MediaRecorder.isTypeSupported("video/webm;codecs=vp9")?D="video/webm;codecs=vp9":MediaRecorder.isTypeSupported("video/webm;codecs=vp8")&&(D="video/webm;codecs=vp8"),console.log("Using mimeType:",D);let F=new MediaRecorder(E,{mimeType:D,videoBitsPerSecond:25e5});m.current=F,u.current=[],F.ondataavailable=T=>{console.log("Data available, size:",T.data.size),T.data.size>0&&u.current.push(T.data);},F.onstop=()=>{console.log("Recording stopped, chunks:",u.current.length);let T=new Blob(u.current,{type:D});console.log("Final blob size:",T.size),o?.current&&b.current&&g.current&&(o.current.draw(),o.current.getLayers().forEach(V=>{V.batchDraw();}),b.current(),v.current=g.current.toDataURL("image/jpeg",.8),console.log("Final canvas thumbnail captured, length:",v.current.length)),E.getTracks().forEach(H=>H.stop()),p.current&&clearInterval(p.current),h.current&&(cancelAnimationFrame(h.current),h.current=null),l(T);},F.onerror=T=>{console.error("MediaRecorder error:",T);},console.log("Starting recording..."),F.start(1e3),n(!0),i(0),p.current=setInterval(()=>{i(T=>T+1);},1e3);}catch(w){console.error("Error starting screen recording:",w),alert("Failed to start recording. Please ensure you granted permission.");}},C=()=>{m.current&&r&&(console.log("Stopping recording, state:",m.current.state),m.current.state!=="inactive"&&(m.current.requestData(),setTimeout(()=>{m.current&&m.current.state!=="inactive"&&m.current.stop();},100)),n(false));},I=()=>{if(s){let w=URL.createObjectURL(s),N=document.createElement("a");N.href=w,N.download=`screen-recording-${Date.now()}.webm`,document.body.appendChild(N),N.click(),document.body.removeChild(N),URL.revokeObjectURL(w);}},S=w=>{let N=Math.floor(w/60),U=w%60;return `${N.toString().padStart(2,"0")}:${U.toString().padStart(2,"0")}`};return r?jsxs("div",{className:"fixed top-4 left-1/2 z-102 flex -translate-x-1/2 items-center gap-4 rounded-full border border-gray-200 bg-white px-6 py-3 shadow-2xl",children:[jsxs("div",{className:"flex items-center gap-2",children:[jsx("div",{className:"h-3 w-3 animate-pulse rounded-full bg-red-600"}),jsx("span",{className:"font-mono text-lg font-semibold text-gray-900",children:S(c)})]}),jsx("div",{className:"h-6 w-px bg-gray-300"}),jsx("span",{className:"text-sm text-gray-600",children:"Recording canvas..."}),jsxs("button",{onClick:C,className:"ml-2 flex items-center gap-2 rounded-full bg-red-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-red-700",children:[jsx(Stop,{className:"h-4 w-4",weight:"fill"}),"Stop"]})]}):jsx("div",{className:"fixed inset-0 z-102 flex items-center justify-center bg-black/50",children:jsxs("div",{className:"w-full max-w-md rounded-lg bg-white p-6 shadow-2xl",children:[jsxs("div",{className:"mb-4 flex items-center justify-between",children:[jsx("h2",{className:"text-xl font-semibold text-gray-900",children:"Screen Recording"}),jsx("button",{onClick:e,className:"rounded-lg p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600",children:jsx(X$1,{className:"h-5 w-5"})})]}),jsxs("div",{className:"mb-6",children:[!s&&jsxs("div",{className:"text-center",children:[jsx("p",{className:"mb-4 text-sm text-gray-600",children:"Record your canvas with voice narration. Everything you draw, type, or add will be captured automatically."}),jsxs("div",{className:"mx-auto mb-4 flex items-center justify-between gap-1 px-2",children:[jsx("button",{onClick:()=>f(!d),className:`flex items-center gap-2 rounded-lg border px-6 py-3 text-sm transition-colors ${d?"border-blue-500 bg-blue-50 text-blue-700":"border-gray-300 bg-white text-gray-700 hover:bg-gray-50"}`,children:d?jsxs(Fragment,{children:[jsx(Microphone,{className:"h-5 w-5",weight:"fill"}),"Microphone On"]}):jsxs(Fragment,{children:[jsx(MicrophoneSlash,{className:"h-5 w-5"}),"Microphone Off"]})}),jsxs("button",{onClick:y,className:"flex items-center gap-2 rounded-lg bg-red-600 px-6 py-3 text-white transition-colors hover:bg-red-700",children:[jsx(Record,{className:"h-5 w-5",weight:"fill"}),"Start Recording"]})]})]}),s&&jsxs("div",{className:"space-y-4",children:[jsx("div",{className:"overflow-hidden rounded-lg bg-gray-900",children:jsx("video",{src:URL.createObjectURL(s),controls:true,className:"w-full",style:{maxHeight:"300px"}})}),jsxs("p",{className:"text-center text-sm text-gray-600",children:["Recording saved! Duration: ",S(c)]}),jsxs("div",{className:"flex flex-col gap-2",children:[jsx("button",{onClick:()=>{t&&s&&v.current&&(t(s,v.current),e());},className:"flex items-center justify-center gap-2 rounded-lg bg-green-600 px-6 py-3 text-white transition-colors hover:bg-green-700",children:"Add to Canvas"}),jsxs("div",{className:"flex gap-2",children:[jsxs("button",{onClick:I,className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-blue-600 px-4 py-2 text-white transition-colors hover:bg-blue-700",children:[jsx(Download,{className:"h-5 w-5"}),"Download"]}),jsx("button",{onClick:()=>{l(null),i(0);},className:"flex-1 rounded-lg border border-gray-300 px-4 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50",children:"Re-record"})]})]})]})]}),jsx("div",{className:"rounded-lg bg-blue-50 p-3",children:jsxs("p",{className:"text-center text-xs text-blue-900",children:[jsx("strong",{children:"Tip:"})," The canvas will be recorded automatically. The modal will disappear during recording so you can freely draw and edit."]})})]})})};var Ed=({elementType:e,existingAudio:o,onSave:t,onDelete:a,onClose:r})=>{let[n,s]=useState(false),[l,c]=useState(null),[i,d]=useState(false),[f,m]=useState(0),u=useRef(null),p=useRef([]),x=useRef(null),h=useRef(null);useEffect(()=>{o&&!l&&fetch(o).then(w=>w.blob()).then(w=>c(w)).catch(w=>console.error("Error loading audio:",w));},[o,l]);let v=async()=>{try{let w=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0}}),N=new MediaRecorder(w);u.current=N,p.current=[],N.ondataavailable=U=>{U.data.size>0&&p.current.push(U.data);},N.onstop=()=>{let U=new Blob(p.current,{type:"audio/webm"});c(U),w.getTracks().forEach(E=>E.stop()),x.current&&clearInterval(x.current);},N.start(),s(!0),m(0),x.current=setInterval(()=>{m(U=>U+1);},1e3);}catch(w){console.error("Error starting audio recording:",w),alert("Failed to start recording. Please allow microphone access.");}},g=()=>{u.current&&n&&(u.current.stop(),s(false));},b=()=>{if(l){let w=URL.createObjectURL(l),N=new Audio(w);h.current=N,N.onended=()=>{d(false),URL.revokeObjectURL(w);},N.play(),d(true);}},y=()=>{h.current&&(h.current.pause(),h.current.currentTime=0,d(false));},C=async()=>{if(l){let w=new FileReader;w.onloadend=()=>{let N=w.result;t(N),r();},w.readAsDataURL(l);}},I=()=>{c(null),a();},S=w=>{let N=Math.floor(w/60),U=w%60;return `${N.toString().padStart(2,"0")}:${U.toString().padStart(2,"0")}`};return n?jsxs("div",{className:"fixed top-4 left-1/2 z-103 flex -translate-x-1/2 items-center gap-4 rounded-full border border-gray-200 bg-white px-6 py-3 shadow-2xl",children:[jsxs("div",{className:"flex items-center gap-2",children:[jsx("div",{className:"h-3 w-3 animate-pulse rounded-full bg-red-600"}),jsx("span",{className:"font-mono text-lg font-semibold text-gray-900",children:S(f)})]}),jsx("div",{className:"h-6 w-px bg-gray-300"}),jsx("span",{className:"text-sm text-gray-600",children:"Recording audio..."}),jsxs("button",{onClick:g,className:"ml-2 flex items-center gap-2 rounded-full bg-red-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-red-700",children:[jsx(Stop,{className:"h-4 w-4",weight:"fill"}),"Stop"]})]}):jsx("div",{className:"fixed inset-0 z-103 flex items-center justify-center bg-black/50",children:jsxs("div",{className:"w-full max-w-sm rounded-lg bg-white p-6 shadow-2xl",children:[jsxs("div",{className:"mb-6",children:[jsxs("h3",{className:"text-lg font-semibold text-gray-900",children:["Record Audio for"," ",e.charAt(0).toUpperCase()+e.slice(1).replace(/([A-Z])/g," $1")]}),jsx("p",{className:"text-sm text-gray-600",children:"Record a voice note for this element"})]}),jsxs("div",{className:"flex flex-col gap-4",children:[!l&&jsx("div",{className:"text-center",children:jsxs("button",{onClick:v,className:"bg-primary hover:bg-primary/90 flex w-full items-center justify-center gap-2 rounded-lg px-6 py-3 font-semibold text-white transition-colors hover:cursor-pointer",children:[jsx(Microphone,{className:"h-5 w-5",weight:"fill"}),"Start Recording"]})}),l&&jsxs("div",{className:"space-y-3",children:[jsxs("div",{className:"flex items-center justify-center gap-3",children:[jsxs("button",{onClick:i?y:b,className:"flex items-center gap-2 rounded-lg bg-blue-600 px-6 py-3 text-white transition-colors hover:bg-blue-700",children:[jsx(Play,{className:"h-5 w-5",weight:"fill"}),i?"Playing...":"Play Audio"]}),jsx("button",{onClick:I,className:"flex items-center gap-2 rounded-lg border border-red-300 bg-white px-4 py-3 text-red-600 transition-colors hover:bg-red-50",children:jsx(Trash,{className:"h-5 w-5"})})]}),jsx("button",{onClick:C,className:"w-full rounded-lg bg-green-600 px-6 py-3 text-white transition-colors hover:bg-green-700",children:"Save Audio"})]}),jsx("button",{onClick:r,className:"w-full rounded-lg bg-[#0000000A] p-3 text-base font-semibold text-[#00000099] transition-colors hover:cursor-pointer hover:bg-[#0000001A]",children:"Cancel"})]})]})})};var Lt=({audioData:e,x:o,y:t,width:a})=>{let[r,n]=useState(false),s=useRef(null);return jsx("button",{onClick:c=>{if(c.stopPropagation(),r&&s.current)s.current.pause(),s.current.currentTime=0,n(false);else {let i=new Audio(e);s.current=i,i.onended=()=>{n(false);},i.onerror=()=>{console.error("Error playing audio"),n(false);},i.play(),n(true);}},className:`absolute flex items-center justify-center rounded-full shadow-lg transition-all hover:scale-110 ${r?"bg-green-500 hover:bg-green-600":"bg-blue-500 hover:bg-blue-600"}`,style:{left:`${o+a-35}px`,top:`${t+5}px`,width:"30px",height:"30px",zIndex:99},title:r?"Stop Audio":"Play Audio",children:r?jsx(SpeakerSimpleSlash,{className:"h-4 w-4 text-white",weight:"fill"}):jsx(SpeakerHigh,{className:"h-4 w-4 text-white",weight:"fill"})})};var si=({selectedElementId:e,onClose:o,onSelectElement:t})=>{let a=ge(),r=J(pe),n=useMemo(()=>{if(!r)return [];let x=[];return r.images?.forEach(h=>{x.push({id:h.id,type:"image",name:"Image",timestamp:h.timestamp||0});}),r.videos?.forEach(h=>{x.push({id:h.id,type:"video",name:"Video",timestamp:h.timestamp||0});}),r.shapes?.forEach(h=>{x.push({id:h.id,type:"shape",name:`${h.type} Shape`,timestamp:h.timestamp||0});}),r.texts?.forEach(h=>{x.push({id:h.id,type:"text",name:h.text.substring(0,20)+(h.text.length>20?"...":""),timestamp:h.timestamp||0});}),r.flashcards?.forEach(h=>{x.push({id:h.id,type:"flashcard",name:`Flashcard (${h.images.length} images)`,timestamp:h.timestamp||0});}),r.photoFrames?.forEach(h=>{x.push({id:h.id,type:"photoFrame",name:"Photo Frame",timestamp:h.timestamp||0});}),r.multipleChoices?.forEach(h=>{x.push({id:h.id,type:"mcq",name:"Multiple Choice",timestamp:h.timestamp||0});}),r.trueFalses?.forEach(h=>{x.push({id:h.id,type:"trueFalse",name:"True/False",timestamp:h.timestamp||0});}),r.shortAnswers?.forEach(h=>{x.push({id:h.id,type:"shortAnswer",name:"Short Answer",timestamp:h.timestamp||0});}),r.LongAnswer?.forEach(h=>{x.push({id:h.id,type:"longAnswer",name:"Long Answer",timestamp:h.timestamp||0});}),r.fillInTheBlanks?.forEach(h=>{x.push({id:h.id,type:"fillInTheBlanks",name:"Fill in the Blanks",timestamp:h.timestamp||0});}),r.lines?.forEach(h=>{h.id&&x.push({id:h.id,type:"line",name:"Drawn Line",timestamp:h.timestamp||0});}),x.sort((h,v)=>v.timestamp-h.timestamp)},[r]),[s,l]=useState(n),[c,i]=useState(false);useEffect(()=>{c||l(n);},[n]);let d=x=>{let h="h-5 w-5";switch(x){case "image":return jsx(Image$2,{className:h});case "video":return jsx(VideoCamera,{className:h});case "shape":return jsx(Shapes$1,{className:h});case "text":return jsx(TextT,{className:h});case "flashcard":return jsx(Cards$1,{className:h});case "photoFrame":return jsx(FrameCorners,{className:h});case "line":return jsx("span",{className:h,children:"\u270F\uFE0F"});default:return jsx(Question,{className:h})}},f=x=>{if(x===0)return;let h=s[x],v=s[x-1];a(Eo({id:h.id,type:h.type,newTimestamp:v.timestamp+1}));},m=x=>{if(x===s.length-1)return;let h=s[x],v=s[x+1];a(Eo({id:h.id,type:h.type,newTimestamp:v.timestamp-1}));},u=x=>{i(true),l(x);},p=()=>{i(false);let x=Date.now();s.forEach((h,v)=>{let g=x-v;a(Eo({id:h.id,type:h.type,newTimestamp:g}));});};return jsxs(Fragment,{children:[jsx("div",{className:"fixed inset-0 z-9998 bg-black/30",onClick:o}),jsxs("div",{className:"fixed top-1/2 left-1/2 z-9999 w-96 -translate-x-1/2 -translate-y-1/2 rounded-lg border border-gray-200 bg-white shadow-2xl",children:[jsxs("div",{className:"flex items-center justify-between border-b border-gray-200 p-4",children:[jsxs("div",{className:"flex items-center gap-2",children:[jsx(Stack,{className:"h-5 w-5 text-gray-700",weight:"bold"}),jsx("h3",{className:"font-semibold text-gray-900",children:"Layers"})]}),jsx("button",{onClick:o,className:"rounded-lg p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600",children:jsx(X$2,{className:"h-5 w-5"})})]}),jsx("div",{className:"max-h-96 overflow-y-auto p-2",children:s.length===0?jsx("div",{className:"p-8 text-center text-sm text-gray-500",children:"No elements on this slide"}):jsx(Reorder.Group,{axis:"y",values:s,onReorder:u,className:"space-y-1",children:s.map((x,h)=>{let v=x.id===e;return jsxs(Reorder.Item,{value:x,onDragEnd:p,className:`flex cursor-grab items-center gap-2 rounded-lg p-2 transition-colors active:cursor-grabbing ${v?"border border-blue-200 bg-blue-50":"border border-transparent hover:bg-gray-50"}`,whileDrag:{scale:1.02,boxShadow:"0 8px 20px rgba(0,0,0,0.15)",backgroundColor:"white",zIndex:50},children:[jsx("div",{className:"text-gray-400",children:jsx(DotsSixVertical,{className:"h-4 w-4",weight:"bold"})}),jsxs("div",{onClick:()=>t(x.id,x.type),className:"flex flex-1 cursor-pointer items-center gap-2",children:[jsx("div",{className:`${v?"text-blue-600":"text-gray-600"}`,children:d(x.type)}),jsx("span",{className:`text-sm ${v?"font-medium text-blue-900":"text-gray-700"}`,children:x.name})]}),jsxs("div",{className:"flex gap-1",children:[jsx("button",{onClick:g=>{g.stopPropagation(),f(h);},disabled:h===0,className:"rounded p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-700 disabled:cursor-not-allowed disabled:opacity-30",title:"Move up (forward)",children:jsx(ArrowUp,{className:"h-4 w-4"})}),jsx("button",{onClick:g=>{g.stopPropagation(),m(h);},disabled:h===s.length-1,className:"rounded p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-700 disabled:cursor-not-allowed disabled:opacity-30",title:"Move down (backward)",children:jsx(ArrowDown,{className:"h-4 w-4"})})]})]},x.id)})})}),jsx("div",{className:"border-t border-gray-200 p-3 text-xs text-gray-500",children:jsx("p",{children:"Drag to reorder \u2022 Top layers appear above bottom layers"})})]})]})};var Od=memo(({multipleChoice:e,handleMcqTransform:o,handleSelect:t,mcqRefs:a,handleDragEnd:r,onContextMenu:n})=>{let s=useSelector(z=>z.toolbar.selectedTool),l=s==="pen"||s==="eraser",[c,i]=useState(new Set),[d,f]=useState(false),[m,u]=useState(null),p=useRef(null);useEffect(()=>{let z=p.current;if(z)return a.current.set(e.id,z),()=>{a.current.delete(e.id);}},[e.id]);let x=new Set(e.data.responseOptions.correctIndex),h=x.size>1,v=z=>{d||i(h?R=>{let q=new Set(R);return q.has(z)?q.delete(z):q.add(z),q}:new Set([z]));},g=()=>{c.size>0&&f(true);},b=()=>{f(false),i(new Set);},y=c.size===x.size&&Array.from(c).every(z=>x.has(z)),C=Array.from(c).filter(z=>x.has(z)),I=h&&C.length>0&&!y,S=()=>y?"\u2713 Correct! Great job! \u{1F389}":I?`\u26A0 Partially correct (${C.length}/${x.size})`:"\u2717 Try again!",w=()=>y?{bg:"#dcfce7",text:"#166534"}:I?{bg:"#fef3c7",text:"#92400e"}:{bg:"#fee2e2",text:"#991b1b"},N=55,U=8,E=24,D=60,F=60,T=h&&!d?25:0,H=e.data.feedbackMode==="practice"?48:0,V=12,te=D+T+(d?F:0),P=e.data.responseOptions.options.length*(N+U),ae=te+P+V+H+E;return jsxs(Group,{ref:p,name:"mcq-element",draggable:!l,listening:!l,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,...l?{}:{onDragEnd:r,onClick:z=>t(e.id),onTap:z=>t(e.id),onContextMenu:z=>{let R=p.current?.getStage()?.getPointerPosition();if(R){let q={x:e.x,y:e.y,width:e.width,height:e.height};if(R.x>=q.x&&R.x<=q.x+q.width&&R.y>=q.y&&R.y<=q.y+q.height){let W=z.evt;n(W,e.id,"mcq");}}}},children:[jsx(Rect,{fill:"white",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:12,height:ae,width:e.width,onTransformEnd:z=>o(e.id,z)}),jsx(Text,{x:E,y:E,text:e.data.question,fontSize:20,fontStyle:"bold",fill:"#111827",width:e.width-E*2,listening:false}),h&&!d&&e.data.feedbackMode==="practice"?jsx(Text,{x:E,y:E+35,text:`Select ${x.size} answers (${c.size}/${x.size} selected)`,fontSize:14,fill:"#6b7280",width:e.width-E*2,listening:false}):null,d&&e.data.feedbackMode==="practice"?jsxs(Fragment,{children:[jsx(Rect,{x:E,y:D+T,width:e.width-E*2,height:F,fill:w().bg,cornerRadius:8}),jsx(Text,{x:E,y:D+T,width:e.width-E*2,height:F,text:S(),fontSize:16,fontStyle:"bold",fill:w().text,align:"center",verticalAlign:"middle",listening:false})]}):null,e.data.responseOptions.options.map((z,R)=>{let q=x.has(R),W=c.has(R),$=te+R*(N+U),ee="#e5e7eb",re="#ffffff";return d&&q?(ee="#22c55e",re="#dcfce7"):d&&W&&!q?(ee="#ef4444",re="#fee2e2"):W&&(ee="#096B76",re="#ecfeff"),jsxs(Group,{children:[jsx(Rect,{x:E,y:$,width:e.width-E*2,height:N,fill:re,stroke:ee,strokeWidth:2,cornerRadius:8,onClick:ie=>{ie.cancelBubble=true,v(R);},onTap:ie=>{ie.cancelBubble=true,v(R);}}),jsx(Rect,{x:E+12,y:$+(N-20)/2,width:20,height:20,fill:W?"#096B76":"white",stroke:W?"#096B76":"#d1d5db",strokeWidth:2,cornerRadius:h?4:10,listening:false}),W&&jsx(Text,{x:E+12,y:$+(N-20)/2,width:20,height:20,text:"\u2713",fontSize:14,fill:"white",align:"center",verticalAlign:"middle",listening:false}),jsx(Text,{x:E+44,y:$,width:e.width-E*2-80,height:N,text:z,fontSize:16,fill:"#111827",verticalAlign:"middle",listening:false}),d&&q&&jsx(Text,{x:e.width-E-30,y:$+(N-24)/2,width:24,height:24,text:"\u2713",fontSize:20,fill:"#22c55e",align:"center",verticalAlign:"middle",listening:false}),d&&W&&!q&&jsx(Text,{x:e.width-E-30,y:$+(N-24)/2,width:24,height:24,text:"\u2717",fontSize:20,fill:"#ef4444",align:"center",verticalAlign:"middle",listening:false})]},R)}),e.data.feedbackMode==="practice"&&jsxs(Group,{y:te+e.data.responseOptions.options.length*(N+U)+12,children:[jsxs(Group,{onMouseDown:z=>{z.cancelBubble=true,u("check");},onMouseUp:z=>{z.cancelBubble=true,u(null),g();},onMouseLeave:z=>{z.cancelBubble=true,u(null);},onTouchStart:z=>{z.cancelBubble=true,u("check");},onTouchEnd:z=>{z.cancelBubble=true,u(null),g();},scaleX:m==="check"?.95:1,scaleY:m==="check"?.95:1,children:[jsx(Rect,{x:E,width:(e.width-E*2-8)/(d?2:1),height:48,fill:c.size===0||d?"#9ca3af":"#096B76",cornerRadius:8,onClick:z=>z.cancelBubble=true,onTap:z=>z.cancelBubble=true}),jsx(Text,{x:E,width:(e.width-E*2-8)/(d?2:1),height:48,text:d?"Submitted":"Check Work",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]}),d&&jsxs(Group,{x:(e.width-E*2)/2+8,onMouseDown:()=>u("reset"),onMouseUp:()=>{u(null),b();},onMouseLeave:()=>u(null),onTouchStart:()=>u("reset"),onTouchEnd:()=>{u(null),b();},scaleX:m==="reset"?.95:1,scaleY:m==="reset"?.95:1,children:[jsx(Rect,{x:E,width:(e.width-E*2-8)/2,height:48,fill:"#ef4444",cornerRadius:8,onClick:z=>z.cancelBubble=true,onTap:z=>z.cancelBubble=true}),jsx(Text,{x:E,width:(e.width-E*2-8)/2,height:48,text:"Reset",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]})]})]})});Od.displayName="MultipleChoice";var Nd=Od;var Yh="#FFFFFF",ii=({multipleChoice:e,onContextMenu:o,handleMcqTransform:t})=>{let a=useDispatch(),r=useSelector(R=>R.toolbar.selectedTool),n=r==="pen"||r==="eraser",[s,l]=useState(false),[c,i]=useState(new Set),[d,f]=useState(false),[m,u]=useState(false),[p,x]=useState(0),h=340,v=100,g=window.innerWidth*.5,b=window.innerHeight*.5,y=h+20,C=v+60,I=g-40,S=b-160,w=useRef(null),N=R=>{a(oa({id:e.id,x:R.target.x(),y:R.target.y()}));},U=R=>{let q=R.target,W=q.x(),$=q.y(),ee=window.innerWidth*.2,ie=W+ee>y&&W<y+I&&$+50>C&&$<C+S;l(ie);},E=(R,q)=>{let W=q.target,$=W.x(),ee=W.y(),re=window.innerWidth*.2,Ge=$+re>y&&$<y+I&&ee+50>C&&ee<C+S;i(Ge?Ie=>new Set(Ie).add(R):Ie=>{let $e=new Set(Ie);return $e.delete(R),$e}),l(false);},D=()=>{f(true);},F=()=>{f(false),i(new Set),x(R=>R+1);},T=new Set(e.data.responseOptions.correctIndex),H=c.size===T.size&&Array.from(c).every(R=>T.has(R)),V=Array.from(c).filter(R=>T.has(R));Array.from(c).filter(R=>!T.has(R));let P=V.length>0&&!H,ae=()=>H?"\u2713 Correct! Great job!":P?`\u26A0 Partially correct (${V.length}/${T.size})`:"\u2717 Try again!",z=()=>H?{bg:"#dcfce7",text:"#166534"}:P?{bg:"#fef3c7",text:"#92400e"}:{bg:"#fee2e2",text:"#991b1b"};return jsxs(Group,{ref:w,name:"mcq-element",width:g,height:b,draggable:!n,listening:!n,...n?{}:{onContextMenu:R=>{R.evt.preventDefault(),o(R.evt,e.id,"mcq");}},children:[jsxs(Group,{x:h,y:v,rotation:e.rotation,onDragEnd:N,children:[jsx(Rect,{fill:"white",stroke:s?"#4CAF50":"#e5e7eb",strokeWidth:s?4:2,cornerRadius:12,height:e.data.feedbackMode==="practice"?b-10:b-50,width:g,shadowColor:s?"#4CAF50":"transparent",shadowBlur:s?20:0,shadowOpacity:.5}),jsx(Text,{x:20,y:20,width:g-40,text:e.data.question,fontSize:20,fontStyle:"bold",fill:"#111827",align:"center",verticalAlign:"middle"}),jsx(Rect,{x:20,y:60,width:I,height:S,fill:"transparent",stroke:s?"#4CAF50":"#075560",strokeWidth:3,dash:[10,10],cornerRadius:8}),d&&jsxs(Fragment,{children:[jsx(Rect,{x:20,y:60,width:I,height:60,fill:z().bg,cornerRadius:8}),jsx(Text,{x:20,y:60,width:I,height:60,text:ae(),fontSize:18,fontStyle:"bold",fill:z().text,align:"center",verticalAlign:"middle"})]}),c.size===0&&!d&&jsx(Text,{x:20,y:60,width:I,height:S-60,text:T.size>1?`Drop ${T.size} Correct Answers Here`:"Drop Here",fontSize:28,fontStyle:"bold",fill:"#075560",align:"center",verticalAlign:"middle"}),c.size>0&&!d&&jsx(Text,{x:20,y:b-120,width:I,text:`${c.size} of ${T.size} answers selected`,fontSize:16,fill:"#6b7280",align:"center"}),e.data.feedbackMode==="practice"?jsxs(Group,{x:20,y:b-90,children:[jsxs(Group,{onMouseDown:()=>{u(true),D();},onMouseUp:()=>u(false),onMouseLeave:()=>u(false),onTouchStart:()=>{u(true),D();},onTouchEnd:()=>u(false),scaleX:m?.95:1,scaleY:m?.95:1,children:[jsx(Rect,{fill:"#075560",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:8,height:40,width:I}),jsx(Text,{text:"Check Work",fontSize:18,fontStyle:"bold",fill:"white",width:I,height:40,align:"center",verticalAlign:"middle",listening:false})]}),d&&jsxs(Group,{y:50,onMouseDown:F,onTouchStart:F,children:[jsx(Rect,{fill:"#dc2626",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:8,height:40,width:I}),jsx(Text,{text:"Reset",fontSize:18,fontStyle:"bold",fill:"white",width:I,height:40,align:"center",verticalAlign:"middle",listening:false})]})]}):null]}),e.data.responseOptions.options.map((R,q)=>{let W=q%2,$=Math.floor(q/2),ee=window.innerWidth*.2,re=50,ie=10,Ge=c.has(q),Ie=T.has(q),$e=d&&Ge,Q="transparent";return $e?Q=Ie?"#4CAF50":"#ef4444":Ge&&(Q="#4CAF50"),jsxs(Group,{x:420+W*(ee+ie),y:v+b+20+$*(re+ie),draggable:!d,onDragMove:U,onDragEnd:Tt=>E(q,Tt),opacity:d&&!Ge?.5:1,children:[jsx(Rect,{width:ee,height:re,fill:"#075560",stroke:Q,strokeWidth:4,cornerRadius:8}),jsx(Text,{width:ee,height:re,text:R,fontSize:18,fontStyle:"bold",fill:Yh,align:"center",verticalAlign:"middle",listening:false}),$e&&jsx(Text,{x:ee-30,y:5,width:25,height:25,text:Ie?"\u2713":"\u2717",fontSize:20,fontStyle:"bold",fill:Ie?"#4CAF50":"#ef4444",align:"center",verticalAlign:"middle",listening:false})]},`${q}-${p}`)})]})};ii.displayName="MultipleChoiceDragAndDrop";var Vd=({multipleChoice:e,handleMcqTransform:o,handleSelect:t,mcqRefs:a,handleDragEnd:r,onContextMenu:n})=>jsx(Fragment,{children:e.map(s=>s.data.responseType==="classic"?jsx(Nd,{multipleChoice:s,handleMcqTransform:o,handleSelect:t,mcqRefs:a,handleDragEnd:l=>r(l,s.id),onContextMenu:n},s.id):jsx(ii,{multipleChoice:s,handleMcqTransform:o,handleSelect:t,mcqRefs:a,onContextMenu:n},s.id))});var qd=memo(({trueFalse:e,handleTrueFalseTransform:o,handleSelect:t,trueFalseRefs:a,onContextMenu:r,handleDragEnd:n})=>{let s=useSelector(V=>V.toolbar.selectedTool),l=s==="pen"||s==="eraser",[c,i]=useState(null),[d,f]=useState(false),[m,u]=useState(null),p=useRef(null);useEffect(()=>{let V=p.current;if(V)return a.current.set(e.id,V),()=>{a.current.delete(e.id);}},[e.id]);let x=()=>{c!==null&&f(true);},h=()=>{f(false),i(null);},v=e.data.responseOptions.correctAnswer,g=c===v,b=V=>{d||i(V);},y=()=>g?"\u2713 Correct! Great job! \u{1F389}":"\u2717 Try again!",C=()=>g?{bg:"#dcfce7",text:"#166534"}:{bg:"#fee2e2",text:"#991b1b"},I=70,S=12,w=24,N=60,U=60,E=e.data.feedbackMode==="practice"?48:0,D=12,F=N+(d?U:0),T=2*(I+S),H=F+T+D+E+w;return jsxs(Group,{ref:p,name:"trueFalse-element",draggable:!l,listening:!l,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,...l?{}:{onDragEnd:V=>n(V,e.id),onClick:V=>t(e.id),onTap:V=>t(e.id),onContextMenu:V=>{let te=p.current?.getStage()?.getPointerPosition();if(te){let P={x:e.x,y:e.y,width:e.width,height:e.height};if(te.x>=P.x&&te.x<=P.x+P.width&&te.y>=P.y&&te.y<=P.y+P.height){let ae=V.evt;r(ae,e.id,"trueFalse");}}}},children:[jsx(Rect,{fill:"white",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:12,height:H,width:e.width,onTransformEnd:V=>o(e.id,V)}),jsx(Text,{x:w,y:w,text:e.data.question,fontSize:20,fontStyle:"bold",fill:"#111827",width:e.width-w*2,listening:false}),d&&e.data.feedbackMode==="practice"?jsxs(Fragment,{children:[jsx(Rect,{x:w,y:N,width:e.width-w*2,height:U,fill:C().bg,cornerRadius:8}),jsx(Text,{x:w,y:N,width:e.width-w*2,height:U,text:y(),fontSize:16,fontStyle:"bold",fill:C().text,align:"center",verticalAlign:"middle",listening:false})]}):null,[{label:"True",value:true},{label:"False",value:false}].map((V,te)=>{let P=v===V.value,ae=c===V.value,z=F+te*(I+S),R="#e5e7eb",q="#ffffff";return d&&P?(R="#22c55e",q="#dcfce7"):d&&ae&&!P?(R="#ef4444",q="#fee2e2"):ae&&(R="#096B76",q="#ecfeff"),jsxs(Group,{children:[jsx(Rect,{x:w,y:z,width:e.width-w*2,height:I,fill:q,stroke:R,strokeWidth:2,cornerRadius:8,onClick:W=>{W.cancelBubble=true,b(V.value);},onTap:W=>{W.cancelBubble=true,b(V.value);}}),jsx(Rect,{x:w+12,y:z+(I-24)/2,width:24,height:24,fill:ae?"#096B76":"white",stroke:ae?"#096B76":"#d1d5db",strokeWidth:2,cornerRadius:12,listening:false}),ae&&jsx(Rect,{x:w+12+6,y:z+(I-24)/2+6,width:12,height:12,fill:"white",cornerRadius:6,listening:false}),jsx(Text,{x:w+48,y:z,width:e.width-w*2-80,height:I,text:V.label,fontSize:18,fontStyle:"bold",fill:"#111827",verticalAlign:"middle",listening:false}),d&&P&&jsx(Text,{x:e.width-w-30,y:z+(I-24)/2,width:24,height:24,text:"\u2713",fontSize:20,fill:"#22c55e",align:"center",verticalAlign:"middle",listening:false}),d&&ae&&!P&&jsx(Text,{x:e.width-w-30,y:z+(I-24)/2,width:24,height:24,text:"\u2717",fontSize:20,fill:"#ef4444",align:"center",verticalAlign:"middle",listening:false})]},V.label)}),e.data.feedbackMode==="practice"&&jsxs(Group,{y:F+2*(I+S)+12,children:[jsxs(Group,{onMouseDown:V=>{V.cancelBubble=true,u("check");},onMouseUp:V=>{V.cancelBubble=true,u(null),x();},onMouseLeave:V=>{V.cancelBubble=true,u(null);},onTouchStart:V=>{V.cancelBubble=true,u("check");},onTouchEnd:V=>{V.cancelBubble=true,u(null),x();},scaleX:m==="check"?.95:1,scaleY:m==="check"?.95:1,children:[jsx(Rect,{x:w,width:(e.width-w*2-8)/(d?2:1),height:48,fill:c===null||d?"#9ca3af":"#096B76",cornerRadius:8,onClick:V=>V.cancelBubble=true,onTap:V=>V.cancelBubble=true}),jsx(Text,{x:w,width:(e.width-w*2-8)/(d?2:1),height:48,text:d?"Submitted":"Check Work",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]}),d&&jsxs(Group,{x:(e.width-w*2)/2+8,onMouseDown:()=>u("reset"),onMouseUp:()=>{u(null),h();},onMouseLeave:()=>u(null),onTouchStart:()=>u("reset"),onTouchEnd:()=>{u(null),h();},scaleX:m==="reset"?.95:1,scaleY:m==="reset"?.95:1,children:[jsx(Rect,{x:w,width:(e.width-w*2-8)/2,height:48,fill:"#ef4444",cornerRadius:8,onClick:V=>V.cancelBubble=true,onTap:V=>V.cancelBubble=true}),jsx(Text,{x:w,width:(e.width-w*2-8)/2,height:48,text:"Reset",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]})]})]})});qd.displayName="TrueFalse";var Hd=qd;var ig="#FFFFFF",ui=({trueFalse:e,onContextMenu:o,handleTrueFalseTransform:t})=>{let a=useDispatch(),r=useSelector(P=>P.toolbar.selectedTool),n=r==="pen"||r==="eraser",[s,l]=useState(false),[c,i]=useState(null),[d,f]=useState(false),[m,u]=useState(false),[p,x]=useState(0),h=340,v=100,g=window.innerWidth*.5,b=window.innerHeight*.5,y=h+20,C=v+60,I=g-40,S=b-160,w=useRef(null),N=P=>{a(ra({id:e.id,x:P.target.x(),y:P.target.y()}));},U=P=>{let ae=P.target,z=ae.x(),R=ae.y(),q=window.innerWidth*.2,$=z+q>y&&z<y+I&&R+50>C&&R<C+S;l($);},E=(P,ae)=>{let z=ae.target,R=z.x(),q=z.y(),W=window.innerWidth*.2,ee=R+W>y&&R<y+I&&q+50>C&&q<C+S;i(ee?P:null),l(false);},D=()=>{f(true);},F=()=>{f(false),i(null),x(P=>P+1);},T=e.data.responseOptions.correctAnswer,H=c===T,V=()=>H?"\u2713 Correct! Great job!":"\u2717 Try again!",te=()=>H?{bg:"#dcfce7",text:"#166534"}:{bg:"#fee2e2",text:"#991b1b"};return jsxs(Group,{ref:w,name:"trueFalse-element",width:g,height:b,draggable:!n,listening:!n,...n?{}:{onContextMenu:P=>{P.evt.preventDefault(),o(P.evt,e.id,"trueFalse");}},children:[jsxs(Group,{x:h,y:v,rotation:e.rotation,onDragEnd:N,children:[jsx(Rect,{fill:"white",stroke:s?"#4CAF50":"#e5e7eb",strokeWidth:s?4:2,cornerRadius:12,height:e.data.feedbackMode==="practice"?b+10:b-50,width:g,shadowColor:s?"#4CAF50":"transparent",shadowBlur:s?20:0,shadowOpacity:.5}),jsx(Text,{x:20,y:20,width:g-40,text:e.data.question,fontSize:20,fontStyle:"bold",fill:"#111827",align:"center",verticalAlign:"middle"}),jsx(Rect,{x:20,y:60,width:I,height:S,fill:"transparent",stroke:s?"#4CAF50":"#075560",strokeWidth:3,dash:[10,10],cornerRadius:8}),d&&jsxs(Fragment,{children:[jsx(Rect,{x:20,y:60,width:I,height:60,fill:te().bg,cornerRadius:8}),jsx(Text,{x:20,y:60,width:I,height:60,text:V(),fontSize:18,fontStyle:"bold",fill:te().text,align:"center",verticalAlign:"middle"})]}),c===null&&!d&&jsx(Text,{x:20,y:60,width:I,height:S-60,text:"Drop Your Answer Here",fontSize:28,fontStyle:"bold",fill:"#075560",align:"center",verticalAlign:"middle"}),c!==null&&!d&&jsxs(Fragment,{children:[jsx(Text,{x:20,y:60+(S-60)/2-25,width:I,text:c?"True":"False",fontSize:32,fontStyle:"bold",fill:"#075560",align:"center"}),jsx(Text,{x:20,y:b-120,width:I,text:"Answer selected",fontSize:16,fill:"#6b7280",align:"center"})]}),e.data.feedbackMode==="practice"?jsxs(Group,{x:20,y:b-90,children:[jsxs(Group,{onMouseDown:()=>{c!==null&&(u(true),D());},onMouseUp:()=>u(false),onMouseLeave:()=>u(false),onTouchStart:()=>{c!==null&&(u(true),D());},onTouchEnd:()=>u(false),scaleX:m?.95:1,scaleY:m?.95:1,children:[jsx(Rect,{fill:c===null?"#9ca3af":"#075560",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:8,height:40,width:I}),jsx(Text,{text:"Check Work",fontSize:18,fontStyle:"bold",fill:"white",width:I,height:40,align:"center",verticalAlign:"middle",listening:false})]}),d&&jsxs(Group,{y:50,onMouseDown:F,onTouchStart:F,children:[jsx(Rect,{fill:"#dc2626",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:8,height:40,width:I}),jsx(Text,{text:"Reset",fontSize:18,fontStyle:"bold",fill:"white",width:I,height:40,align:"center",verticalAlign:"middle",listening:false})]})]}):null]}),[{value:true,label:"True"},{value:false,label:"False"}].map((P,ae)=>{let z=window.innerWidth*.2,R=50,q=10,W=c===P.value,$=T===P.value,ee=d&&W,re="transparent";return ee?re=$?"#4CAF50":"#ef4444":W&&(re="#4CAF50"),jsxs(Group,{x:420+ae*(z+q),y:v+b+20,draggable:!d,onDragMove:U,onDragEnd:ie=>E(P.value,ie),opacity:d&&!W?.5:1,children:[jsx(Rect,{width:z,height:R,fill:"#075560",stroke:re,strokeWidth:4,cornerRadius:8}),jsx(Text,{width:z,height:R,text:P.label,fontSize:18,fontStyle:"bold",fill:ig,align:"center",verticalAlign:"middle",listening:false}),ee&&jsx(Text,{x:z-30,y:5,width:25,height:25,text:$?"\u2713":"\u2717",fontSize:20,fontStyle:"bold",fill:$?"#4CAF50":"#ef4444",align:"center",verticalAlign:"middle",listening:false})]},`${P.value}-${p}`)})]})};ui.displayName="TrueFalseDragAndDrop";var zd=({trueFalses:e,handleTrueFalseTransform:o,handleSelect:t,trueFalseRefs:a,handleDragEnd:r,onContextMenu:n})=>jsx(Fragment,{children:e.map(s=>s.data.responseType==="classic"?jsx(Hd,{trueFalse:s,handleTrueFalseTransform:o,handleSelect:t,trueFalseRefs:a,onContextMenu:n,handleDragEnd:r},s.id):jsx(ui,{trueFalse:s,handleTrueFalseTransform:o,handleSelect:t,trueFalseRefs:a,onContextMenu:n},s.id))});var ca=new WeakMap,so=new WeakMap,Jo={current:[]},fi=false,Yo=0,$o=new Set,ds=new Map;function Wd(e){let o=Array.from(e).sort((t,a)=>t instanceof Dt&&t.options.deps.includes(a)?1:a instanceof Dt&&a.options.deps.includes(t)?-1:0);for(let t of o){if(Jo.current.includes(t))continue;Jo.current.push(t),t.recompute();let a=so.get(t);if(a)for(let r of a){let n=ca.get(r);n&&Wd(n);}}}function dg(e){let o={prevVal:e.prevState,currentVal:e.state};for(let t of e.listeners)t(o);}function ug(e){let o={prevVal:e.prevState,currentVal:e.state};for(let t of e.listeners)t(o);}function us(e){if(Yo>0&&!ds.has(e)&&ds.set(e,e.prevState),$o.add(e),!(Yo>0)&&!fi)try{for(fi=!0;$o.size>0;){let o=Array.from($o);$o.clear();for(let t of o){let a=ds.get(t)??t.prevState;t.prevState=a,dg(t);}for(let t of o){let a=ca.get(t);a&&(Jo.current.push(t),Wd(a));}for(let t of o){let a=ca.get(t);if(a)for(let r of a)ug(r);}}}finally{fi=false,Jo.current=[],ds.clear();}}function ft(e){Yo++;try{e();}finally{if(Yo--,Yo===0){let o=$o.values().next().value;o&&us(o);}}}function Gd(e){return typeof e=="function"}var Wt=class{constructor(o,t){this.listeners=new Set,this.subscribe=a=>{var r,n;this.listeners.add(a);let s=(n=(r=this.options)==null?void 0:r.onSubscribe)==null?void 0:n.call(r,a,this);return ()=>{this.listeners.delete(a),s?.();}},this.prevState=o,this.state=o,this.options=t;}setState(o){var t,a,r;this.prevState=this.state,(t=this.options)!=null&&t.updateFn?this.state=this.options.updateFn(this.prevState)(o):Gd(o)?this.state=o(this.prevState):this.state=o,(r=(a=this.options)==null?void 0:a.onUpdate)==null||r.call(a),us(this);}};var Dt=class e{constructor(o){this.listeners=new Set,this._subscriptions=[],this.lastSeenDepValues=[],this.getDepVals=()=>{let t=this.options.deps.length,a=new Array(t),r=new Array(t);for(let n=0;n<t;n++){let s=this.options.deps[n];a[n]=s.prevState,r[n]=s.state;}return this.lastSeenDepValues=r,{prevDepVals:a,currDepVals:r,prevVal:this.prevState??void 0}},this.recompute=()=>{var t,a;this.prevState=this.state;let r=this.getDepVals();this.state=this.options.fn(r),(a=(t=this.options).onUpdate)==null||a.call(t);},this.checkIfRecalculationNeededDeeply=()=>{for(let n of this.options.deps)n instanceof e&&n.checkIfRecalculationNeededDeeply();let t=false,a=this.lastSeenDepValues,{currDepVals:r}=this.getDepVals();for(let n=0;n<r.length;n++)if(r[n]!==a[n]){t=true;break}t&&this.recompute();},this.mount=()=>(this.registerOnGraph(),this.checkIfRecalculationNeededDeeply(),()=>{this.unregisterFromGraph();for(let t of this._subscriptions)t();}),this.subscribe=t=>{var a,r;this.listeners.add(t);let n=(r=(a=this.options).onSubscribe)==null?void 0:r.call(a,t,this);return ()=>{this.listeners.delete(t),n?.();}},this.options=o,this.state=o.fn({prevDepVals:void 0,prevVal:void 0,currDepVals:this.getDepVals().currDepVals});}registerOnGraph(o=this.options.deps){for(let t of o)if(t instanceof e)t.registerOnGraph(),this.registerOnGraph(t.options.deps);else if(t instanceof Wt){let a=ca.get(t);a||(a=new Set,ca.set(t,a)),a.add(this);let r=so.get(this);r||(r=new Set,so.set(this,r)),r.add(t);}}unregisterFromGraph(o=this.options.deps){for(let t of o)if(t instanceof e)this.unregisterFromGraph(t.options.deps);else if(t instanceof Wt){let a=ca.get(t);a&&a.delete(this);let r=so.get(this);r&&r.delete(t);}}};function cg(e){return typeof e=="function"}function mi(e,...o){return cg(e)?e(...o):e}function Kd(e){return e||(typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"")}var fa,rt,Ze,Zo,ma,Oa,$t,no,Qo,cs,er,io,Na=class{constructor({pluginId:o,debug:t=false,enabled:a=true,reconnectEveryMs:r=1e3}){ke(this,fa,true);ke(this,rt);ke(this,Ze);ke(this,Zo);ke(this,ma);ke(this,Oa);ke(this,$t);ke(this,no);ke(this,Qo,0);ke(this,cs,5);ke(this,er,()=>{this.debugLog("Connected to event bus"),Se(this,Oa,true),this.debugLog("Emitting queued events",j(this,ma)),j(this,ma).forEach(o=>this.emitEventToBus(o)),Se(this,ma,[]),this.stopConnectLoop(),j(this,Ze).call(this).removeEventListener("tanstack-connect-success",j(this,er));});ke(this,io,()=>{if(j(this,Ze).call(this).addEventListener("tanstack-connect-success",j(this,er)),j(this,Qo)<j(this,cs)){wl(this,Qo)._++,this.dispatchCustomEvent("tanstack-connect",{});return}j(this,Ze).call(this).removeEventListener("tanstack-connect",j(this,io)),this.debugLog("Max retries reached, giving up on connection"),this.stopConnectLoop();});Se(this,rt,o),Se(this,fa,a),Se(this,Ze,this.getGlobalTarget),Se(this,Zo,t),this.debugLog(" Initializing event subscription for plugin",j(this,rt)),Se(this,ma,[]),Se(this,Oa,false),Se(this,$t,null),Se(this,no,r);}startConnectLoop(){j(this,$t)!==null||j(this,Oa)||(this.debugLog(`Starting connect loop (every ${j(this,no)}ms)`),Se(this,$t,setInterval(j(this,io),j(this,no))));}stopConnectLoop(){j(this,$t)!==null&&(clearInterval(j(this,$t)),Se(this,$t,null),this.debugLog("Stopped connect loop"));}debugLog(...o){j(this,Zo)&&console.log(`\u{1F334} [tanstack-devtools:${j(this,rt)}-plugin]`,...o);}getGlobalTarget(){if(typeof globalThis<"u"&&globalThis.__TANSTACK_EVENT_TARGET__)return this.debugLog("Using global event target"),globalThis.__TANSTACK_EVENT_TARGET__;if(typeof window<"u"&&typeof window.addEventListener<"u")return this.debugLog("Using window as event target"),window;let o=typeof EventTarget<"u"?new EventTarget:void 0;return typeof o>"u"||typeof o.addEventListener>"u"?(this.debugLog("No event mechanism available, running in non-web environment"),{addEventListener:()=>{},removeEventListener:()=>{},dispatchEvent:()=>false}):(this.debugLog("Using new EventTarget as fallback"),o)}getPluginId(){return j(this,rt)}dispatchCustomEventShim(o,t){try{let a=new Event(o,{detail:t});j(this,Ze).call(this).dispatchEvent(a);}catch{this.debugLog("Failed to dispatch shim event");}}dispatchCustomEvent(o,t){try{j(this,Ze).call(this).dispatchEvent(new CustomEvent(o,{detail:t}));}catch{this.dispatchCustomEventShim(o,t);}}emitEventToBus(o){this.debugLog("Emitting event to client bus",o),this.dispatchCustomEvent("tanstack-dispatch-event",o);}emit(o,t){if(!j(this,fa)){this.debugLog("Event bus client is disabled, not emitting event",o,t);return}if(!j(this,Oa)){this.debugLog("Bus not available, will be pushed as soon as connected"),j(this,ma).push({type:`${j(this,rt)}:${o}`,payload:t,pluginId:j(this,rt)}),typeof CustomEvent<"u"&&(j(this,io).call(this),this.startConnectLoop());return}return this.emitEventToBus({type:`${j(this,rt)}:${o}`,payload:t,pluginId:j(this,rt)})}on(o,t){let a=`${j(this,rt)}:${o}`;if(!j(this,fa))return this.debugLog("Event bus client is disabled, not registering event",a),()=>{};let r=n=>{this.debugLog("Received event from bus",n.detail),t(n.detail);};return j(this,Ze).call(this).addEventListener(a,r),this.debugLog("Registered event to bus",a),()=>{j(this,Ze).call(this).removeEventListener(a,r);}}onAll(o){if(!j(this,fa))return this.debugLog("Event bus client is disabled, not registering event"),()=>{};let t=a=>{let r=a.detail;o(r);};return j(this,Ze).call(this).addEventListener("tanstack-devtools-global",t),()=>j(this,Ze).call(this).removeEventListener("tanstack-devtools-global",t)}onAllPluginEvents(o){if(!j(this,fa))return this.debugLog("Event bus client is disabled, not registering event"),()=>{};let t=a=>{let r=a.detail;j(this,rt)&&r.pluginId!==j(this,rt)||o(r);};return j(this,Ze).call(this).addEventListener("tanstack-devtools-global",t),()=>j(this,Ze).call(this).removeEventListener("tanstack-devtools-global",t)}};fa=new WeakMap,rt=new WeakMap,Ze=new WeakMap,Zo=new WeakMap,ma=new WeakMap,Oa=new WeakMap,$t=new WeakMap,no=new WeakMap,Qo=new WeakMap,cs=new WeakMap,er=new WeakMap,io=new WeakMap;var pi=class extends Na{constructor(o){super({pluginId:"pacer",debug:o?.debug});}},jd=(e,o)=>{hi.emit(e,o);},hi=new pi;function _d(){return {executionCount:0,isPending:false,lastArgs:void 0,lastExecutionTime:0,nextExecutionTime:0,status:"idle",maybeExecuteCount:0}}var fg={enabled:true,leading:true,trailing:true,wait:0},pa,mt,Va,qa,Ha,lo,fs=class{constructor(o,t){ke(this,pa);ke(this,mt);ke(this,Va);ke(this,qa);ke(this,Ha);ke(this,lo);this.fn=o,this.store=new Wt(_d()),this.setOptions=a=>{this.options={...this.options,...a},j(this,Va).call(this)||this.cancel();},Se(this,mt,a=>{this.store.setState(r=>{let n={...r,...a},{isPending:s}=n;return {...n,status:j(this,Va).call(this)?s?"pending":"idle":"disabled"}}),jd("Throttler",this);}),Se(this,Va,()=>!!mi(this.options.enabled,this)),Se(this,qa,()=>mi(this.options.wait,this)),this.maybeExecute=(...a)=>{j(this,mt).call(this,{maybeExecuteCount:this.store.state.maybeExecuteCount+1});let r=Date.now(),n=r-this.store.state.lastExecutionTime,s=j(this,qa).call(this);if(this.options.leading&&n>=s)j(this,Ha).call(this,...a);else if(j(this,mt).call(this,{lastArgs:a}),!j(this,pa)&&this.options.trailing){let l=this.store.state.lastExecutionTime?r-this.store.state.lastExecutionTime:0,c=s-l;j(this,mt).call(this,{isPending:true}),Se(this,pa,setTimeout(()=>{let{lastArgs:i}=this.store.state;i!==void 0&&j(this,Ha).call(this,...i);},c));}},Se(this,Ha,(...a)=>{if(!j(this,Va).call(this))return;this.fn(...a);let r=Date.now(),n=r+j(this,qa).call(this);j(this,lo).call(this),j(this,mt).call(this,{executionCount:this.store.state.executionCount+1,lastExecutionTime:r,nextExecutionTime:n,isPending:false,lastArgs:void 0}),this.options.onExecute?.(a,this),setTimeout(()=>{this.store.state.isPending||j(this,mt).call(this,{nextExecutionTime:void 0});},j(this,qa).call(this));}),this.flush=()=>{this.store.state.isPending&&this.store.state.lastArgs&&j(this,Ha).call(this,...this.store.state.lastArgs);},Se(this,lo,()=>{j(this,pa)&&(clearTimeout(j(this,pa)),Se(this,pa,void 0));}),this.cancel=()=>{j(this,lo).call(this),j(this,mt).call(this,{lastArgs:void 0,isPending:false});},this.reset=()=>{j(this,mt).call(this,_d());},this.key=Kd(t.key),this.options={...fg,...t},j(this,mt).call(this,this.options.initialState??{}),hi.on("d-Throttler",a=>{a.payload.key===this.key&&(j(this,mt).call(this,a.payload.store.state),this.setOptions(a.payload.options));});}};pa=new WeakMap,mt=new WeakMap,Va=new WeakMap,qa=new WeakMap,Ha=new WeakMap,lo=new WeakMap;function gi(e,o){return new fs(e,o).maybeExecute}function ha(e,o){return typeof e=="function"?e(o):e}function ga(e,o){return gs(o).reduce((a,r)=>{if(a===null)return null;if(typeof a<"u")return a[r]},e)}function uo(e,o,t){let a=gs(o);function r(n){if(!a.length)return ha(t,n);let s=a.shift();if(typeof s=="string"||typeof s=="number"&&!Array.isArray(n))return typeof n=="object"?(n===null&&(n={}),{...n,[s]:r(n[s])}):{[s]:r()};if(Array.isArray(n)&&typeof s=="number"){let l=n.slice(0,s);return [...l.length?l:new Array(s),r(n[s]),...n.slice(s+1)]}return [...new Array(s),r()]}return r(e)}function bi(e,o){let t=gs(o);function a(r){if(!r)return;if(t.length===1){let s=t[0];if(Array.isArray(r)&&typeof s=="number")return r.filter((i,d)=>d!==s);let{[s]:l,...c}=r;return c}let n=t.shift();if(typeof n=="string"&&typeof r=="object")return {...r,[n]:a(r[n])};if(typeof n=="number"&&Array.isArray(r)){if(n>=r.length)return r;let s=r.slice(0,n);return [...s.length?s:new Array(n),a(r[n]),...r.slice(n+1)]}throw new Error("It seems we have created an infinite loop in deleteBy. ")}return a(e)}var mg=/^(\d+)$/gm,pg=/\.(\d+)(?=\.)/gm,hg=/^(\d+)\./gm,gg=/\.(\d+$)/gm,xg=/\.{2,}/gm,xi="__int__",ms=`${xi}$1`;function gs(e){if(Array.isArray(e))return [...e];if(typeof e!="string")throw new Error("Path must be a string.");return e.replace(/(^\[)|]/gm,"").replace(/\[/g,".").replace(mg,ms).replace(pg,`.${ms}.`).replace(hg,`${ms}.`).replace(gg,`.${ms}`).replace(xg,".").split(".").map(o=>{if(o.startsWith(xi)){let t=o.substring(xi.length),a=parseInt(t,10);return String(a)===t?a:t}return o})}function vi(e){return !(Array.isArray(e)&&e.length===0)}function co(e,o){let t=a=>a.validators.filter(Boolean).map(r=>({cause:r.cause,validate:r.fn}));return o.validationLogic({form:o.form,validators:o.validators,event:{type:e,async:false},runValidation:t})}function fo(e,o){let{asyncDebounceMs:t}=o,{onBlurAsyncDebounceMs:a,onChangeAsyncDebounceMs:r,onDynamicAsyncDebounceMs:n}=o.validators||{},s=t??0,l=c=>c.validators.filter(Boolean).map(i=>{let d=i?.cause||e,f=s;switch(d){case "change":f=r??s;break;case "blur":f=a??s;break;case "dynamic":f=n??s;break;case "submit":f=0;break}return e==="submit"&&(f=0),{cause:d,validate:i.fn,debounceMs:f}});return o.validationLogic({form:o.form,validators:o.validators,event:{type:e,async:true},runValidation:l})}var tr=e=>!!e&&typeof e=="object"&&"fields"in e;function xa(e,o){if(Object.is(e,o))return true;if(typeof e!="object"||e===null||typeof o!="object"||o===null)return false;if(e instanceof Date&&o instanceof Date)return e.getTime()===o.getTime();if(e instanceof Map&&o instanceof Map){if(e.size!==o.size)return false;for(let[r,n]of e)if(!o.has(r)||!Object.is(n,o.get(r)))return false;return true}if(e instanceof Set&&o instanceof Set){if(e.size!==o.size)return false;for(let r of e)if(!o.has(r))return false;return true}let t=Object.keys(e),a=Object.keys(o);if(t.length!==a.length)return false;for(let r of t)if(!a.includes(r)||!xa(e[r],o[r]))return false;return true}var xs=({newFormValidatorError:e,isPreviousErrorFromFormValidator:o,previousErrorValue:t})=>e?{newErrorValue:e,newSource:"form"}:o?{newErrorValue:void 0,newSource:void 0}:t?{newErrorValue:t,newSource:"field"}:{newErrorValue:void 0,newSource:void 0},bs=({formLevelError:e,fieldLevelError:o})=>o?{newErrorValue:o,newSource:"field"}:e?{newErrorValue:e,newSource:"form"}:{newErrorValue:void 0,newSource:void 0};function ze(e,o){return e==null?o:{...e,...o}}var Ua=256,hs=[],ps;for(;Ua--;)hs[Ua]=(Ua+256).toString(16).substring(1);function yi(){let e=0,o,t="";if(!ps||Ua+16>256){for(ps=new Array(256),e=256;e--;)ps[e]=256*Math.random()|0;e=0,Ua=0;}for(;e<16;e++)o=ps[Ua+e],e===6?t+=hs[o&15|64]:e===8?t+=hs[o&63|128]:t+=hs[o],e&1&&e>1&&e<11&&(t+="-");return Ua++,t}var ba=e=>{if(!e.validators)return e.runValidation({validators:[],form:e.form});let o=e.event.async,t=o?void 0:{fn:e.validators.onMount,cause:"mount"},a={fn:o?e.validators.onChangeAsync:e.validators.onChange,cause:"change"},r={fn:o?e.validators.onBlurAsync:e.validators.onBlur,cause:"blur"},n={fn:o?e.validators.onSubmitAsync:e.validators.onSubmit,cause:"submit"},s=o?void 0:{fn:()=>{},cause:"server"};switch(e.event.type){case "mount":return e.runValidation({validators:[t],form:e.form});case "submit":return e.runValidation({validators:[a,r,n,s],form:e.form});case "server":return e.runValidation({validators:[],form:e.form});case "blur":return e.runValidation({validators:[r,s],form:e.form});case "change":return e.runValidation({validators:[a,s],form:e.form});default:throw new Error(`Unknown validation event type: ${e.event.type}`)}};function bg(e,o){let t=new Map;for(let a of e){let r=a.path??[],n=o,s="";for(let l=0;l<r.length;l++){let c=r[l];if(c===void 0)continue;let i=typeof c=="object"?c.key:c,d=Number(i);Array.isArray(n)&&!Number.isNaN(d)?s+=`[${d}]`:s+=(l>0?".":"")+String(i),typeof n=="object"&&n!==null?n=n[i]:n=void 0;}t.set(s,(t.get(s)??[]).concat(a));}return Object.fromEntries(t)}var Xd=(e,o)=>{let t=bg(e,o);return {form:t,fields:t}},va={validate({value:e,validationSource:o},t){let a=t["~standard"].validate(e);if(a instanceof Promise)throw new Error("async function passed to sync validator");if(a.issues)return o==="field"?a.issues:Xd(a.issues,e)},async validateAsync({value:e,validationSource:o},t){let a=await t["~standard"].validate(e);if(a.issues)return o==="field"?a.issues:Xd(a.issues,e)}},vs=e=>!!e&&"~standard"in e;var mo={isValidating:false,isTouched:false,isBlurred:false,isDirty:false,isPristine:true,isValid:true,isDefaultValue:true,errors:[],errorMap:{},errorSourceMap:{}};function ar(e){function o(f,m,u,p){let x=a(f,m,u,p);({insert:()=>l(x,f,m),remove:()=>c(x),swap:()=>p!==void 0&&d(x,f,m,p),move:()=>p!==void 0&&i(x,f,m,p)})[u]();}function t(f,m){return `${f}[${m}]`}function a(f,m,u,p){let x=[t(f,m)];if(u==="swap")x.push(t(f,p));else if(u==="move"){let[h,v]=[Math.min(m,p),Math.max(m,p)];for(let g=h;g<=v;g++)x.push(t(f,g));}else {let h=e.getFieldValue(f),v=Array.isArray(h)?h.length:0;for(let g=m+1;g<v;g++)x.push(t(f,g));}return Object.keys(e.fieldInfo).filter(h=>x.some(v=>h.startsWith(v)))}function r(f,m){return f.replace(/\[(\d+)\]/,(u,p)=>{let x=parseInt(p,10);return `[${m==="up"?x+1:Math.max(0,x-1)}]`})}function n(f,m){(m==="up"?f:[...f].reverse()).forEach(p=>{let x=r(p.toString(),m),h=e.getFieldMeta(x);h?e.setFieldMeta(p,h):e.setFieldMeta(p,s());});}let s=()=>mo,l=(f,m,u)=>{n(f,"down"),f.forEach(p=>{p.toString().startsWith(t(m,u))&&e.setFieldMeta(p,s());});},c=f=>{n(f,"up");},i=(f,m,u,p)=>{let x=new Map(Object.keys(e.fieldInfo).filter(h=>h.startsWith(t(m,u))).map(h=>[h,e.getFieldMeta(h)]));n(f,u<p?"up":"down"),Object.keys(e.fieldInfo).filter(h=>h.startsWith(t(m,p))).forEach(h=>{let v=h.replace(t(m,p),t(m,u)),g=x.get(v);g&&e.setFieldMeta(h,g);});},d=(f,m,u,p)=>{f.forEach(x=>{if(!x.toString().startsWith(t(m,u)))return;let h=x.toString().replace(t(m,u),t(m,p)),[v,g]=[e.getFieldMeta(x),e.getFieldMeta(h)];v&&e.setFieldMeta(h,v),g&&e.setFieldMeta(x,g);});};return {handleArrayFieldMetaShift:o}}var wi=class extends Na{constructor(){super({pluginId:"form-devtools"});}},pt=new wi;function Li(e){return {values:e.values??{},errorMap:e.errorMap??{},fieldMetaBase:e.fieldMetaBase??{},isSubmitted:e.isSubmitted??false,isSubmitting:e.isSubmitting??false,isValidating:e.isValidating??false,submissionAttempts:e.submissionAttempts??0,isSubmitSuccessful:e.isSubmitSuccessful??false,validationMetaMap:e.validationMetaMap??{onChange:void 0,onBlur:void 0,onSubmit:void 0,onMount:void 0,onServer:void 0,onDynamic:void 0}}}var rr=class{constructor(o){this.options={},this.fieldInfo={},this.prevTransformArray=[],this.mount=()=>{let a=this.fieldMetaDerived.mount(),r=this.store.mount(),n=()=>{a(),r(),pt.emit("form-unmounted",{id:this._formId});};this.options.listeners?.onMount?.({formApi:this});let{onMount:s}=this.options.validators||{};return pt.emit("form-api",{id:this._formId,state:this.store.state,options:this.options}),s&&this.validateSync("mount"),n},this.update=a=>{if(!a)return;let r=this.options;this.options=a;let n=!!a.transform?.deps?.some((c,i)=>c!==this.prevTransformArray[i]),s=a.defaultValues&&!xa(a.defaultValues,r.defaultValues)&&!this.state.isTouched,l=!xa(a.defaultState,r.defaultState)&&!this.state.isTouched;!s&&!l&&!n||(ft(()=>{this.baseStore.setState(()=>Li(Object.assign({},this.state,l?a.defaultState:{},s?{values:a.defaultValues}:{},n?{_force_re_eval:!this.state._force_re_eval}:{})));}),pt.emit("form-api",{id:this._formId,state:this.store.state,options:this.options}));},this.reset=(a,r)=>{let{fieldMeta:n}=this.state,s=this.resetFieldMeta(n);a&&!r?.keepDefaultValues&&(this.options={...this.options,defaultValues:a}),this.baseStore.setState(()=>Li({...this.options.defaultState,values:a??this.options.defaultValues??this.options.defaultState?.values,fieldMetaBase:s}));},this.validateAllFields=async a=>{let r=[];return ft(()=>{Object.values(this.fieldInfo).forEach(s=>{if(!s.instance)return;let l=s.instance;r.push(Promise.resolve().then(()=>l.validate(a,{skipFormValidation:!0}))),s.instance.state.meta.isTouched||s.instance.setMeta(c=>({...c,isTouched:!0}));});}),(await Promise.all(r)).flat()},this.validateArrayFieldsStartingFrom=async(a,r,n)=>{let s=this.getFieldValue(a),l=Array.isArray(s)?Math.max(s.length-1,0):null,c=[`${a}[${r}]`];for(let m=r+1;m<=(l??0);m++)c.push(`${a}[${m}]`);let i=Object.keys(this.fieldInfo).filter(m=>c.some(u=>m.startsWith(u))),d=[];return ft(()=>{i.forEach(m=>{d.push(Promise.resolve().then(()=>this.validateField(m,n)));});}),(await Promise.all(d)).flat()},this.validateField=(a,r)=>{let n=this.fieldInfo[a]?.instance;return n?(n.state.meta.isTouched||n.setMeta(s=>({...s,isTouched:true})),n.validate(r)):[]},this.validateSync=a=>{let r=co(a,{...this.options,form:this,validationLogic:this.options.validationLogic||ba}),n=false,s={};return ft(()=>{for(let i of r){if(!i.validate)continue;let d=this.runValidator({validate:i.validate,value:{value:this.state.values,formApi:this,validationSource:"form"},type:"validate"}),{formError:f,fieldErrors:m}=ys(d),u=or(i.cause);for(let p of Object.keys(this.state.fieldMeta)){if(this.baseStore.state.fieldMetaBase[p]===void 0)continue;let x=this.getFieldMeta(p);if(!x)continue;let{errorMap:h,errorSourceMap:v}=x,g=m?.[p],{newErrorValue:b,newSource:y}=xs({newFormValidatorError:g,isPreviousErrorFromFormValidator:v?.[u]==="form",previousErrorValue:h?.[u]});y==="form"&&(s[p]={...s[p],[u]:g}),h?.[u]!==b&&this.setFieldMeta(p,C=>({...C,errorMap:{...C.errorMap,[u]:b},errorSourceMap:{...C.errorSourceMap,[u]:y}}));}this.state.errorMap?.[u]!==f&&this.baseStore.setState(p=>({...p,errorMap:{...p.errorMap,[u]:f}})),(f||m)&&(n=!0);}let l=or("submit");this.state.errorMap?.[l]&&a!=="submit"&&!n&&this.baseStore.setState(i=>({...i,errorMap:{...i.errorMap,[l]:void 0}}));let c=or("server");this.state.errorMap?.[c]&&a!=="server"&&!n&&this.baseStore.setState(i=>({...i,errorMap:{...i.errorMap,[c]:void 0}}));}),{hasErrored:n,fieldsErrorMap:s}},this.validateAsync=async a=>{let r=fo(a,{...this.options,form:this,validationLogic:this.options.validationLogic||ba});this.state.isFormValidating||this.baseStore.setState(i=>({...i,isFormValidating:true}));let n=[],s;for(let i of r){if(!i.validate)continue;let d=or(i.cause);this.state.validationMetaMap[d]?.lastAbortController.abort();let m=new AbortController;this.state.validationMetaMap[d]={lastAbortController:m},n.push(new Promise(async u=>{let p;try{p=await new Promise((g,b)=>{setTimeout(async()=>{if(m.signal.aborted)return g(void 0);try{g(await this.runValidator({validate:i.validate,value:{value:this.state.values,formApi:this,validationSource:"form",signal:m.signal},type:"validateAsync"}));}catch(y){b(y);}},i.debounceMs);});}catch(g){p=g;}let{formError:x,fieldErrors:h}=ys(p);h&&(s=s?{...s,...h}:h);let v=or(i.cause);for(let g of Object.keys(this.state.fieldMeta)){if(this.baseStore.state.fieldMetaBase[g]===void 0)continue;let b=this.getFieldMeta(g);if(!b)continue;let{errorMap:y,errorSourceMap:C}=b,I=s?.[g],{newErrorValue:S,newSource:w}=xs({newFormValidatorError:I,isPreviousErrorFromFormValidator:C?.[v]==="form",previousErrorValue:y?.[v]});y?.[v]!==S&&this.setFieldMeta(g,N=>({...N,errorMap:{...N.errorMap,[v]:S},errorSourceMap:{...N.errorSourceMap,[v]:w}}));}this.baseStore.setState(g=>({...g,errorMap:{...g.errorMap,[v]:x}})),u(s?{fieldErrors:s,errorMapKey:v}:void 0);}));}let l=[],c={};if(n.length){l=await Promise.all(n);for(let i of l)if(i?.fieldErrors){let{errorMapKey:d}=i;for(let[f,m]of Object.entries(i.fieldErrors)){let p={...c[f]||{},[d]:m};c[f]=p;}}}return this.baseStore.setState(i=>({...i,isFormValidating:false})),c},this.validate=a=>{let{hasErrored:r,fieldsErrorMap:n}=this.validateSync(a);return r&&!this.options.asyncAlways?n:this.validateAsync(a)},this.getFieldValue=a=>ga(this.state.values,a),this.getFieldMeta=a=>this.state.fieldMeta[a],this.getFieldInfo=a=>{var r;return (r=this.fieldInfo)[a]||(r[a]={instance:null,validationMetaMap:{onChange:void 0,onBlur:void 0,onSubmit:void 0,onMount:void 0,onServer:void 0,onDynamic:void 0}})},this.setFieldMeta=(a,r)=>{this.baseStore.setState(n=>({...n,fieldMetaBase:{...n.fieldMetaBase,[a]:ha(r,n.fieldMetaBase[a])}}));},this.resetFieldMeta=a=>Object.keys(a).reduce((r,n)=>{let s=n;return r[s]=mo,r},{}),this.setFieldValue=(a,r,n)=>{let s=n?.dontUpdateMeta??false,l=n?.dontRunListeners??false,c=n?.dontValidate??false;ft(()=>{s||this.setFieldMeta(a,i=>({...i,isTouched:!0,isDirty:!0,errorMap:{...i?.errorMap,onMount:void 0}})),this.baseStore.setState(i=>({...i,values:uo(i.values,a,r)}));}),l||this.getFieldInfo(a).instance?.triggerOnChangeListener(),c||this.validateField(a,"change");},this.deleteField=a=>{let n=[...Object.keys(this.fieldInfo).filter(s=>{let l=a.toString();return s!==l&&s.startsWith(l)}),a];this.baseStore.setState(s=>{let l={...s};return n.forEach(c=>{l.values=bi(l.values,c),delete this.fieldInfo[c],delete l.fieldMetaBase[c];}),l});},this.pushFieldValue=(a,r,n)=>{this.setFieldValue(a,s=>[...Array.isArray(s)?s:[],r],n);},this.insertFieldValue=async(a,r,n,s)=>{this.setFieldValue(a,c=>[...c.slice(0,r),n,...c.slice(r)],ze(s,{dontValidate:true}));let l=s?.dontValidate??false;l||await this.validateField(a,"change"),ar(this).handleArrayFieldMetaShift(a,r,"insert"),l||await this.validateArrayFieldsStartingFrom(a,r,"change");},this.replaceFieldValue=async(a,r,n,s)=>{this.setFieldValue(a,c=>c.map((i,d)=>d===r?n:i),ze(s,{dontValidate:true})),(s?.dontValidate??false)||(await this.validateField(a,"change"),await this.validateArrayFieldsStartingFrom(a,r,"change"));},this.removeFieldValue=async(a,r,n)=>{let s=this.getFieldValue(a),l=Array.isArray(s)?Math.max(s.length-1,0):null;if(this.setFieldValue(a,i=>i.filter((d,f)=>f!==r),ze(n,{dontValidate:true})),ar(this).handleArrayFieldMetaShift(a,r,"remove"),l!==null){let i=`${a}[${l}]`;this.deleteField(i);}(n?.dontValidate??false)||(await this.validateField(a,"change"),await this.validateArrayFieldsStartingFrom(a,r,"change"));},this.swapFieldValues=(a,r,n,s)=>{this.setFieldValue(a,c=>{let i=c[r],d=c[n];return uo(uo(c,`${r}`,d),`${n}`,i)},ze(s,{dontValidate:true})),ar(this).handleArrayFieldMetaShift(a,r,"swap",n),(s?.dontValidate??false)||(this.validateField(a,"change"),this.validateField(`${a}[${r}]`,"change"),this.validateField(`${a}[${n}]`,"change"));},this.moveFieldValues=(a,r,n,s)=>{this.setFieldValue(a,c=>{let i=[...c];return i.splice(n,0,i.splice(r,1)[0]),i},ze(s,{dontValidate:true})),ar(this).handleArrayFieldMetaShift(a,r,"move",n),(s?.dontValidate??false)||(this.validateField(a,"change"),this.validateField(`${a}[${r}]`,"change"),this.validateField(`${a}[${n}]`,"change"));},this.clearFieldValues=(a,r)=>{let n=this.getFieldValue(a),s=Array.isArray(n)?Math.max(n.length-1,0):null;if(this.setFieldValue(a,[],ze(r,{dontValidate:true})),s!==null)for(let c=0;c<=s;c++){let i=`${a}[${c}]`;this.deleteField(i);}(r?.dontValidate??false)||this.validateField(a,"change");},this.resetField=a=>{this.baseStore.setState(r=>({...r,fieldMetaBase:{...r.fieldMetaBase,[a]:mo},values:this.options.defaultValues?uo(r.values,a,ga(this.options.defaultValues,a)):r.values}));},this.getAllErrors=()=>({form:{errors:this.state.errors,errorMap:this.state.errorMap},fields:Object.entries(this.state.fieldMeta).reduce((a,[r,n])=>(Object.keys(n).length&&n.errors.length&&(a[r]={errors:n.errors,errorMap:n.errorMap}),a),{})}),this.parseValuesWithSchema=a=>va.validate({value:this.state.values,validationSource:"form"},a),this.parseValuesWithSchemaAsync=a=>va.validateAsync({value:this.state.values,validationSource:"form"},a),this.timeoutIds={validations:{},listeners:{},formListeners:{}},this._formId=o?.formId??yi(),this._devtoolsSubmissionOverride=false,this.baseStore=new Wt(Li({...o?.defaultState,values:o?.defaultValues??o?.defaultState?.values})),this.fieldMetaDerived=new Dt({deps:[this.baseStore],fn:({prevDepVals:a,currDepVals:r,prevVal:n})=>{let s=n,l=a?.[0],c=r[0],i=0,d={};for(let f of Object.keys(c.fieldMetaBase)){let m=c.fieldMetaBase[f],u=l?.fieldMetaBase[f],p=s?.[f],x=ga(c.values,f),h=p?.errors;if(!u||m.errorMap!==u.errorMap){h=Object.values(m.errorMap??{}).filter(C=>C!==void 0);let y=this.getFieldInfo(f)?.instance;y&&!y.options.disableErrorFlat&&(h=h?.flat(1));}let v=!vi(h??[]),g=!m.isDirty,b=xa(x,ga(this.options.defaultValues,f))||xa(x,this.getFieldInfo(f)?.instance?.options.defaultValue);if(p&&p.isPristine===g&&p.isValid===v&&p.isDefaultValue===b&&p.errors===h&&m===u){d[f]=p,i++;continue}d[f]={...m,errors:h,isPristine:g,isValid:v,isDefaultValue:b};}return Object.keys(c.fieldMetaBase).length&&s&&i===Object.keys(c.fieldMetaBase).length?s:d}}),this.store=new Dt({deps:[this.baseStore,this.fieldMetaDerived],fn:({prevDepVals:a,currDepVals:r,prevVal:n})=>{let s=n,l=a?.[0],c=r[0],i=r[1],d=Object.values(i).filter(Boolean),f=d.some(T=>T.isValidating),m=d.every(T=>T.isValid),u=d.some(T=>T.isTouched),p=d.some(T=>T.isBlurred),x=d.every(T=>T.isDefaultValue),h=u&&c.errorMap?.onMount,v=d.some(T=>T.isDirty),g=!v,b=!!(c.errorMap?.onMount||d.some(T=>T?.errorMap?.onMount)),y=!!f,C=s?.errors??[];(!l||c.errorMap!==l.errorMap)&&(C=Object.values(c.errorMap).reduce((T,H)=>H===void 0?T:H&&tr(H)?(T.push(H.form),T):(T.push(H),T),[]));let I=C.length===0,S=m&&I,w=this.options.canSubmitWhenInvalid??false,N=c.submissionAttempts===0&&!u&&!b||!y&&!c.isSubmitting&&S||w,U=c.errorMap;if(h&&(C=C.filter(T=>T!==c.errorMap.onMount),U=Object.assign(U,{onMount:void 0})),s&&l&&s.errorMap===U&&s.fieldMeta===this.fieldMetaDerived.state&&s.errors===C&&s.isFieldsValidating===f&&s.isFieldsValid===m&&s.isFormValid===I&&s.isValid===S&&s.canSubmit===N&&s.isTouched===u&&s.isBlurred===p&&s.isPristine===g&&s.isDefaultValue===x&&s.isDirty===v&&xa(l,c))return s;let E={...c,errorMap:U,fieldMeta:this.fieldMetaDerived.state,errors:C,isFieldsValidating:f,isFieldsValid:m,isFormValid:I,isValid:S,canSubmit:N,isTouched:u,isBlurred:p,isPristine:g,isDefaultValue:x,isDirty:v},D=this.options.transform?.deps??[];if(D.length!==this.prevTransformArray.length||D.some((T,H)=>T!==this.prevTransformArray[H])){let T=Object.assign({},this,{state:E});this.options.transform?.fn(T),E=T.state,this.prevTransformArray=D;}return E}}),this.handleSubmit=this.handleSubmit.bind(this),this.update(o||{});let t=gi(a=>pt.emit("form-state",{id:this._formId,state:a}),{wait:300});this.store.subscribe(()=>{t(this.store.state);}),pt.on("request-form-state",a=>{a.payload.id===this._formId&&pt.emit("form-api",{id:this._formId,state:this.store.state,options:this.options});}),pt.on("request-form-reset",a=>{a.payload.id===this._formId&&this.reset();}),pt.on("request-form-force-submit",a=>{a.payload.id===this._formId&&(this._devtoolsSubmissionOverride=true,this.handleSubmit(),this._devtoolsSubmissionOverride=false);});}get state(){return this.store.state}get formId(){return this._formId}runValidator(o){return vs(o.validate)?va[o.type](o.value,o.validate):o.validate(o.value)}async handleSubmit(o){this.baseStore.setState(r=>({...r,isSubmitted:false,submissionAttempts:r.submissionAttempts+1,isSubmitSuccessful:false})),ft(()=>{Object.values(this.fieldInfo).forEach(r=>{r.instance&&(r.instance.state.meta.isTouched||r.instance.setMeta(n=>({...n,isTouched:!0})));});});let t=o??this.options.onSubmitMeta;if(!this.state.canSubmit&&!this._devtoolsSubmissionOverride){this.options.onSubmitInvalid?.({value:this.state.values,formApi:this,meta:t});return}this.baseStore.setState(r=>({...r,isSubmitting:true}));let a=()=>{this.baseStore.setState(r=>({...r,isSubmitting:false}));};if(await this.validateAllFields("submit"),!this.state.isFieldsValid){a(),this.options.onSubmitInvalid?.({value:this.state.values,formApi:this,meta:t}),pt.emit("form-submission",{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:false,stage:"validateAllFields",errors:Object.values(this.state.fieldMeta).map(r=>r.errors).flat()});return}if(await this.validate("submit"),!this.state.isValid){a(),this.options.onSubmitInvalid?.({value:this.state.values,formApi:this,meta:t}),pt.emit("form-submission",{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:false,stage:"validate",errors:this.state.errors});return}ft(()=>{Object.values(this.fieldInfo).forEach(r=>{r.instance?.options.listeners?.onSubmit?.({value:r.instance.state.value,fieldApi:r.instance});});}),this.options.listeners?.onSubmit?.({formApi:this,meta:t});try{await this.options.onSubmit?.({value:this.state.values,formApi:this,meta:t}),ft(()=>{this.baseStore.setState(r=>({...r,isSubmitted:!0,isSubmitSuccessful:!0})),pt.emit("form-submission",{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:!0}),a();});}catch(r){throw this.baseStore.setState(n=>({...n,isSubmitSuccessful:false})),pt.emit("form-submission",{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:false,stage:"inflight",onError:r}),a(),r}}setErrorMap(o){ft(()=>{Object.entries(o).forEach(([t,a])=>{let r=t;if(tr(a)){let{formError:n,fieldErrors:s}=ys(a);for(let l of Object.keys(this.fieldInfo))this.getFieldMeta(l)&&this.setFieldMeta(l,i=>({...i,errorMap:{...i.errorMap,[r]:s?.[l]},errorSourceMap:{...i.errorSourceMap,[r]:"form"}}));this.baseStore.setState(l=>({...l,errorMap:{...l.errorMap,[r]:n}}));}else this.baseStore.setState(n=>({...n,errorMap:{...n.errorMap,[r]:a}}));});});}};function ys(e){if(e){if(tr(e)){let o=ys(e.form).formError,t=e.fields;return {formError:o,fieldErrors:t}}return {formError:e}}return {formError:void 0}}function or(e){switch(e){case "submit":return "onSubmit";case "blur":return "onBlur";case "mount":return "onMount";case "server":return "onServer";case "dynamic":return "onDynamic";case "change":default:return "onChange"}}var sr=class{constructor(o){this.options={},this.mount=()=>{let t=this.store.mount();this.options.defaultValue!==void 0&&this.form.setFieldValue(this.name,this.options.defaultValue,{dontUpdateMeta:true});let a=this.getInfo();a.instance=this,this.update(this.options);let{onMount:r}=this.options.validators||{};if(r){let n=this.runValidator({validate:r,value:{value:this.state.value,fieldApi:this,validationSource:"field"},type:"validate"});n&&this.setMeta(s=>({...s,errorMap:{...s?.errorMap,onMount:n},errorSourceMap:{...s?.errorSourceMap,onMount:"field"}}));}return this.options.listeners?.onMount?.({value:this.state.value,fieldApi:this}),t},this.update=t=>{this.options=t;let a=this.name!==t.name;if(this.name=t.name,this.state.value===void 0){let r=ga(t.form.options.defaultValues,t.name),n=t.defaultValue??r;a?this.setValue(s=>s||n,{dontUpdateMeta:true}):n!==void 0&&this.setValue(n,{dontUpdateMeta:true});}this.form.getFieldMeta(this.name)===void 0&&this.setMeta(this.state.meta);},this.getValue=()=>this.form.getFieldValue(this.name),this.setValue=(t,a)=>{this.form.setFieldValue(this.name,t,ze(a,{dontRunListeners:true,dontValidate:true})),a?.dontRunListeners||this.triggerOnChangeListener(),a?.dontValidate||this.validate("change");},this.getMeta=()=>this.store.state.meta,this.setMeta=t=>this.form.setFieldMeta(this.name,t),this.getInfo=()=>this.form.getFieldInfo(this.name),this.pushValue=(t,a)=>{this.form.pushFieldValue(this.name,t,ze(a,{dontRunListeners:true})),a?.dontRunListeners||this.triggerOnChangeListener();},this.insertValue=(t,a,r)=>{this.form.insertFieldValue(this.name,t,a,ze(r,{dontRunListeners:true})),r?.dontRunListeners||this.triggerOnChangeListener();},this.replaceValue=(t,a,r)=>{this.form.replaceFieldValue(this.name,t,a,ze(r,{dontRunListeners:true})),r?.dontRunListeners||this.triggerOnChangeListener();},this.removeValue=(t,a)=>{this.form.removeFieldValue(this.name,t,ze(a,{dontRunListeners:true})),a?.dontRunListeners||this.triggerOnChangeListener();},this.swapValues=(t,a,r)=>{this.form.swapFieldValues(this.name,t,a,ze(r,{dontRunListeners:true})),r?.dontRunListeners||this.triggerOnChangeListener();},this.moveValue=(t,a,r)=>{this.form.moveFieldValues(this.name,t,a,ze(r,{dontRunListeners:true})),r?.dontRunListeners||this.triggerOnChangeListener();},this.clearValues=t=>{this.form.clearFieldValues(this.name,ze(t,{dontRunListeners:true})),t?.dontRunListeners||this.triggerOnChangeListener();},this.getLinkedFields=t=>{let a=Object.values(this.form.fieldInfo),r=[];for(let n of a){if(!n.instance)continue;let{onChangeListenTo:s,onBlurListenTo:l}=n.instance.options.validators||{};t==="change"&&s?.includes(this.name)&&r.push(n.instance),t==="blur"&&l?.includes(this.name)&&r.push(n.instance);}return r},this.validateSync=(t,a)=>{let r=co(t,{...this.options,form:this.form,validationLogic:this.form.options.validationLogic||ba}),s=this.getLinkedFields(t).reduce((i,d)=>{let f=co(t,{...d.options,form:d.form,validationLogic:d.form.options.validationLogic||ba});return f.forEach(m=>{m.field=d;}),i.concat(f)},[]),l=false;ft(()=>{let i=(d,f)=>{let m=ws(f.cause),u=f.validate?$d(d.runValidator({validate:f.validate,value:{value:d.store.state.value,validationSource:"field",fieldApi:d},type:"validate"})):void 0,p=a[m],{newErrorValue:x,newSource:h}=bs({formLevelError:p,fieldLevelError:u});d.state.meta.errorMap?.[m]!==x&&d.setMeta(v=>({...v,errorMap:{...v.errorMap,[m]:x},errorSourceMap:{...v.errorSourceMap,[m]:h}})),x&&(l=!0);};for(let d of r)i(this,d);for(let d of s)d.validate&&i(d.field,d);});let c=ws("submit");return this.state.meta.errorMap?.[c]&&t!=="submit"&&!l&&this.setMeta(i=>({...i,errorMap:{...i.errorMap,[c]:void 0},errorSourceMap:{...i.errorSourceMap,[c]:void 0}})),{hasErrored:l}},this.validateAsync=async(t,a)=>{let r=fo(t,{...this.options,form:this.form,validationLogic:this.form.options.validationLogic||ba}),n=await a,s=this.getLinkedFields(t),l=s.reduce((m,u)=>{let p=fo(t,{...u.options,form:u.form,validationLogic:u.form.options.validationLogic||ba});return p.forEach(x=>{x.field=u;}),m.concat(p)},[]);this.state.meta.isValidating||this.setMeta(m=>({...m,isValidating:true}));for(let m of s)m.setMeta(u=>({...u,isValidating:true}));let c=[],i=[],d=(m,u,p)=>{let x=ws(u.cause);m.getInfo().validationMetaMap[x]?.lastAbortController.abort();let v=new AbortController;this.getInfo().validationMetaMap[x]={lastAbortController:v},p.push(new Promise(async g=>{let b;try{b=await new Promise((w,N)=>{this.timeoutIds.validations[u.cause]&&clearTimeout(this.timeoutIds.validations[u.cause]),this.timeoutIds.validations[u.cause]=setTimeout(async()=>{if(v.signal.aborted)return w(void 0);try{w(await this.runValidator({validate:u.validate,value:{value:m.store.state.value,fieldApi:m,signal:v.signal,validationSource:"field"},type:"validateAsync"}));}catch(U){N(U);}},u.debounceMs);});}catch(w){b=w;}if(v.signal.aborted)return g(void 0);let y=$d(b),C=n[this.name]?.[x],{newErrorValue:I,newSource:S}=bs({formLevelError:C,fieldLevelError:y});m.setMeta(w=>({...w,errorMap:{...w?.errorMap,[x]:I},errorSourceMap:{...w.errorSourceMap,[x]:S}})),g(I);}));};for(let m of r)m.validate&&d(this,m,c);for(let m of l)m.validate&&d(m.field,m,i);let f=[];(c.length||i.length)&&(f=await Promise.all(c),await Promise.all(i)),this.setMeta(m=>({...m,isValidating:false}));for(let m of s)m.setMeta(u=>({...u,isValidating:false}));return f.filter(Boolean)},this.validate=(t,a)=>{if(!this.state.meta.isTouched)return [];let{fieldsErrorMap:r}=a?.skipFormValidation?{fieldsErrorMap:{}}:this.form.validateSync(t),{hasErrored:n}=this.validateSync(t,r[this.name]??{});if(n&&!this.options.asyncAlways)return this.getInfo().validationMetaMap[ws(t)]?.lastAbortController.abort(),this.state.meta.errors;let s=a?.skipFormValidation?Promise.resolve({}):this.form.validateAsync(t);return this.validateAsync(t,s)},this.handleChange=t=>{this.setValue(t);},this.handleBlur=()=>{this.state.meta.isTouched||this.setMeta(a=>({...a,isTouched:true})),this.state.meta.isBlurred||this.setMeta(a=>({...a,isBlurred:true})),this.validate("blur"),this.triggerOnBlurListener();},this.parseValueWithSchema=t=>va.validate({value:this.state.value,validationSource:"field"},t),this.parseValueWithSchemaAsync=t=>va.validateAsync({value:this.state.value,validationSource:"field"},t),this.form=o.form,this.name=o.name,this.timeoutIds={validations:{},listeners:{},formListeners:{}},this.store=new Dt({deps:[this.form.store],fn:()=>{let t=this.form.getFieldValue(this.name),a=this.form.getFieldMeta(this.name)??{...mo,...o.defaultMeta};return {value:t,meta:a}}}),this.options=o;}get state(){return this.store.state}runValidator(o){return vs(o.validate)?va[o.type](o.value,o.validate):o.validate(o.value)}setErrorMap(o){this.setMeta(t=>({...t,errorMap:{...t.errorMap,...o}}));}triggerOnBlurListener(){let o=this.form.options.listeners?.onBlurDebounceMs;o&&o>0?(this.timeoutIds.formListeners.blur&&clearTimeout(this.timeoutIds.formListeners.blur),this.timeoutIds.formListeners.blur=setTimeout(()=>{this.form.options.listeners?.onBlur?.({formApi:this.form,fieldApi:this});},o)):this.form.options.listeners?.onBlur?.({formApi:this.form,fieldApi:this});let t=this.options.listeners?.onBlurDebounceMs;t&&t>0?(this.timeoutIds.listeners.blur&&clearTimeout(this.timeoutIds.listeners.blur),this.timeoutIds.listeners.blur=setTimeout(()=>{this.options.listeners?.onBlur?.({value:this.state.value,fieldApi:this});},t)):this.options.listeners?.onBlur?.({value:this.state.value,fieldApi:this});}triggerOnChangeListener(){let o=this.form.options.listeners?.onChangeDebounceMs;o&&o>0?(this.timeoutIds.formListeners.change&&clearTimeout(this.timeoutIds.formListeners.change),this.timeoutIds.formListeners.change=setTimeout(()=>{this.form.options.listeners?.onChange?.({formApi:this.form,fieldApi:this});},o)):this.form.options.listeners?.onChange?.({formApi:this.form,fieldApi:this});let t=this.options.listeners?.onChangeDebounceMs;t&&t>0?(this.timeoutIds.listeners.change&&clearTimeout(this.timeoutIds.listeners.change),this.timeoutIds.listeners.change=setTimeout(()=>{this.options.listeners?.onChange?.({value:this.state.value,fieldApi:this});},t)):this.options.listeners?.onChange?.({value:this.state.value,fieldApi:this});}};function $d(e){if(e)return e}function ws(e){switch(e){case "submit":return "onSubmit";case "blur":return "onBlur";case "mount":return "onMount";case "server":return "onServer";case "dynamic":return "onDynamic";case "change":default:return "onChange"}}function Ls(e,o=t=>t){return useSyncExternalStoreWithSelector(e.subscribe,()=>e.state,()=>e.state,o,yg)}function yg(e,o){if(Object.is(e,o))return true;if(typeof e!="object"||e===null||typeof o!="object"||o===null)return false;if(e instanceof Map&&o instanceof Map){if(e.size!==o.size)return false;for(let[a,r]of e)if(!o.has(a)||!Object.is(r,o.get(a)))return false;return true}if(e instanceof Set&&o instanceof Set){if(e.size!==o.size)return false;for(let a of e)if(!o.has(a))return false;return true}if(e instanceof Date&&o instanceof Date)return e.getTime()===o.getTime();let t=Yd(e);if(t.length!==Yd(o).length)return false;for(let a=0;a<t.length;a++)if(!Object.prototype.hasOwnProperty.call(o,t[a])||!Object.is(e[t[a]],o[t[a]]))return false;return true}function Yd(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}var po=typeof window<"u"?useLayoutEffect:useEffect;function Mg(e){let[o]=useState(()=>{let a=new sr({...e,form:e.form,name:e.name});return a.Field=Si,a});return po(o.mount,[o]),po(()=>{o.update(e);}),Ls(o.store,e.mode==="array"?t=>[t.meta,Object.keys(t.value??[]).length]:void 0),o}var Si=(({children:e,...o})=>{let t=Mg(o),a=useMemo(()=>ha(e,t),[e,t,t.state.value,t.state.meta]);return jsx(Fragment,{children:a})});function Rg({form:e,selector:o,children:t}){let a=Ls(e.store,o);return ha(t,a)}function Ii(e){let o=useId(),[t]=useState(()=>{let a=new rr({...e,formId:o}),r=a;return r.Field=function(s){return jsx(Si,{...s,form:a})},r.Subscribe=function(s){return jsx(Rg,{form:a,selector:s.selector,children:s.children})},r});return po(t.mount,[]),po(()=>{t.update(e);}),t}function Ci({field:e}){return jsxs(Fragment,{children:[e.state.meta.isTouched&&!e.state.meta.isValid?jsx("em",{children:e.state.meta.errors.join(", ")}):null,e.state.meta.isValidating?"Validating...":null]})}var Fg=({editElement:e})=>{let o=useDispatch(),t=useSelector(pe),a=!!e,r=e?.data.questionType||t?.activityType||"multiple-choice",[n,s]=useState(r),l=Ii({defaultValues:{questionType:r,responseType:e?.data.responseType||"classic",feedbackMode:e?.data.feedbackMode||"practice",question:e?.data.question||"",responseOptions:{options:e?.data.responseOptions.options||["","","",""],correctIndex:e?.data.questionType==="multiple-choice"?e.data.responseOptions.correctIndex||[]:[],correctAnswer:e?.data.questionType==="true-false"?e.data.responseOptions.correctAnswer:false,correctShortAnswer:(e?.data.questionType==="short-answer"||e?.data.questionType==="fill-in-the-blank")&&e.data.responseOptions.correctShortAnswer||"",correctLongAnswer:e?.data.questionType==="long-answer"&&e.data.responseOptions.correctLongAnswer||""}},onSubmit:async({value:i})=>{if(i.questionType==="true-false"){let d={id:a?e.id:v4(),data:{questionType:i.questionType,responseType:i.responseType,feedbackMode:i.feedbackMode,question:i.question,responseOptions:{options:i.responseOptions.options,correctAnswer:i.responseOptions.correctAnswer??false}},x:a?e.x:500,y:a?e.y:200,width:a?e.width:400,height:a?e.height:300,rotation:a?e.rotation:0};o(a?ra(d):vn(d));}else if(i.questionType==="multiple-choice"){let d={id:a?e.id:v4(),data:{questionType:i.questionType,responseType:i.responseType,feedbackMode:i.feedbackMode,question:i.question,responseOptions:{options:i.responseOptions.options,correctIndex:i.responseOptions.correctIndex??[]}},x:a?e.x:500,y:a?e.y:200,width:a?e.width:400,height:a?e.height:400,rotation:a?e.rotation:0};o(a?oa(d):xn(d));}else if(i.questionType==="short-answer"){let d={id:a?e.id:v4(),data:{questionType:i.questionType,responseType:i.responseType,feedbackMode:i.feedbackMode,question:i.question,responseOptions:{options:i.responseOptions.options,correctShortAnswer:i.responseOptions.correctShortAnswer??""}},x:a?e.x:500,y:a?e.y:200,width:a?e.width:400,height:a?e.height:400,rotation:a?e.rotation:0};o(a?To(d):wn(d));}else if(i.questionType==="fill-in-the-blank"){let d={id:a?e.id:v4(),data:{questionType:i.questionType,responseType:i.responseType,feedbackMode:i.feedbackMode,question:i.question,responseOptions:{options:i.responseOptions.options,correctShortAnswer:i.responseOptions.correctShortAnswer??""}},x:a?e.x:500,y:a?e.y:200,width:a?e.width:400,height:a?e.height:400,rotation:a?e.rotation:0};o(a?Po(d):Cn(d));}else if(i.questionType==="long-answer"){let d={id:a?e.id:v4(),data:{questionType:i.questionType,responseType:i.responseType,feedbackMode:i.feedbackMode,question:i.question,responseOptions:{options:i.responseOptions.options,correctLongAnswer:i.responseOptions.correctLongAnswer??""}},x:a?e.x:500,y:a?e.y:200,width:a?e.width:400,height:a?e.height:400,rotation:a?e.rotation:0};o(a?Ro(d):Sn(d));}o(sa(false));}}),c=()=>{o(sa(false));};return jsx("div",{className:"h-fit max-h-[calc(100vh-300px)] w-full max-w-2xl rounded-lg bg-white p-6",children:jsxs("form",{className:"relative flex h-full max-h-[calc(100vh-300px)] w-full max-w-2xl flex-col gap-1 overflow-y-auto rounded-lg bg-white p-6",onSubmit:i=>{i.preventDefault(),i.stopPropagation(),l.handleSubmit();},children:[jsxs("div",{className:"flex items-center justify-between pb-4",children:[jsx("button",{type:"button",className:"absolute top-2 right-2 flex h-8 w-8 items-center justify-center rounded bg-red-500 hover:cursor-pointer hover:bg-red-600",onClick:()=>{c();},children:jsx("span",{className:"text-xl text-white",children:"\u2715"})}),jsx("h2",{className:"text-xl font-bold text-gray-900",children:a?"Edit Question":"Add Question"}),jsx("div",{className:"w-8"})]}),jsx(l.Field,{name:"questionType",children:i=>jsxs("div",{className:"flex flex-col gap-2",children:[jsx("label",{htmlFor:i.name,className:"text-sm font-semibold text-gray-900",children:"Question Type"}),jsxs("div",{className:"relative",children:[jsxs("select",{id:i.name,name:i.name,value:i.state.value,onBlur:i.handleBlur,onChange:d=>{i.handleChange(d.target.value),s(d.target.value);},disabled:a,className:`outline-primary/50 w-full appearance-none rounded-lg border border-gray-300 px-4 py-3 pr-10 text-gray-900 ${a?"cursor-not-allowed bg-gray-100 opacity-60":"bg-white"}`,children:[jsx("option",{value:"multiple-choice",children:"\u2630 Multiple Choice"}),jsx("option",{value:"true-false",children:"True/False"}),jsx("option",{value:"short-answer",children:"Short Answer"}),jsx("option",{value:"fill-in-the-blank",children:"Fill in the blank"}),jsx("option",{value:"long-answer",children:"Long Answer"})]}),jsx("div",{className:"pointer-events-none absolute top-1/2 right-3 -translate-y-1/2",children:jsx("svg",{className:"h-5 w-5 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})})]}),a&&jsx("p",{className:"text-xs text-gray-500 italic",children:"Question type cannot be changed when editing"}),jsx(Ci,{field:i})]})}),n&&!["short-answer","fill-in-the-blank","long-answer"].includes(n)&&jsx(l.Field,{name:"responseType",children:i=>jsxs("div",{className:"flex flex-col gap-2",children:[jsx("label",{htmlFor:i.name,className:"text-sm font-semibold text-gray-900",children:"Response Type"}),jsxs("div",{className:"relative",children:[jsxs("select",{id:i.name,name:i.name,value:i.state.value,onBlur:i.handleBlur,onChange:d=>i.handleChange(d.target.value),className:"outline-primary/50 w-full appearance-none rounded-lg border border-gray-300 bg-white px-4 py-3 pr-10 text-gray-900",children:[jsx("option",{value:"classic",children:"Classic"}),jsx("option",{value:"drag-and-drop",children:"Drag and Drop"})]}),jsx("div",{className:"pointer-events-none absolute top-1/2 right-3 -translate-y-1/2",children:jsx("svg",{className:"h-5 w-5 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})})]}),jsx(Ci,{field:i})]})}),jsx(l.Field,{name:"feedbackMode",children:i=>jsxs("div",{className:"flex flex-col gap-2",children:[jsx("label",{htmlFor:i.name,className:"text-sm font-semibold text-gray-900",children:"Feedback Mode"}),jsxs("div",{className:"relative",children:[jsxs("select",{id:i.name,name:i.name,value:i.state.value,onBlur:i.handleBlur,onChange:d=>i.handleChange(d.target.value),disabled:n==="long-answer",className:`outline-primary/50 w-full appearance-none rounded-lg border border-gray-300 px-4 py-3 pr-10 text-gray-900 ${n==="long-answer"?"cursor-not-allowed bg-gray-100 opacity-60":"bg-white"}`,children:[jsx("option",{value:"practice",children:"Practice Mode"}),jsx("option",{value:"test",children:"Assessment Mode"})]}),jsx("div",{className:"pointer-events-none absolute top-1/2 right-3 -translate-y-1/2",children:jsx("svg",{className:"h-5 w-5 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})})]}),n==="long-answer"&&jsx("p",{className:"text-xs text-gray-500 italic",children:"Long answer questions are only available in Assessment Mode"}),jsx(Ci,{field:i})]})}),jsx(l.Field,{name:"question",validators:{onChange:({value:i})=>i?void 0:"A question is required"},children:i=>jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[jsx("label",{htmlFor:i.name,className:"text-sm font-semibold text-gray-900",children:"Question"}),jsx("div",{className:"relative",children:jsx("input",{className:"outline-primary/50 w-full resize-none rounded-lg border border-gray-300 bg-white px-4 py-3 text-gray-900",value:i.state.value,onChange:d=>i.handleChange(d.target.value),onBlur:i.handleBlur})}),i.state.meta.errors.length>0&&jsx("span",{className:"text-sm font-semibold text-red-500",children:i.state.meta.errors.join(", ")})]})}),jsxs("button",{type:"button",className:"mb-2 flex w-full items-center justify-center gap-2 rounded-lg border-2 border-gray-300 bg-white px-4 py-3 font-medium text-gray-900 transition-colors hover:border-gray-400 hover:bg-gray-50",children:[jsx("span",{children:"\u{1F50D}"}),jsx("span",{children:"Find Questions"})]}),n==="true-false"&&jsx(l.Field,{name:"responseOptions.correctAnswer",children:i=>jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[jsx("label",{className:"text-sm font-semibold text-gray-900",children:"Correct Answer"}),jsxs("div",{className:"flex gap-4",children:[jsxs("button",{type:"button",onClick:()=>i.handleChange(true),className:`flex flex-1 items-center justify-center gap-3 rounded-lg border-2 px-6 py-4 transition-colors ${i.state.value===true?"border-green-500 bg-green-50":"border-gray-300 bg-white hover:border-gray-400"}`,children:[jsx("div",{className:`flex h-6 w-6 items-center justify-center rounded-full border-2 ${i.state.value===true?"border-green-500 bg-green-500":"border-gray-300"}`,children:i.state.value===true&&jsx("div",{className:"h-3 w-3 rounded-full bg-white"})}),jsx("span",{className:"text-lg font-semibold text-black",children:"True"})]}),jsxs("button",{type:"button",onClick:()=>i.handleChange(false),className:`flex flex-1 items-center justify-center gap-3 rounded-lg border-2 px-6 py-4 transition-colors ${i.state.value===false?"border-green-500 bg-green-50":"border-gray-300 bg-white hover:border-gray-400"}`,children:[jsx("div",{className:`flex h-6 w-6 items-center justify-center rounded-full border-2 ${i.state.value===false?"border-green-500 bg-green-500":"border-gray-300"}`,children:i.state.value===false&&jsx("div",{className:"h-3 w-3 rounded-full bg-white"})}),jsx("span",{className:"text-lg font-semibold text-black",children:"False"})]})]}),jsx("p",{className:"text-sm font-semibold text-gray-500",children:"Select the correct answer for this true/false question"})]})}),n==="multiple-choice"&&jsx(l.Field,{name:"responseOptions",validators:{onChange:({value:i})=>{if(i.options.filter(f=>!f.trim()).length>0)return "All options must have text";if(!i.correctIndex||i.correctIndex.length===0)return "Please select at least one correct answer"}},children:i=>{let d=(p,x)=>{let h=[...i.state.value.options];h[p]=x,i.handleChange({...i.state.value,options:h});},f=()=>{if(i.state.value.options.length>=6){alert("Maximum 6 options allowed");return}i.handleChange({...i.state.value,options:[...i.state.value.options,""]});},m=p=>{if(i.state.value.options.length<=2){alert("Minimum 2 options required");return}let x=i.state.value.options.filter((v,g)=>g!==p),h=i.state.value.correctIndex?.filter(v=>v!==p).map(v=>v>p?v-1:v);i.handleChange({...i.state.value,options:x,correctIndex:h});},u=p=>{let x=i.state.value.correctIndex||[];if(x.includes(p))i.handleChange({...i.state.value,correctIndex:x.filter(v=>v!==p)});else {if(x.length>=6){alert("Maximum 6 correct answers allowed");return}i.handleChange({...i.state.value,correctIndex:[...x,p]});}};return jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[jsxs("div",{className:"flex items-center justify-between",children:[jsxs("label",{htmlFor:i.name,className:"text-sm font-semibold text-gray-900",children:["Response Options (",i.state.value.options.length,"/6)"]}),jsx("button",{type:"button",onClick:f,disabled:i.state.value.options.length>=6,className:"rounded-lg bg-[#096B76] px-3 py-1 text-sm font-semibold text-white transition-colors hover:bg-[#075862] disabled:cursor-not-allowed disabled:opacity-50",children:"+ Add Option"})]}),jsx("div",{className:"flex flex-col gap-3",children:i.state.value.options.map((p,x)=>{let h=!p.trim(),v=i.state.value.correctIndex?.includes(x),g=i.state.meta.isTouched&&h;return jsxs("div",{className:`flex items-center gap-3 rounded-lg border-2 px-4 py-3 transition-colors ${g?"border-red-500 bg-red-50":v?"border-green-500 bg-green-50":"border-gray-300 bg-white"}`,children:[jsx("button",{type:"button",onClick:()=>u(x),className:`flex h-5 w-5 shrink-0 items-center justify-center rounded border-2 transition-colors ${v?"border-green-500 bg-green-500":"border-gray-300 hover:border-green-500"}`,children:v&&jsx("svg",{className:"h-3 w-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M5 13l4 4L19 7"})})}),jsx("input",{type:"text",placeholder:`Option ${x+1}`,value:p,onChange:b=>d(x,b.target.value),onBlur:i.handleBlur,className:"flex-1 border-none bg-transparent text-gray-900 placeholder:text-gray-400 focus:outline-none"}),i.state.value.options.length>2&&jsx("button",{type:"button",onClick:()=>m(x),className:"flex h-6 w-6 shrink-0 items-center justify-center rounded bg-red-500 text-white transition-colors hover:bg-red-600",children:jsx("span",{className:"text-sm",children:"\u2715"})})]},x)})}),jsx("p",{className:"text-sm font-semibold text-gray-500",children:"Click the box to mark the correct answer"}),i.state.meta.errors.length>0&&jsx("span",{className:"text-sm font-semibold text-red-500",children:i.state.meta.errors.join(", ")})]})}}),(n==="short-answer"||n==="fill-in-the-blank")&&jsx(l.Field,{name:"responseOptions.correctShortAnswer",children:i=>jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[jsx("label",{htmlFor:i.name,className:"text-sm font-semibold text-gray-900",children:"Correct Short Answer"}),jsx("input",{type:"text",placeholder:"Type the expected correct answer...",value:i.state.value,onChange:d=>{i.handleChange(d.target.value);},className:"outline-primary/50 w-full rounded-lg border-2 border-gray-300 bg-white p-3 text-gray-900 transition-colors"}),jsx("p",{className:"text-sm font-semibold text-gray-500",children:"Learners must write this answer exactly (case-insensitive)."}),i.state.meta.errors.length>0&&jsx("span",{className:"text-sm font-semibold text-red-500",children:i.state.meta.errors.join(", ")})]})}),n==="long-answer"&&jsx(l.Field,{name:"responseOptions.correctLongAnswer",children:i=>jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[jsx("label",{htmlFor:i.name,className:"text-sm font-semibold text-gray-900",children:"Expected Long Answer (Optional)"}),jsx("textarea",{placeholder:"Type the expected answer or key points...",value:i.state.value,onChange:d=>{i.handleChange(d.target.value);},rows:6,className:"outline-primary/50 w-full rounded-lg border-2 border-gray-300 bg-white p-3 text-gray-900 transition-colors"}),jsx("p",{className:"text-sm font-semibold text-gray-500",children:"This will be used as a reference answer for manual grading."}),i.state.meta.errors.length>0&&jsx("span",{className:"text-sm font-semibold text-red-500",children:i.state.meta.errors.join(", ")})]})}),jsx(l.Subscribe,{selector:i=>[i.canSubmit,i.isSubmitting],children:([i,d])=>jsx("button",{type:"submit",disabled:!i,className:"mt-2 mb-4 w-full rounded-lg bg-[#096B76] px-6 py-3 font-semibold text-white transition-colors hover:bg-[#075862] disabled:cursor-not-allowed disabled:opacity-50",children:d?"Saving...":a?"Update Question":"Save Question"})})]})})},Zd=Fg;var Qd=({text:e,position:o})=>{let t=ge(),a=i=>{t(de()),t(yt({id:e.id,fontSize:Math.max(12,Math.min(72,e.fontSize+i))}));},r=i=>{t(de()),t(yt({id:e.id,fill:i}));},n=()=>{t(de()),t(yt({id:e.id,fontWeight:e.fontWeight==="bold"?"normal":"bold"}));},s=()=>{t(de()),t(yt({id:e.id,fontStyle:e.fontStyle==="italic"?"normal":"italic"}));},l=()=>{t(de()),t(yt({id:e.id,textDecoration:e.textDecoration==="underline"?"":"underline"}));},c=i=>{t(de()),t(yt({id:e.id,fontFamily:i}));};return jsxs("div",{className:"fixed z-1001 flex items-center gap-1 rounded-lg border border-gray-200 bg-white p-2 shadow-2xl",style:{left:`${o.x}px`,top:`${o.y-60}px`,transform:"translateX(-50%)"},onClick:i=>i.stopPropagation(),children:[jsxs("select",{value:e.fontFamily,onChange:i=>c(i.target.value),className:"rounded border border-gray-300 bg-white px-2 py-1 text-xs hover:bg-gray-50",children:[jsx("option",{value:"Arial",children:"Arial"}),jsx("option",{value:"Helvetica",children:"Helvetica"}),jsx("option",{value:"Times New Roman",children:"Times"}),jsx("option",{value:"Courier New",children:"Courier"}),jsx("option",{value:"Georgia",children:"Georgia"}),jsx("option",{value:"Verdana",children:"Verdana"}),jsx("option",{value:"Comic Sans MS",children:"Comic Sans"})]}),jsxs("div",{className:"ml-1 flex items-center gap-0.5 border-l border-gray-200 pl-1",children:[jsx("button",{onClick:()=>a(-2),className:"flex h-7 w-7 items-center justify-center rounded text-sm font-bold hover:bg-gray-100",title:"Decrease font size",children:"\u2212"}),jsx("span",{className:"w-8 text-center text-xs font-medium",children:Math.round(e.fontSize)}),jsx("button",{onClick:()=>a(2),className:"flex h-7 w-7 items-center justify-center rounded text-sm font-bold hover:bg-gray-100",title:"Increase font size",children:"+"})]}),jsxs("div",{className:"ml-1 flex items-center gap-0.5 border-l border-gray-200 pl-1",children:[jsx("button",{onClick:n,className:`flex h-7 w-7 items-center justify-center rounded transition-colors ${e.fontWeight==="bold"?"bg-blue-100 text-blue-600":"text-gray-700 hover:bg-gray-100"}`,title:"Bold",children:jsx(TextB,{size:16,weight:"bold"})}),jsx("button",{onClick:s,className:`flex h-7 w-7 items-center justify-center rounded transition-colors ${e.fontStyle==="italic"?"bg-blue-100 text-blue-600":"text-gray-700 hover:bg-gray-100"}`,title:"Italic",children:jsx(TextItalic,{size:16,weight:"bold"})}),jsx("button",{onClick:l,className:`flex h-7 w-7 items-center justify-center rounded transition-colors ${e.textDecoration==="underline"?"bg-blue-100 text-blue-600":"text-gray-700 hover:bg-gray-100"}`,title:"Underline",children:jsx(TextUnderline,{size:16,weight:"bold"})})]}),jsx("div",{className:"ml-1 border-l border-gray-200 pl-1",children:jsx("div",{className:"relative",children:jsx("input",{type:"color",value:e.fill,onChange:i=>r(i.target.value),className:"h-7 w-7 cursor-pointer rounded border border-gray-300",title:"Text color",style:{padding:"2px"}})})})]})};var tu=({text:e,editingValue:o,onEditingChange:t,onFinish:a,position:r,scale:n,textareaRef:s})=>{let l=useRef(null),c=useMemo(()=>({fontSize:`${e.fontSize*n}px`,fontFamily:e.fontFamily,fontStyle:e.fontStyle,fontWeight:e.fontWeight==="bold"?"bold":"normal",textDecoration:e.textDecoration,color:e.fill,border:"2px solid #4A90E2",outline:"none",padding:"5px",background:"white",resize:"none",overflow:"hidden",width:"auto",minWidth:"200px",minHeight:"50px",lineHeight:"1.2",transform:`rotate(${e.rotation}deg)`,transformOrigin:"top left",whiteSpace:"pre",overflowWrap:"normal",boxSizing:"border-box"}),[e.fontSize,e.fontFamily,e.fontStyle,e.fontWeight,e.textDecoration,e.fill,e.rotation,n]),i=useCallback(d=>{d.style.height="auto",d.style.height=`${d.scrollHeight}px`;let f=document.createElement("span");f.style.font=window.getComputedStyle(d).font,f.style.fontSize=d.style.fontSize,f.style.fontFamily=d.style.fontFamily,f.style.fontWeight=d.style.fontWeight,f.style.fontStyle=d.style.fontStyle,f.style.visibility="hidden",f.style.position="absolute",f.style.whiteSpace="pre";let m=d.value.split(`
|
|
4
|
-
`),u=0;document.body.appendChild(f);for(let x of m){f.textContent=x||" ";let h=f.offsetWidth;h>u&&(u=h);}document.body.removeChild(f);let p=10;d.style.width=`${Math.max(200,u+p+20)}px`;},[]);return useEffect(()=>{let d=l.current;d&&(d.style.fontSize=`${e.fontSize*n}px`,d.style.fontFamily=e.fontFamily,d.style.fontStyle=e.fontStyle,d.style.fontWeight=e.fontWeight==="bold"?"bold":"normal",d.style.textDecoration=e.textDecoration,d.style.color=e.fill,i(d));},[o,e.fontSize,e.fontFamily,e.fontStyle,e.fontWeight,e.textDecoration,e.fill,n,i]),jsx("div",{style:{position:"absolute",top:`${r.top}px`,left:`${r.left}px`,zIndex:1e3},children:jsx("textarea",{ref:d=>{if(l.current=d,s.current=d,d){d.focus();let f=d.value.length;d.setSelectionRange(f,f),i(d);}},value:o,onChange:d=>{t(d.target.value);},onKeyDown:d=>{d.key==="Escape"&&a();},style:c},`${e.fontWeight}-${e.fontStyle}-${e.textDecoration}-${e.fontSize}-${e.fontFamily}`)})};var au=memo(({shortAnswer:e,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:n})=>{let s=useSelector(F=>F.toolbar.selectedTool),l=s==="pen"||s==="eraser",c=useRef(null),[i,d]=useState(""),[f,m]=useState(false),[u,p]=useState(null);useEffect(()=>{let F=c.current;if(F)return a.current.set(e.id,F),()=>{a.current.delete(e.id);}},[e.id,a]);let x=e.data.responseOptions.correctShortAnswer?.trim().toLowerCase()||"",h=f&&i.trim().toLowerCase()===x,v=()=>{m(false),d("");},g=()=>h?"\u2713 Correct! \u{1F389}":"\u2717 Try again!",b=()=>h?{bg:"#dcfce7",text:"#166534"}:{bg:"#fee2e2",text:"#991b1b"},y=24,C=60,I=f?50:0,S=50,w=12,N=e.data.feedbackMode==="practice"?48:0,U=12,E=30,D=C+I+E+S+w+U+N+y;return jsxs(Group,{ref:c,draggable:!l,listening:!l,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,name:"sa-element",...l?{}:{onDragEnd:n,onClick:()=>o(e.id),onTap:()=>o(e.id),onContextMenu:F=>{let T=c.current?.getStage()?.getPointerPosition();if(!T)return;let H={x:e.x,y:e.y,width:e.width,height:e.height};T.x>=H.x&&T.x<=H.x+H.width&&T.y>=H.y&&T.y<=H.y+H.height&&r(F.evt,e.id,"shortAnswer");}},children:[jsx(Rect,{fill:"white",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:12,width:e.width,height:D,onTransformEnd:F=>t(e.id,F)}),jsx(Text,{text:e.data.question,x:y,y,fontSize:20,fontStyle:"bold",fill:"#111827",width:e.width-y*2,listening:false}),f&&jsxs(Fragment,{children:[jsx(Rect,{x:y,y:C,width:e.width-y*2,height:I,fill:b().bg,cornerRadius:8}),jsx(Text,{x:y,y:C,width:e.width-y*2,height:I,text:g(),fontSize:16,fontStyle:"bold",fill:b().text,align:"center",verticalAlign:"middle",listening:false})]}),jsx(Text,{text:"Answer:",x:y,y:C+I+w,fontSize:14,fill:"#6b7280",width:e.width-y*2,listening:false}),jsx(Rect,{x:y,y:C+I+E,width:e.width-y*2,height:S,fill:"#ffffff",stroke:h?"#22c55e":f?"#ef4444":"#d1d5db",strokeWidth:2,cornerRadius:8}),jsx(Html,{divProps:{style:{position:"absolute",top:`${C+I+E}px`,left:`${y}px`,width:`${e.width-y*2}px`,height:`${S}px`,pointerEvents:f?"none":"auto"}},children:jsx("input",{type:"text",value:i,onChange:F=>d(F.target.value),disabled:f,placeholder:"Type your answer...",className:"h-full w-full border-0 bg-white px-3 text-gray-900 focus:outline-none",style:{fontSize:"16px",pointerEvents:f?"none":"auto"}})}),e.data.feedbackMode==="practice"&&jsxs(Group,{y:C+I+E+S+w+U,children:[!f&&jsxs(Group,{onMouseDown:F=>{F.cancelBubble=true,p("check");},onMouseUp:F=>{F.cancelBubble=true,p(null),i.length>0&&m(true);},onMouseLeave:F=>{F.cancelBubble=true,p(null);},onTouchStart:F=>{F.cancelBubble=true,p("check");},onTouchEnd:F=>{F.cancelBubble=true,p(null),i.length>0&&m(true);},scaleX:u==="check"?.95:1,scaleY:u==="check"?.95:1,children:[jsx(Rect,{x:y,width:e.width-y*2,height:48,fill:i.length===0?"#9ca3af":"#096B76",cornerRadius:8,onClick:F=>F.cancelBubble=true,onTap:F=>F.cancelBubble=true}),jsx(Text,{x:y,width:e.width-y*2,height:48,text:"Check",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]}),f&&jsxs(Group,{onMouseDown:()=>p("reset"),onMouseUp:()=>{p(null),v();},onMouseLeave:()=>p(null),onTouchStart:()=>p("reset"),onTouchEnd:()=>{p(null),v();},scaleX:u==="reset"?.95:1,scaleY:u==="reset"?.95:1,children:[jsx(Rect,{x:y,width:e.width-y*2,height:48,fill:"#ef4444",cornerRadius:8,onClick:F=>F.cancelBubble=true,onTap:F=>F.cancelBubble=true}),jsx(Text,{x:y,width:e.width-y*2,height:48,text:"Reset",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]})]})]})});au.displayName="ShortAnswer";var ou=au;var su=({shortAnswers:e,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:n})=>jsx(Fragment,{children:e.map(s=>jsx(ou,{shortAnswer:s,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:l=>n(l,s.id)},s.id))});var nu=e=>{let o=useDispatch(),a=useSelector(pe)?.fillInTheBlanks||[],r=useRef(new Map),n=useCallback((s,l)=>{let c=s.target;o(Po({id:l,x:c.x(),y:c.y()})),e?.();},[o,e]);return {fillInTheBlanks:a,fibRefs:r,handleFillInTheBlanksDragEnd:n}};var iu=memo(({fillInTheBlank:e,handleSelect:o,handleTransform:t,handleDragEnd:a,onContextMenu:r})=>{let n=useSelector(D=>D.toolbar.selectedTool),s=n==="pen"||n==="eraser",l=useRef(null),[c,i]=useState(""),[d,f]=useState(false),[m,u]=useState(null);useEffect(()=>{if(l.current)return ()=>{}},[e.id]);let p=e.data.responseOptions.correctShortAnswer?.trim().toLowerCase()||"",x=d&&c.trim().toLowerCase()===p,h=()=>{f(false),i("");},v=()=>x?"\u2713 Correct! \u{1F389}":"\u2717 Try again!",g=()=>x?{bg:"#dcfce7",text:"#166534"}:{bg:"#fee2e2",text:"#991b1b"},b=24,y=80,C=d?50:0,I=45,S=8,w=20,N=e.data.feedbackMode==="practice"?48:0,U=12,E=y+C+S+w+S+U+N+b;return jsxs(Group,{ref:l,draggable:!s,listening:!s,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,name:"fib-element",...s?{}:{onDragEnd:D=>a(D,e.id),onClick:()=>o(e.id),onTap:()=>o(e.id),onContextMenu:D=>{let F=l.current?.getStage()?.getPointerPosition();if(!F||!r)return;let T={x:e.x,y:e.y,width:e.width,height:e.height};F.x>=T.x&&F.x<=T.x+T.width&&F.y>=T.y&&F.y<=T.y+T.height&&r(D.evt,e.id,"fillInTheBlanks");}},children:[jsx(Rect,{fill:"white",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:12,width:e.width,height:E,onTransformEnd:D=>t(e.id,D)}),jsx(Text,{text:e.data.question,x:b,y:b,fontSize:20,fontStyle:"bold",fill:"#111827",width:e.width-b*2-200,listening:false}),jsx(Rect,{x:e.width-b-180,y:b+10,width:180,height:I,fill:"#ffffff",stroke:x?"#22c55e":d?"#ef4444":"#096B76",strokeWidth:2,cornerRadius:8}),jsx(Html,{divProps:{style:{position:"absolute",top:`${b+10}px`,left:`${e.width-b-180}px`,width:"180px",height:`${I}px`,pointerEvents:d?"none":"auto"}},children:jsx("input",{type:"text",value:c,onChange:D=>i(D.target.value),disabled:d,placeholder:"__________",className:"h-full w-full border-0 bg-white px-2 text-center text-gray-900 focus:outline-none",style:{fontSize:"14px",pointerEvents:d?"none":"auto"}})}),d&&jsxs(Fragment,{children:[jsx(Rect,{x:b,y,width:e.width-b*2,height:C,fill:g().bg,cornerRadius:8}),jsx(Text,{x:b,y,width:e.width-b*2,height:C,text:v(),fontSize:16,fontStyle:"bold",fill:g().text,align:"center",verticalAlign:"middle",listening:false})]}),jsx(Text,{text:"\u26A0\uFE0F Answer is case sensitive",x:b,y:y+C+S,fontSize:10,fontStyle:"italic",fill:"#6b7280",width:e.width-b*2,listening:false}),e.data.feedbackMode==="practice"&&jsxs(Group,{y:y+C+S+w+S+U,children:[!d&&jsxs(Group,{onMouseDown:D=>{D.cancelBubble=true,u("check");},onMouseUp:D=>{D.cancelBubble=true,u(null),c.length>0&&f(true);},onMouseLeave:D=>{D.cancelBubble=true,u(null);},onTouchStart:D=>{D.cancelBubble=true,u("check");},onTouchEnd:D=>{D.cancelBubble=true,u(null),c.length>0&&f(true);},scaleX:m==="check"?.95:1,scaleY:m==="check"?.95:1,children:[jsx(Rect,{x:b,width:e.width-b*2,height:48,fill:c.length===0?"#9ca3af":"#096B76",cornerRadius:8,onClick:D=>D.cancelBubble=true,onTap:D=>D.cancelBubble=true}),jsx(Text,{x:b,width:e.width-b*2,height:48,text:"Check",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]}),d&&jsxs(Group,{onMouseDown:()=>u("reset"),onMouseUp:()=>{u(null),h();},onMouseLeave:()=>u(null),onTouchStart:()=>u("reset"),onTouchEnd:()=>{u(null),h();},scaleX:m==="reset"?.95:1,scaleY:m==="reset"?.95:1,children:[jsx(Rect,{x:b,width:e.width-b*2,height:48,fill:"#ef4444",cornerRadius:8,onClick:D=>D.cancelBubble=true,onTap:D=>D.cancelBubble=true}),jsx(Text,{x:b,width:e.width-b*2,height:48,text:"Reset",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]})]})]})});iu.displayName="FillInTheBlanks";var lu=iu;var uu=({fillInTheBlanks:e,handleSelect:o,handleTransform:t,onContextMenu:a,handleDragEnd:r})=>jsx(Fragment,{children:e.map(n=>jsx(lu,{fillInTheBlank:n,handleSelect:o,handleTransform:t,onContextMenu:a,handleDragEnd:r},n.id))});var Pi=memo(({longAnswer:e,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:n})=>{let s=useSelector(F=>F.toolbar.selectedTool),l=s==="pen"||s==="eraser",c=useRef(null),[i,d]=useState(""),[f,m]=useState(false),[u,p]=useState(null);useEffect(()=>{let F=c.current;if(F)return a.current.set(e.id,F),()=>{a.current.delete(e.id);}},[e.id,a]);let x=e.data.responseOptions.correctLongAnswer?.trim().toLowerCase()||"",h=f&&i.trim().toLowerCase()===x,v=()=>{m(false),d("");},g=()=>h?"\u2713 Correct! \u{1F389}":"\u2717 Needs review - this is a long answer question",b=()=>h?{bg:"#dcfce7",text:"#166534"}:{bg:"#fef3c7",text:"#92400e"},y=24,C=60,I=f?60:0,S=120,w=12,N=48,U=12,E=30,D=C+I+E+S+w+U+N+y;return jsxs(Group,{ref:c,draggable:!l,listening:!l,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,name:"la-element",...l?{}:{onDragEnd:n,onClick:()=>o(e.id),onTap:()=>o(e.id),onContextMenu:F=>{let T=c.current?.getStage()?.getPointerPosition();if(!T||!r)return;let H={x:e.x,y:e.y,width:e.width,height:e.height};T.x>=H.x&&T.x<=H.x+H.width&&T.y>=H.y&&T.y<=H.y+H.height&&r(F.evt,e.id,"longAnswer");}},children:[jsx(Rect,{fill:"white",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:12,width:e.width,height:D,onTransformEnd:F=>t(e.id,F)}),jsx(Text,{text:e.data.question,x:y,y,fontSize:20,fontStyle:"bold",fill:"#111827",width:e.width-y*2,listening:false}),f&&jsxs(Fragment,{children:[jsx(Rect,{x:y,y:C,width:e.width-y*2,height:I,fill:b().bg,cornerRadius:8}),jsx(Text,{x:y,y:C,width:e.width-y*2,height:I,text:g(),fontSize:14,fontStyle:"bold",fill:b().text,align:"center",verticalAlign:"middle",listening:false})]}),jsx(Text,{text:"Answer (Extended response):",x:y,y:C+I+w,fontSize:14,fill:"#6b7280",width:e.width-y*2,listening:false}),jsx(Rect,{x:y,y:C+I+E,width:e.width-y*2,height:S,fill:"#ffffff",stroke:"#d1d5db",strokeWidth:2,cornerRadius:8}),jsx(Html,{divProps:{style:{position:"absolute",top:`${C+I+E}px`,left:`${y}px`,width:`${e.width-y*2}px`,height:`${S}px`,pointerEvents:f?"none":"auto"}},children:jsx("textarea",{value:i,onChange:F=>d(F.target.value),disabled:f,placeholder:`Type your extended answer here...\r
|
|
2
|
+
import*as xe from'react';import xe__default,{forwardRef,useRef,useEffect,useCallback,useImperativeHandle,memo,useState,createElement,useMemo,useId,useLayoutEffect}from'react';import {Group,Image,Line,Rect,Arc,Arrow,Wedge,Ring,Ellipse,RegularPolygon,Star,Circle,Text,Stage,Layer,Transformer}from'react-konva';import {useSelector,useDispatch}from'react-redux';export{Provider as ReduxProvider}from'react-redux';import {createSlice,configureStore}from'@reduxjs/toolkit';import Vl from'perfect-freehand';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Html}from'react-konva-utils';import {CameraPlus,Camera,Stop,X as X$1,Microphone,MicrophoneSlash,Record,Download,Cursor,PenNib,Eraser,TextAa,Shapes,Cards,Image as Image$1,Square,Circle as Circle$1,Triangle,Hexagon,Star as Star$1,Pizza,ArrowRight,LineSegment,Circuitry,ListBullets,ToggleRight,Textbox,TextUnderline,MonitorPlay,ArrowCounterClockwise,ArrowClockwise,Trash,Export,SidebarSimple,Plus,ArrowUpIcon,Lock,LinkIcon,SpeakerHifiIcon,NotePencilIcon,Palette,ScissorsIcon,PencilSimple,CopySimple,Chat,Stack,Check,Play,SpeakerSimpleSlash,SpeakerHigh,ScribbleLoop,Exam,CheckCircle,XCircle,TextB,TextItalic,Warning,CloudArrowUp as CloudArrowUp$1,ArrowsDownUp,Shuffle}from'@phosphor-icons/react/dist/ssr';import {CaretLeft,CloudArrowUp,GearSix,User,EyeIcon,Stack as Stack$1,X as X$2,DotsSixVertical,ArrowUp,ArrowDown,Question,FrameCorners,Cards as Cards$1,TextT,Shapes as Shapes$1,VideoCamera,Image as Image$2}from'@phosphor-icons/react';import {createPortal}from'react-dom';import Vd from'use-image';import {motion,AnimatePresence,Reorder}from'framer-motion';import {useSyncExternalStoreWithSelector}from'use-sync-external-store/shim/with-selector.js';import {v4}from'uuid';import {QueryClient}from'@tanstack/react-query';var Al=e=>{throw TypeError(e)};var Tl=(e,o,t)=>o.has(e)||Al("Cannot "+t);var j=(e,o,t)=>(Tl(e,o,"read from private field"),t?t.call(e):o.get(e)),ke=(e,o,t)=>o.has(e)?Al("Cannot add the same private member more than once"):o instanceof WeakSet?o.add(e):o.set(e,t),Ce=(e,o,t,a)=>(Tl(e,o,"write to private field"),o.set(e,t),t);var Rl=(e,o,t,a)=>({set _(r){Ce(e,o,r);},get _(){return j(e,o,a)}});var ge=()=>useDispatch(),ee=e=>useSelector(e),Ut=ge,aa=ee;var en=20,Pl=e=>({id:`slide-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,name:e||`Slide ${Date.now()}`,thumbnail:void 0,backgroundColor:"#ffffff",lines:[],shapes:[],images:[],videos:[],flashcards:[],photoFrames:[],texts:[],activityType:"",multipleChoices:[],trueFalses:[],shortAnswers:[],LongAnswer:[],fillInTheBlanks:[],showMcqForm:false,showFlashcardForm:false,editingActivity:null,editingFlashcard:null,createdAt:Date.now(),updatedAt:Date.now()}),Qs=Pl("Slide 1"),_f={slides:[Qs],currentSlideId:Qs.id,history:{[Qs.id]:{past:[],future:[]}},isSketchMode:true,editingTextId:null},Dl=createSlice({name:"canvas",initialState:_f,reducers:{addSlide:e=>{if(e.slides.length>=en)return;let o=Pl(`Slide ${e.slides.length+1}`);e.slides.push(o),e.currentSlideId=o.id,e.history[o.id]={past:[],future:[]};},deleteSlide:(e,o)=>{if(e.slides.length<=1)return;let t=e.slides.findIndex(a=>a.id===o.payload);if(t!==-1&&(e.slides.splice(t,1),delete e.history[o.payload],e.currentSlideId===o.payload)){let a=Math.max(0,t-1);e.currentSlideId=e.slides[a].id;}},duplicateSlide:(e,o)=>{if(e.slides.length>=en)return;let t=e.slides.findIndex(s=>s.id===o.payload);if(t===-1)return;let a=e.slides[t],r={...a,id:`slide-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,name:`${a.name} (Copy)`,createdAt:Date.now(),updatedAt:Date.now(),lines:JSON.parse(JSON.stringify(a.lines)),images:JSON.parse(JSON.stringify(a.images)),videos:JSON.parse(JSON.stringify(a.videos)),shapes:JSON.parse(JSON.stringify(a.shapes)),flashcards:JSON.parse(JSON.stringify(a.flashcards)),photoFrames:JSON.parse(JSON.stringify(a.photoFrames))};e.slides.splice(t+1,0,r),e.currentSlideId=r.id,e.history[r.id]={past:[],future:[]};},setCurrentSlide:(e,o)=>{e.slides.find(a=>a.id===o.payload)&&(e.currentSlideId=o.payload);},updateSlideThumbnail:(e,o)=>{let t=e.slides.find(a=>a.id===o.payload.id);t&&(t.thumbnail=o.payload.thumbnail,t.updatedAt=Date.now());},setBackgroundColor:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.backgroundColor=o.payload,t.updatedAt=Date.now());},reorderSlides:(e,o)=>{let{fromIndex:t,toIndex:a}=o.payload;if(t<0||t>=e.slides.length||a<0||a>=e.slides.length)return;let[r]=e.slides.splice(t,1);e.slides.splice(a,0,r);},loadSlides:(e,o)=>{e.slides=o.payload.slides.map(t=>({...t,showMcqForm:false})),e.currentSlideId=o.payload.currentSlideId,e.history={},o.payload.slides.forEach(t=>{e.history[t.id]={past:[],future:[]};});},addLine:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,id:o.payload.id||`line-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,timestamp:o.payload.timestamp||Date.now(),x:o.payload.x||0,y:o.payload.y||0};t.lines.push(a),t.updatedAt=Date.now();}},removeLine:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);t&&o.payload>=0&&o.payload<t.lines.length&&(t.lines.splice(o.payload,1),t.updatedAt=Date.now());},updateLastLine:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);t&&t.lines.length>0&&(t.lines[t.lines.length-1].points=o.payload,t.updatedAt=Date.now());},finalizeDrawing:e=>{let o=e.slides.find(t=>t.id===e.currentSlideId);o&&(o.updatedAt=Date.now());},setLines:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.lines=o.payload,t.updatedAt=Date.now());},updateLinePosition:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.lines.find(r=>r.id===o.payload.id);a&&(a.x=o.payload.x,a.y=o.payload.y,t.updatedAt=Date.now());}},updateLineTransform:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.lines.find(r=>r.id===o.payload.id);a&&(a.x=o.payload.x,a.y=o.payload.y,a.scaleX=o.payload.scaleX,a.scaleY=o.payload.scaleY,a.rotation=o.payload.rotation,t.updatedAt=Date.now());}},deleteLineById:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.lines.findIndex(r=>r.id===o.payload);a!==-1&&(t.lines.splice(a,1),t.updatedAt=Date.now());}},duplicateLine:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.lines.find(r=>r.id===o.payload);if(a){let r={...a,id:`line-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,x:(a.x||0)+20,y:(a.y||0)+20,timestamp:Date.now()};t.lines.push(r),t.updatedAt=Date.now();}}},updateElementOrder:(e,o)=>{let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r,newTimestamp:s}=o.payload;switch(r){case "image":let n=t.images.find(g=>g.id===a);n&&(n.timestamp=s);break;case "video":let i=t.videos.find(g=>g.id===a);i&&(i.timestamp=s);break;case "shape":let f=t.shapes.find(g=>g.id===a);f&&(f.timestamp=s);break;case "text":let l=t.texts.find(g=>g.id===a);l&&(l.timestamp=s);break;case "flashcard":let u=t.flashcards.find(g=>g.id===a);u&&(u.timestamp=s);break;case "photoFrame":let d=t.photoFrames.find(g=>g.id===a);d&&(d.timestamp=s);break;case "mcq":let m=t.multipleChoices.find(g=>g.id===a);m&&(m.timestamp=s);break;case "trueFalse":let c=t.trueFalses.find(g=>g.id===a);c&&(c.timestamp=s);break;case "shortAnswer":let p=t.shortAnswers.find(g=>g.id===a);p&&(p.timestamp=s);break;case "longAnswer":let x=t.LongAnswer.find(g=>g.id===a);x&&(x.timestamp=s);break;case "fillInTheBlanks":let h=t.fillInTheBlanks.find(g=>g.id===a);h&&(h.timestamp=s);break;case "line":let v=t.lines.find(g=>g.id===a);v&&(v.timestamp=s);break}t.updatedAt=Date.now();}},addImage(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};t.images.push(a),t.updatedAt=Date.now();}},updateImage(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.images[a]={...t.images[a],...o.payload},t.updatedAt=Date.now());}},deleteImage(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.images=t.images.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateImage(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.find(r=>r.id===o.payload);if(a){let r={...a,id:`img-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.images.push(r),t.updatedAt=Date.now();}}},addVideo(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};t.videos.push(a),t.updatedAt=Date.now();}},updateVideo(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.videos.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.videos[a]={...t.videos[a],...o.payload},t.updatedAt=Date.now());}},toggleVideoPlaying(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.videos.find(r=>r.id===o.payload);a&&(a.isPlaying=!a.isPlaying,t.updatedAt=Date.now());}},deleteVideo(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.videos=t.videos.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateVideo(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.videos.find(r=>r.id===o.payload);if(a){let r={...a,id:`vid-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,isPlaying:false,timestamp:Date.now()};t.videos.push(r),t.updatedAt=Date.now();}}},addShape(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};t.shapes?.push(a),t.updatedAt=Date.now();}},updateShape(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.shapes.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.shapes[a]={...t.shapes[a],...o.payload},t.updatedAt=Date.now());}},duplicateShape(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.shapes.find(r=>r.id===o.payload);if(a){let r={...a,id:`shape-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.shapes.push(r),t.updatedAt=Date.now();}}},deleteShape(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.shapes=t.shapes.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},addMultipleChoice(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){t.multipleChoices||(t.multipleChoices=[]);let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.multipleChoices.length>0){let r=t.multipleChoices[t.multipleChoices.length-1];a.x=r.x+20,a.y=r.y+20;}t.multipleChoices.push(a),t.updatedAt=Date.now();}},updateMultipleChoice(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t&&t.multipleChoices){let a=t.multipleChoices.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.multipleChoices[a]={...t.multipleChoices[a],...o.payload},t.updatedAt=Date.now());}},editMultipleChoice(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t&&t.multipleChoices){let a=t.multipleChoices.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.multipleChoices[a]={...t.multipleChoices[a],...o.payload},t.updatedAt=Date.now());}},duplicateMultipleChoice(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.multipleChoices.find(r=>r.id===o.payload);if(a){let r={...a,id:`mcq-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.multipleChoices.push(r),t.updatedAt=Date.now();}}},deleteMultipleChoice(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.multipleChoices=t.multipleChoices.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},addTrueFalse(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){t.trueFalses||(t.trueFalses=[]);let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.trueFalses.length>0){let r=t.trueFalses[t.trueFalses.length-1];a.x=r.x+20,a.y=r.y+20;}t.trueFalses.push(a),t.updatedAt=Date.now();}},updateTrueFalse(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.trueFalses.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.trueFalses[a]={...t.trueFalses[a],...o.payload},t.updatedAt=Date.now());}},deleteTrueFalse(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.trueFalses=t.trueFalses.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateTrueFalse(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.trueFalses.find(r=>r.id===o.payload);if(a){let r={...a,id:`shape-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.trueFalses.push(r),t.updatedAt=Date.now();}}},addShortAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){t.shortAnswers||(t.shortAnswers=[]);let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.shortAnswers.length>0){let r=t.shortAnswers[t.shortAnswers.length-1];a.x=r.x+20,a.y=r.y+20;}t.shortAnswers.push(a),t.updatedAt=Date.now();}},updateShortAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.shortAnswers.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.shortAnswers[a]={...t.shortAnswers[a],...o.payload},t.updatedAt=Date.now());}},duplicateShortAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.shortAnswers.find(r=>r.id===o.payload);if(a){let r={...a,id:`shortAnswer-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.shortAnswers.push(r),t.updatedAt=Date.now();}}},deleteShortAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.shortAnswers=t.shortAnswers.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},addLongAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){t.LongAnswer||(t.LongAnswer=[]);let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.LongAnswer.length>0){let r=t.LongAnswer[t.LongAnswer.length-1];a.x=r.x+20,a.y=r.y+20;}t.LongAnswer.push(a),t.updatedAt=Date.now();}},updateLongAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.LongAnswer.find(r=>r.id===o.payload.id);a&&(Object.assign(a,o.payload),t.updatedAt=Date.now());}},deleteLongAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.LongAnswer=t.LongAnswer.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateLongAnswer(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.LongAnswer.find(r=>r.id===o.payload);if(a){let r={...a,id:`${a.id}-copy-${Date.now()}`,timestamp:Date.now()};t.LongAnswer.push(r),t.updatedAt=Date.now();}}},setShowMcqForm(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.showMcqForm=o.payload,t.updatedAt=Date.now());},setShowFlashcardForm(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.showFlashcardForm=o.payload,t.updatedAt=Date.now());},addFillInTheBlanks(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){t.fillInTheBlanks||(t.fillInTheBlanks=[]);let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.fillInTheBlanks.length>0){let r=t.fillInTheBlanks[t.fillInTheBlanks.length-1];a.x=r.x+20,a.y=r.y+20;}t.fillInTheBlanks.push(a),t.updatedAt=Date.now();}},updateFillInTheBlanks(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.fillInTheBlanks.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.fillInTheBlanks[a]={...t.fillInTheBlanks[a],...o.payload},t.updatedAt=Date.now());}},deleteFillInTheBlanks(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.fillInTheBlanks=t.fillInTheBlanks.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateFillInTheBlanks(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.fillInTheBlanks.find(r=>r.id===o.payload);if(a){let r={...a,id:`fillInTheBlank-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.fillInTheBlanks.push(r),t.updatedAt=Date.now();}}},setActivityType(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.activityType=o.payload,t.updatedAt=Date.now());},setEditingActivity(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.editingActivity=o.payload,t.updatedAt=Date.now());},bringToFront(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r}=o.payload;if(r==="image"){let s=t.images.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.images.splice(s,1);t.images.push(n);}}else if(r==="video"){let s=t.videos.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.videos.splice(s,1);t.videos.push(n);}}else if(r==="shape"){let s=t.shapes.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.shapes.splice(s,1);t.shapes.push(n);}}else if(r==="flashcard"){let s=t.flashcards.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.flashcards.splice(s,1);t.flashcards.push(n);}}else if(r==="photoFrame"){let s=t.photoFrames.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.photoFrames.splice(s,1);t.photoFrames.push(n);}}else if(r==="text"){let s=t.texts.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.texts.splice(s,1);t.texts.push(n);}}else if(r==="trueFalse"){let s=t.trueFalses.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.trueFalses.splice(s,1);t.trueFalses.push(n);}}else if(r==="shortAnswer"){let s=t.shortAnswers.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.shortAnswers.splice(s,1);t.shortAnswers.push(n);}}else if(r==="fillInTheBlanks"){let s=t.fillInTheBlanks.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.fillInTheBlanks.splice(s,1);t.fillInTheBlanks.push(n);}}t.updatedAt=Date.now();}},sendToBack(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r}=o.payload;if(r==="image"){let s=t.images.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.images.splice(s,1);t.images.unshift(n);}}else if(r==="video"){let s=t.videos.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.videos.splice(s,1);t.videos.unshift(n);}}else if(r==="shape"){let s=t.shapes.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.shapes.splice(s,1);t.shapes.unshift(n);}}else if(r==="flashcard"){let s=t.flashcards.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.flashcards.splice(s,1);t.flashcards.unshift(n);}}else if(r==="photoFrame"){let s=t.photoFrames.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.photoFrames.splice(s,1);t.photoFrames.unshift(n);}}else if(r==="text"){let s=t.texts.findIndex(n=>n.id===a);if(s!==-1){let[n]=t.texts.splice(s,1);t.texts.unshift(n);}}t.updatedAt=Date.now();}},toggleLock(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r}=o.payload,n=(r==="image"?t.images:r==="video"?t.videos:r==="shape"?t.shapes:r==="flashcard"?t.flashcards:r==="photoFrame"?t.photoFrames:r==="trueFalse"?t.trueFalses:r==="shortAnswer"?t.shortAnswers:r==="fillInTheBlanks"?t.fillInTheBlanks:t.texts).find(i=>i.id===a);n&&(n.locked=!n.locked,"draggable"in n&&(n.draggable=!n.locked),t.updatedAt=Date.now());}},setLink(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r,link:s}=o.payload,i=(r==="image"?t.images:r==="video"?t.videos:r==="shape"?t.shapes:r==="flashcard"?t.flashcards:r==="photoFrame"?t.photoFrames:r==="mcq"?t.multipleChoices:r==="trueFalse"?t.trueFalses:r==="shortAnswer"?t.shortAnswers:r==="fillInTheBlanks"?t.fillInTheBlanks:t.texts).find(f=>f.id===a);i&&(i.link=s,t.updatedAt=Date.now());}},setAltText(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r,altText:s}=o.payload,i=(r==="image"?t.images:r==="video"?t.videos:r==="shape"?t.shapes:r==="flashcard"?t.flashcards:r==="photoFrame"?t.photoFrames:r==="trueFalse"?t.trueFalses:r==="shortAnswer"?t.shortAnswers:r==="fillInTheBlanks"?t.fillInTheBlanks:t.texts).find(f=>f.id===a);i&&(i.altText=s,t.updatedAt=Date.now());}},setAudioData(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let{id:a,type:r,audioData:s}=o.payload,i=(r==="image"?t.images:r==="video"?t.videos:r==="shape"?t.shapes:r==="flashcard"?t.flashcards:r==="photoFrame"?t.photoFrames:r==="trueFalse"?t.trueFalses:r==="shortAnswer"?t.shortAnswers:r==="fillInTheBlanks"?t.fillInTheBlanks:t.texts).find(f=>f.id===a);i&&(i.audioData=s,t.updatedAt=Date.now());}},clearCanvas:e=>{let o=e.slides.find(t=>t.id===e.currentSlideId);o&&(o.lines=[],o.images=[],o.videos=[],o.shapes=[],o.flashcards=[],o.photoFrames=[],o.texts=[],o.multipleChoices=[],o.trueFalses=[],o.shortAnswers=[],o.LongAnswer=[],o.fillInTheBlanks=[],o.updatedAt=Date.now());},addText(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};t.texts.push(a),t.updatedAt=Date.now();}},updateText(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.texts.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.texts[a]={...t.texts[a],...o.payload},t.updatedAt=Date.now());}},deleteText(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.texts=t.texts.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateText(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.texts.find(r=>r.id===o.payload);if(a){let r={...a,id:`text-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,timestamp:Date.now()};t.texts.push(r),t.updatedAt=Date.now();}}},addFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};if(t.flashcards.length>=40){alert("You can add maximum 40 flashcards");return}t.flashcards.push(a),t.updatedAt=Date.now();}},updateFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.flashcards.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.flashcards[a]={...t.flashcards[a],...o.payload},t.updatedAt=Date.now());}},deleteFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.flashcards=t.flashcards.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicateFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.flashcards.find(r=>r.id===o.payload);if(a){let r={...a,id:`flashcard-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,currentIndex:0,timestamp:Date.now()};t.flashcards.push(r),t.updatedAt=Date.now();}}},editFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.editingFlashcard=o.payload);},nextFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.flashcards.find(r=>r.id===o.payload);if(a&&a.images.length>0){if(a.order==="sequential")a.currentIndex=(a.currentIndex+1)%a.images.length;else {a.navigationHistory||(a.navigationHistory=[a.currentIndex]);let r=a.images.map((s,n)=>n).filter(s=>s!==a.currentIndex);if(r.length>0){let s=r[Math.floor(Math.random()*r.length)];a.navigationHistory.push(s),a.currentIndex=s;}}t.updatedAt=Date.now();}}},previousFlashcard(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.flashcards.find(r=>r.id===o.payload);a&&a.images.length>0&&(a.order==="sequential"?a.currentIndex=(a.currentIndex-1+a.images.length)%a.images.length:a.navigationHistory&&a.navigationHistory.length>1&&(a.navigationHistory.pop(),a.currentIndex=a.navigationHistory[a.navigationHistory.length-1]),t.updatedAt=Date.now());}},addPhotoFrame(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a={...o.payload,timestamp:o.payload.timestamp||Date.now()};t.photoFrames.push(a),t.updatedAt=Date.now();}},updatePhotoFrame(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.findIndex(r=>r.id===o.payload.id);a!==-1&&(t.photoFrames[a]={...t.photoFrames[a],...o.payload},t.updatedAt=Date.now());}},deletePhotoFrame(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);t&&(t.photoFrames=t.photoFrames.filter(a=>a.id!==o.payload),t.updatedAt=Date.now());},duplicatePhotoFrame(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.find(r=>r.id===o.payload);if(a){let r={...a,id:`photoframe-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:a.x+20,y:a.y+20,isCapturing:false,timestamp:Date.now()};t.photoFrames.push(r),t.updatedAt=Date.now();}}},toggleImageDrawingMode(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.find(r=>r.id===o.payload);a&&(a.isDrawingMode=!a.isDrawingMode,a.annotations||(a.annotations=[]),t.updatedAt=Date.now());}},addImageAnnotation(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.find(r=>r.id===o.payload.imageId);a&&(a.annotations||(a.annotations=[]),a.annotations.push(o.payload.line),t.updatedAt=Date.now());}},updateImageAnnotation(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.find(r=>r.id===o.payload.imageId);a&&a.annotations&&a.annotations.length>0&&(a.annotations[a.annotations.length-1].points=o.payload.points,t.updatedAt=Date.now());}},clearImageAnnotations(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.images.find(r=>r.id===o.payload);a&&(a.annotations=[],t.updatedAt=Date.now());}},togglePhotoFrameDrawingMode(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.find(r=>r.id===o.payload);a&&(a.isDrawingMode=!a.isDrawingMode,a.annotations||(a.annotations=[]),t.updatedAt=Date.now());}},addPhotoFrameAnnotation(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.find(r=>r.id===o.payload.frameId);a&&(a.annotations||(a.annotations=[]),a.annotations.push(o.payload.line),t.updatedAt=Date.now());}},updatePhotoFrameAnnotation(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.find(r=>r.id===o.payload.frameId);a&&a.annotations&&a.annotations.length>0&&(a.annotations[a.annotations.length-1].points=o.payload.points,t.updatedAt=Date.now());}},clearPhotoFrameAnnotations(e,o){let t=e.slides.find(a=>a.id===e.currentSlideId);if(t){let a=t.photoFrames.find(r=>r.id===o.payload);a&&(a.annotations=[],t.updatedAt=Date.now());}},undo:e=>{let o=e.history[e.currentSlideId];if(o&&o.past.length>0){let t=e.slides.findIndex(a=>a.id===e.currentSlideId);if(t>=0)try{let a=e.slides[t];o.future.unshift(JSON.parse(JSON.stringify(a)));let r=o.past.pop();e.slides[t]=r;}catch(a){console.warn("Failed to undo - data too large:",a),o.past=[],o.future=[];}}},redo:e=>{let o=e.history[e.currentSlideId];if(o&&o.future.length>0){let t=e.slides.findIndex(a=>a.id===e.currentSlideId);if(t>=0)try{let a=e.slides[t];o.past.push(JSON.parse(JSON.stringify(a)));let r=o.future.shift();e.slides[t]=r;}catch(a){console.warn("Failed to redo - data too large:",a),o.past=[],o.future=[];}}},saveToHistory:e=>{let o=e.slides.findIndex(t=>t.id===e.currentSlideId);if(o>=0){let t=e.slides[o],a=e.history[e.currentSlideId];if(a)try{let r=JSON.parse(JSON.stringify(t));a.past.push(r),a.future=[],a.past.length>20&&a.past.shift();}catch(r){console.warn("Failed to save to history - data too large:",r),a.past.length>5&&(a.past=a.past.slice(-5)),a.future=[];}}},toggleSketchMode:e=>{e.isSketchMode=!e.isSketchMode;},setSketchMode:(e,o)=>{e.isSketchMode=o.payload;},setEditingTextId:(e,o)=>{e.editingTextId=o.payload;}}}),{addSlide:tn,deleteSlide:an,duplicateSlide:on,setCurrentSlide:rn,updateSlideThumbnail:sn,setBackgroundColor:nn,reorderSlides:Xf,loadSlides:ln,addLine:dn,removeLine:Vr,addImage:un,updateImage:Xa,deleteImage:cn,duplicateImage:qr,addVideo:Hr,updateVideo:Ur,deleteVideo:fn,duplicateVideo:zr,toggleVideoPlaying:Ro,addShape:mn,updateShape:$a,duplicateShape:Wr,deleteShape:pn,addText:hn,updateText:yt,deleteText:gn,duplicateText:Gr,addFlashcard:xn,updateFlashcard:Ya,deleteFlashcard:bn,duplicateFlashcard:Kr,editFlashcard:Po,nextFlashcard:vn,previousFlashcard:yn,addPhotoFrame:wn,updatePhotoFrame:Aa,deletePhotoFrame:Ln,duplicatePhotoFrame:jr,toggleImageDrawingMode:In,addImageAnnotation:Sn,updateImageAnnotation:$f,clearImageAnnotations:Yf,togglePhotoFrameDrawingMode:Cn,addPhotoFrameAnnotation:kn,updatePhotoFrameAnnotation:Jf,clearPhotoFrameAnnotations:Zf,addMultipleChoice:Mn,updateMultipleChoice:oa,editMultipleChoice:Qf,deleteMultipleChoice:An,duplicateMultipleChoice:_r,addTrueFalse:Tn,updateTrueFalse:ra,deleteTrueFalse:Rn,duplicateTrueFalse:Xr,addShortAnswer:Pn,updateShortAnswer:Do,deleteShortAnswer:Dn,duplicateShortAnswer:$r,addLongAnswer:Fn,updateLongAnswer:Fo,deleteLongAnswer:En,duplicateLongAnswer:Yr,addFillInTheBlanks:Bn,updateFillInTheBlanks:Eo,deleteFillInTheBlanks:On,duplicateFillInTheBlanks:Jr,setShowMcqForm:sa,setShowFlashcardForm:Ta,setActivityType:Nn,setEditingActivity:Bo,bringToFront:Vn,sendToBack:qn,toggleLock:Hn,setLink:Zr,setAltText:Qr,setAudioData:es,updateLastLine:em,finalizeDrawing:Un,setLines:tm,updateLinePosition:am,updateLineTransform:ts,deleteLineById:zn,duplicateLine:Wn,updateElementOrder:Oo,clearCanvas:Gn,undo:Kn,redo:jn,saveToHistory:ue,toggleSketchMode:om,setSketchMode:lt,setEditingTextId:No}=Dl.actions,Vo=e=>e.canvas.currentSlideId,he=e=>{let o=e.canvas.currentSlideId,t=e.canvas.slides.findIndex(a=>a.id===o);return t>=0?e.canvas.slides[t]:void 0},qo=e=>e.canvas.slides,_n=e=>e.canvas.slides.length<en,rm=e=>o=>{let t=o.canvas.slides.findIndex(a=>a.id===e);return t>=0?o.canvas.slides[t]:void 0},Fl=Dl.reducer;var Bl=e=>{let o=ge(),t=useRef(null),a=useRef(false),r=ee(c=>c.toolbar.selectedTool),s=ee(c=>c.toolbar.penColor),n=ee(c=>c.toolbar.strokeWidth),i=ee(c=>c.canvas.isSketchMode),f=ee(c=>c.canvas.slides.find(x=>x.id===c.canvas.currentSlideId)?.lines||[]),l=useCallback(c=>{t.current=c;},[]),u=useCallback(c=>{r==="pen"&&t.current&&(o(ue()),t.current.startDrawing(c),a.current=true);},[r,o]),d=useCallback(c=>{!t.current||!a.current||t.current.draw(c);},[]),m=useCallback(()=>{if(!t.current||!a.current)return;let c=t.current.stopDrawing();a.current=false,c&&c.points.length>=4&&o(dn(c)),o(Un()),e?.();},[o,e]);return {lines:f,tool:r,color:s,strokeWidth:n,isSketchMode:i,setCanvasRef:l,startDrawing:u,draw:d,stopDrawing:m}};var ql=forwardRef(({width:e,height:o,tool:t,color:a,strokeWidth:r,isSketchMode:s,style:n},i)=>{let f=useRef(null),l=useRef(false),u=useRef([]),d=useRef(null),m=useRef(t),c=useRef(a),p=useRef(r),x=useRef(s);useEffect(()=>{m.current=t,c.current=a,p.current=r,x.current=s;},[t,a,r,s]);let h=useCallback(()=>{let g=f.current;if(!g)return;let b=g.getContext("2d");b&&b.clearRect(0,0,g.width,g.height);},[]),v=useCallback(()=>{let g=f.current,b=u.current;if(!g||b.length<1)return;let y=g.getContext("2d");if(!y)return;if(y.clearRect(0,0,g.width,g.height),m.current==="eraser"?(y.globalCompositeOperation="destination-out",y.fillStyle="rgba(0,0,0,1)"):(y.globalCompositeOperation="source-over",y.fillStyle=c.current),b.length===1){y.beginPath(),y.arc(b[0].x,b[0].y,p.current/2,0,Math.PI*2),y.fill();return}let S=Vl(b,{size:p.current,thinning:.5,smoothing:.5,streamline:.5,simulatePressure:true,easing:I=>I,start:{taper:0,cap:true},end:{taper:0,cap:true}});if(!(S.length<2)){y.beginPath(),y.moveTo(S[0][0],S[0][1]);for(let I=1;I<S.length;I++)y.lineTo(S[I][0],S[I][1]);y.closePath(),y.fill();}},[]);return useImperativeHandle(i,()=>({startDrawing:g=>{l.current=true,u.current=[{x:g.x,y:g.y}],d.current=g,v();},draw:g=>{if(!l.current||!d.current)return;let b=g.x-d.current.x,y=g.y-d.current.y;Math.sqrt(b*b+y*y)<2||(u.current.push({x:g.x,y:g.y}),d.current=g,v());},stopDrawing:()=>{if(!l.current)return null;if(l.current=false,u.current.length<2)return u.current=[],d.current=null,h(),null;let b=Vl(u.current,{size:p.current,thinning:.5,smoothing:.5,streamline:.5,simulatePressure:true,easing:C=>C,start:{taper:0,cap:true},end:{taper:0,cap:true}}).flatMap(C=>[C[0],C[1]]),y={tool:m.current,points:b,color:c.current,strokeWidth:p.current,isSketch:true};return u.current=[],d.current=null,h(),y},clear:()=>{h(),u.current=[],d.current=null,l.current=false;},isDrawing:()=>l.current,getCanvasElement:()=>f.current}),[h,v]),useEffect(()=>{let g=f.current;g&&(g.width=e,g.height=o);},[e,o]),jsx("canvas",{ref:f,width:e,height:o,style:{position:"absolute",top:0,left:0,pointerEvents:"none",zIndex:1e3,...n}})});ql.displayName="DirectDrawingCanvas";var Hl=ql;var zl=e=>{let o=ge(),a=ee(he)?.images||[],r=useRef(new Map),s=useRef(new Map),n=useRef(new Set);useEffect(()=>{let u=new Set(a.map(d=>d.id));n.current.forEach(d=>{if(!u.has(d)){let m=s.current.get(d);m&&(m.src="",s.current.delete(d)),r.current.delete(d);}}),n.current=u;},[a]),useEffect(()=>()=>{s.current.forEach(u=>{u.src="";}),s.current.clear(),r.current.clear();},[]);let i=useCallback(u=>{if(s.current.has(u.id))return s.current.get(u.id);let d=new window.Image;return d.src=u.src,s.current.set(u.id,d),d},[]),f=useCallback((u,d)=>{let m=u.target,c=m.id();a.find(x=>x.id===c)&&(o(Xa({id:c,x:m.x(),y:m.y(),width:m.width(),height:m.height(),rotation:m.rotation()})),d?.());},[a,o]),l=useCallback((u,d)=>{let m=d.target,c=r.current.get(u);if(!c){console.error("\u274C Image node not found for id:",u);return}let p=m.scaleX(),x=m.scaleY(),h=m.rotation(),v=c.width(),g=c.height(),b=Math.max(5,v*p),y=Math.max(5,g*x);m.scaleX(1),m.scaleY(1),c.width(b),c.height(y),o(Xa({id:u,width:b,height:y,x:m.x(),y:m.y(),rotation:h})),m.getLayer()?.batchDraw(),e?.();},[o,e]);return {images:a,getLoadedImage:i,imageRefs:r,handleDragEnd:f,handleImageTransformEnd:l}};var Wl=e=>{let o=useDispatch(),t=useSelector(he),a=useRef(new Map),r=useMemo(()=>t?.multipleChoices||[],[t?.multipleChoices]),s=useCallback((i,f)=>{let l=f.target,u=l.scaleX(),d=l.scaleY(),m=l.rotation(),c=Math.max(5,l.width()*u),p=Math.max(5,l.height()*d);l.scaleX(1),l.scaleY(1),l.width(c),l.height(p),o(oa({id:i,width:c,height:p,x:l.x(),y:l.y(),rotation:m})),l.getLayer()?.batchDraw(),e?.();},[o,e]);return {multipleChoice:r,handleMcqTransform:s,mcqRefs:a,handleDragEnd:(i,f)=>{o(oa({id:f,x:i.target.x(),y:i.target.y()})),e?.();}}};var Gl=e=>{let o=useDispatch(),t=useSelector(he),a=useRef(new Map),r=useMemo(()=>t?.trueFalses||[],[t?.trueFalses]),s=useCallback((i,f)=>{let l=f.target,u=l.scaleX(),d=l.scaleY(),m=l.rotation(),c=Math.max(5,l.width()*u),p=Math.max(5,l.height()*d);l.scaleX(1),l.scaleY(1),l.width(c),l.height(p),o(ra({id:i,width:c,height:p,x:l.x(),y:l.y(),rotation:m})),l.getLayer()?.batchDraw(),e?.();},[o,e]);return {trueFalse:r,handleTrueFalseTransform:s,handleTrueFalseDragEnd:(i,f)=>{o(ra({id:f,x:i.target.x(),y:i.target.y()})),e?.();},trueFalseRefs:a}};var Kl=e=>{let o=ge(),a=ee(he)?.videos||[],r=useRef(new Map),s=useCallback(f=>{o(Ro(f));},[o]),n=useCallback((f,l)=>{let u=l.target;o(Ur({id:f,x:u.x(),y:u.y()})),e?.();},[o,e]),i=useCallback((f,l)=>{let u=l.target,d=u.scaleX(),m=u.scaleY(),c=u.rotation(),p=Math.max(5,u.width()*d),x=Math.max(5,u.height()*m);u.scaleX(1),u.scaleY(1),u.width(p),u.height(x),o(Ur({id:f,width:p,height:x,x:u.x(),y:u.y(),rotation:c})),u.getLayer()?.batchDraw(),e?.();},[o,e]);return {videos:a,videoRefs:r,handleVideoClick:s,handleVideoDragEnd:n,handleVideoTransformEnd:i}};var Xl=e=>{let o=ge(),a=ee(he)?.shapes||[],r=useRef(new Map),s=useRef(new Map),[n,i]=useState(false),f=useCallback((u,d)=>{let m=d.target;o($a({id:u,x:m.x(),y:m.y()})),e?.();},[o,e]),l=useCallback((u,d)=>{let m=d.target,c=a.find(b=>b.id===u);if(!c)return;let p=m.scaleX(),x=m.scaleY(),h=c.type?.toLowerCase();h==="arrow"||h==="line"||(m.scaleX(1),m.scaleY(1));let g={id:u,x:m.x(),y:m.y(),width:Math.max(5,m.width()*p),height:Math.max(5,m.height()*x),rotation:m.rotation()};switch(h){case "circle":g.radius=m.width()*p/2;break;case "star":g.innerRadius=m.width()*p/4,g.outerRadius=m.width()*p/2;break;case "triangle":g.radius=m.width()*p/2;break;case "ellipse":g.radiusX=m.width()*p/2,g.radiusY=m.height()*x/2;break;case "polygon":g.radius=m.width()*p/2;break;case "ring":let b=p;g.innerRadius=c.innerRadius&&c.innerRadius*b,g.outerRadius=c.outerRadius&&c.outerRadius*b;break;case "wedge":g.radius=c.radius&&c.radius*p;break;case "arc":g.innerRadius=c.innerRadius&&c.innerRadius*p,g.outerRadius=c.outerRadius&&c.outerRadius*p;break;case "arrow":case "line":{g.scaleX=p,g.scaleY=x,delete g.width,delete g.height;break}}o($a(g)),e?.();},[o,e,a]);return {shapes:a,shapeRefs:r,isDragging:n,loadedShapesRef:s,handleShapeDragEnd:f,handleShapeResizeEnd:l}};var Yl=(e,o)=>{let t=Ut(),r=ee(he)?.texts||[],s=useRef(new Map),[n,i]=useState(null),[f,l]=useState("");return {texts:r,textRefs:s,handleDragEnd:(h,v)=>{let g=h.target;t(ue()),t(yt({id:v,x:g.x(),y:g.y()})),e();},handleTransformEnd:h=>{let v=s.current.get(h);if(!v)return;let g=v.scaleX(),b=v.scaleY(),y=r.find(S=>S.id===h);if(!y)return;let C=(g+b)/2;v.scaleX(1),v.scaleY(1),t(ue()),t(yt({id:h,x:v.x(),y:v.y(),width:Math.max(5,(y.width||100)*g),height:Math.max(5,(y.height||50)*b),fontSize:Math.round(Math.max(8,y.fontSize*C)),rotation:v.rotation()})),e();},handleDoubleClick:h=>{let v=r.find(g=>g.id===h);v&&!v.locked&&(i(h),l(v.text));},startEditing:h=>{let v=r.find(g=>g.id===h);v&&!v.locked&&(i(h),l(v.text));},editingTextId:n,editingValue:f,handleEditingChange:h=>{l(h);},finishEditing:()=>{if(n){let h=s.current.get(n),v=r.find(b=>b.id===n);t(ue());let g={id:n,text:f};if(v&&(v.fontWeight!==void 0&&(g.fontWeight=v.fontWeight),v.fontStyle!==void 0&&(g.fontStyle=v.fontStyle),v.textDecoration!==void 0&&(g.textDecoration=v.textDecoration)),o?.current&&f.trim()){let b=o.current,y=b.offsetWidth,C=b.offsetHeight,S=1;if(h){let H=h.getStage();H&&(S=H.scaleX());}let I=14,w=(y-I)/S,q=(C-I)/S,P=f.split(`
|
|
3
|
+
`).length,D=r.find(H=>H.id===n)?.fontSize||24,T=P*D*1.2+10;g.width=Math.max(200,w),g.height=Math.max(50,q,T);}else if(h&&f.trim()){let b=h.text(),y=h.width();h.text(f),h.width(void 0);let C=h.width(),S=h.height();h.text(b),h.width(y),g.width=Math.max(200,C+20),g.height=Math.max(50,S+20);}t(yt(g)),i(null),l(""),t(No(null)),e();}}}};var Jl=e=>{let o=useDispatch(),a=useSelector(he)?.shortAnswers||[],r=useRef(new Map),s=useCallback((n,i)=>{let f=n.target;o(Do({id:i,x:f.x(),y:f.y()})),e?.();},[o,e]);return {shortAnswers:a,saRefs:r,handleShortAnswerDragEnd:s}};var Zl=e=>{let o=useDispatch(),t=useSelector(he),a=useMemo(()=>t?.LongAnswer||[],[t?.LongAnswer]),r=useCallback((s,n)=>{let i=s.target;o(Fo({id:n,x:i.x(),y:i.y()})),e?.();},[o,e]);return {longAnswers:a,handleLongAnswerDragEnd:r}};var ed=e=>{let o=ge(),a=ee(he)?.flashcards||[],r=useRef(new Map),s=useRef(new Map),n=useCallback((d,m)=>{if(s.current.has(m))return s.current.get(m);let c=new window.Image;return c.src=d,s.current.set(m,c),c},[]),i=useCallback((d,m)=>{let c=d.target,p=c.id();a.find(h=>h.id===p)&&(o(Ya({id:p,x:c.x(),y:c.y()})),m?.());},[a,o]),f=useCallback((d,m)=>{let c=m.target,p=c.scaleX(),x=c.scaleY(),h=c.rotation(),v=Math.max(50,c.width()*p),g=Math.max(50,c.height()*x);c.scaleX(1),c.scaleY(1),c.width(v),c.height(g),o(Ya({id:d,width:v,height:g,x:c.x(),y:c.y(),rotation:h})),c.getLayer()?.batchDraw(),e?.();},[o,e]),l=useCallback(d=>{o(vn(d)),e?.();},[o,e]),u=useCallback(d=>{o(yn(d)),e?.();},[o,e]);return {flashcards:a,getLoadedImage:n,flashcardRefs:r,handleDragEnd:i,handleFlashcardTransformEnd:f,handleNext:l,handlePrevious:u}};var od=e=>{let o=ge(),a=ee(he)?.photoFrames||[],r=useRef(new Map),[s,n]=useState(new Map),i=useCallback((c,p)=>{console.log("handleDragEnd"),o(Aa({id:p,x:c.target.x(),y:c.target.y()})),e?.();},[o,e]),f=useCallback((c,p)=>{let x=p.target,h=x.scaleX(),v=x.scaleY(),g=x.rotation(),b=a.find(S=>S.id===c);if(!b)return;let y=Math.max(100,b.width*h),C=Math.max(100,b.height*v);x.scaleX(1),x.scaleY(1),o(Aa({id:c,width:y,height:C,x:x.x(),y:x.y(),rotation:g})),x.getLayer()?.batchDraw(),e?.();},[o,e,a]),l=useCallback(async c=>{try{let p=await navigator.mediaDevices.getUserMedia({video:{width:640,height:480},audio:!1});return n(x=>{let h=new Map(x);return h.set(c,p),h}),o(Aa({id:c,isCapturing:!0})),e?.(),p}catch(p){return console.error("Error accessing camera:",p),null}},[o,e]),u=useCallback(c=>{let p=s.get(c);p&&(p.getTracks().forEach(x=>x.stop()),n(x=>{let h=new Map(x);return h.delete(c),h}),o(Aa({id:c,isCapturing:false})),e?.());},[s,o,e]),d=useCallback((c,p)=>{let x=document.createElement("canvas");x.width=p.videoWidth,x.height=p.videoHeight;let h=x.getContext("2d");if(h){h.drawImage(p,0,0,x.width,x.height);let v=x.toDataURL("image/jpeg",.8);return o(Aa({id:c,capturedImageUrl:v,isCapturing:false})),u(c),e?.(),v}return null},[o,u,e]),m=useRef(s);return useEffect(()=>{m.current=s;},[s]),useEffect(()=>()=>{m.current.forEach(c=>{c.getTracks().forEach(p=>p.stop());});},[]),{photoFrames:a,photoFrameRefs:r,handleDragEnd:i,handlePhotoFrameTransformEnd:f,startCamera:l,stopCamera:u,capturePhoto:d,cameraStreams:s}};var rd=()=>{let e=useRef(null),o=useMemo(()=>({minWidth:340,minHeight:400,maxWidth:520,maxHeight:600}),[]),t=useCallback((s,n)=>e.current?.nodes()[0]?.name()==="mcq-element"?{...n,width:Math.max(o.minWidth,Math.min(n.width,o.maxWidth)),height:Math.max(o.minHeight,Math.min(n.height,o.maxHeight))}:n,[o]),a=useCallback((s,n,i,f,l,u,d=[])=>{if(e.current){if(s&&!d.find(p=>p.id===s)?.isPlaying){let p=n.get(s)||i.get(s)||f.get(s)||l.get(s)||u.get(s);if(p){e.current.boundBoxFunc(t),e.current.nodes([p]),e.current.getLayer()?.batchDraw();return}}e.current.nodes([]),e.current.getLayer()?.batchDraw();}},[]),r=useCallback(()=>{e.current&&(e.current.nodes([]),e.current.getLayer()?.batchDraw());},[]);return {transformerRef:e,attachTransformer:a,deselectTransformer:r,boundBoxFunc:t}};var Dm=(e,o)=>{let t=useRef(void 0);return useEffect(()=>()=>{t.current&&clearTimeout(t.current);},[]),useCallback((...a)=>{t.current&&clearTimeout(t.current),t.current=setTimeout(()=>{e(...a);},o);},[o])},ld=(e,o)=>{let t=Ut(),a=useRef(e);useEffect(()=>{a.current=e;},[e]);let r=useCallback(()=>{if(o.current)try{let n=o.current.toDataURL({pixelRatio:.2,mimeType:"image/jpeg",quality:.6});t(sn({id:a.current,thumbnail:n}));}catch(n){console.error("Error generating thumbnail:",n);}},[o,t]),s=Dm(r,500);return {generateThumbnail:r,debouncedGenerateThumbnail:s}};var Em=e=>e.flatMap(o=>[o[0],o[1]]),os=(e,o)=>{let t=Vl(e,{size:o?.size||8,thinning:o?.thinning||.5,smoothing:o?.smoothing||.5,streamline:o?.streamline||.5,simulatePressure:o?.simulatePressure!==false,easing:a=>a,start:{taper:0,cap:true},end:{taper:0,cap:true}});return Em(t)};var dd=e=>{let o=ge(),t=useRef(false),a=useRef(false),r=useRef([]),[s,n]=useState(null),i=ee(b=>b.toolbar.selectedTool),f=ee(b=>b.toolbar.penColor),l=ee(b=>b.toolbar.strokeWidth),u=ee(b=>b.canvas.isSketchMode),d=ee(b=>b.canvas.slides.find(C=>C.id===b.canvas.currentSlideId)?.images.find(C=>C.id===e)),m=d?.annotations||[],c=d?.isDrawingMode||false,p=d?.width||1,x=d?.height||1,h=useCallback(b=>{if(i!=="pen"&&i!=="eraser")return;t.current=true,a.current=false,r.current=[{x:b.x,y:b.y}];let y=b.x/p,C=b.y/x;n({tool:i,points:[y,C],color:f,strokeWidth:l/p,isSketch:u});},[i,f,l,u,p,x]),v=useCallback(b=>{if(!t.current||!s)return;a.current=true;let y=r.current[r.current.length-1];if(Math.sqrt(Math.pow(b.x-y.x,2)+Math.pow(b.y-y.y,2))<2)return;r.current.push({x:b.x,y:b.y});let S;if(u)S=os(r.current,{size:l*2,thinning:.6,smoothing:.5,streamline:.5,simulatePressure:true}).map((w,q)=>q%2===0?w/p:w/x);else {let I=b.x/p,w=b.y/x;S=[...s.points,I,w];}n(I=>I?{...I,points:S}:null);},[u,l,s,p,x]),g=useCallback(()=>{t.current&&(s&&s.points.length>0&&o(Sn({imageId:e,line:s})),n(null),t.current=false,a.current=false,r.current=[]);},[o,e,s]);return {annotations:m,activeLine:s,isDrawingMode:c,startDrawing:h,draw:v,stopDrawing:g,tool:i}};var md=memo(({img:e,loadedImage:o,imageRefs:t,onDragEnd:a,onTransform:r,onSelect:s,onContextMenu:n})=>{let{annotations:i,activeLine:f,stopDrawing:m,tool:c}=dd(e.id);useEffect(()=>{let g=t.current.get(e.id);g&&(g.width()!==e.width||g.height()!==e.height)&&(console.log("\u{1F504} Syncing dimensions from Redux to Konva:",{id:e.id,reduxWidth:e.width,reduxHeight:e.height,konvaWidth:g.width(),konvaHeight:g.height()}),g.width(e.width),g.height(e.height),g.getLayer()?.batchDraw());},[e.id,e.width,e.height,t]);let p=false;useEffect(()=>{return;},[m,p]);let x=g=>{{s(e.id);return}},h=g=>{return;},v=g=>{};return jsxs(Group,{listening:c!=="pen"&&c!=="eraser",children:[jsx(Image,{id:e.id,ref:g=>{if(g){t.current.set(e.id,g),g.width(e.width),g.height(e.height),g.getLayer()?.batchDraw();let b=g.getStage()?.container();if(b){let y=C=>{let S=g.getStage()?.getPointerPosition();if(S){let I={x:e.x,y:e.y,width:e.width,height:e.height};S.x>=I.x&&S.x<=I.x+I.width&&S.y>=I.y&&S.y<=I.y+I.height&&n(C,e.id,"image");}};b.addEventListener("contextmenu",y),g._contextMenuCleanup=()=>{b.removeEventListener("contextmenu",y);};}}else {let b=t.current.get(e.id);b?._contextMenuCleanup&&b._contextMenuCleanup(),t.current.delete(e.id);}},rotation:e.rotation,draggable:c!=="pen"&&c!=="eraser",onDragEnd:a,onTransformEnd:g=>r(e.id,g),image:o,x:e.x,y:e.y,width:e.width,height:e.height,...c!=="pen"&&c!=="eraser"?{onClick:x,onTap:x,onMouseDown:x,onTouchStart:x,onMouseMove:h,onTouchMove:h,onMouseUp:v,onTouchEnd:v}:{}}),i?.map((g,b)=>{let y=g.points.map((S,I)=>I%2===0?S*e.width+e.x:S*e.height+e.y),C=g.strokeWidth*e.width;return jsx(Line,{points:y,stroke:g.tool==="eraser"?"white":g.color,strokeWidth:C,tension:.5,lineCap:"round",lineJoin:"round",globalCompositeOperation:g.tool==="eraser"?"destination-out":"source-over",fill:g.isSketch?g.color:void 0,closed:g.isSketch,listening:false},b)}),f&&jsx(Line,{points:f.points.map((g,b)=>b%2===0?g*e.width+e.x:g*e.height+e.y),stroke:f.tool==="eraser"?"white":f.color,strokeWidth:f.strokeWidth*e.width,tension:.5,lineCap:"round",lineJoin:"round",globalCompositeOperation:f.tool==="eraser"?"destination-out":"source-over",fill:f.isSketch?f.color:void 0,closed:f.isSketch,listening:false},"active")]})});md.displayName="ImageWithDrawing";var ei=memo(({images:e,getLoadedImage:o,imageRefs:t,onDragEnd:a,onTransform:r,onSelect:s,onContextMenu:n})=>jsx(Fragment,{children:e.map(i=>{let f=o(i);return f?jsx(md,{img:i,loadedImage:f,imageRefs:t,onDragEnd:a,onTransform:r,onSelect:s,onContextMenu:n},i.id):null})}));ei.displayName="ImageLayer";var Gm=({src:e,x:o,id:t,y:a,width:r,height:s,isSelected:n,rotation:i=0,onTransformEnd:f,onDragEnd:l})=>{let u=ge(),d=useRef(null),m=c=>{u(Ro(c));};return jsxs(Group,{draggable:true,x:o,y:a,width:r,height:s,rotation:i,onDragEnd:l,onTransformEnd:f,children:[jsx(Rect,{width:r,height:s,fill:"black",stroke:n?"#4A90E2":"transparent",strokeWidth:2}),jsx(Html,{divProps:{style:{width:`${r}px`,height:`${s}px`,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"center"}},children:jsx("video",{ref:d,src:e,controls:true,autoPlay:true,onClick:()=>m(t),onSeeking:c=>c.stopPropagation(),style:{width:"100%",height:"100%",objectFit:"contain",pointerEvents:"auto"}})})]})},pd=Gm;var Zm=({video:e,isSelected:o,onClick:t,onDragEnd:a,onTransformEnd:r,onContextMenu:s,nodeRef:n})=>{let[i,f]=useState(null),l=useSelector(x=>x.toolbar.selectedTool),u=l==="pen"||l==="eraser";if(useEffect(()=>{if(e.thumbnailDataUrl){let x=new window.Image;x.src=e.thumbnailDataUrl,x.onload=()=>{f(x);};}},[e.thumbnailDataUrl]),!i)return null;let d=e.width/2,m=e.height/2,c=Math.min(e.width,e.height)*.08,p=Math.max(40,Math.min(c,80));return jsxs(Group,{draggable:!u,listening:!u,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,...u?{}:{onDragEnd:a,onTransformEnd:r},ref:x=>{if(n(x),x){let h=x.getStage()?.container();if(h){let v=g=>{let b=x.getStage()?.getPointerPosition();if(b){let y={x:e.x,y:e.y,width:e.width,height:e.height};b.x>=y.x&&b.x<=y.x+y.width&&b.y>=y.y&&b.y<=y.y+y.height&&s(g);}};h.addEventListener("contextmenu",v),x._contextMenuCleanup=()=>{h.removeEventListener("contextmenu",v);};}}},children:[jsx(Image,{image:i,width:e.width,height:e.height,listening:!u,...u?{}:{onClick:t,onTap:t},shadowColor:"black",shadowBlur:o?10:0,shadowOpacity:o?.3:0}),jsx(Circle,{x:d,y:m,radius:p,fill:"white",listening:!u,shadowColor:"black",shadowBlur:20,shadowOpacity:.4,shadowOffsetX:0,shadowOffsetY:2,...u?{}:{onClick:t,onTap:t}}),jsx(Circle,{x:d,y:m,radius:p*.88,fill:"rgba(0, 0, 0, 0.75)",listening:!u,...u?{}:{onClick:t,onTap:t}}),jsx(RegularPolygon,{x:d+p*.1,y:m,sides:3,radius:p*.35,fill:"white",rotation:90,listening:!u,...u?{}:{onClick:t,onTap:t}})]})},gd=Zm;var oi=memo(({videos:e,selectedId:o,videoRefs:t,onVideoClick:a,onDragEnd:r,onTransformEnd:s,onContextMenu:n})=>jsx(Fragment,{children:e.map(i=>jsxs(xe__default.Fragment,{children:[jsx(gd,{video:i,isSelected:!i.isPlaying&&o===i.id,onClick:()=>a(i.id),onDragEnd:f=>r(i.id,f),onTransformEnd:f=>s(i.id,f),onContextMenu:f=>n(f,i.id,"video"),nodeRef:f=>{f?t.current.set(i.id,f):t.current.delete(i.id);}}),i.isPlaying&&(()=>{let f=i.x,l=i.y;if(i.isRecorded){let u=typeof window<"u"?window.innerWidth:i.width,d=typeof window<"u"?window.innerHeight:i.height;f=(u-i.width)/2,l=(d-i.height)/2;}return jsx(pd,{id:i.id,src:i.objectUrl,x:f,y:l,width:i.width,height:i.height,isSelected:false,rotation:i.rotation,onTransformEnd:u=>s(i.id,u),onDragEnd:u=>r(i.id,u)})})()]},i.id))}));oi.displayName="VideoLayer";var ri=memo(({shapes:e,shapeRefs:o,handleShapeDragEnd:t,handleShapeResizeEnd:a,onSelect:r,handleShapeDragStart:s,onContextMenu:n})=>{let i=useSelector(l=>l.toolbar.selectedTool),f=i==="pen"||i==="eraser";return jsx(Fragment,{children:e.map((l,u)=>{let d=l.id||u,m={id:l.id,x:l.x,y:l.y,rotation:l.rotation,draggable:!l.locked&&!f,listening:!f,fill:l.color||"#096B76",stroke:"#000000",strokeWidth:2,opacity:1};switch(l.type?.toLowerCase()){case "circle":return jsx(Circle,{ref:c=>{c?o.current.set(l.id,c):o.current.delete(l.id);},...m,draggable:!l.locked&&!f,...f?{}:{onDragStart:c=>{s?.();},onDragEnd:c=>t(l.id,c),onTransformEnd:c=>a(l.id,c),onClick:()=>r(l.id),onContextMenu:c=>{c.evt.preventDefault(),n(c.evt,l.id,"shape");}},radius:l.radius||l.width/2,width:l.width,height:l.width},d);case "star":return jsx(Star,{ref:c=>{c?o.current.set(l.id,c):o.current.delete(l.id);},...m,draggable:!l.locked&&!f,...f?{}:{onDragStart:c=>{s?.();},onDragEnd:c=>t(l.id,c),onTransformEnd:c=>a(l.id,c),onClick:()=>r(l.id),onContextMenu:c=>{c.evt.preventDefault(),n(c.evt,l.id,"shape");}},numPoints:5,innerRadius:l.innerRadius||l.width/4,outerRadius:l.outerRadius||l.width/2},d);case "triangle":return jsx(RegularPolygon,{ref:c=>{c?o.current.set(l.id,c):o.current.delete(l.id);},...m,draggable:!l.locked&&!f,...f?{}:{onDragStart:c=>{s?.();},onDragEnd:c=>t(l.id,c),onTransformEnd:c=>a(l.id,c),onClick:()=>r(l.id),onContextMenu:c=>{c.evt.preventDefault(),n(c.evt,l.id,"shape");}},sides:3,radius:l.radius||l.width/2},d);case "polygon":return jsx(RegularPolygon,{ref:c=>{c?o.current.set(l.id,c):o.current.delete(l.id);},...m,draggable:!l.locked&&!f,...f?{}:{onDragStart:c=>{s?.();},onDragEnd:c=>t(l.id,c),onTransformEnd:c=>a(l.id,c),onClick:()=>r(l.id),onContextMenu:c=>{c.evt.preventDefault(),n(c.evt,l.id,"shape");}},sides:l.sides||6,radius:l.radius||l.width/2},d);case "ellipse":return jsx(Ellipse,{ref:c=>{c?o.current.set(l.id,c):o.current.delete(l.id);},...m,draggable:!l.locked&&!f,...f?{}:{onDragStart:c=>{s?.();},onDragEnd:c=>t(l.id,c),onTransformEnd:c=>a(l.id,c),onClick:()=>r(l.id),onContextMenu:c=>{c.evt.preventDefault(),n(c.evt,l.id,"shape");}},radiusX:l.radiusX||l.width/2,radiusY:l.radiusY||l.height/2},d);case "ring":return jsx(Ring,{ref:c=>{c?o.current.set(l.id,c):o.current.delete(l.id);},...m,draggable:!l.locked&&!f,...f?{}:{onDragStart:c=>{s?.();},onDragEnd:c=>t(l.id,c),onTransformEnd:c=>a(l.id,c),onClick:()=>r(l.id),onContextMenu:c=>{c.evt.preventDefault(),n(c.evt,l.id,"shape");}},innerRadius:l.innerRadius||l.width/4,outerRadius:l.outerRadius||l.width/2},d);case "wedge":return jsx(Wedge,{ref:c=>{c?o.current.set(l.id,c):o.current.delete(l.id);},...m,draggable:!l.locked&&!f,...f?{}:{onDragStart:c=>{s?.();},onDragEnd:c=>t(l.id,c),onTransformEnd:c=>a(l.id,c),onClick:()=>r(l.id),onContextMenu:c=>{c.evt.preventDefault(),n(c.evt,l.id,"shape");}},radius:l.radius||l.width/2,angle:l.angle||60},d);case "arrow":return jsx(Arrow,{ref:c=>{c?o.current.set(l.id,c):o.current.delete(l.id);},...m,scaleX:l.scaleX||1,scaleY:l.scaleY||1,draggable:!l.locked&&!f,...f?{}:{onDragStart:c=>{s?.();},onDragEnd:c=>t(l.id,c),onTransformEnd:c=>a(l.id,c),onClick:()=>r(l.id),onContextMenu:c=>{c.evt.preventDefault(),n(c.evt,l.id,"shape");}},points:l.points||[0,0,l.width,0],pointerLength:l.pointerLength||10,pointerWidth:l.pointerWidth||10,stroke:"#000000",strokeWidth:l.strokeWidth||3,fill:"transparent"},d);case "line":return jsx(Line,{ref:c=>{c?o.current.set(l.id,c):o.current.delete(l.id);},...m,scaleX:l.scaleX||1,scaleY:l.scaleY||1,draggable:!l.locked&&!f,...f?{}:{onDragStart:c=>{s?.();},onDragEnd:c=>t(l.id,c),onTransformEnd:c=>a(l.id,c),onClick:()=>r(l.id),onContextMenu:c=>{c.evt.preventDefault(),n(c.evt,l.id,"shape");}},points:l.points||[0,0,l.width,0],stroke:"#000000",strokeWidth:l.strokeWidth||3,fill:"transparent"},d);case "arc":return jsx(Arc,{ref:c=>{c?o.current.set(l.id,c):o.current.delete(l.id);},...m,draggable:!l.locked&&!f,...f?{}:{onDragStart:c=>{s?.();},onDragEnd:c=>t(l.id,c),onTransformEnd:c=>a(l.id,c),onClick:()=>r(l.id),onContextMenu:c=>{c.evt.preventDefault(),n(c.evt,l.id,"shape");}},innerRadius:l.innerRadius||l.width/4,outerRadius:l.outerRadius||l.width/2,angle:l.angle||90},d);case "rectangle":default:return jsx(Rect,{ref:c=>{c?o.current.set(l.id,c):o.current.delete(l.id);},...m,draggable:!l.locked&&!f,...f?{}:{onDragStart:c=>{s?.();},onDragEnd:c=>t(l.id,c),onTransformEnd:c=>a(l.id,c),onClick:()=>r(l.id),onContextMenu:c=>{c.evt.preventDefault(),n(c.evt,l.id,"shape");}},width:l.width,height:l.height,cornerRadius:l.type==="rounded-rectangle"?10:0},d)}})})});ri.displayName="ShapeLayer";var vd=({texts:e,textRefs:o,onDragEnd:t,onTransformEnd:a,onSelect:r,onContextMenu:s,onDoubleClick:n,editingTextId:i})=>{let f=useSelector(u=>u.toolbar.selectedTool),l=f==="pen"||f==="eraser";return jsx(Fragment,{children:e.map(u=>{let d=u.id===i,m=u.fontWeight==="bold",c=m?Math.max(1,u.fontSize/25):0;return jsx(Text,{id:u.id,ref:p=>{p?o.current.set(u.id,p):o.current.delete(u.id);},text:u.text,x:u.x,y:u.y,width:u.width,height:u.height,rotation:u.rotation,draggable:!u.locked&&!d&&!l,listening:!l,fontSize:u.fontSize,fontFamily:u.fontFamily,fontStyle:u.fontStyle,fontWeight:u.fontWeight,textDecoration:u.textDecoration,fill:u.fill,stroke:m?u.fill:void 0,strokeWidth:c,align:u.align,wrap:"none",lineHeight:1.2,opacity:d?0:1,visible:!d,...l?{}:{onClick:()=>r(u.id),onTap:()=>r(u.id),onDblClick:()=>n(u.id),onDblTap:()=>n(u.id),onDragEnd:p=>t(p,u.id),onTransformEnd:()=>a(u.id),onContextMenu:p=>{p.evt.preventDefault();let x=p.evt;s(x,u.id,"text");}}},u.id)})})};var Ip=({flashcard:e,isSelected:o,onClick:t,onDragEnd:a,onTransformEnd:r,onContextMenu:s,onNext:n,onPrevious:i,nodeRef:f})=>{let[l,u]=useState(null);if(useEffect(()=>{if(e.images.length>0&&e.images[e.currentIndex]){let h=new window.Image;h.src=e.images[e.currentIndex],h.onload=()=>{u(h);};}},[e.images,e.currentIndex]),!l||e.images.length===0)return null;let d=8,m=2,c=Math.min(e.width,e.height)*.08,p=Math.max(16,Math.min(c,32)),x=15;return jsxs(Group,{id:e.id,draggable:e.draggable&&!e.locked,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,onDragEnd:a,onTransformEnd:r,ref:h=>{if(f(h),h){let v=h.getStage()?.container();if(v){let g=b=>{let y=h.getStage()?.getPointerPosition();if(y){let C={x:e.x,y:e.y,width:e.width,height:e.height};y.x>=C.x&&y.x<=C.x+C.width&&y.y>=C.y&&y.y<=C.y+C.height&&s(b);}};v.addEventListener("contextmenu",g),h._contextMenuCleanup=()=>{v.removeEventListener("contextmenu",g);};}}},children:[jsx(Rect,{width:e.width,height:e.height,cornerRadius:d,fill:"white",shadowColor:"black",shadowBlur:o?12:8,shadowOpacity:o?.3:.2,shadowOffsetX:0,shadowOffsetY:2,onClick:t,onTap:t}),jsx(Rect,{width:e.width,height:e.height,cornerRadius:d,stroke:"#E5E7EB",strokeWidth:m,listening:false}),jsx(Image,{x:m+4,y:m+4,image:l,width:e.width-(m+4)*2,height:e.height-(m+4)*2,cornerRadius:d-m,onClick:t,onTap:t}),jsx(Rect,{x:m,y:e.height-50,width:e.width-m*2,height:50,cornerRadius:[0,0,d-m,d-m],fillLinearGradientStartPoint:{x:0,y:0},fillLinearGradientEndPoint:{x:0,y:50},fillLinearGradientColorStops:[0,"rgba(255, 255, 255, 0)",1,"rgba(255, 255, 255, 0.95)"],listening:false}),e.images.length>1&&(e.order==="sequential"||e.order==="random"&&e.navigationHistory&&e.navigationHistory.length>1)&&jsxs(Group,{x:x+p,y:e.height/2,onClick:h=>{h.cancelBubble=true,i();},onTap:h=>{h.cancelBubble=true,i();},children:[jsx(Circle,{radius:p,fill:"white",shadowColor:"black",shadowBlur:4,shadowOpacity:.15}),jsx(Line,{points:[-4,-6,-10,0,-4,6],stroke:"#6B7280",strokeWidth:2,lineCap:"round",lineJoin:"round"})]}),e.images.length>1&&jsxs(Group,{x:e.width-x-p,y:e.height/2,onClick:h=>{h.cancelBubble=true,n();},onTap:h=>{h.cancelBubble=true,n();},children:[jsx(Circle,{radius:p,fill:"white",shadowColor:"black",shadowBlur:4,shadowOpacity:.15}),jsx(Line,{points:[4,-6,10,0,4,6],stroke:"#6B7280",strokeWidth:2,lineCap:"round",lineJoin:"round"})]}),jsx(Rect,{x:e.width-60,y:e.height-35,width:50,height:24,cornerRadius:4,fill:"rgba(255, 255, 255, 0.9)"}),jsx(Text,{x:e.width-60,y:e.height-35,width:50,height:24,text:`${e.currentIndex+1}/${e.images.length}`,fontSize:11,fontFamily:"Arial",fill:"#6B7280",align:"center",verticalAlign:"middle"})]})},Ld=Ip;var ii=memo(({flashcards:e,flashcardRefs:o,selectedId:t,onDragEnd:a,onTransform:r,onSelect:s,onNext:n,onPrevious:i,onContextMenu:f})=>jsx(Fragment,{children:e.map(l=>jsx(Ld,{flashcard:l,isSelected:t===l.id,onClick:()=>s(l.id),onDragEnd:a,onTransformEnd:u=>r(l.id,u),onContextMenu:u=>f(u,l.id,"flashcard"),onNext:()=>n(l.id),onPrevious:()=>i(l.id),nodeRef:u=>{u?o.current.set(l.id,u):o.current.delete(l.id);}},l.id))}));ii.displayName="FlashcardLayer";var Sd=e=>{let o=ge(),t=useRef(false),a=useRef(false),r=useRef([]),[s,n]=useState(null);ee(b=>b.toolbar.selectedTool);let f=ee(b=>b.toolbar.penColor),l=ee(b=>b.toolbar.strokeWidth),u=ee(b=>b.canvas.isSketchMode),d=ee(b=>b.canvas.slides.find(C=>C.id===b.canvas.currentSlideId)?.photoFrames.find(C=>C.id===e)),m=d?.annotations||[],c=d?.isDrawingMode||false,p=d?.width||1,x=d?.height||1,h=useCallback(b=>{if(!c)return;t.current=true,a.current=false,r.current=[{x:b.x,y:b.y}];let y=b.x/p,C=b.y/x;n({tool:"pen",points:[y,C],color:f,strokeWidth:l/p,isSketch:u});},[c,f,l,u,p,x]),v=useCallback(b=>{if(!t.current||!s)return;a.current=true;let y=r.current[r.current.length-1];if(Math.sqrt(Math.pow(b.x-y.x,2)+Math.pow(b.y-y.y,2))<2)return;r.current.push({x:b.x,y:b.y});let S;if(u)S=os(r.current,{size:l*2,thinning:.6,smoothing:.5,streamline:.5,simulatePressure:true}).map((w,q)=>q%2===0?w/p:w/x);else {let I=b.x/p,w=b.y/x;S=[...s.points,I,w];}n(I=>I?{...I,points:S}:null);},[u,l,s,p,x]),g=useCallback(()=>{t.current&&(s&&s.points.length>0&&o(kn({frameId:e,line:s})),n(null),t.current=false,a.current=false,r.current=[]);},[o,e,s]);return {annotations:m,activeLine:s,isDrawingMode:c,startDrawing:h,draw:v,stopDrawing:g}};var Dp=({photoFrame:e,isSelected:o,onClick:t,onDragEnd:a,onTransformEnd:r,onContextMenu:s,onStartCamera:n,onCapture:i,cameraStream:f,nodeRef:l})=>{let[u,d]=useState(null),[m,c]=useState(null),p=useRef(null),x=useRef(null),h=useRef(null),v=useRef(null),g=useRef(0),b=33,y=useSelector(R=>R.toolbar.selectedTool),C=y==="pen"||y==="eraser",{annotations:S,activeLine:I,isDrawingMode:w,startDrawing:q,draw:P,stopDrawing:U}=Sd(e.id);useEffect(()=>{if(!w)return;let R=()=>{U();},G=()=>{U();};return window.addEventListener("mouseup",R),window.addEventListener("touchend",G),()=>{window.removeEventListener("mouseup",R),window.removeEventListener("touchend",G);}},[U,w]),useEffect(()=>{if(e.capturedImageUrl){let R=new window.Image;R.src=e.capturedImageUrl,R.onload=()=>{d(R);};}},[e.capturedImageUrl]),useEffect(()=>{if(e.isCapturing&&f){p.current||(p.current=document.createElement("video"),p.current.autoplay=true,p.current.playsInline=true),x.current||(x.current=document.createElement("canvas"));let R=p.current,G=x.current;R.srcObject=f;let K=()=>{G.width=R.videoWidth||640,G.height=R.videoHeight||480,console.log("\u{1F4F9} Starting live capture, canvas size:",G.width,G.height);let _=te=>{if(te-g.current<b){h.current=requestAnimationFrame(_);return}g.current=te;let Q=G.getContext("2d");if(Q&&R.readyState===R.HAVE_ENOUGH_DATA){Q.drawImage(R,0,0,G.width,G.height);let Z=G.toDataURL("image/jpeg",.6),be=new window.Image;be.onload=()=>{c(be);},be.src=Z;}h.current=requestAnimationFrame(_);};h.current=requestAnimationFrame(_);};return R.onloadedmetadata=K,R.readyState>=R.HAVE_METADATA&&K(),R.play().catch(_=>console.error("Error playing video:",_)),()=>{h.current&&(cancelAnimationFrame(h.current),h.current=null);}}return ()=>{c(null),v.current&&(v.current.src="");}},[e.isCapturing,f]);let D=()=>{p.current&&e.isCapturing&&i(p.current);},F=R=>{if(e.capturedImageUrl){if(!w){t();return}let G=R.currentTarget,K=G.getAbsoluteTransform().copy(),te=G.getStage()?.getPointerPosition();if(te){K.invert();let Q=K.point(te);q(Q);}R.cancelBubble=true;}else t();},T=R=>{if(!w||!e.capturedImageUrl)return;let G=R.currentTarget,K=G.getAbsoluteTransform().copy(),te=G.getStage()?.getPointerPosition();if(te){K.invert();let Q=K.point(te);P(Q);}},H=()=>{!w||!e.capturedImageUrl||U();},N=e.isCapturing?m:u,re=Math.min(e.width,e.height)*.12,V=Math.max(25,Math.min(re,50)),W=e.width/2,oe=e.height/2;return jsxs(Group,{id:e.id,draggable:!w&&!C,listening:true,x:e.x,y:e.y,...C?{}:{onDragEnd:a,onTransformEnd:r},rotation:e.rotation,width:e.width,height:e.height,ref:R=>{if(l(R),R){let G=R.getStage()?.container();if(G){let K=_=>{let te=R.getStage()?.getPointerPosition();if(te){let Q={x:e.x,y:e.y,width:e.width,height:e.height};te.x>=Q.x&&te.x<=Q.x+Q.width&&te.y>=Q.y&&te.y<=Q.y+Q.height&&s(_);}};G.addEventListener("contextmenu",K),R._contextMenuCleanup=()=>{G.removeEventListener("contextmenu",K);};}}},children:[jsx(Rect,{x:-20,y:-20,width:e.width+50,height:e.height+50,fill:N?"transparent":"white",strokeWidth:o?0:2,cornerRadius:8,listening:true,onClick:t,onTap:t,shadowColor:"rgba(0,0,0,0.35)",shadowBlur:15,shadowOpacity:.4,shadowOffset:{x:0,y:4}}),N&&jsx(Image,{image:N,width:e.width,height:e.height,cornerRadius:8,listening:true,onClick:F,onTap:F,onMouseDown:F,onTouchStart:F,onMouseMove:T,onTouchMove:T,onMouseUp:H,onTouchEnd:H,...C?{}:{onDragEnd:a,onTransformEnd:r}}),S?.map((R,G)=>{let K=R.points.map((te,Q)=>Q%2===0?te*e.width:te*e.height),_=R.strokeWidth*e.width;return jsx(Line,{points:K,stroke:R.tool==="eraser"?"white":R.color,strokeWidth:_,tension:.5,lineCap:"round",lineJoin:"round",globalCompositeOperation:R.tool==="eraser"?"destination-out":"source-over",fill:R.isSketch?R.color:void 0,closed:R.isSketch,listening:false},G)}),I&&jsx(Line,{points:I.points.map((R,G)=>G%2===0?R*e.width:R*e.height),stroke:I.tool==="eraser"?"white":I.color,strokeWidth:I.strokeWidth*e.width,tension:.5,lineCap:"round",lineJoin:"round",globalCompositeOperation:I.tool==="eraser"?"destination-out":"source-over",fill:I.isSketch?I.color:void 0,closed:I.isSketch,listening:false},"active"),!N&&!e.isCapturing&&jsxs(Fragment,{children:[jsx(Text,{x:10,y:6,width:e.width,text:"Take a Photo",fontSize:22,fontStyle:"bold",fill:"#000000CC",fontFamily:"Arial"}),jsx(Text,{x:12,y:32,width:e.width,text:"Capture a photo to add directly into your canvas.",fontSize:12,fill:"#00000099",fontFamily:"Arial"}),jsx(Rect,{x:0,y:oe-90,width:e.width,fill:"#EBF6F7",height:180,stroke:"#00000066",strokeWidth:1.5,dash:[4,4],cornerRadius:8}),!e.capturedImageUrl&&jsxs(Fragment,{children:[jsx(Rect,{x:W-V+6,y:oe-60,width:V*1.6,height:V*1.6,radius:V,fill:"white",cornerRadius:8,listening:true,onClick:R=>{R.cancelBubble=true,e.isCapturing?D():n();},onTap:R=>{R.cancelBubble=true,e.isCapturing?D():n();}}),jsx(Html,{groupProps:{x:W-12,y:oe-40,width:V*2,height:16},children:jsx(CameraPlus,{weight:"fill",color:"#096B76",size:24,onClick:R=>{R.stopPropagation(),e.isCapturing?D():n();}})})]}),jsx(Text,{x:0,y:oe,width:e.width,height:40,text:"Click on the camera to start",fontStyle:"bold",fontSize:18,fontFamily:"Arial",fill:"#666",align:"center",verticalAlign:"middle"}),jsx(Text,{x:0,y:oe+24,width:e.width,height:40,text:"Make sure you have good lighting!",fontSize:14,fontFamily:"Arial",fill:"#666",align:"center",verticalAlign:"middle"}),jsx(Rect,{x:W-24,y:oe+104,width:V*1.6,height:V*1.6,radius:V,fill:"#096B76",cornerRadius:V,listening:true,onClick:R=>{R.cancelBubble=true,e.isCapturing?D():n();},onTap:R=>{R.cancelBubble=true,e.isCapturing?D():n();}}),jsx(Html,{groupProps:{x:W-8,y:oe+120,width:V*2,height:16},children:jsx(Camera,{weight:"fill",color:"white",size:24,onClick:R=>{R.stopPropagation(),e.isCapturing?D():n();}})})]}),e.isCapturing&&jsxs(Fragment,{children:[jsx(Rect,{x:10,y:10,width:60,height:25,fill:"rgba(231, 76, 60, 0.9)",cornerRadius:4}),jsx(Text,{x:10,y:10,width:60,height:25,text:"\u25CF LIVE",fontSize:12,fontFamily:"Arial",fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle"})]})]})},Ad=Dp;var fi=memo(({photoFrames:e,photoFrameRefs:o,selectedId:t,onDragEnd:a,onTransform:r,onSelect:s,onStartCamera:n,onCapture:i,cameraStreams:f,onContextMenu:l})=>jsx(Fragment,{children:e.map(u=>jsx(Ad,{photoFrame:u,isSelected:t===u.id,onClick:()=>s(u.id),onDragEnd:d=>a(d,u.id),onTransformEnd:d=>r(u.id,d),onContextMenu:d=>l(d,u.id,"photoFrame"),onStartCamera:()=>n(u.id),onCapture:d=>i(u.id,d),cameraStream:f.get(u.id),nodeRef:d=>{d?o.current.set(u.id,d):o.current.delete(u.id);}},u.id))}));fi.displayName="PhotoFrameLayer";var Dd=({x:e,y:o,onAction:t,onClose:a,type:r,elementId:s="",isDrawingMode:n,menuRef:i})=>{useEffect(()=>{let d=c=>{i?.current&&!i.current.contains(c.target)&&a();},m=c=>{c.key==="Escape"&&a();};return document.addEventListener("mousedown",d),document.addEventListener("keydown",m),()=>{document.removeEventListener("mousedown",d),document.removeEventListener("keydown",m);}},[a]);let f=useMemo(()=>[{action:"order",label:"Order",icon:jsx(ArrowUpIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),hasSubmenu:true},{action:"lock",label:"Lock",icon:jsx(Lock,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),hasSubmenu:true},{action:"link",label:"Link",icon:jsx(LinkIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),hideForTypes:["line"]},{action:"voice",label:"Voice",icon:jsx(SpeakerHifiIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),hideForTypes:["line"]},{action:"edit",label:"Edit",icon:jsx(NotePencilIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),showForTypes:["mcq","trueFalse","shortAnswer","longAnswer","fillInTheBlanks"]},{action:"editFlashcard",label:"Edit Flashcard",icon:jsx(NotePencilIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),showForTypes:["flashcard"]},{action:"color",label:"Change Color",icon:jsx(Palette,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),showForTypes:["shape"]},{action:"crop",label:"Crop Image",icon:jsx(ScissorsIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),showForTypes:["image"]},{action:"draw",label:n?"Exit Drawing Mode":"Draw on Image",icon:jsx(PencilSimple,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),showForTypes:["image","photoFrame"]},{action:"duplicate",label:"Duplicate",icon:jsx(CopySimple,{className:"h-5 w-5",weight:"fill",color:"#00000099"})},{action:"infinite-clone",label:"Infinite Clone",icon:jsx(Square,{className:"h-5 w-5",weight:"fill",color:"#00000099"})},{action:"make-response",label:"Make Response",icon:jsx(Chat,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),hideForTypes:["line"]},{action:"accessibility",label:"Accessibility",icon:jsx(EyeIcon,{className:"h-5 w-5",weight:"fill",color:"#00000099"}),hideForTypes:["line"]},{action:"layers",label:"Layers",icon:jsx(Stack,{className:"h-5 w-5",weight:"fill",color:"#00000099"})},{action:"delete",label:"Delete",icon:jsx(Trash,{className:"h-5 w-5",weight:"fill",color:"#E92222"}),isDanger:true}].filter(m=>!(m.showForTypes&&!m.showForTypes.includes(r)||m.hideForTypes&&m.hideForTypes.includes(r))),[r,n]),l=(d,m)=>{d==="order"||d==="lock"?t(d,m):(t(d),a());},u=jsx("div",{ref:i,className:"absolute z-100 min-w-[200px] rounded-2xl border border-gray-200 bg-white shadow-xl",style:{left:`${e}px`,top:`${o}px`},children:jsx("div",{className:"space-y-1 p-2",children:f.map((d,m)=>jsxs("button",{onClick:c=>l(d.action,c),className:`flex w-full items-center justify-between rounded-md px-4 py-2 text-left text-sm transition-colors hover:cursor-pointer hover:bg-[#0000000A] ${d.isDanger?"text-red-600 hover:bg-red-50":"text-gray-700"}`,children:[jsxs("div",{className:"flex items-center gap-3",children:[d.icon,jsx("span",{className:`font-medium ${d.isDanger?"text-[#E92222]":"text-[#00000099]"}`,children:d.label})]}),d.hasSubmenu&&jsx("svg",{className:"h-4 w-4 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})]},m))})});return createPortal(u,document.body)};var Fd=({x:e,y:o,items:t,onClose:a})=>{let r=useRef(null);return useEffect(()=>{let s=n=>{r.current&&!r.current.contains(n.target)&&a();};return document.addEventListener("mousedown",s),()=>{document.removeEventListener("mousedown",s);}},[a]),jsx("div",{ref:r,className:"fixed z-101 min-w-[180px] rounded-lg border border-gray-200 bg-white shadow-xl",style:{left:`${e}px`,top:`${o}px`},children:jsx("div",{className:"py-2",children:t.map((s,n)=>jsx("button",{onClick:()=>{s.onClick(),a();},className:"flex w-full items-center px-4 py-2.5 text-left text-sm text-gray-700 transition-colors hover:bg-gray-50",children:jsx("span",{className:"font-medium",children:s.label})},n))})})};var Ed=({title:e,label:o,placeholder:t,defaultValue:a="",onSave:r,onClose:s})=>{let[n,i]=useState(a),f=useRef(null);useEffect(()=>{f.current?.focus();},[]);let l=()=>{r(n),s();};return jsx("div",{className:"fixed inset-0 z-102 flex items-center justify-center bg-black/50",children:jsxs("div",{className:"w-full max-w-md rounded-lg bg-white p-6 shadow-2xl",children:[jsxs("div",{className:"mb-4 flex items-center justify-between",children:[jsx("h2",{className:"text-xl font-semibold text-gray-900",children:e}),jsx("button",{onClick:s,className:"rounded-lg p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600",children:jsx(X$1,{className:"h-5 w-5"})})]}),jsxs("div",{className:"mb-6",children:[jsx("label",{className:"mb-2 block text-sm font-medium text-gray-700",children:o}),jsx("input",{ref:f,type:"text",value:n,onChange:d=>i(d.target.value),onKeyDown:d=>{d.key==="Enter"?l():d.key==="Escape"&&s();},placeholder:t,className:"w-full rounded-lg border border-gray-300 px-4 py-2 focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20 focus:outline-none"})]}),jsxs("div",{className:"flex justify-end gap-3",children:[jsx("button",{onClick:s,className:"rounded-lg border border-gray-300 px-4 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50",children:"Cancel"}),jsx("button",{onClick:l,className:"rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700",children:"Save"})]})]})})};var Bd=({defaultColor:e="#096B76",onConfirm:o,onCancel:t})=>{let[a,r]=useState(e),s=useRef(null);useEffect(()=>{let u=d=>{d.key==="Escape"&&t();};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[t]);let n=u=>{u.preventDefault(),o(a);},i=(u,d,m)=>{m/=100;let c=d*Math.min(m,1-m)/100,p=x=>{let h=(x+u/30)%12,v=m-c*Math.max(Math.min(h-3,9-h,1),-1);return Math.round(255*v).toString(16).padStart(2,"0")};return `#${p(0)}${p(8)}${p(4)}`},l=jsx("div",{className:"pointer-events-none fixed inset-0 z-100 flex items-center justify-center",onMouseDown:u=>u.stopPropagation(),onMouseUp:u=>u.stopPropagation(),onMouseMove:u=>u.stopPropagation(),onTouchStart:u=>u.stopPropagation(),onTouchMove:u=>u.stopPropagation(),onTouchEnd:u=>u.stopPropagation(),children:jsxs("div",{ref:s,className:"pointer-events-auto max-h-[90vh] w-96 max-w-[90vw] overflow-y-auto rounded-xl border border-gray-200 bg-white p-6 shadow-2xl",onClick:u=>u.stopPropagation(),children:[jsxs("div",{className:"mb-4 flex items-center justify-between",children:[jsx("h3",{className:"text-lg font-semibold text-gray-800",children:"Change Shape Color"}),jsx("button",{onClick:t,className:"rounded-lg p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600",children:jsx(X$1,{size:20,weight:"bold"})})]}),jsxs("form",{onSubmit:n,children:[jsxs("div",{className:"space-y-4",children:[jsxs("div",{className:"flex items-center gap-3",children:[jsx("div",{className:"h-16 w-16 rounded-lg border-2 border-gray-300 shadow-sm",style:{backgroundColor:a}}),jsxs("div",{className:"flex-1",children:[jsx("label",{className:"mb-1 block text-xs font-semibold text-gray-500",children:"HEX COLOR"}),jsx("input",{type:"text",value:a,onChange:u=>r(u.target.value),className:"w-full rounded-lg border border-gray-300 px-3 py-2 font-mono text-sm focus:border-blue-500 focus:ring-2 focus:ring-blue-200 focus:outline-none",placeholder:"#000000"})]})]}),jsxs("div",{children:[jsx("label",{className:"mb-1 block text-xs font-semibold text-gray-500",children:"COLOR PICKER"}),jsx("input",{type:"color",value:a,onChange:u=>r(u.target.value),className:"h-12 w-full cursor-pointer rounded-lg border border-gray-300"})]}),jsxs("div",{children:[jsx("label",{className:"mb-1 block text-xs font-semibold text-gray-500",children:"HUE SLIDER"}),jsx("input",{type:"range",min:"0",max:"360",defaultValue:"180",onChange:u=>{let d=parseInt(u.target.value),m=i(d,100,50);r(m);},className:"h-3 w-full cursor-pointer appearance-none rounded-full",style:{background:"linear-gradient(to right, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%)"}})]}),jsxs("div",{children:[jsx("label",{className:"mb-2 block text-xs font-semibold text-gray-500",children:"PRESET COLORS"}),jsx("div",{className:"grid grid-cols-8 gap-2",children:["#FF6B6B","#4ECDC4","#45B7D1","#FFA07A","#98D8C8","#F7DC6F","#BB8FCE","#85C1E2","#096B76","#2C3E50","#E74C3C","#3498DB","#2ECC71","#F39C12","#9B59B6","#1ABC9C"].map(u=>jsx("button",{type:"button",onClick:()=>r(u),className:`h-8 w-8 rounded-lg border-2 transition-all hover:scale-110 ${a.toUpperCase()===u.toUpperCase()?"border-blue-500 ring-2 ring-blue-200":"border-gray-300"}`,style:{backgroundColor:u},title:u},u))})]})]}),jsxs("div",{className:"mt-6 flex gap-3",children:[jsx("button",{type:"button",onClick:t,className:"flex-1 rounded-lg border border-gray-300 px-4 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50",children:"Cancel"}),jsx("button",{type:"submit",className:"flex-1 rounded-lg bg-blue-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-600",children:"Apply Color"})]})]})]})});return createPortal(l,document.body)};var hh=({imageSrc:e,onCrop:o})=>{let[t]=Vd(e),a=useRef(null),r=useRef(null),s=useRef(null),n=useMemo(()=>{if(!t)return {width:600,height:400};let p=Math.min(600/t.width,400/t.height);return {width:t.width*p,height:t.height*p}},[t]),i=useMemo(()=>{let m=n.width*.5,c=n.height*.5,p=(n.width-m)/2,x=(n.height-c)/2;return {x:p,y:x,width:m,height:c}},[n]),[f,l]=useState(i);useEffect(()=>{l(i);},[i]),useEffect(()=>{s.current&&r.current&&(s.current.nodes([r.current]),s.current.getLayer()?.batchDraw());},[f]),useEffect(()=>{o(f.x,f.y,f.width,f.height);},[f,o]);let u=()=>{let m=r.current;if(!m)return;let c=m.scaleX(),p=m.scaleY();m.scaleX(1),m.scaleY(1),l({x:m.x(),y:m.y(),width:Math.max(20,m.width()*c),height:Math.max(20,m.height()*p)});},d=()=>{let m=r.current;m&&l({x:m.x(),y:m.y(),width:m.width(),height:m.height()});};return jsx(Stage,{width:n.width,height:n.height,className:"border border-gray-300",children:jsxs(Layer,{children:[jsx(Image,{ref:a,image:t,width:n.width,height:n.height}),jsx(Rect,{x:0,y:0,width:n.width,height:n.height,fill:"rgba(0, 0, 0, 0.5)",globalCompositeOperation:"source-over"}),jsx(Rect,{x:f.x,y:f.y,width:f.width,height:f.height,globalCompositeOperation:"destination-out"}),jsx(Rect,{ref:r,x:f.x,y:f.y,width:f.width,height:f.height,stroke:"#4A90E2",strokeWidth:2,draggable:true,onDragEnd:d,onTransformEnd:u,dragBoundFunc:m=>{let c=Math.max(0,Math.min(m.x,n.width-f.width)),p=Math.max(0,Math.min(m.y,n.height-f.height));return {x:c,y:p}}}),jsx(Transformer,{ref:s,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:false,keepRatio:false,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"],boundBoxFunc:(m,c)=>c.width<20||c.height<20||c.x<0||c.y<0||c.x+c.width>n.width||c.y+c.height>n.height?m:c})]})})},qd=({imageSrc:e,onConfirm:o,onCancel:t})=>{let a=useRef(null),[r,s]=useState({x:0,y:0,width:0,height:0}),[n]=Vd(e);return useEffect(()=>{let u=d=>{d.key==="Escape"&&t();};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[t]),createPortal(jsx("div",{className:"bg-opacity-50 pointer-events-none fixed inset-0 z-100 flex items-center justify-center bg-black",onMouseDown:u=>u.stopPropagation(),onMouseUp:u=>u.stopPropagation(),onMouseMove:u=>u.stopPropagation(),onTouchStart:u=>u.stopPropagation(),onTouchMove:u=>u.stopPropagation(),onTouchEnd:u=>u.stopPropagation(),children:jsxs("div",{ref:a,className:"pointer-events-auto max-h-[90vh] w-auto max-w-[90vw] overflow-y-auto rounded-xl border border-gray-200 bg-white p-6 shadow-2xl",onClick:u=>u.stopPropagation(),children:[jsxs("div",{className:"mb-4 flex items-center justify-between",children:[jsx("h3",{className:"text-lg font-semibold text-gray-800",children:"Crop Image"}),jsx("button",{onClick:t,className:"rounded-lg p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600",children:jsx(X$1,{size:20,weight:"bold"})})]}),jsx("div",{className:"mb-4 text-sm text-gray-600",children:"Drag the corners to resize the crop area, or drag the rectangle to move it."}),jsx("div",{className:"mb-6",children:jsx(hh,{imageSrc:e,onCrop:(u,d,m,c)=>{s({x:u,y:d,width:m,height:c});}})}),jsxs("div",{className:"flex gap-3",children:[jsx("button",{type:"button",onClick:t,className:"flex-1 rounded-lg border border-gray-300 px-4 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50",children:"Cancel"}),jsxs("button",{type:"button",onClick:()=>{if(!n)return;let m=Math.min(600/n.width,400/n.height),c=r.x/m,p=r.y/m,x=r.width/m,h=r.height/m,v=document.createElement("canvas");v.width=x,v.height=h;let g=v.getContext("2d");if(!g)return;g.drawImage(n,c,p,x,h,0,0,x,h);let b=v.toDataURL("image/png");o(b);},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-blue-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-600",children:[jsx(Check,{size:16,weight:"bold"}),"Crop Image"]})]})]})}),document.body)};var _o=({onClose:e,stageRef:o,onRecordingComplete:t,directDrawingCanvasRef:a})=>{let[r,s]=useState(false),[n,i]=useState(null),[f,l]=useState(0),[u,d]=useState(true),m=useRef(null),c=useRef([]),p=useRef(null),x=useRef(null),h=useRef(null),v=useRef(null),g=useRef(null),b=useRef(null);useEffect(()=>()=>{h.current&&cancelAnimationFrame(h.current),p.current&&clearInterval(p.current),x.current&&x.current.getTracks().forEach(w=>w.stop());},[]);let y=async()=>{try{let w,q=null;if(o?.current){console.log("Creating recording canvas from Konva stage...");let T=o.current.getLayers();console.log("Konva layers:",T.length),T.forEach((G,K)=>{let _=G.getChildren();console.log(`Layer ${K} children count:`,_.length);});let H=document.createElement("canvas");H.width=o.current.width(),H.height=o.current.height();let N=H.getContext("2d",{willReadFrequently:!1});if(!N){console.error("Could not get recording canvas context"),alert("Failed to create recording canvas.");return}console.log("Recording canvas created, dimensions:",H.width,"x",H.height),g.current=H;let re=()=>{if(N.clearRect(0,0,H.width,H.height),T.forEach(G=>{let K=G.getCanvas()._canvas;K&&N.drawImage(K,0,0);}),a?.current){let G=a.current;N.drawImage(G,0,0);}};b.current=re,o.current.draw(),re(),await new Promise(G=>setTimeout(G,100)),console.log("Creating captureStream..."),w=H.captureStream(30),console.log("Canvas stream created, tracks:",w.getTracks().length);let W=w.getVideoTracks()[0];W&&console.log("Video track:",W.label,"state:",W.readyState);let oe=0,R=()=>{re(),o?.current&&(o.current.getLayers().forEach(K=>{K.batchDraw();}),oe++,oe%60===0&&console.log("Drawing frame:",oe)),h.current=requestAnimationFrame(R);};R();}else {console.error("Stage ref not provided"),alert("Stage reference not available.");return}if(u)try{q=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0}});}catch(T){console.warn("Microphone access denied:",T);}let P=[...w.getVideoTracks()];q&&P.push(...q.getAudioTracks());let U=new MediaStream(P);x.current=U;let D="video/webm";MediaRecorder.isTypeSupported("video/webm;codecs=vp9,opus")?D="video/webm;codecs=vp9,opus":MediaRecorder.isTypeSupported("video/webm;codecs=vp8,opus")?D="video/webm;codecs=vp8,opus":MediaRecorder.isTypeSupported("video/webm;codecs=vp9")?D="video/webm;codecs=vp9":MediaRecorder.isTypeSupported("video/webm;codecs=vp8")&&(D="video/webm;codecs=vp8"),console.log("Using mimeType:",D);let F=new MediaRecorder(U,{mimeType:D,videoBitsPerSecond:25e5});m.current=F,c.current=[],F.ondataavailable=T=>{console.log("Data available, size:",T.data.size),T.data.size>0&&c.current.push(T.data);},F.onstop=()=>{console.log("Recording stopped, chunks:",c.current.length);let T=new Blob(c.current,{type:D});console.log("Final blob size:",T.size),o?.current&&b.current&&g.current&&(o.current.draw(),o.current.getLayers().forEach(N=>{N.batchDraw();}),b.current(),v.current=g.current.toDataURL("image/jpeg",.8),console.log("Final canvas thumbnail captured, length:",v.current.length)),U.getTracks().forEach(H=>H.stop()),p.current&&clearInterval(p.current),h.current&&(cancelAnimationFrame(h.current),h.current=null),i(T);},F.onerror=T=>{console.error("MediaRecorder error:",T);},console.log("Starting recording..."),F.start(1e3),s(!0),l(0),p.current=setInterval(()=>{l(T=>T+1);},1e3);}catch(w){console.error("Error starting screen recording:",w),alert("Failed to start recording. Please ensure you granted permission.");}},C=()=>{m.current&&r&&(console.log("Stopping recording, state:",m.current.state),m.current.state!=="inactive"&&(m.current.requestData(),setTimeout(()=>{m.current&&m.current.state!=="inactive"&&m.current.stop();},100)),s(false));},S=()=>{if(n){let w=URL.createObjectURL(n),q=document.createElement("a");q.href=w,q.download=`screen-recording-${Date.now()}.webm`,document.body.appendChild(q),q.click(),document.body.removeChild(q),URL.revokeObjectURL(w);}},I=w=>{let q=Math.floor(w/60),P=w%60;return `${q.toString().padStart(2,"0")}:${P.toString().padStart(2,"0")}`};return r?jsxs("div",{className:"fixed top-4 left-1/2 z-102 flex -translate-x-1/2 items-center gap-4 rounded-full border border-gray-200 bg-white px-6 py-3 shadow-2xl",children:[jsxs("div",{className:"flex items-center gap-2",children:[jsx("div",{className:"h-3 w-3 animate-pulse rounded-full bg-red-600"}),jsx("span",{className:"font-mono text-lg font-semibold text-gray-900",children:I(f)})]}),jsx("div",{className:"h-6 w-px bg-gray-300"}),jsx("span",{className:"text-sm text-gray-600",children:"Recording canvas..."}),jsxs("button",{onClick:C,className:"ml-2 flex items-center gap-2 rounded-full bg-red-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-red-700",children:[jsx(Stop,{className:"h-4 w-4",weight:"fill"}),"Stop"]})]}):jsx("div",{className:"fixed inset-0 z-102 flex items-center justify-center bg-black/50",children:jsxs("div",{className:"w-full max-w-md rounded-lg bg-white p-6 shadow-2xl",children:[jsxs("div",{className:"mb-2 flex items-center justify-between",children:[jsx("h2",{className:"text-xl font-bold text-[#000000CC]",children:"Screen Recording"}),jsx("button",{onClick:e,className:"rounded-lg p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600",children:jsx(X$1,{className:"h-5 w-5 text-[#00000099]"})})]}),jsxs("div",{className:"mb-6",children:[!n&&jsxs("div",{className:"text-start",children:[jsx("p",{className:"mb-4 text-base text-[#00000099]",children:"Record your canvas with voice narration. Everything you draw, type, or add will be captured automatically."}),jsxs("div",{className:"mx-auto mb-4 flex w-full flex-col items-center justify-between gap-4 px-2",children:[jsx("button",{onClick:()=>d(!u),className:`flex w-full cursor-pointer items-center justify-center gap-2 rounded-lg px-6 py-4 text-lg font-semibold transition-colors ${u?"text-primary border-[#096B76] bg-[#EBF6F7]":"border-gray-300 bg-[#F5F5F5] text-[#00000099]"}`,children:u?jsxs(Fragment,{children:[jsx(Microphone,{className:"h-5 w-5",weight:"fill"}),"Microphone On"]}):jsxs(Fragment,{children:[jsx(MicrophoneSlash,{className:"h-5 w-5",weight:"fill"}),"Microphone Off"]})}),jsxs("button",{onClick:y,className:"bg-primary hover:bg-primary/92 flex w-full cursor-pointer items-center justify-center gap-2 rounded-lg px-6 py-4 text-center text-lg font-semibold text-white transition-colors",children:[jsx(Record,{className:"h-5 w-5",weight:"fill"}),"Start Recording"]})]})]}),n&&jsxs("div",{className:"space-y-4",children:[jsx("div",{className:"overflow-hidden rounded-lg bg-gray-900",children:jsx("video",{src:URL.createObjectURL(n),controls:true,className:"w-full",style:{maxHeight:"300px"}})}),jsxs("p",{className:"text-center text-sm text-gray-600",children:["Recording saved! Duration: ",I(f)]}),jsxs("div",{className:"flex flex-col gap-2",children:[jsx("button",{onClick:()=>{t&&n&&v.current&&(t(n,v.current),e());},className:"flex items-center justify-center gap-2 rounded-lg bg-green-600 px-6 py-3 text-white transition-colors hover:bg-green-700",children:"Add to Canvas"}),jsxs("div",{className:"flex gap-2",children:[jsxs("button",{onClick:S,className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-blue-600 px-4 py-2 text-white transition-colors hover:bg-blue-700",children:[jsx(Download,{className:"h-5 w-5"}),"Download"]}),jsx("button",{onClick:()=>{i(null),l(0);},className:"flex-1 rounded-lg border border-gray-300 px-4 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50",children:"Re-record"})]})]})]})]}),jsx("div",{className:"rounded-lg border border-[#A7B7D6] bg-blue-50 p-3",children:jsxs("p",{className:"text-start text-sm text-blue-900",children:[jsx("strong",{children:"Tip:"})," The canvas will be recorded automatically. The modal will disappear during recording so you can freely draw and edit."]})})]})})};var Ud=({elementType:e,existingAudio:o,onSave:t,onDelete:a,onClose:r})=>{let[s,n]=useState(false),[i,f]=useState(null),[l,u]=useState(false),[d,m]=useState(0),c=useRef(null),p=useRef([]),x=useRef(null),h=useRef(null);useEffect(()=>{o&&!i&&fetch(o).then(w=>w.blob()).then(w=>f(w)).catch(w=>console.error("Error loading audio:",w));},[o,i]);let v=async()=>{try{let w=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0}}),q=new MediaRecorder(w);c.current=q,p.current=[],q.ondataavailable=P=>{P.data.size>0&&p.current.push(P.data);},q.onstop=()=>{let P=new Blob(p.current,{type:"audio/webm"});f(P),w.getTracks().forEach(U=>U.stop()),x.current&&clearInterval(x.current);},q.start(),n(!0),m(0),x.current=setInterval(()=>{m(P=>P+1);},1e3);}catch(w){console.error("Error starting audio recording:",w),alert("Failed to start recording. Please allow microphone access.");}},g=()=>{c.current&&s&&(c.current.stop(),n(false));},b=()=>{if(i){let w=URL.createObjectURL(i),q=new Audio(w);h.current=q,q.onended=()=>{u(false),URL.revokeObjectURL(w);},q.play(),u(true);}},y=()=>{h.current&&(h.current.pause(),h.current.currentTime=0,u(false));},C=async()=>{if(i){let w=new FileReader;w.onloadend=()=>{let q=w.result;t(q),r();},w.readAsDataURL(i);}},S=()=>{f(null),a();},I=w=>{let q=Math.floor(w/60),P=w%60;return `${q.toString().padStart(2,"0")}:${P.toString().padStart(2,"0")}`};return s?jsxs("div",{className:"fixed top-4 left-1/2 z-103 flex -translate-x-1/2 items-center gap-4 rounded-full border border-gray-200 bg-white px-6 py-3 shadow-2xl",children:[jsxs("div",{className:"flex items-center gap-2",children:[jsx("div",{className:"h-3 w-3 animate-pulse rounded-full bg-red-600"}),jsx("span",{className:"font-mono text-lg font-semibold text-gray-900",children:I(d)})]}),jsx("div",{className:"h-6 w-px bg-gray-300"}),jsx("span",{className:"text-sm text-gray-600",children:"Recording audio..."}),jsxs("button",{onClick:g,className:"ml-2 flex items-center gap-2 rounded-full bg-red-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-red-700",children:[jsx(Stop,{className:"h-4 w-4",weight:"fill"}),"Stop"]})]}):jsx("div",{className:"fixed inset-0 z-103 flex items-center justify-center bg-black/50",children:jsxs("div",{className:"w-full max-w-sm rounded-lg bg-white p-6 shadow-2xl",children:[jsxs("div",{className:"mb-6",children:[jsxs("h3",{className:"text-lg font-semibold text-gray-900",children:["Record Audio for"," ",e.charAt(0).toUpperCase()+e.slice(1).replace(/([A-Z])/g," $1")]}),jsx("p",{className:"text-sm text-gray-600",children:"Record a voice note for this element"})]}),jsxs("div",{className:"flex flex-col gap-4",children:[!i&&jsx("div",{className:"text-center",children:jsxs("button",{onClick:v,className:"bg-primary hover:bg-primary/90 flex w-full items-center justify-center gap-2 rounded-lg px-6 py-3 font-semibold text-white transition-colors hover:cursor-pointer",children:[jsx(Microphone,{className:"h-5 w-5",weight:"fill"}),"Start Recording"]})}),i&&jsxs("div",{className:"space-y-3",children:[jsxs("div",{className:"flex items-center justify-center gap-3",children:[jsxs("button",{onClick:l?y:b,className:"flex items-center gap-2 rounded-lg bg-blue-600 px-6 py-3 text-white transition-colors hover:bg-blue-700",children:[jsx(Play,{className:"h-5 w-5",weight:"fill"}),l?"Playing...":"Play Audio"]}),jsx("button",{onClick:S,className:"flex items-center gap-2 rounded-lg border border-red-300 bg-white px-4 py-3 text-red-600 transition-colors hover:bg-red-50",children:jsx(Trash,{className:"h-5 w-5"})})]}),jsx("button",{onClick:C,className:"w-full rounded-lg bg-green-600 px-6 py-3 text-white transition-colors hover:bg-green-700",children:"Save Audio"})]}),jsx("button",{onClick:r,className:"w-full rounded-lg bg-[#0000000A] p-3 text-base font-semibold text-[#00000099] transition-colors hover:cursor-pointer hover:bg-[#0000001A]",children:"Cancel"})]})]})})};var Lt=({audioData:e,x:o,y:t,width:a})=>{let[r,s]=useState(false),n=useRef(null);return jsx("button",{onClick:f=>{if(f.stopPropagation(),r&&n.current)n.current.pause(),n.current.currentTime=0,s(false);else {let l=new Audio(e);n.current=l,l.onended=()=>{s(false);},l.onerror=()=>{console.error("Error playing audio"),s(false);},l.play(),s(true);}},className:`absolute flex items-center justify-center rounded-full shadow-lg transition-all hover:scale-110 ${r?"bg-green-500 hover:bg-green-600":"bg-blue-500 hover:bg-blue-600"}`,style:{left:`${o+a-35}px`,top:`${t+5}px`,width:"30px",height:"30px",zIndex:99},title:r?"Stop Audio":"Play Audio",children:r?jsx(SpeakerSimpleSlash,{className:"h-4 w-4 text-white",weight:"fill"}):jsx(SpeakerHigh,{className:"h-4 w-4 text-white",weight:"fill"})})};var Gd=({selectedElementId:e,onClose:o,onSelectElement:t})=>{let a=ge(),r=ee(he),s=useMemo(()=>{if(!r)return [];let x=[];return r.images?.forEach(h=>{x.push({id:h.id,type:"image",name:"Image",timestamp:h.timestamp||0});}),r.videos?.forEach(h=>{x.push({id:h.id,type:"video",name:"Video",timestamp:h.timestamp||0});}),r.shapes?.forEach(h=>{x.push({id:h.id,type:"shape",name:`${h.type} Shape`,timestamp:h.timestamp||0});}),r.texts?.forEach(h=>{x.push({id:h.id,type:"text",name:h.text.substring(0,20)+(h.text.length>20?"...":""),timestamp:h.timestamp||0});}),r.flashcards?.forEach(h=>{x.push({id:h.id,type:"flashcard",name:`Flashcard (${h.images.length} images)`,timestamp:h.timestamp||0});}),r.photoFrames?.forEach(h=>{x.push({id:h.id,type:"photoFrame",name:"Photo Frame",timestamp:h.timestamp||0});}),r.multipleChoices?.forEach(h=>{x.push({id:h.id,type:"mcq",name:"Multiple Choice",timestamp:h.timestamp||0});}),r.trueFalses?.forEach(h=>{x.push({id:h.id,type:"trueFalse",name:"True/False",timestamp:h.timestamp||0});}),r.shortAnswers?.forEach(h=>{x.push({id:h.id,type:"shortAnswer",name:"Short Answer",timestamp:h.timestamp||0});}),r.LongAnswer?.forEach(h=>{x.push({id:h.id,type:"longAnswer",name:"Long Answer",timestamp:h.timestamp||0});}),r.fillInTheBlanks?.forEach(h=>{x.push({id:h.id,type:"fillInTheBlanks",name:"Fill in the Blanks",timestamp:h.timestamp||0});}),r.lines?.forEach(h=>{h.id&&x.push({id:h.id,type:"line",name:"Drawn Line",timestamp:h.timestamp||0});}),x.sort((h,v)=>v.timestamp-h.timestamp)},[r]),[n,i]=useState(s),[f,l]=useState(false);useEffect(()=>{f||i(s);},[s]);let u=x=>{let h="h-5 w-5";switch(x){case "image":return jsx(Image$2,{className:h});case "video":return jsx(VideoCamera,{className:h});case "shape":return jsx(Shapes$1,{className:h});case "text":return jsx(TextT,{className:h});case "flashcard":return jsx(Cards$1,{className:h});case "photoFrame":return jsx(FrameCorners,{className:h});case "line":return jsx("span",{className:h,children:"\u270F\uFE0F"});default:return jsx(Question,{className:h})}},d=x=>{if(x===0)return;let h=n[x],v=n[x-1];a(Oo({id:h.id,type:h.type,newTimestamp:v.timestamp+1}));},m=x=>{if(x===n.length-1)return;let h=n[x],v=n[x+1];a(Oo({id:h.id,type:h.type,newTimestamp:v.timestamp-1}));},c=x=>{l(true),i(x);},p=()=>{l(false);let x=Date.now();n.forEach((h,v)=>{let g=x-v;a(Oo({id:h.id,type:h.type,newTimestamp:g}));});};return jsxs(Fragment,{children:[jsx("div",{className:"fixed inset-0 z-9998 bg-black/30",onClick:o}),jsxs("div",{className:"fixed top-1/2 left-1/2 z-9999 w-96 -translate-x-1/2 -translate-y-1/2 rounded-lg border border-gray-200 bg-white shadow-2xl",children:[jsxs("div",{className:"flex items-center justify-between border-b border-gray-200 p-4",children:[jsxs("div",{className:"flex items-center gap-2",children:[jsx(Stack$1,{className:"h-5 w-5 text-gray-700",weight:"bold"}),jsx("h3",{className:"font-semibold text-gray-900",children:"Layers"})]}),jsx("button",{onClick:o,className:"rounded-lg p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600",children:jsx(X$2,{className:"h-5 w-5"})})]}),jsx("div",{className:"max-h-96 overflow-y-auto p-2",children:n.length===0?jsx("div",{className:"p-8 text-center text-sm text-gray-500",children:"No elements on this slide"}):jsx(Reorder.Group,{axis:"y",values:n,onReorder:c,className:"space-y-1",children:n.map((x,h)=>{let v=x.id===e;return jsxs(Reorder.Item,{value:x,onDragEnd:p,className:`flex cursor-grab items-center gap-2 rounded-lg p-2 transition-colors active:cursor-grabbing ${v?"border border-blue-200 bg-blue-50":"border border-transparent hover:bg-gray-50"}`,whileDrag:{scale:1.02,boxShadow:"0 8px 20px rgba(0,0,0,0.15)",backgroundColor:"white",zIndex:50},children:[jsx("div",{className:"text-gray-400",children:jsx(DotsSixVertical,{className:"h-4 w-4",weight:"bold"})}),jsxs("div",{onClick:()=>t(x.id,x.type),className:"flex flex-1 cursor-pointer items-center gap-2",children:[jsx("div",{className:`${v?"text-blue-600":"text-gray-600"}`,children:u(x.type)}),jsx("span",{className:`text-sm ${v?"font-medium text-blue-900":"text-gray-700"}`,children:x.name})]}),jsxs("div",{className:"flex gap-1",children:[jsx("button",{onClick:g=>{g.stopPropagation(),d(h);},disabled:h===0,className:"rounded p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-700 disabled:cursor-not-allowed disabled:opacity-30",title:"Move up (forward)",children:jsx(ArrowUp,{className:"h-4 w-4"})}),jsx("button",{onClick:g=>{g.stopPropagation(),m(h);},disabled:h===n.length-1,className:"rounded p-1 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-700 disabled:cursor-not-allowed disabled:opacity-30",title:"Move down (backward)",children:jsx(ArrowDown,{className:"h-4 w-4"})})]})]},x.id)})})}),jsx("div",{className:"border-t border-gray-200 p-3 text-xs text-gray-500",children:jsx("p",{children:"Drag to reorder \u2022 Top layers appear above bottom layers"})})]})]})};var Kd=memo(({multipleChoice:e,handleMcqTransform:o,mcqRefs:t,handleDragEnd:a,onContextMenu:r})=>{let s=useSelector(W=>W.toolbar.selectedTool),n=s==="pen"||s==="eraser",[i,f]=useState(new Set),[l,u]=useState(false),[d,m]=useState(null),c=useRef(null);useEffect(()=>{let W=c.current;if(W)return t.current.set(e.id,W),()=>{t.current.delete(e.id);}},[e.id]);let p=new Set(e.data.responseOptions.correctIndex),x=p.size>1,h=W=>{l||f(x?oe=>{let R=new Set(oe);return R.has(W)?R.delete(W):R.add(W),R}:new Set([W]));},v=()=>{i.size>0&&u(true);},g=()=>{u(false),f(new Set);},b=i.size===p.size&&Array.from(i).every(W=>p.has(W)),y=Array.from(i).filter(W=>p.has(W)),C=x&&y.length>0&&!b,S=()=>b?"\u2713 Correct! Great job! \u{1F389}":C?`\u26A0 Partially correct (${y.length}/${p.size})`:"\u2717 Try again!",I=()=>b?{bg:"#dcfce7",text:"#166534"}:C?{bg:"#fef3c7",text:"#92400e"}:{bg:"#fee2e2",text:"#991b1b"},w=55,q=8,P=24,U=60,D=60,F=x&&!l?25:0,T=e.data.feedbackMode==="practice"?48:0,H=12,N=U+F+(l?D:0),re=e.data.responseOptions.options.length*(w+q),V=N+re+H+T+P;return jsxs(Group,{ref:c,name:"mcq-element",draggable:!n,listening:!n,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,...n?{}:{onDragEnd:a,onContextMenu:W=>{let oe=c.current?.getStage()?.getPointerPosition();if(oe){let R={x:e.x,y:e.y,width:e.width,height:e.height};if(oe.x>=R.x&&oe.x<=R.x+R.width&&oe.y>=R.y&&oe.y<=R.y+R.height){let G=W.evt;r(G,e.id,"mcq");}}}},children:[jsx(Rect,{fill:"white",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:12,height:V,width:e.width,onTransformEnd:W=>o(e.id,W)}),jsx(Text,{x:P+8,y:P,text:e.data.question,fontSize:20,fontStyle:"bold",fill:"#111827",width:e.width-P*2,listening:false}),x&&!l&&e.data.feedbackMode==="practice"?jsx(Text,{x:P,y:P+35,text:`Select ${p.size} answers (${i.size}/${p.size} selected)`,fontSize:14,fill:"#6b7280",width:e.width-P*2,listening:false}):null,l&&e.data.feedbackMode==="practice"?jsxs(Fragment,{children:[jsx(Rect,{x:P+24,y:U+F,width:e.width-P*2-40,height:D-20,fill:I().bg,cornerRadius:8}),jsx(Text,{x:P,y:U+F,width:e.width-P*2,height:D-20,text:S(),fontSize:16,fontStyle:"bold",fill:I().text,align:"center",verticalAlign:"middle",listening:false})]}):null,e.data.responseOptions.options.map((W,oe)=>{let R=p.has(oe),G=i.has(oe),K=N+oe*(w+q),_="#e5e7eb",te="#ffffff",Q="#111827";return l&&R?(_="#22c55e",te="#dcfce7",Q="#1B9D2C"):l&&G&&!R?(_="#ef4444",te="#fee2e2",Q="#ef4444"):G&&(_="#096B76",te="#ECFFF8",Q="#096B76"),jsxs(Group,{children:[jsx(Rect,{x:P+12,y:K+(w-20)/2,width:20,height:20,fill:G?"#096B76":"white",stroke:G?"#096B76":"#d1d5db",strokeWidth:2,cornerRadius:x?4:10,listening:false}),G&&jsx(Text,{x:P+12,y:K+(w-20)/2,width:20,height:20,text:"\u2713",fontSize:14,fill:"white",align:"center",verticalAlign:"middle",listening:false}),jsx(Rect,{x:P+44,y:K,width:e.width-P*2-60,height:w,fill:te,stroke:_,strokeWidth:2,cornerRadius:8,onClick:Z=>{Z.cancelBubble=true,h(oe);},onTap:Z=>{Z.cancelBubble=true,h(oe);}}),jsx(Text,{x:P+60,y:K,width:e.width-P*2-80,height:w,text:W,fontSize:16,fill:Q,verticalAlign:"middle",listening:false})]},oe)}),e.data.feedbackMode==="practice"&&jsxs(Group,{y:N+e.data.responseOptions.options.length*(w+q)+12,children:[jsxs(Group,{onMouseDown:W=>{W.cancelBubble=true,m("check");},onMouseUp:W=>{W.cancelBubble=true,m(null),v();},onMouseLeave:W=>{W.cancelBubble=true,m(null);},onTouchStart:W=>{W.cancelBubble=true,m("check");},onTouchEnd:W=>{W.cancelBubble=true,m(null),v();},scaleX:d==="check"?.95:1,scaleY:d==="check"?.95:1,children:[jsx(Rect,{x:P+14,width:(e.width-P*2-24)/(l?2:1),height:48,fill:i.size===0||l?"#9ca3af":"#096B76",cornerRadius:8,onClick:W=>W.cancelBubble=true,onTap:W=>W.cancelBubble=true}),jsx(Text,{x:P+14,width:(e.width-P*2-24)/(l?2:1),height:48,text:l?"Submitted":"Check Work",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]}),l&&jsxs(Group,{x:(e.width-P*2)/2+8,onMouseDown:()=>m("reset"),onMouseUp:()=>{m(null),g();},onMouseLeave:()=>m(null),onTouchStart:()=>m("reset"),onTouchEnd:()=>{m(null),g();},scaleX:d==="reset"?.95:1,scaleY:d==="reset"?.95:1,children:[jsx(Rect,{x:P,width:(e.width-P*2-8)/2,height:48,fill:"#ef4444",cornerRadius:8,onClick:W=>W.cancelBubble=true,onTap:W=>W.cancelBubble=true}),jsx(Text,{x:P,width:(e.width-P*2-8)/2,height:48,text:"Reset",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]})]})]})});Kd.displayName="MultipleChoice";var jd=Kd;var gi=({multipleChoice:e,onContextMenu:o,handleMcqTransform:t})=>{let a=useDispatch(),r=useSelector(R=>R.toolbar.selectedTool),s=r==="pen"||r==="eraser",[n,i]=useState(false),[f,l]=useState(new Set),[u,d]=useState(false),[m,c]=useState(false),[p,x]=useState(0),h=340,v=100,g=window.innerWidth*.4,b=window.innerHeight*.5,y=h+20,C=v+60,S=g-40,I=b-300,w=useRef(null),q=R=>{a(oa({id:e.id,x:R.target.x(),y:R.target.y()}));},P=R=>{let G=R.target,K=G.x(),_=G.y(),te=window.innerWidth*.2,Z=K+te>y&&K<y+S&&_+50>C&&_<C+I;i(Z);},U=(R,G)=>{let K=G.target,_=K.x(),te=K.y(),Q=window.innerWidth*.2,be=_+Q>y&&_<y+S&&te+50>C&&te<C+I;l(be?ve=>new Set(ve).add(R):ve=>{let Ae=new Set(ve);return Ae.delete(R),Ae}),i(false);},D=()=>{d(true);},F=()=>{d(false),l(new Set),x(R=>R+1);},T=new Set(e.data.responseOptions.correctIndex),H=f.size===T.size&&Array.from(f).every(R=>T.has(R)),N=Array.from(f).filter(R=>T.has(R)),re=N.length>0&&!H,V=()=>H?"\u2713 Correct! Great job!":re?`\u26A0 Partially correct (${N.length}/${T.size})`:"\u2717 Try again!",W=()=>H?{bg:"#dcfce7",text:"#166534"}:re?{bg:"#fef3c7",text:"#92400e"}:{bg:"#fee2e2",text:"#991b1b"},oe=()=>u?H?"#4CAF50":re?"#f59e0b":"#ef4444":n?"#4CAF50":"#075560";return jsxs(Group,{ref:w,name:"mcq-element",width:g,height:b,draggable:!s,listening:!s,...s?{}:{onContextMenu:R=>{R.evt.preventDefault(),o(R.evt,e.id,"mcq");}},children:[jsxs(Group,{x:h,y:v,rotation:e.rotation,onDragEnd:q,children:[jsx(Rect,{fill:"white",stroke:n?"#4CAF50":"#e5e7eb",strokeWidth:n?4:2,cornerRadius:12,height:e.data.feedbackMode==="practice"?b-100:b-50,width:g,shadowColor:n?"#4CAF50":"transparent",shadowBlur:n?20:0,shadowOpacity:.5}),jsx(Text,{x:20,y:20,width:g-40,text:e.data.question,fontSize:20,fontStyle:"bold",fill:"#111827",align:"center",verticalAlign:"middle"}),jsx(Rect,{x:20,y:80,width:S,height:I,fill:"#EBF6F7",stroke:oe(),strokeWidth:3,dash:[10,10],cornerRadius:8}),u&&jsxs(Fragment,{children:[jsx(Rect,{x:23,y:I+18,width:S-5,height:60,fill:W().bg,cornerRadius:8}),jsx(Text,{x:20,y:I+20,width:S,height:60,text:V(),fontSize:18,fontStyle:"bold",fill:W().text,align:"center",verticalAlign:"middle"})]}),f.size===0&&!u&&jsx(Text,{x:20,y:60,width:S,height:I-60,text:T.size>1?`Drop ${T.size} Correct Answers Here`:"Drop Here",fontSize:28,fontStyle:"bold",fill:"#075560",align:"center",verticalAlign:"middle"}),e.data.feedbackMode==="practice"?jsxs(Group,{x:20,y:u?b-200:b-160,children:[jsxs(Group,{onMouseDown:()=>{c(true),D();},onMouseUp:()=>c(false),onMouseLeave:()=>c(false),onTouchStart:()=>{c(true),D();},onTouchEnd:()=>c(false),scaleX:m?.95:1,scaleY:m?.95:1,children:[jsx(Rect,{fill:"#075560",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:8,height:40,width:S}),jsx(Text,{text:"Check Work",fontSize:18,fontStyle:"bold",fill:"white",width:S,height:40,align:"center",verticalAlign:"middle",listening:false})]}),u&&jsxs(Group,{y:50,onMouseDown:F,onTouchStart:F,children:[jsx(Rect,{fill:"#dc2626",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:8,height:40,width:S}),jsx(Text,{text:"Reset",fontSize:18,fontStyle:"bold",fill:"white",width:S,height:40,align:"center",verticalAlign:"middle",listening:false})]})]}):null]}),e.data.responseOptions.options.map((R,G)=>{let K=G%2,_=Math.floor(G/2),te=window.innerWidth*.2,Q=50,Z=10,be=f.has(G),ve=T.has(G),Ae=u&&be,Y="transparent";return Ae?Y=ve?"#4CAF50":"#ef4444":be&&(Y="#4CAF50"),jsxs(Group,{x:340+K*(te+Z),y:v+b-80+_*(Q+Z),draggable:!u,onDragMove:P,onDragEnd:qe=>U(G,qe),opacity:u&&!be?.5:1,children:[jsx(Rect,{width:te-20,height:Q,fill:"white",stroke:Y,strokeWidth:4,cornerRadius:8,shadowBlur:20,shadowColor:"gray",shadowOpacity:.5}),jsx(Text,{width:te-20,height:Q,text:R,fontSize:18,fontStyle:"bold",fill:"#096B76",align:"center",verticalAlign:"middle",listening:false})]},`${G}-${p}`)})]})};gi.displayName="MultipleChoiceDragAndDrop";var _d=({multipleChoice:e,handleMcqTransform:o,handleSelect:t,mcqRefs:a,handleDragEnd:r,onContextMenu:s})=>jsx(Fragment,{children:e.map(n=>n.data.responseType==="classic"?jsx(jd,{multipleChoice:n,handleMcqTransform:o,handleSelect:t,mcqRefs:a,handleDragEnd:i=>r(i,n.id),onContextMenu:s},n.id):jsx(gi,{multipleChoice:n,handleMcqTransform:o,handleSelect:t,mcqRefs:a,onContextMenu:s},n.id))});var Xd=memo(({trueFalse:e,handleTrueFalseTransform:o,handleSelect:t,trueFalseRefs:a,onContextMenu:r,handleDragEnd:s})=>{let n=useSelector(N=>N.toolbar.selectedTool),i=n==="pen"||n==="eraser",[f,l]=useState(null),[u,d]=useState(false),[m,c]=useState(null),p=useRef(null);useEffect(()=>{let N=p.current;if(N)return a.current.set(e.id,N),()=>{a.current.delete(e.id);}},[e.id]);let x=()=>{f!==null&&d(true);},h=()=>{d(false),l(null);},v=e.data.responseOptions.correctAnswer,g=f===v,b=N=>{u||l(N);},y=()=>g?"\u2713 Correct! Great job! \u{1F389}":"\u2717 Try again!",C=()=>g?{bg:"#dcfce7",text:"#166534"}:{bg:"#fee2e2",text:"#991b1b"},S=70,I=12,w=24,q=60,P=60,U=e.data.feedbackMode==="practice"?48:0,D=12,F=q+(u?P:0),T=2*(S+I),H=F+T+D+U+w;return jsxs(Group,{ref:p,name:"trueFalse-element",draggable:!i,listening:!i,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,...i?{}:{onDragEnd:N=>s(N,e.id),onClick:N=>t(e.id),onTap:N=>t(e.id),onContextMenu:N=>{let re=p.current?.getStage()?.getPointerPosition();if(re){let V={x:e.x,y:e.y,width:e.width,height:e.height};if(re.x>=V.x&&re.x<=V.x+V.width&&re.y>=V.y&&re.y<=V.y+V.height){let W=N.evt;r(W,e.id,"trueFalse");}}}},children:[jsx(Rect,{fill:"white",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:12,height:H-20,width:e.width,onTransformEnd:N=>o(e.id,N)}),jsx(Text,{x:w,y:w,text:e.data.question,fontSize:20,fontStyle:"bold",fill:"#111827",width:e.width-w*2,listening:false}),u&&e.data.feedbackMode==="practice"?jsxs(Fragment,{children:[jsx(Rect,{x:w,y:q,width:e.width-w*2,height:P-10,fill:C().bg,cornerRadius:8}),jsx(Text,{x:w,y:q,width:e.width-w*2,height:P-10,text:y(),fontSize:16,fontStyle:"bold",fill:C().text,align:"center",verticalAlign:"middle",listening:false})]}):null,jsx(Group,{children:[{label:"True",value:true},{label:"False",value:false}].map((N,re)=>{let V=v===N.value,W=f===N.value,oe=(e.width-w*3)/2,R=w+re*(oe+w),G=F,K=N.value===true,_=K?"#10b981":"#ef4444",te="#ffffff",Q="#ffffff",Z="#e5e7eb";return u&&(V?(Q=K?"#f0fdf4":"#fef2f2",Z=K?"#86efac":"#fecaca"):W&&!V&&(Q="#fee2e2",Z="#ef4444")),W&&!u&&(Z="#096B76",Q="#ecfeff"),jsxs(Group,{children:[jsx(Rect,{x:R,y:G,width:oe,height:S+50,fill:Q,stroke:Z,strokeWidth:2,cornerRadius:12,onClick:be=>{be.cancelBubble=true,b(N.value);},onTap:be=>{be.cancelBubble=true,b(N.value);}}),jsx(Circle,{x:R+oe/2,y:G+40,radius:28,fill:_,listening:false}),K?jsx(Text,{x:R+oe/2-14,y:G+40-14,width:28,height:28,text:"\u2713",fontSize:32,fontStyle:"bold",fill:te,align:"center",verticalAlign:"middle",listening:false}):jsx(Text,{x:R+oe/2-14,y:G+40-14,width:28,height:28,text:"\u2717",fontSize:28,fontStyle:"bold",fill:te,align:"center",verticalAlign:"middle",listening:false}),jsx(Text,{x:R,y:G+85,width:oe,height:30,text:N.label,fontSize:18,fontStyle:"bold",fill:"#111827",align:"center",verticalAlign:"middle",listening:false})]},N.label)})}),e.data.feedbackMode==="practice"&&jsxs(Group,{y:F+2*(S+I),children:[jsxs(Group,{onMouseDown:N=>{N.cancelBubble=true,c("check");},onMouseUp:N=>{N.cancelBubble=true,c(null),x();},onMouseLeave:N=>{N.cancelBubble=true,c(null);},onTouchStart:N=>{N.cancelBubble=true,c("check");},onTouchEnd:N=>{N.cancelBubble=true,c(null),x();},scaleX:m==="check"?.95:1,scaleY:m==="check"?.95:1,children:[jsx(Rect,{x:w,width:(e.width-w*2-8)/(u?2:1),height:48,fill:f===null||u?"#9ca3af":"#096B76",cornerRadius:8,onClick:N=>N.cancelBubble=true,onTap:N=>N.cancelBubble=true}),jsx(Text,{x:w,width:(e.width-w*2-8)/(u?2:1),height:48,text:u?"Submitted":"Check Work",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]}),u&&jsxs(Group,{x:(e.width-w*2)/2+8,onMouseDown:()=>c("reset"),onMouseUp:()=>{c(null),h();},onMouseLeave:()=>c(null),onTouchStart:()=>c("reset"),onTouchEnd:()=>{c(null),h();},scaleX:m==="reset"?.95:1,scaleY:m==="reset"?.95:1,children:[jsx(Rect,{x:w,width:(e.width-w*2-8)/2,height:48,fill:"#ef4444",cornerRadius:8,onClick:N=>N.cancelBubble=true,onTap:N=>N.cancelBubble=true}),jsx(Text,{x:w,width:(e.width-w*2-8)/2,height:48,text:"Reset",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]})]})]})});Xd.displayName="TrueFalse";var $d=Xd;var fg="#FFFFFF",vi=({trueFalse:e,onContextMenu:o,handleTrueFalseTransform:t})=>{let a=useDispatch(),r=useSelector(_=>_.toolbar.selectedTool),s=r==="pen"||r==="eraser",[n,i]=useState(false),[f,l]=useState(null),[u,d]=useState(false),[m,c]=useState(false),[p,x]=useState(0),[h,v]=useState(false),g=340,b=100,y=window.innerWidth*.4,C=window.innerHeight*.5,S=y-40,I=C-300,w=20,q=60,P=S,U=I,D=y*.2-40,F=50,T=useRef(null),H=_=>{a(ra({id:e.id,x:_.target.x(),y:_.target.y()}));},N=_=>{let te=_.target,Q=te.x(),Z=te.y(),be=Math.max(0,Math.min(Q+D,w+P)-Math.max(Q,w)),ve=Math.max(0,Math.min(Z+F,q+U)-Math.max(Z,q)),Ae=be*ve,Y=D*F;i(Ae/Y>=.5);},re=(_,te)=>{let Q=te.target,Z=Q.x(),be=Q.y(),ve=Math.max(0,Math.min(Z+D,w+P)-Math.max(Z,w)),Ae=Math.max(0,Math.min(be+F,q+U)-Math.max(be,q)),Y=ve*Ae,qe=D*F;if(Y/qe>=.5)l(_);else return;i(false);},V=()=>{d(true);},W=()=>{d(false),l(null),x(_=>_+1);},oe=e.data.responseOptions.correctAnswer,R=f===oe,G=()=>R?"\u2713 Correct! Great job!":"\u2717 Try again!",K=()=>R?{bg:"#dcfce7",text:"#166534"}:{bg:"#fee2e2",text:"#991b1b"};return jsx(Group,{ref:T,name:"trueFalse-element",width:y,height:C,draggable:!s,listening:!s,...s?{}:{onContextMenu:_=>{_.evt.preventDefault(),o(_.evt,e.id,"trueFalse");}},children:jsxs(Group,{x:g,y:b,rotation:e.rotation,onDragEnd:H,children:[jsx(Rect,{fill:"white",stroke:n?"#4CAF50":"#e5e7eb",strokeWidth:n?4:2,cornerRadius:12,height:u?C:e.data.feedbackMode==="practice"?C-50:C-100,width:y,shadowColor:n?"#4CAF50":"transparent",shadowBlur:n?20:0,shadowOpacity:.5}),jsx(Text,{x:20,y:20,width:y-40,text:e.data.question,fontSize:20,fontStyle:"bold",fill:"#111827",align:"center",verticalAlign:"middle"}),jsx(Rect,{x:20,y:60,width:S,height:I,fill:"transparent",stroke:n?"#4CAF50":"#075560",strokeWidth:3,dash:[10,10],cornerRadius:8}),u&&jsxs(Fragment,{children:[jsx(Rect,{x:20,y:60,width:S,height:60,fill:K().bg,cornerRadius:8}),jsx(Text,{x:20,y:60,width:S,height:60,text:G(),fontSize:18,fontStyle:"bold",fill:K().text,align:"center",verticalAlign:"middle"})]}),f===null&&!u&&jsx(Text,{x:20,y:60,width:S,height:I-60,text:"Drop Your Answer Here",fontSize:28,fontStyle:"bold",fill:"#075560",align:"center",verticalAlign:"middle"}),e.data.feedbackMode==="practice"?jsxs(Group,{x:20,y:C-100,children:[jsxs(Group,{onMouseDown:()=>{f!==null&&(c(true),V());},onMouseUp:()=>c(false),onMouseLeave:()=>c(false),onTouchStart:()=>{f!==null&&(c(true),V());},onTouchEnd:()=>c(false),scaleX:m?.95:1,scaleY:m?.95:1,children:[jsx(Rect,{fill:f===null?"#9ca3af":"#075560",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:8,height:40,width:S}),jsx(Text,{text:"Check Work",fontSize:18,fontStyle:"bold",fill:"white",width:S,height:40,align:"center",verticalAlign:"middle",listening:false})]}),u&&jsxs(Group,{y:50,onMouseDown:W,onTouchStart:W,children:[jsx(Rect,{fill:"#dc2626",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:8,height:40,width:S}),jsx(Text,{text:"Reset",fontSize:18,fontStyle:"bold",fill:"white",width:S,height:40,align:"center",verticalAlign:"middle",listening:false})]})]}):null,[{value:true,label:"True"},{value:false,label:"False"}].map((_,te)=>{let Q=window.innerWidth*.2,Z=50,be=10,ve=f===_.value,Ae=oe===_.value,Y=u&&ve,qe="transparent";return Y?qe=Ae?"#4CAF50":"#ef4444":ve&&(qe="#4CAF50"),jsxs(Group,{x:16+te*(Q+be),y:b+C-300,draggable:!u,onDragMove:N,onDragEnd:Sa=>re(_.value,Sa),opacity:u&&!ve?.5:1,children:[jsx(Rect,{width:Q-40,height:Z,fill:"#075560",stroke:qe,strokeWidth:4,cornerRadius:8}),jsx(Text,{width:Q-40,height:Z,text:_.label,fontSize:18,fontStyle:"bold",fill:fg,align:"center",verticalAlign:"middle",listening:false})]},`${_.value}-${p}`)})]})})};vi.displayName="TrueFalseDragAndDrop";var Yd=({trueFalses:e,handleTrueFalseTransform:o,handleSelect:t,trueFalseRefs:a,handleDragEnd:r,onContextMenu:s})=>jsx(Fragment,{children:e.map(n=>n.data.responseType==="classic"?jsx($d,{trueFalse:n,handleTrueFalseTransform:o,handleSelect:t,trueFalseRefs:a,onContextMenu:s,handleDragEnd:r},n.id):jsx(vi,{trueFalse:n,handleTrueFalseTransform:o,handleSelect:t,trueFalseRefs:a,onContextMenu:s},n.id))});var da=new WeakMap,uo=new WeakMap,Qo={current:[]},wi=false,Zo=0,Jo=new Set,ps=new Map;function Jd(e){let o=Array.from(e).sort((t,a)=>t instanceof Ft&&t.options.deps.includes(a)?1:a instanceof Ft&&a.options.deps.includes(t)?-1:0);for(let t of o){if(Qo.current.includes(t))continue;Qo.current.push(t),t.recompute();let a=uo.get(t);if(a)for(let r of a){let s=da.get(r);s&&Jd(s);}}}function hg(e){let o={prevVal:e.prevState,currentVal:e.state};for(let t of e.listeners)t(o);}function gg(e){let o={prevVal:e.prevState,currentVal:e.state};for(let t of e.listeners)t(o);}function hs(e){if(Zo>0&&!ps.has(e)&&ps.set(e,e.prevState),Jo.add(e),!(Zo>0)&&!wi)try{for(wi=!0;Jo.size>0;){let o=Array.from(Jo);Jo.clear();for(let t of o){let a=ps.get(t)??t.prevState;t.prevState=a,hg(t);}for(let t of o){let a=da.get(t);a&&(Qo.current.push(t),Jd(a));}for(let t of o){let a=da.get(t);if(a)for(let r of a)gg(r);}}}finally{wi=false,Qo.current=[],ps.clear();}}function ct(e){Zo++;try{e();}finally{if(Zo--,Zo===0){let o=Jo.values().next().value;o&&hs(o);}}}function Zd(e){return typeof e=="function"}var Gt=class{constructor(o,t){this.listeners=new Set,this.subscribe=a=>{var r,s;this.listeners.add(a);let n=(s=(r=this.options)==null?void 0:r.onSubscribe)==null?void 0:s.call(r,a,this);return ()=>{this.listeners.delete(a),n?.();}},this.prevState=o,this.state=o,this.options=t;}setState(o){var t,a,r;this.prevState=this.state,(t=this.options)!=null&&t.updateFn?this.state=this.options.updateFn(this.prevState)(o):Zd(o)?this.state=o(this.prevState):this.state=o,(r=(a=this.options)==null?void 0:a.onUpdate)==null||r.call(a),hs(this);}};var Ft=class e{constructor(o){this.listeners=new Set,this._subscriptions=[],this.lastSeenDepValues=[],this.getDepVals=()=>{let t=this.options.deps.length,a=new Array(t),r=new Array(t);for(let s=0;s<t;s++){let n=this.options.deps[s];a[s]=n.prevState,r[s]=n.state;}return this.lastSeenDepValues=r,{prevDepVals:a,currDepVals:r,prevVal:this.prevState??void 0}},this.recompute=()=>{var t,a;this.prevState=this.state;let r=this.getDepVals();this.state=this.options.fn(r),(a=(t=this.options).onUpdate)==null||a.call(t);},this.checkIfRecalculationNeededDeeply=()=>{for(let s of this.options.deps)s instanceof e&&s.checkIfRecalculationNeededDeeply();let t=false,a=this.lastSeenDepValues,{currDepVals:r}=this.getDepVals();for(let s=0;s<r.length;s++)if(r[s]!==a[s]){t=true;break}t&&this.recompute();},this.mount=()=>(this.registerOnGraph(),this.checkIfRecalculationNeededDeeply(),()=>{this.unregisterFromGraph();for(let t of this._subscriptions)t();}),this.subscribe=t=>{var a,r;this.listeners.add(t);let s=(r=(a=this.options).onSubscribe)==null?void 0:r.call(a,t,this);return ()=>{this.listeners.delete(t),s?.();}},this.options=o,this.state=o.fn({prevDepVals:void 0,prevVal:void 0,currDepVals:this.getDepVals().currDepVals});}registerOnGraph(o=this.options.deps){for(let t of o)if(t instanceof e)t.registerOnGraph(),this.registerOnGraph(t.options.deps);else if(t instanceof Gt){let a=da.get(t);a||(a=new Set,da.set(t,a)),a.add(this);let r=uo.get(this);r||(r=new Set,uo.set(this,r)),r.add(t);}}unregisterFromGraph(o=this.options.deps){for(let t of o)if(t instanceof e)this.unregisterFromGraph(t.options.deps);else if(t instanceof Gt){let a=da.get(t);a&&a.delete(this);let r=uo.get(this);r&&r.delete(t);}}};function xg(e){return typeof e=="function"}function Li(e,...o){return xg(e)?e(...o):e}function Qd(e){return e||(typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"")}var ua,tt,Je,er,ca,Ea,Xt,co,tr,gs,ar,fo,Ba=class{constructor({pluginId:o,debug:t=false,enabled:a=true,reconnectEveryMs:r=1e3}){ke(this,ua,true);ke(this,tt);ke(this,Je);ke(this,er);ke(this,ca);ke(this,Ea);ke(this,Xt);ke(this,co);ke(this,tr,0);ke(this,gs,5);ke(this,ar,()=>{this.debugLog("Connected to event bus"),Ce(this,Ea,true),this.debugLog("Emitting queued events",j(this,ca)),j(this,ca).forEach(o=>this.emitEventToBus(o)),Ce(this,ca,[]),this.stopConnectLoop(),j(this,Je).call(this).removeEventListener("tanstack-connect-success",j(this,ar));});ke(this,fo,()=>{if(j(this,Je).call(this).addEventListener("tanstack-connect-success",j(this,ar)),j(this,tr)<j(this,gs)){Rl(this,tr)._++,this.dispatchCustomEvent("tanstack-connect",{});return}j(this,Je).call(this).removeEventListener("tanstack-connect",j(this,fo)),this.debugLog("Max retries reached, giving up on connection"),this.stopConnectLoop();});Ce(this,tt,o),Ce(this,ua,a),Ce(this,Je,this.getGlobalTarget),Ce(this,er,t),this.debugLog(" Initializing event subscription for plugin",j(this,tt)),Ce(this,ca,[]),Ce(this,Ea,false),Ce(this,Xt,null),Ce(this,co,r);}startConnectLoop(){j(this,Xt)!==null||j(this,Ea)||(this.debugLog(`Starting connect loop (every ${j(this,co)}ms)`),Ce(this,Xt,setInterval(j(this,fo),j(this,co))));}stopConnectLoop(){j(this,Xt)!==null&&(clearInterval(j(this,Xt)),Ce(this,Xt,null),this.debugLog("Stopped connect loop"));}debugLog(...o){j(this,er)&&console.log(`\u{1F334} [tanstack-devtools:${j(this,tt)}-plugin]`,...o);}getGlobalTarget(){if(typeof globalThis<"u"&&globalThis.__TANSTACK_EVENT_TARGET__)return this.debugLog("Using global event target"),globalThis.__TANSTACK_EVENT_TARGET__;if(typeof window<"u"&&typeof window.addEventListener<"u")return this.debugLog("Using window as event target"),window;let o=typeof EventTarget<"u"?new EventTarget:void 0;return typeof o>"u"||typeof o.addEventListener>"u"?(this.debugLog("No event mechanism available, running in non-web environment"),{addEventListener:()=>{},removeEventListener:()=>{},dispatchEvent:()=>false}):(this.debugLog("Using new EventTarget as fallback"),o)}getPluginId(){return j(this,tt)}dispatchCustomEventShim(o,t){try{let a=new Event(o,{detail:t});j(this,Je).call(this).dispatchEvent(a);}catch{this.debugLog("Failed to dispatch shim event");}}dispatchCustomEvent(o,t){try{j(this,Je).call(this).dispatchEvent(new CustomEvent(o,{detail:t}));}catch{this.dispatchCustomEventShim(o,t);}}emitEventToBus(o){this.debugLog("Emitting event to client bus",o),this.dispatchCustomEvent("tanstack-dispatch-event",o);}emit(o,t){if(!j(this,ua)){this.debugLog("Event bus client is disabled, not emitting event",o,t);return}if(!j(this,Ea)){this.debugLog("Bus not available, will be pushed as soon as connected"),j(this,ca).push({type:`${j(this,tt)}:${o}`,payload:t,pluginId:j(this,tt)}),typeof CustomEvent<"u"&&(j(this,fo).call(this),this.startConnectLoop());return}return this.emitEventToBus({type:`${j(this,tt)}:${o}`,payload:t,pluginId:j(this,tt)})}on(o,t){let a=`${j(this,tt)}:${o}`;if(!j(this,ua))return this.debugLog("Event bus client is disabled, not registering event",a),()=>{};let r=s=>{this.debugLog("Received event from bus",s.detail),t(s.detail);};return j(this,Je).call(this).addEventListener(a,r),this.debugLog("Registered event to bus",a),()=>{j(this,Je).call(this).removeEventListener(a,r);}}onAll(o){if(!j(this,ua))return this.debugLog("Event bus client is disabled, not registering event"),()=>{};let t=a=>{let r=a.detail;o(r);};return j(this,Je).call(this).addEventListener("tanstack-devtools-global",t),()=>j(this,Je).call(this).removeEventListener("tanstack-devtools-global",t)}onAllPluginEvents(o){if(!j(this,ua))return this.debugLog("Event bus client is disabled, not registering event"),()=>{};let t=a=>{let r=a.detail;j(this,tt)&&r.pluginId!==j(this,tt)||o(r);};return j(this,Je).call(this).addEventListener("tanstack-devtools-global",t),()=>j(this,Je).call(this).removeEventListener("tanstack-devtools-global",t)}};ua=new WeakMap,tt=new WeakMap,Je=new WeakMap,er=new WeakMap,ca=new WeakMap,Ea=new WeakMap,Xt=new WeakMap,co=new WeakMap,tr=new WeakMap,gs=new WeakMap,ar=new WeakMap,fo=new WeakMap;var Ii=class extends Ba{constructor(o){super({pluginId:"pacer",debug:o?.debug});}},eu=(e,o)=>{Si.emit(e,o);},Si=new Ii;function tu(){return {executionCount:0,isPending:false,lastArgs:void 0,lastExecutionTime:0,nextExecutionTime:0,status:"idle",maybeExecuteCount:0}}var bg={enabled:true,leading:true,trailing:true,wait:0},fa,ft,Oa,Na,Va,mo,xs=class{constructor(o,t){ke(this,fa);ke(this,ft);ke(this,Oa);ke(this,Na);ke(this,Va);ke(this,mo);this.fn=o,this.store=new Gt(tu()),this.setOptions=a=>{this.options={...this.options,...a},j(this,Oa).call(this)||this.cancel();},Ce(this,ft,a=>{this.store.setState(r=>{let s={...r,...a},{isPending:n}=s;return {...s,status:j(this,Oa).call(this)?n?"pending":"idle":"disabled"}}),eu("Throttler",this);}),Ce(this,Oa,()=>!!Li(this.options.enabled,this)),Ce(this,Na,()=>Li(this.options.wait,this)),this.maybeExecute=(...a)=>{j(this,ft).call(this,{maybeExecuteCount:this.store.state.maybeExecuteCount+1});let r=Date.now(),s=r-this.store.state.lastExecutionTime,n=j(this,Na).call(this);if(this.options.leading&&s>=n)j(this,Va).call(this,...a);else if(j(this,ft).call(this,{lastArgs:a}),!j(this,fa)&&this.options.trailing){let i=this.store.state.lastExecutionTime?r-this.store.state.lastExecutionTime:0,f=n-i;j(this,ft).call(this,{isPending:true}),Ce(this,fa,setTimeout(()=>{let{lastArgs:l}=this.store.state;l!==void 0&&j(this,Va).call(this,...l);},f));}},Ce(this,Va,(...a)=>{if(!j(this,Oa).call(this))return;this.fn(...a);let r=Date.now(),s=r+j(this,Na).call(this);j(this,mo).call(this),j(this,ft).call(this,{executionCount:this.store.state.executionCount+1,lastExecutionTime:r,nextExecutionTime:s,isPending:false,lastArgs:void 0}),this.options.onExecute?.(a,this),setTimeout(()=>{this.store.state.isPending||j(this,ft).call(this,{nextExecutionTime:void 0});},j(this,Na).call(this));}),this.flush=()=>{this.store.state.isPending&&this.store.state.lastArgs&&j(this,Va).call(this,...this.store.state.lastArgs);},Ce(this,mo,()=>{j(this,fa)&&(clearTimeout(j(this,fa)),Ce(this,fa,void 0));}),this.cancel=()=>{j(this,mo).call(this),j(this,ft).call(this,{lastArgs:void 0,isPending:false});},this.reset=()=>{j(this,ft).call(this,tu());},this.key=Qd(t.key),this.options={...bg,...t},j(this,ft).call(this,this.options.initialState??{}),Si.on("d-Throttler",a=>{a.payload.key===this.key&&(j(this,ft).call(this,a.payload.store.state),this.setOptions(a.payload.options));});}};fa=new WeakMap,ft=new WeakMap,Oa=new WeakMap,Na=new WeakMap,Va=new WeakMap,mo=new WeakMap;function Ci(e,o){return new xs(e,o).maybeExecute}function ma(e,o){return typeof e=="function"?e(o):e}function pa(e,o){return ws(o).reduce((a,r)=>{if(a===null)return null;if(typeof a<"u")return a[r]},e)}function po(e,o,t){let a=ws(o);function r(s){if(!a.length)return ma(t,s);let n=a.shift();if(typeof n=="string"||typeof n=="number"&&!Array.isArray(s))return typeof s=="object"?(s===null&&(s={}),{...s,[n]:r(s[n])}):{[n]:r()};if(Array.isArray(s)&&typeof n=="number"){let i=s.slice(0,n);return [...i.length?i:new Array(n),r(s[n]),...s.slice(n+1)]}return [...new Array(n),r()]}return r(e)}function Mi(e,o){let t=ws(o);function a(r){if(!r)return;if(t.length===1){let n=t[0];if(Array.isArray(r)&&typeof n=="number")return r.filter((l,u)=>u!==n);let{[n]:i,...f}=r;return f}let s=t.shift();if(typeof s=="string"&&typeof r=="object")return {...r,[s]:a(r[s])};if(typeof s=="number"&&Array.isArray(r)){if(s>=r.length)return r;let n=r.slice(0,s);return [...n.length?n:new Array(s),a(r[s]),...r.slice(s+1)]}throw new Error("It seems we have created an infinite loop in deleteBy. ")}return a(e)}var vg=/^(\d+)$/gm,yg=/\.(\d+)(?=\.)/gm,wg=/^(\d+)\./gm,Lg=/\.(\d+$)/gm,Ig=/\.{2,}/gm,ki="__int__",bs=`${ki}$1`;function ws(e){if(Array.isArray(e))return [...e];if(typeof e!="string")throw new Error("Path must be a string.");return e.replace(/(^\[)|]/gm,"").replace(/\[/g,".").replace(vg,bs).replace(yg,`.${bs}.`).replace(wg,`${bs}.`).replace(Lg,`.${bs}`).replace(Ig,".").split(".").map(o=>{if(o.startsWith(ki)){let t=o.substring(ki.length),a=parseInt(t,10);return String(a)===t?a:t}return o})}function Ai(e){return !(Array.isArray(e)&&e.length===0)}function ho(e,o){let t=a=>a.validators.filter(Boolean).map(r=>({cause:r.cause,validate:r.fn}));return o.validationLogic({form:o.form,validators:o.validators,event:{type:e,async:false},runValidation:t})}function go(e,o){let{asyncDebounceMs:t}=o,{onBlurAsyncDebounceMs:a,onChangeAsyncDebounceMs:r,onDynamicAsyncDebounceMs:s}=o.validators||{},n=t??0,i=f=>f.validators.filter(Boolean).map(l=>{let u=l?.cause||e,d=n;switch(u){case "change":d=r??n;break;case "blur":d=a??n;break;case "dynamic":d=s??n;break;case "submit":d=0;break}return e==="submit"&&(d=0),{cause:u,validate:l.fn,debounceMs:d}});return o.validationLogic({form:o.form,validators:o.validators,event:{type:e,async:true},runValidation:i})}var or=e=>!!e&&typeof e=="object"&&"fields"in e;function ha(e,o){if(Object.is(e,o))return true;if(typeof e!="object"||e===null||typeof o!="object"||o===null)return false;if(e instanceof Date&&o instanceof Date)return e.getTime()===o.getTime();if(e instanceof Map&&o instanceof Map){if(e.size!==o.size)return false;for(let[r,s]of e)if(!o.has(r)||!Object.is(s,o.get(r)))return false;return true}if(e instanceof Set&&o instanceof Set){if(e.size!==o.size)return false;for(let r of e)if(!o.has(r))return false;return true}let t=Object.keys(e),a=Object.keys(o);if(t.length!==a.length)return false;for(let r of t)if(!a.includes(r)||!ha(e[r],o[r]))return false;return true}var Ls=({newFormValidatorError:e,isPreviousErrorFromFormValidator:o,previousErrorValue:t})=>e?{newErrorValue:e,newSource:"form"}:o?{newErrorValue:void 0,newSource:void 0}:t?{newErrorValue:t,newSource:"field"}:{newErrorValue:void 0,newSource:void 0},Is=({formLevelError:e,fieldLevelError:o})=>o?{newErrorValue:o,newSource:"field"}:e?{newErrorValue:e,newSource:"form"}:{newErrorValue:void 0,newSource:void 0};function We(e,o){return e==null?o:{...e,...o}}var qa=256,ys=[],vs;for(;qa--;)ys[qa]=(qa+256).toString(16).substring(1);function Ti(){let e=0,o,t="";if(!vs||qa+16>256){for(vs=new Array(256),e=256;e--;)vs[e]=256*Math.random()|0;e=0,qa=0;}for(;e<16;e++)o=vs[qa+e],e===6?t+=ys[o&15|64]:e===8?t+=ys[o&63|128]:t+=ys[o],e&1&&e>1&&e<11&&(t+="-");return qa++,t}var ga=e=>{if(!e.validators)return e.runValidation({validators:[],form:e.form});let o=e.event.async,t=o?void 0:{fn:e.validators.onMount,cause:"mount"},a={fn:o?e.validators.onChangeAsync:e.validators.onChange,cause:"change"},r={fn:o?e.validators.onBlurAsync:e.validators.onBlur,cause:"blur"},s={fn:o?e.validators.onSubmitAsync:e.validators.onSubmit,cause:"submit"},n=o?void 0:{fn:()=>{},cause:"server"};switch(e.event.type){case "mount":return e.runValidation({validators:[t],form:e.form});case "submit":return e.runValidation({validators:[a,r,s,n],form:e.form});case "server":return e.runValidation({validators:[],form:e.form});case "blur":return e.runValidation({validators:[r,n],form:e.form});case "change":return e.runValidation({validators:[a,n],form:e.form});default:throw new Error(`Unknown validation event type: ${e.event.type}`)}};function Sg(e,o){let t=new Map;for(let a of e){let r=a.path??[],s=o,n="";for(let i=0;i<r.length;i++){let f=r[i];if(f===void 0)continue;let l=typeof f=="object"?f.key:f,u=Number(l);Array.isArray(s)&&!Number.isNaN(u)?n+=`[${u}]`:n+=(i>0?".":"")+String(l),typeof s=="object"&&s!==null?s=s[l]:s=void 0;}t.set(n,(t.get(n)??[]).concat(a));}return Object.fromEntries(t)}var au=(e,o)=>{let t=Sg(e,o);return {form:t,fields:t}},xa={validate({value:e,validationSource:o},t){let a=t["~standard"].validate(e);if(a instanceof Promise)throw new Error("async function passed to sync validator");if(a.issues)return o==="field"?a.issues:au(a.issues,e)},async validateAsync({value:e,validationSource:o},t){let a=await t["~standard"].validate(e);if(a.issues)return o==="field"?a.issues:au(a.issues,e)}},Ss=e=>!!e&&"~standard"in e;var xo={isValidating:false,isTouched:false,isBlurred:false,isDirty:false,isPristine:true,isValid:true,isDefaultValue:true,errors:[],errorMap:{},errorSourceMap:{}};function rr(e){function o(d,m,c,p){let x=a(d,m,c,p);({insert:()=>i(x,d,m),remove:()=>f(x),swap:()=>p!==void 0&&u(x,d,m,p),move:()=>p!==void 0&&l(x,d,m,p)})[c]();}function t(d,m){return `${d}[${m}]`}function a(d,m,c,p){let x=[t(d,m)];if(c==="swap")x.push(t(d,p));else if(c==="move"){let[h,v]=[Math.min(m,p),Math.max(m,p)];for(let g=h;g<=v;g++)x.push(t(d,g));}else {let h=e.getFieldValue(d),v=Array.isArray(h)?h.length:0;for(let g=m+1;g<v;g++)x.push(t(d,g));}return Object.keys(e.fieldInfo).filter(h=>x.some(v=>h.startsWith(v)))}function r(d,m){return d.replace(/\[(\d+)\]/,(c,p)=>{let x=parseInt(p,10);return `[${m==="up"?x+1:Math.max(0,x-1)}]`})}function s(d,m){(m==="up"?d:[...d].reverse()).forEach(p=>{let x=r(p.toString(),m),h=e.getFieldMeta(x);h?e.setFieldMeta(p,h):e.setFieldMeta(p,n());});}let n=()=>xo,i=(d,m,c)=>{s(d,"down"),d.forEach(p=>{p.toString().startsWith(t(m,c))&&e.setFieldMeta(p,n());});},f=d=>{s(d,"up");},l=(d,m,c,p)=>{let x=new Map(Object.keys(e.fieldInfo).filter(h=>h.startsWith(t(m,c))).map(h=>[h,e.getFieldMeta(h)]));s(d,c<p?"up":"down"),Object.keys(e.fieldInfo).filter(h=>h.startsWith(t(m,p))).forEach(h=>{let v=h.replace(t(m,p),t(m,c)),g=x.get(v);g&&e.setFieldMeta(h,g);});},u=(d,m,c,p)=>{d.forEach(x=>{if(!x.toString().startsWith(t(m,c)))return;let h=x.toString().replace(t(m,c),t(m,p)),[v,g]=[e.getFieldMeta(x),e.getFieldMeta(h)];v&&e.setFieldMeta(h,v),g&&e.setFieldMeta(x,g);});};return {handleArrayFieldMetaShift:o}}var Ri=class extends Ba{constructor(){super({pluginId:"form-devtools"});}},mt=new Ri;function Pi(e){return {values:e.values??{},errorMap:e.errorMap??{},fieldMetaBase:e.fieldMetaBase??{},isSubmitted:e.isSubmitted??false,isSubmitting:e.isSubmitting??false,isValidating:e.isValidating??false,submissionAttempts:e.submissionAttempts??0,isSubmitSuccessful:e.isSubmitSuccessful??false,validationMetaMap:e.validationMetaMap??{onChange:void 0,onBlur:void 0,onSubmit:void 0,onMount:void 0,onServer:void 0,onDynamic:void 0}}}var nr=class{constructor(o){this.options={},this.fieldInfo={},this.prevTransformArray=[],this.mount=()=>{let a=this.fieldMetaDerived.mount(),r=this.store.mount(),s=()=>{a(),r(),mt.emit("form-unmounted",{id:this._formId});};this.options.listeners?.onMount?.({formApi:this});let{onMount:n}=this.options.validators||{};return mt.emit("form-api",{id:this._formId,state:this.store.state,options:this.options}),n&&this.validateSync("mount"),s},this.update=a=>{if(!a)return;let r=this.options;this.options=a;let s=!!a.transform?.deps?.some((f,l)=>f!==this.prevTransformArray[l]),n=a.defaultValues&&!ha(a.defaultValues,r.defaultValues)&&!this.state.isTouched,i=!ha(a.defaultState,r.defaultState)&&!this.state.isTouched;!n&&!i&&!s||(ct(()=>{this.baseStore.setState(()=>Pi(Object.assign({},this.state,i?a.defaultState:{},n?{values:a.defaultValues}:{},s?{_force_re_eval:!this.state._force_re_eval}:{})));}),mt.emit("form-api",{id:this._formId,state:this.store.state,options:this.options}));},this.reset=(a,r)=>{let{fieldMeta:s}=this.state,n=this.resetFieldMeta(s);a&&!r?.keepDefaultValues&&(this.options={...this.options,defaultValues:a}),this.baseStore.setState(()=>Pi({...this.options.defaultState,values:a??this.options.defaultValues??this.options.defaultState?.values,fieldMetaBase:n}));},this.validateAllFields=async a=>{let r=[];return ct(()=>{Object.values(this.fieldInfo).forEach(n=>{if(!n.instance)return;let i=n.instance;r.push(Promise.resolve().then(()=>i.validate(a,{skipFormValidation:!0}))),n.instance.state.meta.isTouched||n.instance.setMeta(f=>({...f,isTouched:!0}));});}),(await Promise.all(r)).flat()},this.validateArrayFieldsStartingFrom=async(a,r,s)=>{let n=this.getFieldValue(a),i=Array.isArray(n)?Math.max(n.length-1,0):null,f=[`${a}[${r}]`];for(let m=r+1;m<=(i??0);m++)f.push(`${a}[${m}]`);let l=Object.keys(this.fieldInfo).filter(m=>f.some(c=>m.startsWith(c))),u=[];return ct(()=>{l.forEach(m=>{u.push(Promise.resolve().then(()=>this.validateField(m,s)));});}),(await Promise.all(u)).flat()},this.validateField=(a,r)=>{let s=this.fieldInfo[a]?.instance;return s?(s.state.meta.isTouched||s.setMeta(n=>({...n,isTouched:true})),s.validate(r)):[]},this.validateSync=a=>{let r=ho(a,{...this.options,form:this,validationLogic:this.options.validationLogic||ga}),s=false,n={};return ct(()=>{for(let l of r){if(!l.validate)continue;let u=this.runValidator({validate:l.validate,value:{value:this.state.values,formApi:this,validationSource:"form"},type:"validate"}),{formError:d,fieldErrors:m}=Cs(u),c=sr(l.cause);for(let p of Object.keys(this.state.fieldMeta)){if(this.baseStore.state.fieldMetaBase[p]===void 0)continue;let x=this.getFieldMeta(p);if(!x)continue;let{errorMap:h,errorSourceMap:v}=x,g=m?.[p],{newErrorValue:b,newSource:y}=Ls({newFormValidatorError:g,isPreviousErrorFromFormValidator:v?.[c]==="form",previousErrorValue:h?.[c]});y==="form"&&(n[p]={...n[p],[c]:g}),h?.[c]!==b&&this.setFieldMeta(p,C=>({...C,errorMap:{...C.errorMap,[c]:b},errorSourceMap:{...C.errorSourceMap,[c]:y}}));}this.state.errorMap?.[c]!==d&&this.baseStore.setState(p=>({...p,errorMap:{...p.errorMap,[c]:d}})),(d||m)&&(s=!0);}let i=sr("submit");this.state.errorMap?.[i]&&a!=="submit"&&!s&&this.baseStore.setState(l=>({...l,errorMap:{...l.errorMap,[i]:void 0}}));let f=sr("server");this.state.errorMap?.[f]&&a!=="server"&&!s&&this.baseStore.setState(l=>({...l,errorMap:{...l.errorMap,[f]:void 0}}));}),{hasErrored:s,fieldsErrorMap:n}},this.validateAsync=async a=>{let r=go(a,{...this.options,form:this,validationLogic:this.options.validationLogic||ga});this.state.isFormValidating||this.baseStore.setState(l=>({...l,isFormValidating:true}));let s=[],n;for(let l of r){if(!l.validate)continue;let u=sr(l.cause);this.state.validationMetaMap[u]?.lastAbortController.abort();let m=new AbortController;this.state.validationMetaMap[u]={lastAbortController:m},s.push(new Promise(async c=>{let p;try{p=await new Promise((g,b)=>{setTimeout(async()=>{if(m.signal.aborted)return g(void 0);try{g(await this.runValidator({validate:l.validate,value:{value:this.state.values,formApi:this,validationSource:"form",signal:m.signal},type:"validateAsync"}));}catch(y){b(y);}},l.debounceMs);});}catch(g){p=g;}let{formError:x,fieldErrors:h}=Cs(p);h&&(n=n?{...n,...h}:h);let v=sr(l.cause);for(let g of Object.keys(this.state.fieldMeta)){if(this.baseStore.state.fieldMetaBase[g]===void 0)continue;let b=this.getFieldMeta(g);if(!b)continue;let{errorMap:y,errorSourceMap:C}=b,S=n?.[g],{newErrorValue:I,newSource:w}=Ls({newFormValidatorError:S,isPreviousErrorFromFormValidator:C?.[v]==="form",previousErrorValue:y?.[v]});y?.[v]!==I&&this.setFieldMeta(g,q=>({...q,errorMap:{...q.errorMap,[v]:I},errorSourceMap:{...q.errorSourceMap,[v]:w}}));}this.baseStore.setState(g=>({...g,errorMap:{...g.errorMap,[v]:x}})),c(n?{fieldErrors:n,errorMapKey:v}:void 0);}));}let i=[],f={};if(s.length){i=await Promise.all(s);for(let l of i)if(l?.fieldErrors){let{errorMapKey:u}=l;for(let[d,m]of Object.entries(l.fieldErrors)){let p={...f[d]||{},[u]:m};f[d]=p;}}}return this.baseStore.setState(l=>({...l,isFormValidating:false})),f},this.validate=a=>{let{hasErrored:r,fieldsErrorMap:s}=this.validateSync(a);return r&&!this.options.asyncAlways?s:this.validateAsync(a)},this.getFieldValue=a=>pa(this.state.values,a),this.getFieldMeta=a=>this.state.fieldMeta[a],this.getFieldInfo=a=>{var r;return (r=this.fieldInfo)[a]||(r[a]={instance:null,validationMetaMap:{onChange:void 0,onBlur:void 0,onSubmit:void 0,onMount:void 0,onServer:void 0,onDynamic:void 0}})},this.setFieldMeta=(a,r)=>{this.baseStore.setState(s=>({...s,fieldMetaBase:{...s.fieldMetaBase,[a]:ma(r,s.fieldMetaBase[a])}}));},this.resetFieldMeta=a=>Object.keys(a).reduce((r,s)=>{let n=s;return r[n]=xo,r},{}),this.setFieldValue=(a,r,s)=>{let n=s?.dontUpdateMeta??false,i=s?.dontRunListeners??false,f=s?.dontValidate??false;ct(()=>{n||this.setFieldMeta(a,l=>({...l,isTouched:!0,isDirty:!0,errorMap:{...l?.errorMap,onMount:void 0}})),this.baseStore.setState(l=>({...l,values:po(l.values,a,r)}));}),i||this.getFieldInfo(a).instance?.triggerOnChangeListener(),f||this.validateField(a,"change");},this.deleteField=a=>{let s=[...Object.keys(this.fieldInfo).filter(n=>{let i=a.toString();return n!==i&&n.startsWith(i)}),a];this.baseStore.setState(n=>{let i={...n};return s.forEach(f=>{i.values=Mi(i.values,f),delete this.fieldInfo[f],delete i.fieldMetaBase[f];}),i});},this.pushFieldValue=(a,r,s)=>{this.setFieldValue(a,n=>[...Array.isArray(n)?n:[],r],s);},this.insertFieldValue=async(a,r,s,n)=>{this.setFieldValue(a,f=>[...f.slice(0,r),s,...f.slice(r)],We(n,{dontValidate:true}));let i=n?.dontValidate??false;i||await this.validateField(a,"change"),rr(this).handleArrayFieldMetaShift(a,r,"insert"),i||await this.validateArrayFieldsStartingFrom(a,r,"change");},this.replaceFieldValue=async(a,r,s,n)=>{this.setFieldValue(a,f=>f.map((l,u)=>u===r?s:l),We(n,{dontValidate:true})),(n?.dontValidate??false)||(await this.validateField(a,"change"),await this.validateArrayFieldsStartingFrom(a,r,"change"));},this.removeFieldValue=async(a,r,s)=>{let n=this.getFieldValue(a),i=Array.isArray(n)?Math.max(n.length-1,0):null;if(this.setFieldValue(a,l=>l.filter((u,d)=>d!==r),We(s,{dontValidate:true})),rr(this).handleArrayFieldMetaShift(a,r,"remove"),i!==null){let l=`${a}[${i}]`;this.deleteField(l);}(s?.dontValidate??false)||(await this.validateField(a,"change"),await this.validateArrayFieldsStartingFrom(a,r,"change"));},this.swapFieldValues=(a,r,s,n)=>{this.setFieldValue(a,f=>{let l=f[r],u=f[s];return po(po(f,`${r}`,u),`${s}`,l)},We(n,{dontValidate:true})),rr(this).handleArrayFieldMetaShift(a,r,"swap",s),(n?.dontValidate??false)||(this.validateField(a,"change"),this.validateField(`${a}[${r}]`,"change"),this.validateField(`${a}[${s}]`,"change"));},this.moveFieldValues=(a,r,s,n)=>{this.setFieldValue(a,f=>{let l=[...f];return l.splice(s,0,l.splice(r,1)[0]),l},We(n,{dontValidate:true})),rr(this).handleArrayFieldMetaShift(a,r,"move",s),(n?.dontValidate??false)||(this.validateField(a,"change"),this.validateField(`${a}[${r}]`,"change"),this.validateField(`${a}[${s}]`,"change"));},this.clearFieldValues=(a,r)=>{let s=this.getFieldValue(a),n=Array.isArray(s)?Math.max(s.length-1,0):null;if(this.setFieldValue(a,[],We(r,{dontValidate:true})),n!==null)for(let f=0;f<=n;f++){let l=`${a}[${f}]`;this.deleteField(l);}(r?.dontValidate??false)||this.validateField(a,"change");},this.resetField=a=>{this.baseStore.setState(r=>({...r,fieldMetaBase:{...r.fieldMetaBase,[a]:xo},values:this.options.defaultValues?po(r.values,a,pa(this.options.defaultValues,a)):r.values}));},this.getAllErrors=()=>({form:{errors:this.state.errors,errorMap:this.state.errorMap},fields:Object.entries(this.state.fieldMeta).reduce((a,[r,s])=>(Object.keys(s).length&&s.errors.length&&(a[r]={errors:s.errors,errorMap:s.errorMap}),a),{})}),this.parseValuesWithSchema=a=>xa.validate({value:this.state.values,validationSource:"form"},a),this.parseValuesWithSchemaAsync=a=>xa.validateAsync({value:this.state.values,validationSource:"form"},a),this.timeoutIds={validations:{},listeners:{},formListeners:{}},this._formId=o?.formId??Ti(),this._devtoolsSubmissionOverride=false,this.baseStore=new Gt(Pi({...o?.defaultState,values:o?.defaultValues??o?.defaultState?.values})),this.fieldMetaDerived=new Ft({deps:[this.baseStore],fn:({prevDepVals:a,currDepVals:r,prevVal:s})=>{let n=s,i=a?.[0],f=r[0],l=0,u={};for(let d of Object.keys(f.fieldMetaBase)){let m=f.fieldMetaBase[d],c=i?.fieldMetaBase[d],p=n?.[d],x=pa(f.values,d),h=p?.errors;if(!c||m.errorMap!==c.errorMap){h=Object.values(m.errorMap??{}).filter(C=>C!==void 0);let y=this.getFieldInfo(d)?.instance;y&&!y.options.disableErrorFlat&&(h=h?.flat(1));}let v=!Ai(h??[]),g=!m.isDirty,b=ha(x,pa(this.options.defaultValues,d))||ha(x,this.getFieldInfo(d)?.instance?.options.defaultValue);if(p&&p.isPristine===g&&p.isValid===v&&p.isDefaultValue===b&&p.errors===h&&m===c){u[d]=p,l++;continue}u[d]={...m,errors:h,isPristine:g,isValid:v,isDefaultValue:b};}return Object.keys(f.fieldMetaBase).length&&n&&l===Object.keys(f.fieldMetaBase).length?n:u}}),this.store=new Ft({deps:[this.baseStore,this.fieldMetaDerived],fn:({prevDepVals:a,currDepVals:r,prevVal:s})=>{let n=s,i=a?.[0],f=r[0],l=r[1],u=Object.values(l).filter(Boolean),d=u.some(T=>T.isValidating),m=u.every(T=>T.isValid),c=u.some(T=>T.isTouched),p=u.some(T=>T.isBlurred),x=u.every(T=>T.isDefaultValue),h=c&&f.errorMap?.onMount,v=u.some(T=>T.isDirty),g=!v,b=!!(f.errorMap?.onMount||u.some(T=>T?.errorMap?.onMount)),y=!!d,C=n?.errors??[];(!i||f.errorMap!==i.errorMap)&&(C=Object.values(f.errorMap).reduce((T,H)=>H===void 0?T:H&&or(H)?(T.push(H.form),T):(T.push(H),T),[]));let S=C.length===0,I=m&&S,w=this.options.canSubmitWhenInvalid??false,q=f.submissionAttempts===0&&!c&&!b||!y&&!f.isSubmitting&&I||w,P=f.errorMap;if(h&&(C=C.filter(T=>T!==f.errorMap.onMount),P=Object.assign(P,{onMount:void 0})),n&&i&&n.errorMap===P&&n.fieldMeta===this.fieldMetaDerived.state&&n.errors===C&&n.isFieldsValidating===d&&n.isFieldsValid===m&&n.isFormValid===S&&n.isValid===I&&n.canSubmit===q&&n.isTouched===c&&n.isBlurred===p&&n.isPristine===g&&n.isDefaultValue===x&&n.isDirty===v&&ha(i,f))return n;let U={...f,errorMap:P,fieldMeta:this.fieldMetaDerived.state,errors:C,isFieldsValidating:d,isFieldsValid:m,isFormValid:S,isValid:I,canSubmit:q,isTouched:c,isBlurred:p,isPristine:g,isDefaultValue:x,isDirty:v},D=this.options.transform?.deps??[];if(D.length!==this.prevTransformArray.length||D.some((T,H)=>T!==this.prevTransformArray[H])){let T=Object.assign({},this,{state:U});this.options.transform?.fn(T),U=T.state,this.prevTransformArray=D;}return U}}),this.handleSubmit=this.handleSubmit.bind(this),this.update(o||{});let t=Ci(a=>mt.emit("form-state",{id:this._formId,state:a}),{wait:300});this.store.subscribe(()=>{t(this.store.state);}),mt.on("request-form-state",a=>{a.payload.id===this._formId&&mt.emit("form-api",{id:this._formId,state:this.store.state,options:this.options});}),mt.on("request-form-reset",a=>{a.payload.id===this._formId&&this.reset();}),mt.on("request-form-force-submit",a=>{a.payload.id===this._formId&&(this._devtoolsSubmissionOverride=true,this.handleSubmit(),this._devtoolsSubmissionOverride=false);});}get state(){return this.store.state}get formId(){return this._formId}runValidator(o){return Ss(o.validate)?xa[o.type](o.value,o.validate):o.validate(o.value)}async handleSubmit(o){this.baseStore.setState(r=>({...r,isSubmitted:false,submissionAttempts:r.submissionAttempts+1,isSubmitSuccessful:false})),ct(()=>{Object.values(this.fieldInfo).forEach(r=>{r.instance&&(r.instance.state.meta.isTouched||r.instance.setMeta(s=>({...s,isTouched:!0})));});});let t=o??this.options.onSubmitMeta;if(!this.state.canSubmit&&!this._devtoolsSubmissionOverride){this.options.onSubmitInvalid?.({value:this.state.values,formApi:this,meta:t});return}this.baseStore.setState(r=>({...r,isSubmitting:true}));let a=()=>{this.baseStore.setState(r=>({...r,isSubmitting:false}));};if(await this.validateAllFields("submit"),!this.state.isFieldsValid){a(),this.options.onSubmitInvalid?.({value:this.state.values,formApi:this,meta:t}),mt.emit("form-submission",{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:false,stage:"validateAllFields",errors:Object.values(this.state.fieldMeta).map(r=>r.errors).flat()});return}if(await this.validate("submit"),!this.state.isValid){a(),this.options.onSubmitInvalid?.({value:this.state.values,formApi:this,meta:t}),mt.emit("form-submission",{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:false,stage:"validate",errors:this.state.errors});return}ct(()=>{Object.values(this.fieldInfo).forEach(r=>{r.instance?.options.listeners?.onSubmit?.({value:r.instance.state.value,fieldApi:r.instance});});}),this.options.listeners?.onSubmit?.({formApi:this,meta:t});try{await this.options.onSubmit?.({value:this.state.values,formApi:this,meta:t}),ct(()=>{this.baseStore.setState(r=>({...r,isSubmitted:!0,isSubmitSuccessful:!0})),mt.emit("form-submission",{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:!0}),a();});}catch(r){throw this.baseStore.setState(s=>({...s,isSubmitSuccessful:false})),mt.emit("form-submission",{id:this._formId,submissionAttempt:this.state.submissionAttempts,successful:false,stage:"inflight",onError:r}),a(),r}}setErrorMap(o){ct(()=>{Object.entries(o).forEach(([t,a])=>{let r=t;if(or(a)){let{formError:s,fieldErrors:n}=Cs(a);for(let i of Object.keys(this.fieldInfo))this.getFieldMeta(i)&&this.setFieldMeta(i,l=>({...l,errorMap:{...l.errorMap,[r]:n?.[i]},errorSourceMap:{...l.errorSourceMap,[r]:"form"}}));this.baseStore.setState(i=>({...i,errorMap:{...i.errorMap,[r]:s}}));}else this.baseStore.setState(s=>({...s,errorMap:{...s.errorMap,[r]:a}}));});});}};function Cs(e){if(e){if(or(e)){let o=Cs(e.form).formError,t=e.fields;return {formError:o,fieldErrors:t}}return {formError:e}}return {formError:void 0}}function sr(e){switch(e){case "submit":return "onSubmit";case "blur":return "onBlur";case "mount":return "onMount";case "server":return "onServer";case "dynamic":return "onDynamic";case "change":default:return "onChange"}}var ir=class{constructor(o){this.options={},this.mount=()=>{let t=this.store.mount();this.options.defaultValue!==void 0&&this.form.setFieldValue(this.name,this.options.defaultValue,{dontUpdateMeta:true});let a=this.getInfo();a.instance=this,this.update(this.options);let{onMount:r}=this.options.validators||{};if(r){let s=this.runValidator({validate:r,value:{value:this.state.value,fieldApi:this,validationSource:"field"},type:"validate"});s&&this.setMeta(n=>({...n,errorMap:{...n?.errorMap,onMount:s},errorSourceMap:{...n?.errorSourceMap,onMount:"field"}}));}return this.options.listeners?.onMount?.({value:this.state.value,fieldApi:this}),t},this.update=t=>{this.options=t;let a=this.name!==t.name;if(this.name=t.name,this.state.value===void 0){let r=pa(t.form.options.defaultValues,t.name),s=t.defaultValue??r;a?this.setValue(n=>n||s,{dontUpdateMeta:true}):s!==void 0&&this.setValue(s,{dontUpdateMeta:true});}this.form.getFieldMeta(this.name)===void 0&&this.setMeta(this.state.meta);},this.getValue=()=>this.form.getFieldValue(this.name),this.setValue=(t,a)=>{this.form.setFieldValue(this.name,t,We(a,{dontRunListeners:true,dontValidate:true})),a?.dontRunListeners||this.triggerOnChangeListener(),a?.dontValidate||this.validate("change");},this.getMeta=()=>this.store.state.meta,this.setMeta=t=>this.form.setFieldMeta(this.name,t),this.getInfo=()=>this.form.getFieldInfo(this.name),this.pushValue=(t,a)=>{this.form.pushFieldValue(this.name,t,We(a,{dontRunListeners:true})),a?.dontRunListeners||this.triggerOnChangeListener();},this.insertValue=(t,a,r)=>{this.form.insertFieldValue(this.name,t,a,We(r,{dontRunListeners:true})),r?.dontRunListeners||this.triggerOnChangeListener();},this.replaceValue=(t,a,r)=>{this.form.replaceFieldValue(this.name,t,a,We(r,{dontRunListeners:true})),r?.dontRunListeners||this.triggerOnChangeListener();},this.removeValue=(t,a)=>{this.form.removeFieldValue(this.name,t,We(a,{dontRunListeners:true})),a?.dontRunListeners||this.triggerOnChangeListener();},this.swapValues=(t,a,r)=>{this.form.swapFieldValues(this.name,t,a,We(r,{dontRunListeners:true})),r?.dontRunListeners||this.triggerOnChangeListener();},this.moveValue=(t,a,r)=>{this.form.moveFieldValues(this.name,t,a,We(r,{dontRunListeners:true})),r?.dontRunListeners||this.triggerOnChangeListener();},this.clearValues=t=>{this.form.clearFieldValues(this.name,We(t,{dontRunListeners:true})),t?.dontRunListeners||this.triggerOnChangeListener();},this.getLinkedFields=t=>{let a=Object.values(this.form.fieldInfo),r=[];for(let s of a){if(!s.instance)continue;let{onChangeListenTo:n,onBlurListenTo:i}=s.instance.options.validators||{};t==="change"&&n?.includes(this.name)&&r.push(s.instance),t==="blur"&&i?.includes(this.name)&&r.push(s.instance);}return r},this.validateSync=(t,a)=>{let r=ho(t,{...this.options,form:this.form,validationLogic:this.form.options.validationLogic||ga}),n=this.getLinkedFields(t).reduce((l,u)=>{let d=ho(t,{...u.options,form:u.form,validationLogic:u.form.options.validationLogic||ga});return d.forEach(m=>{m.field=u;}),l.concat(d)},[]),i=false;ct(()=>{let l=(u,d)=>{let m=ks(d.cause),c=d.validate?ou(u.runValidator({validate:d.validate,value:{value:u.store.state.value,validationSource:"field",fieldApi:u},type:"validate"})):void 0,p=a[m],{newErrorValue:x,newSource:h}=Is({formLevelError:p,fieldLevelError:c});u.state.meta.errorMap?.[m]!==x&&u.setMeta(v=>({...v,errorMap:{...v.errorMap,[m]:x},errorSourceMap:{...v.errorSourceMap,[m]:h}})),x&&(i=!0);};for(let u of r)l(this,u);for(let u of n)u.validate&&l(u.field,u);});let f=ks("submit");return this.state.meta.errorMap?.[f]&&t!=="submit"&&!i&&this.setMeta(l=>({...l,errorMap:{...l.errorMap,[f]:void 0},errorSourceMap:{...l.errorSourceMap,[f]:void 0}})),{hasErrored:i}},this.validateAsync=async(t,a)=>{let r=go(t,{...this.options,form:this.form,validationLogic:this.form.options.validationLogic||ga}),s=await a,n=this.getLinkedFields(t),i=n.reduce((m,c)=>{let p=go(t,{...c.options,form:c.form,validationLogic:c.form.options.validationLogic||ga});return p.forEach(x=>{x.field=c;}),m.concat(p)},[]);this.state.meta.isValidating||this.setMeta(m=>({...m,isValidating:true}));for(let m of n)m.setMeta(c=>({...c,isValidating:true}));let f=[],l=[],u=(m,c,p)=>{let x=ks(c.cause);m.getInfo().validationMetaMap[x]?.lastAbortController.abort();let v=new AbortController;this.getInfo().validationMetaMap[x]={lastAbortController:v},p.push(new Promise(async g=>{let b;try{b=await new Promise((w,q)=>{this.timeoutIds.validations[c.cause]&&clearTimeout(this.timeoutIds.validations[c.cause]),this.timeoutIds.validations[c.cause]=setTimeout(async()=>{if(v.signal.aborted)return w(void 0);try{w(await this.runValidator({validate:c.validate,value:{value:m.store.state.value,fieldApi:m,signal:v.signal,validationSource:"field"},type:"validateAsync"}));}catch(P){q(P);}},c.debounceMs);});}catch(w){b=w;}if(v.signal.aborted)return g(void 0);let y=ou(b),C=s[this.name]?.[x],{newErrorValue:S,newSource:I}=Is({formLevelError:C,fieldLevelError:y});m.setMeta(w=>({...w,errorMap:{...w?.errorMap,[x]:S},errorSourceMap:{...w.errorSourceMap,[x]:I}})),g(S);}));};for(let m of r)m.validate&&u(this,m,f);for(let m of i)m.validate&&u(m.field,m,l);let d=[];(f.length||l.length)&&(d=await Promise.all(f),await Promise.all(l)),this.setMeta(m=>({...m,isValidating:false}));for(let m of n)m.setMeta(c=>({...c,isValidating:false}));return d.filter(Boolean)},this.validate=(t,a)=>{if(!this.state.meta.isTouched)return [];let{fieldsErrorMap:r}=a?.skipFormValidation?{fieldsErrorMap:{}}:this.form.validateSync(t),{hasErrored:s}=this.validateSync(t,r[this.name]??{});if(s&&!this.options.asyncAlways)return this.getInfo().validationMetaMap[ks(t)]?.lastAbortController.abort(),this.state.meta.errors;let n=a?.skipFormValidation?Promise.resolve({}):this.form.validateAsync(t);return this.validateAsync(t,n)},this.handleChange=t=>{this.setValue(t);},this.handleBlur=()=>{this.state.meta.isTouched||this.setMeta(a=>({...a,isTouched:true})),this.state.meta.isBlurred||this.setMeta(a=>({...a,isBlurred:true})),this.validate("blur"),this.triggerOnBlurListener();},this.parseValueWithSchema=t=>xa.validate({value:this.state.value,validationSource:"field"},t),this.parseValueWithSchemaAsync=t=>xa.validateAsync({value:this.state.value,validationSource:"field"},t),this.form=o.form,this.name=o.name,this.timeoutIds={validations:{},listeners:{},formListeners:{}},this.store=new Ft({deps:[this.form.store],fn:()=>{let t=this.form.getFieldValue(this.name),a=this.form.getFieldMeta(this.name)??{...xo,...o.defaultMeta};return {value:t,meta:a}}}),this.options=o;}get state(){return this.store.state}runValidator(o){return Ss(o.validate)?xa[o.type](o.value,o.validate):o.validate(o.value)}setErrorMap(o){this.setMeta(t=>({...t,errorMap:{...t.errorMap,...o}}));}triggerOnBlurListener(){let o=this.form.options.listeners?.onBlurDebounceMs;o&&o>0?(this.timeoutIds.formListeners.blur&&clearTimeout(this.timeoutIds.formListeners.blur),this.timeoutIds.formListeners.blur=setTimeout(()=>{this.form.options.listeners?.onBlur?.({formApi:this.form,fieldApi:this});},o)):this.form.options.listeners?.onBlur?.({formApi:this.form,fieldApi:this});let t=this.options.listeners?.onBlurDebounceMs;t&&t>0?(this.timeoutIds.listeners.blur&&clearTimeout(this.timeoutIds.listeners.blur),this.timeoutIds.listeners.blur=setTimeout(()=>{this.options.listeners?.onBlur?.({value:this.state.value,fieldApi:this});},t)):this.options.listeners?.onBlur?.({value:this.state.value,fieldApi:this});}triggerOnChangeListener(){let o=this.form.options.listeners?.onChangeDebounceMs;o&&o>0?(this.timeoutIds.formListeners.change&&clearTimeout(this.timeoutIds.formListeners.change),this.timeoutIds.formListeners.change=setTimeout(()=>{this.form.options.listeners?.onChange?.({formApi:this.form,fieldApi:this});},o)):this.form.options.listeners?.onChange?.({formApi:this.form,fieldApi:this});let t=this.options.listeners?.onChangeDebounceMs;t&&t>0?(this.timeoutIds.listeners.change&&clearTimeout(this.timeoutIds.listeners.change),this.timeoutIds.listeners.change=setTimeout(()=>{this.options.listeners?.onChange?.({value:this.state.value,fieldApi:this});},t)):this.options.listeners?.onChange?.({value:this.state.value,fieldApi:this});}};function ou(e){if(e)return e}function ks(e){switch(e){case "submit":return "onSubmit";case "blur":return "onBlur";case "mount":return "onMount";case "server":return "onServer";case "dynamic":return "onDynamic";case "change":default:return "onChange"}}function Ms(e,o=t=>t){return useSyncExternalStoreWithSelector(e.subscribe,()=>e.state,()=>e.state,o,kg)}function kg(e,o){if(Object.is(e,o))return true;if(typeof e!="object"||e===null||typeof o!="object"||o===null)return false;if(e instanceof Map&&o instanceof Map){if(e.size!==o.size)return false;for(let[a,r]of e)if(!o.has(a)||!Object.is(r,o.get(a)))return false;return true}if(e instanceof Set&&o instanceof Set){if(e.size!==o.size)return false;for(let a of e)if(!o.has(a))return false;return true}if(e instanceof Date&&o instanceof Date)return e.getTime()===o.getTime();let t=ru(e);if(t.length!==ru(o).length)return false;for(let a=0;a<t.length;a++)if(!Object.prototype.hasOwnProperty.call(o,t[a])||!Object.is(e[t[a]],o[t[a]]))return false;return true}function ru(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}var bo=typeof window<"u"?useLayoutEffect:useEffect;function Fg(e){let[o]=useState(()=>{let a=new ir({...e,form:e.form,name:e.name});return a.Field=Di,a});return bo(o.mount,[o]),bo(()=>{o.update(e);}),Ms(o.store,e.mode==="array"?t=>[t.meta,Object.keys(t.value??[]).length]:void 0),o}var Di=(({children:e,...o})=>{let t=Fg(o),a=useMemo(()=>ma(e,t),[e,t,t.state.value,t.state.meta]);return jsx(Fragment,{children:a})});function Og({form:e,selector:o,children:t}){let a=Ms(e.store,o);return ma(t,a)}function Fi(e){let o=useId(),[t]=useState(()=>{let a=new nr({...e,formId:o}),r=a;return r.Field=function(n){return jsx(Di,{...n,form:a})},r.Subscribe=function(n){return jsx(Og,{form:a,selector:n.selector,children:n.children})},r});return bo(t.mount,[]),bo(()=>{t.update(e);}),t}function Ei({field:e}){return jsxs(Fragment,{children:[e.state.meta.isTouched&&!e.state.meta.isValid?jsx("em",{children:e.state.meta.errors.join(", ")}):null,e.state.meta.isValidating?"Validating...":null]})}var jg=({editElement:e})=>{let o=useDispatch(),t=useSelector(he),a=useRef(null),r=!!e,s=e?.data.questionType||t?.activityType||"multiple-choice",[n,i]=useState(s),f=Fi({defaultValues:{questionType:s,responseType:e?.data.responseType||"classic",feedbackMode:e?.data.feedbackMode||"practice",question:e?.data.question||"",responseOptions:{options:e?.data.responseOptions.options||["","","",""],correctIndex:e?.data.questionType==="multiple-choice"?e.data.responseOptions.correctIndex||[]:[],correctAnswer:e?.data.questionType==="true-false"?e.data.responseOptions.correctAnswer:false,correctShortAnswer:(e?.data.questionType==="short-answer"||e?.data.questionType==="fill-in-the-blank")&&e.data.responseOptions.correctShortAnswer||"",correctLongAnswer:e?.data.questionType==="long-answer"&&e.data.responseOptions.correctLongAnswer||""}},onSubmit:async({value:d})=>{if(d.questionType==="true-false"){let m={id:r?e.id:v4(),data:{questionType:d.questionType,responseType:d.responseType,feedbackMode:d.feedbackMode,question:d.question,responseOptions:{options:d.responseOptions.options,correctAnswer:d.responseOptions.correctAnswer??false}},x:r?e.x:500,y:r?e.y:200,width:r?e.width:400,height:r?e.height:300,rotation:r?e.rotation:0};o(r?ra(m):Tn(m));}else if(d.questionType==="multiple-choice"){let m={id:r?e.id:v4(),data:{questionType:d.questionType,responseType:d.responseType,feedbackMode:d.feedbackMode,question:d.question,responseOptions:{options:d.responseOptions.options,correctIndex:d.responseOptions.correctIndex??[]}},x:r?e.x:500,y:r?e.y:200,width:r?e.width:575,height:r?e.height:400,rotation:r?e.rotation:0};o(r?oa(m):Mn(m));}else if(d.questionType==="short-answer"){let m={id:r?e.id:v4(),data:{questionType:d.questionType,responseType:d.responseType,feedbackMode:d.feedbackMode,question:d.question,responseOptions:{options:d.responseOptions.options,correctShortAnswer:d.responseOptions.correctShortAnswer??""}},x:r?e.x:500,y:r?e.y:200,width:r?e.width:400,height:r?e.height:400,rotation:r?e.rotation:0};o(r?Do(m):Pn(m));}else if(d.questionType==="fill-in-the-blank"){let m={id:r?e.id:v4(),data:{questionType:d.questionType,responseType:d.responseType,feedbackMode:d.feedbackMode,question:d.question,responseOptions:{options:d.responseOptions.options,correctShortAnswer:d.responseOptions.correctShortAnswer??""}},x:r?e.x:500,y:r?e.y:200,width:r?e.width:400,height:r?e.height:400,rotation:r?e.rotation:0};o(r?Eo(m):Bn(m));}else if(d.questionType==="long-answer"){let m={id:r?e.id:v4(),data:{questionType:d.questionType,responseType:d.responseType,feedbackMode:d.feedbackMode,question:d.question,responseOptions:{options:d.responseOptions.options,correctLongAnswer:d.responseOptions.correctLongAnswer??""}},x:r?e.x:500,y:r?e.y:200,width:r?e.width:400,height:r?e.height:400,rotation:r?e.rotation:0};o(r?Fo(m):Fn(m));}o(sa(false));}}),l=()=>{o(sa(false));},u=jsx("div",{className:"fixed inset-0 z-106 flex w-full flex-col items-center justify-center gap-6 rounded-lg bg-black/50 p-6 shadow-lg",children:jsx("div",{ref:a,className:"scrollbar-hide h-fit max-h-[calc(100vh-240px)] w-full max-w-xl overflow-y-auto rounded-lg bg-white p-4",children:jsxs("form",{className:"relative flex h-fit max-h-[calc(100vh-100px)] w-full flex-col gap-1 rounded-lg bg-white p-4",onSubmit:d=>{d.preventDefault(),d.stopPropagation(),f.handleSubmit();},children:[jsxs("div",{className:"flex items-center justify-between pb-4",children:[jsxs("div",{className:"flex flex-col gap-1",children:[jsx("h2",{className:"text-2xl font-bold text-[#000000CC]",children:r?"Edit Question":"Create Question"}),jsx("p",{className:"font-semibold text-[#00000099]",children:"Design a new question for your lesson slide."})]}),jsx("button",{type:"button",className:"absolute top-2 right-2 flex h-8 w-8 items-center justify-center rounded bg-red-500 hover:cursor-pointer hover:bg-red-600",onClick:()=>{l();},children:jsx("span",{className:"text-xl text-white",children:"\u2715"})})]}),jsxs("div",{className:"mb-4 flex justify-between gap-6",children:[jsx(f.Field,{name:"questionType",children:d=>jsxs("div",{className:"flex w-full flex-col gap-2",children:[jsx("label",{htmlFor:d.name,className:"text-sm font-semibold text-[#00000066] uppercase",children:"Question Type"}),jsxs("div",{className:"relative",children:[jsxs("select",{id:d.name,name:d.name,value:d.state.value,onBlur:d.handleBlur,onChange:m=>{d.handleChange(m.target.value),i(m.target.value);},disabled:r,className:`outline-primary/50 w-full appearance-none rounded-lg border border-gray-300 px-4 py-3 pr-10 font-semibold text-[#000000CC] ${r?"cursor-not-allowed bg-gray-100 opacity-60":"bg-white"}`,children:[jsx("option",{value:"multiple-choice",children:"Multiple Choice"}),jsx("option",{value:"true-false",children:"True/False"}),jsx("option",{value:"short-answer",children:"Short Answer"}),jsx("option",{value:"fill-in-the-blank",children:"Fill in the blank"}),jsx("option",{value:"long-answer",children:"Long Answer"})]}),jsx("div",{className:"pointer-events-none absolute top-1/2 right-3 -translate-y-1/2",children:jsx("svg",{className:"h-5 w-5 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})})]}),r&&jsx("p",{className:"text-xs text-gray-500 italic",children:"Question type cannot be changed when editing"}),jsx(Ei,{field:d})]})}),n&&!["short-answer","fill-in-the-blank","long-answer"].includes(n)&&jsx(f.Field,{name:"responseType",children:d=>jsxs("div",{className:"flex w-full flex-col gap-2",children:[jsx("label",{htmlFor:d.name,className:"text-sm font-semibold text-[#00000066] uppercase",children:"Response Type"}),jsxs("div",{className:"relative",children:[jsxs("select",{id:d.name,name:d.name,value:d.state.value,onBlur:d.handleBlur,onChange:m=>d.handleChange(m.target.value),className:"outline-primary/50 w-full appearance-none rounded-lg border border-gray-300 bg-white px-4 py-3 pr-10 font-semibold text-[#000000CC]",children:[jsx("option",{value:"classic",children:"Classic"}),jsx("option",{value:"drag-and-drop",children:"Drag and Drop"})]}),jsx("div",{className:"pointer-events-none absolute top-1/2 right-3 -translate-y-1/2",children:jsx("svg",{className:"h-5 w-5 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})})]}),jsx(Ei,{field:d})]})})]}),jsx(f.Field,{name:"feedbackMode",children:d=>jsxs("div",{className:"mb-4 flex flex-col gap-2",children:[jsxs("div",{className:`flex w-full items-center gap-2 rounded-lg bg-gray-100 p-1.5 ${n==="long-answer"?"cursor-not-allowed opacity-60":""}`,children:[jsxs("button",{type:"button",disabled:n==="long-answer",onClick:()=>d.handleChange("practice"),className:`flex w-full items-center gap-2 rounded-lg px-4 py-2 text-base font-medium transition-all ${d.state.value==="practice"?"text-primary bg-white":"text-gray-500"} `,children:[jsx(ScribbleLoop,{weight:"fill",size:16}),"Practice Mode"]}),jsxs("button",{type:"button",disabled:n==="long-answer",onClick:()=>d.handleChange("test"),className:`flex w-full items-center gap-2 rounded-lg px-4 py-2 text-base font-medium transition-all ${d.state.value==="test"?"text-primary bg-white":"text-gray-500"} `,children:[jsx(Exam,{weight:"fill",size:16}),"Assessment Mode"]})]}),n==="long-answer"&&jsx("p",{className:"text-xs text-gray-500 italic",children:"Long answer questions are only available in Assessment Mode"}),jsx(Ei,{field:d})]})}),jsx(f.Field,{name:"question",validators:{onChange:({value:d})=>d?void 0:"A question is required"},children:d=>jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[jsx("label",{htmlFor:d.name,className:"text-sm font-semibold text-[#00000066] uppercase",children:"Question"}),jsx("div",{className:"relative",children:jsx("input",{className:"outline-primary/50 w-full resize-none rounded-lg border border-gray-300 bg-white px-4 py-3 text-gray-900",value:d.state.value,onChange:m=>d.handleChange(m.target.value),onBlur:d.handleBlur,placeholder:"Enter Your Question"})}),d.state.meta.errors.length>0&&jsx("span",{className:"text-sm font-semibold text-red-500",children:d.state.meta.errors.join(", ")})]})}),n==="true-false"&&jsx(f.Field,{name:"responseOptions.correctAnswer",children:d=>{let m=d.state.value;return jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[jsx("label",{className:"text-base font-semibold text-[#00000066] uppercase",children:"Set Correct Answer"}),jsxs("div",{className:"flex gap-4",children:[jsxs("button",{type:"button",onClick:()=>d.handleChange(true),className:`relative flex flex-1 flex-col items-center justify-center rounded-xl border px-6 py-5 transition-all ${m===true?"border-green-500 bg-green-50":"border-[#096B76] bg-white hover:border-gray-400"}`,children:[jsx(CheckCircle,{weight:"fill",color:"#45B389",size:52}),jsx("span",{className:"mt-2 text-lg font-semibold text-black",children:"True"}),m===true&&jsx("span",{className:"absolute top-2 right-2 rounded-full bg-green-600 px-3 py-0.5 text-xs font-medium text-white",children:"Correct"})]}),jsxs("button",{type:"button",onClick:()=>d.handleChange(false),className:`relative flex flex-1 flex-col items-center justify-center rounded-xl border px-6 py-5 transition-all ${m===false?"border-green-500 bg-green-50":"border-[#096B76] bg-white hover:border-gray-400"}`,children:[jsx(XCircle,{weight:"fill",color:"#EE5454",size:52}),jsx("span",{className:"mt-2 text-lg font-semibold text-black",children:"False"}),m===false&&jsx("span",{className:"absolute top-2 right-2 rounded-full bg-green-600 px-3 py-0.5 text-xs font-medium text-white",children:"Correct"})]})]}),jsx("p",{className:"text-sm font-semibold text-gray-500",children:"Select the correct answer for this true/false question"})]})}}),n==="multiple-choice"&&jsx(f.Field,{name:"responseOptions",validators:{onChange:({value:d})=>{if(d.options.filter(c=>!c.trim()).length>0)return "All options must have text";if(!d.correctIndex||d.correctIndex.length===0)return "Please select at least one correct answer"}},children:d=>{let m=(h,v)=>{let g=[...d.state.value.options];g[h]=v,d.handleChange({...d.state.value,options:g});},c=()=>{if(d.state.value.options.length>=6){alert("Maximum 6 options allowed");return}d.handleChange({...d.state.value,options:[...d.state.value.options,""]});},p=h=>{if(d.state.value.options.length<=2){alert("Minimum 2 options required");return}let v=d.state.value.options.filter((b,y)=>y!==h),g=d.state.value.correctIndex?.filter(b=>b!==h).map(b=>b>h?b-1:b);d.handleChange({...d.state.value,options:v,correctIndex:g});},x=h=>{let v=d.state.value.correctIndex||[];if(v.includes(h))d.handleChange({...d.state.value,correctIndex:v.filter(b=>b!==h)});else {if(v.length>=6){alert("Maximum 6 correct answers allowed");return}d.handleChange({...d.state.value,correctIndex:[...v,h]});}};return jsxs("div",{className:"mb-4 flex flex-col gap-2",children:[jsx("div",{className:"flex items-center justify-between",children:jsxs("label",{htmlFor:d.name,className:"mb-2 text-base font-semibold text-gray-900",children:["Answer Options",jsx("span",{className:"text-[#00000066]",children:" (At least 2 options required)"})]})}),jsx("div",{className:"mb-4 flex flex-col gap-3",children:d.state.value.options.map((h,v)=>{let g=!h.trim(),b=d.state.value.correctIndex?.includes(v),y=d.state.meta.isTouched&&g;return jsxs("div",{className:"flex w-full items-center gap-3 px-1",children:[jsx("button",{type:"button",onClick:()=>x(v),className:`flex h-5 w-5 shrink-0 items-center justify-center rounded-full border-2 transition-colors ${b?"border-green-500 bg-green-500":"border-gray-300 hover:border-green-500"}`,children:b&&jsx("svg",{className:"h-3 w-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M5 13l4 4L19 7"})})}),jsx("div",{className:`w-full rounded-lg border-2 px-4 py-3 transition-colors ${y?"border-red-500 bg-red-50":b?"border-green-500 bg-green-50":"border-gray-300 bg-white"}`,children:jsx("input",{type:"text",placeholder:`Option ${v+1}`,value:h,onChange:C=>m(v,C.target.value),onBlur:d.handleBlur,className:"w-full flex-1 border-none bg-transparent text-gray-900 placeholder:text-gray-400 focus:outline-none"})}),d.state.value.options.length>2&&jsx("button",{type:"button",onClick:()=>p(v),className:"text-[#00000066] transition-colors hover:cursor-pointer hover:text-red-600",children:jsx(Trash,{weight:"fill",size:24})})]},v)})}),jsx("button",{type:"button",onClick:c,disabled:d.state.value.options.length>=6,className:"mx-2 cursor-pointer rounded-lg border border-dashed border-[#00000033] px-3 py-3 text-lg font-semibold text-[#00000066] disabled:cursor-not-allowed",children:"+ Add Option"}),d.state.value.correctIndex.length===0||d.state.meta.errors.length>0?jsx("span",{className:"px-2 text-base font-semibold text-red-500",children:d.state.meta.errors.join(", ")}):jsxs("div",{className:"flex w-fit items-center gap-1 rounded-lg bg-[#F2FFF4] px-2 py-1 text-[#1B9D2C]",children:[jsx(CheckCircle,{weight:"fill"}),jsx("p",{className:"",children:"Correct answer selected"})]})]})}}),(n==="short-answer"||n==="fill-in-the-blank")&&jsx(f.Field,{name:"responseOptions.correctShortAnswer",children:d=>jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[jsx("label",{htmlFor:d.name,className:"text-sm font-semibold text-gray-900",children:"Correct Short Answer"}),jsx("input",{type:"text",placeholder:"Type the expected correct answer...",value:d.state.value,onChange:m=>{d.handleChange(m.target.value);},className:"outline-primary/50 w-full rounded-lg border-2 border-gray-300 bg-white p-3 text-gray-900 transition-colors"}),jsx("p",{className:"text-sm font-semibold text-gray-500",children:"Learners must write this answer exactly (case-insensitive)."}),d.state.meta.errors.length>0&&jsx("span",{className:"text-sm font-semibold text-red-500",children:d.state.meta.errors.join(", ")})]})}),n==="long-answer"&&jsx(f.Field,{name:"responseOptions.correctLongAnswer",children:d=>jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[jsx("label",{htmlFor:d.name,className:"text-sm font-semibold text-gray-900",children:"Expected Long Answer (Optional)"}),jsx("textarea",{placeholder:"Type the expected answer or key points...",value:d.state.value,onChange:m=>{d.handleChange(m.target.value);},rows:6,className:"outline-primary/50 w-full rounded-lg border-2 border-gray-300 bg-white p-3 text-gray-900 transition-colors"}),jsx("p",{className:"text-sm font-semibold text-gray-500",children:"This will be used as a reference answer for manual grading."}),d.state.meta.errors.length>0&&jsx("span",{className:"text-sm font-semibold text-red-500",children:d.state.meta.errors.join(", ")})]})}),jsx(f.Subscribe,{selector:d=>[d.canSubmit,d.isSubmitting],children:([d,m])=>jsx("button",{type:"submit",disabled:!d,className:"mt-2 mb-4 w-full rounded-lg bg-[#096B76] px-6 py-3 font-semibold text-white transition-colors hover:bg-[#075862] disabled:cursor-not-allowed disabled:opacity-50",children:m?"Saving...":r?"Update Question":"Save Question"})})]})})});return createPortal(u,document.body)},iu=jg;var lu=({text:e,position:o})=>{let t=ge(),a=l=>{t(ue()),t(yt({id:e.id,fontSize:Math.max(12,Math.min(72,e.fontSize+l))}));},r=l=>{t(ue()),t(yt({id:e.id,fill:l}));},s=()=>{t(ue()),t(yt({id:e.id,fontWeight:e.fontWeight==="bold"?"normal":"bold"}));},n=()=>{t(ue()),t(yt({id:e.id,fontStyle:e.fontStyle==="italic"?"normal":"italic"}));},i=()=>{t(ue()),t(yt({id:e.id,textDecoration:e.textDecoration==="underline"?"":"underline"}));},f=l=>{t(ue()),t(yt({id:e.id,fontFamily:l}));};return jsxs("div",{className:"fixed z-1001 flex items-center gap-1 rounded-lg border border-gray-200 bg-white p-2 shadow-2xl",style:{left:`${o.x}px`,top:`${o.y-60}px`,transform:"translateX(-50%)"},onClick:l=>l.stopPropagation(),children:[jsxs("select",{value:e.fontFamily,onChange:l=>f(l.target.value),className:"rounded border border-gray-300 bg-white px-2 py-1 text-xs hover:bg-gray-50",children:[jsx("option",{value:"Arial",children:"Arial"}),jsx("option",{value:"Helvetica",children:"Helvetica"}),jsx("option",{value:"Times New Roman",children:"Times"}),jsx("option",{value:"Courier New",children:"Courier"}),jsx("option",{value:"Georgia",children:"Georgia"}),jsx("option",{value:"Verdana",children:"Verdana"}),jsx("option",{value:"Comic Sans MS",children:"Comic Sans"})]}),jsxs("div",{className:"ml-1 flex items-center gap-0.5 border-l border-gray-200 pl-1",children:[jsx("button",{onClick:()=>a(-2),className:"flex h-7 w-7 items-center justify-center rounded text-sm font-bold hover:bg-gray-100",title:"Decrease font size",children:"\u2212"}),jsx("span",{className:"w-8 text-center text-xs font-medium",children:Math.round(e.fontSize)}),jsx("button",{onClick:()=>a(2),className:"flex h-7 w-7 items-center justify-center rounded text-sm font-bold hover:bg-gray-100",title:"Increase font size",children:"+"})]}),jsxs("div",{className:"ml-1 flex items-center gap-0.5 border-l border-gray-200 pl-1",children:[jsx("button",{onClick:s,className:`flex h-7 w-7 items-center justify-center rounded transition-colors ${e.fontWeight==="bold"?"bg-blue-100 text-blue-600":"text-gray-700 hover:bg-gray-100"}`,title:"Bold",children:jsx(TextB,{size:16,weight:"bold"})}),jsx("button",{onClick:n,className:`flex h-7 w-7 items-center justify-center rounded transition-colors ${e.fontStyle==="italic"?"bg-blue-100 text-blue-600":"text-gray-700 hover:bg-gray-100"}`,title:"Italic",children:jsx(TextItalic,{size:16,weight:"bold"})}),jsx("button",{onClick:i,className:`flex h-7 w-7 items-center justify-center rounded transition-colors ${e.textDecoration==="underline"?"bg-blue-100 text-blue-600":"text-gray-700 hover:bg-gray-100"}`,title:"Underline",children:jsx(TextUnderline,{size:16,weight:"bold"})})]}),jsx("div",{className:"ml-1 border-l border-gray-200 pl-1",children:jsx("div",{className:"relative",children:jsx("input",{type:"color",value:e.fill,onChange:l=>r(l.target.value),className:"h-7 w-7 cursor-pointer rounded border border-gray-300",title:"Text color",style:{padding:"2px"}})})})]})};var uu=({text:e,editingValue:o,onEditingChange:t,onFinish:a,position:r,scale:s,textareaRef:n})=>{let i=useRef(null),f=useMemo(()=>({fontSize:`${e.fontSize*s}px`,fontFamily:e.fontFamily,fontStyle:e.fontStyle,fontWeight:e.fontWeight==="bold"?"bold":"normal",textDecoration:e.textDecoration,color:e.fill,border:"2px solid #4A90E2",outline:"none",padding:"5px",background:"white",resize:"none",overflow:"hidden",width:"auto",minWidth:"200px",minHeight:"50px",lineHeight:"1.2",transform:`rotate(${e.rotation}deg)`,transformOrigin:"top left",whiteSpace:"pre",overflowWrap:"normal",boxSizing:"border-box"}),[e.fontSize,e.fontFamily,e.fontStyle,e.fontWeight,e.textDecoration,e.fill,e.rotation,s]),l=useCallback(u=>{u.style.height="auto",u.style.height=`${u.scrollHeight}px`;let d=document.createElement("span");d.style.font=window.getComputedStyle(u).font,d.style.fontSize=u.style.fontSize,d.style.fontFamily=u.style.fontFamily,d.style.fontWeight=u.style.fontWeight,d.style.fontStyle=u.style.fontStyle,d.style.visibility="hidden",d.style.position="absolute",d.style.whiteSpace="pre";let m=u.value.split(`
|
|
4
|
+
`),c=0;document.body.appendChild(d);for(let x of m){d.textContent=x||" ";let h=d.offsetWidth;h>c&&(c=h);}document.body.removeChild(d);let p=10;u.style.width=`${Math.max(200,c+p+20)}px`;},[]);return useEffect(()=>{let u=i.current;u&&(u.style.fontSize=`${e.fontSize*s}px`,u.style.fontFamily=e.fontFamily,u.style.fontStyle=e.fontStyle,u.style.fontWeight=e.fontWeight==="bold"?"bold":"normal",u.style.textDecoration=e.textDecoration,u.style.color=e.fill,l(u));},[o,e.fontSize,e.fontFamily,e.fontStyle,e.fontWeight,e.textDecoration,e.fill,s,l]),jsx("div",{style:{position:"absolute",top:`${r.top}px`,left:`${r.left}px`,zIndex:1e3},children:jsx("textarea",{ref:u=>{if(i.current=u,n.current=u,u){u.focus();let d=u.value.length;u.setSelectionRange(d,d),l(u);}},value:o,onChange:u=>{t(u.target.value);},onKeyDown:u=>{u.key==="Escape"&&a();},style:f},`${e.fontWeight}-${e.fontStyle}-${e.textDecoration}-${e.fontSize}-${e.fontFamily}`)})};var cu=memo(({shortAnswer:e,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:s})=>{let n=useSelector(F=>F.toolbar.selectedTool),i=n==="pen"||n==="eraser",f=useRef(null),[l,u]=useState(""),[d,m]=useState(false),[c,p]=useState(null);useEffect(()=>{let F=f.current;if(F)return a.current.set(e.id,F),()=>{a.current.delete(e.id);}},[e.id,a]);let x=e.data.responseOptions.correctShortAnswer?.trim().toLowerCase()||"",h=d&&l.trim().toLowerCase()===x,v=()=>{m(false),u("");},g=()=>h?"\u2713 Correct! \u{1F389}":"\u2717 Try again!",b=()=>h?{bg:"#dcfce7",text:"#166534"}:{bg:"#fee2e2",text:"#991b1b"},y=24,C=60,S=d?50:0,I=50,w=12,q=e.data.feedbackMode==="practice"?48:0,P=12,U=30,D=C+S+U+I+w+P+q+y;return jsxs(Group,{ref:f,draggable:!i,listening:!i,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,name:"sa-element",...i?{}:{onDragEnd:s,onClick:()=>o(e.id),onTap:()=>o(e.id),onContextMenu:F=>{let T=f.current?.getStage()?.getPointerPosition();if(!T)return;let H={x:e.x,y:e.y,width:e.width,height:e.height};T.x>=H.x&&T.x<=H.x+H.width&&T.y>=H.y&&T.y<=H.y+H.height&&r(F.evt,e.id,"shortAnswer");}},children:[jsx(Rect,{fill:"white",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:12,width:e.width,height:D,onTransformEnd:F=>t(e.id,F)}),jsx(Text,{text:e.data.question,x:y,y,fontSize:20,fontStyle:"bold",fill:"#111827",width:e.width-y*2,listening:false}),d&&jsxs(Fragment,{children:[jsx(Rect,{x:y,y:C,width:e.width-y*2,height:S,fill:b().bg,cornerRadius:8}),jsx(Text,{x:y,y:C,width:e.width-y*2,height:S,text:g(),fontSize:16,fontStyle:"bold",fill:b().text,align:"center",verticalAlign:"middle",listening:false})]}),jsx(Text,{text:"Answer:",x:y,y:C+S+w,fontSize:14,fill:"#6b7280",width:e.width-y*2,listening:false}),jsx(Rect,{x:y,y:C+S+U,width:e.width-y*2,height:I,fill:"#ffffff",stroke:h?"#22c55e":d?"#ef4444":"#d1d5db",strokeWidth:2,cornerRadius:8}),jsx(Html,{divProps:{style:{position:"absolute",top:`${C+S+U}px`,left:`${y}px`,width:`${e.width-y*2}px`,height:`${I}px`,pointerEvents:d?"none":"auto"}},children:jsx("input",{type:"text",value:l,onChange:F=>u(F.target.value),disabled:d,placeholder:"Type your answer...",className:"h-full w-full border-0 bg-white px-3 text-gray-900 focus:outline-none",style:{fontSize:"16px",pointerEvents:d?"none":"auto"}})}),e.data.feedbackMode==="practice"&&jsxs(Group,{y:C+S+U+I+w+P,children:[!d&&jsxs(Group,{onMouseDown:F=>{F.cancelBubble=true,p("check");},onMouseUp:F=>{F.cancelBubble=true,p(null),l.length>0&&m(true);},onMouseLeave:F=>{F.cancelBubble=true,p(null);},onTouchStart:F=>{F.cancelBubble=true,p("check");},onTouchEnd:F=>{F.cancelBubble=true,p(null),l.length>0&&m(true);},scaleX:c==="check"?.95:1,scaleY:c==="check"?.95:1,children:[jsx(Rect,{x:y,width:e.width-y*2,height:48,fill:l.length===0?"#9ca3af":"#096B76",cornerRadius:8,onClick:F=>F.cancelBubble=true,onTap:F=>F.cancelBubble=true}),jsx(Text,{x:y,width:e.width-y*2,height:48,text:"Check",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]}),d&&jsxs(Group,{onMouseDown:()=>p("reset"),onMouseUp:()=>{p(null),v();},onMouseLeave:()=>p(null),onTouchStart:()=>p("reset"),onTouchEnd:()=>{p(null),v();},scaleX:c==="reset"?.95:1,scaleY:c==="reset"?.95:1,children:[jsx(Rect,{x:y,width:e.width-y*2,height:48,fill:"#ef4444",cornerRadius:8,onClick:F=>F.cancelBubble=true,onTap:F=>F.cancelBubble=true}),jsx(Text,{x:y,width:e.width-y*2,height:48,text:"Reset",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]})]})]})});cu.displayName="ShortAnswer";var fu=cu;var pu=({shortAnswers:e,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:s})=>jsx(Fragment,{children:e.map(n=>jsx(fu,{shortAnswer:n,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:i=>s(i,n.id)},n.id))});var hu=e=>{let o=useDispatch(),a=useSelector(he)?.fillInTheBlanks||[],r=useRef(new Map),s=useCallback((n,i)=>{let f=n.target;o(Eo({id:i,x:f.x(),y:f.y()})),e?.();},[o,e]);return {fillInTheBlanks:a,fibRefs:r,handleFillInTheBlanksDragEnd:s}};var gu=memo(({fillInTheBlank:e,handleSelect:o,handleTransform:t,handleDragEnd:a,onContextMenu:r})=>{let s=useSelector(D=>D.toolbar.selectedTool),n=s==="pen"||s==="eraser",i=useRef(null),[f,l]=useState(""),[u,d]=useState(false),[m,c]=useState(null);useEffect(()=>{if(i.current)return ()=>{}},[e.id]);let p=e.data.responseOptions.correctShortAnswer?.trim().toLowerCase()||"",x=u&&f.trim().toLowerCase()===p,h=()=>{d(false),l("");},v=()=>x?"\u2713 Correct! \u{1F389}":"\u2717 Try again!",g=()=>x?{bg:"#dcfce7",text:"#166534"}:{bg:"#fee2e2",text:"#991b1b"},b=24,y=80,C=u?50:0,S=45,I=8,w=20,q=e.data.feedbackMode==="practice"?48:0,P=12,U=y+C+I+w+I+P+q+b;return jsxs(Group,{ref:i,draggable:!n,listening:!n,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,name:"fib-element",...n?{}:{onDragEnd:D=>a(D,e.id),onClick:()=>o(e.id),onTap:()=>o(e.id),onContextMenu:D=>{let F=i.current?.getStage()?.getPointerPosition();if(!F||!r)return;let T={x:e.x,y:e.y,width:e.width,height:e.height};F.x>=T.x&&F.x<=T.x+T.width&&F.y>=T.y&&F.y<=T.y+T.height&&r(D.evt,e.id,"fillInTheBlanks");}},children:[jsx(Rect,{fill:"white",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:12,width:e.width,height:U,onTransformEnd:D=>t(e.id,D)}),jsx(Text,{text:e.data.question,x:b,y:b,fontSize:20,fontStyle:"bold",fill:"#111827",width:e.width-b*2-200,listening:false}),jsx(Rect,{x:e.width-b-180,y:b+10,width:180,height:S,fill:"#ffffff",stroke:x?"#22c55e":u?"#ef4444":"#096B76",strokeWidth:2,cornerRadius:8}),jsx(Html,{divProps:{style:{position:"absolute",top:`${b+10}px`,left:`${e.width-b-180}px`,width:"180px",height:`${S}px`,pointerEvents:u?"none":"auto"}},children:jsx("input",{type:"text",value:f,onChange:D=>l(D.target.value),disabled:u,placeholder:"__________",className:"h-full w-full border-0 bg-white px-2 text-center text-gray-900 focus:outline-none",style:{fontSize:"14px",pointerEvents:u?"none":"auto"}})}),u&&jsxs(Fragment,{children:[jsx(Rect,{x:b,y,width:e.width-b*2,height:C,fill:g().bg,cornerRadius:8}),jsx(Text,{x:b,y,width:e.width-b*2,height:C,text:v(),fontSize:16,fontStyle:"bold",fill:g().text,align:"center",verticalAlign:"middle",listening:false})]}),jsx(Text,{text:"\u26A0\uFE0F Answer is case sensitive",x:b,y:y+C+I,fontSize:10,fontStyle:"italic",fill:"#6b7280",width:e.width-b*2,listening:false}),e.data.feedbackMode==="practice"&&jsxs(Group,{y:y+C+I+w+I+P,children:[!u&&jsxs(Group,{onMouseDown:D=>{D.cancelBubble=true,c("check");},onMouseUp:D=>{D.cancelBubble=true,c(null),f.length>0&&d(true);},onMouseLeave:D=>{D.cancelBubble=true,c(null);},onTouchStart:D=>{D.cancelBubble=true,c("check");},onTouchEnd:D=>{D.cancelBubble=true,c(null),f.length>0&&d(true);},scaleX:m==="check"?.95:1,scaleY:m==="check"?.95:1,children:[jsx(Rect,{x:b,width:e.width-b*2,height:48,fill:f.length===0?"#9ca3af":"#096B76",cornerRadius:8,onClick:D=>D.cancelBubble=true,onTap:D=>D.cancelBubble=true}),jsx(Text,{x:b,width:e.width-b*2,height:48,text:"Check",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]}),u&&jsxs(Group,{onMouseDown:()=>c("reset"),onMouseUp:()=>{c(null),h();},onMouseLeave:()=>c(null),onTouchStart:()=>c("reset"),onTouchEnd:()=>{c(null),h();},scaleX:m==="reset"?.95:1,scaleY:m==="reset"?.95:1,children:[jsx(Rect,{x:b,width:e.width-b*2,height:48,fill:"#ef4444",cornerRadius:8,onClick:D=>D.cancelBubble=true,onTap:D=>D.cancelBubble=true}),jsx(Text,{x:b,width:e.width-b*2,height:48,text:"Reset",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]})]})]})});gu.displayName="FillInTheBlanks";var xu=gu;var vu=({fillInTheBlanks:e,handleSelect:o,handleTransform:t,onContextMenu:a,handleDragEnd:r})=>jsx(Fragment,{children:e.map(s=>jsx(xu,{fillInTheBlank:s,handleSelect:o,handleTransform:t,onContextMenu:a,handleDragEnd:r},s.id))});var Hi=memo(({longAnswer:e,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:s})=>{let n=useSelector(F=>F.toolbar.selectedTool),i=n==="pen"||n==="eraser",f=useRef(null),[l,u]=useState(""),[d,m]=useState(false),[c,p]=useState(null);useEffect(()=>{let F=f.current;if(F)return a.current.set(e.id,F),()=>{a.current.delete(e.id);}},[e.id,a]);let x=e.data.responseOptions.correctLongAnswer?.trim().toLowerCase()||"",h=d&&l.trim().toLowerCase()===x,v=()=>{m(false),u("");},g=()=>h?"\u2713 Correct! \u{1F389}":"\u2717 Needs review - this is a long answer question",b=()=>h?{bg:"#dcfce7",text:"#166534"}:{bg:"#fef3c7",text:"#92400e"},y=24,C=60,S=d?60:0,I=120,w=12,q=48,P=12,U=30,D=C+S+U+I+w+P+q+y;return jsxs(Group,{ref:f,draggable:!i,listening:!i,x:e.x,y:e.y,rotation:e.rotation,width:e.width,height:e.height,name:"la-element",...i?{}:{onDragEnd:s,onClick:()=>o(e.id),onTap:()=>o(e.id),onContextMenu:F=>{let T=f.current?.getStage()?.getPointerPosition();if(!T||!r)return;let H={x:e.x,y:e.y,width:e.width,height:e.height};T.x>=H.x&&T.x<=H.x+H.width&&T.y>=H.y&&T.y<=H.y+H.height&&r(F.evt,e.id,"longAnswer");}},children:[jsx(Rect,{fill:"white",stroke:"#e5e7eb",strokeWidth:2,cornerRadius:12,width:e.width,height:D,onTransformEnd:F=>t(e.id,F)}),jsx(Text,{text:e.data.question,x:y,y,fontSize:20,fontStyle:"bold",fill:"#111827",width:e.width-y*2,listening:false}),d&&jsxs(Fragment,{children:[jsx(Rect,{x:y,y:C,width:e.width-y*2,height:S,fill:b().bg,cornerRadius:8}),jsx(Text,{x:y,y:C,width:e.width-y*2,height:S,text:g(),fontSize:14,fontStyle:"bold",fill:b().text,align:"center",verticalAlign:"middle",listening:false})]}),jsx(Text,{text:"Answer (Extended response):",x:y,y:C+S+w,fontSize:14,fill:"#6b7280",width:e.width-y*2,listening:false}),jsx(Rect,{x:y,y:C+S+U,width:e.width-y*2,height:I,fill:"#ffffff",stroke:"#d1d5db",strokeWidth:2,cornerRadius:8}),jsx(Html,{divProps:{style:{position:"absolute",top:`${C+S+U}px`,left:`${y}px`,width:`${e.width-y*2}px`,height:`${I}px`,pointerEvents:d?"none":"auto"}},children:jsx("textarea",{value:l,onChange:F=>u(F.target.value),disabled:d,placeholder:`Type your extended answer here...\r
|
|
5
5
|
\r
|
|
6
|
-
This is for longer responses that require detailed explanations.`,className:"h-full w-full resize-none border-0 bg-white p-3 text-gray-900 focus:outline-none",style:{fontSize:"14px",pointerEvents:f?"none":"auto"}})}),jsx(Group,{y:C+I+E+S+w+U,children:f&&jsxs(Group,{onMouseDown:()=>p("reset"),onMouseUp:()=>{p(null),v();},onMouseLeave:()=>p(null),onTouchStart:()=>p("reset"),onTouchEnd:()=>{p(null),v();},scaleX:u==="reset"?.95:1,scaleY:u==="reset"?.95:1,children:[jsx(Rect,{x:y,width:e.width-y*2,height:48,fill:"#ef4444",cornerRadius:8,onClick:F=>F.cancelBubble=true,onTap:F=>F.cancelBubble=true}),jsx(Text,{x:y,width:e.width-y*2,height:48,text:"Reset",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]})})]})});Pi.displayName="LongAnswer";var fu=({longAnswer:e,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:n})=>jsx(Fragment,{children:e.map(s=>jsx(Pi,{longAnswer:s,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:l=>n(l,s.id)},s.id))});var gx=({onStageReady:e,onSelectionChange:o,onTextEditingReady:t,onDirectDrawingCanvasReady:a}={})=>{let r=Ht(),n=J(L=>L.toolbar.selectedTool);J(L=>L.canvas.isSketchMode);let l=J(pe),c=J(Bo),i=l?.editingActivity,d=l?.showMcqForm,f=l?.lines||[],m=useRef(null),u=useRef(null),[p,x]=useState(null),[h,v]=useState(""),[g,b]=useState({width:1280,height:1200}),[y,C]=useState("bottom"),I=useRef(null),[S,w]=useState(null),[N,U]=useState(null),[E,D]=useState(null),[F,T]=useState(null),[H,V]=useState(null),[te,P]=useState(null),[ae,z]=useState(null),[R,q]=useState(false),[W,$]=useState(null),[ee,re]=useState(false),ie=useRef(null),Ge=useRef(null),Ie=useRef(null),{debouncedGenerateThumbnail:$e}=Ql(c,m);useEffect(()=>{let L=()=>{if(u.current){let A=u.current.getBoundingClientRect();b({width:A.width,height:A.height});}};L();let M=new ResizeObserver(L);return u.current&&M.observe(u.current),window.addEventListener("resize",L),()=>{M.disconnect(),window.removeEventListener("resize",L);}},[]),useEffect(()=>{if(m.current){let L=m.current.container();L&&(L.style.cursor="");}},[n]);let Q=useCallback(()=>{m.current&&requestAnimationFrame(()=>{if(!m.current)return;m.current.getLayers().forEach(B=>B.batchDraw());let M=1/6,A=m.current.toDataURL({pixelRatio:M});v(A),$e();});},[$e]),Tt=useRef(c);useEffect(()=>{Tt.current!==c&&(Tt.current=c,Q());},[c,Q]);let Io=useRef(null),Sr=useRef(true);useEffect(()=>{if(!l)return;let L=(l.lines?.length||0)+(l.images?.length||0)+(l.videos?.length||0)+(l.shapes?.length||0)+(l.texts?.length||0)+(l.flashcards?.length||0)+(l.photoFrames?.length||0)+(l.multipleChoices?.length||0)+(l.trueFalses?.length||0)+(l.shortAnswers?.length||0)+(l.LongAnswer?.length||0)+(l.fillInTheBlanks?.length||0),M=Io.current?.count!==L;!Sr.current&&M&&setTimeout(()=>{Q();},100),Io.current={slideId:c,count:L},Sr.current=false;},[l,c,Q]),useEffect(()=>{m.current&&e&&e(m);},[e]),useEffect(()=>{Ie.current&&a&&a(Ie);},[a]);let{startDrawing:Ir,draw:Cr,stopDrawing:kr,setCanvasRef:Hs,tool:G,color:fe,strokeWidth:Le,isSketchMode:he}=kl(Q),oe=useRef(new Map),{images:se,getLoadedImage:Be,imageRefs:dt,handleDragEnd:Vt,handleImageTransformEnd:ut}=El(Q),{videos:Ce,videoRefs:Oe,handleVideoClick:qt,handleVideoDragEnd:Ma,handleVideoTransformEnd:_a}=Ol(Q),{multipleChoice:Xa,handleMcqTransform:Aa,mcqRefs:Qe,handleDragEnd:ea}=Fl(Q),{trueFalse:Ta,handleTrueFalseTransform:nf,trueFalseRefs:ul,handleTrueFalseDragEnd:lf}=Bl(Q),{shortAnswers:df,saRefs:Co,handleShortAnswerDragEnd:uf}=zl(Q),{longAnswers:cf,handleLongAnswerDragEnd:ff}=Wl(Q),{fillInTheBlanks:mf,handleFillInTheBlanksDragEnd:pf}=nu(Q),{transformerRef:le,boundBoxFunc:gt}=$l(),{shapes:hf,shapeRefs:Mr,isDragging:cl,handleShapeDragEnd:gf,handleShapeResizeEnd:xf}=ql(Q),{texts:ko,textRefs:ta,handleDragEnd:bf,handleTransformEnd:vf,handleDoubleClick:yf,startEditing:Ar,editingTextId:me,editingValue:fl,handleEditingChange:ml,finishEditing:Us}=Ul(Q,ie);useEffect(()=>{t&&t(Ar);},[t,Ar]);let Tr=J(L=>L.canvas.editingTextId);useEffect(()=>{Tr&&Tr!==me&&Ar(Tr);},[Tr,me,Ar]);let{flashcards:wf,flashcardRefs:Rr,handleDragEnd:Lf,handleFlashcardTransformEnd:Sf,handleNext:If,handlePrevious:Cf}=Kl(Q),{photoFrames:pl,photoFrameRefs:Pr,handleDragEnd:kf,handlePhotoFrameTransformEnd:Mf,startCamera:Af,capturePhoto:Tf,cameraStreams:Rf}=Xl(Q);useEffect(()=>{if(le.current){if(me){le.current.nodes([]),le.current.getLayer()?.batchDraw();return}if(p&&!Ce.find(A=>A.id===p)?.isPlaying){let A=oe.current.get(p)||dt.current.get(p)||Oe.current.get(p)||Mr.current.get(p)||ta.current.get(p)||Qe.current.get(p)||Rr.current.get(p)||Pr.current.get(p);if(A){let B=A.attrs?.locked;if(A.visible()&&B!==true){le.current.nodes([A]),le.current.getLayer()?.batchDraw();return}}}le.current.nodes([]),le.current.getLayer()?.batchDraw();}},[p,me,Ce,oe,dt,Oe,Mr,ta,Rr,Pr,pl,Qe,le]);let Ve=useCallback(L=>{x(L),o?.(L);},[o]),Dr=useCallback(()=>{x(null),o?.(null),le.current&&(le.current.nodes([]),le.current.getLayer()?.batchDraw());},[le,o]);useEffect(()=>{let L=le.current;return ()=>{L&&L.nodes([]);}},[c]),useEffect(()=>{let L=M=>{me&&M.target.tagName!=="TEXTAREA"&&Us();};return document.addEventListener("mousedown",L),()=>{document.removeEventListener("mousedown",L);}},[me,Us]),useEffect(()=>{let L=me||p;if(!L||p&&me){U(null);return}let M=ta.current.get(L),A=m.current;if(!M||!A){U(null);return}let B=A.container().getBoundingClientRect(),Te=M.absolutePosition(),ve=A.scaleX();U({x:B.left+(Te.x+M.width()*ve/2)*ve,y:B.top+Te.y*ve});},[p,me,ko,ta]),useEffect(()=>{if(!me){D(null);return}let L=ta.current.get(me),M=m.current;if(!L||!M){D(null);return}let A=M.container().getBoundingClientRect(),B=L.absolutePosition(),Te=M.scaleX();D({top:A.top+B.y*Te,left:A.left+B.x*Te,scale:Te});},[me,ko,ta]);let hl=useCallback(L=>{let M=L.target.getClassName(),A=L.target===L.target.getStage(),B=M==="Transformer"||L.target.getParent()?.getClassName()==="Transformer",Te=M==="Image",ve=M==="Text",Z=M==="Group"||L.target.getParent()?.getClassName()==="Group",Rt=M==="Circle"||M==="Star"||M==="RegularPolygon"||M==="Ellipse"||M==="Ring"||M==="Wedge"||M==="Arrow"||M==="Line"||M==="Arc"||M==="Rect"&&L.target.attrs.id,bt=M==="Group";if(console.log("\u{1F5B1}\uFE0F Canvas handleMouseDown:",{targetClass:M,clickedOnImage:Te,clickedOnGroup:Z,tool:n,targetId:L.target.attrs?.id}),A&&!B&&!Te&&!ve&&!Z&&!Rt&&!bt&&Dr(),!(n==="pen"||n==="eraser")&&(Te||ve||B||Z||Rt||bt))return;let Ke=L.target.getStage()?.getPointerPosition();if(!Ke)return;["rectangle","circle","ellipse","triangle","polygon","star","ring","wedge","arrow","line","arc"].includes(n)||Ir(Ke);},[n,Ir,Dr]),gl=useCallback(L=>{if(cl)return;let M=L.target.getStage()?.getPointerPosition();M&&Cr(M);},[Cr,cl]),xl=useCallback(()=>{kr();},[kr]),Pf=useCallback(L=>{Vt(L,Q);},[Vt,Q]),Df=useCallback(L=>{qt(L),Ve(L);},[qt,Ve]),xt=useCallback((L,M,A)=>{L.preventDefault();let B=L.clientX,Te=L.clientY,ve=I.current?.offsetHeight||450,Z=I.current?.offsetWidth||450,Rt=window.innerHeight,bt=window.innerWidth,et=B,Ke=Te;Te+ve>Rt&&(Ke=Te-ve),B+Z>bt&&(et=B-Z),w({x:et,y:Ke,elementId:M,elementType:A}),Ve(M);},[Ve]),bl=useCallback(L=>{r(Do(L)),r(sa(true));},[r]),Ef=useCallback(L=>{r(Ao(L)),r(Pa(true));},[r]),Ff=useCallback((L,M)=>{if(!S)return;let{elementId:A,elementType:B}=S;switch(L){case "order":if(M){let k=M.target.getBoundingClientRect();T({x:k.right+5,y:k.top,type:"order"});}break;case "lock":if(M){let k=M.target.getBoundingClientRect();T({x:k.right+5,y:k.top,type:"lock"});}break;case "link":if(w(null),B==="line")break;let Te=l?B==="image"?l.images.find(k=>k.id===A):l.videos.find(k=>k.id===A):null;V({type:"link",defaultValue:Te?.link||""});break;case "voice":if(w(null),B==="line")break;let ve=l?B==="image"?l.images.find(k=>k.id===A):B==="video"?l.videos.find(k=>k.id===A):B==="text"?l.texts.find(k=>k.id===A):B==="flashcard"?l.flashcards.find(k=>k.id===A):B==="photoFrame"?l.photoFrames.find(k=>k.id===A):B==="mcq"?l.multipleChoices.find(k=>k.id===A):B==="fillInTheBlanks"?l.fillInTheBlanks.find(k=>k.id===A):B==="longAnswer"?l.LongAnswer.find(k=>k.id===A):B==="shortAnswer"?l.shortAnswers.find(k=>k.id===A):B==="trueFalse"?l.trueFalses.find(k=>k.id===A):B==="shape"?l.shapes.find(k=>k.id===A):null:null;$({elementId:A,elementType:B,existingAudio:ve?.audioData});break;case "edit":w(null);let Z=null;B==="mcq"?Z=l?.multipleChoices.find(k=>k.id===A):B==="trueFalse"?Z=l?.trueFalses.find(k=>k.id===A):B==="shortAnswer"?Z=l?.shortAnswers.find(k=>k.id===A):B==="longAnswer"?Z=l?.LongAnswer.find(k=>k.id===A):B==="fillInTheBlanks"&&(Z=l?.fillInTheBlanks.find(k=>k.id===A)),Z&&bl(Z);break;case "editFlashcard":w(null);let Rt=l?.flashcards.find(k=>k.id===A);Rt&&Ef(Rt);break;case "color":w(null);let bt=l?.shapes.find(k=>k.id===A);P({elementId:A,elementType:"shape",defaultColor:bt?.color||"#096B76"});break;case "crop":if(w(null),B==="image"){let k=l?.images.find(Uf=>Uf.id===A);k&&z({elementId:A,imageSrc:k.src});}break;case "draw":w(null),B==="image"?r(mn(A)):B==="photoFrame"&&r(hn(A));break;case "duplicate":r(de()),B==="line"?r(En(A)):B==="image"?r(Fr(A)):B==="video"?r(Nr(A)):B==="shape"?r(Vr(A)):B==="text"?r(qr(A)):B==="flashcard"?r(Hr(A)):B==="photoFrame"?r(Ur(A)):B==="mcq"?r(zr(A)):B==="trueFalse"?r(Wr(A)):B==="shortAnswer"?r(Gr(A)):B==="fillInTheBlanks"?r(jr(A)):B==="longAnswer"&&r(Kr(A)),Q();break;case "infinite-clone":r(de());let et=5;for(let k=0;k<et;k++)B==="image"?r(Fr(A)):B==="video"?r(Nr(A)):B==="shape"?r(Vr(A)):B==="text"?r(qr(A)):B==="flashcard"?r(Hr(A)):B==="photoFrame"?r(Ur(A)):B==="mcq"?r(zr(A)):B==="trueFalse"?r(Wr(A)):B==="shortAnswer"?r(Gr(A)):B==="fillInTheBlanks"?r(jr(A)):B==="longAnswer"&&r(Kr(A));Q();break;case "make-response":if(w(null),B==="line")break;let Ke=`#response-${A}`;r(de()),r(_r({id:A,type:B,link:Ke})),(l?B==="image"?l.images.find(k=>k.id===A):B==="video"?l.videos.find(k=>k.id===A):B==="shape"?l.shapes.find(k=>k.id===A):B==="flashcard"?l.flashcards.find(k=>k.id===A):B==="photoFrame"?l.photoFrames.find(k=>k.id===A):l.multipleChoices.find(k=>k.id===A):null)?.altText||r(Xr({id:A,type:B,altText:"Interactive response area"})),Q(),console.log(`Element ${A} marked as interactive response area`);break;case "accessibility":if(w(null),B==="line")break;let O=l?B==="image"?l.images.find(k=>k.id===A):B==="video"?l.videos.find(k=>k.id===A):B==="shape"?l.shapes.find(k=>k.id===A):null:null;V({type:"altText",defaultValue:O?.altText||""});break;case "layers":console.log("Layers button clicked, opening panel..."),w(null),re(true),console.log("showLayersPanel state set to:",true);break;case "delete":r(de()),B==="line"?r(Dn(A)):B==="image"?r(en(A)):B==="video"?r(tn(A)):B==="shape"?r(on(A)):B==="text"?r(sn(A)):B==="flashcard"?r(ln(A)):B==="photoFrame"?r(fn(A)):B==="mcq"?r(bn(A)):B==="trueFalse"?r(yn(A)):B==="shortAnswer"?r(Ln(A)):B==="longAnswer"?r(In(A)):B==="fillInTheBlanks"&&r(kn(A)),Dr(),Q();break}},[S,r,Q,Dr,l,bl]),Bf=useCallback(()=>{w(null),T(null);},[]),zs=useCallback(L=>{if(!S)return;let{elementId:M,elementType:A}=S;switch(r(de()),L){case "bring-to-front":A!=="line"&&r(An({id:M,type:A}));break;case "send-to-back":A!=="line"&&r(Tn({id:M,type:A}));break;case "lock":case "unlock":A!=="line"&&r(Rn({id:M,type:A}));break}Q(),w(null),T(null);},[S,r,Q]),Of=useCallback(L=>{if(!S||!H)return;let{elementId:M,elementType:A}=S;r(de()),H.type==="link"&&A!=="line"?r(_r({id:M,type:A,link:L})):H.type==="altText"&&A!=="line"&&r(Xr({id:M,type:A,altText:L})),Q(),V(null);},[S,H,r,Q]),Nf=useCallback(L=>{if(!W)return;let{elementId:M,elementType:A}=W;r(de()),r($r({id:M,type:A,audioData:L})),Q(),$(null);},[W,r,Q]),Vf=useCallback(()=>{if(!W)return;let{elementId:L,elementType:M}=W;r(de()),r($r({id:L,type:M,audioData:""})),Q();},[W,r,Q]),qf=useCallback(L=>{if(!te)return;let{elementId:M}=te;r(de()),r(Ya({id:M,color:L})),Q(),P(null);},[te,r,Q]),Hf=useCallback(L=>{if(!ae)return;let{elementId:M}=ae;r(de()),r($a({id:M,src:L})),Q(),z(null);},[ae,r,Q]);return jsxs("div",{ref:u,className:"absolute inset-0",style:{cursor:n==="pen"?"crosshair":n==="eraser"?"":"default"},children:[n==="pen"&&jsx(Pl,{ref:L=>{if(Ge.current=L,Hs(L),L){let M=L.getCanvasElement();M&&(Ie.current=M,a&&a(Ie));}},width:g.width,height:g.height,tool:G,color:fe,strokeWidth:Le,isSketchMode:he}),jsxs(Stage,{ref:m,width:g.width,height:g.height,onMouseDown:hl,onMouseMove:gl,onMouseUp:xl,onTouchStart:hl,onTouchMove:gl,onTouchEnd:xl,children:[jsx(Layer,{listening:false,children:jsx(Rect,{x:0,y:0,width:g.width,height:g.height,fill:l?.backgroundColor||"white"})}),jsx(Layer,{children:(()=>{let L=[];return f.forEach((M,A)=>{L.push({type:"line",timestamp:M.timestamp||A,element:{...M,id:M.id??`line-${A}`},index:A});}),hf.forEach(M=>{L.push({type:"shape",timestamp:M.timestamp||0,element:M});}),se.forEach(M=>{L.push({type:"image",timestamp:M.timestamp||0,element:M});}),Ce.forEach(M=>{L.push({type:"video",timestamp:M.timestamp||0,element:M});}),ko.forEach(M=>{L.push({type:"text",timestamp:M.timestamp||0,element:M});}),wf.forEach(M=>{L.push({type:"flashcard",timestamp:M.timestamp||0,element:M});}),pl.forEach(M=>{L.push({type:"photoFrame",timestamp:M.timestamp||0,element:M});}),Xa.forEach(M=>{L.push({type:"mcq",timestamp:M.timestamp||0,element:M});}),Ta.forEach(M=>{L.push({type:"trueFalse",timestamp:M.timestamp||0,element:M});}),df.forEach(M=>{L.push({type:"shortAnswer",timestamp:M.timestamp||0,element:M});}),cf.forEach(M=>{L.push({type:"longAnswer",timestamp:M.timestamp||0,element:M});}),mf.forEach(M=>{L.push({type:"fillInTheBlanks",timestamp:M.timestamp||0,element:M});}),L.sort((M,A)=>M.timestamp-A.timestamp),L.map((M,A)=>{let B=`${M.type}-${"id"in M.element&&M.element.id||M.index||A}`,Te="id"in M.element?M.element.id:void 0,ve=Te&&p===Te;switch(M.type){case "line":let Z=M.element,Rt=M.index||0,bt=Z.tool==="eraser",et=Z.isSketch&&Z.tool==="pen",Ke=Z.isSketch&&bt,vt=Z.id||`line-${Rt}`;return Z.x===void 0&&(Z.x=0),Z.y===void 0&&(Z.y=0),Z.scaleX===void 0&&(Z.scaleX=1),Z.scaleY===void 0&&(Z.scaleY=1),Z.rotation===void 0&&(Z.rotation=0),n==="eraser"?jsx(Group,{x:Z.x||0,y:Z.y||0,scaleX:Z.scaleX||1,scaleY:Z.scaleY||1,rotation:Z.rotation||0,children:jsx(Line,{points:Z.points||[],stroke:et||Ke?void 0:Z.color,strokeWidth:et||Ke?0:Z.strokeWidth??0,name:"drawing-line",lineCap:"round",lineJoin:"round",fill:et||Ke?bt?"black":Z.color:void 0,closed:et||Ke,tension:0,globalCompositeOperation:bt?"destination-out":"source-over",listening:true,onClick:()=>{r(de()),r(Er(Rt));},onTap:()=>{r(de()),r(Er(Rt));},hitStrokeWidth:Math.max(20,(Z.strokeWidth??0)*2),onMouseEnter:O=>{let k=O.target.getStage();k&&(k.container().style.cursor=`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='%23ff000033' stroke='%23ff0000' stroke-width='2'/%3E%3C/svg%3E") 12 12, pointer`);},onMouseLeave:O=>{let k=O.target.getStage();k&&(k.container().style.cursor=`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E") 12 12, crosshair`);}})},B):jsxs(xe__default.Fragment,{children:[jsx(Group,{id:vt,ref:O=>{O?oe.current.set(vt,O):oe.current.delete(vt);},x:Z.x||0,y:Z.y||0,scaleX:Z.scaleX||1,scaleY:Z.scaleY||1,rotation:Z.rotation||0,draggable:n==="select",listening:n==="select",onClick:()=>{n==="select"&&(console.log("Line clicked:",vt),Ve(vt));},onTap:()=>{n==="select"&&(console.log("Line tapped:",vt),Ve(vt));},onDragEnd:O=>{r(de()),r(Yr({id:vt,x:O.target.x(),y:O.target.y(),scaleX:O.target.scaleX(),scaleY:O.target.scaleY(),rotation:O.target.rotation()})),Q();},onTransformEnd:O=>{r(de()),r(Yr({id:vt,x:O.target.x(),y:O.target.y(),scaleX:O.target.scaleX(),scaleY:O.target.scaleY(),rotation:O.target.rotation()})),Q();},onMouseEnter:O=>{if(n==="select"){let k=O.target.getStage();k&&(k.container().style.cursor="move");}},onMouseLeave:O=>{if(n==="select"){let k=O.target.getStage();k&&(k.container().style.cursor="default");}},onContextMenu:O=>{let k=O.evt;k.preventDefault(),xt(k,vt,"line");},children:jsx(Line,{points:Z.points||[],stroke:et||Ke?void 0:Z.color,strokeWidth:et||Ke?0:Z.strokeWidth??0,name:"drawing-line",lineCap:"round",lineJoin:"round",fill:et||Ke?bt?"black":Z.color:void 0,closed:et||Ke,tension:0,globalCompositeOperation:bt?"destination-out":"source-over",listening:true,hitStrokeWidth:20})}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=oe.current.get(p);console.log("Line Transformer - selectedId:",p,"node found:",!!k),k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw(),console.log("Line Transformer attached to node"));}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:false,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);case "shape":return jsxs(xe__default.Fragment,{children:[jsx(Xn,{onSelect:Ve,shapes:[M.element],shapeRefs:Mr,handleShapeDragEnd:gf,handleShapeResizeEnd:xf,onContextMenu:xt}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=Mr.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);case "image":return jsxs(xe__default.Fragment,{children:[jsx(Gn,{images:[M.element],getLoadedImage:Be,imageRefs:dt,onDragEnd:Pf,onTransform:ut,onSelect:Ve,onContextMenu:xt}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=dt.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);case "video":return jsxs(xe__default.Fragment,{children:[jsx(_n,{videos:[M.element],selectedId:p,videoRefs:Oe,onVideoClick:Df,onDragEnd:Ma,onTransformEnd:_a,onContextMenu:xt}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=Oe.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);case "text":return jsxs(xe__default.Fragment,{children:[jsx(ud,{texts:[M.element],textRefs:ta,onDragEnd:bf,onTransformEnd:vf,onSelect:Ve,onContextMenu:xt,onDoubleClick:yf,editingTextId:me,editingValue:fl,onEditingChange:ml}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=ta.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);case "flashcard":return jsxs(xe__default.Fragment,{children:[jsx(Jn,{flashcards:[M.element],flashcardRefs:Rr,selectedId:p,onDragEnd:Lf,onTransform:Sf,onSelect:Ve,onNext:If,onPrevious:Cf,onContextMenu:xt}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=Rr.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);case "photoFrame":return jsxs(xe__default.Fragment,{children:[jsx(ai,{photoFrames:[M.element],photoFrameRefs:Pr,selectedId:p,onDragEnd:kf,onTransform:Mf,onSelect:Ve,onStartCamera:Af,onCapture:Tf,cameraStreams:Rf,onContextMenu:xt}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=Pr.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);case "mcq":return jsxs(xe__default.Fragment,{children:[jsx(Vd,{handleMcqTransform:Aa,multipleChoice:[M.element],handleSelect:Ve,mcqRefs:Qe,handleDragEnd:ea,onContextMenu:xt}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=Qe.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);case "trueFalse":return jsxs(xe__default.Fragment,{children:[jsx(zd,{trueFalses:[M.element],handleTrueFalseTransform:nf,handleSelect:Ve,trueFalseRefs:ul,onContextMenu:xt,handleDragEnd:lf}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=ul.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);case "shortAnswer":return jsxs(xe__default.Fragment,{children:[jsx(su,{shortAnswers:[M.element],handleSelect:Ve,handleTransform:Aa,saRefs:Co,onContextMenu:xt,handleDragEnd:uf}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=Co.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);case "longAnswer":return jsxs(xe__default.Fragment,{children:[jsx(fu,{longAnswer:[M.element],handleSelect:Ve,handleTransform:Aa,saRefs:Co,onContextMenu:xt,handleDragEnd:ff}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=Co.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);case "fillInTheBlanks":return jsxs(xe__default.Fragment,{children:[jsx(uu,{fillInTheBlanks:[M.element],handleSelect:Ve,handleTransform:Aa,onContextMenu:xt,handleDragEnd:pf}),ve&&!me&&p&&jsx(Transformer,{ref:O=>{if(O&&le.current!==O){le.current=O;let k=Co.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},B);default:return null}})})()})]}),S&&jsx(Id,{menuRef:I,x:S.x,y:S.y,type:S.elementType,onAction:Ff,onClose:Bf,isDrawingMode:S.elementType==="image"?l?.images.find(L=>L.id===S.elementId)?.isDrawingMode:S.elementType==="photoFrame"?l?.photoFrames.find(L=>L.id===S.elementId)?.isDrawingMode:false}),F&&S&&jsx(Cd,{x:F.x,y:F.y,items:F.type==="order"?[{label:"Bring to Front",onClick:()=>zs("bring-to-front")},{label:"Send to Back",onClick:()=>zs("send-to-back")}]:[{label:l&&(S.elementType==="image"?l.images.find(L=>L.id===S.elementId)?.locked:l.videos.find(L=>L.id===S.elementId)?.locked)?"Unlock":"Lock",onClick:()=>zs(l&&(S.elementType==="image"?l.images.find(L=>L.id===S.elementId)?.locked:l.videos.find(L=>L.id===S.elementId)?.locked)?"unlock":"lock")}],onClose:()=>T(null)}),H&&jsx(kd,{title:H.type==="link"?"Add Link":"Add Alt Text",label:H.type==="link"?"URL":"Alternative Text",placeholder:H.type==="link"?"https://example.com":"Describe this image/video",defaultValue:H.defaultValue,onSave:Of,onClose:()=>V(null)}),te&&jsx(Md,{defaultColor:te.defaultColor,onConfirm:qf,onCancel:()=>P(null)}),ae&&jsx(Pd,{imageSrc:ae.imageSrc,onConfirm:Hf,onCancel:()=>z(null)}),R&&jsx(Go,{onClose:()=>q(false),stageRef:m}),W&&jsx(Ed,{elementId:W.elementId,elementType:W.elementType,existingAudio:W.existingAudio,onSave:Nf,onDelete:Vf,onClose:()=>$(null)}),ee&&jsx(si,{selectedElementId:p||void 0,onClose:()=>re(false),onSelectElement:L=>{Ve(L),re(false);}}),l?.images.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),l?.videos.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),l?.shapes?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),l?.texts?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),l?.flashcards?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),l?.photoFrames?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),l?.multipleChoices?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),l?.trueFalses?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),l?.shortAnswers?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),l?.LongAnswer?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),l?.fillInTheBlanks?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),d&&jsx("div",{className:"fixed inset-0 z-106 flex w-full flex-col items-center justify-center gap-6 rounded-lg bg-black/50 p-6 shadow-lg",children:jsx(Zd,{editElement:i})}),N&&(()=>{let L=me||p;if(!L)return null;let M=ko.find(A=>A.id===L);return M?jsx(Qd,{text:M,position:N}):null})(),E&&me&&(()=>{let L=ko.find(M=>M.id===me);return L?jsx(tu,{text:L,editingValue:fl,onEditingChange:ml,onFinish:Us,position:{top:E.top,left:E.left},scale:E.scale,textareaRef:ie},me):null})()]})},xx=gx;var bx="SchooplaVideoStorage";var ya="videos",Di=()=>new Promise((e,o)=>{let t=indexedDB.open(bx,1);t.onerror=()=>o(t.error),t.onsuccess=()=>e(t.result),t.onupgradeneeded=a=>{let r=a.target.result;r.objectStoreNames.contains(ya)||r.createObjectStore(ya,{keyPath:"id"});};}),mr=async(e,o,t)=>{try{console.log("\u{1F4BE} Saving video blob to IndexedDB:",e);let a=await Di(),n=a.transaction([ya],"readwrite").objectStore(ya),s={id:e,blob:o,thumbnailDataUrl:t,timestamp:Date.now()};await new Promise((l,c)=>{let i=n.put(s);i.onsuccess=()=>l(!0),i.onerror=()=>c(i.error);}),a.close(),console.log("\u2705 Video blob saved successfully:",e);}catch(a){throw console.error("Error saving video blob to IndexedDB:",a),a}};var gu=async()=>{try{console.log("\u{1F4C2} Loading all video blobs from IndexedDB...");let e=await Di(),t=e.transaction([ya],"readonly").objectStore(ya);return new Promise((a,r)=>{let n=t.getAll();n.onsuccess=()=>{e.close();let s=n.result,l=new Map;s.forEach(c=>{l.set(c.id,{blob:c.blob,thumbnailDataUrl:c.thumbnailDataUrl});}),console.log(`\u2705 Loaded ${l.size} video blobs from IndexedDB`),a(l);},n.onerror=()=>{e.close(),r(n.error);};})}catch(e){return console.error("Error loading all video blobs from IndexedDB:",e),new Map}},Ei=async e=>{try{console.log("\u{1F5D1}\uFE0F Deleting video blob from IndexedDB:",e);let o=await Di(),a=o.transaction([ya],"readwrite").objectStore(ya);await new Promise((r,n)=>{let s=a.delete(e);s.onsuccess=()=>r(!0),s.onerror=()=>n(s.error);}),o.close(),console.log("\u2705 Video blob deleted successfully:",e);}catch(o){throw console.error("Error deleting video blob from IndexedDB:",o),o}};var xu=e=>URL.createObjectURL(e);function wa(e,o=[]){let t=[];function a(n,s){let l=xe.createContext(s),c=t.length;t=[...t,s];let i=f=>{let{scope:m,children:u,...p}=f,x=m?.[e]?.[c]||l,h=xe.useMemo(()=>p,Object.values(p));return jsx(x.Provider,{value:h,children:u})};i.displayName=n+"Provider";function d(f,m){let u=m?.[e]?.[c]||l,p=xe.useContext(u);if(p)return p;if(s!==void 0)return s;throw new Error(`\`${f}\` must be used within \`${n}\``)}return [i,d]}let r=()=>{let n=t.map(s=>xe.createContext(s));return function(l){let c=l?.[e]||n;return xe.useMemo(()=>({[`__scope${e}`]:{...l,[e]:c}}),[l,c])}};return r.scopeName=e,[a,yx(r,...o)]}function yx(...e){let o=e[0];if(e.length===1)return o;let t=()=>{let a=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(n){let s=a.reduce((l,{useScope:c,scopeName:i})=>{let f=c(n)[`__scope${i}`];return {...l,...f}},{});return xe.useMemo(()=>({[`__scope${o.scopeName}`]:s}),[s])}};return t.scopeName=o.scopeName,t}function bu(e,o){if(typeof e=="function")return e(o);e!=null&&(e.current=o);}function pr(...e){return o=>{let t=false,a=e.map(r=>{let n=bu(r,o);return !t&&typeof n=="function"&&(t=true),n});if(t)return ()=>{for(let r=0;r<a.length;r++){let n=a[r];typeof n=="function"?n():bu(e[r],null);}}}}function Mt(...e){return xe.useCallback(pr(...e),e)}function wu(e){let o=wx(e),t=xe.forwardRef((a,r)=>{let{children:n,...s}=a,l=xe.Children.toArray(n),c=l.find(Sx);if(c){let i=c.props.children,d=l.map(f=>f===c?xe.Children.count(i)>1?xe.Children.only(null):xe.isValidElement(i)?i.props.children:null:f);return jsx(o,{...s,ref:r,children:xe.isValidElement(i)?xe.cloneElement(i,void 0,d):null})}return jsx(o,{...s,ref:r,children:n})});return t.displayName=`${e}.Slot`,t}function wx(e){let o=xe.forwardRef((t,a)=>{let{children:r,...n}=t;if(xe.isValidElement(r)){let s=Cx(r),l=Ix(n,r.props);return r.type!==xe.Fragment&&(l.ref=a?pr(a,s):s),xe.cloneElement(r,l)}return xe.Children.count(r)>1?xe.Children.only(null):null});return o.displayName=`${e}.SlotClone`,o}var Lx=Symbol("radix.slottable");function Sx(e){return xe.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Lx}function Ix(e,o){let t={...o};for(let a in o){let r=e[a],n=o[a];/^on[A-Z]/.test(a)?r&&n?t[a]=(...l)=>{let c=n(...l);return r(...l),c}:r&&(t[a]=r):a==="style"?t[a]={...r,...n}:a==="className"&&(t[a]=[r,n].filter(Boolean).join(" "));}return {...e,...t}}function Cx(e){let o=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning;return t?e.ref:(o=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}var Ax=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],it=Ax.reduce((e,o)=>{let t=wu(`Primitive.${o}`),a=xe.forwardRef((r,n)=>{let{asChild:s,...l}=r,c=s?t:o;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=true),jsx(c,{...l,ref:n})});return a.displayName=`Primitive.${o}`,{...e,[o]:a}},{});function _e(e,o,{checkForDefaultPrevented:t=true}={}){return function(r){if(e?.(r),t===false||!r.defaultPrevented)return o?.(r)}}function Fi(e){let o=Tx(e),t=xe.forwardRef((a,r)=>{let{children:n,...s}=a,l=xe.Children.toArray(n),c=l.find(Px);if(c){let i=c.props.children,d=l.map(f=>f===c?xe.Children.count(i)>1?xe.Children.only(null):xe.isValidElement(i)?i.props.children:null:f);return jsx(o,{...s,ref:r,children:xe.isValidElement(i)?xe.cloneElement(i,void 0,d):null})}return jsx(o,{...s,ref:r,children:n})});return t.displayName=`${e}.Slot`,t}function Tx(e){let o=xe.forwardRef((t,a)=>{let{children:r,...n}=t;if(xe.isValidElement(r)){let s=Ex(r),l=Dx(n,r.props);return r.type!==xe.Fragment&&(l.ref=a?pr(a,s):s),xe.cloneElement(r,l)}return xe.Children.count(r)>1?xe.Children.only(null):null});return o.displayName=`${e}.SlotClone`,o}var Rx=Symbol("radix.slottable");function Px(e){return xe.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Rx}function Dx(e,o){let t={...o};for(let a in o){let r=e[a],n=o[a];/^on[A-Z]/.test(a)?r&&n?t[a]=(...l)=>{let c=n(...l);return r(...l),c}:r&&(t[a]=r):a==="style"?t[a]={...r,...n}:a==="className"&&(t[a]=[r,n].filter(Boolean).join(" "));}return {...e,...t}}function Ex(e){let o=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning;return t?e.ref:(o=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}function As(e){let o=e+"CollectionProvider",[t,a]=wa(o),[r,n]=t(o,{collectionRef:{current:null},itemMap:new Map}),s=x=>{let{scope:h,children:v}=x,g=xe__default.useRef(null),b=xe__default.useRef(new Map).current;return jsx(r,{scope:h,itemMap:b,collectionRef:g,children:v})};s.displayName=o;let l=e+"CollectionSlot",c=Fi(l),i=xe__default.forwardRef((x,h)=>{let{scope:v,children:g}=x,b=n(l,v),y=Mt(h,b.collectionRef);return jsx(c,{ref:y,children:g})});i.displayName=l;let d=e+"CollectionItemSlot",f="data-radix-collection-item",m=Fi(d),u=xe__default.forwardRef((x,h)=>{let{scope:v,children:g,...b}=x,y=xe__default.useRef(null),C=Mt(h,y),I=n(d,v);return xe__default.useEffect(()=>(I.itemMap.set(y,{ref:y,...b}),()=>void I.itemMap.delete(y))),jsx(m,{[f]:"",ref:C,children:g})});u.displayName=d;function p(x){let h=n(e+"CollectionConsumer",x);return xe__default.useCallback(()=>{let g=h.collectionRef.current;if(!g)return [];let b=Array.from(g.querySelectorAll(`[${f}]`));return Array.from(h.itemMap.values()).sort((I,S)=>b.indexOf(I.ref.current)-b.indexOf(S.ref.current))},[h.collectionRef,h.itemMap])}return [{Provider:s,Slot:i,ItemSlot:u},p,a]}var ho=globalThis?.document?xe.useLayoutEffect:()=>{};var Fx=xe[" useId ".trim().toString()]||(()=>{}),Bx=0;function Cu(e){let[o,t]=xe.useState(Fx());return ho(()=>{t(a=>a??String(Bx++));},[e]),(o?`radix-${o}`:"")}function ku(e){let o=xe.useRef(e);return xe.useEffect(()=>{o.current=e;}),xe.useMemo(()=>(...t)=>o.current?.(...t),[])}var Ox=xe[" useInsertionEffect ".trim().toString()]||ho;function Jt({prop:e,defaultProp:o,onChange:t=()=>{},caller:a}){let[r,n,s]=Nx({defaultProp:o,onChange:t}),l=e!==void 0,c=l?e:r;{let d=xe.useRef(e!==void 0);xe.useEffect(()=>{let f=d.current;f!==l&&console.warn(`${a} is changing from ${f?"controlled":"uncontrolled"} to ${l?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),d.current=l;},[l,a]);}let i=xe.useCallback(d=>{if(l){let f=Vx(d)?d(e):d;f!==e&&s.current?.(f);}else n(d);},[l,e,n,s]);return [c,i]}function Nx({defaultProp:e,onChange:o}){let[t,a]=xe.useState(e),r=xe.useRef(t),n=xe.useRef(o);return Ox(()=>{n.current=o;},[o]),xe.useEffect(()=>{r.current!==t&&(n.current?.(t),r.current=t);},[t,r]),[t,a,n]}function Vx(e){return typeof e=="function"}var qx=xe.createContext(void 0);function xo(e){let o=xe.useContext(qx);return e||o||"ltr"}var Ni="rovingFocusGroup.onEntryFocus",Hx={bubbles:false,cancelable:true},hr="RovingFocusGroup",[Vi,Mu,Ux]=As(hr),[zx,qi]=wa(hr,[Ux]),[Wx,Gx]=zx(hr),Au=xe.forwardRef((e,o)=>jsx(Vi.Provider,{scope:e.__scopeRovingFocusGroup,children:jsx(Vi.Slot,{scope:e.__scopeRovingFocusGroup,children:jsx(Kx,{...e,ref:o})})}));Au.displayName=hr;var Kx=xe.forwardRef((e,o)=>{let{__scopeRovingFocusGroup:t,orientation:a,loop:r=false,dir:n,currentTabStopId:s,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:c,onEntryFocus:i,preventScrollOnEntryFocus:d=false,...f}=e,m=xe.useRef(null),u=Mt(o,m),p=xo(n),[x,h]=Jt({prop:s,defaultProp:l??null,onChange:c,caller:hr}),[v,g]=xe.useState(false),b=ku(i),y=Mu(t),C=xe.useRef(false),[I,S]=xe.useState(0);return xe.useEffect(()=>{let w=m.current;if(w)return w.addEventListener(Ni,b),()=>w.removeEventListener(Ni,b)},[b]),jsx(Wx,{scope:t,orientation:a,dir:p,loop:r,currentTabStopId:x,onItemFocus:xe.useCallback(w=>h(w),[h]),onItemShiftTab:xe.useCallback(()=>g(true),[]),onFocusableItemAdd:xe.useCallback(()=>S(w=>w+1),[]),onFocusableItemRemove:xe.useCallback(()=>S(w=>w-1),[]),children:jsx(it.div,{tabIndex:v||I===0?-1:0,"data-orientation":a,...f,ref:u,style:{outline:"none",...e.style},onMouseDown:_e(e.onMouseDown,()=>{C.current=true;}),onFocus:_e(e.onFocus,w=>{let N=!C.current;if(w.target===w.currentTarget&&N&&!v){let U=new CustomEvent(Ni,Hx);if(w.currentTarget.dispatchEvent(U),!U.defaultPrevented){let E=y().filter(V=>V.focusable),D=E.find(V=>V.active),F=E.find(V=>V.id===x),H=[D,F,...E].filter(Boolean).map(V=>V.ref.current);Pu(H,d);}}C.current=false;}),onBlur:_e(e.onBlur,()=>g(false))})})}),Tu="RovingFocusGroupItem",Ru=xe.forwardRef((e,o)=>{let{__scopeRovingFocusGroup:t,focusable:a=true,active:r=false,tabStopId:n,children:s,...l}=e,c=Cu(),i=n||c,d=Gx(Tu,t),f=d.currentTabStopId===i,m=Mu(t),{onFocusableItemAdd:u,onFocusableItemRemove:p,currentTabStopId:x}=d;return xe.useEffect(()=>{if(a)return u(),()=>p()},[a,u,p]),jsx(Vi.ItemSlot,{scope:t,id:i,focusable:a,active:r,children:jsx(it.span,{tabIndex:f?0:-1,"data-orientation":d.orientation,...l,ref:o,onMouseDown:_e(e.onMouseDown,h=>{a?d.onItemFocus(i):h.preventDefault();}),onFocus:_e(e.onFocus,()=>d.onItemFocus(i)),onKeyDown:_e(e.onKeyDown,h=>{if(h.key==="Tab"&&h.shiftKey){d.onItemShiftTab();return}if(h.target!==h.currentTarget)return;let v=Xx(h,d.orientation,d.dir);if(v!==void 0){if(h.metaKey||h.ctrlKey||h.altKey||h.shiftKey)return;h.preventDefault();let b=m().filter(y=>y.focusable).map(y=>y.ref.current);if(v==="last")b.reverse();else if(v==="prev"||v==="next"){v==="prev"&&b.reverse();let y=b.indexOf(h.currentTarget);b=d.loop?$x(b,y+1):b.slice(y+1);}setTimeout(()=>Pu(b));}}),children:typeof s=="function"?s({isCurrentTabStop:f,hasTabStop:x!=null}):s})})});Ru.displayName=Tu;var jx={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function _x(e,o){return o!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function Xx(e,o,t){let a=_x(e.key,t);if(!(o==="vertical"&&["ArrowLeft","ArrowRight"].includes(a))&&!(o==="horizontal"&&["ArrowUp","ArrowDown"].includes(a)))return jx[a]}function Pu(e,o=false){let t=document.activeElement;for(let a of e)if(a===t||(a.focus({preventScroll:o}),document.activeElement!==t))return}function $x(e,o){return e.map((t,a)=>e[(o+a)%e.length])}var Du=Au,Eu=Ru;var Bu="Toggle",Hi=xe.forwardRef((e,o)=>{let{pressed:t,defaultPressed:a,onPressedChange:r,...n}=e,[s,l]=Jt({prop:t,onChange:r,defaultProp:a??false,caller:Bu});return jsx(it.button,{type:"button","aria-pressed":s,"data-state":s?"on":"off","data-disabled":e.disabled?"":void 0,...n,ref:o,onClick:_e(e.onClick,()=>{e.disabled||l(!s);})})});Hi.displayName=Bu;var La="ToggleGroup",[Nu]=wa(La,[qi]),Vu=qi(),Ui=xe__default.forwardRef((e,o)=>{let{type:t,...a}=e;if(t==="single")return jsx(Zx,{...a,ref:o});if(t==="multiple")return jsx(Qx,{...a,ref:o});throw new Error(`Missing prop \`type\` expected on \`${La}\``)});Ui.displayName=La;var[qu,Hu]=Nu(La),Zx=xe__default.forwardRef((e,o)=>{let{value:t,defaultValue:a,onValueChange:r=()=>{},...n}=e,[s,l]=Jt({prop:t,defaultProp:a??"",onChange:r,caller:La});return jsx(qu,{scope:e.__scopeToggleGroup,type:"single",value:xe__default.useMemo(()=>s?[s]:[],[s]),onItemActivate:l,onItemDeactivate:xe__default.useCallback(()=>l(""),[l]),children:jsx(Uu,{...n,ref:o})})}),Qx=xe__default.forwardRef((e,o)=>{let{value:t,defaultValue:a,onValueChange:r=()=>{},...n}=e,[s,l]=Jt({prop:t,defaultProp:a??[],onChange:r,caller:La}),c=xe__default.useCallback(d=>l((f=[])=>[...f,d]),[l]),i=xe__default.useCallback(d=>l((f=[])=>f.filter(m=>m!==d)),[l]);return jsx(qu,{scope:e.__scopeToggleGroup,type:"multiple",value:s,onItemActivate:c,onItemDeactivate:i,children:jsx(Uu,{...n,ref:o})})});Ui.displayName=La;var[eb,tb]=Nu(La),Uu=xe__default.forwardRef((e,o)=>{let{__scopeToggleGroup:t,disabled:a=false,rovingFocus:r=true,orientation:n,dir:s,loop:l=true,...c}=e,i=Vu(t),d=xo(s),f={role:"group",dir:d,...c};return jsx(eb,{scope:t,rovingFocus:r,disabled:a,children:r?jsx(Du,{asChild:true,...i,orientation:n,dir:d,loop:l,children:jsx(it.div,{...f,ref:o})}):jsx(it.div,{...f,ref:o})})}),Ps="ToggleGroupItem",ab=xe__default.forwardRef((e,o)=>{let t=Hu(Ps,e.__scopeToggleGroup),a=tb(Ps,e.__scopeToggleGroup),r=Vu(e.__scopeToggleGroup),n=t.value.includes(e.value),s=a.disabled||e.disabled,l={...e,pressed:n,disabled:s},c=xe__default.useRef(null);return a.rovingFocus?jsx(Eu,{asChild:true,...r,focusable:!s,active:n,ref:c,children:jsx(Ou,{...l,ref:o})}):jsx(Ou,{...l,ref:o})});ab.displayName=Ps;var Ou=xe__default.forwardRef((e,o)=>{let{__scopeToggleGroup:t,value:a,...r}=e,n=Hu(Ps,t),s={role:"radio","aria-checked":e.pressed,"aria-pressed":void 0},l=n.type==="single"?s:void 0;return jsx(Hi,{...l,...r,ref:o,onPressedChange:c=>{c?n.onItemActivate(a):n.onItemDeactivate(a);}})}),zu=Ui;function Wu(e){var o,t,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(o=0;o<r;o++)e[o]&&(t=Wu(e[o]))&&(a&&(a+=" "),a+=t);}else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}function Ds(){for(var e,o,t=0,a="",r=arguments.length;t<r;t++)(e=arguments[t])&&(o=Wu(e))&&(a&&(a+=" "),a+=o);return a}var rb=(e,o)=>{let t=new Array(e.length+o.length);for(let a=0;a<e.length;a++)t[a]=e[a];for(let a=0;a<o.length;a++)t[e.length+a]=o[a];return t},sb=(e,o)=>({classGroupId:e,validator:o}),Xu=(e=new Map,o=null,t)=>({nextPart:e,validators:o,classGroupId:t});var Gu=[],nb="arbitrary..",ib=e=>{let o=db(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:a}=e;return {getClassGroupId:s=>{if(s.startsWith("[")&&s.endsWith("]"))return lb(s);let l=s.split("-"),c=l[0]===""&&l.length>1?1:0;return $u(l,c,o)},getConflictingClassGroupIds:(s,l)=>{if(l){let c=a[s],i=t[s];return c?i?rb(i,c):c:i||Gu}return t[s]||Gu}}},$u=(e,o,t)=>{if(e.length-o===0)return t.classGroupId;let r=e[o],n=t.nextPart.get(r);if(n){let i=$u(e,o+1,n);if(i)return i}let s=t.validators;if(s===null)return;let l=o===0?e.join("-"):e.slice(o).join("-"),c=s.length;for(let i=0;i<c;i++){let d=s[i];if(d.validator(l))return d.classGroupId}},lb=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let o=e.slice(1,-1),t=o.indexOf(":"),a=o.slice(0,t);return a?nb+a:void 0})(),db=e=>{let{theme:o,classGroups:t}=e;return ub(t,o)},ub=(e,o)=>{let t=Xu();for(let a in e){let r=e[a];Gi(r,t,a,o);}return t},Gi=(e,o,t,a)=>{let r=e.length;for(let n=0;n<r;n++){let s=e[n];cb(s,o,t,a);}},cb=(e,o,t,a)=>{if(typeof e=="string"){fb(e,o,t);return}if(typeof e=="function"){mb(e,o,t,a);return}pb(e,o,t,a);},fb=(e,o,t)=>{let a=e===""?o:Yu(o,e);a.classGroupId=t;},mb=(e,o,t,a)=>{if(hb(e)){Gi(e(a),o,t,a);return}o.validators===null&&(o.validators=[]),o.validators.push(sb(t,e));},pb=(e,o,t,a)=>{let r=Object.entries(e),n=r.length;for(let s=0;s<n;s++){let[l,c]=r[s];Gi(c,Yu(o,l),t,a);}},Yu=(e,o)=>{let t=e,a=o.split("-"),r=a.length;for(let n=0;n<r;n++){let s=a[n],l=t.nextPart.get(s);l||(l=Xu(),t.nextPart.set(s,l)),t=l;}return t},hb=e=>"isThemeGetter"in e&&e.isThemeGetter===true,gb=e=>{if(e<1)return {get:()=>{},set:()=>{}};let o=0,t=Object.create(null),a=Object.create(null),r=(n,s)=>{t[n]=s,o++,o>e&&(o=0,a=t,t=Object.create(null));};return {get(n){let s=t[n];if(s!==void 0)return s;if((s=a[n])!==void 0)return r(n,s),s},set(n,s){n in t?t[n]=s:r(n,s);}}};var xb=[],Ku=(e,o,t,a,r)=>({modifiers:e,hasImportantModifier:o,baseClassName:t,maybePostfixModifierPosition:a,isExternal:r}),bb=e=>{let{prefix:o,experimentalParseClassName:t}=e,a=r=>{let n=[],s=0,l=0,c=0,i,d=r.length;for(let x=0;x<d;x++){let h=r[x];if(s===0&&l===0){if(h===":"){n.push(r.slice(c,x)),c=x+1;continue}if(h==="/"){i=x;continue}}h==="["?s++:h==="]"?s--:h==="("?l++:h===")"&&l--;}let f=n.length===0?r:r.slice(c),m=f,u=false;f.endsWith("!")?(m=f.slice(0,-1),u=true):f.startsWith("!")&&(m=f.slice(1),u=true);let p=i&&i>c?i-c:void 0;return Ku(n,u,m,p)};if(o){let r=o+":",n=a;a=s=>s.startsWith(r)?n(s.slice(r.length)):Ku(xb,false,s,void 0,true);}if(t){let r=a;a=n=>t({className:n,parseClassName:r});}return a},vb=e=>{let o=new Map;return e.orderSensitiveModifiers.forEach((t,a)=>{o.set(t,1e6+a);}),t=>{let a=[],r=[];for(let n=0;n<t.length;n++){let s=t[n],l=s[0]==="[",c=o.has(s);l||c?(r.length>0&&(r.sort(),a.push(...r),r=[]),a.push(s)):r.push(s);}return r.length>0&&(r.sort(),a.push(...r)),a}},yb=e=>({cache:gb(e.cacheSize),parseClassName:bb(e),sortModifiers:vb(e),...ib(e)}),wb=/\s+/,Lb=(e,o)=>{let{parseClassName:t,getClassGroupId:a,getConflictingClassGroupIds:r,sortModifiers:n}=o,s=[],l=e.trim().split(wb),c="";for(let i=l.length-1;i>=0;i-=1){let d=l[i],{isExternal:f,modifiers:m,hasImportantModifier:u,baseClassName:p,maybePostfixModifierPosition:x}=t(d);if(f){c=d+(c.length>0?" "+c:c);continue}let h=!!x,v=a(h?p.substring(0,x):p);if(!v){if(!h){c=d+(c.length>0?" "+c:c);continue}if(v=a(p),!v){c=d+(c.length>0?" "+c:c);continue}h=false;}let g=m.length===0?"":m.length===1?m[0]:n(m).join(":"),b=u?g+"!":g,y=b+v;if(s.indexOf(y)>-1)continue;s.push(y);let C=r(v,h);for(let I=0;I<C.length;++I){let S=C[I];s.push(b+S);}c=d+(c.length>0?" "+c:c);}return c},Sb=(...e)=>{let o=0,t,a,r="";for(;o<e.length;)(t=e[o++])&&(a=Ju(t))&&(r&&(r+=" "),r+=a);return r},Ju=e=>{if(typeof e=="string")return e;let o,t="";for(let a=0;a<e.length;a++)e[a]&&(o=Ju(e[a]))&&(t&&(t+=" "),t+=o);return t},Ib=(e,...o)=>{let t,a,r,n,s=c=>{let i=o.reduce((d,f)=>f(d),e());return t=yb(i),a=t.cache.get,r=t.cache.set,n=l,l(c)},l=c=>{let i=a(c);if(i)return i;let d=Lb(c,t);return r(c,d),d};return n=s,(...c)=>n(Sb(...c))},Cb=[],Fe=e=>{let o=t=>t[e]||Cb;return o.isThemeGetter=true,o},Zu=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Qu=/^\((?:(\w[\w-]*):)?(.+)\)$/i,kb=/^\d+\/\d+$/,Mb=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ab=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Tb=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Rb=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Pb=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,bo=e=>kb.test(e),ne=e=>!!e&&!Number.isNaN(Number(e)),Sa=e=>!!e&&Number.isInteger(Number(e)),zi=e=>e.endsWith("%")&&ne(e.slice(0,-1)),Zt=e=>Mb.test(e),Db=()=>true,Eb=e=>Ab.test(e)&&!Tb.test(e),ec=()=>false,Fb=e=>Rb.test(e),Bb=e=>Pb.test(e),Ob=e=>!_(e)&&!X(e),Nb=e=>vo(e,oc,ec),_=e=>Zu.test(e),Ga=e=>vo(e,rc,Eb),Wi=e=>vo(e,zb,ne),ju=e=>vo(e,tc,ec),Vb=e=>vo(e,ac,Bb),Es=e=>vo(e,sc,Fb),X=e=>Qu.test(e),gr=e=>yo(e,rc),qb=e=>yo(e,Wb),_u=e=>yo(e,tc),Hb=e=>yo(e,oc),Ub=e=>yo(e,ac),Fs=e=>yo(e,sc,true),vo=(e,o,t)=>{let a=Zu.exec(e);return a?a[1]?o(a[1]):t(a[2]):false},yo=(e,o,t=false)=>{let a=Qu.exec(e);return a?a[1]?o(a[1]):t:false},tc=e=>e==="position"||e==="percentage",ac=e=>e==="image"||e==="url",oc=e=>e==="length"||e==="size"||e==="bg-size",rc=e=>e==="length",zb=e=>e==="number",Wb=e=>e==="family-name",sc=e=>e==="shadow";var Gb=()=>{let e=Fe("color"),o=Fe("font"),t=Fe("text"),a=Fe("font-weight"),r=Fe("tracking"),n=Fe("leading"),s=Fe("breakpoint"),l=Fe("container"),c=Fe("spacing"),i=Fe("radius"),d=Fe("shadow"),f=Fe("inset-shadow"),m=Fe("text-shadow"),u=Fe("drop-shadow"),p=Fe("blur"),x=Fe("perspective"),h=Fe("aspect"),v=Fe("ease"),g=Fe("animate"),b=()=>["auto","avoid","all","avoid-page","page","left","right","column"],y=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],C=()=>[...y(),X,_],I=()=>["auto","hidden","clip","visible","scroll"],S=()=>["auto","contain","none"],w=()=>[X,_,c],N=()=>[bo,"full","auto",...w()],U=()=>[Sa,"none","subgrid",X,_],E=()=>["auto",{span:["full",Sa,X,_]},Sa,X,_],D=()=>[Sa,"auto",X,_],F=()=>["auto","min","max","fr",X,_],T=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],H=()=>["start","end","center","stretch","center-safe","end-safe"],V=()=>["auto",...w()],te=()=>[bo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...w()],P=()=>[e,X,_],ae=()=>[...y(),_u,ju,{position:[X,_]}],z=()=>["no-repeat",{repeat:["","x","y","space","round"]}],R=()=>["auto","cover","contain",Hb,Nb,{size:[X,_]}],q=()=>[zi,gr,Ga],W=()=>["","none","full",i,X,_],$=()=>["",ne,gr,Ga],ee=()=>["solid","dashed","dotted","double"],re=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ie=()=>[ne,zi,_u,ju],Ge=()=>["","none",p,X,_],Ie=()=>["none",ne,X,_],$e=()=>["none",ne,X,_],Q=()=>[ne,X,_],Tt=()=>[bo,"full",...w()];return {cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Zt],breakpoint:[Zt],color:[Db],container:[Zt],"drop-shadow":[Zt],ease:["in","out","in-out"],font:[Ob],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Zt],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Zt],shadow:[Zt],spacing:["px",ne],text:[Zt],"text-shadow":[Zt],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",bo,_,X,h]}],container:["container"],columns:[{columns:[ne,_,X,l]}],"break-after":[{"break-after":b()}],"break-before":[{"break-before":b()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:C()}],overflow:[{overflow:I()}],"overflow-x":[{"overflow-x":I()}],"overflow-y":[{"overflow-y":I()}],overscroll:[{overscroll:S()}],"overscroll-x":[{"overscroll-x":S()}],"overscroll-y":[{"overscroll-y":S()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:N()}],"inset-x":[{"inset-x":N()}],"inset-y":[{"inset-y":N()}],start:[{start:N()}],end:[{end:N()}],top:[{top:N()}],right:[{right:N()}],bottom:[{bottom:N()}],left:[{left:N()}],visibility:["visible","invisible","collapse"],z:[{z:[Sa,"auto",X,_]}],basis:[{basis:[bo,"full","auto",l,...w()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[ne,bo,"auto","initial","none",_]}],grow:[{grow:["",ne,X,_]}],shrink:[{shrink:["",ne,X,_]}],order:[{order:[Sa,"first","last","none",X,_]}],"grid-cols":[{"grid-cols":U()}],"col-start-end":[{col:E()}],"col-start":[{"col-start":D()}],"col-end":[{"col-end":D()}],"grid-rows":[{"grid-rows":U()}],"row-start-end":[{row:E()}],"row-start":[{"row-start":D()}],"row-end":[{"row-end":D()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":F()}],"auto-rows":[{"auto-rows":F()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...T(),"normal"]}],"justify-items":[{"justify-items":[...H(),"normal"]}],"justify-self":[{"justify-self":["auto",...H()]}],"align-content":[{content:["normal",...T()]}],"align-items":[{items:[...H(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...H(),{baseline:["","last"]}]}],"place-content":[{"place-content":T()}],"place-items":[{"place-items":[...H(),"baseline"]}],"place-self":[{"place-self":["auto",...H()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:V()}],mx:[{mx:V()}],my:[{my:V()}],ms:[{ms:V()}],me:[{me:V()}],mt:[{mt:V()}],mr:[{mr:V()}],mb:[{mb:V()}],ml:[{ml:V()}],"space-x":[{"space-x":w()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":w()}],"space-y-reverse":["space-y-reverse"],size:[{size:te()}],w:[{w:[l,"screen",...te()]}],"min-w":[{"min-w":[l,"screen","none",...te()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[s]},...te()]}],h:[{h:["screen","lh",...te()]}],"min-h":[{"min-h":["screen","lh","none",...te()]}],"max-h":[{"max-h":["screen","lh",...te()]}],"font-size":[{text:["base",t,gr,Ga]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[a,X,Wi]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",zi,_]}],"font-family":[{font:[qb,_,o]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,X,_]}],"line-clamp":[{"line-clamp":[ne,"none",X,Wi]}],leading:[{leading:[n,...w()]}],"list-image":[{"list-image":["none",X,_]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",X,_]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:P()}],"text-color":[{text:P()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ee(),"wavy"]}],"text-decoration-thickness":[{decoration:[ne,"from-font","auto",X,Ga]}],"text-decoration-color":[{decoration:P()}],"underline-offset":[{"underline-offset":[ne,"auto",X,_]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:w()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",X,_]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",X,_]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ae()}],"bg-repeat":[{bg:z()}],"bg-size":[{bg:R()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Sa,X,_],radial:["",X,_],conic:[Sa,X,_]},Ub,Vb]}],"bg-color":[{bg:P()}],"gradient-from-pos":[{from:q()}],"gradient-via-pos":[{via:q()}],"gradient-to-pos":[{to:q()}],"gradient-from":[{from:P()}],"gradient-via":[{via:P()}],"gradient-to":[{to:P()}],rounded:[{rounded:W()}],"rounded-s":[{"rounded-s":W()}],"rounded-e":[{"rounded-e":W()}],"rounded-t":[{"rounded-t":W()}],"rounded-r":[{"rounded-r":W()}],"rounded-b":[{"rounded-b":W()}],"rounded-l":[{"rounded-l":W()}],"rounded-ss":[{"rounded-ss":W()}],"rounded-se":[{"rounded-se":W()}],"rounded-ee":[{"rounded-ee":W()}],"rounded-es":[{"rounded-es":W()}],"rounded-tl":[{"rounded-tl":W()}],"rounded-tr":[{"rounded-tr":W()}],"rounded-br":[{"rounded-br":W()}],"rounded-bl":[{"rounded-bl":W()}],"border-w":[{border:$()}],"border-w-x":[{"border-x":$()}],"border-w-y":[{"border-y":$()}],"border-w-s":[{"border-s":$()}],"border-w-e":[{"border-e":$()}],"border-w-t":[{"border-t":$()}],"border-w-r":[{"border-r":$()}],"border-w-b":[{"border-b":$()}],"border-w-l":[{"border-l":$()}],"divide-x":[{"divide-x":$()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":$()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ee(),"hidden","none"]}],"divide-style":[{divide:[...ee(),"hidden","none"]}],"border-color":[{border:P()}],"border-color-x":[{"border-x":P()}],"border-color-y":[{"border-y":P()}],"border-color-s":[{"border-s":P()}],"border-color-e":[{"border-e":P()}],"border-color-t":[{"border-t":P()}],"border-color-r":[{"border-r":P()}],"border-color-b":[{"border-b":P()}],"border-color-l":[{"border-l":P()}],"divide-color":[{divide:P()}],"outline-style":[{outline:[...ee(),"none","hidden"]}],"outline-offset":[{"outline-offset":[ne,X,_]}],"outline-w":[{outline:["",ne,gr,Ga]}],"outline-color":[{outline:P()}],shadow:[{shadow:["","none",d,Fs,Es]}],"shadow-color":[{shadow:P()}],"inset-shadow":[{"inset-shadow":["none",f,Fs,Es]}],"inset-shadow-color":[{"inset-shadow":P()}],"ring-w":[{ring:$()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:P()}],"ring-offset-w":[{"ring-offset":[ne,Ga]}],"ring-offset-color":[{"ring-offset":P()}],"inset-ring-w":[{"inset-ring":$()}],"inset-ring-color":[{"inset-ring":P()}],"text-shadow":[{"text-shadow":["none",m,Fs,Es]}],"text-shadow-color":[{"text-shadow":P()}],opacity:[{opacity:[ne,X,_]}],"mix-blend":[{"mix-blend":[...re(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":re()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[ne]}],"mask-image-linear-from-pos":[{"mask-linear-from":ie()}],"mask-image-linear-to-pos":[{"mask-linear-to":ie()}],"mask-image-linear-from-color":[{"mask-linear-from":P()}],"mask-image-linear-to-color":[{"mask-linear-to":P()}],"mask-image-t-from-pos":[{"mask-t-from":ie()}],"mask-image-t-to-pos":[{"mask-t-to":ie()}],"mask-image-t-from-color":[{"mask-t-from":P()}],"mask-image-t-to-color":[{"mask-t-to":P()}],"mask-image-r-from-pos":[{"mask-r-from":ie()}],"mask-image-r-to-pos":[{"mask-r-to":ie()}],"mask-image-r-from-color":[{"mask-r-from":P()}],"mask-image-r-to-color":[{"mask-r-to":P()}],"mask-image-b-from-pos":[{"mask-b-from":ie()}],"mask-image-b-to-pos":[{"mask-b-to":ie()}],"mask-image-b-from-color":[{"mask-b-from":P()}],"mask-image-b-to-color":[{"mask-b-to":P()}],"mask-image-l-from-pos":[{"mask-l-from":ie()}],"mask-image-l-to-pos":[{"mask-l-to":ie()}],"mask-image-l-from-color":[{"mask-l-from":P()}],"mask-image-l-to-color":[{"mask-l-to":P()}],"mask-image-x-from-pos":[{"mask-x-from":ie()}],"mask-image-x-to-pos":[{"mask-x-to":ie()}],"mask-image-x-from-color":[{"mask-x-from":P()}],"mask-image-x-to-color":[{"mask-x-to":P()}],"mask-image-y-from-pos":[{"mask-y-from":ie()}],"mask-image-y-to-pos":[{"mask-y-to":ie()}],"mask-image-y-from-color":[{"mask-y-from":P()}],"mask-image-y-to-color":[{"mask-y-to":P()}],"mask-image-radial":[{"mask-radial":[X,_]}],"mask-image-radial-from-pos":[{"mask-radial-from":ie()}],"mask-image-radial-to-pos":[{"mask-radial-to":ie()}],"mask-image-radial-from-color":[{"mask-radial-from":P()}],"mask-image-radial-to-color":[{"mask-radial-to":P()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":y()}],"mask-image-conic-pos":[{"mask-conic":[ne]}],"mask-image-conic-from-pos":[{"mask-conic-from":ie()}],"mask-image-conic-to-pos":[{"mask-conic-to":ie()}],"mask-image-conic-from-color":[{"mask-conic-from":P()}],"mask-image-conic-to-color":[{"mask-conic-to":P()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ae()}],"mask-repeat":[{mask:z()}],"mask-size":[{mask:R()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",X,_]}],filter:[{filter:["","none",X,_]}],blur:[{blur:Ge()}],brightness:[{brightness:[ne,X,_]}],contrast:[{contrast:[ne,X,_]}],"drop-shadow":[{"drop-shadow":["","none",u,Fs,Es]}],"drop-shadow-color":[{"drop-shadow":P()}],grayscale:[{grayscale:["",ne,X,_]}],"hue-rotate":[{"hue-rotate":[ne,X,_]}],invert:[{invert:["",ne,X,_]}],saturate:[{saturate:[ne,X,_]}],sepia:[{sepia:["",ne,X,_]}],"backdrop-filter":[{"backdrop-filter":["","none",X,_]}],"backdrop-blur":[{"backdrop-blur":Ge()}],"backdrop-brightness":[{"backdrop-brightness":[ne,X,_]}],"backdrop-contrast":[{"backdrop-contrast":[ne,X,_]}],"backdrop-grayscale":[{"backdrop-grayscale":["",ne,X,_]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[ne,X,_]}],"backdrop-invert":[{"backdrop-invert":["",ne,X,_]}],"backdrop-opacity":[{"backdrop-opacity":[ne,X,_]}],"backdrop-saturate":[{"backdrop-saturate":[ne,X,_]}],"backdrop-sepia":[{"backdrop-sepia":["",ne,X,_]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",X,_]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[ne,"initial",X,_]}],ease:[{ease:["linear","initial",v,X,_]}],delay:[{delay:[ne,X,_]}],animate:[{animate:["none",g,X,_]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[x,X,_]}],"perspective-origin":[{"perspective-origin":C()}],rotate:[{rotate:Ie()}],"rotate-x":[{"rotate-x":Ie()}],"rotate-y":[{"rotate-y":Ie()}],"rotate-z":[{"rotate-z":Ie()}],scale:[{scale:$e()}],"scale-x":[{"scale-x":$e()}],"scale-y":[{"scale-y":$e()}],"scale-z":[{"scale-z":$e()}],"scale-3d":["scale-3d"],skew:[{skew:Q()}],"skew-x":[{"skew-x":Q()}],"skew-y":[{"skew-y":Q()}],transform:[{transform:[X,_,"","none","gpu","cpu"]}],"transform-origin":[{origin:C()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Tt()}],"translate-x":[{"translate-x":Tt()}],"translate-y":[{"translate-y":Tt()}],"translate-z":[{"translate-z":Tt()}],"translate-none":["translate-none"],accent:[{accent:P()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:P()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",X,_]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",X,_]}],fill:[{fill:["none",...P()]}],"stroke-w":[{stroke:[ne,gr,Ga,Wi]}],stroke:[{stroke:["none",...P()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var nc=Ib(Gb);function Ia(...e){return nc(Ds(e))}var jb=xe.createContext({size:"default",variant:"default",spacing:0});function Ca({className:e,variant:o,size:t,spacing:a=0,children:r,...n}){return jsx(zu,{"data-slot":"toggle-group","data-variant":o,"data-size":t,"data-spacing":a,style:{gap:`${a*.25}rem`},className:Ia("group/toggle-group flex w-fit items-center rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs",e),...n,children:jsx(jb.Provider,{value:{variant:o,size:t,spacing:a},children:r})})}var Xb={selectedTool:"select",penColor:"#000000",strokeWidth:12,fontSize:24,fontFamily:"Arial",fontStyle:"normal",fontWeight:"normal",textDecoration:"",textColor:"#000000"},cc=createSlice({name:"toolbar",initialState:Xb,reducers:{setTool:(e,o)=>{e.selectedTool=o.payload;},setPenColor:(e,o)=>{e.penColor=o.payload;},setStrokeWidth:(e,o)=>{e.strokeWidth=o.payload;},setFontSize:(e,o)=>{e.fontSize=o.payload;},setFontFamily:(e,o)=>{e.fontFamily=o.payload;},setFontStyle:(e,o)=>{e.fontStyle=o.payload;},setFontWeight:(e,o)=>{e.fontWeight=o.payload;},setTextDecoration:(e,o)=>{e.textDecoration=o.payload;},setTextColor:(e,o)=>{e.textColor=o.payload;}}}),{setTool:Bt,setPenColor:Bs,setStrokeWidth:ji,setFontSize:YA,setFontFamily:JA,setFontStyle:ZA,setFontWeight:QA,setTextDecoration:eT,setTextColor:tT}=cc.actions,fc=cc.reducer;var mc=({onClose:e,onRecordingComplete:o})=>{let[t,a]=useState(false),[r,n]=useState(null),[s,l]=useState(0),[c,i]=useState(null),[d,f]=useState(false),m=useRef(null),u=useRef([]),p=useRef(null),x=useRef(null),h=useRef(null);useEffect(()=>((async()=>{try{let S=await navigator.mediaDevices.getUserMedia({video:{width:{ideal:320},height:{ideal:240},facingMode:"user"},audio:!1});i(S),f(!0),h.current&&(h.current.srcObject=S);}catch(S){console.error("Error accessing camera:",S),alert("Failed to access camera. Please grant camera permission.");}})(),()=>{p.current&&clearInterval(p.current),c&&c.getTracks().forEach(S=>S.stop());}),[]);let v=()=>{c&&(c.getTracks().forEach(I=>I.stop()),i(null),f(false));},g=async()=>{try{let I=null,S=null;try{I=await navigator.mediaDevices.getUserMedia({video:{width:{ideal:1280},height:{ideal:720},facingMode:"user"},audio:!1});}catch(D){console.error("Error accessing camera for recording:",D),alert("Failed to access camera for recording.");return}try{S=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0}});}catch(D){console.warn("Microphone access denied:",D);}let w=[...I.getVideoTracks()];S&&w.push(...S.getAudioTracks());let N=new MediaStream(w),U="video/webm";MediaRecorder.isTypeSupported("video/webm;codecs=vp9,opus")?U="video/webm;codecs=vp9,opus":MediaRecorder.isTypeSupported("video/webm;codecs=vp8,opus")?U="video/webm;codecs=vp8,opus":MediaRecorder.isTypeSupported("video/webm;codecs=vp9")?U="video/webm;codecs=vp9":MediaRecorder.isTypeSupported("video/webm;codecs=vp8")&&(U="video/webm;codecs=vp8");let E=new MediaRecorder(N,{mimeType:U,videoBitsPerSecond:25e5});m.current=E,u.current=[],E.ondataavailable=D=>{D.data.size>0&&u.current.push(D.data);},E.onstop=()=>{let D=new Blob(u.current,{type:U}),F=document.createElement("video");F.src=URL.createObjectURL(D),F.muted=!0,F.currentTime=.1,F.onseeked=()=>{let T=document.createElement("canvas");T.width=F.videoWidth,T.height=F.videoHeight;let H=T.getContext("2d");H&&(H.drawImage(F,0,0),x.current=T.toDataURL("image/jpeg",.8)),URL.revokeObjectURL(F.src);},N.getTracks().forEach(T=>T.stop()),I&&I.getTracks().forEach(T=>T.stop()),S&&S.getTracks().forEach(T=>T.stop()),p.current&&clearInterval(p.current),n(D),v();},E.onerror=D=>{console.error("MediaRecorder error:",D);},E.start(1e3),a(!0),l(0),p.current=setInterval(()=>{l(D=>D+1);},1e3);}catch(I){console.error("Error starting camera recording:",I),alert("Failed to start recording. Please check permissions.");}},b=()=>{m.current&&t&&(m.current.state!=="inactive"&&(m.current.requestData(),setTimeout(()=>{m.current&&m.current.state!=="inactive"&&m.current.stop();},100)),a(false));},y=()=>{if(r){let I=URL.createObjectURL(r),S=document.createElement("a");S.href=I,S.download=`camera-recording-${Date.now()}.webm`,document.body.appendChild(S),S.click(),document.body.removeChild(S),URL.revokeObjectURL(I);}},C=I=>{let S=Math.floor(I/60),w=I%60;return `${S.toString().padStart(2,"0")}:${w.toString().padStart(2,"0")}`};return jsx("div",{className:"fixed inset-0 flex items-center justify-center",children:jsxs("div",{className:"relative w-full max-w-2xl overflow-hidden rounded-2xl shadow-2xl",children:[jsx("button",{onClick:e,className:"absolute top-4 right-4 z-10 rounded-full bg-white/90 p-2 text-gray-600 transition-colors hover:bg-white hover:text-gray-900",children:jsx(X$1,{className:"h-5 w-5"})}),jsxs("div",{className:"relative aspect-video bg-gray-900",children:[!r&&jsxs(Fragment,{children:[jsx("video",{ref:h,autoPlay:true,muted:true,playsInline:true,className:"h-full w-full object-cover"}),!t&&jsxs(Fragment,{children:[jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:jsx("button",{onClick:g,disabled:!d,className:"flex h-20 w-20 items-center justify-center rounded-full bg-blue-500 text-white shadow-2xl transition-all hover:scale-110 hover:bg-blue-600 disabled:cursor-not-allowed disabled:opacity-50",children:jsx(Record,{className:"h-10 w-10",weight:"fill"})})}),!d&&jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 text-center",children:jsx("p",{className:"text-lg font-medium text-white",children:"Click to start camera"})})]}),t&&jsxs("div",{className:"absolute inset-0 flex items-center justify-center",children:[jsx("button",{onClick:b,className:"flex h-20 w-20 items-center justify-center rounded-full bg-red-600 text-white shadow-2xl transition-all hover:scale-110 hover:bg-red-700",children:jsx(Stop,{className:"h-10 w-10",weight:"fill"})}),jsxs("div",{className:"absolute top-6 left-1/2 flex -translate-x-1/2 items-center gap-2 rounded-full bg-black/70 px-4 py-2 backdrop-blur-sm",children:[jsx("div",{className:"h-2 w-2 animate-pulse rounded-full bg-red-600"}),jsx("span",{className:"font-mono text-sm font-semibold text-white",children:C(s)})]})]})]}),r&&jsxs(Fragment,{children:[jsx("video",{src:URL.createObjectURL(r),controls:true,className:"h-full w-full object-cover"}),jsxs("div",{className:"absolute right-0 bottom-0 left-0 bg-linear-to-t from-black/80 via-black/50 to-transparent p-6",children:[jsxs("p",{className:"mb-3 text-center text-sm text-white/80",children:["Duration: ",C(s)]}),jsxs("div",{className:"flex gap-2",children:[jsx("button",{onClick:()=>{n(null),l(0);},className:"flex-1 rounded-lg border-2 border-white/30 bg-white/10 px-4 py-2 text-sm font-medium text-white backdrop-blur-sm transition-colors hover:bg-white/20",children:"Re-record"}),jsxs("button",{onClick:y,className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-blue-600 px-4 py-2 text-white transition-colors hover:bg-blue-700",children:[jsx(Download,{className:"h-4 w-4"}),"Download"]}),jsx("button",{onClick:()=>{o&&r&&x.current&&(o(r,x.current),e());},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-green-600 px-4 py-2 text-white transition-colors hover:bg-green-700",children:"Add to Canvas"})]})]})]})]})]})})};var Qt=40,hc=({onConfirm:e,onCancel:o,editingFlashcard:t})=>{let[a,r]=useState(t?.images||[]),[n,s]=useState(t?.order||"sequential"),[l,c]=useState(false),i=useRef(null),d=useRef(null);useEffect(()=>{let g=b=>{b.key==="Escape"&&o();};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[o]);let f=g=>{let b=g.target.files;if(!b||b.length===0)return;let y=Qt-a.length;if(y<=0){alert(`You can only upload a maximum of ${Qt} images`);return}let C=Array.from(b).slice(0,y);C.length<b.length&&alert(`Only ${y} more images can be added (max ${Qt} total)`);let I=C.map(S=>new Promise((w,N)=>{let U=new FileReader;U.onload=E=>{E.target?.result?w(E.target.result):N(new Error("Failed to read file"));},U.onerror=N,U.readAsDataURL(S);}));Promise.all(I).then(S=>{r(w=>[...w,...S]),d.current&&(d.current.value="");});},m=g=>{g.preventDefault(),c(false);let b=Array.from(g.dataTransfer.files).filter(S=>S.type.startsWith("image/"));if(b.length===0)return;let y=Qt-a.length;if(y<=0){alert(`You can only upload a maximum of ${Qt} images`);return}let C=b.slice(0,y);C.length<b.length&&alert(`Only ${y} more images can be added (max ${Qt} total)`);let I=C.map(S=>new Promise((w,N)=>{let U=new FileReader;U.onload=E=>{E.target?.result?w(E.target.result):N(new Error("Failed to read file"));},U.onerror=N,U.readAsDataURL(S);}));Promise.all(I).then(S=>{r(w=>[...w,...S]);});},u=g=>{g.preventDefault(),c(true);},p=()=>{c(false);},x=g=>{r(b=>b.filter((y,C)=>C!==g));},v=jsx("div",{className:"pointer-events-none fixed inset-0 z-100 flex items-center justify-center bg-black/50",onMouseDown:g=>{g.target===g.currentTarget&&o(),g.stopPropagation();},onMouseUp:g=>g.stopPropagation(),onMouseMove:g=>g.stopPropagation(),onTouchStart:g=>g.stopPropagation(),onTouchMove:g=>g.stopPropagation(),onTouchEnd:g=>g.stopPropagation(),children:jsxs("div",{ref:i,className:"pointer-events-auto max-h-[90vh] w-[650px] max-w-[90vw] overflow-hidden rounded-lg border border-gray-300 bg-white py-1 shadow-xl",onClick:g=>g.stopPropagation(),children:[jsxs("div",{className:"px-6 pt-4 pb-2",children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("h3",{className:"text-xl font-bold text-[#000000CC]",children:t?"Edit Flashcard":"Create Flashcard"}),jsx("button",{onClick:o,className:"cursor-pointer text-[#00000099]",children:jsx(X$1,{size:20,weight:"bold"})})]}),jsx("p",{className:"text-sm font-normal text-[#00000099]",children:"Add images to create an interactive study set."})]}),jsxs("form",{onSubmit:g=>{if(g.preventDefault(),a.length<2){alert("Please upload at least 2 images for the flashcard");return}e(a,n,t?.id);},className:"overflow-y-auto p-6",style:{maxHeight:"calc(90vh - 140px)"},children:[jsxs("div",{className:"space-y-6",children:[jsxs("div",{children:[jsxs("label",{className:"mb-2 flex items-center justify-between text-sm font-medium text-[#000000CC]",children:[jsxs("span",{className:"flex items-center gap-2 text-[#00000099] uppercase",children:[jsx(Image$1,{size:16}),"Upload Images"]}),jsx("span",{className:"flex items-center gap-1 rounded-full bg-[#0000000A] px-2 py-1 text-xs text-[#00000099]",children:a.length>=Qt?jsxs("span",{className:"flex items-center gap-1 text-amber-600",children:[jsx(Warning,{size:12,weight:"fill"}),"Max ",Qt," images"]}):jsxs("span",{children:[a.length,"/",Qt," images"]})})]}),jsx("input",{ref:d,type:"file",accept:"image/*",multiple:true,onChange:f,className:"hidden",id:"flashcard-file-input"}),jsxs("label",{htmlFor:"flashcard-file-input",onDrop:m,onDragOver:u,onDragLeave:p,className:`flex cursor-pointer flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-8 transition-colors ${l?"border-black bg-gray-50":"border-gray-300 bg-white hover:border-gray-400 hover:bg-gray-50"}`,children:[jsx("div",{className:"flex items-center justify-center rounded-lg bg-[#EBF6F7] p-4",children:jsx(CloudArrowUp$1,{size:24,weight:"fill",color:"#096B76"})}),jsxs("div",{className:"text-center",children:[jsx("p",{className:"text-sm font-medium text-gray-900",children:l?"Drop your images here":"Click to upload or drag & drop"}),jsx("p",{className:"mt-1 text-xs text-gray-500",children:"PNG, JPG, GIF \xB7 Up to 10MB each \xB7 Minimum 2 images"})]})]})]}),jsxs("div",{children:[jsxs("label",{className:"mb-2 flex items-center justify-between gap-2 px-2 text-sm font-medium text-[#00000099]",children:[jsx("div",{className:"flex items-center gap-2 text-[#00000099] uppercase",children:"Display Order"}),jsx("p",{className:"rounded-full bg-[#0000000A] px-2 py-1 text-xs text-[#00000099]",children:"Required"})]}),jsxs("div",{className:"grid grid-cols-2 gap-3",children:[jsx("button",{type:"button",onClick:()=>s("sequential"),className:`cursor-pointer rounded-lg border-2 p-4 transition-all ${n==="sequential"?"border-primary/80 text-black":"border-gray-200 bg-white text-gray-900 hover:border-gray-300"}`,children:jsxs("div",{className:"flex flex-col items-start gap-2",children:[jsx("div",{className:`rounded bg-[#0000000A] p-2 ${n==="sequential"?"bg-primary/8 text-primary":""}`,children:jsx(ArrowsDownUp,{size:20})}),jsxs("div",{className:"text-left",children:[jsx("p",{className:"text-sm font-medium",children:"Sequential"}),jsx("p",{className:"mt-0.5 text-xs opacity-70",children:"Students navigate through cards in a fixed, specific order."})]})]})}),jsx("button",{type:"button",onClick:()=>s("random"),className:`cursor-pointer rounded-lg border-2 p-4 transition-all ${n==="random"?"border-primary/80 text-black":"border-gray-200 bg-white text-gray-900 hover:border-gray-300"}`,children:jsxs("div",{className:"flex flex-col items-start gap-2",children:[jsx("div",{className:`rounded bg-[#0000000A] p-2 ${n==="random"?"bg-primary/8 text-primary":""}`,children:jsx(Shuffle,{size:20})}),jsxs("div",{className:"text-left",children:[jsx("p",{className:"text-sm font-medium",children:"Random"}),jsx("p",{className:"mt-0.5 text-xs opacity-70",children:"Students navigate through cards in a fixed, specific order."})]})]})})]})]}),a.length>0&&jsxs("div",{children:[jsxs("label",{className:"mb-2 flex items-center justify-between px-2 text-sm font-medium text-gray-900",children:[jsx("span",{className:"flex items-center gap-2 text-[#00000099] uppercase",children:"Your Cards"}),jsxs("span",{className:"rounded-full bg-[#0000000A] px-2 py-1 text-xs text-[#00000099]",children:[a.length," card",a.length!==1?"s":""]})]}),jsx("div",{className:"grid max-h-72 grid-cols-3 gap-3 overflow-y-auto rounded-lg p-3",children:a.map((g,b)=>jsxs("div",{className:"group relative aspect-square overflow-hidden rounded-lg border border-gray-300 bg-white",children:[jsx("img",{src:g,alt:`Flashcard ${b+1}`,className:"h-full w-full object-cover"}),jsx("button",{type:"button",onClick:()=>x(b),className:"absolute top-1 right-1 rounded bg-red-500 p-1 text-white opacity-0 transition-opacity group-hover:opacity-100 hover:bg-red-600",children:jsx(Trash,{size:12,weight:"bold"})}),jsx("div",{className:"bg-primary absolute bottom-1 left-1 flex h-5 w-5 items-center justify-center rounded text-xs font-medium text-white opacity-0 transition-opacity group-hover:opacity-100",children:b+1})]},b))})]}),a.length<2&&jsx("div",{className:"rounded-lg border border-gray-300 bg-gray-50 px-4 py-3",children:jsx("p",{className:"text-sm text-gray-700",children:"Upload at least 2 images to create your flashcard deck"})})]}),jsxs("div",{className:"mt-6 flex gap-3",children:[jsx("button",{type:"button",onClick:o,className:"flex-1 cursor-pointer rounded-lg border border-gray-300 bg-white px-4 py-2.5 text-sm font-medium text-gray-900 transition-colors hover:bg-gray-50",children:"Cancel"}),jsx("button",{type:"submit",disabled:a.length<2,className:"bg-primary hover:bg-primary/90 flex-1 cursor-pointer rounded-lg px-4 py-2.5 text-sm font-medium text-white transition-colors disabled:cursor-not-allowed disabled:bg-gray-300 disabled:text-gray-500",children:t?"Save Changes":"Create Flashcard"})]})]})]})});return createPortal(jsx("div",{className:"konva-editor-root",children:v}),document.body)};var Bv=({isOpen:e,onClose:o,onScreenRecord:t,stageRef:a,onTextAdded:r,showToggleButton:n=true}={})=>{let s=ge(),l=J(G=>G.canvas.slides.find(fe=>fe.id===G.canvas.currentSlideId)),c=l?.videos||[],i=l?.editingFlashcard,d=J(G=>G.toolbar.selectedTool),f=J(G=>G.toolbar.penColor),m=l?.showMcqForm,u=l?.showFlashcardForm,p=c.some(G=>G.isRecorded&&G.isPlaying),x=J(G=>G.toolbar.fontSize),h=J(G=>G.toolbar.fontFamily),v=J(G=>G.toolbar.fontStyle),g=J(G=>G.toolbar.fontWeight),b=J(G=>G.toolbar.textDecoration),y=J(G=>G.toolbar.textColor),[C,I]=useState(false),[S,w]=useState(false),[N,U]=useState(false),[E,D]=useState(false),[F,T]=useState(false),[H,V]=useState(true),P=useRef(null),ae=useRef(null),R=[{name:"select",icon:Cursor,label:"Select"},{name:"pen",icon:PenNib,label:"Pen"},{name:"eraser",icon:Eraser,label:"Eraser"},{name:"text",icon:TextAa,label:"Text"},{name:"shapes",icon:Shapes,label:"Shapes"},{name:"activities",icon:Cards,label:"Activities"},{name:"image",icon:Image$1,label:"Media"}],q=[{name:"rectangle",icon:Square,label:"Rect"},{name:"circle",icon:Circle$1,label:"Circle"},{name:"ellipse",icon:Circle$1,label:"Ellipse"},{name:"triangle",icon:Triangle,label:"Tri"},{name:"polygon",icon:Hexagon,label:"Hex"},{name:"star",icon:Star$1,label:"Star"},{name:"ring",icon:Circle$1,label:"Ring"},{name:"wedge",icon:Pizza,label:"Wedge"},{name:"arrow",icon:ArrowRight,label:"Arrow"},{name:"line",icon:LineSegment,label:"Line"},{name:"arc",icon:Circuitry,label:"Arc"}],W=[{name:"multiple-choice",icon:ListBullets,label:"MCQ"},{name:"true-false",icon:ToggleRight,label:"True-False"},{name:"short-answer",icon:Textbox,label:"Short Answer"},{name:"fill-in-the-blank",icon:TextUnderline,label:"Fill in the Blank"}],$=G=>{let fe=G.target.files;!fe||fe.length===0||(s(Bt("select")),s(ct(false)),D(false),Array.from(fe).forEach(Le=>{let he=new FileReader;he.onload=oe=>{let se=new window.Image;se.src=oe.target?.result,se.onload=()=>{let Be=se.width/se.height,dt=300,Vt=300,ut=se.width,Ce=se.height;ut>dt&&(ut=dt,Ce=ut/Be),Ce>Vt&&(Ce=Vt,ut=Ce*Be),s(de());let Oe=(window.innerWidth-ut)/2,qt=(window.innerHeight-Ce)/2;s(Qs({id:v4(),src:se.src,x:Oe,y:qt,width:ut,height:Ce,draggable:true,rotation:0}));};},he.readAsDataURL(Le);}),G.target.value="");},ee=async G=>{let fe=G.target.files;if(!(!fe||fe.length===0)){console.log("files",G),s(Bt("select")),s(ct(false)),D(false);for(let Le of Array.from(fe))try{let he=URL.createObjectURL(Le),oe=document.createElement("video");console.log("video",oe),oe.src=he,oe.muted=!0,oe.playsInline=!0,oe.preload="auto",oe.load(),await new Promise((Qe,ea)=>{let Ta=setTimeout(()=>ea(new Error("Metadata load timeout")),1e4);oe.onloadedmetadata=()=>{clearTimeout(Ta),Qe();},oe.onerror=()=>{clearTimeout(Ta),ea(new Error("Failed to load video"));};}),console.log("Video metadata loaded:",{duration:oe.duration,width:oe.videoWidth,height:oe.videoHeight}),await new Promise((Qe,ea)=>{let Ta=setTimeout(()=>ea(new Error("Video load timeout")),1e4);oe.readyState>=2?(clearTimeout(Ta),Qe()):oe.onloadeddata=()=>{clearTimeout(Ta),Qe();};});let se=Math.min(.8,oe.duration/2);console.log("Seeking to:",se),oe.currentTime=se,await new Promise(Qe=>{let ea=setTimeout(()=>{console.warn("Seek timeout, proceeding anyway"),Qe();},5e3);oe.onseeked=()=>{clearTimeout(ea),console.log("Seek completed"),Qe();};});let Be=document.createElement("canvas"),dt=oe.videoWidth/oe.videoHeight,Vt=400,ut=400,Ce=oe.videoWidth,Oe=oe.videoHeight;Ce>Vt&&(Ce=Vt,Oe=Ce/dt),Oe>ut&&(Oe=ut,Ce=Oe*dt),Be.width=Ce,Be.height=Oe;let qt=Be.getContext("2d",{willReadFrequently:!1});if(!qt)throw new Error("Failed to get canvas context");if(await new Promise(Qe=>setTimeout(Qe,100)),oe.videoWidth===0||oe.videoHeight===0)throw new Error("Video dimensions are invalid");console.log("Drawing video to canvas:",{width:Ce,height:Oe}),qt.drawImage(oe,0,0,Ce,Oe);let Ma=Be.toDataURL("image/jpeg",.8);console.log("Thumbnail generated, length:",Ma.length),s(de());let _a=(window.innerWidth-Ce)/2,Xa=(window.innerHeight-Oe)/2,Aa=v4();await mr(Aa,Le,Ma),s(Br({id:Aa,objectUrl:he,thumbnailDataUrl:Ma,videoBlob:Le,x:_a,y:Xa,width:Ce,height:Oe,draggable:!0,isPlaying:!1,rotation:0})),oe.src="",oe.load(),console.log(`Video uploaded: ${Le.name}`);}catch(he){console.error("Error processing video:",he),alert(`Failed to process video: ${Le.name}`);}G.target.value="";}},re=(G,fe,Le)=>{s(de()),s(Bt("select")),s(ct(false));let he=300,oe=300,se=(window.innerWidth-he)/2,Be=(window.innerHeight-oe)/2;s(Le?Ja({id:Le,images:G,order:fe,x:se,y:Be,width:he,height:oe,rotation:0,draggable:true}):nn({id:`flashcard-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,images:G,currentIndex:0,order:fe,x:se,y:Be,width:he,height:oe,rotation:0,draggable:true})),s(Pa(false));},ie=()=>{s(de()),s(Bt("select")),s(ct(false));let G=400,fe=300,Le=(window.innerWidth-G)/2,he=(window.innerHeight-fe)/2;s(cn({id:`photoframe-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:Le,y:he,width:G,height:fe,rotation:0,draggable:true,isCapturing:false})),T(false);},Ge=G=>{let he=(window.innerWidth-100)/2,oe=(window.innerHeight-100)/2,se={};switch(G.name){case "circle":case "ring":case "wedge":case "arc":se.radius=50,(G.name==="ring"||G.name==="arc")&&(se.innerRadius=25,se.outerRadius=50),(G.name==="wedge"||G.name==="arc")&&(se.angle=G.name==="wedge"?60:90);break;case "ellipse":se.radiusX=60,se.radiusY=40;break;case "triangle":se.radius=50,se.sides=3;break;case "polygon":se.radius=50,se.sides=6;break;case "star":se.innerRadius=25,se.outerRadius=50,se.numPoints=5;break;case "arrow":case "line":se.points=[0,0,100,0],G.name==="arrow"&&(se.pointerLength=10,se.pointerWidth=10);break}let Be={id:`shape-${Date.now()}`,type:G.name,x:he,y:oe,width:100,height:100,rotation:0,color:f,...se};s(de()),s(ct(false)),s(Bt(G.name)),s(an(Be));},Ie=G=>{if(s(Bt(G)),G==="select")s(ct(false));else if(G==="text"){s(ct(false)),s(de());let fe=200,Le=50,he=(window.innerWidth-fe)/2,oe=(window.innerHeight-Le)/2,se=`text-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;s(rn({id:se,text:"",x:he,y:oe,width:fe,height:Le,rotation:0,draggable:true,fontSize:x,fontFamily:h,fontStyle:v,fontWeight:g,textDecoration:b,fill:y,align:"left"})),setTimeout(()=>{s(Fo(se));},100),r&&r(se);}else s(ct(true));},$e=()=>{s(Fn()),s(Bt("select")),s(ct(false));},Q=()=>{t?t():a?I(true):alert("Screen recording requires a stageRef prop. Please pass the stageRef from Canvas to the Toolbar component.");},Tt=()=>{w(true);},Io=async(G,fe)=>{try{s(Bt("select")),s(ct(!1));let Le=URL.createObjectURL(G),he=document.createElement("video");he.src=Le,he.muted=!0,he.playsInline=!0,he.preload="auto",await new Promise((Ma,_a)=>{let Xa=setTimeout(()=>_a(new Error("Metadata load timeout")),1e4);he.onloadedmetadata=()=>{clearTimeout(Xa),Ma();},he.onerror=()=>{clearTimeout(Xa),_a(new Error("Failed to load video"));};});let oe=640,se=he.videoWidth/he.videoHeight,Be=oe,dt=Be/se,Vt=window.innerWidth,ut=window.innerHeight;s(de());let Ce=(Vt-Be)/2,Oe=(ut-dt)/2,qt=v4();await mr(qt,G,fe),s(Br({id:qt,objectUrl:Le,thumbnailDataUrl:fe,videoBlob:G,x:Ce,y:Oe,width:Be,height:dt,draggable:!0,isPlaying:!1,rotation:0,isRecorded:!1})),I(!1),w(!1);}catch(Le){console.error("Error adding recorded video to canvas:",Le),alert("Failed to add video to canvas. Please try again.");}},Sr=G=>{s(Bt("select")),s(ct(false)),s(Do(null)),G&&s(Mn(G)),s(sa(!m));},Ir=()=>{s(Ao(null)),s(Pa(true)),T(false);},Cr=()=>{U(!N);},kr=()=>{D(!E);},Hs=()=>{T(!F);};return p?null:jsx("div",{className:"konva-editor-root",children:jsxs("div",{className:"fixed top-0 z-50 flex h-full w-fit flex-col justify-center gap-8 overflow-y-auto p-4",children:[jsxs("div",{className:"flex h-fit items-center",children:[jsx(Ca,{type:"single",className:"flex flex-col gap-1 border bg-white p-1 shadow-xl",children:R.map((G,fe)=>jsx("div",{title:G.label,className:`hover:bg-primary/10 mb-1 cursor-pointer rounded-md px-4 py-3 ${G.name===d?"bg-primary/10":""}`,onClick:()=>{if(G.name==="image"){kr(),U(false),T(false),Ie(G.name);return}else if(G.name==="shapes"){Cr(),D(false),T(false),Ie(G.name);return}else if(G.name==="activities"){Ie(G.name),Hs(),U(false),D(false);return}Ie(G.name),U(false),D(false),T(false);},children:jsx(G.icon,{weight:"fill",size:24,className:"text-primary"})},fe))}),N&&jsx(Ca,{type:"single",className:"mx-1 grid h-fit grid-cols-2 border bg-white p-1 shadow-xl",children:q.map((G,fe)=>jsx("div",{title:G.name,className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",onClick:()=>Ge(G),children:jsx(G.icon,{weight:"fill",size:20,className:"text-primary"})},fe))}),E&&jsxs(Ca,{type:"single",className:"mx-1 mt-auto flex gap-2 bg-white p-2 shadow-2xl",children:[jsx("div",{onClick:()=>P.current?.click(),className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",children:jsx(Image$1,{weight:"fill",size:24,className:"text-primary"})}),jsx("div",{onClick:()=>ae.current?.click(),className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",children:jsx(MonitorPlay,{weight:"fill",size:24,className:"text-primary"})})]}),F&&jsxs(Ca,{type:"single",className:"mx-1 mt-auto grid grid-cols-2 gap-2 bg-white p-2 shadow-2xl",children:[jsx("div",{title:"Flashcard",onClick:()=>Ir(),className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",children:jsx(Cards,{weight:"fill",size:24,className:"text-primary"})}),jsx("div",{title:"Photo frame",onClick:ie,className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",children:jsx(CameraPlus,{weight:"fill",size:24,className:"text-primary"})}),W.map((G,fe)=>jsx("div",{title:G.label,onClick:()=>Sr(G.name),className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",children:jsx(G.icon,{weight:"fill",size:24,className:"text-primary"})},fe))]})]}),jsx("input",{ref:P,type:"file",accept:"image/*",multiple:true,className:"hidden",onChange:$}),jsx("input",{ref:ae,type:"file",accept:"video/*",className:"hidden",onChange:ee}),!t&&C&&a&&jsx(Go,{onClose:()=>I(false),stageRef:a,onRecordingComplete:Io}),S&&jsx(mc,{onClose:()=>w(false),onRecordingComplete:Io}),u&&jsx(hc,{editingFlashcard:i,onConfirm:re,onCancel:()=>s(Pa(false))}),jsxs(Ca,{type:"single",className:"flex flex-col border bg-white p-1 shadow-xl",children:[jsx("button",{value:"undo",onClick:()=>s(Bn()),className:"hover:bg-primary/10 text-primary cursor-pointer rounded-md px-4 py-3",title:"Undo",children:jsx(ArrowCounterClockwise,{size:24,weight:"bold"})}),jsx("button",{value:"redo",onClick:()=>s(On()),className:"hover:bg-primary/10 text-primary cursor-pointer rounded-md px-4 py-3",title:"Redo",children:jsx(ArrowClockwise,{size:24,weight:"bold"})}),jsx("button",{value:"screen-record",onClick:Q,className:"hover:bg-primary/10 cursor-pointer rounded-md px-4 py-3 text-[#2260DD]",title:"Screen Record",children:jsx(Record,{size:24,weight:"bold"})}),jsx("button",{value:"camera-record",onClick:Tt,className:"hover:bg-primary/10 cursor-pointer rounded-md px-4 py-3 text-[#804FF2]",title:"Camera Record",children:jsx(Camera,{size:24,weight:"fill"})}),jsx("button",{value:"clear",onClick:()=>$e(),className:"hover:bg-primary/10 cursor-pointer rounded-md px-4 py-3 text-[#E92222]",title:"Clear",children:jsx(Trash,{size:24,weight:"bold"})})]})]})})},Ov=Bv;var bc=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Nv=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(o,t,a)=>a?a.toUpperCase():t.toLowerCase()),Ji=e=>{let o=Nv(e);return o.charAt(0).toUpperCase()+o.slice(1)},Os=(...e)=>e.filter((o,t,a)=>!!o&&o.trim()!==""&&a.indexOf(o)===t).join(" ").trim(),vc=e=>{for(let o in e)if(o.startsWith("aria-")||o==="role"||o==="title")return true};var yc={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Lc=forwardRef(({color:e="currentColor",size:o=24,strokeWidth:t=2,absoluteStrokeWidth:a,className:r="",children:n,iconNode:s,...l},c)=>createElement("svg",{ref:c,...yc,width:o,height:o,stroke:e,strokeWidth:a?Number(t)*24/Number(o):t,className:Os("lucide",r),...!n&&!vc(l)&&{"aria-hidden":"true"},...l},[...s.map(([i,d])=>createElement(i,d)),...Array.isArray(n)?n:[n]]));var Ns=(e,o)=>{let t=forwardRef(({className:a,...r},n)=>createElement(Lc,{ref:n,iconNode:o,className:Os(`lucide-${bc(Ji(e))}`,`lucide-${e}`,a),...r}));return t.displayName=Ji(e),t};var Uv=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],yr=Ns("copy",Uv);var zv=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],wr=Ns("trash-2",zv);var Ic=({slide:e,index:o,isSelected:t,isSingleSlide:a,onSelect:r,onDuplicate:n,onDelete:s})=>jsxs("div",{className:`group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all ${t?"shadow-lg":"border-gray-300 bg-white hover:border-gray-400"}`,style:t?{borderColor:"#0d9488",backgroundColor:"rgba(13, 148, 136, 0.1)"}:{},onClick:r,children:[jsx("div",{className:"bg-opacity-60 absolute top-2 left-2 z-10 rounded bg-black px-2 py-1 text-xs text-white",children:o+1}),jsxs("div",{className:"absolute top-2 right-2 z-10 flex gap-1 opacity-0 transition-opacity group-hover:opacity-100",children:[jsx("button",{onClick:l=>{l.stopPropagation(),n();},className:"rounded bg-[#3B75E0] p-1.5 text-white shadow-md transition-colors",title:"Duplicate slide",children:jsx(yr,{size:14})}),!a&&jsx("button",{onClick:l=>{l.stopPropagation(),s();},className:"rounded bg-red-500 p-1.5 text-white shadow-md transition-colors hover:bg-red-600",title:"Delete slide",children:jsx(wr,{size:14})})]}),jsx("div",{className:"flex aspect-video w-full items-center justify-center overflow-hidden bg-white",children:e.thumbnail&&jsx("img",{src:e.thumbnail,alt:`Slide ${o+1}`,className:"h-full w-full object-contain"})}),jsx("div",{className:"truncate bg-white p-2 text-xs text-gray-700",children:e.name})]});var jv=()=>{let e=Ht(),o=aa(Oo),t=aa(Bo),a=aa(Nn),[r,n]=useState(true),c=(aa(u=>u.canvas.slides.find(p=>p.id===u.canvas.currentSlideId))?.videos||[]).some(u=>u.isRecorded&&u.isPlaying),i=()=>{a&&e(Ks());},d=u=>{e(Xs(u));},f=u=>{e(_s(u));},m=u=>{o.length>1&&e(js(u));};return c?null:jsxs("div",{className:"pointer-events-none fixed right-0 bottom-0 flex items-start",style:{top:"92px",zIndex:100},children:[jsxs(motion.div,{initial:false,animate:{x:r?0:320},transition:{type:"tween",duration:.3,ease:[.4,0,.2,1]},className:"pointer-events-auto flex h-full w-80 flex-col overflow-hidden border-l border-gray-300 bg-gray-50 shadow-xl",children:[jsx("div",{className:"bg-white p-4",children:jsxs("div",{className:"flex items-center justify-between",children:[jsxs("div",{className:"flex items-center gap-2",children:[jsx("button",{onClick:()=>n(false),className:"flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg transition-colors",title:"Hide Slides",children:jsx(SidebarSimple,{size:24,weight:"bold"})}),jsx("h2",{className:"text-lg font-semibold text-black",children:"Slides"})]}),jsxs("span",{className:"text-sm text-gray-600",children:[o.length,"/20"]})]})}),jsxs("div",{className:"flex flex-1 flex-col gap-4 overflow-hidden bg-white p-4",children:[jsx("div",{className:"flex-1 space-y-3 overflow-y-auto",children:o.map((u,p)=>jsx(Ic,{slide:u,index:p,isSelected:u.id===t,isSingleSlide:o.length===1,onSelect:()=>d(u.id),onDuplicate:()=>f(u.id),onDelete:()=>m(u.id)},u.id))}),jsxs("button",{onClick:i,disabled:!a,className:`flex w-full cursor-pointer items-center justify-center gap-2 rounded-lg px-4 py-3 font-medium transition-colors ${a?"text-white":"cursor-not-allowed bg-gray-300 text-gray-500"}`,style:a?{backgroundColor:"#0d9488"}:{},children:[jsx(Plus,{size:18}),"Add Slide"]})]})]}),jsx(AnimatePresence,{children:!r&&jsx(motion.button,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2,delay:.1},whileHover:{scale:1.05},whileTap:{scale:.95},onClick:()=>n(true),className:"pointer-events-auto absolute top-2 right-0 flex h-10 w-10 cursor-pointer items-center justify-center rounded-l-lg transition-colors hover:bg-gray-100",title:"Show Slides",children:jsx(SidebarSimple,{size:24,weight:"bold"})},"toggle")})]})};var Qi=({onPublish:e,label:o="Publish Slides",className:t})=>{let a=aa(Oo),s=(aa(p=>p.canvas.slides.find(x=>x.id===p.canvas.currentSlideId))?.videos||[]).some(p=>p.isRecorded&&p.isPlaying),[l,c]=useState(false),[i,d]=useState(null),[f,m]=useState(null),u=async()=>{if(a.length===0){m({type:"error",message:"No slides to publish"});return}if(!e){m({type:"error",message:"No publish handler provided"});return}c(true),m(null);try{let p=await e(a,x=>{d(x);});p.success?m({type:"success",message:p.message}):m({type:"error",message:p.message});}catch(p){m({type:"error",message:p instanceof Error?p.message:"An unexpected error occurred"});}finally{c(false),setTimeout(()=>{d(null),m(null);},3e3);}};return s?null:jsx("button",{onClick:u,disabled:l||a.length===0||!e,className:"cursor-pointer rounded-xl bg-[#F4F4F4] p-3",children:jsx(Export,{size:24,weight:"fill",color:"#00000066"})})};var Xv={width:"100vw",height:"100vh",display:"flex",flexDirection:"column",overflow:"hidden"};function $v({children:e,className:o="",style:t}){return jsx("div",{className:`konva-editor-root ${o}`.trim(),style:{...Xv,...t},children:e})}var ty=({title:e="Untitled",autoSaveMessage:o="Auto-saved just now",onBack:t,onSettings:a,onProfile:r,onPublish:n,showPublishButton:s=true,showSettingsButton:l=true,showProfileButton:c=true,showBackButton:i=true,className:d="",rightContent:f,leftContent:m})=>jsxs("div",{className:`fixed top-0 left-0 z-100 flex h-[90px] w-full items-center justify-between border-b border-b-gray-200 bg-white px-6 shadow-sm ${d}`,children:[m||jsxs("div",{className:"flex items-center gap-6 px-2",children:[i&&jsx("button",{onClick:t,className:"h-10 w-10 rounded-full bg-[#F7F8F9] p-2 transition-colors hover:bg-[#0000000A]",children:jsx(CaretLeft,{size:24,color:"#64758B",weight:"bold"})}),jsxs("div",{className:"flex flex-col",children:[jsx("span",{className:"text-2xl font-medium text-[#000000CC]",children:e}),jsxs("div",{className:"flex items-center gap-2",children:[jsx(CloudArrowUp,{weight:"fill",color:"#63748A",size:20}),jsx("span",{className:"text-base font-medium text-[#63748A]",children:o})]})]})]}),f||jsxs("div",{className:"flex items-center gap-4 px-2",children:[s&&n&&jsx(Qi,{onPublish:n}),l&&jsx("button",{onClick:a,className:"cursor-pointer rounded-xl bg-[#F4F4F4] p-3 transition-colors hover:bg-[#0000001A]",children:jsx(GearSix,{size:24,weight:"fill",color:"#00000066"})}),c&&jsx("button",{onClick:r,className:"cursor-pointer rounded-xl bg-[#F4F4F4] p-3 transition-colors hover:bg-[#0000001A]",children:jsx(User,{size:24,weight:"fill",color:"#00000066"})})]})]});function el(e,[o,t]){return Math.min(t,Math.max(o,e))}function Ac(e){let o=xe.useRef({value:e,previous:e});return xe.useMemo(()=>(o.current.value!==e&&(o.current.previous=o.current.value,o.current.value=e),o.current.previous),[e])}function Rc(e){let[o,t]=xe.useState(void 0);return ho(()=>{if(e){t({width:e.offsetWidth,height:e.offsetHeight});let a=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;let n=r[0],s,l;if("borderBoxSize"in n){let c=n.borderBoxSize,i=Array.isArray(c)?c[0]:c;s=i.inlineSize,l=i.blockSize;}else s=e.offsetWidth,l=e.offsetHeight;t({width:s,height:l});});return a.observe(e,{box:"border-box"}),()=>a.unobserve(e)}else t(void 0);},[e]),o}var Pc=["PageUp","PageDown"],Dc=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Ec={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},Lo="Slider",[tl,oy,ry]=As(Lo),[Fc]=wa(Lo,[ry]),[sy,qs]=Fc(Lo),Bc=xe.forwardRef((e,o)=>{let{name:t,min:a=0,max:r=100,step:n=1,orientation:s="horizontal",disabled:l=false,minStepsBetweenThumbs:c=0,defaultValue:i=[a],value:d,onValueChange:f=()=>{},onValueCommit:m=()=>{},inverted:u=false,form:p,...x}=e,h=xe.useRef(new Set),v=xe.useRef(0),b=s==="horizontal"?ny:iy,[y=[],C]=Jt({prop:d,defaultProp:i,onChange:E=>{[...h.current][v.current]?.focus(),f(E);}}),I=xe.useRef(y);function S(E){let D=fy(y,E);U(E,D);}function w(E){U(E,v.current);}function N(){let E=I.current[v.current];y[v.current]!==E&&m(y);}function U(E,D,{commit:F}={commit:false}){let T=gy(n),H=xy(Math.round((E-a)/n)*n+a,T),V=el(H,[a,r]);C((te=[])=>{let P=uy(te,V,D);if(hy(P,c*n)){v.current=P.indexOf(V);let ae=String(P)!==String(te);return ae&&F&&m(P),ae?P:te}else return te});}return jsx(sy,{scope:e.__scopeSlider,name:t,disabled:l,min:a,max:r,valueIndexToChangeRef:v,thumbs:h.current,values:y,orientation:s,form:p,children:jsx(tl.Provider,{scope:e.__scopeSlider,children:jsx(tl.Slot,{scope:e.__scopeSlider,children:jsx(b,{"aria-disabled":l,"data-disabled":l?"":void 0,...x,ref:o,onPointerDown:_e(x.onPointerDown,()=>{l||(I.current=y);}),min:a,max:r,inverted:u,onSlideStart:l?void 0:S,onSlideMove:l?void 0:w,onSlideEnd:l?void 0:N,onHomeKeyDown:()=>!l&&U(a,0,{commit:true}),onEndKeyDown:()=>!l&&U(r,y.length-1,{commit:true}),onStepKeyDown:({event:E,direction:D})=>{if(!l){let H=Pc.includes(E.key)||E.shiftKey&&Dc.includes(E.key)?10:1,V=v.current,te=y[V],P=n*H*D;U(te+P,V,{commit:true});}}})})})})});Bc.displayName=Lo;var[Oc,Nc]=Fc(Lo,{startEdge:"left",endEdge:"right",size:"width",direction:1}),ny=xe.forwardRef((e,o)=>{let{min:t,max:a,dir:r,inverted:n,onSlideStart:s,onSlideMove:l,onSlideEnd:c,onStepKeyDown:i,...d}=e,[f,m]=xe.useState(null),u=Mt(o,b=>m(b)),p=xe.useRef(void 0),x=xo(r),h=x==="ltr",v=h&&!n||!h&&n;function g(b){let y=p.current||f.getBoundingClientRect(),C=[0,y.width],S=rl(C,v?[t,a]:[a,t]);return p.current=y,S(b-y.left)}return jsx(Oc,{scope:e.__scopeSlider,startEdge:v?"left":"right",endEdge:v?"right":"left",direction:v?1:-1,size:"width",children:jsx(Vc,{dir:x,"data-orientation":"horizontal",...d,ref:u,style:{...d.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:b=>{let y=g(b.clientX);s?.(y);},onSlideMove:b=>{let y=g(b.clientX);l?.(y);},onSlideEnd:()=>{p.current=void 0,c?.();},onStepKeyDown:b=>{let C=Ec[v?"from-left":"from-right"].includes(b.key);i?.({event:b,direction:C?-1:1});}})})}),iy=xe.forwardRef((e,o)=>{let{min:t,max:a,inverted:r,onSlideStart:n,onSlideMove:s,onSlideEnd:l,onStepKeyDown:c,...i}=e,d=xe.useRef(null),f=Mt(o,d),m=xe.useRef(void 0),u=!r;function p(x){let h=m.current||d.current.getBoundingClientRect(),v=[0,h.height],b=rl(v,u?[a,t]:[t,a]);return m.current=h,b(x-h.top)}return jsx(Oc,{scope:e.__scopeSlider,startEdge:u?"bottom":"top",endEdge:u?"top":"bottom",size:"height",direction:u?1:-1,children:jsx(Vc,{"data-orientation":"vertical",...i,ref:f,style:{...i.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:x=>{let h=p(x.clientY);n?.(h);},onSlideMove:x=>{let h=p(x.clientY);s?.(h);},onSlideEnd:()=>{m.current=void 0,l?.();},onStepKeyDown:x=>{let v=Ec[u?"from-bottom":"from-top"].includes(x.key);c?.({event:x,direction:v?-1:1});}})})}),Vc=xe.forwardRef((e,o)=>{let{__scopeSlider:t,onSlideStart:a,onSlideMove:r,onSlideEnd:n,onHomeKeyDown:s,onEndKeyDown:l,onStepKeyDown:c,...i}=e,d=qs(Lo,t);return jsx(it.span,{...i,ref:o,onKeyDown:_e(e.onKeyDown,f=>{f.key==="Home"?(s(f),f.preventDefault()):f.key==="End"?(l(f),f.preventDefault()):Pc.concat(Dc).includes(f.key)&&(c(f),f.preventDefault());}),onPointerDown:_e(e.onPointerDown,f=>{let m=f.target;m.setPointerCapture(f.pointerId),f.preventDefault(),d.thumbs.has(m)?m.focus():a(f);}),onPointerMove:_e(e.onPointerMove,f=>{f.target.hasPointerCapture(f.pointerId)&&r(f);}),onPointerUp:_e(e.onPointerUp,f=>{let m=f.target;m.hasPointerCapture(f.pointerId)&&(m.releasePointerCapture(f.pointerId),n(f));})})}),qc="SliderTrack",Hc=xe.forwardRef((e,o)=>{let{__scopeSlider:t,...a}=e,r=qs(qc,t);return jsx(it.span,{"data-disabled":r.disabled?"":void 0,"data-orientation":r.orientation,...a,ref:o})});Hc.displayName=qc;var al="SliderRange",Uc=xe.forwardRef((e,o)=>{let{__scopeSlider:t,...a}=e,r=qs(al,t),n=Nc(al,t),s=xe.useRef(null),l=Mt(o,s),c=r.values.length,i=r.values.map(m=>Gc(m,r.min,r.max)),d=c>1?Math.min(...i):0,f=100-Math.max(...i);return jsx(it.span,{"data-orientation":r.orientation,"data-disabled":r.disabled?"":void 0,...a,ref:l,style:{...e.style,[n.startEdge]:d+"%",[n.endEdge]:f+"%"}})});Uc.displayName=al;var ol="SliderThumb",zc=xe.forwardRef((e,o)=>{let t=oy(e.__scopeSlider),[a,r]=xe.useState(null),n=Mt(o,l=>r(l)),s=xe.useMemo(()=>a?t().findIndex(l=>l.ref.current===a):-1,[t,a]);return jsx(ly,{...e,ref:n,index:s})}),ly=xe.forwardRef((e,o)=>{let{__scopeSlider:t,index:a,name:r,...n}=e,s=qs(ol,t),l=Nc(ol,t),[c,i]=xe.useState(null),d=Mt(o,g=>i(g)),f=c?s.form||!!c.closest("form"):true,m=Rc(c),u=s.values[a],p=u===void 0?0:Gc(u,s.min,s.max),x=cy(a,s.values.length),h=m?.[l.size],v=h?my(h,p,l.direction):0;return xe.useEffect(()=>{if(c)return s.thumbs.add(c),()=>{s.thumbs.delete(c);}},[c,s.thumbs]),jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[l.startEdge]:`calc(${p}% + ${v}px)`},children:[jsx(tl.ItemSlot,{scope:e.__scopeSlider,children:jsx(it.span,{role:"slider","aria-label":e["aria-label"]||x,"aria-valuemin":s.min,"aria-valuenow":u,"aria-valuemax":s.max,"aria-orientation":s.orientation,"data-orientation":s.orientation,"data-disabled":s.disabled?"":void 0,tabIndex:s.disabled?void 0:0,...n,ref:d,style:u===void 0?{display:"none"}:e.style,onFocus:_e(e.onFocus,()=>{s.valueIndexToChangeRef.current=a;})})}),f&&jsx(Wc,{name:r??(s.name?s.name+(s.values.length>1?"[]":""):void 0),form:s.form,value:u},a)]})});zc.displayName=ol;var dy="RadioBubbleInput",Wc=xe.forwardRef(({__scopeSlider:e,value:o,...t},a)=>{let r=xe.useRef(null),n=Mt(r,a),s=Ac(o);return xe.useEffect(()=>{let l=r.current;if(!l)return;let c=window.HTMLInputElement.prototype,d=Object.getOwnPropertyDescriptor(c,"value").set;if(s!==o&&d){let f=new Event("input",{bubbles:true});d.call(l,o),l.dispatchEvent(f);}},[s,o]),jsx(it.input,{style:{display:"none"},...t,ref:n,defaultValue:o})});Wc.displayName=dy;function uy(e=[],o,t){let a=[...e];return a[t]=o,a.sort((r,n)=>r-n)}function Gc(e,o,t){let n=100/(t-o)*(e-o);return el(n,[0,100])}function cy(e,o){return o>2?`Value ${e+1} of ${o}`:o===2?["Minimum","Maximum"][e]:void 0}function fy(e,o){if(e.length===1)return 0;let t=e.map(r=>Math.abs(r-o)),a=Math.min(...t);return t.indexOf(a)}function my(e,o,t){let a=e/2,n=rl([0,50],[0,a]);return (a-n(o)*t)*t}function py(e){return e.slice(0,-1).map((o,t)=>e[t+1]-o)}function hy(e,o){if(o>0){let t=py(e);return Math.min(...t)>=o}return true}function rl(e,o){return t=>{if(e[0]===e[1]||o[0]===o[1])return o[0];let a=(o[1]-o[0])/(e[1]-e[0]);return o[0]+a*(t-e[0])}}function gy(e){return (String(e).split(".")[1]||"").length}function xy(e,o){let t=Math.pow(10,o);return Math.round(e*t)/t}var Kc=Bc,jc=Hc,_c=Uc,Xc=zc;function Yc({className:e,defaultValue:o,value:t,min:a=0,max:r=100,rangeClassName:n,trackClassName:s,thumbClassName:l,...c}){let i=xe.useMemo(()=>Array.isArray(t)?t:Array.isArray(o)?o:[a,r],[t,o,a,r]);return jsxs(Kc,{"data-slot":"slider",defaultValue:o,value:t,min:a,max:r,className:Ia("relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",e),...c,children:[jsx(jc,{"data-slot":"slider-track",className:Ia("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5",s),children:jsx(_c,{"data-slot":"slider-range",className:Ia("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full",n)})}),Array.from({length:i.length},(d,f)=>jsx(Xc,{"data-slot":"slider-thumb",className:Ia("border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50",l)},f))]})}var yy=[{name:"black",value:"#2D2F50"},{name:"white",value:"#666FEE"},{name:"red",value:"#FF4343"},{name:"blue",value:"#60C75E"},{name:"green",value:"#FFE056"}],wy=({colors:e=yy,showSizeSlider:o=true,showColorPicker:t=true,showBackgroundPicker:a=true,className:r=""})=>{let n=J(l=>l.toolbar.penColor),s=ge();return jsxs("div",{className:`absolute bottom-6 left-1/2 z-50 flex h-fit -translate-x-1/2 transform gap-4 rounded-2xl border bg-white p-6 shadow-2xl ${r}`,children:[o&&jsxs(Fragment,{children:[jsxs("div",{className:"flex flex-col px-4",children:[jsx("p",{className:"mb-4 text-sm font-semibold text-[#00000066]",children:"SIZE"}),jsxs("div",{className:"flex items-center gap-3",children:[jsx("div",{className:"h-3 w-3 rounded-full bg-black"}),jsx(Yc,{defaultValue:[12],max:28,min:6,step:1,className:"w-48",rangeClassName:"bg-[#8290A133]",thumbClassName:"bg-[#8290A1] border-none h-5 w-5",onValueChange:l=>s(ji(l[0]))}),jsx("div",{className:"h-8 w-8 rounded-full bg-black"})]})]}),jsx("div",{className:"h-16 border bg-[#0000001A]"})]}),t&&jsxs(Fragment,{children:[jsxs(Ca,{type:"single",className:"flex gap-3 px-6",children:[e.map(l=>jsx("button",{value:l.value,className:`h-12 w-12 rounded-full border hover:cursor-pointer ${n===l.value?"ring-2 ring-gray-300":""}`,style:{backgroundColor:l.value},onClick:()=>s(Bs(l.value))},l.value)),jsxs("label",{className:"relative flex h-12 w-12 cursor-pointer items-center justify-center rounded-full border border-[#00000033] bg-[#ffff] text-xl text-[#00000033]",children:[jsx("input",{type:"color",className:"absolute inset-0 cursor-pointer opacity-0",onChange:l=>s(Bs(l.target.value))}),"+"]})]}),a&&jsx("div",{className:"h-16 border bg-[#0000001A]"})]}),a&&jsx("div",{className:"flex items-center",children:jsx("label",{className:"relative flex h-12 w-12 cursor-pointer items-center justify-center rounded-full border border-[#00000033] bg-[#ffff] text-xl text-[#00000033]",children:jsx("input",{type:"color",className:"absolute inset-0 cursor-pointer opacity-0",onChange:l=>s(Ys(l.target.value))})})})]})};var Ly="SchooplaEditorDB",Sy=1,So="slides",Zc="schoopla_current_slide_id",Qc=()=>new Promise((e,o)=>{let t=indexedDB.open(Ly,Sy);t.onerror=()=>o(t.error),t.onsuccess=()=>e(t.result),t.onupgradeneeded=a=>{let r=a.target.result;r.objectStoreNames.contains(So)||r.createObjectStore(So,{keyPath:"id"});};}),nl=async e=>{try{console.log("\u{1F4BE} Saving to IndexedDB...",e.length,"slides");let o=await Qc(),a=o.transaction([So],"readwrite").objectStore(So);await new Promise((r,n)=>{let s=a.clear();s.onsuccess=()=>r(!0),s.onerror=()=>n(s.error);});for(let r of e)await new Promise((n,s)=>{let l=a.add(r);l.onsuccess=()=>n(!0),l.onerror=()=>s(l.error);});o.close(),console.log("\u2705 Saved to IndexedDB successfully");}catch(o){console.error("Error saving to IndexedDB:",o);try{localStorage.setItem("schoopla_slides_backup",JSON.stringify(e));}catch(t){console.error("localStorage fallback failed:",t);}}},ef=async()=>{try{console.log("\u{1F4C2} Loading from IndexedDB...");let e=await Qc(),t=e.transaction([So],"readonly").objectStore(So);return new Promise((a,r)=>{let n=t.getAll();n.onsuccess=()=>{e.close();let s=n.result;console.log("\u2705 Loaded from IndexedDB:",s.length,"slides"),s.length>0&&s[0].images&&console.log("First slide images:",s[0].images.map(l=>({id:l.id,width:l.width,height:l.height,x:l.x,y:l.y}))),a(s.length>0?s:null);},n.onerror=()=>{e.close(),r(n.error);};})}catch(e){console.error("Error loading from IndexedDB:",e);try{let o=localStorage.getItem("schoopla_slides_backup");return o?JSON.parse(o):null}catch(o){return console.error("localStorage fallback failed:",o),null}}};var il=e=>{try{localStorage.setItem(Zc,e);}catch(o){console.error("Error saving current slide ID:",o);}},tf=()=>{try{return localStorage.getItem(Zc)}catch(e){return console.error("Error loading current slide ID:",e),null}},af=(e,o)=>{let t=null;return (...a)=>{t&&clearTimeout(t),t=setTimeout(()=>e(...a),o);}};var Iy=["canvas/finalizeDrawing","canvas/setLines","canvas/removeLine","canvas/addImage","canvas/updateImage","canvas/deleteImage","canvas/duplicateImage","canvas/addVideo","canvas/updateVideo","canvas/deleteVideo","canvas/duplicateVideo","canvas/addShape","canvas/updateShape","canvas/deleteShape","canvas/duplicateShape","canvas/addText","canvas/updateText","canvas/deleteText","canvas/duplicateText","canvas/addFlashcard","canvas/updateFlashcard","canvas/deleteFlashcard","canvas/duplicateFlashcard","canvas/addPhotoFrame","canvas/updatePhotoFrame","canvas/deletePhotoFrame","canvas/duplicatePhotoFrame","canvas/toggleImageDrawingMode","canvas/addImageAnnotation","canvas/updateImageAnnotation","canvas/clearImageAnnotations","canvas/togglePhotoFrameDrawingMode","canvas/addPhotoFrameAnnotation","canvas/updatePhotoFrameAnnotation","canvas/clearPhotoFrameAnnotations","canvas/addMultipleChoice","canvas/updateMultipleChoice","canvas/deleteMultipleChoice","canvas/duplicateMultipleChoice","canvas/addTrueFalse","canvas/updateTrueFalse","canvas/deleteTrueFalse","canvas/duplicateTrueFalse","canvas/addShortAnswer","canvas/updateShortAnswer","canvas/deleteShortAnswer","canvas/duplicateShortAnswer","canvas/addLongAnswer","canvas/updateLongAnswer","canvas/deleteLongAnswer","canvas/duplicateLongAnswer","canvas/addFillInTheBlanks","canvas/updateFillInTheBlanks","canvas/deleteFillInTheBlanks","canvas/duplicateFillInTheBlanks","canvas/bringToFront","canvas/sendToBack","canvas/toggleLock","canvas/setLink","canvas/setAltText","canvas/setAudioData","canvas/updateElementOrder","canvas/updateLinePosition","canvas/updateLineTransform","canvas/setBackgroundColor","canvas/addSlide","canvas/deleteSlide","canvas/duplicateSlide","canvas/setCurrentSlide","canvas/updateSlideThumbnail","canvas/reorderSlides"],Cy=["canvas/clearCanvas"],ky=af((e,o)=>{nl(e),il(o);},500),My=(e,o)=>{nl(e),il(o);},ll=false,of=(e=>o=>t=>{if(t.type==="canvas/deleteVideo"&&t.payload){let r=t.payload;Ei(r).catch(n=>{console.error("Error deleting video blob:",n);});}if(t.type==="canvas/deleteSlide"&&t.payload){let r=t.payload,s=e.getState().canvas.slides.find(l=>l.id===r);s&&s.videos&&s.videos.length>0&&s.videos.forEach(l=>{Ei(l.id).catch(c=>{console.error("Error deleting video blob:",c);});});}if(t.type==="canvas/duplicateVideo"&&t.payload){let r=t.payload,n=e.getState(),l=n.canvas.slides.find(c=>c.id===n.canvas.currentSlideId)?.videos.find(c=>c.id===r);l&&l.videoBlob&&setTimeout(()=>{let c=e.getState(),d=c.canvas.slides.find(f=>f.id===c.canvas.currentSlideId)?.videos.find(f=>f.id!==r&&f.x===l.x+20&&f.y===l.y+20);d&&l.videoBlob&&mr(d.id,l.videoBlob,d.thumbnailDataUrl).catch(f=>{console.error("Error saving duplicated video blob:",f);});},0);}let a=o(t);if(t.type&&Cy.includes(t.type)){if(!ll){ll=true;try{let r=e.getState(),{slides:n,currentSlideId:s}=r.canvas;My(n,s);}finally{setTimeout(()=>{ll=false;},0);}}}else if(t.type&&Iy.includes(t.type)){let r=e.getState(),{slides:n,currentSlideId:s}=r.canvas;ky(n,s);}return a});new QueryClient;var Ry=configureStore({reducer:{toolbar:fc,canvas:Il},middleware:e=>e({serializableCheck:false}).concat(of)});var Py=(e,o={})=>{let{format:t="png",quality:a=1,pixelRatio:r=2,fileName:n=`slide-${Date.now()}`}=o;try{let s=t==="png"?"image/png":"image/jpeg",l=e.toDataURL({mimeType:s,quality:a,pixelRatio:r}),c=document.createElement("a");c.download=`${n}.${t}`,c.href=l,document.body.appendChild(c),c.click(),document.body.removeChild(c);}catch(s){throw console.error("Error exporting slide:",s),new Error("Failed to export slide")}},Dy=async(e,o={})=>{let{format:t="png",quality:a=1,pixelRatio:r=2}=o;return new Promise((n,s)=>{try{let l=t==="png"?"image/png":"image/jpeg",c=e.toDataURL({mimeType:l,quality:a,pixelRatio:r});fetch(c).then(i=>i.blob()).then(i=>n(i)).catch(i=>s(i));}catch(l){s(l);}})},Ey=(e,o={})=>{let{format:t="png",quality:a=1,pixelRatio:r=2}=o,n=t==="png"?"image/png":"image/jpeg";return e.toDataURL({mimeType:n,quality:a,pixelRatio:r})};var Fy=(e,o,t)=>{let a=t.x-o.x,r=t.y-o.y;if(a===0&&r===0)return Math.sqrt(Math.pow(e.x-o.x,2)+Math.pow(e.y-o.y,2));let n=a*a+r*r,s=Math.max(0,Math.min(1,((e.x-o.x)*a+(e.y-o.y)*r)/n)),l=o.x+s*a,c=o.y+s*r;return Math.sqrt(Math.pow(e.x-l,2)+Math.pow(e.y-c,2))},dl=(e,o)=>{if(e.length<=2)return e;let t=0,a=0,r=e[0],n=e[e.length-1];for(let s=1;s<e.length-1;s++){let l=Fy(e[s],r,n);l>t&&(t=l,a=s);}if(t>o){let s=dl(e.slice(0,a+1),o),l=dl(e.slice(a),o);return [...s.slice(0,-1),...l]}return [r,n]},By=e=>{let o=[];for(let t=0;t<e.length;t+=2)o.push({x:e[t],y:e[t+1]});return o},Oy=e=>{let o=[];for(let t of e)o.push(t.x,t.y);return o},rf=(e,o=1.5)=>{if(e.length<=4)return e;let t=By(e),a=dl(t,o);return Oy(a)},sf=(e,o=1.5)=>({...e,points:rf(e.points,o)}),Ny=(e,o=1.5)=>e.map(t=>sf(t,o)),Vy=(e,o)=>{let t=e.length/2,a=o.length/2,r=((1-a/t)*100).toFixed(1);return {originalPoints:t,simplifiedPoints:a,reduction:`${r}%`}};var Hy=()=>{let e=Ht();useEffect(()=>{(async()=>{try{let t=await ef(),a=tf();if(t&&t.length>0){let r=await gu(),n=t.map(l=>{if(l.videos&&l.videos.length>0){let c=l.videos.map(i=>{let d=r.get(i.id);if(d){let f=xu(d.blob);return {...i,objectUrl:f,thumbnailDataUrl:d.thumbnailDataUrl,videoBlob:d.blob}}else return i});return {...l,videos:c}}return l}),s=a&&n.find(l=>l.id===a)?a:n[0].id;e(Js({slides:n,currentSlideId:s}));}}catch(t){console.error("Error loading persisted slides:",t);}})();},[e]);};/*! Bundled license information:
|
|
6
|
+
This is for longer responses that require detailed explanations.`,className:"h-full w-full resize-none border-0 bg-white p-3 text-gray-900 focus:outline-none",style:{fontSize:"14px",pointerEvents:d?"none":"auto"}})}),jsx(Group,{y:C+S+U+I+w+P,children:d&&jsxs(Group,{onMouseDown:()=>p("reset"),onMouseUp:()=>{p(null),v();},onMouseLeave:()=>p(null),onTouchStart:()=>p("reset"),onTouchEnd:()=>{p(null),v();},scaleX:c==="reset"?.95:1,scaleY:c==="reset"?.95:1,children:[jsx(Rect,{x:y,width:e.width-y*2,height:48,fill:"#ef4444",cornerRadius:8,onClick:F=>F.cancelBubble=true,onTap:F=>F.cancelBubble=true}),jsx(Text,{x:y,width:e.width-y*2,height:48,text:"Reset",fontSize:16,fontStyle:"bold",fill:"white",align:"center",verticalAlign:"middle",listening:false})]})})]})});Hi.displayName="LongAnswer";var wu=({longAnswer:e,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:s})=>jsx(Fragment,{children:e.map(n=>jsx(Hi,{longAnswer:n,handleSelect:o,handleTransform:t,saRefs:a,onContextMenu:r,handleDragEnd:i=>s(i,n.id)},n.id))});var Ax=({onStageReady:e,onSelectionChange:o,onTextEditingReady:t,onDirectDrawingCanvasReady:a,contextMenuConfig:r}={})=>{let s=Ut(),n=ee(L=>L.toolbar.selectedTool),i=ee(he),f=ee(Vo),l=i?.editingActivity,u=i?.showMcqForm,d=i?.lines||[],m=useRef(null),c=useRef(null),[p,x]=useState(null),[h,v]=useState(""),[g,b]=useState({width:1280,height:1200}),[y,C]=useState("bottom"),S=useRef(null),[I,w]=useState(null),[q,P]=useState(null),[U,D]=useState(null),[F,T]=useState(null),[H,N]=useState(null),[re,V]=useState(null),[W,oe]=useState(null),[R,G]=useState(false),[K,_]=useState(null),[te,Q]=useState(false),Z=useRef(null),be=useRef(null),ve=useRef(null),{debouncedGenerateThumbnail:Ae}=ld(f,m);useEffect(()=>{let L=()=>{if(c.current){let A=c.current.getBoundingClientRect();b({width:A.width,height:A.height});}};L();let M=new ResizeObserver(L);return c.current&&M.observe(c.current),window.addEventListener("resize",L),()=>{M.disconnect(),window.removeEventListener("resize",L);}},[]),useEffect(()=>{if(m.current){let L=m.current.container();L&&(L.style.cursor="");}},[n]);let Y=useCallback(()=>{m.current&&requestAnimationFrame(()=>{if(!m.current)return;m.current.getLayers().forEach(E=>E.batchDraw());let M=1/6,A=m.current.toDataURL({pixelRatio:M});v(A),Ae();});},[Ae]),qe=useRef(f);useEffect(()=>{qe.current!==f&&(qe.current=f,Y());},[f,Y]);let Sa=useRef(null),Cr=useRef(true);useEffect(()=>{if(!i)return;let L=(i.lines?.length||0)+(i.images?.length||0)+(i.videos?.length||0)+(i.shapes?.length||0)+(i.texts?.length||0)+(i.flashcards?.length||0)+(i.photoFrames?.length||0)+(i.multipleChoices?.length||0)+(i.trueFalses?.length||0)+(i.shortAnswers?.length||0)+(i.LongAnswer?.length||0)+(i.fillInTheBlanks?.length||0),M=Sa.current?.count!==L;!Cr.current&&M&&setTimeout(()=>{Y();},100),Sa.current={slideId:f,count:L},Cr.current=false;},[i,f,Y]),useEffect(()=>{m.current&&e&&e(m);},[e]),useEffect(()=>{ve.current&&a&&a(ve);},[a]);let{startDrawing:kr,draw:Mr,stopDrawing:Ar,setCanvasRef:Ka,tool:js,color:_s,strokeWidth:Xs,isSketchMode:Tr}=Bl(Y),Ca=useRef(new Map),{images:$s,getLoadedImage:Ys,imageRefs:ja,handleDragEnd:Rr,handleImageTransformEnd:B}=zl(Y),{videos:se,videoRefs:ye,handleVideoClick:me,handleVideoDragEnd:ne,handleVideoTransformEnd:ie}=Kl(Y),{multipleChoice:Ne,handleMcqTransform:nt,mcqRefs:ht,handleDragEnd:it}=Wl(Y),{trueFalse:Te,handleTrueFalseTransform:$e,trueFalseRefs:qt,handleTrueFalseDragEnd:ka}=Gl(Y),{shortAnswers:_a,saRefs:Ht,handleShortAnswerDragEnd:Pr}=Jl(Y),{longAnswers:Rt,handleLongAnswerDragEnd:ea}=Zl(Y),{fillInTheBlanks:Ma,handleFillInTheBlanksDragEnd:gf}=hu(Y),{transformerRef:de,boundBoxFunc:gt}=rd(),{shapes:xf,shapeRefs:Dr,isDragging:yl,handleShapeDragEnd:bf,handleShapeResizeEnd:vf}=Xl(Y),{texts:To,textRefs:ta,handleDragEnd:yf,handleTransformEnd:wf,handleDoubleClick:Lf,startEditing:Fr,editingTextId:pe,editingValue:wl,handleEditingChange:Ll,finishEditing:Js}=Yl(Y,Z);useEffect(()=>{t&&t(Fr);},[t,Fr]);let Er=ee(L=>L.canvas.editingTextId);useEffect(()=>{Er&&Er!==pe&&Fr(Er);},[Er,pe,Fr]);let{flashcards:If,flashcardRefs:Br,handleDragEnd:Sf,handleFlashcardTransformEnd:Cf,handleNext:kf,handlePrevious:Mf}=ed(Y),{photoFrames:Il,photoFrameRefs:Or,handleDragEnd:Af,handlePhotoFrameTransformEnd:Tf,startCamera:Rf,capturePhoto:Pf,cameraStreams:Df}=od(Y);useEffect(()=>{if(de.current){if(pe){de.current.nodes([]),de.current.getLayer()?.batchDraw();return}if(p&&!se.find(A=>A.id===p)?.isPlaying){let A=Ca.current.get(p)||ja.current.get(p)||ye.current.get(p)||Dr.current.get(p)||ta.current.get(p)||ht.current.get(p)||Br.current.get(p)||Or.current.get(p);if(A){let E=A.attrs?.locked;if(A.visible()&&E!==true){de.current.nodes([A]),de.current.getLayer()?.batchDraw();return}}}de.current.nodes([]),de.current.getLayer()?.batchDraw();}},[p,pe,se,Ca,ja,ye,Dr,ta,Br,Or,Il,ht,de]);let He=useCallback(L=>{x(L),o?.(L);},[o]),Nr=useCallback(()=>{x(null),o?.(null),de.current&&(de.current.nodes([]),de.current.getLayer()?.batchDraw());},[de,o]);useEffect(()=>{let L=de.current;return ()=>{L&&L.nodes([]);}},[f]),useEffect(()=>{let L=M=>{pe&&M.target.tagName!=="TEXTAREA"&&Js();};return document.addEventListener("mousedown",L),()=>{document.removeEventListener("mousedown",L);}},[pe,Js]),useEffect(()=>{let L=pe||p;if(!L||p&&pe){P(null);return}let M=ta.current.get(L),A=m.current;if(!M||!A){P(null);return}let E=A.container().getBoundingClientRect(),Pe=M.absolutePosition(),Ie=A.scaleX();P({x:E.left+(Pe.x+M.width()*Ie/2)*Ie,y:E.top+Pe.y*Ie});},[p,pe,To,ta]),useEffect(()=>{if(!pe){D(null);return}let L=ta.current.get(pe),M=m.current;if(!L||!M){D(null);return}let A=M.container().getBoundingClientRect(),E=L.absolutePosition(),Pe=M.scaleX();D({top:A.top+E.y*Pe,left:A.left+E.x*Pe,scale:Pe});},[pe,To,ta]);let Sl=useCallback(L=>{let M=L.target.getClassName(),A=L.target===L.target.getStage(),E=M==="Transformer"||L.target.getParent()?.getClassName()==="Transformer",Pe=M==="Image",Ie=M==="Text",ae=M==="Group"||L.target.getParent()?.getClassName()==="Group",Pt=M==="Circle"||M==="Star"||M==="RegularPolygon"||M==="Ellipse"||M==="Ring"||M==="Wedge"||M==="Arrow"||M==="Line"||M==="Arc"||M==="Rect"&&L.target.attrs.id,bt=M==="Group";if(console.log("\u{1F5B1}\uFE0F Canvas handleMouseDown:",{targetClass:M,clickedOnImage:Pe,clickedOnGroup:ae,tool:n,targetId:L.target.attrs?.id}),A&&!E&&!Pe&&!Ie&&!ae&&!Pt&&!bt&&Nr(),!(n==="pen"||n==="eraser")&&(Pe||Ie||E||ae||Pt||bt))return;let Ke=L.target.getStage()?.getPointerPosition();if(!Ke)return;["rectangle","circle","ellipse","triangle","polygon","star","ring","wedge","arrow","line","arc"].includes(n)||kr(Ke);},[n,kr,Nr]),Cl=useCallback(L=>{if(yl)return;let M=L.target.getStage()?.getPointerPosition();M&&Mr(M);},[Mr,yl]),kl=useCallback(()=>{Ar();},[Ar]),Ff=useCallback(L=>{Rr(L,Y);},[Rr,Y]),Ef=useCallback(L=>{me(L),He(L);},[me,He]),xt=useCallback((L,M,A)=>{L.preventDefault();let E=L.clientX,Pe=L.clientY,Ie=S.current?.offsetHeight||450,ae=S.current?.offsetWidth||450,Pt=window.innerHeight,bt=window.innerWidth,Ze=E,Ke=Pe;Pe+Ie>Pt&&(Ke=Pe-Ie),E+ae>bt&&(Ze=E-ae),w({x:Ze,y:Ke,elementId:M,elementType:A}),He(M);},[He]),Ml=useCallback(L=>{s(Bo(L)),s(sa(true));},[s]),Bf=useCallback(L=>{s(Po(L)),s(Ta(true));},[s]),Of=useCallback((L,M)=>{if(!I)return;let{elementId:A,elementType:E}=I;switch(L){case "order":if(M){let k=M.target.getBoundingClientRect();T({x:k.right+5,y:k.top,type:"order"});}break;case "lock":if(M){let k=M.target.getBoundingClientRect();T({x:k.right+5,y:k.top,type:"lock"});}break;case "link":if(w(null),E==="line")break;let Pe=i?E==="image"?i.images.find(k=>k.id===A):i.videos.find(k=>k.id===A):null;N({type:"link",defaultValue:Pe?.link||""});break;case "voice":if(w(null),E==="line")break;let Ie=i?E==="image"?i.images.find(k=>k.id===A):E==="video"?i.videos.find(k=>k.id===A):E==="text"?i.texts.find(k=>k.id===A):E==="flashcard"?i.flashcards.find(k=>k.id===A):E==="photoFrame"?i.photoFrames.find(k=>k.id===A):E==="mcq"?i.multipleChoices.find(k=>k.id===A):E==="fillInTheBlanks"?i.fillInTheBlanks.find(k=>k.id===A):E==="longAnswer"?i.LongAnswer.find(k=>k.id===A):E==="shortAnswer"?i.shortAnswers.find(k=>k.id===A):E==="trueFalse"?i.trueFalses.find(k=>k.id===A):E==="shape"?i.shapes.find(k=>k.id===A):null:null;_({elementId:A,elementType:E,existingAudio:Ie?.audioData});break;case "edit":w(null);let ae=null;E==="mcq"?ae=i?.multipleChoices.find(k=>k.id===A):E==="trueFalse"?ae=i?.trueFalses.find(k=>k.id===A):E==="shortAnswer"?ae=i?.shortAnswers.find(k=>k.id===A):E==="longAnswer"?ae=i?.LongAnswer.find(k=>k.id===A):E==="fillInTheBlanks"&&(ae=i?.fillInTheBlanks.find(k=>k.id===A)),ae&&Ml(ae);break;case "editFlashcard":w(null);let Pt=i?.flashcards.find(k=>k.id===A);Pt&&Bf(Pt);break;case "color":w(null);let bt=i?.shapes.find(k=>k.id===A);V({elementId:A,elementType:"shape",defaultColor:bt?.color||"#096B76"});break;case "crop":if(w(null),E==="image"){let k=i?.images.find(Wf=>Wf.id===A);k&&oe({elementId:A,imageSrc:k.src});}break;case "draw":w(null),E==="image"?s(In(A)):E==="photoFrame"&&s(Cn(A));break;case "duplicate":s(ue()),E==="line"?s(Wn(A)):E==="image"?s(qr(A)):E==="video"?s(zr(A)):E==="shape"?s(Wr(A)):E==="text"?s(Gr(A)):E==="flashcard"?s(Kr(A)):E==="photoFrame"?s(jr(A)):E==="mcq"?s(_r(A)):E==="trueFalse"?s(Xr(A)):E==="shortAnswer"?s($r(A)):E==="fillInTheBlanks"?s(Jr(A)):E==="longAnswer"&&s(Yr(A)),Y();break;case "infinite-clone":s(ue());let Ze=5;for(let k=0;k<Ze;k++)E==="image"?s(qr(A)):E==="video"?s(zr(A)):E==="shape"?s(Wr(A)):E==="text"?s(Gr(A)):E==="flashcard"?s(Kr(A)):E==="photoFrame"?s(jr(A)):E==="mcq"?s(_r(A)):E==="trueFalse"?s(Xr(A)):E==="shortAnswer"?s($r(A)):E==="fillInTheBlanks"?s(Jr(A)):E==="longAnswer"&&s(Yr(A));Y();break;case "make-response":if(w(null),E==="line")break;let Ke=`#response-${A}`;s(ue()),s(Zr({id:A,type:E,link:Ke})),(i?E==="image"?i.images.find(k=>k.id===A):E==="video"?i.videos.find(k=>k.id===A):E==="shape"?i.shapes.find(k=>k.id===A):E==="flashcard"?i.flashcards.find(k=>k.id===A):E==="photoFrame"?i.photoFrames.find(k=>k.id===A):i.multipleChoices.find(k=>k.id===A):null)?.altText||s(Qr({id:A,type:E,altText:"Interactive response area"})),Y(),console.log(`Element ${A} marked as interactive response area`);break;case "accessibility":if(w(null),E==="line")break;let O=i?E==="image"?i.images.find(k=>k.id===A):E==="video"?i.videos.find(k=>k.id===A):E==="shape"?i.shapes.find(k=>k.id===A):null:null;N({type:"altText",defaultValue:O?.altText||""});break;case "layers":console.log("Layers button clicked, opening panel..."),w(null),Q(true),console.log("showLayersPanel state set to:",true);break;case "delete":s(ue()),E==="line"?s(zn(A)):E==="image"?s(cn(A)):E==="video"?s(fn(A)):E==="shape"?s(pn(A)):E==="text"?s(gn(A)):E==="flashcard"?s(bn(A)):E==="photoFrame"?s(Ln(A)):E==="mcq"?s(An(A)):E==="trueFalse"?s(Rn(A)):E==="shortAnswer"?s(Dn(A)):E==="longAnswer"?s(En(A)):E==="fillInTheBlanks"&&s(On(A)),Nr(),Y();break}},[I,s,Y,Nr,i,Ml]),Nf=useCallback(()=>{w(null),T(null);},[]),Zs=useCallback(L=>{if(!I)return;let{elementId:M,elementType:A}=I;switch(s(ue()),L){case "bring-to-front":A!=="line"&&s(Vn({id:M,type:A}));break;case "send-to-back":A!=="line"&&s(qn({id:M,type:A}));break;case "lock":case "unlock":A!=="line"&&s(Hn({id:M,type:A}));break}Y(),w(null),T(null);},[I,s,Y]),Vf=useCallback(L=>{if(!I||!H)return;let{elementId:M,elementType:A}=I;s(ue()),H.type==="link"&&A!=="line"?s(Zr({id:M,type:A,link:L})):H.type==="altText"&&A!=="line"&&s(Qr({id:M,type:A,altText:L})),Y(),N(null);},[I,H,s,Y]),qf=useCallback(L=>{if(!K)return;let{elementId:M,elementType:A}=K;s(ue()),s(es({id:M,type:A,audioData:L})),Y(),_(null);},[K,s,Y]),Hf=useCallback(()=>{if(!K)return;let{elementId:L,elementType:M}=K;s(ue()),s(es({id:L,type:M,audioData:""})),Y();},[K,s,Y]),Uf=useCallback(L=>{if(!re)return;let{elementId:M}=re;s(ue()),s($a({id:M,color:L})),Y(),V(null);},[re,s,Y]),zf=useCallback(L=>{if(!W)return;let{elementId:M}=W;s(ue()),s(Xa({id:M,src:L})),Y(),oe(null);},[W,s,Y]);return jsxs("div",{ref:c,className:"fixed inset-0",style:{cursor:n==="pen"?"crosshair":n==="eraser"?"":"default"},children:[n==="pen"&&jsx(Hl,{ref:L=>{if(be.current=L,Ka(L),L){let M=L.getCanvasElement();M&&(ve.current=M,a&&a(ve));}},width:g.width,height:g.height,tool:js,color:_s,strokeWidth:Xs,isSketchMode:Tr}),jsxs(Stage,{ref:m,width:g.width,height:g.height,onMouseDown:Sl,onMouseMove:Cl,onMouseUp:kl,onTouchStart:Sl,onTouchMove:Cl,onTouchEnd:kl,children:[jsx(Layer,{listening:false,children:jsx(Rect,{x:0,y:0,width:g.width,height:g.height,fill:i?.backgroundColor||"white"})}),jsx(Layer,{children:(()=>{let L=[];return d.forEach((M,A)=>{L.push({type:"line",timestamp:M.timestamp||A,element:{...M,id:M.id??`line-${A}`},index:A});}),xf.forEach(M=>{L.push({type:"shape",timestamp:M.timestamp||0,element:M});}),$s.forEach(M=>{L.push({type:"image",timestamp:M.timestamp||0,element:M});}),se.forEach(M=>{L.push({type:"video",timestamp:M.timestamp||0,element:M});}),To.forEach(M=>{L.push({type:"text",timestamp:M.timestamp||0,element:M});}),If.forEach(M=>{L.push({type:"flashcard",timestamp:M.timestamp||0,element:M});}),Il.forEach(M=>{L.push({type:"photoFrame",timestamp:M.timestamp||0,element:M});}),Ne.forEach(M=>{L.push({type:"mcq",timestamp:M.timestamp||0,element:M});}),Te.forEach(M=>{L.push({type:"trueFalse",timestamp:M.timestamp||0,element:M});}),_a.forEach(M=>{L.push({type:"shortAnswer",timestamp:M.timestamp||0,element:M});}),Rt.forEach(M=>{L.push({type:"longAnswer",timestamp:M.timestamp||0,element:M});}),Ma.forEach(M=>{L.push({type:"fillInTheBlanks",timestamp:M.timestamp||0,element:M});}),L.sort((M,A)=>M.timestamp-A.timestamp),L.map((M,A)=>{let E=`${M.type}-${"id"in M.element&&M.element.id||M.index||A}`,Pe="id"in M.element?M.element.id:void 0,Ie=Pe&&p===Pe;switch(M.type){case "line":let ae=M.element,Pt=M.index||0,bt=ae.tool==="eraser",Ze=ae.isSketch&&ae.tool==="pen",Ke=ae.isSketch&&bt,vt=ae.id||`line-${Pt}`;return ae.x===void 0&&(ae.x=0),ae.y===void 0&&(ae.y=0),ae.scaleX===void 0&&(ae.scaleX=1),ae.scaleY===void 0&&(ae.scaleY=1),ae.rotation===void 0&&(ae.rotation=0),n==="eraser"?jsx(Group,{x:ae.x||0,y:ae.y||0,scaleX:ae.scaleX||1,scaleY:ae.scaleY||1,rotation:ae.rotation||0,children:jsx(Line,{points:ae.points||[],stroke:Ze||Ke?void 0:ae.color,strokeWidth:Ze||Ke?0:ae.strokeWidth??0,name:"drawing-line",lineCap:"round",lineJoin:"round",fill:Ze||Ke?bt?"black":ae.color:void 0,closed:Ze||Ke,tension:0,globalCompositeOperation:bt?"destination-out":"source-over",listening:true,onClick:()=>{s(ue()),s(Vr(Pt));},onTap:()=>{s(ue()),s(Vr(Pt));},hitStrokeWidth:Math.max(20,(ae.strokeWidth??0)*2),onMouseEnter:O=>{let k=O.target.getStage();k&&(k.container().style.cursor=`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='%23ff000033' stroke='%23ff0000' stroke-width='2'/%3E%3C/svg%3E") 12 12, pointer`);},onMouseLeave:O=>{let k=O.target.getStage();k&&(k.container().style.cursor=`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E") 12 12, crosshair`);}})},E):jsxs(xe__default.Fragment,{children:[jsx(Group,{id:vt,ref:O=>{O?Ca.current.set(vt,O):Ca.current.delete(vt);},x:ae.x||0,y:ae.y||0,scaleX:ae.scaleX||1,scaleY:ae.scaleY||1,rotation:ae.rotation||0,draggable:n==="select",listening:n==="select",onClick:()=>{n==="select"&&(console.log("Line clicked:",vt),He(vt));},onTap:()=>{n==="select"&&(console.log("Line tapped:",vt),He(vt));},onDragEnd:O=>{s(ue()),s(ts({id:vt,x:O.target.x(),y:O.target.y(),scaleX:O.target.scaleX(),scaleY:O.target.scaleY(),rotation:O.target.rotation()})),Y();},onTransformEnd:O=>{s(ue()),s(ts({id:vt,x:O.target.x(),y:O.target.y(),scaleX:O.target.scaleX(),scaleY:O.target.scaleY(),rotation:O.target.rotation()})),Y();},onMouseEnter:O=>{if(n==="select"){let k=O.target.getStage();k&&(k.container().style.cursor="move");}},onMouseLeave:O=>{if(n==="select"){let k=O.target.getStage();k&&(k.container().style.cursor="default");}},onContextMenu:O=>{let k=O.evt;k.preventDefault(),xt(k,vt,"line");},children:jsx(Line,{points:ae.points||[],stroke:Ze||Ke?void 0:ae.color,strokeWidth:Ze||Ke?0:ae.strokeWidth??0,name:"drawing-line",lineCap:"round",lineJoin:"round",fill:Ze||Ke?bt?"black":ae.color:void 0,closed:Ze||Ke,tension:0,globalCompositeOperation:bt?"destination-out":"source-over",listening:true,hitStrokeWidth:20})}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=Ca.current.get(p);console.log("Line Transformer - selectedId:",p,"node found:",!!k),k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw(),console.log("Line Transformer attached to node"));}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:false,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);case "shape":return jsxs(xe__default.Fragment,{children:[jsx(ri,{onSelect:He,shapes:[M.element],shapeRefs:Dr,handleShapeDragEnd:bf,handleShapeResizeEnd:vf,onContextMenu:xt}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=Dr.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);case "image":return jsxs(xe__default.Fragment,{children:[jsx(ei,{images:[M.element],getLoadedImage:Ys,imageRefs:ja,onDragEnd:Ff,onTransform:B,onSelect:He,onContextMenu:xt}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=ja.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);case "video":return jsxs(xe__default.Fragment,{children:[jsx(oi,{videos:[M.element],selectedId:p,videoRefs:ye,onVideoClick:Ef,onDragEnd:ne,onTransformEnd:ie,onContextMenu:xt}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=ye.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);case "text":return jsxs(xe__default.Fragment,{children:[jsx(vd,{texts:[M.element],textRefs:ta,onDragEnd:yf,onTransformEnd:wf,onSelect:He,onContextMenu:xt,onDoubleClick:Lf,editingTextId:pe,editingValue:wl,onEditingChange:Ll}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=ta.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);case "flashcard":return jsxs(xe__default.Fragment,{children:[jsx(ii,{flashcards:[M.element],flashcardRefs:Br,selectedId:p,onDragEnd:Sf,onTransform:Cf,onSelect:He,onNext:kf,onPrevious:Mf,onContextMenu:xt}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=Br.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);case "photoFrame":return jsxs(xe__default.Fragment,{children:[jsx(fi,{photoFrames:[M.element],photoFrameRefs:Or,selectedId:p,onDragEnd:Af,onTransform:Tf,onSelect:He,onStartCamera:Rf,onCapture:Pf,cameraStreams:Df,onContextMenu:xt}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=Or.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);case "mcq":return jsxs(xe__default.Fragment,{children:[jsx(_d,{handleMcqTransform:nt,multipleChoice:[M.element],handleSelect:He,mcqRefs:ht,handleDragEnd:it,onContextMenu:xt}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=ht.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);case "trueFalse":return jsxs(xe__default.Fragment,{children:[jsx(Yd,{trueFalses:[M.element],handleTrueFalseTransform:$e,handleSelect:He,trueFalseRefs:qt,onContextMenu:xt,handleDragEnd:ka}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=qt.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);case "shortAnswer":return jsxs(xe__default.Fragment,{children:[jsx(pu,{shortAnswers:[M.element],handleSelect:He,handleTransform:nt,saRefs:Ht,onContextMenu:xt,handleDragEnd:Pr}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=Ht.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);case "longAnswer":return jsxs(xe__default.Fragment,{children:[jsx(wu,{longAnswer:[M.element],handleSelect:He,handleTransform:nt,saRefs:Ht,onContextMenu:xt,handleDragEnd:ea}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=Ht.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);case "fillInTheBlanks":return jsxs(xe__default.Fragment,{children:[jsx(vu,{fillInTheBlanks:[M.element],handleSelect:He,handleTransform:nt,onContextMenu:xt,handleDragEnd:gf}),Ie&&!pe&&p&&jsx(Transformer,{ref:O=>{if(O&&de.current!==O){de.current=O;let k=Ht.current.get(p);k&&k.visible()&&(O.nodes([k]),O.getLayer()?.batchDraw());}},boundBoxFunc:gt,borderStroke:"#4A90E2",borderStrokeWidth:2,anchorFill:"#fff",anchorStroke:"#4A90E2",anchorStrokeWidth:2,anchorSize:10,anchorCornerRadius:2,rotateEnabled:true,keepRatio:true,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"]})]},E);default:return null}})})()})]}),I&&r?.enabled!==false&&jsx(Dd,{menuRef:S,x:I.x,y:I.y,type:I.elementType,elementId:I.elementId,onAction:Of,onClose:Nf,isDrawingMode:I.elementType==="image"?i?.images.find(L=>L.id===I.elementId)?.isDrawingMode:I.elementType==="photoFrame"?i?.photoFrames.find(L=>L.id===I.elementId)?.isDrawingMode:false}),F&&I&&jsx(Fd,{x:F.x,y:F.y,items:F.type==="order"?[{label:"Bring to Front",onClick:()=>Zs("bring-to-front")},{label:"Send to Back",onClick:()=>Zs("send-to-back")}]:[{label:i&&(I.elementType==="image"?i.images.find(L=>L.id===I.elementId)?.locked:i.videos.find(L=>L.id===I.elementId)?.locked)?"Unlock":"Lock",onClick:()=>Zs(i&&(I.elementType==="image"?i.images.find(L=>L.id===I.elementId)?.locked:i.videos.find(L=>L.id===I.elementId)?.locked)?"unlock":"lock")}],onClose:()=>T(null)}),H&&jsx(Ed,{title:H.type==="link"?"Add Link":"Add Alt Text",label:H.type==="link"?"URL":"Alternative Text",placeholder:H.type==="link"?"https://example.com":"Describe this image/video",defaultValue:H.defaultValue,onSave:Vf,onClose:()=>N(null)}),re&&jsx(Bd,{defaultColor:re.defaultColor,onConfirm:Uf,onCancel:()=>V(null)}),W&&jsx(qd,{imageSrc:W.imageSrc,onConfirm:zf,onCancel:()=>oe(null)}),R&&jsx(_o,{onClose:()=>G(false),stageRef:m}),K&&jsx(Ud,{elementId:K.elementId,elementType:K.elementType,existingAudio:K.existingAudio,onSave:qf,onDelete:Hf,onClose:()=>_(null)}),te&&jsx(Gd,{selectedElementId:p||void 0,onClose:()=>Q(false),onSelectElement:L=>{He(L),Q(false);}}),i?.images.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),i?.videos.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),i?.shapes?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),i?.texts?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),i?.flashcards?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),i?.photoFrames?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),i?.multipleChoices?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),i?.trueFalses?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),i?.shortAnswers?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),i?.LongAnswer?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),i?.fillInTheBlanks?.filter(L=>L.audioData).map(L=>jsx(Lt,{audioData:L.audioData,x:L.x,y:L.y,width:L.width},`audio-${L.id}`)),u&&jsx(iu,{editElement:l}),q&&(()=>{let L=pe||p;if(!L)return null;let M=To.find(A=>A.id===L);return M?jsx(lu,{text:M,position:q}):null})(),U&&pe&&(()=>{let L=To.find(M=>M.id===pe);return L?jsx(uu,{text:L,editingValue:wl,onEditingChange:Ll,onFinish:Js,position:{top:U.top,left:U.left},scale:U.scale,textareaRef:Z},pe):null})()]})},Tx=Ax;var Rx="SchooplaVideoStorage";var ba="videos",Ui=()=>new Promise((e,o)=>{let t=indexedDB.open(Rx,1);t.onerror=()=>o(t.error),t.onsuccess=()=>e(t.result),t.onupgradeneeded=a=>{let r=a.target.result;r.objectStoreNames.contains(ba)||r.createObjectStore(ba,{keyPath:"id"});};}),hr=async(e,o,t)=>{try{console.log("\u{1F4BE} Saving video blob to IndexedDB:",e);let a=await Ui(),s=a.transaction([ba],"readwrite").objectStore(ba),n={id:e,blob:o,thumbnailDataUrl:t,timestamp:Date.now()};await new Promise((i,f)=>{let l=s.put(n);l.onsuccess=()=>i(!0),l.onerror=()=>f(l.error);}),a.close(),console.log("\u2705 Video blob saved successfully:",e);}catch(a){throw console.error("Error saving video blob to IndexedDB:",a),a}};var Cu=async()=>{try{console.log("\u{1F4C2} Loading all video blobs from IndexedDB...");let e=await Ui(),t=e.transaction([ba],"readonly").objectStore(ba);return new Promise((a,r)=>{let s=t.getAll();s.onsuccess=()=>{e.close();let n=s.result,i=new Map;n.forEach(f=>{i.set(f.id,{blob:f.blob,thumbnailDataUrl:f.thumbnailDataUrl});}),console.log(`\u2705 Loaded ${i.size} video blobs from IndexedDB`),a(i);},s.onerror=()=>{e.close(),r(s.error);};})}catch(e){return console.error("Error loading all video blobs from IndexedDB:",e),new Map}},zi=async e=>{try{console.log("\u{1F5D1}\uFE0F Deleting video blob from IndexedDB:",e);let o=await Ui(),a=o.transaction([ba],"readwrite").objectStore(ba);await new Promise((r,s)=>{let n=a.delete(e);n.onsuccess=()=>r(!0),n.onerror=()=>s(n.error);}),o.close(),console.log("\u2705 Video blob deleted successfully:",e);}catch(o){throw console.error("Error deleting video blob from IndexedDB:",o),o}};var ku=e=>URL.createObjectURL(e);function va(e,o=[]){let t=[];function a(s,n){let i=xe.createContext(n),f=t.length;t=[...t,n];let l=d=>{let{scope:m,children:c,...p}=d,x=m?.[e]?.[f]||i,h=xe.useMemo(()=>p,Object.values(p));return jsx(x.Provider,{value:h,children:c})};l.displayName=s+"Provider";function u(d,m){let c=m?.[e]?.[f]||i,p=xe.useContext(c);if(p)return p;if(n!==void 0)return n;throw new Error(`\`${d}\` must be used within \`${s}\``)}return [l,u]}let r=()=>{let s=t.map(n=>xe.createContext(n));return function(i){let f=i?.[e]||s;return xe.useMemo(()=>({[`__scope${e}`]:{...i,[e]:f}}),[i,f])}};return r.scopeName=e,[a,Dx(r,...o)]}function Dx(...e){let o=e[0];if(e.length===1)return o;let t=()=>{let a=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(s){let n=a.reduce((i,{useScope:f,scopeName:l})=>{let d=f(s)[`__scope${l}`];return {...i,...d}},{});return xe.useMemo(()=>({[`__scope${o.scopeName}`]:n}),[n])}};return t.scopeName=o.scopeName,t}function Mu(e,o){if(typeof e=="function")return e(o);e!=null&&(e.current=o);}function gr(...e){return o=>{let t=false,a=e.map(r=>{let s=Mu(r,o);return !t&&typeof s=="function"&&(t=true),s});if(t)return ()=>{for(let r=0;r<a.length;r++){let s=a[r];typeof s=="function"?s():Mu(e[r],null);}}}}function At(...e){return xe.useCallback(gr(...e),e)}function Ru(e){let o=Fx(e),t=xe.forwardRef((a,r)=>{let{children:s,...n}=a,i=xe.Children.toArray(s),f=i.find(Bx);if(f){let l=f.props.children,u=i.map(d=>d===f?xe.Children.count(l)>1?xe.Children.only(null):xe.isValidElement(l)?l.props.children:null:d);return jsx(o,{...n,ref:r,children:xe.isValidElement(l)?xe.cloneElement(l,void 0,u):null})}return jsx(o,{...n,ref:r,children:s})});return t.displayName=`${e}.Slot`,t}function Fx(e){let o=xe.forwardRef((t,a)=>{let{children:r,...s}=t;if(xe.isValidElement(r)){let n=Nx(r),i=Ox(s,r.props);return r.type!==xe.Fragment&&(i.ref=a?gr(a,n):n),xe.cloneElement(r,i)}return xe.Children.count(r)>1?xe.Children.only(null):null});return o.displayName=`${e}.SlotClone`,o}var Ex=Symbol("radix.slottable");function Bx(e){return xe.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Ex}function Ox(e,o){let t={...o};for(let a in o){let r=e[a],s=o[a];/^on[A-Z]/.test(a)?r&&s?t[a]=(...i)=>{let f=s(...i);return r(...i),f}:r&&(t[a]=r):a==="style"?t[a]={...r,...s}:a==="className"&&(t[a]=[r,s].filter(Boolean).join(" "));}return {...e,...t}}function Nx(e){let o=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning;return t?e.ref:(o=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}var Hx=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],rt=Hx.reduce((e,o)=>{let t=Ru(`Primitive.${o}`),a=xe.forwardRef((r,s)=>{let{asChild:n,...i}=r,f=n?t:o;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=true),jsx(f,{...i,ref:s})});return a.displayName=`Primitive.${o}`,{...e,[o]:a}},{});function _e(e,o,{checkForDefaultPrevented:t=true}={}){return function(r){if(e?.(r),t===false||!r.defaultPrevented)return o?.(r)}}function Wi(e){let o=Ux(e),t=xe.forwardRef((a,r)=>{let{children:s,...n}=a,i=xe.Children.toArray(s),f=i.find(Wx);if(f){let l=f.props.children,u=i.map(d=>d===f?xe.Children.count(l)>1?xe.Children.only(null):xe.isValidElement(l)?l.props.children:null:d);return jsx(o,{...n,ref:r,children:xe.isValidElement(l)?xe.cloneElement(l,void 0,u):null})}return jsx(o,{...n,ref:r,children:s})});return t.displayName=`${e}.Slot`,t}function Ux(e){let o=xe.forwardRef((t,a)=>{let{children:r,...s}=t;if(xe.isValidElement(r)){let n=Kx(r),i=Gx(s,r.props);return r.type!==xe.Fragment&&(i.ref=a?gr(a,n):n),xe.cloneElement(r,i)}return xe.Children.count(r)>1?xe.Children.only(null):null});return o.displayName=`${e}.SlotClone`,o}var zx=Symbol("radix.slottable");function Wx(e){return xe.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===zx}function Gx(e,o){let t={...o};for(let a in o){let r=e[a],s=o[a];/^on[A-Z]/.test(a)?r&&s?t[a]=(...i)=>{let f=s(...i);return r(...i),f}:r&&(t[a]=r):a==="style"?t[a]={...r,...s}:a==="className"&&(t[a]=[r,s].filter(Boolean).join(" "));}return {...e,...t}}function Kx(e){let o=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning;return t?e.ref:(o=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}function Fs(e){let o=e+"CollectionProvider",[t,a]=va(o),[r,s]=t(o,{collectionRef:{current:null},itemMap:new Map}),n=x=>{let{scope:h,children:v}=x,g=xe__default.useRef(null),b=xe__default.useRef(new Map).current;return jsx(r,{scope:h,itemMap:b,collectionRef:g,children:v})};n.displayName=o;let i=e+"CollectionSlot",f=Wi(i),l=xe__default.forwardRef((x,h)=>{let{scope:v,children:g}=x,b=s(i,v),y=At(h,b.collectionRef);return jsx(f,{ref:y,children:g})});l.displayName=i;let u=e+"CollectionItemSlot",d="data-radix-collection-item",m=Wi(u),c=xe__default.forwardRef((x,h)=>{let{scope:v,children:g,...b}=x,y=xe__default.useRef(null),C=At(h,y),S=s(u,v);return xe__default.useEffect(()=>(S.itemMap.set(y,{ref:y,...b}),()=>void S.itemMap.delete(y))),jsx(m,{[d]:"",ref:C,children:g})});c.displayName=u;function p(x){let h=s(e+"CollectionConsumer",x);return xe__default.useCallback(()=>{let g=h.collectionRef.current;if(!g)return [];let b=Array.from(g.querySelectorAll(`[${d}]`));return Array.from(h.itemMap.values()).sort((S,I)=>b.indexOf(S.ref.current)-b.indexOf(I.ref.current))},[h.collectionRef,h.itemMap])}return [{Provider:n,Slot:l,ItemSlot:c},p,a]}var vo=globalThis?.document?xe.useLayoutEffect:()=>{};var jx=xe[" useId ".trim().toString()]||(()=>{}),_x=0;function Eu(e){let[o,t]=xe.useState(jx());return vo(()=>{t(a=>a??String(_x++));},[e]),(o?`radix-${o}`:"")}function Bu(e){let o=xe.useRef(e);return xe.useEffect(()=>{o.current=e;}),xe.useMemo(()=>(...t)=>o.current?.(...t),[])}var Xx=xe[" useInsertionEffect ".trim().toString()]||vo;function Yt({prop:e,defaultProp:o,onChange:t=()=>{},caller:a}){let[r,s,n]=$x({defaultProp:o,onChange:t}),i=e!==void 0,f=i?e:r;{let u=xe.useRef(e!==void 0);xe.useEffect(()=>{let d=u.current;d!==i&&console.warn(`${a} is changing from ${d?"controlled":"uncontrolled"} to ${i?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),u.current=i;},[i,a]);}let l=xe.useCallback(u=>{if(i){let d=Yx(u)?u(e):u;d!==e&&n.current?.(d);}else s(u);},[i,e,s,n]);return [f,l]}function $x({defaultProp:e,onChange:o}){let[t,a]=xe.useState(e),r=xe.useRef(t),s=xe.useRef(o);return Xx(()=>{s.current=o;},[o]),xe.useEffect(()=>{r.current!==t&&(s.current?.(t),r.current=t);},[t,r]),[t,a,s]}function Yx(e){return typeof e=="function"}var Jx=xe.createContext(void 0);function wo(e){let o=xe.useContext(Jx);return e||o||"ltr"}var ji="rovingFocusGroup.onEntryFocus",Zx={bubbles:false,cancelable:true},xr="RovingFocusGroup",[_i,Ou,Qx]=Fs(xr),[eb,Xi]=va(xr,[Qx]),[tb,ab]=eb(xr),Nu=xe.forwardRef((e,o)=>jsx(_i.Provider,{scope:e.__scopeRovingFocusGroup,children:jsx(_i.Slot,{scope:e.__scopeRovingFocusGroup,children:jsx(ob,{...e,ref:o})})}));Nu.displayName=xr;var ob=xe.forwardRef((e,o)=>{let{__scopeRovingFocusGroup:t,orientation:a,loop:r=false,dir:s,currentTabStopId:n,defaultCurrentTabStopId:i,onCurrentTabStopIdChange:f,onEntryFocus:l,preventScrollOnEntryFocus:u=false,...d}=e,m=xe.useRef(null),c=At(o,m),p=wo(s),[x,h]=Yt({prop:n,defaultProp:i??null,onChange:f,caller:xr}),[v,g]=xe.useState(false),b=Bu(l),y=Ou(t),C=xe.useRef(false),[S,I]=xe.useState(0);return xe.useEffect(()=>{let w=m.current;if(w)return w.addEventListener(ji,b),()=>w.removeEventListener(ji,b)},[b]),jsx(tb,{scope:t,orientation:a,dir:p,loop:r,currentTabStopId:x,onItemFocus:xe.useCallback(w=>h(w),[h]),onItemShiftTab:xe.useCallback(()=>g(true),[]),onFocusableItemAdd:xe.useCallback(()=>I(w=>w+1),[]),onFocusableItemRemove:xe.useCallback(()=>I(w=>w-1),[]),children:jsx(rt.div,{tabIndex:v||S===0?-1:0,"data-orientation":a,...d,ref:c,style:{outline:"none",...e.style},onMouseDown:_e(e.onMouseDown,()=>{C.current=true;}),onFocus:_e(e.onFocus,w=>{let q=!C.current;if(w.target===w.currentTarget&&q&&!v){let P=new CustomEvent(ji,Zx);if(w.currentTarget.dispatchEvent(P),!P.defaultPrevented){let U=y().filter(N=>N.focusable),D=U.find(N=>N.active),F=U.find(N=>N.id===x),H=[D,F,...U].filter(Boolean).map(N=>N.ref.current);Hu(H,u);}}C.current=false;}),onBlur:_e(e.onBlur,()=>g(false))})})}),Vu="RovingFocusGroupItem",qu=xe.forwardRef((e,o)=>{let{__scopeRovingFocusGroup:t,focusable:a=true,active:r=false,tabStopId:s,children:n,...i}=e,f=Eu(),l=s||f,u=ab(Vu,t),d=u.currentTabStopId===l,m=Ou(t),{onFocusableItemAdd:c,onFocusableItemRemove:p,currentTabStopId:x}=u;return xe.useEffect(()=>{if(a)return c(),()=>p()},[a,c,p]),jsx(_i.ItemSlot,{scope:t,id:l,focusable:a,active:r,children:jsx(rt.span,{tabIndex:d?0:-1,"data-orientation":u.orientation,...i,ref:o,onMouseDown:_e(e.onMouseDown,h=>{a?u.onItemFocus(l):h.preventDefault();}),onFocus:_e(e.onFocus,()=>u.onItemFocus(l)),onKeyDown:_e(e.onKeyDown,h=>{if(h.key==="Tab"&&h.shiftKey){u.onItemShiftTab();return}if(h.target!==h.currentTarget)return;let v=nb(h,u.orientation,u.dir);if(v!==void 0){if(h.metaKey||h.ctrlKey||h.altKey||h.shiftKey)return;h.preventDefault();let b=m().filter(y=>y.focusable).map(y=>y.ref.current);if(v==="last")b.reverse();else if(v==="prev"||v==="next"){v==="prev"&&b.reverse();let y=b.indexOf(h.currentTarget);b=u.loop?ib(b,y+1):b.slice(y+1);}setTimeout(()=>Hu(b));}}),children:typeof n=="function"?n({isCurrentTabStop:d,hasTabStop:x!=null}):n})})});qu.displayName=Vu;var rb={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function sb(e,o){return o!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function nb(e,o,t){let a=sb(e.key,t);if(!(o==="vertical"&&["ArrowLeft","ArrowRight"].includes(a))&&!(o==="horizontal"&&["ArrowUp","ArrowDown"].includes(a)))return rb[a]}function Hu(e,o=false){let t=document.activeElement;for(let a of e)if(a===t||(a.focus({preventScroll:o}),document.activeElement!==t))return}function ib(e,o){return e.map((t,a)=>e[(o+a)%e.length])}var Uu=Nu,zu=qu;var Gu="Toggle",$i=xe.forwardRef((e,o)=>{let{pressed:t,defaultPressed:a,onPressedChange:r,...s}=e,[n,i]=Yt({prop:t,onChange:r,defaultProp:a??false,caller:Gu});return jsx(rt.button,{type:"button","aria-pressed":n,"data-state":n?"on":"off","data-disabled":e.disabled?"":void 0,...s,ref:o,onClick:_e(e.onClick,()=>{e.disabled||i(!n);})})});$i.displayName=Gu;var ya="ToggleGroup",[ju]=va(ya,[Xi]),_u=Xi(),Yi=xe__default.forwardRef((e,o)=>{let{type:t,...a}=e;if(t==="single")return jsx(ub,{...a,ref:o});if(t==="multiple")return jsx(cb,{...a,ref:o});throw new Error(`Missing prop \`type\` expected on \`${ya}\``)});Yi.displayName=ya;var[Xu,$u]=ju(ya),ub=xe__default.forwardRef((e,o)=>{let{value:t,defaultValue:a,onValueChange:r=()=>{},...s}=e,[n,i]=Yt({prop:t,defaultProp:a??"",onChange:r,caller:ya});return jsx(Xu,{scope:e.__scopeToggleGroup,type:"single",value:xe__default.useMemo(()=>n?[n]:[],[n]),onItemActivate:i,onItemDeactivate:xe__default.useCallback(()=>i(""),[i]),children:jsx(Yu,{...s,ref:o})})}),cb=xe__default.forwardRef((e,o)=>{let{value:t,defaultValue:a,onValueChange:r=()=>{},...s}=e,[n,i]=Yt({prop:t,defaultProp:a??[],onChange:r,caller:ya}),f=xe__default.useCallback(u=>i((d=[])=>[...d,u]),[i]),l=xe__default.useCallback(u=>i((d=[])=>d.filter(m=>m!==u)),[i]);return jsx(Xu,{scope:e.__scopeToggleGroup,type:"multiple",value:n,onItemActivate:f,onItemDeactivate:l,children:jsx(Yu,{...s,ref:o})})});Yi.displayName=ya;var[fb,mb]=ju(ya),Yu=xe__default.forwardRef((e,o)=>{let{__scopeToggleGroup:t,disabled:a=false,rovingFocus:r=true,orientation:s,dir:n,loop:i=true,...f}=e,l=_u(t),u=wo(n),d={role:"group",dir:u,...f};return jsx(fb,{scope:t,rovingFocus:r,disabled:a,children:r?jsx(Uu,{asChild:true,...l,orientation:s,dir:u,loop:i,children:jsx(rt.div,{...d,ref:o})}):jsx(rt.div,{...d,ref:o})})}),Os="ToggleGroupItem",pb=xe__default.forwardRef((e,o)=>{let t=$u(Os,e.__scopeToggleGroup),a=mb(Os,e.__scopeToggleGroup),r=_u(e.__scopeToggleGroup),s=t.value.includes(e.value),n=a.disabled||e.disabled,i={...e,pressed:s,disabled:n},f=xe__default.useRef(null);return a.rovingFocus?jsx(zu,{asChild:true,...r,focusable:!n,active:s,ref:f,children:jsx(Ku,{...i,ref:o})}):jsx(Ku,{...i,ref:o})});pb.displayName=Os;var Ku=xe__default.forwardRef((e,o)=>{let{__scopeToggleGroup:t,value:a,...r}=e,s=$u(Os,t),n={role:"radio","aria-checked":e.pressed,"aria-pressed":void 0},i=s.type==="single"?n:void 0;return jsx($i,{...i,...r,ref:o,onPressedChange:f=>{f?s.onItemActivate(a):s.onItemDeactivate(a);}})}),Ju=Yi;function Zu(e){var o,t,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(o=0;o<r;o++)e[o]&&(t=Zu(e[o]))&&(a&&(a+=" "),a+=t);}else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}function Ns(){for(var e,o,t=0,a="",r=arguments.length;t<r;t++)(e=arguments[t])&&(o=Zu(e))&&(a&&(a+=" "),a+=o);return a}var gb=(e,o)=>{let t=new Array(e.length+o.length);for(let a=0;a<e.length;a++)t[a]=e[a];for(let a=0;a<o.length;a++)t[e.length+a]=o[a];return t},xb=(e,o)=>({classGroupId:e,validator:o}),oc=(e=new Map,o=null,t)=>({nextPart:e,validators:o,classGroupId:t});var Qu=[],bb="arbitrary..",vb=e=>{let o=wb(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:a}=e;return {getClassGroupId:n=>{if(n.startsWith("[")&&n.endsWith("]"))return yb(n);let i=n.split("-"),f=i[0]===""&&i.length>1?1:0;return rc(i,f,o)},getConflictingClassGroupIds:(n,i)=>{if(i){let f=a[n],l=t[n];return f?l?gb(l,f):f:l||Qu}return t[n]||Qu}}},rc=(e,o,t)=>{if(e.length-o===0)return t.classGroupId;let r=e[o],s=t.nextPart.get(r);if(s){let l=rc(e,o+1,s);if(l)return l}let n=t.validators;if(n===null)return;let i=o===0?e.join("-"):e.slice(o).join("-"),f=n.length;for(let l=0;l<f;l++){let u=n[l];if(u.validator(i))return u.classGroupId}},yb=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let o=e.slice(1,-1),t=o.indexOf(":"),a=o.slice(0,t);return a?bb+a:void 0})(),wb=e=>{let{theme:o,classGroups:t}=e;return Lb(t,o)},Lb=(e,o)=>{let t=oc();for(let a in e){let r=e[a];Qi(r,t,a,o);}return t},Qi=(e,o,t,a)=>{let r=e.length;for(let s=0;s<r;s++){let n=e[s];Ib(n,o,t,a);}},Ib=(e,o,t,a)=>{if(typeof e=="string"){Sb(e,o,t);return}if(typeof e=="function"){Cb(e,o,t,a);return}kb(e,o,t,a);},Sb=(e,o,t)=>{let a=e===""?o:sc(o,e);a.classGroupId=t;},Cb=(e,o,t,a)=>{if(Mb(e)){Qi(e(a),o,t,a);return}o.validators===null&&(o.validators=[]),o.validators.push(xb(t,e));},kb=(e,o,t,a)=>{let r=Object.entries(e),s=r.length;for(let n=0;n<s;n++){let[i,f]=r[n];Qi(f,sc(o,i),t,a);}},sc=(e,o)=>{let t=e,a=o.split("-"),r=a.length;for(let s=0;s<r;s++){let n=a[s],i=t.nextPart.get(n);i||(i=oc(),t.nextPart.set(n,i)),t=i;}return t},Mb=e=>"isThemeGetter"in e&&e.isThemeGetter===true,Ab=e=>{if(e<1)return {get:()=>{},set:()=>{}};let o=0,t=Object.create(null),a=Object.create(null),r=(s,n)=>{t[s]=n,o++,o>e&&(o=0,a=t,t=Object.create(null));};return {get(s){let n=t[s];if(n!==void 0)return n;if((n=a[s])!==void 0)return r(s,n),n},set(s,n){s in t?t[s]=n:r(s,n);}}};var Tb=[],ec=(e,o,t,a,r)=>({modifiers:e,hasImportantModifier:o,baseClassName:t,maybePostfixModifierPosition:a,isExternal:r}),Rb=e=>{let{prefix:o,experimentalParseClassName:t}=e,a=r=>{let s=[],n=0,i=0,f=0,l,u=r.length;for(let x=0;x<u;x++){let h=r[x];if(n===0&&i===0){if(h===":"){s.push(r.slice(f,x)),f=x+1;continue}if(h==="/"){l=x;continue}}h==="["?n++:h==="]"?n--:h==="("?i++:h===")"&&i--;}let d=s.length===0?r:r.slice(f),m=d,c=false;d.endsWith("!")?(m=d.slice(0,-1),c=true):d.startsWith("!")&&(m=d.slice(1),c=true);let p=l&&l>f?l-f:void 0;return ec(s,c,m,p)};if(o){let r=o+":",s=a;a=n=>n.startsWith(r)?s(n.slice(r.length)):ec(Tb,false,n,void 0,true);}if(t){let r=a;a=s=>t({className:s,parseClassName:r});}return a},Pb=e=>{let o=new Map;return e.orderSensitiveModifiers.forEach((t,a)=>{o.set(t,1e6+a);}),t=>{let a=[],r=[];for(let s=0;s<t.length;s++){let n=t[s],i=n[0]==="[",f=o.has(n);i||f?(r.length>0&&(r.sort(),a.push(...r),r=[]),a.push(n)):r.push(n);}return r.length>0&&(r.sort(),a.push(...r)),a}},Db=e=>({cache:Ab(e.cacheSize),parseClassName:Rb(e),sortModifiers:Pb(e),...vb(e)}),Fb=/\s+/,Eb=(e,o)=>{let{parseClassName:t,getClassGroupId:a,getConflictingClassGroupIds:r,sortModifiers:s}=o,n=[],i=e.trim().split(Fb),f="";for(let l=i.length-1;l>=0;l-=1){let u=i[l],{isExternal:d,modifiers:m,hasImportantModifier:c,baseClassName:p,maybePostfixModifierPosition:x}=t(u);if(d){f=u+(f.length>0?" "+f:f);continue}let h=!!x,v=a(h?p.substring(0,x):p);if(!v){if(!h){f=u+(f.length>0?" "+f:f);continue}if(v=a(p),!v){f=u+(f.length>0?" "+f:f);continue}h=false;}let g=m.length===0?"":m.length===1?m[0]:s(m).join(":"),b=c?g+"!":g,y=b+v;if(n.indexOf(y)>-1)continue;n.push(y);let C=r(v,h);for(let S=0;S<C.length;++S){let I=C[S];n.push(b+I);}f=u+(f.length>0?" "+f:f);}return f},Bb=(...e)=>{let o=0,t,a,r="";for(;o<e.length;)(t=e[o++])&&(a=nc(t))&&(r&&(r+=" "),r+=a);return r},nc=e=>{if(typeof e=="string")return e;let o,t="";for(let a=0;a<e.length;a++)e[a]&&(o=nc(e[a]))&&(t&&(t+=" "),t+=o);return t},Ob=(e,...o)=>{let t,a,r,s,n=f=>{let l=o.reduce((u,d)=>d(u),e());return t=Db(l),a=t.cache.get,r=t.cache.set,s=i,i(f)},i=f=>{let l=a(f);if(l)return l;let u=Eb(f,t);return r(f,u),u};return s=n,(...f)=>s(Bb(...f))},Nb=[],Oe=e=>{let o=t=>t[e]||Nb;return o.isThemeGetter=true,o},ic=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,lc=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Vb=/^\d+\/\d+$/,qb=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Hb=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ub=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,zb=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Wb=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Lo=e=>Vb.test(e),le=e=>!!e&&!Number.isNaN(Number(e)),wa=e=>!!e&&Number.isInteger(Number(e)),Ji=e=>e.endsWith("%")&&le(e.slice(0,-1)),Jt=e=>qb.test(e),Gb=()=>true,Kb=e=>Hb.test(e)&&!Ub.test(e),dc=()=>false,jb=e=>zb.test(e),_b=e=>Wb.test(e),Xb=e=>!X(e)&&!$(e),$b=e=>Io(e,fc,dc),X=e=>ic.test(e),za=e=>Io(e,mc,Kb),Zi=e=>Io(e,ev,le),tc=e=>Io(e,uc,dc),Yb=e=>Io(e,cc,_b),Vs=e=>Io(e,pc,jb),$=e=>lc.test(e),br=e=>So(e,mc),Jb=e=>So(e,tv),ac=e=>So(e,uc),Zb=e=>So(e,fc),Qb=e=>So(e,cc),qs=e=>So(e,pc,true),Io=(e,o,t)=>{let a=ic.exec(e);return a?a[1]?o(a[1]):t(a[2]):false},So=(e,o,t=false)=>{let a=lc.exec(e);return a?a[1]?o(a[1]):t:false},uc=e=>e==="position"||e==="percentage",cc=e=>e==="image"||e==="url",fc=e=>e==="length"||e==="size"||e==="bg-size",mc=e=>e==="length",ev=e=>e==="number",tv=e=>e==="family-name",pc=e=>e==="shadow";var av=()=>{let e=Oe("color"),o=Oe("font"),t=Oe("text"),a=Oe("font-weight"),r=Oe("tracking"),s=Oe("leading"),n=Oe("breakpoint"),i=Oe("container"),f=Oe("spacing"),l=Oe("radius"),u=Oe("shadow"),d=Oe("inset-shadow"),m=Oe("text-shadow"),c=Oe("drop-shadow"),p=Oe("blur"),x=Oe("perspective"),h=Oe("aspect"),v=Oe("ease"),g=Oe("animate"),b=()=>["auto","avoid","all","avoid-page","page","left","right","column"],y=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],C=()=>[...y(),$,X],S=()=>["auto","hidden","clip","visible","scroll"],I=()=>["auto","contain","none"],w=()=>[$,X,f],q=()=>[Lo,"full","auto",...w()],P=()=>[wa,"none","subgrid",$,X],U=()=>["auto",{span:["full",wa,$,X]},wa,$,X],D=()=>[wa,"auto",$,X],F=()=>["auto","min","max","fr",$,X],T=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],H=()=>["start","end","center","stretch","center-safe","end-safe"],N=()=>["auto",...w()],re=()=>[Lo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...w()],V=()=>[e,$,X],W=()=>[...y(),ac,tc,{position:[$,X]}],oe=()=>["no-repeat",{repeat:["","x","y","space","round"]}],R=()=>["auto","cover","contain",Zb,$b,{size:[$,X]}],G=()=>[Ji,br,za],K=()=>["","none","full",l,$,X],_=()=>["",le,br,za],te=()=>["solid","dashed","dotted","double"],Q=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Z=()=>[le,Ji,ac,tc],be=()=>["","none",p,$,X],ve=()=>["none",le,$,X],Ae=()=>["none",le,$,X],Y=()=>[le,$,X],qe=()=>[Lo,"full",...w()];return {cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Jt],breakpoint:[Jt],color:[Gb],container:[Jt],"drop-shadow":[Jt],ease:["in","out","in-out"],font:[Xb],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Jt],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Jt],shadow:[Jt],spacing:["px",le],text:[Jt],"text-shadow":[Jt],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Lo,X,$,h]}],container:["container"],columns:[{columns:[le,X,$,i]}],"break-after":[{"break-after":b()}],"break-before":[{"break-before":b()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:C()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:I()}],"overscroll-x":[{"overscroll-x":I()}],"overscroll-y":[{"overscroll-y":I()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:q()}],"inset-x":[{"inset-x":q()}],"inset-y":[{"inset-y":q()}],start:[{start:q()}],end:[{end:q()}],top:[{top:q()}],right:[{right:q()}],bottom:[{bottom:q()}],left:[{left:q()}],visibility:["visible","invisible","collapse"],z:[{z:[wa,"auto",$,X]}],basis:[{basis:[Lo,"full","auto",i,...w()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[le,Lo,"auto","initial","none",X]}],grow:[{grow:["",le,$,X]}],shrink:[{shrink:["",le,$,X]}],order:[{order:[wa,"first","last","none",$,X]}],"grid-cols":[{"grid-cols":P()}],"col-start-end":[{col:U()}],"col-start":[{"col-start":D()}],"col-end":[{"col-end":D()}],"grid-rows":[{"grid-rows":P()}],"row-start-end":[{row:U()}],"row-start":[{"row-start":D()}],"row-end":[{"row-end":D()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":F()}],"auto-rows":[{"auto-rows":F()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...T(),"normal"]}],"justify-items":[{"justify-items":[...H(),"normal"]}],"justify-self":[{"justify-self":["auto",...H()]}],"align-content":[{content:["normal",...T()]}],"align-items":[{items:[...H(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...H(),{baseline:["","last"]}]}],"place-content":[{"place-content":T()}],"place-items":[{"place-items":[...H(),"baseline"]}],"place-self":[{"place-self":["auto",...H()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:N()}],mx:[{mx:N()}],my:[{my:N()}],ms:[{ms:N()}],me:[{me:N()}],mt:[{mt:N()}],mr:[{mr:N()}],mb:[{mb:N()}],ml:[{ml:N()}],"space-x":[{"space-x":w()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":w()}],"space-y-reverse":["space-y-reverse"],size:[{size:re()}],w:[{w:[i,"screen",...re()]}],"min-w":[{"min-w":[i,"screen","none",...re()]}],"max-w":[{"max-w":[i,"screen","none","prose",{screen:[n]},...re()]}],h:[{h:["screen","lh",...re()]}],"min-h":[{"min-h":["screen","lh","none",...re()]}],"max-h":[{"max-h":["screen","lh",...re()]}],"font-size":[{text:["base",t,br,za]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[a,$,Zi]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Ji,X]}],"font-family":[{font:[Jb,X,o]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,$,X]}],"line-clamp":[{"line-clamp":[le,"none",$,Zi]}],leading:[{leading:[s,...w()]}],"list-image":[{"list-image":["none",$,X]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",$,X]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:V()}],"text-color":[{text:V()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...te(),"wavy"]}],"text-decoration-thickness":[{decoration:[le,"from-font","auto",$,za]}],"text-decoration-color":[{decoration:V()}],"underline-offset":[{"underline-offset":[le,"auto",$,X]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:w()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",$,X]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",$,X]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:W()}],"bg-repeat":[{bg:oe()}],"bg-size":[{bg:R()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},wa,$,X],radial:["",$,X],conic:[wa,$,X]},Qb,Yb]}],"bg-color":[{bg:V()}],"gradient-from-pos":[{from:G()}],"gradient-via-pos":[{via:G()}],"gradient-to-pos":[{to:G()}],"gradient-from":[{from:V()}],"gradient-via":[{via:V()}],"gradient-to":[{to:V()}],rounded:[{rounded:K()}],"rounded-s":[{"rounded-s":K()}],"rounded-e":[{"rounded-e":K()}],"rounded-t":[{"rounded-t":K()}],"rounded-r":[{"rounded-r":K()}],"rounded-b":[{"rounded-b":K()}],"rounded-l":[{"rounded-l":K()}],"rounded-ss":[{"rounded-ss":K()}],"rounded-se":[{"rounded-se":K()}],"rounded-ee":[{"rounded-ee":K()}],"rounded-es":[{"rounded-es":K()}],"rounded-tl":[{"rounded-tl":K()}],"rounded-tr":[{"rounded-tr":K()}],"rounded-br":[{"rounded-br":K()}],"rounded-bl":[{"rounded-bl":K()}],"border-w":[{border:_()}],"border-w-x":[{"border-x":_()}],"border-w-y":[{"border-y":_()}],"border-w-s":[{"border-s":_()}],"border-w-e":[{"border-e":_()}],"border-w-t":[{"border-t":_()}],"border-w-r":[{"border-r":_()}],"border-w-b":[{"border-b":_()}],"border-w-l":[{"border-l":_()}],"divide-x":[{"divide-x":_()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":_()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...te(),"hidden","none"]}],"divide-style":[{divide:[...te(),"hidden","none"]}],"border-color":[{border:V()}],"border-color-x":[{"border-x":V()}],"border-color-y":[{"border-y":V()}],"border-color-s":[{"border-s":V()}],"border-color-e":[{"border-e":V()}],"border-color-t":[{"border-t":V()}],"border-color-r":[{"border-r":V()}],"border-color-b":[{"border-b":V()}],"border-color-l":[{"border-l":V()}],"divide-color":[{divide:V()}],"outline-style":[{outline:[...te(),"none","hidden"]}],"outline-offset":[{"outline-offset":[le,$,X]}],"outline-w":[{outline:["",le,br,za]}],"outline-color":[{outline:V()}],shadow:[{shadow:["","none",u,qs,Vs]}],"shadow-color":[{shadow:V()}],"inset-shadow":[{"inset-shadow":["none",d,qs,Vs]}],"inset-shadow-color":[{"inset-shadow":V()}],"ring-w":[{ring:_()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:V()}],"ring-offset-w":[{"ring-offset":[le,za]}],"ring-offset-color":[{"ring-offset":V()}],"inset-ring-w":[{"inset-ring":_()}],"inset-ring-color":[{"inset-ring":V()}],"text-shadow":[{"text-shadow":["none",m,qs,Vs]}],"text-shadow-color":[{"text-shadow":V()}],opacity:[{opacity:[le,$,X]}],"mix-blend":[{"mix-blend":[...Q(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Q()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[le]}],"mask-image-linear-from-pos":[{"mask-linear-from":Z()}],"mask-image-linear-to-pos":[{"mask-linear-to":Z()}],"mask-image-linear-from-color":[{"mask-linear-from":V()}],"mask-image-linear-to-color":[{"mask-linear-to":V()}],"mask-image-t-from-pos":[{"mask-t-from":Z()}],"mask-image-t-to-pos":[{"mask-t-to":Z()}],"mask-image-t-from-color":[{"mask-t-from":V()}],"mask-image-t-to-color":[{"mask-t-to":V()}],"mask-image-r-from-pos":[{"mask-r-from":Z()}],"mask-image-r-to-pos":[{"mask-r-to":Z()}],"mask-image-r-from-color":[{"mask-r-from":V()}],"mask-image-r-to-color":[{"mask-r-to":V()}],"mask-image-b-from-pos":[{"mask-b-from":Z()}],"mask-image-b-to-pos":[{"mask-b-to":Z()}],"mask-image-b-from-color":[{"mask-b-from":V()}],"mask-image-b-to-color":[{"mask-b-to":V()}],"mask-image-l-from-pos":[{"mask-l-from":Z()}],"mask-image-l-to-pos":[{"mask-l-to":Z()}],"mask-image-l-from-color":[{"mask-l-from":V()}],"mask-image-l-to-color":[{"mask-l-to":V()}],"mask-image-x-from-pos":[{"mask-x-from":Z()}],"mask-image-x-to-pos":[{"mask-x-to":Z()}],"mask-image-x-from-color":[{"mask-x-from":V()}],"mask-image-x-to-color":[{"mask-x-to":V()}],"mask-image-y-from-pos":[{"mask-y-from":Z()}],"mask-image-y-to-pos":[{"mask-y-to":Z()}],"mask-image-y-from-color":[{"mask-y-from":V()}],"mask-image-y-to-color":[{"mask-y-to":V()}],"mask-image-radial":[{"mask-radial":[$,X]}],"mask-image-radial-from-pos":[{"mask-radial-from":Z()}],"mask-image-radial-to-pos":[{"mask-radial-to":Z()}],"mask-image-radial-from-color":[{"mask-radial-from":V()}],"mask-image-radial-to-color":[{"mask-radial-to":V()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":y()}],"mask-image-conic-pos":[{"mask-conic":[le]}],"mask-image-conic-from-pos":[{"mask-conic-from":Z()}],"mask-image-conic-to-pos":[{"mask-conic-to":Z()}],"mask-image-conic-from-color":[{"mask-conic-from":V()}],"mask-image-conic-to-color":[{"mask-conic-to":V()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:W()}],"mask-repeat":[{mask:oe()}],"mask-size":[{mask:R()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",$,X]}],filter:[{filter:["","none",$,X]}],blur:[{blur:be()}],brightness:[{brightness:[le,$,X]}],contrast:[{contrast:[le,$,X]}],"drop-shadow":[{"drop-shadow":["","none",c,qs,Vs]}],"drop-shadow-color":[{"drop-shadow":V()}],grayscale:[{grayscale:["",le,$,X]}],"hue-rotate":[{"hue-rotate":[le,$,X]}],invert:[{invert:["",le,$,X]}],saturate:[{saturate:[le,$,X]}],sepia:[{sepia:["",le,$,X]}],"backdrop-filter":[{"backdrop-filter":["","none",$,X]}],"backdrop-blur":[{"backdrop-blur":be()}],"backdrop-brightness":[{"backdrop-brightness":[le,$,X]}],"backdrop-contrast":[{"backdrop-contrast":[le,$,X]}],"backdrop-grayscale":[{"backdrop-grayscale":["",le,$,X]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[le,$,X]}],"backdrop-invert":[{"backdrop-invert":["",le,$,X]}],"backdrop-opacity":[{"backdrop-opacity":[le,$,X]}],"backdrop-saturate":[{"backdrop-saturate":[le,$,X]}],"backdrop-sepia":[{"backdrop-sepia":["",le,$,X]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",$,X]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[le,"initial",$,X]}],ease:[{ease:["linear","initial",v,$,X]}],delay:[{delay:[le,$,X]}],animate:[{animate:["none",g,$,X]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[x,$,X]}],"perspective-origin":[{"perspective-origin":C()}],rotate:[{rotate:ve()}],"rotate-x":[{"rotate-x":ve()}],"rotate-y":[{"rotate-y":ve()}],"rotate-z":[{"rotate-z":ve()}],scale:[{scale:Ae()}],"scale-x":[{"scale-x":Ae()}],"scale-y":[{"scale-y":Ae()}],"scale-z":[{"scale-z":Ae()}],"scale-3d":["scale-3d"],skew:[{skew:Y()}],"skew-x":[{"skew-x":Y()}],"skew-y":[{"skew-y":Y()}],transform:[{transform:[$,X,"","none","gpu","cpu"]}],"transform-origin":[{origin:C()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:qe()}],"translate-x":[{"translate-x":qe()}],"translate-y":[{"translate-y":qe()}],"translate-z":[{"translate-z":qe()}],"translate-none":["translate-none"],accent:[{accent:V()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:V()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",$,X]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",$,X]}],fill:[{fill:["none",...V()]}],"stroke-w":[{stroke:[le,br,za,Zi]}],stroke:[{stroke:["none",...V()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var hc=Ob(av);function La(...e){return hc(Ns(e))}var rv=xe.createContext({size:"default",variant:"default",spacing:0});function Ia({className:e,variant:o,size:t,spacing:a=2,children:r,...s}){return jsx(Ju,{"data-slot":"toggle-group","data-variant":o,"data-size":t,"data-spacing":a,style:{gap:`${a*.25}rem`},className:La("group/toggle-group flex w-fit items-center rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs",e),...s,children:jsx(rv.Provider,{value:{variant:o,size:t,spacing:a},children:r})})}var nv={selectedTool:"select",penColor:"#000000",strokeWidth:12,fontSize:24,fontFamily:"Arial",fontStyle:"normal",fontWeight:"normal",textDecoration:"",textColor:"#000000"},yc=createSlice({name:"toolbar",initialState:nv,reducers:{setTool:(e,o)=>{e.selectedTool=o.payload;},setPenColor:(e,o)=>{e.penColor=o.payload;},setStrokeWidth:(e,o)=>{e.strokeWidth=o.payload;},setFontSize:(e,o)=>{e.fontSize=o.payload;},setFontFamily:(e,o)=>{e.fontFamily=o.payload;},setFontStyle:(e,o)=>{e.fontStyle=o.payload;},setFontWeight:(e,o)=>{e.fontWeight=o.payload;},setTextDecoration:(e,o)=>{e.textDecoration=o.payload;},setTextColor:(e,o)=>{e.textColor=o.payload;}}}),{setTool:Ot,setPenColor:Hs,setStrokeWidth:tl,setFontSize:uT,setFontFamily:cT,setFontStyle:fT,setFontWeight:mT,setTextDecoration:pT,setTextColor:hT}=yc.actions,wc=yc.reducer;var Lc=({onClose:e,onRecordingComplete:o})=>{let[t,a]=useState(false),[r,s]=useState(null),[n,i]=useState(0),[f,l]=useState(null),[u,d]=useState(false),m=useRef(null),c=useRef([]),p=useRef(null),x=useRef(null),h=useRef(null);useEffect(()=>((async()=>{try{let I=await navigator.mediaDevices.getUserMedia({video:{width:{ideal:320},height:{ideal:240},facingMode:"user"},audio:!1});l(I),d(!0),h.current&&(h.current.srcObject=I);}catch(I){console.error("Error accessing camera:",I),alert("Failed to access camera. Please grant camera permission.");}})(),()=>{p.current&&clearInterval(p.current),f&&f.getTracks().forEach(I=>I.stop());}),[]);let v=()=>{f&&(f.getTracks().forEach(S=>S.stop()),l(null),d(false));},g=async()=>{try{let S=null,I=null;try{S=await navigator.mediaDevices.getUserMedia({video:{width:{ideal:1280},height:{ideal:720},facingMode:"user"},audio:!1});}catch(D){console.error("Error accessing camera for recording:",D),alert("Failed to access camera for recording.");return}try{I=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0}});}catch(D){console.warn("Microphone access denied:",D);}let w=[...S.getVideoTracks()];I&&w.push(...I.getAudioTracks());let q=new MediaStream(w),P="video/webm";MediaRecorder.isTypeSupported("video/webm;codecs=vp9,opus")?P="video/webm;codecs=vp9,opus":MediaRecorder.isTypeSupported("video/webm;codecs=vp8,opus")?P="video/webm;codecs=vp8,opus":MediaRecorder.isTypeSupported("video/webm;codecs=vp9")?P="video/webm;codecs=vp9":MediaRecorder.isTypeSupported("video/webm;codecs=vp8")&&(P="video/webm;codecs=vp8");let U=new MediaRecorder(q,{mimeType:P,videoBitsPerSecond:25e5});m.current=U,c.current=[],U.ondataavailable=D=>{D.data.size>0&&c.current.push(D.data);},U.onstop=()=>{let D=new Blob(c.current,{type:P}),F=document.createElement("video");F.src=URL.createObjectURL(D),F.muted=!0,F.currentTime=.1,F.onseeked=()=>{let T=document.createElement("canvas");T.width=F.videoWidth,T.height=F.videoHeight;let H=T.getContext("2d");H&&(H.drawImage(F,0,0),x.current=T.toDataURL("image/jpeg",.8)),URL.revokeObjectURL(F.src);},q.getTracks().forEach(T=>T.stop()),S&&S.getTracks().forEach(T=>T.stop()),I&&I.getTracks().forEach(T=>T.stop()),p.current&&clearInterval(p.current),s(D),v();},U.onerror=D=>{console.error("MediaRecorder error:",D);},U.start(1e3),a(!0),i(0),p.current=setInterval(()=>{i(D=>D+1);},1e3);}catch(S){console.error("Error starting camera recording:",S),alert("Failed to start recording. Please check permissions.");}},b=()=>{m.current&&t&&(m.current.state!=="inactive"&&(m.current.requestData(),setTimeout(()=>{m.current&&m.current.state!=="inactive"&&m.current.stop();},100)),a(false));},y=()=>{if(r){let S=URL.createObjectURL(r),I=document.createElement("a");I.href=S,I.download=`camera-recording-${Date.now()}.webm`,document.body.appendChild(I),I.click(),document.body.removeChild(I),URL.revokeObjectURL(S);}},C=S=>{let I=Math.floor(S/60),w=S%60;return `${I.toString().padStart(2,"0")}:${w.toString().padStart(2,"0")}`};return jsx("div",{className:"fixed inset-0 flex items-center justify-center",children:jsxs("div",{className:"relative w-full max-w-2xl overflow-hidden rounded-2xl shadow-2xl",children:[jsx("button",{onClick:e,className:"absolute top-4 right-4 z-10 rounded-full bg-white/90 p-2 text-gray-600 transition-colors hover:bg-white hover:text-gray-900",children:jsx(X$1,{className:"h-5 w-5"})}),jsxs("div",{className:"relative aspect-video bg-gray-900",children:[!r&&jsxs(Fragment,{children:[jsx("video",{ref:h,autoPlay:true,muted:true,playsInline:true,className:"h-full w-full object-cover"}),!t&&jsxs(Fragment,{children:[jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:jsx("button",{onClick:g,disabled:!u,className:"flex h-20 w-20 items-center justify-center rounded-full bg-blue-500 text-white shadow-2xl transition-all hover:scale-110 hover:bg-blue-600 disabled:cursor-not-allowed disabled:opacity-50",children:jsx(Record,{className:"h-10 w-10",weight:"fill"})})}),!u&&jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 text-center",children:jsx("p",{className:"text-lg font-medium text-white",children:"Click to start camera"})})]}),t&&jsxs("div",{className:"absolute inset-0 flex items-center justify-center",children:[jsx("button",{onClick:b,className:"flex h-20 w-20 items-center justify-center rounded-full bg-red-600 text-white shadow-2xl transition-all hover:scale-110 hover:bg-red-700",children:jsx(Stop,{className:"h-10 w-10",weight:"fill"})}),jsxs("div",{className:"absolute top-6 left-1/2 flex -translate-x-1/2 items-center gap-2 rounded-full bg-black/70 px-4 py-2 backdrop-blur-sm",children:[jsx("div",{className:"h-2 w-2 animate-pulse rounded-full bg-red-600"}),jsx("span",{className:"font-mono text-sm font-semibold text-white",children:C(n)})]})]})]}),r&&jsxs(Fragment,{children:[jsx("video",{src:URL.createObjectURL(r),controls:true,className:"h-full w-full object-cover"}),jsxs("div",{className:"absolute right-0 bottom-0 left-0 bg-linear-to-t from-black/80 via-black/50 to-transparent p-6",children:[jsxs("p",{className:"mb-3 text-center text-sm text-white/80",children:["Duration: ",C(n)]}),jsxs("div",{className:"flex gap-2",children:[jsx("button",{onClick:()=>{s(null),i(0);},className:"flex-1 rounded-lg border-2 border-white/30 bg-white/10 px-4 py-2 text-sm font-medium text-white backdrop-blur-sm transition-colors hover:bg-white/20",children:"Re-record"}),jsxs("button",{onClick:y,className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-blue-600 px-4 py-2 text-white transition-colors hover:bg-blue-700",children:[jsx(Download,{className:"h-4 w-4"}),"Download"]}),jsx("button",{onClick:()=>{o&&r&&x.current&&(o(r,x.current),e());},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-green-600 px-4 py-2 text-white transition-colors hover:bg-green-700",children:"Add to Canvas"})]})]})]})]})]})})};var Zt=40,Sc=({onConfirm:e,onCancel:o,editingFlashcard:t})=>{let[a,r]=useState(t?.images||[]),[s,n]=useState(t?.order||"sequential"),[i,f]=useState(false),l=useRef(null),u=useRef(null);useEffect(()=>{let g=b=>{b.key==="Escape"&&o();};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[o]);let d=g=>{let b=g.target.files;if(!b||b.length===0)return;let y=Zt-a.length;if(y<=0){alert(`You can only upload a maximum of ${Zt} images`);return}let C=Array.from(b).slice(0,y);C.length<b.length&&alert(`Only ${y} more images can be added (max ${Zt} total)`);let S=C.map(I=>new Promise((w,q)=>{let P=new FileReader;P.onload=U=>{U.target?.result?w(U.target.result):q(new Error("Failed to read file"));},P.onerror=q,P.readAsDataURL(I);}));Promise.all(S).then(I=>{r(w=>[...w,...I]),u.current&&(u.current.value="");});},m=g=>{g.preventDefault(),f(false);let b=Array.from(g.dataTransfer.files).filter(I=>I.type.startsWith("image/"));if(b.length===0)return;let y=Zt-a.length;if(y<=0){alert(`You can only upload a maximum of ${Zt} images`);return}let C=b.slice(0,y);C.length<b.length&&alert(`Only ${y} more images can be added (max ${Zt} total)`);let S=C.map(I=>new Promise((w,q)=>{let P=new FileReader;P.onload=U=>{U.target?.result?w(U.target.result):q(new Error("Failed to read file"));},P.onerror=q,P.readAsDataURL(I);}));Promise.all(S).then(I=>{r(w=>[...w,...I]);});},c=g=>{g.preventDefault(),f(true);},p=()=>{f(false);},x=g=>{r(b=>b.filter((y,C)=>C!==g));},v=jsx("div",{className:"pointer-events-none fixed inset-0 z-100 flex items-center justify-center bg-black/50",onMouseDown:g=>{g.target===g.currentTarget&&o(),g.stopPropagation();},onMouseUp:g=>g.stopPropagation(),onMouseMove:g=>g.stopPropagation(),onTouchStart:g=>g.stopPropagation(),onTouchMove:g=>g.stopPropagation(),onTouchEnd:g=>g.stopPropagation(),children:jsxs("div",{ref:l,className:"pointer-events-auto max-h-[90vh] w-[650px] max-w-[90vw] overflow-hidden rounded-lg border border-gray-300 bg-white py-1 shadow-xl",onClick:g=>g.stopPropagation(),children:[jsxs("div",{className:"px-6 pt-4 pb-2",children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("h3",{className:"text-xl font-bold text-[#000000CC]",children:t?"Edit Flashcard":"Create Flashcard"}),jsx("button",{onClick:o,className:"cursor-pointer text-[#00000099]",children:jsx(X$1,{size:20,weight:"bold"})})]}),jsx("p",{className:"text-sm font-normal text-[#00000099]",children:"Add images to create an interactive study set."})]}),jsxs("form",{onSubmit:g=>{if(g.preventDefault(),a.length<2){alert("Please upload at least 2 images for the flashcard");return}e(a,s,t?.id);},className:"overflow-y-auto p-6",style:{maxHeight:"calc(90vh - 140px)"},children:[jsxs("div",{className:"space-y-6",children:[jsxs("div",{children:[jsxs("label",{className:"mb-2 flex items-center justify-between text-sm font-medium text-[#000000CC]",children:[jsxs("span",{className:"flex items-center gap-2 text-[#00000099] uppercase",children:[jsx(Image$1,{size:16}),"Upload Images"]}),jsx("span",{className:"flex items-center gap-1 rounded-full bg-[#0000000A] px-2 py-1 text-xs text-[#00000099]",children:a.length>=Zt?jsxs("span",{className:"flex items-center gap-1 text-amber-600",children:[jsx(Warning,{size:12,weight:"fill"}),"Max ",Zt," images"]}):jsxs("span",{children:[a.length,"/",Zt," images"]})})]}),jsx("input",{ref:u,type:"file",accept:"image/*",multiple:true,onChange:d,className:"hidden",id:"flashcard-file-input"}),jsxs("label",{htmlFor:"flashcard-file-input",onDrop:m,onDragOver:c,onDragLeave:p,className:`flex cursor-pointer flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-8 transition-colors ${i?"border-black bg-gray-50":"border-gray-300 bg-white hover:border-gray-400 hover:bg-gray-50"}`,children:[jsx("div",{className:"flex items-center justify-center rounded-lg bg-[#EBF6F7] p-4",children:jsx(CloudArrowUp$1,{size:24,weight:"fill",color:"#096B76"})}),jsxs("div",{className:"text-center",children:[jsx("p",{className:"text-sm font-medium text-gray-900",children:i?"Drop your images here":"Click to upload or drag & drop"}),jsx("p",{className:"mt-1 text-xs text-gray-500",children:"PNG, JPG, GIF \xB7 Up to 10MB each \xB7 Minimum 2 images"})]})]})]}),jsxs("div",{children:[jsxs("label",{className:"mb-2 flex items-center justify-between gap-2 px-2 text-sm font-medium text-[#00000099]",children:[jsx("div",{className:"flex items-center gap-2 text-[#00000099] uppercase",children:"Display Order"}),jsx("p",{className:"rounded-full bg-[#0000000A] px-2 py-1 text-xs text-[#00000099]",children:"Required"})]}),jsxs("div",{className:"grid grid-cols-2 gap-3",children:[jsx("button",{type:"button",onClick:()=>n("sequential"),className:`cursor-pointer rounded-lg border-2 p-4 transition-all ${s==="sequential"?"border-primary/80 text-black":"border-gray-200 bg-white text-gray-900 hover:border-gray-300"}`,children:jsxs("div",{className:"flex flex-col items-start gap-2",children:[jsx("div",{className:`rounded bg-[#0000000A] p-2 ${s==="sequential"?"bg-primary/8 text-primary":""}`,children:jsx(ArrowsDownUp,{size:20})}),jsxs("div",{className:"text-left",children:[jsx("p",{className:"text-sm font-medium",children:"Sequential"}),jsx("p",{className:"mt-0.5 text-xs opacity-70",children:"Students navigate through cards in a fixed, specific order."})]})]})}),jsx("button",{type:"button",onClick:()=>n("random"),className:`cursor-pointer rounded-lg border-2 p-4 transition-all ${s==="random"?"border-primary/80 text-black":"border-gray-200 bg-white text-gray-900 hover:border-gray-300"}`,children:jsxs("div",{className:"flex flex-col items-start gap-2",children:[jsx("div",{className:`rounded bg-[#0000000A] p-2 ${s==="random"?"bg-primary/8 text-primary":""}`,children:jsx(Shuffle,{size:20})}),jsxs("div",{className:"text-left",children:[jsx("p",{className:"text-sm font-medium",children:"Random"}),jsx("p",{className:"mt-0.5 text-xs opacity-70",children:"Students navigate through cards in a fixed, specific order."})]})]})})]})]}),a.length>0&&jsxs("div",{children:[jsxs("label",{className:"mb-2 flex items-center justify-between px-2 text-sm font-medium text-gray-900",children:[jsx("span",{className:"flex items-center gap-2 text-[#00000099] uppercase",children:"Your Cards"}),jsxs("span",{className:"rounded-full bg-[#0000000A] px-2 py-1 text-xs text-[#00000099]",children:[a.length," card",a.length!==1?"s":""]})]}),jsx("div",{className:"grid max-h-72 grid-cols-3 gap-3 overflow-y-auto rounded-lg p-3",children:a.map((g,b)=>jsxs("div",{className:"group relative aspect-square overflow-hidden rounded-lg border border-gray-300 bg-white",children:[jsx("img",{src:g,alt:`Flashcard ${b+1}`,className:"h-full w-full object-cover"}),jsx("button",{type:"button",onClick:()=>x(b),className:"absolute top-1 right-1 rounded bg-red-500 p-1 text-white opacity-0 transition-opacity group-hover:opacity-100 hover:bg-red-600",children:jsx(Trash,{size:12,weight:"bold"})}),jsx("div",{className:"bg-primary absolute bottom-1 left-1 flex h-5 w-5 items-center justify-center rounded text-xs font-medium text-white opacity-0 transition-opacity group-hover:opacity-100",children:b+1})]},b))})]}),a.length<2&&jsx("div",{className:"rounded-lg border border-gray-300 bg-gray-50 px-4 py-3",children:jsx("p",{className:"text-sm text-gray-700",children:"Upload at least 2 images to create your flashcard deck"})})]}),jsxs("div",{className:"mt-6 flex gap-3",children:[jsx("button",{type:"button",onClick:o,className:"flex-1 cursor-pointer rounded-lg border border-gray-300 bg-white px-4 py-2.5 text-sm font-medium text-gray-900 transition-colors hover:bg-gray-50",children:"Cancel"}),jsx("button",{type:"submit",disabled:a.length<2,className:"bg-primary hover:bg-primary/90 flex-1 cursor-pointer rounded-lg px-4 py-2.5 text-sm font-medium text-white transition-colors disabled:cursor-not-allowed disabled:bg-gray-300 disabled:text-gray-500",children:t?"Save Changes":"Create Flashcard"})]})]})]})});return createPortal(v,document.body)};var Us={tools:{select:true,pen:true,eraser:true,text:true,shapes:true,activities:true,media:true},actions:{undo:true,redo:true,screenRecord:true,cameraRecord:true,clear:true}},wv={enabled:true};function rl(e){return e?{tools:{...Us.tools,...e.tools},actions:{...Us.actions,...e.actions}}:Us}var Lv={tools:{select:true,pen:false,eraser:false,text:false,shapes:false,activities:false,media:false},actions:{undo:false,redo:false,screenRecord:false,cameraRecord:false,clear:false}},Iv={tools:{select:true,pen:true,eraser:true,text:true,shapes:true,activities:false,media:["image"]},actions:{undo:true,redo:true,screenRecord:false,cameraRecord:false,clear:true}};var Yv=({isOpen:e,onClose:o,onScreenRecord:t,stageRef:a,onTextAdded:r,showToggleButton:s=true,config:n}={})=>{let i=ge(),f=ee(B=>B.canvas.slides.find(se=>se.id===B.canvas.currentSlideId)),l=f?.videos||[],u=f?.editingFlashcard,d=ee(B=>B.toolbar.selectedTool),m=ee(B=>B.toolbar.penColor),c=f?.showMcqForm,p=f?.showFlashcardForm,x=useMemo(()=>rl(n),[n]),{tools:h,actions:v}=x,g=l.some(B=>B.isRecorded&&B.isPlaying),b=ee(B=>B.toolbar.fontSize),y=ee(B=>B.toolbar.fontFamily),C=ee(B=>B.toolbar.fontStyle),S=ee(B=>B.toolbar.fontWeight),I=ee(B=>B.toolbar.textDecoration),w=ee(B=>B.toolbar.textColor),[q,P]=useState(false),[U,D]=useState(false),[F,T]=useState(false),[H,N]=useState(false),[re,V]=useState(false),[W,oe]=useState(true),G=useRef(null),K=useRef(null),te=[{name:"select",icon:Cursor,label:"Select",configKey:"select"},{name:"pen",icon:PenNib,label:"Pen",configKey:"pen"},{name:"eraser",icon:Eraser,label:"Eraser",configKey:"eraser"},{name:"text",icon:TextAa,label:"Text",configKey:"text"},{name:"shapes",icon:Shapes,label:"Shapes",configKey:"shapes"},{name:"activities",icon:Cards,label:"Activities",configKey:"activities"},{name:"image",icon:Image$1,label:"Media",configKey:"media"}],Q=useMemo(()=>te.filter(B=>{let se=h[B.configKey];return typeof se=="boolean"?se:Array.isArray(se)?se.length>0:true}),[h]),Z=[{name:"rectangle",icon:Square,label:"Rect"},{name:"circle",icon:Circle$1,label:"Circle"},{name:"ellipse",icon:Circle$1,label:"Ellipse"},{name:"triangle",icon:Triangle,label:"Tri"},{name:"polygon",icon:Hexagon,label:"Hex"},{name:"star",icon:Star$1,label:"Star"},{name:"ring",icon:Circle$1,label:"Ring"},{name:"wedge",icon:Pizza,label:"Wedge"},{name:"arrow",icon:ArrowRight,label:"Arrow"},{name:"line",icon:LineSegment,label:"Line"},{name:"arc",icon:Circuitry,label:"Arc"}],be=useMemo(()=>{let B=h.shapes;return B===false?[]:B===true?Z:Array.isArray(B)?Z.filter(se=>B.includes(se.name)):Z},[h.shapes]),ve=[{name:"multiple-choice",icon:ListBullets,label:"MCQ"},{name:"true-false",icon:ToggleRight,label:"True-False"},{name:"short-answer",icon:Textbox,label:"Short Answer"},{name:"fill-in-the-blank",icon:TextUnderline,label:"Fill in the Blank"}],Ae=useMemo(()=>{let B=h.activities;return B===false?[]:B===true?ve:Array.isArray(B)?ve.filter(se=>B.includes(se.name)):ve},[h.activities]),Y=useMemo(()=>{let B=h.media;return B===false?{photoFrame:false,image:false,video:false}:B===true?{photoFrame:true,image:true,video:true}:Array.isArray(B)?{photoFrame:B.includes("photo-frame"),image:B.includes("image"),video:B.includes("video")}:{photoFrame:true,image:true,video:true}},[h.media]),qe=useMemo(()=>{let B=h.activities;return B===false?false:B===true?true:Array.isArray(B)?B.includes("flashcard"):true},[h.activities]),Sa=B=>{let se=B.target.files;!se||se.length===0||(i(Ot("select")),i(lt(false)),N(false),Array.from(se).forEach(ye=>{let me=new FileReader;me.onload=ne=>{let ie=new window.Image;ie.src=ne.target?.result,ie.onload=()=>{let Ne=ie.width/ie.height,nt=300,ht=300,it=ie.width,Te=ie.height;it>nt&&(it=nt,Te=it/Ne),Te>ht&&(Te=ht,it=Te*Ne),i(ue());let $e=(window.innerWidth-it)/2,qt=(window.innerHeight-Te)/2;i(un({id:v4(),src:ie.src,x:$e,y:qt,width:it,height:Te,draggable:true,rotation:0}));};},me.readAsDataURL(ye);}),B.target.value="");},Cr=async B=>{let se=B.target.files;if(!(!se||se.length===0)){console.log("files",B),i(Ot("select")),i(lt(false)),N(false);for(let ye of Array.from(se))try{let me=URL.createObjectURL(ye),ne=document.createElement("video");console.log("video",ne),ne.src=me,ne.muted=!0,ne.playsInline=!0,ne.preload="auto",ne.load(),await new Promise((Rt,ea)=>{let Ma=setTimeout(()=>ea(new Error("Metadata load timeout")),1e4);ne.onloadedmetadata=()=>{clearTimeout(Ma),Rt();},ne.onerror=()=>{clearTimeout(Ma),ea(new Error("Failed to load video"));};}),console.log("Video metadata loaded:",{duration:ne.duration,width:ne.videoWidth,height:ne.videoHeight}),await new Promise((Rt,ea)=>{let Ma=setTimeout(()=>ea(new Error("Video load timeout")),1e4);ne.readyState>=2?(clearTimeout(Ma),Rt()):ne.onloadeddata=()=>{clearTimeout(Ma),Rt();};});let ie=Math.min(.8,ne.duration/2);console.log("Seeking to:",ie),ne.currentTime=ie,await new Promise(Rt=>{let ea=setTimeout(()=>{console.warn("Seek timeout, proceeding anyway"),Rt();},5e3);ne.onseeked=()=>{clearTimeout(ea),console.log("Seek completed"),Rt();};});let Ne=document.createElement("canvas"),nt=ne.videoWidth/ne.videoHeight,ht=400,it=400,Te=ne.videoWidth,$e=ne.videoHeight;Te>ht&&(Te=ht,$e=Te/nt),$e>it&&($e=it,Te=$e*nt),Ne.width=Te,Ne.height=$e;let qt=Ne.getContext("2d",{willReadFrequently:!1});if(!qt)throw new Error("Failed to get canvas context");if(await new Promise(Rt=>setTimeout(Rt,100)),ne.videoWidth===0||ne.videoHeight===0)throw new Error("Video dimensions are invalid");console.log("Drawing video to canvas:",{width:Te,height:$e}),qt.drawImage(ne,0,0,Te,$e);let ka=Ne.toDataURL("image/jpeg",.8);console.log("Thumbnail generated, length:",ka.length),i(ue());let _a=(window.innerWidth-Te)/2,Ht=(window.innerHeight-$e)/2,Pr=v4();await hr(Pr,ye,ka),i(Hr({id:Pr,objectUrl:me,thumbnailDataUrl:ka,videoBlob:ye,x:_a,y:Ht,width:Te,height:$e,draggable:!0,isPlaying:!1,rotation:0})),ne.src="",ne.load(),console.log(`Video uploaded: ${ye.name}`);}catch(me){console.error("Error processing video:",me),alert(`Failed to process video: ${ye.name}`);}B.target.value="";}},kr=(B,se,ye)=>{i(ue()),i(Ot("select")),i(lt(false));let me=300,ne=300,ie=(window.innerWidth-me)/2,Ne=(window.innerHeight-ne)/2;i(ye?Ya({id:ye,images:B,order:se,x:ie,y:Ne,width:me,height:ne,rotation:0,draggable:true}):xn({id:`flashcard-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,images:B,currentIndex:0,order:se,x:ie,y:Ne,width:me,height:ne,rotation:0,draggable:true})),i(Ta(false));},Mr=()=>{i(ue()),i(Ot("select")),i(lt(false));let B=400,se=300,ye=(window.innerWidth-B)/2,me=(window.innerHeight-se)/2;i(wn({id:`photoframe-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,x:ye,y:me,width:B,height:se,rotation:0,draggable:true,isCapturing:false})),V(false);},Ar=B=>{let me=(window.innerWidth-100)/2,ne=(window.innerHeight-100)/2,ie={};switch(B.name){case "circle":case "ring":case "wedge":case "arc":ie.radius=50,(B.name==="ring"||B.name==="arc")&&(ie.innerRadius=25,ie.outerRadius=50),(B.name==="wedge"||B.name==="arc")&&(ie.angle=B.name==="wedge"?60:90);break;case "ellipse":ie.radiusX=60,ie.radiusY=40;break;case "triangle":ie.radius=50,ie.sides=3;break;case "polygon":ie.radius=50,ie.sides=6;break;case "star":ie.innerRadius=25,ie.outerRadius=50,ie.numPoints=5;break;case "arrow":case "line":ie.points=[0,0,100,0],B.name==="arrow"&&(ie.pointerLength=10,ie.pointerWidth=10);break}let Ne={id:`shape-${Date.now()}`,type:B.name,x:me,y:ne,width:100,height:100,rotation:0,color:m,...ie};i(ue()),i(lt(false)),i(Ot(B.name)),i(mn(Ne));},Ka=B=>{if(i(Ot(B)),B==="select")i(lt(false));else if(B==="text"){i(lt(false)),i(ue());let se=200,ye=50,me=(window.innerWidth-se)/2,ne=(window.innerHeight-ye)/2,ie=`text-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;i(hn({id:ie,text:"",x:me,y:ne,width:se,height:ye,rotation:0,draggable:true,fontSize:b,fontFamily:y,fontStyle:C,fontWeight:S,textDecoration:I,fill:w,align:"left"})),setTimeout(()=>{i(No(ie));},100),r&&r(ie);}else i(lt(true));},js=()=>{i(Gn()),i(Ot("select")),i(lt(false));},_s=()=>{t?t():a?P(true):alert("Screen recording requires a stageRef prop. Please pass the stageRef from Canvas to the Toolbar component.");},Xs=()=>{D(true);},Tr=async(B,se)=>{try{i(Ot("select")),i(lt(!1));let ye=URL.createObjectURL(B),me=document.createElement("video");me.src=ye,me.muted=!0,me.playsInline=!0,me.preload="auto",await new Promise((ka,_a)=>{let Ht=setTimeout(()=>_a(new Error("Metadata load timeout")),1e4);me.onloadedmetadata=()=>{clearTimeout(Ht),ka();},me.onerror=()=>{clearTimeout(Ht),_a(new Error("Failed to load video"));};});let ne=640,ie=me.videoWidth/me.videoHeight,Ne=ne,nt=Ne/ie,ht=window.innerWidth,it=window.innerHeight;i(ue());let Te=(ht-Ne)/2,$e=(it-nt)/2,qt=v4();await hr(qt,B,se),i(Hr({id:qt,objectUrl:ye,thumbnailDataUrl:se,videoBlob:B,x:Te,y:$e,width:Ne,height:nt,draggable:!0,isPlaying:!1,rotation:0,isRecorded:!1})),P(!1),D(!1);}catch(ye){console.error("Error adding recorded video to canvas:",ye),alert("Failed to add video to canvas. Please try again.");}},Ca=B=>{i(Ot("select")),i(lt(false)),i(Bo(null)),B&&i(Nn(B)),i(sa(!c));},$s=()=>{i(Po(null)),i(Ta(true)),V(false);},Ys=()=>{T(!F);},ja=()=>{N(!H);},Rr=()=>{V(!re);};return g?null:jsx("div",{className:"konva-editor-root",children:jsxs("div",{className:"fixed top-1/2 z-50 flex -translate-y-1/2 flex-col justify-center gap-8 p-4",children:[jsxs("div",{className:"flex items-center",children:[jsx(Ia,{type:"single",className:"flex flex-col gap-1 border bg-white p-1 shadow-xl",children:Q.map((B,se)=>jsx("div",{title:B.label,className:`hover:bg-primary/10 mb-1 cursor-pointer rounded-md px-4 py-3 ${B.name===d?"bg-primary/10":""}`,onClick:()=>{if(B.name==="image"){ja(),T(false),V(false),Ka(B.name);return}else if(B.name==="shapes"){Ys(),N(false),V(false),Ka(B.name);return}else if(B.name==="activities"){Ka(B.name),Rr(),T(false),N(false);return}Ka(B.name),T(false),N(false),V(false);},children:jsx(B.icon,{weight:"fill",size:24,className:"text-primary"})},se))}),F&&jsx(Ia,{type:"single",className:"mx-1 grid h-fit grid-cols-2 border bg-white p-1 shadow-xl",children:be.map((B,se)=>jsx("div",{title:B.name,className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",onClick:()=>Ar(B),children:jsx(B.icon,{weight:"fill",size:24,className:"text-primary"})},se))}),H&&jsxs(Ia,{type:"single",className:"mx-1 mt-auto grid grid-cols-2 bg-white p-2 shadow-2xl",children:[Y.photoFrame&&jsx("div",{title:"Photo frame",onClick:Mr,className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",children:jsx(CameraPlus,{weight:"fill",size:24,className:"text-primary"})}),Y.image&&jsx("div",{onClick:()=>G.current?.click(),className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",children:jsx(Image$1,{weight:"fill",size:24,className:"text-primary"})}),Y.video&&jsx("div",{onClick:()=>K.current?.click(),className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",children:jsx(MonitorPlay,{weight:"fill",size:24,className:"text-primary"})})]}),re&&jsxs(Ia,{type:"single",className:"mx-1 mt-auto grid grid-cols-2 gap-2 bg-white p-2 shadow-2xl",children:[qe&&jsx("div",{title:"Flashcard",onClick:()=>$s(),className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",children:jsx(Cards,{weight:"fill",size:24,className:"text-primary"})}),Ae.map((B,se)=>jsx("div",{title:B.label,onClick:()=>Ca(B.name),className:"hover:bg-primary/10 cursor-pointer rounded-md p-3",children:jsx(B.icon,{weight:"fill",size:24,className:"text-primary"})},se))]})]}),jsx("input",{ref:G,type:"file",accept:"image/*",multiple:true,className:"hidden",onChange:Sa}),jsx("input",{ref:K,type:"file",accept:"video/*",className:"hidden",onChange:Cr}),!t&&q&&a&&jsx(_o,{onClose:()=>P(false),stageRef:a,onRecordingComplete:Tr}),U&&jsx(Lc,{onClose:()=>D(false),onRecordingComplete:Tr}),p&&jsx(Sc,{editingFlashcard:u,onConfirm:kr,onCancel:()=>i(Ta(false))}),(v.undo||v.redo||v.screenRecord||v.cameraRecord||v.clear)&&jsxs(Ia,{type:"single",className:"flex flex-col border bg-white p-1 shadow-xl",children:[v.undo&&jsx("button",{value:"undo",onClick:()=>i(Kn()),className:"hover:bg-primary/10 text-primary cursor-pointer rounded-md px-4 py-3",title:"Undo",children:jsx(ArrowCounterClockwise,{size:24,weight:"bold"})}),v.redo&&jsx("button",{value:"redo",onClick:()=>i(jn()),className:"hover:bg-primary/10 text-primary cursor-pointer rounded-md px-4 py-3",title:"Redo",children:jsx(ArrowClockwise,{size:24,weight:"bold"})}),v.screenRecord&&jsx("button",{value:"screen-record",onClick:_s,className:"hover:bg-primary/10 cursor-pointer rounded-md px-4 py-3 text-[#2260DD]",title:"Screen Record",children:jsx(Record,{size:24,weight:"bold"})}),v.cameraRecord&&jsx("button",{value:"camera-record",onClick:Xs,className:"hover:bg-primary/10 cursor-pointer rounded-md px-4 py-3 text-[#804FF2]",title:"Camera Record",children:jsx(Camera,{size:24,weight:"fill"})}),v.clear&&jsx("button",{value:"clear",onClick:()=>js(),className:"hover:bg-primary/10 cursor-pointer rounded-md px-4 py-3 text-[#E92222]",title:"Clear",children:jsx(Trash,{size:24,weight:"bold"})})]})]})})},Jv=Yv;var ll=({onPublish:e,label:o="Publish Slides",className:t})=>{let a=aa(qo),n=(aa(p=>p.canvas.slides.find(x=>x.id===p.canvas.currentSlideId))?.videos||[]).some(p=>p.isRecorded&&p.isPlaying),[i,f]=useState(false),[l,u]=useState(null),[d,m]=useState(null),c=async()=>{if(a.length===0){m({type:"error",message:"No slides to publish"});return}if(!e){m({type:"error",message:"No publish handler provided"});return}f(true),m(null);try{let p=await e(a,x=>{u(x);});p.success?m({type:"success",message:p.message}):m({type:"error",message:p.message});}catch(p){m({type:"error",message:p instanceof Error?p.message:"An unexpected error occurred"});}finally{f(false),setTimeout(()=>{u(null),m(null);},3e3);}};return n?null:jsx("button",{onClick:c,disabled:i||a.length===0||!e,className:"cursor-pointer rounded-xl bg-[#F4F4F4] p-3",children:jsx(Export,{size:24,weight:"fill",color:"#00000066"})})};var oy=({title:e="Untitled",autoSaveMessage:o="Auto-saved just now",onBack:t,onSettings:a,onProfile:r,onPublish:s,showPublishButton:n=true,showSettingsButton:i=true,showProfileButton:f=true,showBackButton:l=true,className:u="",rightContent:d,leftContent:m})=>jsxs("div",{className:`fixed top-0 left-0 z-100 flex h-[90px] w-full items-center justify-between border-b border-b-gray-200 bg-white px-6 shadow-sm ${u}`,children:[m||jsxs("div",{className:"flex items-center gap-6 px-2",children:[l&&jsx("button",{onClick:t,className:"h-10 w-10 rounded-full bg-[#F7F8F9] p-2 transition-colors hover:bg-[#0000000A]",children:jsx(CaretLeft,{size:24,color:"#64758B",weight:"bold"})}),jsxs("div",{className:"flex flex-col",children:[jsx("span",{className:"text-2xl font-medium text-[#000000CC]",children:e}),jsxs("div",{className:"flex items-center gap-2",children:[jsx(CloudArrowUp,{weight:"fill",color:"#63748A",size:20}),jsx("span",{className:"text-base font-medium text-[#63748A]",children:o})]})]})]}),d||jsxs("div",{className:"flex items-center gap-4 px-2",children:[n&&s&&jsx(ll,{onPublish:s}),i&&jsx("button",{onClick:a,className:"cursor-pointer rounded-xl bg-[#F4F4F4] p-3 transition-colors hover:bg-[#0000001A]",children:jsx(GearSix,{size:24,weight:"fill",color:"#00000066"})}),f&&jsx("button",{onClick:r,className:"cursor-pointer rounded-xl bg-[#F4F4F4] p-3 transition-colors hover:bg-[#0000001A]",children:jsx(User,{size:24,weight:"fill",color:"#00000066"})})]})]});function dl(e,[o,t]){return Math.min(t,Math.max(o,e))}function Ac(e){let o=xe.useRef({value:e,previous:e});return xe.useMemo(()=>(o.current.value!==e&&(o.current.previous=o.current.value,o.current.value=e),o.current.previous),[e])}function Rc(e){let[o,t]=xe.useState(void 0);return vo(()=>{if(e){t({width:e.offsetWidth,height:e.offsetHeight});let a=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;let s=r[0],n,i;if("borderBoxSize"in s){let f=s.borderBoxSize,l=Array.isArray(f)?f[0]:f;n=l.inlineSize,i=l.blockSize;}else n=e.offsetWidth,i=e.offsetHeight;t({width:n,height:i});});return a.observe(e,{box:"border-box"}),()=>a.unobserve(e)}else t(void 0);},[e]),o}var Pc=["PageUp","PageDown"],Dc=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Fc={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},Mo="Slider",[ul,sy,ny]=Fs(Mo),[Ec]=va(Mo,[ny]),[iy,Ws]=Ec(Mo),Bc=xe.forwardRef((e,o)=>{let{name:t,min:a=0,max:r=100,step:s=1,orientation:n="horizontal",disabled:i=false,minStepsBetweenThumbs:f=0,defaultValue:l=[a],value:u,onValueChange:d=()=>{},onValueCommit:m=()=>{},inverted:c=false,form:p,...x}=e,h=xe.useRef(new Set),v=xe.useRef(0),b=n==="horizontal"?ly:dy,[y=[],C]=Yt({prop:u,defaultProp:l,onChange:U=>{[...h.current][v.current]?.focus(),d(U);}}),S=xe.useRef(y);function I(U){let D=py(y,U);P(U,D);}function w(U){P(U,v.current);}function q(){let U=S.current[v.current];y[v.current]!==U&&m(y);}function P(U,D,{commit:F}={commit:false}){let T=by(s),H=vy(Math.round((U-a)/s)*s+a,T),N=dl(H,[a,r]);C((re=[])=>{let V=fy(re,N,D);if(xy(V,f*s)){v.current=V.indexOf(N);let W=String(V)!==String(re);return W&&F&&m(V),W?V:re}else return re});}return jsx(iy,{scope:e.__scopeSlider,name:t,disabled:i,min:a,max:r,valueIndexToChangeRef:v,thumbs:h.current,values:y,orientation:n,form:p,children:jsx(ul.Provider,{scope:e.__scopeSlider,children:jsx(ul.Slot,{scope:e.__scopeSlider,children:jsx(b,{"aria-disabled":i,"data-disabled":i?"":void 0,...x,ref:o,onPointerDown:_e(x.onPointerDown,()=>{i||(S.current=y);}),min:a,max:r,inverted:c,onSlideStart:i?void 0:I,onSlideMove:i?void 0:w,onSlideEnd:i?void 0:q,onHomeKeyDown:()=>!i&&P(a,0,{commit:true}),onEndKeyDown:()=>!i&&P(r,y.length-1,{commit:true}),onStepKeyDown:({event:U,direction:D})=>{if(!i){let H=Pc.includes(U.key)||U.shiftKey&&Dc.includes(U.key)?10:1,N=v.current,re=y[N],V=s*H*D;P(re+V,N,{commit:true});}}})})})})});Bc.displayName=Mo;var[Oc,Nc]=Ec(Mo,{startEdge:"left",endEdge:"right",size:"width",direction:1}),ly=xe.forwardRef((e,o)=>{let{min:t,max:a,dir:r,inverted:s,onSlideStart:n,onSlideMove:i,onSlideEnd:f,onStepKeyDown:l,...u}=e,[d,m]=xe.useState(null),c=At(o,b=>m(b)),p=xe.useRef(void 0),x=wo(r),h=x==="ltr",v=h&&!s||!h&&s;function g(b){let y=p.current||d.getBoundingClientRect(),C=[0,y.width],I=ml(C,v?[t,a]:[a,t]);return p.current=y,I(b-y.left)}return jsx(Oc,{scope:e.__scopeSlider,startEdge:v?"left":"right",endEdge:v?"right":"left",direction:v?1:-1,size:"width",children:jsx(Vc,{dir:x,"data-orientation":"horizontal",...u,ref:c,style:{...u.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:b=>{let y=g(b.clientX);n?.(y);},onSlideMove:b=>{let y=g(b.clientX);i?.(y);},onSlideEnd:()=>{p.current=void 0,f?.();},onStepKeyDown:b=>{let C=Fc[v?"from-left":"from-right"].includes(b.key);l?.({event:b,direction:C?-1:1});}})})}),dy=xe.forwardRef((e,o)=>{let{min:t,max:a,inverted:r,onSlideStart:s,onSlideMove:n,onSlideEnd:i,onStepKeyDown:f,...l}=e,u=xe.useRef(null),d=At(o,u),m=xe.useRef(void 0),c=!r;function p(x){let h=m.current||u.current.getBoundingClientRect(),v=[0,h.height],b=ml(v,c?[a,t]:[t,a]);return m.current=h,b(x-h.top)}return jsx(Oc,{scope:e.__scopeSlider,startEdge:c?"bottom":"top",endEdge:c?"top":"bottom",size:"height",direction:c?1:-1,children:jsx(Vc,{"data-orientation":"vertical",...l,ref:d,style:{...l.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:x=>{let h=p(x.clientY);s?.(h);},onSlideMove:x=>{let h=p(x.clientY);n?.(h);},onSlideEnd:()=>{m.current=void 0,i?.();},onStepKeyDown:x=>{let v=Fc[c?"from-bottom":"from-top"].includes(x.key);f?.({event:x,direction:v?-1:1});}})})}),Vc=xe.forwardRef((e,o)=>{let{__scopeSlider:t,onSlideStart:a,onSlideMove:r,onSlideEnd:s,onHomeKeyDown:n,onEndKeyDown:i,onStepKeyDown:f,...l}=e,u=Ws(Mo,t);return jsx(rt.span,{...l,ref:o,onKeyDown:_e(e.onKeyDown,d=>{d.key==="Home"?(n(d),d.preventDefault()):d.key==="End"?(i(d),d.preventDefault()):Pc.concat(Dc).includes(d.key)&&(f(d),d.preventDefault());}),onPointerDown:_e(e.onPointerDown,d=>{let m=d.target;m.setPointerCapture(d.pointerId),d.preventDefault(),u.thumbs.has(m)?m.focus():a(d);}),onPointerMove:_e(e.onPointerMove,d=>{d.target.hasPointerCapture(d.pointerId)&&r(d);}),onPointerUp:_e(e.onPointerUp,d=>{let m=d.target;m.hasPointerCapture(d.pointerId)&&(m.releasePointerCapture(d.pointerId),s(d));})})}),qc="SliderTrack",Hc=xe.forwardRef((e,o)=>{let{__scopeSlider:t,...a}=e,r=Ws(qc,t);return jsx(rt.span,{"data-disabled":r.disabled?"":void 0,"data-orientation":r.orientation,...a,ref:o})});Hc.displayName=qc;var cl="SliderRange",Uc=xe.forwardRef((e,o)=>{let{__scopeSlider:t,...a}=e,r=Ws(cl,t),s=Nc(cl,t),n=xe.useRef(null),i=At(o,n),f=r.values.length,l=r.values.map(m=>Gc(m,r.min,r.max)),u=f>1?Math.min(...l):0,d=100-Math.max(...l);return jsx(rt.span,{"data-orientation":r.orientation,"data-disabled":r.disabled?"":void 0,...a,ref:i,style:{...e.style,[s.startEdge]:u+"%",[s.endEdge]:d+"%"}})});Uc.displayName=cl;var fl="SliderThumb",zc=xe.forwardRef((e,o)=>{let t=sy(e.__scopeSlider),[a,r]=xe.useState(null),s=At(o,i=>r(i)),n=xe.useMemo(()=>a?t().findIndex(i=>i.ref.current===a):-1,[t,a]);return jsx(uy,{...e,ref:s,index:n})}),uy=xe.forwardRef((e,o)=>{let{__scopeSlider:t,index:a,name:r,...s}=e,n=Ws(fl,t),i=Nc(fl,t),[f,l]=xe.useState(null),u=At(o,g=>l(g)),d=f?n.form||!!f.closest("form"):true,m=Rc(f),c=n.values[a],p=c===void 0?0:Gc(c,n.min,n.max),x=my(a,n.values.length),h=m?.[i.size],v=h?hy(h,p,i.direction):0;return xe.useEffect(()=>{if(f)return n.thumbs.add(f),()=>{n.thumbs.delete(f);}},[f,n.thumbs]),jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[i.startEdge]:`calc(${p}% + ${v}px)`},children:[jsx(ul.ItemSlot,{scope:e.__scopeSlider,children:jsx(rt.span,{role:"slider","aria-label":e["aria-label"]||x,"aria-valuemin":n.min,"aria-valuenow":c,"aria-valuemax":n.max,"aria-orientation":n.orientation,"data-orientation":n.orientation,"data-disabled":n.disabled?"":void 0,tabIndex:n.disabled?void 0:0,...s,ref:u,style:c===void 0?{display:"none"}:e.style,onFocus:_e(e.onFocus,()=>{n.valueIndexToChangeRef.current=a;})})}),d&&jsx(Wc,{name:r??(n.name?n.name+(n.values.length>1?"[]":""):void 0),form:n.form,value:c},a)]})});zc.displayName=fl;var cy="RadioBubbleInput",Wc=xe.forwardRef(({__scopeSlider:e,value:o,...t},a)=>{let r=xe.useRef(null),s=At(r,a),n=Ac(o);return xe.useEffect(()=>{let i=r.current;if(!i)return;let f=window.HTMLInputElement.prototype,u=Object.getOwnPropertyDescriptor(f,"value").set;if(n!==o&&u){let d=new Event("input",{bubbles:true});u.call(i,o),i.dispatchEvent(d);}},[n,o]),jsx(rt.input,{style:{display:"none"},...t,ref:s,defaultValue:o})});Wc.displayName=cy;function fy(e=[],o,t){let a=[...e];return a[t]=o,a.sort((r,s)=>r-s)}function Gc(e,o,t){let s=100/(t-o)*(e-o);return dl(s,[0,100])}function my(e,o){return o>2?`Value ${e+1} of ${o}`:o===2?["Minimum","Maximum"][e]:void 0}function py(e,o){if(e.length===1)return 0;let t=e.map(r=>Math.abs(r-o)),a=Math.min(...t);return t.indexOf(a)}function hy(e,o,t){let a=e/2,s=ml([0,50],[0,a]);return (a-s(o)*t)*t}function gy(e){return e.slice(0,-1).map((o,t)=>e[t+1]-o)}function xy(e,o){if(o>0){let t=gy(e);return Math.min(...t)>=o}return true}function ml(e,o){return t=>{if(e[0]===e[1]||o[0]===o[1])return o[0];let a=(o[1]-o[0])/(e[1]-e[0]);return o[0]+a*(t-e[0])}}function by(e){return (String(e).split(".")[1]||"").length}function vy(e,o){let t=Math.pow(10,o);return Math.round(e*t)/t}var Kc=Bc,jc=Hc,_c=Uc,Xc=zc;function Yc({className:e,defaultValue:o,value:t,min:a=0,max:r=100,rangeClassName:s,trackClassName:n,thumbClassName:i,...f}){let l=xe.useMemo(()=>Array.isArray(t)?t:Array.isArray(o)?o:[a,r],[t,o,a,r]);return jsxs(Kc,{"data-slot":"slider",defaultValue:o,value:t,min:a,max:r,className:La("relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",e),...f,children:[jsx(jc,{"data-slot":"slider-track",className:La("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5",n),children:jsx(_c,{"data-slot":"slider-range",className:La("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full",s)})}),Array.from({length:l.length},(u,d)=>jsx(Xc,{"data-slot":"slider-thumb",className:La("border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50",i)},d))]})}var Ly=[{name:"black",value:"#2D2F50"},{name:"white",value:"#666FEE"},{name:"red",value:"#FF4343"},{name:"blue",value:"#60C75E"},{name:"green",value:"#FFE056"}],Iy=({colors:e=Ly,showSizeSlider:o=true,showColorPicker:t=true,showBackgroundPicker:a=true,className:r=""})=>{let s=ee(i=>i.toolbar.penColor),n=ge();return jsxs("div",{className:`absolute bottom-6 left-1/2 z-50 flex h-fit w-full max-w-3xl -translate-x-1/2 transform gap-4 rounded-2xl border bg-white p-6 shadow-2xl xl:max-w-4xl ${r}`,children:[o&&jsxs(Fragment,{children:[jsxs("div",{className:"flex w-full flex-col px-4",children:[jsx("p",{className:"mb-4 text-sm font-semibold text-[#00000066]",children:"SIZE"}),jsxs("div",{className:"flex w-full items-center gap-3",children:[jsx("div",{className:"h-3 w-3 rounded-full bg-black"}),jsx(Yc,{defaultValue:[12],max:28,min:6,step:1,className:"w-48",rangeClassName:"bg-[#8290A133]",thumbClassName:"bg-[#8290A1] border-none h-5 w-5",onValueChange:i=>n(tl(i[0]))}),jsx("div",{className:"h-8 w-8 rounded-full bg-black"})]})]}),jsx("div",{className:"h-16 border bg-[#0000001A]"})]}),t&&jsxs(Fragment,{children:[jsxs(Ia,{type:"single",className:"flex w-full px-6",children:[e.map(i=>jsx("button",{value:i.value,className:`h-12 w-12 rounded-full border hover:cursor-pointer ${s===i.value?"ring-2 ring-gray-300":""}`,style:{backgroundColor:i.value},onClick:()=>n(Hs(i.value))},i.value)),jsxs("label",{className:"relative flex h-12 w-12 cursor-pointer items-center justify-center rounded-full border border-[#00000033] bg-[#ffff] text-xl text-[#00000033]",children:[jsx("input",{type:"color",className:"absolute inset-0 cursor-pointer opacity-0",onChange:i=>n(Hs(i.target.value))}),"+"]})]}),a&&jsx("div",{className:"h-16 border bg-[#0000001A]"})]}),a&&jsx("div",{className:"flex items-center",children:jsx("label",{className:"relative flex h-12 w-12 cursor-pointer items-center justify-center rounded-full border border-[#00000033] bg-[#ffff] text-xl text-[#00000033]",children:jsx("input",{type:"color",className:"absolute inset-0 cursor-pointer opacity-0",onChange:i=>n(nn(i.target.value))})})})]})};var Zc=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Sy=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(o,t,a)=>a?a.toUpperCase():t.toLowerCase()),hl=e=>{let o=Sy(e);return o.charAt(0).toUpperCase()+o.slice(1)},Gs=(...e)=>e.filter((o,t,a)=>!!o&&o.trim()!==""&&a.indexOf(o)===t).join(" ").trim(),Qc=e=>{for(let o in e)if(o.startsWith("aria-")||o==="role"||o==="title")return true};var ef={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var af=forwardRef(({color:e="currentColor",size:o=24,strokeWidth:t=2,absoluteStrokeWidth:a,className:r="",children:s,iconNode:n,...i},f)=>createElement("svg",{ref:f,...ef,width:o,height:o,stroke:e,strokeWidth:a?Number(t)*24/Number(o):t,className:Gs("lucide",r),...!s&&!Qc(i)&&{"aria-hidden":"true"},...i},[...n.map(([l,u])=>createElement(l,u)),...Array.isArray(s)?s:[s]]));var Ks=(e,o)=>{let t=forwardRef(({className:a,...r},s)=>createElement(af,{ref:s,iconNode:o,className:Gs(`lucide-${Zc(hl(e))}`,`lucide-${e}`,a),...r}));return t.displayName=hl(e),t};var Ay=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],Ir=Ks("copy",Ay);var Ty=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],Sr=Ks("trash-2",Ty);var rf=({slide:e,index:o,isSelected:t,isSingleSlide:a,onSelect:r,onDuplicate:s,onDelete:n})=>jsxs("div",{className:`group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all ${t?"shadow-lg":"border-gray-300 bg-white hover:border-gray-400"}`,onClick:r,children:[jsx("div",{className:"bg-opacity-60 absolute top-2 left-2 z-10 rounded bg-black px-2 py-1 text-xs text-white",children:o+1}),jsxs("div",{className:"absolute top-2 right-2 z-10 flex gap-1 opacity-0 transition-opacity group-hover:opacity-100",children:[jsx("button",{onClick:i=>{i.stopPropagation(),s();},className:"rounded bg-[#3B75E0] p-1.5 text-white shadow-md transition-colors",title:"Duplicate slide",children:jsx(Ir,{size:14})}),!a&&jsx("button",{onClick:i=>{i.stopPropagation(),n();},className:"rounded bg-red-500 p-1.5 text-white shadow-md transition-colors hover:bg-red-600",title:"Delete slide",children:jsx(Sr,{size:14})})]}),jsx("div",{className:"flex aspect-video w-full items-center justify-center bg-gray-100",children:e.thumbnail?jsx("img",{src:e.thumbnail,alt:`Slide ${o+1}`,className:"h-full w-full object-contain"}):jsx("div",{className:"text-sm text-gray-400",children:"No preview"})}),jsx("div",{className:"truncate bg-white p-2 text-xs text-gray-700",children:e.name})]});var Fy=()=>{let e=Ut(),o=aa(qo),t=aa(Vo),a=aa(_n),[r,s]=useState(true),f=(aa(c=>c.canvas.slides.find(p=>p.id===c.canvas.currentSlideId))?.videos||[]).some(c=>c.isRecorded&&c.isPlaying),l=()=>{a&&e(tn());},u=c=>{e(rn(c));},d=c=>{e(on(c));},m=c=>{o.length>1&&e(an(c));};return f?null:jsxs("div",{className:"pointer-events-none fixed top-22.5 right-0 bottom-0 z-[100] flex items-start",children:[jsxs(motion.div,{initial:false,animate:{x:r?0:320},transition:{type:"tween",duration:.3,ease:[.4,0,.2,1]},className:"pointer-events-auto flex h-full w-80 flex-col overflow-hidden border-l border-gray-300 bg-gray-50 shadow-xl",children:[jsx("div",{className:"bg-white p-4",children:jsxs("div",{className:"flex items-center justify-between",children:[jsxs("div",{className:"flex items-center gap-2",children:[jsx("button",{onClick:()=>s(false),className:"flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg transition-colors",title:"Hide Slides",children:jsx(SidebarSimple,{size:24,weight:"bold"})}),jsx("h2",{className:"text-lg font-semibold text-black",children:"Slides"})]}),jsxs("span",{className:"text-sm text-gray-600",children:[o.length,"/20"]})]})}),jsxs("div",{className:"flex flex-1 flex-col gap-4 overflow-hidden bg-white p-4",children:[jsx("div",{className:"flex-1 space-y-3 overflow-y-auto",children:o.map((c,p)=>jsx(rf,{slide:c,index:p,isSelected:c.id===t,isSingleSlide:o.length===1,onSelect:()=>u(c.id),onDuplicate:()=>d(c.id),onDelete:()=>m(c.id)},c.id))}),jsxs("button",{onClick:l,disabled:!a,className:`flex w-full cursor-pointer items-center justify-center gap-2 rounded-lg px-4 py-3 font-medium transition-colors ${a?"text-white":"cursor-not-allowed bg-gray-300 text-gray-500"}`,style:a?{backgroundColor:"#0d9488"}:{},children:[jsx(Plus,{size:18}),"Add Slide"]})]})]}),jsx(AnimatePresence,{children:!r&&jsx(motion.button,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2,delay:.1},whileHover:{scale:1.05},whileTap:{scale:.95},onClick:()=>s(true),className:"pointer-events-auto absolute top-2 right-0 flex h-10 w-10 cursor-pointer items-center justify-center rounded-l-lg transition-colors hover:bg-gray-100",title:"Show Slides",children:jsx(SidebarSimple,{size:24,weight:"bold"})},"toggle")})]})};var Ey="SchooplaEditorDB",By=1,Ao="slides",lf="schoopla_current_slide_id",df=()=>new Promise((e,o)=>{let t=indexedDB.open(Ey,By);t.onerror=()=>o(t.error),t.onsuccess=()=>e(t.result),t.onupgradeneeded=a=>{let r=a.target.result;r.objectStoreNames.contains(Ao)||r.createObjectStore(Ao,{keyPath:"id"});};}),gl=async e=>{try{console.log("\u{1F4BE} Saving to IndexedDB...",e.length,"slides");let o=await df(),a=o.transaction([Ao],"readwrite").objectStore(Ao);await new Promise((r,s)=>{let n=a.clear();n.onsuccess=()=>r(!0),n.onerror=()=>s(n.error);});for(let r of e)await new Promise((s,n)=>{let i=a.add(r);i.onsuccess=()=>s(!0),i.onerror=()=>n(i.error);});o.close(),console.log("\u2705 Saved to IndexedDB successfully");}catch(o){console.error("Error saving to IndexedDB:",o);try{localStorage.setItem("schoopla_slides_backup",JSON.stringify(e));}catch(t){console.error("localStorage fallback failed:",t);}}},uf=async()=>{try{console.log("\u{1F4C2} Loading from IndexedDB...");let e=await df(),t=e.transaction([Ao],"readonly").objectStore(Ao);return new Promise((a,r)=>{let s=t.getAll();s.onsuccess=()=>{e.close();let n=s.result;console.log("\u2705 Loaded from IndexedDB:",n.length,"slides"),n.length>0&&n[0].images&&console.log("First slide images:",n[0].images.map(i=>({id:i.id,width:i.width,height:i.height,x:i.x,y:i.y}))),a(n.length>0?n:null);},s.onerror=()=>{e.close(),r(s.error);};})}catch(e){console.error("Error loading from IndexedDB:",e);try{let o=localStorage.getItem("schoopla_slides_backup");return o?JSON.parse(o):null}catch(o){return console.error("localStorage fallback failed:",o),null}}};var xl=e=>{try{localStorage.setItem(lf,e);}catch(o){console.error("Error saving current slide ID:",o);}},cf=()=>{try{return localStorage.getItem(lf)}catch(e){return console.error("Error loading current slide ID:",e),null}},ff=(e,o)=>{let t=null;return (...a)=>{t&&clearTimeout(t),t=setTimeout(()=>e(...a),o);}};var Oy=["canvas/finalizeDrawing","canvas/setLines","canvas/removeLine","canvas/addImage","canvas/updateImage","canvas/deleteImage","canvas/duplicateImage","canvas/addVideo","canvas/updateVideo","canvas/deleteVideo","canvas/duplicateVideo","canvas/addShape","canvas/updateShape","canvas/deleteShape","canvas/duplicateShape","canvas/addText","canvas/updateText","canvas/deleteText","canvas/duplicateText","canvas/addFlashcard","canvas/updateFlashcard","canvas/deleteFlashcard","canvas/duplicateFlashcard","canvas/addPhotoFrame","canvas/updatePhotoFrame","canvas/deletePhotoFrame","canvas/duplicatePhotoFrame","canvas/toggleImageDrawingMode","canvas/addImageAnnotation","canvas/updateImageAnnotation","canvas/clearImageAnnotations","canvas/togglePhotoFrameDrawingMode","canvas/addPhotoFrameAnnotation","canvas/updatePhotoFrameAnnotation","canvas/clearPhotoFrameAnnotations","canvas/addMultipleChoice","canvas/updateMultipleChoice","canvas/deleteMultipleChoice","canvas/duplicateMultipleChoice","canvas/addTrueFalse","canvas/updateTrueFalse","canvas/deleteTrueFalse","canvas/duplicateTrueFalse","canvas/addShortAnswer","canvas/updateShortAnswer","canvas/deleteShortAnswer","canvas/duplicateShortAnswer","canvas/addLongAnswer","canvas/updateLongAnswer","canvas/deleteLongAnswer","canvas/duplicateLongAnswer","canvas/addFillInTheBlanks","canvas/updateFillInTheBlanks","canvas/deleteFillInTheBlanks","canvas/duplicateFillInTheBlanks","canvas/bringToFront","canvas/sendToBack","canvas/toggleLock","canvas/setLink","canvas/setAltText","canvas/setAudioData","canvas/updateElementOrder","canvas/updateLinePosition","canvas/updateLineTransform","canvas/setBackgroundColor","canvas/addSlide","canvas/deleteSlide","canvas/duplicateSlide","canvas/setCurrentSlide","canvas/updateSlideThumbnail","canvas/reorderSlides"],Ny=["canvas/clearCanvas"],Vy=ff((e,o)=>{gl(e),xl(o);},500),qy=(e,o)=>{gl(e),xl(o);},bl=false,mf=(e=>o=>t=>{if(t.type==="canvas/deleteVideo"&&t.payload){let r=t.payload;zi(r).catch(s=>{console.error("Error deleting video blob:",s);});}if(t.type==="canvas/deleteSlide"&&t.payload){let r=t.payload,n=e.getState().canvas.slides.find(i=>i.id===r);n&&n.videos&&n.videos.length>0&&n.videos.forEach(i=>{zi(i.id).catch(f=>{console.error("Error deleting video blob:",f);});});}if(t.type==="canvas/duplicateVideo"&&t.payload){let r=t.payload,s=e.getState(),i=s.canvas.slides.find(f=>f.id===s.canvas.currentSlideId)?.videos.find(f=>f.id===r);i&&i.videoBlob&&setTimeout(()=>{let f=e.getState(),u=f.canvas.slides.find(d=>d.id===f.canvas.currentSlideId)?.videos.find(d=>d.id!==r&&d.x===i.x+20&&d.y===i.y+20);u&&i.videoBlob&&hr(u.id,i.videoBlob,u.thumbnailDataUrl).catch(d=>{console.error("Error saving duplicated video blob:",d);});},0);}let a=o(t);if(t.type&&Ny.includes(t.type)){if(!bl){bl=true;try{let r=e.getState(),{slides:s,currentSlideId:n}=r.canvas;qy(s,n);}finally{setTimeout(()=>{bl=false;},0);}}}else if(t.type&&Oy.includes(t.type)){let r=e.getState(),{slides:s,currentSlideId:n}=r.canvas;Vy(s,n);}return a});new QueryClient;var zy=configureStore({reducer:{toolbar:wc,canvas:Fl},middleware:e=>e({serializableCheck:false}).concat(mf)});var Wy=(e,o={})=>{let{format:t="png",quality:a=1,pixelRatio:r=2,fileName:s=`slide-${Date.now()}`}=o;try{let n=t==="png"?"image/png":"image/jpeg",i=e.toDataURL({mimeType:n,quality:a,pixelRatio:r}),f=document.createElement("a");f.download=`${s}.${t}`,f.href=i,document.body.appendChild(f),f.click(),document.body.removeChild(f);}catch(n){throw console.error("Error exporting slide:",n),new Error("Failed to export slide")}},Gy=async(e,o={})=>{let{format:t="png",quality:a=1,pixelRatio:r=2}=o;return new Promise((s,n)=>{try{let i=t==="png"?"image/png":"image/jpeg",f=e.toDataURL({mimeType:i,quality:a,pixelRatio:r});fetch(f).then(l=>l.blob()).then(l=>s(l)).catch(l=>n(l));}catch(i){n(i);}})},Ky=(e,o={})=>{let{format:t="png",quality:a=1,pixelRatio:r=2}=o,s=t==="png"?"image/png":"image/jpeg";return e.toDataURL({mimeType:s,quality:a,pixelRatio:r})};var jy=(e,o,t)=>{let a=t.x-o.x,r=t.y-o.y;if(a===0&&r===0)return Math.sqrt(Math.pow(e.x-o.x,2)+Math.pow(e.y-o.y,2));let s=a*a+r*r,n=Math.max(0,Math.min(1,((e.x-o.x)*a+(e.y-o.y)*r)/s)),i=o.x+n*a,f=o.y+n*r;return Math.sqrt(Math.pow(e.x-i,2)+Math.pow(e.y-f,2))},vl=(e,o)=>{if(e.length<=2)return e;let t=0,a=0,r=e[0],s=e[e.length-1];for(let n=1;n<e.length-1;n++){let i=jy(e[n],r,s);i>t&&(t=i,a=n);}if(t>o){let n=vl(e.slice(0,a+1),o),i=vl(e.slice(a),o);return [...n.slice(0,-1),...i]}return [r,s]},_y=e=>{let o=[];for(let t=0;t<e.length;t+=2)o.push({x:e[t],y:e[t+1]});return o},Xy=e=>{let o=[];for(let t of e)o.push(t.x,t.y);return o},pf=(e,o=1.5)=>{if(e.length<=4)return e;let t=_y(e),a=vl(t,o);return Xy(a)},hf=(e,o=1.5)=>({...e,points:pf(e.points,o)}),$y=(e,o=1.5)=>e.map(t=>hf(t,o)),Yy=(e,o)=>{let t=e.length/2,a=o.length/2,r=((1-a/t)*100).toFixed(1);return {originalPoints:t,simplifiedPoints:a,reduction:`${r}%`}};var Zy=()=>{let e=Ut();useEffect(()=>{(async()=>{try{let t=await uf(),a=cf();if(t&&t.length>0){let r=await Cu(),s=t.map(i=>{if(i.videos&&i.videos.length>0){let f=i.videos.map(l=>{let u=r.get(l.id);if(u){let d=ku(u.blob);return {...l,objectUrl:d,thumbnailDataUrl:u.thumbnailDataUrl,videoBlob:u.blob}}else return l});return {...i,videos:f}}return i}),n=a&&s.find(i=>i.id===a)?a:s[0].id;e(ln({slides:s,currentSlideId:n}));}}catch(t){console.error("Error loading persisted slides:",t);}})();},[e]);};/*! Bundled license information:
|
|
7
7
|
|
|
8
8
|
lucide-react/dist/esm/shared/src/utils.js:
|
|
9
9
|
lucide-react/dist/esm/defaultAttributes.js:
|
|
@@ -18,5 +18,5 @@ lucide-react/dist/esm/lucide-react.js:
|
|
|
18
18
|
* This source code is licensed under the ISC license.
|
|
19
19
|
* See the LICENSE file in the root directory of this source tree.
|
|
20
20
|
*)
|
|
21
|
-
*/export{
|
|
21
|
+
*/export{Iv as BASIC_EDITOR_TOOLBAR_CONFIG,Iy as BottomToolbar,Tx as Canvas,wv as DEFAULT_CONTEXT_MENU_CONFIG,Us as DEFAULT_TOOLBAR_CONFIG,ll as PublishButton,_o as ScreenRecorder,Fy as SlideNavigation,Jv as Toolbar,oy as TopNavBar,Lv as VIEWER_TOOLBAR_CONFIG,Bn as addFillInTheBlanks,xn as addFlashcard,un as addImage,Sn as addImageAnnotation,dn as addLine,Fn as addLongAnswer,Mn as addMultipleChoice,wn as addPhotoFrame,kn as addPhotoFrameAnnotation,mn as addShape,Pn as addShortAnswer,tn as addSlide,hn as addText,Tn as addTrueFalse,Hr as addVideo,Vn as bringToFront,Gn as clearCanvas,Yf as clearImageAnnotations,Zf as clearPhotoFrameAnnotations,On as deleteFillInTheBlanks,bn as deleteFlashcard,cn as deleteImage,zn as deleteLineById,En as deleteLongAnswer,An as deleteMultipleChoice,Ln as deletePhotoFrame,pn as deleteShape,Dn as deleteShortAnswer,an as deleteSlide,gn as deleteText,Rn as deleteTrueFalse,fn as deleteVideo,Jr as duplicateFillInTheBlanks,Kr as duplicateFlashcard,qr as duplicateImage,Wn as duplicateLine,Yr as duplicateLongAnswer,_r as duplicateMultipleChoice,jr as duplicatePhotoFrame,Wr as duplicateShape,$r as duplicateShortAnswer,on as duplicateSlide,Gr as duplicateText,Xr as duplicateTrueFalse,zr as duplicateVideo,Po as editFlashcard,Qf as editMultipleChoice,Gy as exportSlideAsBlob,Wy as exportSlideAsImage,Un as finalizeDrawing,Yy as getCompressionStats,Ky as getSlideDataURL,ln as loadSlides,rl as mergeToolbarConfig,vn as nextFlashcard,yn as previousFlashcard,jn as redo,Vr as removeLine,Xf as reorderSlides,ue as saveToHistory,qo as selectAllSlides,_n as selectCanAddSlide,he as selectCurrentSlide,Vo as selectCurrentSlideId,rm as selectSlideById,qn as sendToBack,Nn as setActivityType,Qr as setAltText,es as setAudioData,nn as setBackgroundColor,rn as setCurrentSlide,Bo as setEditingActivity,No as setEditingTextId,tm as setLines,Zr as setLink,Hs as setPenColor,Ta as setShowFlashcardForm,sa as setShowMcqForm,lt as setSketchMode,tl as setStrokeWidth,Ot as setTool,pf as simplifyFlatPoints,hf as simplifyLine,$y as simplifyLines,zy as store,In as toggleImageDrawingMode,Hn as toggleLock,Cn as togglePhotoFrameDrawingMode,om as toggleSketchMode,Ro as toggleVideoPlaying,Kn as undo,Oo as updateElementOrder,Eo as updateFillInTheBlanks,Ya as updateFlashcard,Xa as updateImage,$f as updateImageAnnotation,em as updateLastLine,am as updateLinePosition,ts as updateLineTransform,Fo as updateLongAnswer,oa as updateMultipleChoice,Aa as updatePhotoFrame,Jf as updatePhotoFrameAnnotation,$a as updateShape,Do as updateShortAnswer,sn as updateSlideThumbnail,yt as updateText,ra as updateTrueFalse,Ur as updateVideo,ge as useDispatch,ee as useSelector,Zy as useSlidesPersistence};//# sourceMappingURL=index.js.map
|
|
22
22
|
//# sourceMappingURL=index.js.map
|