@@ -5151,38 +5151,39 @@ nt",variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-
attribute _effect ( div , $0 => ( { "data-slot" : "alert" , class : $0 , ... restProps , role : "alert" } ) , [ ( ) => cn$1 ( alertVariants ( { variant : variant ( ) } ) , $$props . class ) ] ) ; var node2 = child ( div ) ; snippet ( node2 , ( ) => $$props . children ? ? noop$3 ) , reset ( div ) , bind _this ( div , $$value => ref2 ( $$value ) , ( ) => ref2 ( ) ) , append ( $$anchor , div ) , pop ( ) } var root$1A = from _html ( "<div><!></div>" ) ; function Alert _description ( $$anchor , $$props ) { push$1 ( $$props , ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , restProps = rest _props ( $$props , [ "$$slots" , "$$events" , "$$legacy" ,
"ref" , "class" , "children" ] ) ; var div = root$1A ( ) ; attribute _effect ( div , $0 => ( { "data-slot" : "alert-description" , class : $0 , ... restProps } ) , [ ( ) => cn$1 ( "col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed" , $$props . class ) ] ) ; var node2 = child ( div ) ; snippet ( node2 , ( ) => $$props . children ? ? noop$3 ) , reset ( div ) , bind _this ( div , $$value => ref2 ( $$value ) , ( ) => ref2 ( ) ) , append ( $$anchor , div ) , pop ( ) } var root$1z = from _html ( "<div><!></div>" ) ; function Alert _title ( $$anchor , $$props ) { push$1 ( $$props , ! 0 ) ;
let ref2 = prop ( $$props , "ref" , 15 , null ) , restProps = rest _props ( $$props , [ "$$slots" , "$$events" , "$$legacy" , "ref" , "class" , "children" ] ) ; var div = root$1z ( ) ; attribute _effect ( div , $0 => ( { "data-slot" : "alert-title" , class : $0 , ... restProps } ) , [ ( ) => cn$1 ( "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight" , $$props . class ) ] ) ; var node2 = child ( div ) ; snippet ( node2 , ( ) => $$props . children ? ? noop$3 ) , reset ( div ) , bind _this ( div , $$value => ref2 ( $$value ) , ( ) => ref2 ( ) ) , append ( $$anchor , div ) , pop ( ) } class AudioRecorder { mediaRecorder = null ; audioChunks = [ ] ; stream = null ; recordingState = ! 1 ; async startRecording ( ) {
try { this . stream = await navigator . mediaDevices . getUserMedia ( { audio : { echoCancellation : ! 0 , noiseSuppression : ! 0 , autoGainControl : ! 0 } } ) , this . initializeRecorder ( this . stream ) , this . audioChunks = [ ] , this . mediaRecorder . start ( 100 ) , this . recordingState = ! 0 } catch ( error2 ) { throw console . error ( "Failed to start recording:" , error2 ) , new Error ( "Failed to access microphone. Please check permissions." ) } } async stopRecording ( ) { return new Promise ( ( resolve2 , reject ) => { if ( ! this . mediaRecorder || this . mediaRecorder . state === "inactive" ) {
reject ( new Error ( "No active recording to stop" ) ) ; return } this . mediaRecorder . onstop = ( ) => { const mimeType = this . mediaR ecorder? . mimeType || MimeTypeAudio . WAV , audioBlob = new Blob ( this . audioC hunks, { type : mimeType } ) ; this . cleanu p( ) , resolve2 ( audioBlob ) } , this . mediaR ecorder. onerror = event2 => { console . error ( "Recording error:" , event2 ) , this . cleanup ( ) , reject ( new Error ( "Recording failed" ) ) } , this . mediaRecorder . stop ( ) } ) } isRecording ( ) { return this . recordingState } cancelRecording ( ) { this . mediaRecorder && this . mediaRecorder . state !==
"inactive" && this . mediaR ecorder. stop ( ) , this . cleanup ( ) } initialize Recorder ( stream ) { const options = { } ; M ediaRecorder. isTypeSupported ( MimeTypeAudio . WAV ) ? options . mimeType = MimeTypeAudio . WAV : MediaRecorder . isTypeSupported ( MimeTypeAudio . WEBM _OPUS ) ? options . mimeType = MimeTypeAudio . WEBM _OPUS : MediaRecorder . isTypeSupported ( MimeTypeAudio . WEBM ) ? options . mimeType = MimeTypeAudio . WEBM : MediaRecorder . isTypeSupported ( MimeTypeAudio . MP4 ) ? options . mimeType = MimeTypeAudio . MP4 : console . warn ( " No preferred audio format supported , us \
ing default "),this.mediaRecorder=new MediaRecorder(stream,options),this.mediaRecorder.ondataavailable=event2=>{event2.data.size>0&&this.audioChunks.push(event2.data)},this.mediaRecorder.onstop=()=>{this.recordingState=!1},this.mediaRecorder.onerror=event2=>{console.error(" MediaRecorder error : " , event2 ) , this . recordingState = ! 1 } } cleanup ( ) { if ( this . stream ) { for ( const track2 of this . stream . getTracks ( ) ) track2 . stop ( ) ; this . stream = null } this . mediaRecorder = null , this . audioChunks = [ ] , this . recordingState = ! 1 } } async function convertToWav ( audioBlob ) {
try { if ( audioBlob . type . includes ( "wav" ) ) return audioBlob ; const arrayBuffer = await audioBlob . arrayBuffer ( ) , audioContext = new ( window . AudioContext || window . webkitAudioContext ) , audioBuffer = await audioContext . decodeAudioData ( arrayBuffer ) , wavBlob = audioBufferToWav ( audioBuffer ) ; return audioContext . close ( ) , wavBlob } catch ( error2 ) { return console . error ( "Failed to convert audio to WAV:" , error2 ) , audioBlob } } function audioBufferToWav ( buffer ) { const length = buffer . length , numberOfChannels = buffer . numberOfChannels , sampleRate = buffer .
sampleRate , blockAlign = numberOfChannels * 2 , byteRate = sampleRate * blockAlign , dataSize = length * blockAlign , bufferSize = 44 + dataSize , arrayBuffer = new ArrayBuffer ( bufferSize ) , view = new DataView ( arrayBuffer ) , writeString = ( offset22 , string2 ) => { for ( let i = 0 ; i < string2 . length ; i ++ ) view . setUint8 ( offset22 + i , string2 . charCodeAt ( i ) ) } ; writeString ( 0 , "RIFF" ) , view . setUint32 ( 4 , bufferSize - 8 , ! 0 ) , writeString ( 8 , "WAVE" ) , writeString ( 12 , "fmt " ) , view . setUint32 ( 16 , 16 , ! 0 ) , view . setUint16 ( 20 , 1 , ! 0 ) , view . setUint16 ( 22 , numberOfChannels , ! 0 ) , view .
setUint32 ( 24 , sampleRate , ! 0 ) , view . setUint32 ( 28 , byteRate , ! 0 ) , view . setUint16 ( 32 , blockAlign , ! 0 ) , view . setUint16 ( 34 , 16 , ! 0 ) , writeString ( 36 , "data " ) , view . setUint32 ( 40 , dataSize , ! 0 ) ; let offset2 = 44 ; for ( let i = 0 ; i < length ; i ++ ) for ( let channel = 0 ; channel < numberOfChannels ; channel ++ ) { const sample = Math . max ( - 1 , Math . min ( 1 , buffer . g etChannelData ( channel ) [ i ] ) ) ; view . setI nt16 ( offset2 , sample * 32767 , ! 0 ) , offset2 += 2 } return new Blob ( [ arrayBuffer ] , { type : MimeTypeAudio . WAV } ) } function createAudioFile ( audioBlob , filename ) { const timestamp = new Date ( ) .
toISOString ( ) . replace ( /[:.]/g , "-" ) , extension2 = audioBlob . type . includes ( "wav" ) ? "wav" : "mp3" , defaultFilename = ` recording- ${ timestamp } . ${ extension2 } ` ; return new File ([ audioBlob ] , defaultFilename , { type : audioBlob . type , lastModified : Date . now ( ) } ) } function isAudioRecordingSupported ( ) { return ! ! ( typeof navigator < "u" && navigator . mediaDevices && typeof navigator . mediaDevices . getUserMedia == "function" && typeof window < "u" && window . MediaRecorder ) } const isNodeJS = typeof process == "object" && process + "" == "[object process]" && ! process .
versions . nw && ! ( process . versions . electron && process . type && process . type !== "browser" ) , FONT _IDENTITY _MATRIX = [ . 001 , 0 , 0 , . 001 , 0 , 0 ] , LINE _FACTOR = 1.35 , RenderingIntentFlag = {ANY : 1 , DISPLAY : 2 , PRINT : 4 , ANNOTATIONS _FORMS : 16 , ANNOTATIONS _STORAGE : 32 , ANNOTATIONS _DISABLE : 64 , IS _EDITING : 128 , OPLIST : 256 } , AnnotationMode = { DISABLE : 0 , ENABLE : 1 , ENABLE _FORMS : 2 , ENABLE _STORAGE : 3 } , AnnotationEditorPrefix = "pdfjs_internal_editor_" , AnnotationEditorType = { DISABLE : - 1 , NONE : 0 , FREETEXT : 3 , HIGHLIGHT : 9 , STAMP : 13 , INK : 15 , SIGNATURE : 101 , COMMENT : 102 } ,
AnnotationEditorParamsType = { RESIZE : 1 , CREATE : 2 , FREETEXT _SIZE : 11 , FREETEXT _COLOR : 12 , FREETEXT _OPACITY : 13 , INK _COLOR : 21 , INK _THICKNESS : 22 , INK _OPACITY : 23 , HIGHLIGHT _COLOR : 31, HIGHLIGHT _THICKNESS : 32 , HIGHLIGHT _FREE : 33 , HIGHLIGHT _SHOW _ALL : 34 , DRAW _STEP : 41 } , PermissionFlag = { PRINT : 4 , MODIFY _CONTENTS : 8 , COPY : 16 , MODIFY _ANNOTATIONS : 32 , FILL _INTERACTIVE _FORMS : 256 , COPY _FOR _ACCESSIBILITY : 512 , ASSEMBLE : 1024 , PRINT _HIGH _QUALITY : 2048 } , TextRenderingMode = { FILL : 0 , STROKE : 1 , FILL _STROKE : 2 , INVISIBLE : 3 , FILL _STROKE _MASK : 3 , ADD _TO _PATH _FLAG : 4 } ,
util _ImageKind = { GRAYSCALE _1BPP : 1 , RGB _24BPP : 2 , RGBA _32BPP : 3 } , AnnotationType = { TEXT : 1 , LINK : 2 , FREETEXT : 3 , LINE : 4 , SQUARE : 5 , CIRCLE : 6 , POLYGON : 7 , POLYLINE : 8 , HIGHLIGHT : 9, UNDERLINE : 10 , SQUIGGLY : 11 , STRIKEOUT : 12 , STAMP : 13 , CARET : 14 , INK : 15 , POPUP : 16 , FILEATTACHMENT : 17 , SOUND : 18 , MOVIE : 19 , WIDGET : 20 , SCREEN : 21 , PRINTERMARK : 22 , TRAPNET : 23 , WATERMARK : 24 , THREED : 25 , REDACT : 26 } , AnnotationBorderStyleType = { SOLID : 1 , DASHED : 2 , BEVELED : 3 , INSET : 4 , UNDERLINE : 5 } , VerbosityLevel = { ERRORS : 0 , WARNINGS : 1 , INFOS : 5 } , OPS = { dependency : 1 , setLineWidth : 2 , setLineCap : 3 ,
setLineJoin : 4 , setMiterLimit : 5 , setDash : 6 , setRenderingIntent : 7 , setFlatness : 8 , setGState : 9 , save : 10 , restore : 11 , transform : 12 , moveTo : 13 , lineTo : 14 , curveTo : 15, curveTo2 : 16 , curveTo3 : 17 , closePath : 18 , rectangle : 19 , stroke : 20 , closeStroke : 21 , fill : 22 , eoFill : 23 , fillStroke : 24 , eoFillStroke : 25 , closeFillStroke : 26 , closeEOFillStroke : 27 , endPath : 28 , clip : 29 , eoClip : 30 , beginText : 31 , endText : 32 , setCharSpacing : 33 , setWordSpacing : 34 , setHScale : 35 , setLeading : 36 , setFont : 37 , setTextRenderingMode : 38 , setTextRise : 39 , moveText : 40 , setLeadingMoveText : 41 ,
setTextMatrix : 42 , nextLine : 43 , showText : 44 , showSpacedText : 45 , nextLineShowText : 46 , nextLineSetSpacingShowText : 47 , setCharWidth : 48 , setCharWidthAndBounds : 49 , setStrokeColorSpace : 50 , setFillColorSpace : 51 , setStrokeColor : 52 , setStrokeColorN : 53 , setFillColor : 54 , setFillColorN : 55 , setStrokeGray : 56 , setFillGray : 57 , setStrokeRGBColor : 58 , setFillRGBColor : 59 , setStrokeCMYKColor : 60 , setFillCMYKColor : 61 , shadingFill : 62 , beginInlineImage : 63 , beginImageData : 64 , endInlineImage : 65 , paintXObject : 66 , markPoint : 67 , markPointProps : 68 , beginMarkedContent : 6 9 ,
beginMar ked ContentProps : 7 0, endMarkedContent : 7 1, beginCompat : 7 2, endCompat : 7 3, paintFormXObjectBegin : 7 4, paintFormXObjectEnd : 7 5, beginGroup : 76 , endGroup : 77 , beginAnnotation : 8 0, endAnnotation : 8 1, paintImageMaskXObject : 83 , paintImageMaskXObjectGroup : 84 , pa int ImageXObject : 85 , paint InlineImageXObject : 8 6, paintInlineImageXObjectGroup : 8 7, paintImageXObjectRepeat : 8 8, paintImageMaskXObjectRepea t: 8 9, paintSolidColorImageMask : 9 0, constructPath : 9 1, setStrokeTransparen t: 9 2, setFillTransparen t: 9 3, rawFillPath : 94 } , DrawOPS = { moveTo : 0 ,
lineTo : 1 , curveTo : 2 , closePath : 3 } , PasswordResponses = { NEED _PASSWORD : 1 , INCORRECT _PASSWORD : 2 } ; let verbosity = VerbosityLevel . WARNINGS ; function setVerbosityLevel ( level ) {Number . isInteger ( level ) && ( verbosity = level ) } function getVerbosityLevel ( ) { return verbosity } function info ( msg ) { verbosity >= VerbosityLevel . INFOS && console . log ( ` Info: ${ msg } ` ) } function warn ( msg ) { verbosity >= VerbosityLevel . WARNINGS && console . log ( ` Warning: ${ msg } ` ) } function unreachable ( msg ) { throw new Error ( msg ) } function assert$1 ( cond , msg ) { cond || unreachable (
msg ) } function _isValidProtocol ( url2 ) { switch ( url2 ? . protocol ) { case "http:" : case "https:" : case "ftp:" : case "mailto:" : case "tel:" : return ! 0 ; default : return ! 1 } } function createValidAbsoluteUrl ( url2 , baseUrl = null , options = null ) {if ( ! url2 ) return null ; if ( options && typeof url2 == "string" && ( options . addDefaultProtocol && url2 . startsWith ( "www." ) && url2 . match ( /\./g ) ? . length >= 2 && ( url2 = ` http:// ${ url2 } ` ) , options . tryConvertEncoding ) ) try { url2 = stringToUTF8String ( url2 ) } catch { } const absoluteUrl = baseUrl ? URL . parse ( url2 , baseUrl ) : URL . parse (
url2 ) ; return _isValidProtocol ( absoluteUrl ) ? absoluteUrl : null } function updateUrlHash ( url2 , hash2 , allowRel = ! 1 ) { const res = URL . parse ( url2 ) ; return res ? ( res . hash = hash2 , res . href ) : allowRel && createValidAbsoluteUrl ( url2 ,"http://example.com" ) ? url2 . split ( "#" , 1 ) [ 0 ] + ` ${ hash2 ? ` # ${ hash2 } ` : "" } ` : "" } function shadow ( obj , prop2 , value , nonSerializable = ! 1 ) { return Object . defineProperty ( obj , prop2 , { value , enumerable : ! nonSerializable , configurable : ! 0 , writable : ! 1 } ) , value } const BaseException = ( function ( ) { function BaseException2 ( message , name ) {
this . message = message , this . name = name } return BaseException2 . prototype = new Error , BaseException2 . constructor = BaseException2 , BaseException2 } ) ( ) ; class PasswordException extends BaseException { constructor ( msg , code2) { super ( msg , "PasswordException" ) , this . code = code2 } } class UnknownErrorException extends BaseException { constructor ( msg , details ) { super ( msg , "UnknownErrorException" ) , this . details = details } } class InvalidPDFException extends BaseException { constructor ( msg ) { super ( msg , "InvalidPDFException" ) } } class ResponseException extends BaseException { constructor ( msg , status , missing ) {
super ( msg , "Response Exception" ) , this . status = status , this . missing = missing } } class FormatError extends BaseException { constructor ( msg ) { super ( msg , "FormatError" ) } } class Abort Exception extends BaseException { constructor ( msg ) { super ( msg , "Abort Exception" ) } } function bytesToString ( bytes ) { ( typeof bytes != "object" || bytes ? . length === void 0 ) && unreachable ( "Invalid argument for bytesToString" ) ; const length = bytes . length , MAX _ARGUMENT _COUNT = 8192 ; if ( length < MAX _ARGUMENT _COUNT ) return String . fromCharCode . apply ( null , bytes ) ; const strBuf = [ ] ;
for ( let i = 0 ; i < length ; i += MAX _ARGUMENT _COUNT ) { const chunkEnd = Math . min ( i + MAX _ARGUMENT _COUNT , length ) , chunk = bytes . subarray ( i , chunkEnd ) ;strBuf . push ( String . fromCharCode . apply ( null , chunk ) ) } return strBuf . join ( "" ) } function stringToBytes ( str ) { typeof str != "string" && unreachable ( "Invalid argument for stringToBytes" ) ; const length = str . length , bytes = new Uint8Array ( length ) ; for ( let i = 0 ; i < length ; ++ i ) bytes [ i ] = str . charCodeAt ( i ) & 255 ; return bytes } function string32 ( value ) { return String . fromCharCode ( value >> 24 & 255 , value >> 16 &
255 , value >> 8 & 255 , value & 255 ) } function isLittleEndian ( ) { const buffer8 = new Uint8Array ( 4 ) ; return buffer8 [ 0 ] = 1 , new Uint32Array ( buffer8 .buffer , 0 , 1 ) [ 0 ] === 1 } function isEvalSupported ( ) { try { return new Function ( "" ) , ! 0 } catch { return ! 1 } } class util _FeatureTest { static get isLittleEndian ( ) { return shadow ( this , "isLittleEndian" , isLittleEndian ( ) ) } static get isEvalSupported ( ) { return shadow ( this , "isEvalSupported" , isEvalSupported ( ) ) } static get isOffscreenCanvasSupported ( ) { return shadow ( this , "isOffscreenCanvasSupported" ,
typeof OffscreenCanvas < "u" ) } static get isImageDecoderSupported ( ) { return shadow ( this , "isImageDecoderSupported" , typeof ImageDecoder < "u" ) } static get platform ( ) { const { platform : platform2 , userAgent } = navigator ; return shadow ( this , "platform" , { isAndroid : userA gen t . includes ( "Android" ) , isLinux : platform2 . includes ( "Linux" ) , isMac : platform2 . includes ( "Mac" ) , isWindows : platform2 . include s ( "Win" ) , isFirefox : userAgent . includes ( "Firefox " ) } ) } static get isCSSRound Supported ( ) { return shadow ( this , "isCSSRound Supported" , globalThis .
CSS ? . supports ? . ( "width: round(1.5px, 1px)" ) ) } } const hexNumbers = Array . from ( Array ( 256 ) . keys ( ) , n => n . toString ( 16 ) . padStart ( 2 , "0" ) ) ;class Util { static makeHexColor ( r2 , g , b ) { return ` # ${ hexNumbers [ r2 ] } ${ hexNumbers [ g ] } ${ hexNumbers [ b ] } ` } static scaleMinMax ( transform2 , minMax ) { let temp ; transform2 [ 0 ] ? ( transform2 [ 0 ] < 0 && ( temp = minMax [ 0 ] , minMax [ 0 ] = minMax [ 2 ] , minMax [ 2 ] = temp ) , minMax [ 0 ] *= transform2 [ 0 ] , minMax [ 2 ] *= transform2 [ 0 ] , transform2 [ 3 ] < 0 && ( temp = minMax [ 1 ] , minMax [ 1 ] = minMax [ 3 ] , minMax [ 3 ] = temp ) , minMax [ 1 ] *= transform2 [ 3 ] ,
minMax [ 3 ] *= transform2 [ 3 ] ) : ( temp = minMax [ 0 ] , minMax [ 0 ] = minMax [ 1 ] , minMax [ 1 ] = temp , temp = minMax [ 2 ] , minMax [ 2 ] = minMax [ 3 ] , minMax [ 3 ] = temp ,transform2 [ 1 ] < 0 && ( temp = minMax [ 1 ] , minMax [ 1 ] = minMax [ 3 ] , minMax [ 3 ] = temp ) , minMax [ 1 ] *= transform2 [ 1 ] , minMax [ 3 ] *= transform2 [ 1 ] , transform2 [ 2 ] < 0 && ( temp = minMax [ 0 ] , minMax [ 0 ] = minMax [ 2 ] , minMax [ 2 ] = temp ) , minMax [ 0 ] *= transform2 [ 2 ] , minMax [ 2 ] *= transform2 [ 2 ] ) , minMax [ 0 ] += transform2 [ 4 ] , minMax [ 1 ] += transform2 [ 5 ] , minMax [ 2 ] += transform2 [ 4 ] , minMax [ 3 ] += transform2 [ 5 ] } static transform ( m1 , m2 ) { return [ m1 [ 0 ] *
m2 [ 0 ] + m1 [ 2 ] * m2 [ 1 ] , m1 [ 1 ] * m2 [ 0 ] + m1 [ 3 ] * m2 [ 1 ] , m1 [ 0 ] * m2 [ 2 ] + m1 [ 2 ] * m2 [ 3 ] , m1 [ 1 ] * m2 [ 2 ] + m1 [ 3 ] * m2 [ 3 ] , m1 [ 0 ] * m2 [ 4 ] + m1 [ 2 ] * m2 [ 5 ] + m1 [ 4 ] , m1 [ 1 ] *m2 [ 4 ] + m1 [ 3 ] * m2 [ 5 ] + m1 [ 5 ] ] } static applyTransform ( p2 , m , pos = 0 ) { const p0 = p2 [ pos ] , p1 = p2 [ pos + 1 ] ; p2 [ pos ] = p0 * m [ 0 ] + p1 * m [ 2 ] + m [ 4 ] , p2 [ pos + 1 ] = p0 * m [ 1 ] + p1 * m [ 3 ] + m [ 5 ] } static applyTransformToBezier ( p2 , transform2 , pos = 0 ) { const m0 = transform2 [ 0 ] , m1 = transform2 [ 1 ] , m2 = transform2 [ 2 ] , m3 = transform2 [ 3 ] , m4 = transform2 [ 4 ] , m5 = transform2 [ 5 ] ; for ( let i = 0 ; i < 6 ; i += 2 ) { const pI = p2 [ pos + i ] , pI1 = p2 [ pos + i + 1 ] ; p2 [ pos + i ] =
pI * m0 + pI1 * m2 + m4 , p2 [ pos + i + 1 ] = pI * m1 + pI1 * m3 + m5 } } static applyInverseTransform ( p2 , m ) { const p0 = p2 [ 0 ] , p1 = p2 [ 1 ] , d2 = m [ 0 ] * m [ 3 ] - m [ 1 ] * m [ 2 ]; p2 [ 0 ] = ( p0 * m [ 3 ] - p1 * m [ 2 ] + m [ 2 ] * m [ 5 ] - m [ 4 ] * m [ 3 ] ) / d2 , p2 [ 1 ] = ( - p0 * m [ 1 ] + p1 * m [ 0 ] + m [ 4 ] * m [ 1 ] - m [ 5 ] * m [ 0 ] ) / d2 } static axialAlignedBoundingBox ( rect , transform2 , output ) { const m0 = transform2 [ 0 ] , m1 = transform2 [ 1 ] , m2 = transform2 [ 2 ] , m3 = transform2 [ 3 ] , m4 = transform2 [ 4 ] , m5 = transform2 [ 5 ] , r0 = rect [ 0 ] , r1 = rect [ 1 ] , r2 = rect [ 2 ] , r3 = rect [ 3 ] ; let a0 = m0 * r0 + m4 , a2 = a0 , a1 = m0 * r2 + m4 , a3 = a1 , b0 = m3 * r1 + m5 , b2 = b0 , b1 = m3 * r3 + m5 , b3 = b1 ;
if ( m1 !== 0 || m2 !== 0 ) { const m1r0 = m1 * r0 , m1r2 = m1 * r2 , m2r1 = m2 * r1 , m2r3 = m2 * r3 ; a0 += m2r1 , a3 += m2r1 , a1 += m2r3 , a2 += m2r3 , b0 += m1r0 , b3 += m1r0 ,b1 += m1r2 , b2 += m1r2 } output [ 0 ] = Math . min ( output [ 0 ] , a0 , a1 , a2 , a3 ) , output [ 1 ] = Math . min ( output [ 1 ] , b0 , b1 , b2 , b3 ) , output [ 2 ] = Math . max ( output [ 2 ] , a0 , a1 , a2 , a3 ) , output [ 3 ] = Math . max ( output [ 3 ] , b0 , b1 , b2 , b3 ) } static inverseTransform ( m ) { const d2 = m [ 0 ] * m [ 3 ] - m [ 1 ] * m [ 2 ] ; return [ m [ 3 ] / d2 , - m [ 1 ] / d2 , - m [ 2 ] / d2 , m [ 0 ] / d2 , ( m [ 2 ] * m [ 5 ] - m [ 4 ] * m [ 3 ] ) / d2 , ( m [ 4 ] * m [ 1 ] - m [ 5 ] * m [ 0 ] ) / d2 ] } static singularValueDecompose2dScale ( matrix , output ) {
const m0 = matrix [ 0 ] , m1 = matrix [ 1 ] , m2 = matrix [ 2 ] , m3 = matrix [ 3 ] , a = m0 * * 2 + m1 * * 2 , b = m0 * m2 + m1 * m3 , c2 = m2 * * 2 + m3 * * 2 , first = ( a + c2 ) /2 , second = Math . sqrt ( first * * 2 - ( a * c2 - b * * 2 ) ) ; output [ 0 ] = Math . sqrt ( first + second || 1 ) , output [ 1 ] = Math . sqrt ( first - second || 1 ) } static normalizeRect ( rect ) { const r2 = rect . slice ( 0 ) ; return rect [ 0 ] > rect [ 2 ] && ( r2 [ 0 ] = rect [ 2 ] , r2 [ 2 ] = rect [ 0 ] ) , rect [ 1 ] > rect [ 3 ] && ( r2 [ 1 ] = rect [ 3 ] , r2 [ 3 ] = rect [ 1 ] ) , r2 } static intersect ( rect1 , rect2 ) { const xLow = Math . max ( Math . min ( rect1 [ 0 ] , rect1 [ 2 ] ) , Math . min ( rect2 [ 0 ] , rect2 [ 2 ] ) ) , xHigh = Math .
min ( Math . max ( rect1 [ 0 ] , rect1 [ 2 ] ) , Math . max ( rect2 [ 0 ] , rect2 [ 2 ] ) ) ; if ( xLow > xHigh ) return null ; const yLow = Math . max ( Math . min (rect1 [ 1 ] , rect1 [ 3 ] ) , Math . min ( rect2 [ 1 ] , rect2 [ 3 ] ) ) , yHigh = Math . min ( Math . max ( rect1 [ 1 ] , rect1 [ 3 ] ) , Math . max ( rect2 [ 1 ] , rect2 [ 3 ] ) ) ; return yLow > yHigh ? null : [ xLow , yLow , xHigh , yHigh ] } static pointBoundingBox ( x , y , minMax ) { minMax [ 0 ] = Math . min ( minMax [ 0 ] , x ) , minMax [ 1 ] = Math . min ( minMax [ 1 ] , y ) , minMax [ 2 ] = Math . max ( minMax [ 2 ] , x ) , minMax [ 3 ] = Math . max ( minMax [ 3 ] , y ) } static rectBoundingBox ( x0 , y0 , x1 , y1 , minMax ) { minMax [ 0 ] =
Math . min ( minMax [ 0 ] , x0 , x1 ) , minMax [ 1 ] = Math . min ( minMax [ 1 ] , y0 , y1 ) , minMax [ 2 ] = Math . max ( minMax [ 2 ] , x0 , x1 ) , minMax [ 3 ] = Math . max (minMax [ 3 ] , y0 , y1 ) } static # getExtremumOnCurve ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , t , minMax ) { if ( t <= 0 || t >= 1 ) return ; const mt = 1 - t , tt = t * t , ttt = tt * t , x = mt * ( mt * ( mt * x0 + 3 * t * x1 ) + 3 * tt * x2 ) + ttt * x3 , y = mt * ( mt * ( mt * y0 + 3 * t * y1 ) + 3 * tt * y2 ) + ttt * y3 ; minMax [ 0 ] = Math . min ( minMax [ 0 ] , x ) , minMax [ 1 ] = Math . min ( minMax [ 1 ] , y ) , minMax [ 2 ] = Math . max ( minMax [ 2 ] , x ) , minMax [ 3 ] = Math . max ( minMax [ 3 ] , y ) } static # getExtremum ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , a , b , c2 , minMax ) {
if ( Math . abs ( a ) < 1e-12 ) { Math . abs ( b ) >= 1e-12 && this . # getExtremumOnCurve ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , - c2 / b , minMax ) ; return }const delta = b * * 2 - 4 * c2 * a ; if ( delta < 0 ) return ; const sqrtDelta = Math . sqrt ( delta ) , a2 = 2 * a ; this . # getExtremumOnCurve ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , ( - b + sqrtDelta ) / a2 , minMax ) , this . # getExtremumOnCurve ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , ( - b - sqrtDelta ) / a2 , minMax ) } static bezierBoundingBox ( x0 , y0 , x1 , y1 , x2 , y2 , x3 , y3 , minMax ) { minMax [ 0 ] = Math . min ( minMax [ 0 ] , x0 , x3 ) , minMax [ 1 ] = Math . min ( minMax [ 1 ] , y0 , y3 ) , minMax [ 2 ] = Math . max ( minMax [ 2 ] ,
x0 , x3 ) , minMax [ 3 ] = Math . max ( minMax [ 3 ] , y0 , y3 ) , this . # getExtremum ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , 3 * ( - x0 + 3 * ( x1 - x2 ) + x3 ) , 6 * ( x0 -2 * x1 + x2 ) , 3 * ( x1 - x0 ) , minMax ) , this . # getExtremum ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , 3 * ( - y0 + 3 * ( y1 - y2 ) + y3 ) , 6 * ( y0 - 2 * y1 + y2 ) , 3 * ( y1 - y0 ) , minMax ) } } function stringToUTF8String ( str ) { return decodeURIComponent ( escape ( str ) ) } let NormalizeRegex = null , NormalizationMap = null ; function normalizeUnicode ( str ) { return NormalizeRegex || ( NormalizeRegex = /([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu ,
try { this . stream = await navigator . mediaDevices . getUserMedia ( { audio : { echoCancellation : ! 0 , noiseSuppression : ! 0 , autoGainControl : ! 0 } } ) , this . initializeRecorder ( this . stream ) , this . audioChunks = [ ] , this . mediaRecorder . start ( 100 ) , this . recordingState = ! 0 } catch ( error2 ) { throw console . error ( "Failed to start recording:" , error2 ) , new Error ( "Failed to access microphone. Please check permissions." ) } } async stopRecording ( ) { return new Promise ( ( resolve2 , reject ) => { const recorder = this . mediaRecorder , chunks = this . audioChunks , stream = this .
stream ; if ( ! recorder || recorder . state === "inactive" ) { reject ( new Error ( "No active recording to stop" ) ) ; return } this . mediaRecorder = null , this . audioChunks = [ ] , this . stream = null , this . recordingState = ! 1 , r ecorder. onstop = ( ) => { const audioBlob = new Blob ( c hunks, { type : recorder . mimeType || MimeTypeAudio . WAV } ) ; if ( stream ) for ( const track2 of stream . getTracks ( ) ) track2 . sto p( ) ; resolve2 ( audioBlob ) } , r ecorder. onerror = event2 => { if ( console . error ( "Recording error:" , event2 ) , stream ) for ( const track2 of stream . getTracks ( ) ) track2 . stop ( ) ;
reject ( new Error ( "Recording failed" ) ) } , r ecorder. stop ( ) } ) } isRecording ( ) { return this . recordingState } cancel Recording ( ) { const recorder = this . m ediaRecorder, stream = this . stream ; if ( this . mediaRecorder = null , this . audioChunks = [ ] , this . stream = null , this . recordingState = ! 1 , recorder && recorder . state !== "inactive" && ( recorder . onstop = null , recorder . onerror = null , recorder . stop ( ) ) , stream ) for ( const track2 of stream . getTracks ( ) ) track2 . stop ( ) } initializeRecorder ( stream ) { const options = { } ; MediaRecorder . isTypeSupported ( MimeTypeAudio .
WAV ) ? options . mimeType = MimeTypeAudio . WAV : MediaRecorder . isTypeSupported ( MimeTypeAudio . WEBM _OPUS ) ? options . mimeType = MimeTypeAudio . WEBM _OPUS : MediaRecorder . isTypeSupported ( MimeTypeAudio . WEBM ) ? options . mimeType = MimeTypeAudio . WEBM : MediaRecorder . isTypeSupported ( MimeTypeAudio . MP4 ) ? options . mimeType = MimeTypeAudio . MP4 : console . warn ( "No preferred audio format supported, using default" ) , this . mediaRecorder = new MediaRecorder ( stream , options ) , this . mediaRecorder . ondataavailable = event2 => { event2 . data . size > 0 && this . audioChunks .
push ( event2 . data ) } , this . mediaRecorder . onstop = ( ) => { this . recordingState = ! 1 } , this . mediaRecorder . onerror = event2 => { console . error ( "MediaRecorder error:" , event2 ) , this . recordingState = ! 1 } } } async function convertToWav ( audioBlob ) { try { if ( audioBlob . type . includes ( "wav" ) ) return audioBlob ; const arrayBuffer = await audioBlob . arrayBuffer ( ) , audioContext = new ( window . AudioContext || window . webkitAudioContext ) ; try { const audioBuffer = await audioContext . decodeAudioData ( arrayBuffer ) ; return audioBufferToWav ( audioBuffer ) } finally {
audioContext . close ( ) } } catch ( error2 ) { return console . error ( "Failed to convert audio to WAV:" , error2 ) , audioBlob } } function audioBufferToWav ( buffer ) { const length = buffer . length , numberOfChannels = buffer . numberOfChannels , sampleRate = buffer . sampleRate , blockAlign = numberOfChannels * 2 , byteRate = sampleRate * blockAlign , dataSize = length * blockAlign , bufferSize = 44 + dataSize , arrayBuffer = new ArrayBuffer ( bufferSize ) , view = new DataView ( arrayBuffer ) , writeString = ( offset2 , string2 ) => { for ( let i = 0 ; i < string2 . length ; i ++ ) view . setUint8 (
offset2 + i , string2 . charCodeAt ( i ) ) } ; writeString ( 0 , "RIFF" ) , view . setUint32 ( 4 , bufferSize - 8 , ! 0 ) , writeString ( 8 , "WAVE" ) , writeString ( 12 , "fmt " ) , view . setUint32 ( 16 , 16 , ! 0 ) , view . setUint16 ( 20 , 1 , ! 0 ) , view . setUint16 ( 22 , numberOfChannels , ! 0 ) , view . setUint32 ( 24 , sampleRate , ! 0 ) , view . setUint32 ( 28 , byteRate , ! 0 ) , view . s etUint16 ( 32 , blockAlign , ! 0 ) , view . setUi nt16 ( 34 , 16 , ! 0 ) , writeString ( 36 , "data" ) , view . setUint32 ( 40 , dataSize , ! 0 ) ; const channels = new Array ( numberOfChannels ) ; for ( let c2 = 0 ; c2 < numberOfChannels ; c2 ++ ) channels [ c2 ] = buffer .
getChannelData ( c2 ) ; const pcm = new Int16Array ( arrayBuffer , 44 , length * numberOfChannels ) ; let p2 = 0 ; for ( let i = 0 ; i < length ; i ++ ) for ( let c2 = 0 ; c2 < numberOfChannels ; c2 ++ ) { let s2 = channels [ c2 ] [ i ] ; s2 > 1 ? s2 = 1 : s2 < - 1 && ( s2 = - 1 ) , pcm [ p2 ++ ] = s2 * 32767 } return new Blob ( [ arrayBuffer ] , { type : MimeTypeAudio . WAV } ) } function createAudioFile ( audioBlob , filename ) { const timestamp = new Date ( ) . toISOString( ) . replace ( /[:.]/g , "-" ) , extension2 = audioBlob . type . includes ( "wav" ) ? "wav" : "mp3" , defaultFilename = ` recording- ${ timestamp } . ${ extension2 } ` ; return new File (
[ audioBlob ] , defaultFilename , { type : audioBlob . type , lastModified : Date . now ( ) } ) } function isAudioRecordingSupported ( ) { return ! ! ( typeof navigator < "u" && navigator . mediaDevices && typeof navigator . mediaDevices . getUserMedia == "function" && typeof window < "u" && window . MediaRecorder ) } const isNodeJS = typeof process == "object" && process + "" == "[object process]" && ! process . versions . nw && ! ( process . versions . electron && process . type && process . type !== "browser" ) , FONT _IDENTITY _MATRIX = [ . 001 , 0 , 0 , . 001 , 0 , 0 ] , LINE _FACTOR = 1.35 , RenderingIntentFlag = {
ANY : 1 , DISPLAY : 2 , PRINT : 4 , ANNOTATIONS _FORMS : 16 , ANNOTATIONS _STORAGE : 32 , ANNOTATIONS _DISABLE : 64 , IS _EDITING : 128 , OPLIST : 256 } , AnnotationMode = { DISABLE : 0 , ENABLE : 1 , ENABLE _FORMS : 2 , ENABLE _STORAGE : 3 } , AnnotationEditorPrefix = "pdfjs_internal_editor_" , AnnotationEditorType = { DISABLE : - 1 , NONE : 0 , FREETEXT : 3 , HIGHLIGHT : 9 , STAMP : 13 , INK : 15 , SIGNATURE : 101 , COMMENT : 102 } , A nnotationEditorParamsType = { RESIZE : 1 , CREATE : 2 , FREETEXT _SIZE : 11 , FREETEXT _COLOR : 12 , FREETEXT _OPACITY : 13 , INK _COLOR : 21 , INK _THICKNESS : 22 , INK _OPACITY : 23 , HIGHLIGHT _COLOR : 31 ,
HIGHLIGHT _THICKNESS : 32 , HIGHLIGHT _FREE : 33 , HIGHLIGHT _SHOW _ALL : 34 , DRAW _STEP : 41 } , PermissionFlag = { PRINT : 4 , MODIFY _CONTENTS : 8 , COPY : 16 , MODIFY _ANNOTATIONS : 32 , FILL _INTERACTIVE _FORMS : 256 , COPY _FOR _ACCESSIBILITY : 512 , ASSEMBLE : 1024 , PRINT _HIGH _QUALITY : 2048 } , TextRenderingMode = { FILL : 0 , STROKE : 1 , FILL _STROKE : 2 , INVISIBLE : 3 , FILL _STROKE _MASK : 3 , ADD _TO _PATH _FLAG : 4 } , util_ImageKind = { GRAYSCALE _1BPP : 1 , RGB _24BPP : 2 , RGBA _32BPP : 3 } , AnnotationType = { TEXT : 1 , LINK : 2 , FREETEXT : 3 , LINE : 4 , SQUARE : 5 , CIRCLE : 6 , POLYGON : 7 , POLYLINE : 8 , HIGHLIGHT : 9 ,
UNDERLINE : 10 , SQUIGGLY : 11 , STRIKEOUT : 12 , STAMP : 13 , CARET : 14 , INK : 15 , POPUP : 16 , FILEATTACHMENT : 17 , SOUND : 18 , MOVIE : 19 , WIDGET : 20 , SCREEN : 21 , PRINTERMARK : 22 , TRAPNET : 23 , WATERMARK : 24 , THREED : 25 , REDACT : 26 } , AnnotationBorderStyleType = { SOLID : 1 , DASHED : 2 , BEVELED : 3 , INSET : 4 , UNDERLINE : 5 } , VerbosityLevel = { ERRORS : 0 , WARNINGS : 1 , INFOS : 5 } , OPS = { dependency : 1 , setLineWidth : 2 , setLineCap : 3 , setLineJoin: 4 , setMiterLimit : 5 , setDash : 6 , setRenderingIntent : 7 , setFlatness : 8 , setGState : 9 , save : 10 , restore : 11 , transform : 12 , moveTo : 13 , lineTo : 14 , curveTo : 15 ,
curveTo2 : 16 , curveTo3 : 17 , closePath : 18 , rectangle : 19 , stroke : 20 , closeStroke : 21 , fill : 22 , eoFill : 23 , fillStroke : 24 , eoFillStroke : 25 , closeFillStroke : 26 , closeEOFillStroke : 27 , endPath : 28 , clip : 29 , eoClip : 30 , beginText : 31 , endText : 32 , setCharSpacing : 33 , setWordSpacing : 34 , setHScale : 35 , setLeading : 36 , setFont : 37 , setTextRenderingMode : 38 , setTextRise : 39 , moveText : 40 , setLeadingMoveText : 41 , setTextMatrix: 42 , nextLine : 43 , showText : 44 , showSpacedText : 45 , nextLineShowText : 46 , nextLineSetSpacingShowText : 47 , setCharWidth : 48 , setCharWidthAndBounds : 49 ,
setStro keColorSpace : 5 0, setFillColorSpace : 5 1, setStrokeColor : 5 2, setStrokeColorN : 5 3, setFillColor : 5 4, setFillColorN : 55 , setStrokeGray : 56 , setFillGray : 5 7, setStrokeRGBColor : 58 , setFillRGBColor : 59 , setStrokeCMYKColor : 6 0, setFillCMYKColor : 6 1, shadingFill : 62 , beginInlineImage : 63 , beg inImageData : 64 , end InlineImage: 65 , paintXObject : 66 , markPoint : 6 7, markPointProps : 6 8, beginMarkedConten t: 6 9, beginMarkedContentProps : 7 0, endMarkedContent : 7 1, beginCompa t: 7 2, endCompa t: 7 3, paintFormXObjectBegin : 74 , paintFormXObjectEnd : 75 , beginGroup : 76 ,
endGroup : 77 , beginAnnotation : 80 , endAnnotation : 81 , paintImageMaskXObject : 83 , paintImageMaskXObjectGroup : 84 , paintImageXObject : 85 , paintInlineImageXObject : 86 , paintInlineImageXObjectGroup : 87 , paintImageXObjectRepeat : 88 , paintImageMaskXObjectRepeat : 89 , paintSolidColorImageMask : 90 , constructPath : 91 , setStrokeTransparent : 92 , setFillTransparent : 93 , rawFillPath : 94 } , DrawOPS = { moveTo : 0 , lineTo: 1 , curveTo : 2 , closePath : 3 } , PasswordResponses = { NEED _PASSWORD : 1 , INCORRECT _PASSWORD : 2 } ; let verbosity = VerbosityLevel . WARNINGS ; function setVerbosityLevel ( level ) {
Number . isInteger ( level ) && ( verbosity = level ) } function getVerbosityLevel ( ) { return verbosity } function info ( msg ) { verbosity >= VerbosityLevel . INFOS && console . log ( ` Info: ${ msg } ` ) } function warn ( msg ) { verbosity >= VerbosityLevel . WARNINGS && console . log ( ` Warning: ${ msg } ` ) } function unreachable ( msg ) { throw new Error ( msg ) } function assert$1 ( cond , msg ) { cond || unreachable ( msg ) } function _isValidProtocol ( url2 ) { switch ( url2 ? . protocol ) { case "http:" : case "https:" : case "ftp:" : case "mailto:" : case "tel:" : return ! 0 ; default : return ! 1 } } function createValidAbsoluteUrl ( url2 , baseUrl = null , options = null ) {
if ( ! url2 ) return null ; if ( options && typeof url2 == "string" && ( options . addDefaultProtocol && url2 . startsWith ( "www." ) && url2 . match ( /\./g ) ? . length >= 2 && ( url2 = ` http:// ${ url2 } ` ) , options . tryConvertEncoding ) ) try { url2 = stringToUTF8String ( url2 ) } catch { } const absoluteUrl = baseUrl ? URL . parse ( url2 , baseUrl ) : URL . parse ( url2 ) ; return _isValidProtocol ( absoluteUrl ) ? absoluteUrl : null } function updateUrlHash ( url2 , hash2 , allowRel = ! 1 ) { const res = URL . parse ( url2 ) ; return res ? ( res . hash = hash2 , res . href ) : allowRel && createValidAbsoluteUrl ( url2 ,
"http://example.com" ) ? url2 . split ( "#" , 1 ) [ 0 ] + ` ${ hash2 ? ` # ${ hash2 } ` : "" } ` : "" } function shadow ( obj , prop2 , value , nonSerializable = ! 1 ) { return Object . defineProperty ( obj , prop2 , { value , enumerable : ! nonSerializable , configurable : ! 0 , writable : ! 1 } ) , value } const BaseException = ( function ( ) { function BaseException2 ( message , name ) { this . message = message , this . name = name } return BaseException2 . prototype = new Error , BaseException2 . constructor = BaseException2 , BaseException2 } ) ( ) ; class PasswordException extends BaseException { constructor ( msg , code2 ) {
super ( msg , "Password Exception" ) , this . code = code2 } } class UnknownErrorException extends BaseException { constructor ( msg , details ){ super ( msg , "UnknownErrorException" ) , this . details = details } } class InvalidPDF Exception extends BaseException { constructor ( msg ) { super ( msg , "InvalidPDF Exception" ) } } class ResponseException extends BaseException { constructor ( msg , status , missing ) { super ( msg , "ResponseException" ) , this . status = status , this . missing = missing } } class FormatError extends BaseException { constructor ( msg ) { super ( msg , " For \
matError ")}}class AbortException extends BaseException{constructor(msg){super(msg," AbortException ")}}function bytesToString(bytes){(typeof bytes!=" object "||bytes?.length===void 0)&&unreachable(" Invalid argument for bytesToString " ) ; const length = bytes . length , MAX _ARGUMENT _COUNT = 8192 ; if ( length < MAX _ARGUMENT _COUNT ) return String . fromCharCode . apply ( null , bytes ) ; const strBuf = [ ] ; for ( let i = 0 ; i < length ; i += MAX _ARGUMENT _COUNT ) { const chunkEnd = Math . min ( i + MAX _ARGUMENT _COUNT , length ) , chunk = bytes . subarray ( i , chunkEnd ) ;
strBuf . push ( String . fromCharCode . apply ( null , chunk ) ) } return strBuf . join ( "" ) } function stringToBytes ( str ) { typeof str != "string" && unreachable ( "Invalid argument for stringToBytes" ) ; const length = str . length , bytes = new Uint8Array ( length ) ; for ( let i = 0 ; i < length ; ++ i ) bytes [ i ] = str . charCodeAt ( i ) & 255 ; return bytes } function string32 ( value ) { return String . fromCharCode ( value >> 24 & 255 , value >> 16 & 255 , value >> 8 & 255 , value & 255 ) } function isLittleEndian ( ) { const buffer8 = new Uint8Array ( 4 ) ; return buffer8 [ 0 ] = 1 , new Uint32Array ( buffer8 .
buffer , 0 , 1 ) [ 0 ] === 1 } function isEvalSupported ( ) { try { return new Function ( "" ) , ! 0 } catch { return ! 1 } } class util _FeatureTest { static get isLittleEndian ( ) { return shadow ( this , "isLittleEndian" , isLittleEndian ( ) ) } static get isEvalSupported ( ) { return shadow ( this , "isEvalSupported" , isEvalSupported ( ) ) } static get isOffscreenCanvasSupported ( ) { return shadow ( thi s , "isOffscreenCanvasSupported" , typeof OffscreenCanvas < "u " ) } static get isImageDecoder Supported ( ) { return shadow ( this , "isImageDecoder Supported" , typeof ImageDecoder <
"u" ) } static get platform ( ) { const { platform : platform2 , userAgent } = navigator ; return shadow ( this , "platform" , { isAndroid : userAgent . includes ( "Android" ) , isLinux : platform2 . includes ( "Linux" ) , isMac : platform2 . includes ( "Mac" ) , isWindows : platform2 . includes ( "Win" ) , isFirefox : userAgent . includes ( "Firefox" ) } ) } static get isCSSRoundSupported ( ) { return shadow ( this , "isCSSRoundSupported" , globalThis . CSS ? . supports ? . ( "width: round(1.5px, 1px)" ) ) } } const hexNumbers = Array . from ( Array ( 256 ) . keys ( ) , n => n . toString ( 16 ) . padStart ( 2 , "0" ) ) ;
class Util { static makeHexColor ( r2 , g , b ) { return ` # ${ hexNumbers [ r2 ] } ${ hexNumbers [ g ] } ${ hexNumbers [ b ] } ` } static scaleMinMax ( transform2 , minMax ) { let temp ; transform2 [ 0 ] ? ( transform2 [ 0 ] < 0 && ( temp = minMax [ 0 ] , minMax [ 0 ] = minMax [ 2 ] , minMax [ 2 ] = temp ) , minMax [ 0 ] *= transform2 [ 0 ] , minMax [ 2 ] *= transform2 [ 0 ] , transform2 [ 3 ] < 0 && ( temp = minMax [ 1 ] , minMax [ 1 ] = minMax [ 3 ] , minMax [ 3 ] = temp ) , minMax [ 1 ] *= transform2 [ 3 ] , minMax [ 3 ] *= transform2 [ 3 ] ) : ( temp = minMax [ 0 ] , minMax [ 0 ] = minMax [ 1 ] , minMax [ 1 ] = temp , temp = minMax [ 2 ] , minMax [ 2 ] = minMax [ 3 ] , minMax [ 3 ] = temp ,
transform2 [ 1 ] < 0 && ( temp = minMax [ 1 ] , minMax [ 1 ] = minMax [ 3 ] , minMax [ 3 ] = temp ) , minMax [ 1 ] *= transform2 [ 1 ] , minMax [ 3 ] *= transform2 [ 1 ] , transform2 [ 2 ] < 0 && ( temp = minMax [ 0 ] , minMax [ 0 ] = minMax [ 2 ] , minMax [ 2 ] = temp ) , minMax [ 0 ] *= transform2 [ 2 ] , minMax [ 2 ] *= transform2 [ 2 ] ) , minMax [ 0 ] += transform2 [ 4 ] , minMax [ 1 ] += transform2 [ 5 ] , minMax [ 2 ] += transform2 [ 4 ] , minMax [ 3 ] += transform2 [ 5 ] } static transform ( m1 , m2 ) { return [ m1 [ 0 ] * m2[ 0 ] + m1 [ 2 ] * m2 [ 1 ] , m1 [ 1 ] * m2 [ 0 ] + m1 [ 3 ] * m2 [ 1 ] , m1 [ 0 ] * m2 [ 2 ] + m1 [ 2 ] * m2 [ 3 ] , m1 [ 1 ] * m2 [ 2 ] + m1 [ 3 ] * m2 [ 3 ] , m1 [ 0 ] * m2 [ 4 ] + m1 [ 2 ] * m2 [ 5 ] + m1 [ 4 ] , m1 [ 1 ] *
m2 [ 4 ] + m1 [ 3 ] * m2 [ 5 ] + m1 [ 5 ] ] } static applyTransform ( p2 , m , pos = 0 ) { const p0 = p2 [ pos ] , p1 = p2 [ pos + 1 ] ; p2 [ pos ] = p0 * m [ 0 ] + p1 * m [ 2 ] + m [ 4 ] , p2 [ pos + 1 ] = p0 * m [ 1 ] + p1 * m [ 3 ] + m [ 5 ] } static applyTransformToBezier ( p2 , transform2 , pos = 0 ) { const m0 = transform2 [ 0 ] , m1 = transform2 [ 1 ] , m2 = transform2 [ 2 ] , m3 = transform2 [ 3 ] , m4 = transform2 [ 4 ] , m5 = transform2 [ 5 ] ; for ( let i = 0 ; i < 6 ; i += 2 ) { const pI = p2 [ pos + i ] , pI1 = p2 [ pos + i + 1 ] ; p2 [ pos + i ] = pI* m0 + pI1 * m2 + m4 , p2 [ pos + i + 1 ] = pI * m1 + pI1 * m3 + m5 } } static applyInverseTransform ( p2 , m ) { const p0 = p2 [ 0 ] , p1 = p2 [ 1 ] , d2 = m [ 0 ] * m [ 3 ] - m [ 1 ] * m [ 2 ] ;
p2 [ 0 ] = ( p0 * m [ 3 ] - p1 * m [ 2 ] + m [ 2 ] * m [ 5 ] - m [ 4 ] * m [ 3 ] ) / d2 , p2 [ 1 ] = ( - p0 * m [ 1 ] + p1 * m [ 0 ] + m [ 4 ] * m [ 1 ] - m [ 5 ] * m [ 0 ] ) / d2 } static axialAlignedBoundingBox ( rect , transform2 , output ) { const m0 = transform2 [ 0 ] , m1 = transform2 [ 1 ] , m2 = transform2 [ 2 ] , m3 = transform2 [ 3 ] , m4 = transform2 [ 4 ] , m5 = transform2 [ 5 ] , r0 = rect [ 0 ] , r1 = rect [ 1 ] , r2 = rect [ 2 ] , r3 = rect [ 3 ] ; let a0 = m0 * r0 + m4 , a2 = a0 , a1 = m0 * r2 + m4 , a3 = a1 , b0 = m3 * r1 + m5 , b2 = b0 , b1 = m3 * r3 + m5 , b3 = b1 ; if ( m1 !== 0 || m2 !== 0 ) { const m1r0 = m1 * r0 , m1r2 = m1 * r2 , m2r1 = m2 * r1 , m2r3 = m2 * r3 ; a0 += m2r1 , a3 += m2r1 , a1 += m2r3 , a2 += m2r3 , b0 += m1r0 , b3 += m1r0 ,
b1 += m1r2 , b2 += m1r2 } output [ 0 ] = Math . min ( output [ 0 ] , a0 , a1 , a2 , a3 ) , output [ 1 ] = Math . min ( output [ 1 ] , b0 , b1 , b2 , b3 ) , output [ 2 ] = Math . max ( output [ 2 ] , a0 , a1 , a2 , a3 ) , output [ 3 ] = Math . max ( output [ 3 ] , b0 , b1 , b2 , b3 ) } static inverseTransform ( m ) { const d2 = m [ 0 ] * m [ 3 ] - m [ 1 ] * m [ 2 ] ; return [ m [ 3 ] / d2 , - m [ 1 ] / d2 , - m [ 2 ] / d2 , m [ 0 ] / d2 , ( m [ 2 ] * m [ 5 ] - m [ 4 ] * m [ 3 ] ) / d2 , ( m [ 4 ] * m [ 1 ] - m [ 5 ] * m [ 0 ] ) / d2 ] } static singularValueDecompose2dScale ( matrix , output ) { const m0 = matrix [ 0 ] , m1 = matrix [ 1 ] , m2 = matrix [ 2 ] , m3 = matrix [ 3 ] , a = m0 * * 2 + m1 * * 2 , b = m0 * m2 + m1 * m3 , c2 = m2 * * 2 + m3 * * 2 , first = ( a + c2 ) /
2 , second = Math . sqrt ( first * * 2 - ( a * c2 - b * * 2 ) ) ; output [ 0 ] = Math . sqrt ( first + second || 1 ) , output [ 1 ] = Math . sqrt ( first - second || 1 ) } static normalizeRect ( rect ) { const r2 = rect . slice ( 0 ) ; return rect [ 0 ] > rect [ 2 ] && ( r2 [ 0 ] = rect [ 2 ] , r2 [ 2 ] = rect [ 0 ] ) , rect [ 1 ] > rect [ 3 ] && ( r2 [ 1 ] = rect [ 3 ] , r2 [ 3 ] = rect [ 1 ] ) , r2 } static intersect ( rect1 , rect2 ) { const xLow = Math . max ( Math . min ( rect1 [ 0 ] , rect1 [ 2 ] ) , Math . min ( rect2 [ 0 ] , rect2 [ 2 ] ) ) , xHigh = Math . min ( Math . max ( rect1 [ 0 ] , rect1 [ 2 ] ) , Math . max ( rect2 [ 0 ] , rect2 [ 2 ] ) ) ; if ( xLow > xHigh ) return null ; const yLow = Math . max ( Math . min (
rect1 [ 1 ] , rect1 [ 3 ] ) , Math . min ( rect2 [ 1 ] , rect2 [ 3 ] ) ) , yHigh = Math . min ( Math . max ( rect1 [ 1 ] , rect1 [ 3 ] ) , Math . max ( rect2 [ 1 ] , rect2 [ 3 ] ) ) ; return yLow > yHigh ? null : [ xLow , yLow , xHigh , yHigh ] } static pointBoundingBox ( x , y , minMax ) { minMax [ 0 ] = Math . min ( minMax [ 0 ] , x ) , minMax [ 1 ] = Math . min ( minMax [ 1 ] , y ) , minMax [ 2 ] = Math . max ( minMax [ 2 ] , x ) , minMax [ 3 ] = Math . max ( minMax [ 3 ] , y ) } static rectBoundingBox ( x0 , y0 , x1 , y1 , minMax ) { minMax [ 0 ] = Math . min ( minMax [ 0 ] , x0 , x1 ) , minMax [ 1 ] = Math . min ( minMax [ 1 ] , y0 , y1 ) , minMax [ 2 ] = Math . max ( minMax [ 2 ] , x0 , x1 ) , minMax [ 3 ] = Math . max (
minMax [ 3 ] , y0 , y1 ) } static # getExtremumOnCurve ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , t , minMax ) { if ( t <= 0 || t >= 1 ) return ; const mt = 1 - t , tt = t * t , ttt = tt * t , x = mt * ( mt * ( mt * x0 + 3 * t * x1 ) + 3 * tt * x2 ) + ttt * x3 , y = mt * ( mt * ( mt * y0 + 3 * t * y1 ) + 3 * tt * y2 ) + ttt * y3 ; minMax [ 0 ] = Math . min ( minMax [ 0 ] , x ) , minMax [ 1 ] = Math . min ( minMax [ 1 ] , y ) , minMax [ 2 ] = Math . max ( minMax [ 2 ] , x ) , minMax [ 3 ] = Math . max ( minMax [ 3 ] , y ) } static # getExtremum ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , a , b , c2 , minMax ) { if ( Math . abs ( a ) < 1e-12 ) { Math . abs ( b ) >= 1e-12 && this . # getExtremumOnCurve ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , - c2 / b , minMax ) ; return }
const delta = b * * 2 - 4 * c2 * a ; if ( delta < 0 ) return ; const sqrtDelta = Math . sqrt ( delta ) , a2 = 2 * a ; this . # getExtremumOnCurve ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , ( - b + sqrtDelta ) / a2 , minMax ) , this . # getExtremumOnCurve ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , ( - b - sqrtDelta ) / a2 , minMax ) } static bezierBoundingBox ( x0 , y0 , x1 , y1 , x2 , y2 , x3 , y3 , minMax ) { minMax [ 0 ] = Math . min ( minMax [ 0 ] , x0 , x3 ) , minMax [ 1 ] = Math . min ( minMax [ 1 ] , y0 , y3 ) , minMax [ 2 ] = Math . max ( minMax [ 2 ] , x0 , x3 ) , minMax [ 3 ] = Math . max ( minMax [ 3 ] , y0 , y3 ) , this . # getExtremum ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , 3 * ( - x0 + 3 * ( x1 - x2 ) + x3 ) , 6 * ( x0 -
2 * x1 + x2 ) , 3 * ( x1 - x0 ) , minMax ) , this . # getExtremum ( x0 , x1 , x2 , x3 , y0 , y1 , y2 , y3 , 3 * ( - y0 + 3 * ( y1 - y2 ) + y3 ) , 6 * ( y0 - 2 * y1 + y2 ) , 3 * ( y1 - y0 ) , minMax ) } } function stringToUTF8String ( str ) { return decodeURIComponent ( escape ( str ) ) } let NormalizeRegex = null , NormalizationMap = null ; function normalizeUnicode ( str ) { return NormalizeRegex || ( NormalizeRegex = /([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu ,
NormalizationMap = new Map ( [ [ "ſt" , "ſ t" ] ] ) ) , str . replaceAll ( NormalizeRegex , ( _ , p1 , p2 ) => p1 ? p1 . normalize ( "NFKC" ) : NormalizationMap . get ( p2 ) ) } function getUuid ( ) { if ( typeof crypto . randomUUID == "function" ) return crypto . randomUUID ( ) ; const buf = new Uint8Array ( 32 ) ; return crypto . getRandomValues ( buf ) , bytesToString ( buf ) } const AnnotationPrefix = "pdfjs_internal_id_" ; function _isValidExplicitDest ( validRef , validName , dest ) { if ( ! Array . isArray ( dest ) || dest . length < 2 ) return ! 1 ; const [ page2 , zoom , ... args ] = dest ; if ( ! validRef ( page2 ) &&
! Number . isInteger ( page2 ) || ! validName ( zoom ) ) return ! 1 ; const argsLen = args . length ; let allowNull = ! 0 ; switch ( zoom . name ) { case "XYZ" : if ( argsLen < 2 || argsLen > 3 ) return ! 1 ; break ; case "Fit" : case "FitB" : return argsLen === 0 ; case "FitH" : case "FitBH" : case "FitV" : case "FitBV" : if ( argsLen > 1 ) return ! 1 ; break ; case "FitR" : if ( argsLen !== 4 ) return ! 1 ; allowNull = ! 1 ; break ; default : return ! 1 } for ( const arg of args ) if ( ! ( typeof arg == "number" || allowNull && arg === null ) ) return ! 1 ; return ! 0 } function MathClamp ( v , min2 , max2 ) { return Math . min ( Math . max ( v , min2 ) ,
max2 ) } function toBase64Util ( arr ) { return Uint8Array . prototype . toBase64 ? arr . toBase64 ( ) : btoa ( bytesToString ( arr ) ) } function fromBase64Util ( str ) { return Uint8Array . fromBase64 ? Uint8Array . fromBase64 ( str ) : stringToBytes ( atob ( str ) ) } typeof Promise . try != "function" && ( Promise . try = function ( fn , ... args ) { return new Promise ( resolve2 => { resolve2 ( fn ( ... args ) ) } ) } ) ; typeof Math . sumPrecise != "function" && ( Math . sumPrecise = function ( numbers ) { return numbers . reduce ( ( a , b ) => a + b , 0 ) } ) ; const SVG _NS = "http://www.w3.org/2000/svg" ; class PixelsPerInch { static CSS = 96 ; static PDF = 72 ; static PDF _TO _CSS _UNITS = this .
@@ -6828,43 +6829,43 @@ preventDefault();const textFile=new File([text2],"Pasted",{type:MimeTypeText.PLA
isLoading : ! 0 , mcpPrompt : { serverName : promptInfo . serverName , promptName : promptInfo . name , arguments : args ? { ... args } : void 0 } } ; uploadedFiles ( [ ... uploadedFiles ( ) , placeholder2 ] ) , $$props . onUploadedFilesChange ? . ( uploadedFiles ( ) ) , get$3 ( textareaRef ) ? . focus ( ) } function handlePromptLoadComplete ( placeholderId , result ) { const promptText = result . messages ? . map ( msg => typeof msg . content == "string" ? msg . content : msg . content . type === ContentPartType . TEXT ? msg . content . text : "" ) . filter ( Boolean ) . join ( PROMPT _CONTENT _SEPARATOR ) ; uploadedFiles (
uploadedFiles ( ) . map ( f => f . id === placeholderId ? { ... f , isLoading : ! 1 , textContent : promptText , size : promptText . length , file : new File ( [ promptText ] , ` ${ f . name } ${ FileExtensionText . TXT } ` , { type : MimeTypeText . PLAIN } ) } : f ) ) , $$props . onUploadedFilesChange ? . ( uploadedFiles ( ) ) } function handlePromptLoadError ( placeholderId , error2 ) { uploadedFiles ( uploadedFiles ( ) . map ( f => f . id === placeholderId ? { ... f , isLoading : ! 1 , loadError : error2 } : f ) ) , $$props . onUploadedFilesChange ? . ( uploadedFiles ( ) ) } function handlePromptPickerClose ( ) { set$1 ( isPromptPickerOpen ,
! 1 ) , set$1 ( promptSearchQuery , "" ) , get$3 ( textareaRef ) ? . focus ( ) } function handleInlineResourcePickerClose ( ) { set$1 ( isInlineResourcePickerOpen , ! 1 ) , set$1 ( resourceSearchQuery , "" ) , get$3 ( textareaRef ) ? . focus ( ) } function handleInlineResourceSelect ( ) { value ( ) . startsWith ( RESOURCE _TRIGGER _PREFIX ) && ( value ( "" ) , $$props . onValueChange ? . ( "" ) ) , set$1 ( isInlineResourcePickerOpen , ! 1 ) , set$1 ( resourceSearchQuery , "" ) , get$3 ( textareaRef ) ? . focus ( ) } function handleBrowseResources ( ) { set$1 ( isInlineResourcePickerOpen , ! 1 ) , set$1 ( resourceSearchQuery ,
"" ) , value ( ) . startsWith ( RESOURCE _TRIGGER _PREFIX ) && ( value ( "" ) , $$props . onValueChange ? . ( "" ) ) , set$1 ( isResourceDialogOpen , ! 0 ) } async function handleMicClick ( ) { if ( ! audioRecorder || ! get$3 ( recordingSupported ) ) { console . warn ( "Audio recording not supported" ) ; return } if ( get$3 ( isRecording ) ) try { const audioBlob = await audioRecorder . stopRecording ( ) , wavBlob = await convertToWav ( audioBlob ) , audioFile = createAudioFile ( wavBlob ) ; $$props . onFilesAdd ? . ( [ audioFile ] ) , set$1 ( isRecording , ! 1 ) }catch ( error2 ) { console . error ( " Failed to st \
op recording : ",error2),set$1(isRecording,!1) }else try{await audioRecorder.startRecording(),set$1(isRecording,!0)}catch(error2){console.error(" Failed to start recording : " , error2 ) } } var $$exports = { focus : focus2 , resetTextareaHeight , openModelSelector , checkModelSelected } , fragment = root$15 ( ) , node2 = first _child ( fragment ) ; bind _this ( ChatFormFileInputInvisible ( node2 , { onFileSelect : handleFileSelect } ) , $$value => set$1 ( fileInputRef , $$value , ! 0 ) , ( ) => get$3 ( fileInputRef ) ) ; var form = sibling ( node2 , 2 ) , node _1 = child ( form ) ; bind _this (
ChatFormPromptPicker ( node _1 , { get isOpen ( ) { return get$3 ( isPromptPickerOpen ) } , get searchQuery ( ) { return get$3 ( promptSearchQuery ) } , onClose : handlePromptPickerClose , onPromptLoadStart : handlePromptLoadStart , onPromptLoadComplete : handlePromptLoadComplete , onPromptLoadError : handlePromptLoadError } ) , $$value => set$1 ( promptPickerRef , $$value , ! 0 ) , ( ) => get$3 ( promptPickerRef ) ) ; var node _2 = sibling ( node _1 , 2 ) ; bind _this ( ChatFormResourcePicker ( node _2 , { get isOpen ( ) { return get$3 ( isInlineResourcePickerOpen ) } , get searchQuery ( ) {
return get$3 ( resourceSearchQuery ) } , onClose : handleInlineResourcePickerClose , onResourceSelect : handleInlineResourceSelect , onBrowse : handleBrowseResources } ) , $$value => set$1 ( resourcePickerRef , $$value , ! 0 ) , ( ) => get$3 ( resourcePickerRef ) ) ; var div = sibling ( node _2 , 2 ) , node _3 = child ( div ) ; { let $0 = user _derived ( ( ) => get$3 ( activeModelId ) ? ? void 0 ) ; ChatAttachmentsList ( node _3 , { get attachments ( ) { return attachments ( ) } , onFileRemove : handleFileRemove , limitToSingleRow : ! 0 , class : "py-5" , style : "scroll-padding: 1rem;" , get activeModelId ( ) {
return get$3 ( $0 ) } , get uploadedFiles ( ) { return uploadedFiles ( ) } , set uploadedFiles ( $$value ) { uploadedFiles ( $$value ) } } ) } var div _1 = sibling ( node _3 , 2 ) , node _4 = child ( div _1 ) ; bind _this ( ChatFormTextarea ( node _4 , { class : "px-5 py-1.5 md:pt-0" , onKeydown : handleKeydown , onInput : ( ) => { handleInput ( ) , $$props . onValueChange ? . ( value ( ) ) } , get disabled ( ) { return disabled ( ) } , get placeholder ( ) { return placeholder ( ) } , get value ( ) { return value ( ) } , set value ( $$value ) { value ( $$value ) } } ) , $$value => set$1 ( textareaRef , $$value , ! 0 ) , ( ) => get$3 ( textareaRef ) ) ;
var node _5 = sibling ( node _4 , 2 ) ; { var consequent = $$anchor2 => { ChatAttachmentMcpResources ( $$anchor2 , { class : "mb-3" , onResourceClick : uri2 => { set$1 ( preSelectedResourceUri , uri2 , ! 0 ) , set$1 ( isResourceDialogOpen , ! 0 ) } } ) } , d2 = user _derived ( ( ) => mcpHasResourceAttachments ( ) ) ; if _block ( node _5 , $$render => { get$3 ( d2 ) && $$render ( consequent ) } ) } var node _6 = sibling ( node _5 , 2 ) ; { let $0 = user _derived ( ( ) => value ( ) . trim ( ) . length > 0 ) , $1 = user _derived ( ( ) => showMcpPromptButton ( ) ? ( ) => set$1 ( isPromptPickerOpen , ! 0 ) : void 0 ) ; bind _this ( ChatFormActions (
node _6 , { class : "px-3" , get canSend ( ) { return get$3 ( canSubmit ) } , get hasText ( ) { return get$3 ( $0 ) } , get disabled ( ) { return disabled ( ) } , get isLoading ( ) { return isLoading2 ( ) } , get isRecording ( ) { return get$3 ( isRecording ) } , get uploadedFiles ( ) { return uploadedFiles ( ) } , onFileUpload : handleFileUpload , onMicClick : handleMicClick , get onStop ( ) { return $$props . onStop } , onSystemPromptClick : ( ) => $$props . onSystemPromptClick ? . ( { message : value ( ) , files : uploadedFiles ( ) } ) , get onMcpPromptClick ( ) { return get$3 ( $1 ) } , onMcpResourcesClick : ( ) => set$1 (
isResourceDialogOpen , ! 0 ) } ) , $$value => set$1 ( chatFormActionsRef , $$value , ! 0 ) , ( ) => get$3 ( chatFormActionsRef ) ) } reset ( div _1 ) , reset ( div ) , reset ( form ) ; var node _7 = sibling ( form , 2 ) ; return DialogMcpResources ( node _7 , { get preSelectedUri ( ) { return get$3 ( preSelectedResourceUri ) } , onAttach : resource => { mcpStore . attachResource ( resource . uri ) } , onOpenChange : newOpen => { newOpen || set$1 ( preSelectedResourceUri , void 0 ) } , get open ( ) { return get$3 ( isResourceDialogOpen ) } , set open ( $$value ) { set$1 ( isResourceDialogOpen , $$value , ! 0 ) } } ) , template _effect (
( ) => { set _class ( form , 1 , ` relative ${ className ( ) ? ? "" } ` ) , set _class ( div , 1 , ` ${ INPUT _CLASSES ? ? "" } overflow-hidden rounded-3xl backdrop-blur-md ${ disabled ( ) ? "cursor-not-allowed opacity-60" : "" } ` ) } ) , event ( "submit" , form , e => { e . preventDefault ( ) , ! ( ! get$3 ( canSubmit ) || disabled ( ) || get$3 ( hasLoadingAttachments ) ) && $$props . onSubmit ? . ( ) } ) , event ( "paste" , div _1 , handlePaste ) , append ( $$anchor , fragment ) , pop ( $$exports ) } function Dropdown _menu _content ( $$anchor , $$props ) { push$1 ( $$props , ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , sideOffset = prop (
$$props , "sideOffset" , 3 , 4 ) , restProps = rest _props ( $$props , [ "$$slots" , "$$events" , "$$legacy" , "ref" , "sideOffset" , "portalProps" , "class" ] ) ; var fragment = comment$2 ( ) , node2 = first _child ( fragment ) ; component ( node2 , ( ) => Portal$2 , ( $$anchor2 , DropdownMenuPrimitive _Portal ) => { DropdownMenuPrimitive _Portal ( $$anchor2 , spread _props ( ( ) => $$props . portalProps , { children : ( $$anchor3 , $$slotProps ) => { var fragment _1 = comment$2 ( ) , node _1 = first _child ( fragment _1 ) ; { let $0 = user _derived ( ( ) => cn$1 ( " z - 50 max - h - ( -- bits - dropdown - menu - content - av \
ailable - height ) min - w - [ 8 rem ] origin - ( -- bits - dropdown - menu - content - transform - origin ) overflow - x - hidden overflow - y - auto rounded - md border border - border bg - popover p - 1.5 text - popover - foreground shadow - md outline - none data - [ side = bottom ] : slide - in - from - top - 2 data - [ side = left ] : slide - in - from - right - 2 data - [ side = right ] : slide - in - from - left - 2 data - [ side = top ] : slide - in - from - bottom - 2 data - [ state = closed ] : animate - out data - [ state = closed ] : fade - out - 0 data - [ state = closed ] : zoom - out - 95 data - [ state = open ] : animate - in data - [ \
state = op en] : fade - in - 0 data - [ state = open ] : zoom - in - 95 dark : border - border / 20 ",$$props.class));component(node_1,()=>Dropdown_menu_content$1,($$anchor4,DropdownMenuPrimitive_Content)=>{DropdownMenuPrimitive_Content($$anchor4,spread_props({" data - slot ":" dropdown - menu - content " , get sideOffset ( ) { return sideOffset ( ) } , get class ( ) { return get$3 ( $0 ) } } , ( ) => restProps , { get ref ( ) { return ref2 ( ) } , set ref ( $$value ) { ref2 ( $$value ) } } ) ) } ) } append ( $$anchor3 , fragment _1 ) } , $$slots : { default : ! 0 } } ) ) } ) , append ( $$anchor , fragment ) , pop ( ) }
function Dropdown _menu _item ( $$anchor , $$props ) { push$1 ( $$props , ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , variant = prop ( $$props , "variant" , 3 , "default" ) , restProps = rest _props ( $$props , [ "$$slots" , "$$events" , "$$legacy" , "ref" , "class" , "inset" , "variant" ] ) ; var fragment = comment$2 ( ) , node2 = first _child ( fragment ) ; { let $0 = user _derived ( ( ) => cn$1 ( " relative flex cursor - pointer items - center gap - 2 rounded - sm px - 2 py - 1.5 text - sm outline - hidden select - none data - highlighted : bg - accent data - highlighted : text - accent - foreground d \
ata - [ disabled ] : pointer - events - none data - [ disab led] : opacity - 50 data - [ inset ] : pl - 8 data - [ variant = destructive ] : text - destructive data - [ variant = destructive ] : data - highlighted : bg - destructive / 10 data - [ variant = destructive ] : data - highlighted : text - destructive dark : data - [ variant = destructive ] : data - highlighted : bg - destructive / 20 [ & _svg ] : pointer - events - none [ & _svg ] : shrink - 0 [ & _svg : not ( [ class *= 'size-' ] ) ] : size - 4 [ & _svg : not ( [ class *= 'text-' ] ) ] : text - muted - foreground data - [ variant = destructive ] : * : [ svg ] : ! text - destructive " ,
$$props . class ) ) ; component ( node2 , ( ) => Menu _item , ( $$anchor2 , DropdownMenuPrimitive _Item ) => { DropdownMenuPrimitive _Item ( $$anchor2 , spread _props ( { "data-slot" : "dropdown-menu-item" , get "data-inset" ( ) { return $$props . inset } , get "data-variant" ( ) { return variant ( ) } , get class ( ) { return get$3 ( $0 ) } } , ( ) => restProps , { get ref ( ) { return ref2 ( ) } , set ref ( $$value ) { ref2 ( $$value ) } } ) ) } ) } append ( $$anchor , fragment ) , pop ( ) } function Dropdown _menu _separator ( $$anchor , $$props ) { push$1 ( $$props , ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , restProps = rest _props (
$$props , [ "$$slots" , "$$events" , "$$legacy" , "ref" , "class" ] ) ; var fragment = comment$2 ( ) , node2 = first _child ( fragment ) ; { let $0 = user _derived ( ( ) => cn$1 ( "-mx-1 my-1 h-px bg-border/20" , $$props . class ) ) ; component ( node2 , ( ) => Menu _separator , ( $$anchor2 , DropdownMenuPrimitive _Separator ) => { DropdownMenuPrimitive _Separator ( $$anchor2 , spread _props ( { "data-slot" : "dropdown-menu-separator" , get class ( ) { return get$3 ( $0 ) } } , ( ) => restProps , { get ref ( ) { return ref2 ( ) } , set ref ( $$value ) { ref2 ( $$value ) } } ) ) } ) } append ( $$anchor , fragment ) , pop ( ) }
function Dropdown _menu _trigger ( $$anchor , $$props ) { push$1 ( $$props , ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , restProps = rest _props ( $$props , [ "$$slots" , "$$events" , "$$legacy" , "ref" ] ) ; var fragment = comment$2 ( ) , node2 = first _child ( fragment ) ; component ( node2 , ( ) => Menu _trigger , ( $$anchor2 , DropdownMenuPrimitive _Trigger ) => { DropdownMenuPrimitive _Trigger ( $$anchor2 , spread _props ( { "data-slot" : "dropdown-menu-trigger" } , ( ) => restProps , { get ref ( ) { return ref2 ( ) } , set ref ( $$value ) { ref2 ( $$value ) } } ) ) } ) , append ( $$anchor , fragment ) , pop ( ) }
function Dropdown _menu _sub _content ( $$anchor , $$props ) { push$1 ( $$props , ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , restProps = rest _props ( $$props , [ "$$slots" , "$$events" , "$$legacy" , "ref" , "class" ] ) ; var fragment = comment$2 ( ) , node2 = first _child ( fragment ) ; { let $0 = user _derived ( ( ) => cn$1 ( " z - 50 max - h - ( -- bits - dropdown - menu - content - available - height ) min - w - [ 8 rem ] origin - ( -- bits - dropdown - menu - content - transform - origin ) overflow - x - hidden overflow - y - auto rounded - md border border - border bg - popover p - 1.5 text - popover - foregr \
ound shadow - md outline - none data - [ side = bottom ] : slide - in - from - top - 2 data - [ side = left ] : slide - in - from - right - 2 data - [ side = right ] : slide - in - from - left - 2 data - [ side = top ] : slide - in - from - bottom - 2 data - [ state = closed ] : animate - out data - [ state = closed ] : fade - out - 0 data - [ state = closed ] : zoom - out - 95 data - [ state = open ] : animate - in data - [ state = open ] : fade - in - 0 data - [ state = open ] : zoom - in - 95 dark : border - border / 20 " , $$props . class ) ) ; component ( node2 , ( ) => Menu _sub _content, ( $$anchor2, DropdownMenuPrimitive _SubContent) => { DropdownMenuPrimitive _SubContent(
$$anchor2 , spread _props ( { "data-slot" : "dropdown-menu-sub-content" , get class ( ) { return get$3( $0 ) } } , ( ) => restProps , { get ref ( ) { return ref2( ) } , set ref ( $$value ) { ref2 ( $$value ) } } ) ) } ) } append( $$anchor, fragment) , pop ( ) } var root _1$D= from _html( "<!> <!>" , 1 ) ; function Dropdown _menu _sub _trigger( $$anchor, $$props) { push$1( $$props, ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , restProps= rest _props( $$props, [ "$$slots" , " $$events" , "$$legacy" , "ref" , "class" , "inset" , "children" ] ) ; var fragment= comment$2( ) , node2 = first _child( fragment) ; {
let $0 = user _derived ( ( ) => cn$1 ( "flex cursor- default items- center gap-2 rounded-sm px-2 py-1.5 text-sm outline- hidden select- none data- highlighted:bg- accent data- highlighted:text- accent- foreground data-[disabled]: pointer- events- none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[state=open]:bg- accent data-[state=open]:text- accent- foreground [&_svg]: pointer- events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted- foreground", $$props . class ) ) ; component (
node2 , ( ) => Menu _sub _trigger , ( $$anchor2 , DropdownMenuPrimitive _SubTrigger ) => { DropdownMenuPrimitive _SubTrigger ( $$anchor2 , spread _props ( { "data-slot" : "dropdown-menu-sub-trigger" , get "data-inset" ( ) { return $$props . inset } , get class ( ) { return get$3 ( $0 ) } } , ( ) => restProps , { get ref ( ) { return ref2 ( ) } , set ref ( $$value ) { ref2 ( $$value ) } , children : ( $$anchor3 , $$slotProps ) => { var fragment _1 = root _1$D ( ) , node _1 = first _child ( fragment _1 ) ; snippet ( node _1 , ( ) => $$props . children ? ? noop$3 ) ; var node _2 = sibling ( node _1 , 2 ) ; Chevron _right ( node _2 ,
{ class : "ml-auto size-4" } ) , append ( $$anchor3 , fragment _1 ) } , $$slots : { default : ! 0 } } ) ) } ) } append ( $$anchor , fragment ) , pop ( ) } const Sub = Menu _sub , Root$2 = Menu ; function useAttachmentMenu ( getFlags , getCallbacks , close2 ) { const modalityFlags = user _derived ( getFlags ) , callbacks = user _derived ( ( ) => { const cbs = getCallbacks ( ) , wrap2 = fn => ( ) => { close2 ( ) , fn ? . ( ) } ; return { [ AttachmentAction . FILE _UPLOAD ] : wrap2 ( cbs . onFileUpload ) , [ AttachmentAction . SYSTEM _PROMPT _CLICK ] : wrap2 ( cbs . onSystemPromptClick ) , [ AttachmentAction . MCP _PROMPT _CLICK ] : wrap2 (
cbs . onMcpPromptClick ) , [ AttachmentAction . MCP _RESOURCES _CLICK ] : wrap2 ( cbs . onMcpResourcesClick ) } } ) ; function isItemEnabled ( enabledWhen ) { return ! enabledWhen || enabledWhen === "always" ? ! 0 : ! ! get$3 ( modalityFlags ) [ enabledWhen ] } function isItemVisible ( visibleWhen ) { return visibleWhen ? ! ! get$3 ( modalityFlags ) [ visibleWhen ] : ! 0 } function getSystemMessageTooltip ( ) { return page$1 . params . id ? "Inject custom system message at the beginning of the conversation" : "Add custom system message for a new conversation" } return { get callbacks ( ) {
return get$3 ( callbacks ) } , isItemEnabled , isItemVisible , getSystemMessageTooltip } } var root _5$o = from _html ( '<span class="sr-only"> </span> <!>' , 1 ) , root _6$j = from _html ( "<p> </p>" ) , root _3$u = from _html ( "<!> <!>" , 1 ) , root _10$c = from _html ( "<!> <span> </span>" , 1 ) , root _14$5 = from _html ( "<!> <span> </span>" , 1 ) , root _15$7 = from _html ( "<p> </p>" ) , root _12$7 = from _html ( "<!> <!>" , 1 ) , root _20$4 = from _html ( "<!> <span> </span>" , 1 ) , root _21$5 = from _html ( "<p>PDFs will be converted to text. Image-based PDFs may not work properly.</p>" ) ,
root _17$8 = from _html ( "<!> <!>" , 1 ) , root _26= from _html( "<!> <span> </span> " , 1 ) ,root _27$ 1 =from _htm l ("<p> </p> " ) ,root _24$ 1 =from _htm l ("<!> <!> " , 1 ) ,root _30$ 1 =from _htm l ("<!> <span> </span> " , 1 ) ,root _7$ j =from _htm l ("<!> <!> <!> <!> <!> <!> <!> " , 1 ) ,root _1$ C =from _htm l ("<!> <!> " , 1 ) ,root$1 4 =from _htm l ("<div><!></div> " ) ;function ChatFormActionAttachmentsDropdow n ($$ancho r ,$$prop s ) {push$ 1 ($$prop s , ! 0 ) ;let classNam e =pro p ($$prop s ,"class " , 3 ," " ) ,disable d =pro p ($$prop s ,"disabled " , 3 , ! 1 ) ,hasAudioModalit y =pro p ($$prop s ," hasAu \
dioModality ",3,!1),hasVisionModality=prop( $$props," hasVisionModality",3,!1), hasMcpPromptsSupport=prop( $$props," hasMcpPromptsSupport",3,!1), hasMcpResourcesSupport=prop( $$props," hasMcpResourcesSupport ", 3 , ! 1 ) , dropdownOpen = state$1 ( ! 1 ) ; function handleMcpSettingsClick ( ) { set$1 ( dropdownOpen , ! 1 ) , $$props . onMcpSettingsClick ? . ( ) } const attachmentMenu = useAttachmentMenu ( ( ) => ( { hasVisionModality : hasVisionModality ( ) , hasAudioModality : hasAudioModality ( ) , hasMcpPromptsSupport : hasMcpPromptsSupport ( ) , hasMcpResourcesSupport : hasMcpResourcesSupport ( ) } ) ,
( ) => ( { onFileUpload : $$props . onFileUpload , onSystemPromptClick : $$props . onSystemPromptClick , onMcpPromptClick : $$props . onMcpPromptClick , onMcpResourcesClick : $$props . onMcpResourcesClick } ) , ( ) => { set$1 ( dropdownOpen , ! 1 ) } ) ; var div = root$14 ( ) , node2 = child ( div ) ; component ( node2 , ( ) => Root$2 , ( $$anchor2 , DropdownMenu _Root ) => { DropdownMenu _Root ( $$anchor2 , { get open ( ) { return get$3 ( dropdownOpen ) } , set open ( $$value ) { set$1 ( dropdownOpen , $$value , ! 0 ) } , children : ( $$anchor3 , $$slotProps ) => { var fragment = root _1$C ( ) , node _1 = first _child (
fragment ) ; component ( node _1 , ( ) => Dropdown _menu _trigger , ( $$anchor4 , DropdownMenu _Trigger ) => { DropdownMenu _Trigger ( $$anchor4 , { name : "Attach files" , get disabled ( ) { return disabled ( ) } , children : ( $$anchor5 , $$slotProps2 ) => { var fragment _1 = comment$2 ( ) , node _2 = first _child ( fragment _1 ) ; component ( node _2 , ( ) => Root$5 , ( $$anchor6 , Tooltip _Root ) => { Tooltip _Root ( $$anchor6 , { children : ( $$anchor7 , $$slotProps3 ) => { var fragment _2 = root _3$u ( ) , node _3 = first _child ( fragment _2 ) ; component ( node _3 , ( ) => Tooltip _trigger , ( $$anchor8 , Tooltip _Trigger ) => {
Tooltip _Trigger ( $$anchor8 , { class : "w-full" , children : ( $$anchor9 , $$slotProps4 ) => { Button ( $$anchor9 , { class : "file-upload-button h-8 w-8 rounded-full p-0" , get disabled ( ) { return disabled ( ) } , variant : "secondary" , type : "button" , children : ( $$anchor10 , $$slotProps5 ) => { var fragment _4 = root _5$o ( ) , span = first _child ( fragment _4 ) , text2 = child ( span , ! 0 ) ; reset ( span ) ; var node _4 = sibling ( span , 2 ) ; Plus ( node _4 , { class : "h-4 w-4" } ) , template _effect ( ( ) => set _text ( text2 , ATTACHMENT _TOOLTIP _TEXT ) ) , append ( $$anchor10 , fragment _4 ) } , $$slots : {
default : ! 0 } } ) } , $$slots : { default : ! 0 } } ) } ) ; var node _5 = sibling ( node _3 , 2 ) ; component ( node _5 , ( ) => Tooltip _content , ( $$anchor8 , Tooltip _Content ) => { Tooltip _Content ( $$anchor8 , { children : ( $$anchor9 , $$slotProps4 ) => { var p2 = root _6$j ( ) , text _1 = child ( p2 , ! 0 ) ; reset ( p2 ) , template _effect ( ( ) => set _text ( text _1 , ATTACHMENT _TOOLTIP _TEXT ) ) , append ( $$anchor9 , p2 ) } , $$slots : { default : ! 0 } } ) } ) , append ( $$anchor7 , fragment _2 ) } , $$slots : { default : ! 0 } } ) } ) , append ( $$anchor5 , fragment _1 ) } , $$slots : { default : ! 0 } } ) } ) ; var node _6 = sibling ( node _1 , 2 ) ; component (
node _6 , ( ) => Dropdown _menu _content , ( $$anchor4 , DropdownMenu _Content ) => { DropdownMenu _Content ( $$anchor4 , { align : "start" , class : "w-48" , children : ( $$anchor5 , $$slotProps2 ) => { var fragment _5 = root _7$j ( ) , node _7 = first _child ( fragment _5 ) ; each ( node _7 , 17 , ( ) => ATTACHMENT _FILE _ITEMS , item => item . id , ( $$anchor6 , item ) => { const enabled = user _derived ( ( ) => attachmentMenu . isItemEnabled ( get$3 ( item ) . enabledWhen ) ) ; var fragment _6 = comment$2 ( ) , node _8 = first _child ( fragment _6 ) ; { var consequent = $$anchor7 => { var fragment _7 = comment$2 ( ) , node _9 = first _child (
fragment _7 ) ; { let $0 = user _derived ( ( ) => get$3 ( item ) . class ? ? "" ) ; component ( node _9 , ( ) => Dropdown _menu _item , ( $$anchor8 , DropdownMenu _Item ) => { DropdownMenu _Item ( $$anchor8 , { get class ( ) { return ` ${ get$3 ( $0 ) ? ? "" } flex cursor-pointer items-center gap-2 ` } , onclick : ( ) => attachmentMenu . callbacks [ get$3 ( item ) . action ] ( ) , children : ( $$anchor9 , $$slotProps3 ) => { var fragment _8 = root _10$c ( ) , node _10 = first _child ( fragment _8 ) ; component ( node _10 , ( ) => get$3 ( item ) . icon , ( $$anchor10 , item _icon ) => { item _icon ( $$anchor10 , { class : "h-4 w-4" } ) } ) ; var span _1 = sibling (
node _10 , 2 ) , text _2 = child ( span _1 , ! 0 ) ; reset ( span _1 ) , template _effect ( ( ) => set _text ( text _2 , get$3 ( item ) . label ) ) , append ( $$anchor9 , fragment _8 ) } , $$slots : { default : ! 0 } } ) } ) } append ( $$anchor7 , fragment _7 ) } , consequent _1 = $$anchor7 => { var fragment _9 = comment$2 ( ) , node _11 = first _child ( fragment _9 ) ; component ( node _11 , ( ) => Root$5 , ( $$anchor8 , Tooltip _Root _1 ) => { Tooltip _Root _1 ( $$anchor8 , { get delayDuration ( ) { return TOOLTIP _DELAY _DURATION } , children : ( $$anchor9 , $$slotProps3 ) => { var fragment _10 = root _12$7 ( ) , node _12 = first _child ( fragment _10 ) ;
component ( node _12 , ( ) => Tooltip _trigger , ( $$anchor10 , Tooltip _Trigger _1 ) => { Tooltip _Trigger _1 ( $$anchor10 , { class : "w-full" , children : ( $$anchor11 , $$slotProps4 ) => { var fragment _11 = comment$2 ( ) , node _13 = first _child ( fragment _11 ) ; { let $0 = user _derived ( ( ) => get$3 ( item ) . class ? ? "" ) ; component ( node _13 , ( ) => Dropdown _menu _item , ( $$anchor12 , DropdownMenu _Item _1 ) => { DropdownMenu _Item _1 ( $$anchor12 , { get class ( ) { return ` ${ get$3 ( $0 ) ? ? "" } flex cursor-pointer items-center gap-2 ` } , disabled : ! 0 , children : ( $$anchor13 , $$slotProps5 ) => { var fragment _12 = root _14$5 ( ) ,
node _14 = first _child ( fragment _12 ) ; component ( node _14 , ( ) => get$3 ( item ) . icon , ( $$anchor14 , item _icon _1 ) => { item _icon _1 ( $$anchor14 , { class : "h-4 w-4" } ) } ) ; var span _2 = sibling ( node _14 , 2 ) , text _3 = child ( span _2 , ! 0 ) ; reset ( span _2 ) , template _effect ( ( ) => set _text ( text _3 , get$3 ( item ) . label ) ) , append ( $$anchor13 , fragment _12 ) } , $$slots : { default : ! 0 } } ) } ) } append ( $$anchor11 , fragment _11 ) } , $$slots : { default : ! 0 } } ) } ) ; var node _15 = sibling ( node _12 , 2 ) ; component ( node _15 , ( ) => Tooltip _content , ( $$anchor10 , Tooltip _Content _1 ) => { Tooltip _Content _1 (
$$anchor10 , { side : "r ight", children : ( $$anchor11 , $$slotProps4 ) => { var p _1 = root _15$7 ( ) , text _4 = child ( p _1 , ! 0 ) ; reset ( p _1 ) , template _effect ( ( ) => set _text ( text _4 , get$3 ( item ) . disabledTooltip ) ) , append ( $$anchor11 , p _1 ) } , $$slots : { default : ! 0 } } ) } ) , append ( $$anchor9 , fragment _10 ) } , $$slots : { default : ! 0 } } ) } ) , append ( $$anchor7 , fragment _9 ) } ; if _block ( node _8 , $$render => { get$3 ( enabled ) ? $$render ( consequent ) : get$3 ( item ) . disabledTooltip && $$render ( consequent _1 , 1 ) } ) } append ( $$anchor6 , fragment _6 ) } ) ; var node _16 = sibling ( node _7 , 2 ) ; { var consequent _3 = $$anchor6 => {
"" ) , value ( ) . startsWith ( RESOURCE _TRIGGER _PREFIX ) && ( value ( "" ) , $$props . onValueChange ? . ( "" ) ) , set$1 ( isResourceDialogOpen , ! 0 ) } async function handleMicClick ( ) { if ( ! audioRecorder || ! get$3 ( recordingSupported ) ) { console . warn ( "Audio recording not supported" ) ; return } if ( get$3 ( isRecording ) ) { set$1 ( isRecording , ! 1 ) ; try { const audioBlob = await audioRecorder . stopRecording ( ) , wavBlob = await convertToWav ( audioBlob ) , audioFile = createAudioFile ( wavBlob ) ; $$props . onFilesAdd ? . ( [ audioFile ] ) } catch ( error2 ) { console . error ( " Failed to s \
t op recording : ",error2)} }else try{await audioRecorder.startRecording(),set$1(isRecording,!0)}catch(error2){console.error(" Failed to start recording : " , error2 ) } } var $$exports = { focus : focus2 , resetTextareaHeight , openModelSelector , checkModelSelected } , fragment = root$15 ( ) , node2 = first _child ( fragment ) ; bind _this ( ChatFormFileInputInvisible ( node2 , { onFileSelect : handleFileSelect } ) , $$value => set$1 ( fileInputRef , $$value , ! 0 ) , ( ) => get$3 ( fileInputRef ) ) ; var form = sibling ( node2 , 2 ) , node _1 = child ( form ) ; bind _this ( ChatFormPromptPicker (
node _1 , { get isOpen ( ) { return get$3 ( isPromptPickerOpen ) } , get searchQuery ( ) { return get$3 ( promptSearchQuery ) } , onClose : handlePromptPickerClose , onPromptLoadStart : handlePromptLoadStart , onPromptLoadComplete : handlePromptLoadComplete , onPromptLoadError : handlePromptLoadError } ) , $$value => set$1 ( promptPickerRef , $$value , ! 0 ) , ( ) => get$3 ( promptPickerRef ) ) ; var node _2 = sibling ( node _1 , 2 ) ; bind _this ( ChatFormResourcePicker ( node _2 , { get isOpen ( ) { return get$3 ( isInlineResourcePickerOpen ) } , get searchQuery ( ) { return get$3 ( resourceSearchQuery ) } ,
onClose : handleInlineResourcePickerClose , onResourceSelect : handleInlineResourceSelect , onBrowse : handleBrowseResources } ) , $$value => set$1 ( resourcePickerRef , $$value , ! 0 ) , ( ) => get$3 ( resourcePickerRef ) ) ; var div = sibling ( node _2 , 2 ) , node _3 = child ( div ) ; { let $0 = user _derived ( ( ) => get$3 ( activeModelId ) ? ? void 0 ) ; ChatAttachmentsList ( node _3 , { get attachments ( ) { return attachments ( ) } , onFileRemove : handleFileRemove , limitToSingleRow : ! 0 , class : "py-5" , style : "scroll-padding: 1rem;" , get activeModelId ( ) { return get$3 ( $0 ) } , get uploadedFiles ( ) {
return uploadedFiles ( ) } , set uploadedFiles ( $$value ) { uploadedFiles ( $$value ) } } ) } var div _1 = sibling ( node _3 , 2 ) , node _4 = child ( div _1 ) ; bind _this ( ChatFormTextarea ( node _4 , { class : "px-5 py-1.5 md:pt-0" , onKeydown : handleKeydown , onInput : ( ) => { handleInput ( ) , $$props . onValueChange ? . ( value ( ) ) } , get disabled ( ) { return disabled ( ) } , get placeholder ( ) { return placeholder ( ) } , get value ( ) { return value ( ) } , set value ( $$value ) { value ( $$value ) } } ) , $$value => set$1 ( textareaRef , $$value , ! 0 ) , ( ) => get$3 ( textareaRef ) ) ; var node _5 = sibling ( node _4 ,
2 ) ; { var consequent = $$anchor2 => { ChatAttachmentMcpResources ( $$anchor2 , { class : "mb-3" , onResourceClick : uri2 => { set$1 ( preSelectedResourceUri , uri2 , ! 0 ) , set$1 ( isResourceDialogOpen , ! 0 ) } } ) } , d2 = user _derived ( ( ) => mcpHasResourceAttachments ( ) ) ; if _block ( node _5 , $$render => { get$3 ( d2 ) && $$render ( consequent ) } ) } var node _6 = sibling ( node _5 , 2 ) ; { let $0 = user _derived ( ( ) => value ( ) . trim ( ) . length > 0 ) , $1 = user _derived ( ( ) => showMcpPromptButton ( ) ? ( ) => set$1 ( isPromptPickerOpen , ! 0 ) : void 0 ) ; bind _this ( ChatFormActions ( node _6 , { class : "px-3" , get canSend ( ) {
return get$3 ( canSubmit ) } , get hasText ( ) { return get$3 ( $0 ) } , get disabled ( ) { return disabled ( ) } , get isLoading ( ) { return isLoading2 ( ) } , get isRecording ( ) { return get$3 ( isRecording ) } , get uploadedFiles ( ) { return uploadedFiles ( ) } , onFileUpload : handleFileUpload , onMicClick : handleMicClick , get onStop ( ) { return $$props . onStop } , onSystemPromptClick : ( ) => $$props . onSystemPromptClick ? . ( { message : value ( ) , files : uploadedFiles ( ) } ) , get onMcpPromptClick ( ) { return get$3 ( $1 ) } , onMcpResourcesClick : ( ) => set$1 ( isResourceDialogOpen , ! 0 ) } ) ,
$$value => set$1 ( chatFormActionsRef , $$value , ! 0 ) , ( ) => get$3 ( chatFormActionsRef ) ) } reset ( div _1 ) , reset ( div ) , reset ( form ) ; var node _7 = sibling ( form , 2 ) ; return DialogMcpResources ( node _7 , { get preSelectedUri ( ) { return get$3 ( preSelectedResourceUri ) } , onAttach : resource => { mcpStore . attachResource ( resource . uri ) } , onOpenChange : newOpen => { newOpen || set$1 ( preSelectedResourceUri , void 0 ) } , get open ( ) { return get$3 ( isResourceDialogOpen ) } , set open ( $$value ) { set$1 ( isResourceDialogOpen , $$value , ! 0 ) } } ) , template _effect ( ( ) => { set _class (
form , 1 , ` relative ${ className ( ) ? ? "" } ` ) , set _class ( div , 1 , ` ${ INPUT _CLASSES ? ? "" } overflow-hidden rounded-3xl backdrop-blur-md ${ disabled ( ) ? "cursor-not-allowed opacity-60" : "" } ` ) } ) , event ( "submit" , form , e => { e . preventDefault ( ) , ! ( ! get$3 ( canSubmit ) || disabled ( ) || get$3 ( hasLoadingAttachments ) ) && $$props . onSubmit ? . ( ) } ) , event ( "paste" , div _1 , handlePaste ) , append ( $$anchor , fragment ) , pop ( $$exports ) } function Dropdown _menu _content ( $$anchor , $$props ) { push$1 ( $$props , ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , sideOffset = prop ( $$props ,
"sideOffset" , 3 , 4 ) , restProps = rest _props ( $$props , [ "$$slots" , "$$events" , "$$legacy" , "ref" , "sideOffset" , "portalProps" , "class" ] ) ; var fragment = comment$2 ( ) , node2 = first _child ( fragment ) ; component ( node2 , ( ) => Portal$2 , ( $$anchor2 , DropdownMenuPrimitive _Portal ) => { DropdownMenuPrimitive _Portal ( $$anchor2 , spread _props ( ( ) => $$props . portalProps , { children : ( $$anchor3 , $$slotProps ) => { var fragment _1 = comment$2 ( ) , node _1 = first _child ( fragment _1 ) ; { let $0 = user _derived ( ( ) => cn$1 ( " z - 50 max - h - ( -- bits - dropdown - menu - content - available - \
height ) min - w - [ 8 rem ] origin - ( -- bits - dropdown - menu - content - transform - origin ) overflow - x - hidden overflow - y - auto rounded - md border border - border bg - popover p - 1.5 text - popover - foreground shadow - md outline - none data - [ side = bottom ] : slide - in - from - top - 2 data - [ side = left ] : slide - in - from - right - 2 data - [ side = right ] : slide - in - from - left - 2 data - [ side = top ] : slide - in - from - bottom - 2 data - [ state = closed ] : animate - out data - [ state = closed ] : fade - out - 0 data - [ state = closed ] : zoom - out - 95 data - [ state = open ] : animate - in data - [ state = op \
en ] : fade - in - 0 data - [ state = open ] : zoom - in - 95 dark : border - border / 20 ",$$props.class));component(node_1,()=>Dropdown_menu_content$1,($$anchor4,DropdownMenuPrimitive_Content)=>{DropdownMenuPrimitive_Content($$anchor4,spread_props({" data - slot ":" dropdown - menu - content " , get sideOffset ( ) { return sideOffset ( ) } , get class ( ) { return get$3 ( $0 ) } } , ( ) => restProps , { get ref ( ) { return ref2 ( ) } , set ref ( $$value ) { ref2 ( $$value ) } } ) ) } ) } append ( $$anchor3 , fragment _1 ) } , $$slots : { default : ! 0 } } ) ) } ) , append ( $$anchor , fragment ) , pop ( ) } function Dropdown _menu _item ( $$anchor , $$props ) {
push$1 ( $$props , ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , variant = prop ( $$props , "variant" , 3 , "default" ) , restProps = rest _props ( $$props , [ "$$slots" , "$$events" , "$$legacy" , "ref" , "class" , "inset" , "variant" ] ) ; var fragment = comment$2 ( ) , node2 = first _child ( fragment ) ; { let $0 = user _derived ( ( ) => cn$1 ( " relative flex cursor - pointer items - center gap - 2 rounded - sm px - 2 py - 1.5 text - sm outline - hidden select - none data - highlighted : bg - accent data - highlighted : text - accent - foreground data - [ disabled ] : pointer - events - none data - [ disab \
led ] : opacity - 50 data - [ inset ] : pl - 8 data - [ variant = destructive ] : text - destructive data - [ variant = destructive ] : data - highlighted : bg - destructive / 10 data - [ variant = destructive ] : data - highlighted : text - destructive dark : data - [ variant = destructive ] : data - highlighted : bg - destructive / 20 [ & _svg ] : pointer - events - none [ & _svg ] : shrink - 0 [ & _svg : not ( [ class *= 'size-' ] ) ] : size - 4 [ & _svg : not ( [ class *= 'text-' ] ) ] : text - muted - foreground data - [ variant = destructive ] : * : [ svg ] : ! text - destructive " , $$props . class ) ) ; component ( node2 , ( ) => Menu _item ,
( $$anchor2 , DropdownMenuPrimitive _Item ) => { DropdownMenuPrimitive _Item ( $$anchor2 , spread _props ( { "data-slot" : "dropdown-menu-item" , get "data-inset" ( ) { return $$props . inset } , get "data-variant" ( ) { return variant ( ) } , get class ( ) { return get$3 ( $0 ) } } , ( ) => restProps , { get ref ( ) { return ref2 ( ) } , set ref ( $$value ) { ref2 ( $$value ) } } ) ) } ) } append ( $$anchor , fragment ) , pop ( ) } function Dropdown _menu _separator ( $$anchor , $$props ) { push$1 ( $$props , ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , restProps = rest _props ( $$props , [ "$$slots" , "$$events" ,
"$$legacy" , "ref" , "class" ] ) ; var fragment = comment$2 ( ) , node2 = first _child ( fragment ) ; { let $0 = user _derived ( ( ) => cn$1 ( "-mx-1 my-1 h-px bg-border/20" , $$props . class ) ) ; component ( node2 , ( ) => Menu _separator , ( $$anchor2 , DropdownMenuPrimitive _Separator ) => { DropdownMenuPrimitive _Separator ( $$anchor2 , spread _props ( { "data-slot" : "dropdown-menu-separator" , get class ( ) { return get$3 ( $0 ) } } , ( ) => restProps , { get ref ( ) { return ref2 ( ) } , set ref ( $$value ) { ref2 ( $$value ) } } ) ) } ) } append ( $$anchor , fragment ) , pop ( ) } function Dropdown _menu _trigger ( $$anchor , $$props ) {
push$1 ( $$props , ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , restProps = rest _props ( $$props , [ "$$slots" , "$$events" , "$$legacy" , "ref" ] ) ; var fragment = comment$2 ( ) , node2 = first _child ( fragment ) ; component ( node2 , ( ) => Menu _trigger , ( $$anchor2 , DropdownMenuPrimitive _Trigger ) => { DropdownMenuPrimitive _Trigger ( $$anchor2 , spread _props ( { "data-slot" : "dropdown-menu-trigger" } , ( ) => restProps , { get ref ( ) { return ref2 ( ) } , set ref ( $$value ) { ref2 ( $$value ) } } ) ) } ) , append ( $$anchor , fragment ) , pop ( ) } function Dropdown _menu _sub _content ( $$anchor , $$props ) {
push$1 ( $$props , ! 0 ) ; let ref2 = prop ( $$props , "ref" , 15 , null ) , restProps = rest _props ( $$props , [ "$$slots" , "$$events" , "$$legacy" , "ref" , "class" ] ) ; var fragment = comment$2 ( ) , node2 = first _child ( fragment ) ; { let $0 = user _derived ( ( ) => cn$1 ( " z - 50 max - h - ( -- bits - dropdown - menu - content - available - height ) min - w - [ 8 rem ] origin - ( -- bits - dropdown - menu - content - transform - origin ) overflow - x - hidden overflow - y - auto rounded - md border border - border bg - popover p - 1.5 text - popover - foreground shadow - md outline - none data - [ side = bottom ] : slide - \
in - from - top - 2 data - [ side = left ] : slide - in - from - right - 2 data - [ side = right ] : slide - in - from - left - 2 data - [ side = top ] : slide - in - from - bottom - 2 data - [ state = closed ] : animate - out data - [ state = closed ] : fade - out - 0 data - [ state = closed ] : zoom - out - 95 data - [ state = open ] : animate - in data - [ state = open ] : fade - in - 0 data - [ state = open ] : zoom - in - 95 dark : border - border / 20 ",$$props.class));component(node2,()=> Menu_sub_content,( $$anchor2, DropdownMenuPrimitive_SubContent)=>{ DropdownMenuPrimitive_SubContent($$anchor2,spread_props({" data - sl \
ot ":" dropdown - menu - sub - content ",get class(){ return get$3($0)}},()=>restProps,{get ref(){ return ref2()},set ref($$value){ref2($$value)}}))})} append( $$anchor, fragment),pop()}var root_1$D= from_html(" < ! > < ! > ",1); function Dropdown_menu_sub_trigger( $$anchor, $$props){ push$1( $$props,!0);let ref2=prop($$props," ref ",15,null), restProps= rest_props( $$props,[" $$slots "," $$events"," $$legacy"," ref "," class "," inset "," children "]);var fragment= comment$2(),node2= first_child( fragment);{let $0=user_derived(()=>cn$1(" fl \
ex cursor - default items- center gap - 2 rounded - sm px - 2 py - 1.5 text - sm outline- hidden select- none data- highlighted: bg - accent data- highlighted: text - accent- foreground data- [ disabled ] : pointer- events- none data- [ disabled ] : opacity - 50 data - [ inset ] : pl - 8 data - [ state = open ] : bg - accent data- [ state = open ] : text - accent- foreground [ & _svg ] : pointer- events- none [ & _svg ] : shrink - 0 [ & _svg : not ( [ class *= 'size-' ] ) ] : size - 4 [ & _svg : not ( [ class *= 'text-' ] ) ] : text - muted - foreground ", $$props . class ) ) ; component ( node2 , ( ) => Menu _sub _trigger ,
( $$anchor2 , DropdownMenuPrimitive _SubTrigger ) => { DropdownMenuPrimitive _SubTrigger ( $$anchor2 , spread _props ( { "data-slot" : "dropdown-menu-sub-trigger" , get "data-inset" ( ) { return $$props . inset } , get class ( ) { return get$3 ( $0 ) } } , ( ) => restProps , { get ref ( ) { return ref2 ( ) } , set ref ( $$value ) { ref2 ( $$value ) } , children : ( $$anchor3 , $$slotProps ) => { var fragment _1 = root _1$D ( ) , node _1 = first _child ( fragment _1 ) ; snippet ( node _1 , ( ) => $$props . children ? ? noop$3 ) ; var node _2 = sibling ( node _1 , 2 ) ; Chevron _right ( node _2 , { class : "ml-auto size-4" } ) ,
append ( $$anchor3 , fragment _1 ) } , $$slots : { default : ! 0 } } ) ) } ) } append ( $$anchor , fragment ) , pop ( ) } const Sub = Menu _sub , Root$2 = Menu ; function useAttachmentMenu ( getFlags , getCallbacks , close2 ) { const modalityFlags = user _derived ( getFlags ) , callbacks = user _derived ( ( ) => { const cbs = getCallbacks ( ) , wrap2 = fn => ( ) => { close2 ( ) , fn ? . ( ) } ; return { [ AttachmentAction . FILE _UPLOAD ] : wrap2 ( cbs . onFileUpload ) , [ AttachmentAction . SYSTEM _PROMPT _CLICK ] : wrap2 ( cbs . onSystemPromptClick ) , [ AttachmentAction . MCP _PROMPT _CLICK ] : wrap2 ( cbs . onMcpPromptClick ) ,
[ AttachmentAction . MCP _RESOURCES _CLICK ] : wrap2 ( cbs . onMcpResourcesClick ) } } ) ; function isItemEnabled ( enabledWhen ) { return ! enabledWhen || enabledWhen === "always" ? ! 0 : ! ! get$3 ( modalityFlags ) [ enabledWhen ] } function isItemVisible ( visibleWhen ) { return visibleWhen ? ! ! get$3 ( modalityFlags ) [ visibleWhen ] : ! 0 } function getSystemMessageTooltip ( ) { return page$1 . params . id ? "Inject custom system message at the beginning of the conversation" : "Add custom system message for a new conversation" } return { get callbacks ( ) { return get$3 ( callbacks ) } ,
isItemEnabled , isItemVisible , getSystemMessageTooltip } } var root _5$o = from _html ( '<span class="sr-only"> </span> <!>' , 1 ) , root _6$j = from _html ( "<p> </p>" ) , root _3$u = from _html ( "<!> <!>" , 1 ) , root _10$c = from _html ( "<!> <span> </span>" , 1 ) , root _14$5 = from _html ( "<!> <span> </span>" , 1 ) , root _15$7 = from _html ( "<p> </p>" ) , root _12$7 = from _html ( "<!> <!>" , 1 ) , root _20$4 = from _html ( "<!> <span> </span>" , 1 ) , root _21$5 = from _html ( "<p>PDFs will be converted to text. Image-based PDFs may not work properly.</p>" ) , root _17$8 = from _html ( " < \
! > < ! > ",1), root_26= from_html(" < ! > < span > < / s p a n > " , 1 ) ,r o o t _ 2 7 $ 1 =f r o m _ h t m l (" < p > < / p > " ) ,r o o t _ 2 4 $ 1 =f r o m _ h t m l (" < ! > < ! > " , 1 ) ,r o o t _ 3 0 $ 1 =f r o m _ h t m l (" < ! > < s p a n > < / s p a n > " , 1 ) ,r o o t _ 7 $ j =f r o m _ h t m l (" < ! > < ! > < ! > < ! > < ! > < ! > < ! > " , 1 ) ,r o o t _ 1 $ C =f r o m _ h t m l (" < ! > < ! > " , 1 ) ,r o o t $ 1 4 =f r o m _ h t m l (" < d i v > < ! > < / d i v > " ) ;f u n c t i o n C h a t F o r m A c t i o n A t t a c h m e n t s D r o p d o w n ($ $ a n c h o r ,$ $ p r o p s ) {p u s h $ 1 ($ $ p r o p s , ! 0 ) ;l e t c l a s s N a m e =p r o p ($ $ p r o p s ," c l a s s " , 3 ," " ) ,d i s a b l e d =p r o p ($ $ p r o p s ," d i s a b l e d " , 3 , ! 1 ) ,h a s A u d i o M o d a l i t y =p r o p ($ $ p r o p s ," h a s A u d i o M o d a l i t y " , 3 , ! 1 ) , h a s V i s i o n M o d a l i t y = p r o p (
$$props, " hasVisionModality" , 3 , ! 1 ) , hasMcpPromptsSupport= prop ( $$props, " hasMcpPromptsSupport" , 3 , ! 1 ) , hasMcpResourcesSupport= prop ( $$props, " hasMcpResourcesSupport" , 3 , ! 1 ) , dropdownOpen = state$1 ( ! 1 ) ; function handleMcpSettingsClick ( ) { set$1 ( dropdownOpen , ! 1 ) , $$props . onMcpSettingsClick ? . ( ) } const attachmentMenu = useAttachmentMenu ( ( ) => ( { hasVisionModality : hasVisionModality ( ) , hasAudioModality : hasAudioModality ( ) , hasMcpPromptsSupport : hasMcpPromptsSupport ( ) , hasMcpResourcesSupport : hasMcpResourcesSupport ( ) } ) , ( ) => ( { onFileUpload : $$props .
onFileUpload , onSystemPromptClick : $$props . onSystemPromptClick , onMcpPromptClick : $$props . onMcpPromptClick , onMcpResourcesClick : $$props . onMcpResourcesClick } ) , ( ) => { set$1 ( dropdownOpen , ! 1 ) } ) ; var div = root$14 ( ) , node2 = child ( div ) ; component ( node2 , ( ) => Root$2 , ( $$anchor2 , DropdownMenu _Root ) => { DropdownMenu _Root ( $$anchor2 , { get open ( ) { return get$3 ( dropdownOpen ) } , set open ( $$value ) { set$1 ( dropdownOpen , $$value , ! 0 ) } , children : ( $$anchor3 , $$slotProps ) => { var fragment = root _1$C ( ) , node _1 = first _child ( fragment ) ; component ( node _1 ,
( ) => Dropdown _menu _trigger , ( $$anchor4 , DropdownMenu _Trigger ) => { DropdownMenu _Trigger ( $$anchor4 , { name : "Attach files" , get disabled ( ) { return disabled ( ) } , children : ( $$anchor5 , $$slotProps2 ) => { var fragment _1 = comment$2 ( ) , node _2 = first _child ( fragment _1 ) ; component ( node _2 , ( ) => Root$5 , ( $$anchor6 , Tooltip _Root ) => { Tooltip _Root ( $$anchor6 , { children : ( $$anchor7 , $$slotProps3 ) => { var fragment _2 = root _3$u ( ) , node _3 = first _child ( fragment _2 ) ; component ( node _3 , ( ) => Tooltip _trigger , ( $$anchor8 , Tooltip _Trigger ) => { Tooltip _Trigger ( $$anchor8 ,
{ class : "w-full" , children : ( $$anchor9 , $$slotProps4 ) => { Button ( $$anchor9 , { class : "file-upload-button h-8 w-8 rounded-full p-0" , get disabled ( ) { return disabled ( ) } , variant : "secondary" , type : "button" , children : ( $$anchor10 , $$slotProps5 ) => { var fragment _4 = root _5$o ( ) , span = first _child ( fragment _4 ) , text2 = child ( span , ! 0 ) ; reset ( span ) ; var node _4 = sibling ( span , 2 ) ; Plus ( node _4 , { class : "h-4 w-4" } ) , template _effect ( ( ) => set _text ( text2 , ATTACHMENT _TOOLTIP _TEXT ) ) , append ( $$anchor10 , fragment _4 ) } , $$slots : { default : ! 0 } } ) } , $$slots : { default : ! 0 } } ) } ) ;
var node _5 = sibling ( node _3 , 2 ) ; component ( node _5 , ( ) => Tooltip _content , ( $$anchor8 , Tooltip _Content ) => { Tooltip _Content ( $$anchor8 , { children : ( $$anchor9 , $$slotProps4 ) => { var p2 = root _6$j ( ) , text _1 = child ( p2 , ! 0 ) ; reset ( p2 ) , template _effect ( ( ) => set _text ( text _1 , ATTACHMENT _TOOLTIP _TEXT ) ) , append ( $$anchor9 , p2 ) } , $$slots : { default : ! 0 } } ) } ) , append ( $$anchor7 , fragment _2 ) } , $$slots : { default : ! 0 } } ) } ) , append ( $$anchor5 , fragment _1 ) } , $$slots : { default : ! 0 } } ) } ) ; var node _6 = sibling ( node _1 , 2 ) ; component ( node _6 , ( ) => Dropdown _menu _content , ( $$anchor4 , DropdownMenu _Content ) => {
DropdownMenu _Content ( $$anchor4 , { align : "start" , class : "w-48" , children : ( $$anchor5 , $$slotProps2 ) => { var fragment _5 = root _7$j ( ) , node _7 = first _child ( fragment _5 ) ; each ( node _7 , 17 , ( ) => ATTACHMENT _FILE _ITEMS , item => item . id , ( $$anchor6 , item ) => { const enabled = user _derived ( ( ) => attachmentMenu . isItemEnabled ( get$3 ( item ) . enabledWhen ) ) ; var fragment _6 = comment$2 ( ) , node _8 = first _child ( fragment _6 ) ; { var consequent = $$anchor7 => { var fragment _7 = comment$2 ( ) , node _9 = first _child ( fragment _7 ) ; { let $0 = user _derived ( ( ) => get$3 ( item ) . class ? ?
"" ) ; component ( node _9 , ( ) => Dropdown _menu _item , ( $$anchor8 , DropdownMenu _Item ) => { DropdownMenu _Item ( $$anchor8 , { get class ( ) { return ` ${ get$3 ( $0 ) ? ? "" } flex cursor-pointer items-center gap-2 ` } , onclick : ( ) => attachmentMenu . callbacks [ get$3 ( item ) . action ] ( ) , children : ( $$anchor9 , $$slotProps3 ) => { var fragment _8 = root _10$c ( ) , node _10 = first _child ( fragment _8 ) ; component ( node _10 , ( ) => get$3 ( item ) . icon , ( $$anchor10 , item _icon ) => { item _icon ( $$anchor10 , { class : "h-4 w-4" } ) } ) ; var span _1 = sibling ( node _10 , 2 ) , text _2 = child ( span _1 , ! 0 ) ; reset (
span _1 ) , template _effect ( ( ) => set _text ( text _2 , get$3 ( item ) . label ) ) , append ( $$anchor9 , fragment _8 ) } , $$slots : { default : ! 0 } } ) } ) } append ( $$anchor7 , fragment _7 ) } , consequent _1 = $$anchor7 => { var fragment _9 = comment$2 ( ) , node _11 = first _child ( fragment _9 ) ; component ( node _11 , ( ) => Root$5 , ( $$anchor8 , Tooltip _Root _1 ) => { Tooltip _Root _1 ( $$anchor8 , { get delayDuration ( ) { return TOOLTIP _DELAY _DURATION } , children : ( $$anchor9 , $$slotProps3 ) => { var fragment _10 = root _12$7 ( ) , node _12 = first _child ( fragment _10 ) ; component ( node _12 , ( ) => Tooltip _trigger ,
( $$anchor10 , Tooltip _Trigger _1 ) => { Tooltip _Trigger _1 ( $$anchor10 , { class : "w-full" , children : ( $$anchor11 , $$slotProps4 ) => { var fragment _11 = comment$2 ( ) , node _13 = first _child ( fragment _11 ) ; { let $0 = user _derived ( ( ) => get$3 ( item ) . class ? ? "" ) ; component ( node _13 , ( ) => Dropdown _menu _item , ( $$anchor12 , DropdownMenu _Item _1 ) => { DropdownMenu _Item _1 ( $$anchor12 , { get class ( ) { return ` ${ get$3 ( $0 ) ? ? "" } flex cursor-pointer items-center gap-2 ` } , disabled : ! 0 , children : ( $$anchor13 , $$slotProps5 ) => { var fragment _12 = root _14$5 ( ) , node _14 = first _child (
fragment _12 ) ; component ( node _14 , ( ) => get$3 ( item ) . icon , ( $$anchor14 , item _icon _1 ) => { item _icon _1 ( $$anchor14 , { class : "h-4 w-4" } ) } ) ; var span _2 = sibling ( node _14 , 2 ) , text _3 = child ( span _2 , ! 0 ) ; reset ( span _2 ) , template _effect ( ( ) => set _text ( text _3 , get$3 ( item ) . label ) ) , append ( $$anchor13 , fragment _12 ) } , $$slots : { default : ! 0 } } ) } ) } append ( $$anchor11 , fragment _11 ) } , $$slots : { default : ! 0 } } ) } ) ; var node _15 = sibling ( node _12 , 2 ) ; component ( node _15 , ( ) => Tooltip _content , ( $$anchor10 , Tooltip _Content _1 ) => { Tooltip _Content _1 ( $$anchor10 , { side : " r \
ight " , children : ( $$anchor11 , $$slotProps4 ) => { var p _1 = root _15$7 ( ) , text _4 = child ( p _1 , ! 0 ) ; reset ( p _1 ) , template _effect ( ( ) => set _text ( text _4 , get$3 ( item ) . disabledTooltip ) ) , append ( $$anchor11 , p _1 ) } , $$slots : { default : ! 0 } } ) } ) , append ( $$anchor9 , fragment _10 ) } , $$slots : { default : ! 0 } } ) } ) , append ( $$anchor7 , fragment _9 ) } ; if _block ( node _8 , $$render => { get$3 ( enabled ) ? $$render ( consequent ) : get$3 ( item ) . disabledTooltip && $$render ( consequent _1 , 1 ) } ) } append ( $$anchor6 , fragment _6 ) } ) ; var node _16 = sibling ( node _7 , 2 ) ; { var consequent _3 = $$anchor6 => {
var fragment _13 = comment$2 ( ) , node _17 = first _child ( fragment _13 ) ; component ( node _17 , ( ) => Root$5 , ( $$anchor7 , Tooltip _Root _2 ) => { Tooltip _Root _2 ( $$anchor7 , { get delayDuration ( ) { return TOOLTIP _DELAY _DURATION } , children : ( $$anchor8 , $$slotProps3 ) => { var fragment _14 = root _17$8 ( ) , node _18 = first _child ( fragment _14 ) ; component ( node _18 , ( ) => Tooltip _trigger , ( $$anchor9 , Tooltip _Trigger _2 ) => { Tooltip _Trigger _2 ( $$anchor9 , { class : "w-full" , children : ( $$anchor10 , $$slotProps4 ) => { var fragment _15 = comment$2 ( ) , node _19 = first _child ( fragment _15 ) ;
component ( node _19 , ( ) => Dropdown _menu _item , ( $$anchor11 , DropdownMenu _Item _2 ) => { DropdownMenu _Item _2 ( $$anchor11 , { class : "flex cursor-pointer items-center gap-2" , get onclick ( ) { return attachmentMenu . callbacks . onFileUpload } , children : ( $$anchor12 , $$slotProps5 ) => { const pdfItem = user _derived ( ( ) => ATTACHMENT _FILE _ITEMS . find ( i => i . id === AttachmentMenuItemId . PDF ) ) ; var fragment _16 = comment$2 ( ) , node _20 = first _child ( fragment _16 ) ; { var consequent _2 = $$anchor13 => { var fragment _17 = root _20$4 ( ) , node _21 = first _child ( fragment _17 ) ;
component ( node _21 , ( ) => get$3 ( pdfItem ) . icon , ( $$anchor14 , pdfItem _icon ) => { pdfItem _icon ( $$anchor14 , { class : "h-4 w-4" } ) } ) ; var span _3 = sibling ( node _21 , 2 ) , text _5 = child ( span _3 , ! 0 ) ; reset ( span _3 ) , template _effect ( ( ) => set _text ( text _5 , get$3 ( pdfItem ) . label ) ) , append ( $$anchor13 , fragment _17 ) } ; if _block ( node _20 , $$render => { get$3 ( pdfItem ) && $$render ( consequent _2 ) } ) } append ( $$anchor12 , fragment _16 ) } , $$slots : { default : ! 0 } } ) } ) , append ( $$anchor10 , fragment _15 ) } , $$slots : { default : ! 0 } } ) } ) ; var node _22 = sibling ( node _18 , 2 ) ; component ( node _22 ,