turbollm 1.9.2 → 1.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.md +25 -6
  2. package/dist/cli.js +863 -223
  3. package/dist/webdist/assets/{AgentEditPage-CyzZ8vDr.js → AgentEditPage-CbJqYCVo.js} +1 -1
  4. package/dist/webdist/assets/{ChatScreen-DWVblPWw.js → ChatScreen-LaTz7fTZ.js} +3 -3
  5. package/dist/webdist/assets/CodeComposer-12z9dbZA.js +1 -0
  6. package/dist/webdist/assets/CodeHomeScreen-8A3Anu2L.js +1 -0
  7. package/dist/webdist/assets/{CodeSessionScreen-BtA5u3li.js → CodeSessionScreen-BoA5rPp7.js} +3 -3
  8. package/dist/webdist/assets/CustomizeScreen-BTBhphFE.js +4 -0
  9. package/dist/webdist/assets/DeveloperScreen-Dfy6Rgw4.js +1 -0
  10. package/dist/webdist/assets/{EnginesScreen-ChGdOOW9.js → EnginesScreen-Dwxe8B5p.js} +6 -6
  11. package/dist/webdist/assets/FsBrowser-DXxO1QdQ.js +1 -0
  12. package/dist/webdist/assets/{ModelLoadMenu-DzaxKmIV.js → ModelLoadMenu-C7wK_COK.js} +2 -2
  13. package/dist/webdist/assets/{ModelsScreen-wuI7h511.js → ModelsScreen-DnpYzOj2.js} +2 -2
  14. package/dist/webdist/assets/SettingsScreen-Tn8PlYcS.js +2 -0
  15. package/dist/webdist/assets/{SkillEditPage-XGTaeQ8o.js → SkillEditPage-Bzr1Mfqi.js} +1 -1
  16. package/dist/webdist/assets/{TokensScreen-B02y3G-H.js → TokensScreen-BrnFne8W.js} +1 -1
  17. package/dist/webdist/assets/{ToolApprovalBar-D4YRUMat.js → ToolApprovalBar-BfIwjh_G.js} +4 -4
  18. package/dist/webdist/assets/WorkspaceScreen-CHg7GC1T.js +1 -0
  19. package/dist/webdist/assets/{agent-api-D86F96i6.js → agent-api-C0qMHAE0.js} +1 -1
  20. package/dist/webdist/assets/{arc-BScxM0vj.js → arc-DGmQFsDA.js} +1 -1
  21. package/dist/webdist/assets/{architectureDiagram-3BPJPVTR-DbIjWGrc.js → architectureDiagram-3BPJPVTR-DSypGjGj.js} +1 -1
  22. package/dist/webdist/assets/{arrow-left-Cz7XgLgo.js → arrow-left-CuK9vFgW.js} +1 -1
  23. package/dist/webdist/assets/{badge-CRVn2top.js → badge-jlftBi-Q.js} +1 -1
  24. package/dist/webdist/assets/{blockDiagram-GPEHLZMM-COy0nYNX.js → blockDiagram-GPEHLZMM-DoYsQhuo.js} +1 -1
  25. package/dist/webdist/assets/{bot-C-sGABri.js → bot-CE50aKt3.js} +1 -1
  26. package/dist/webdist/assets/{c4Diagram-AAUBKEIU-CoiZua-v.js → c4Diagram-AAUBKEIU-DsQ4mGev.js} +1 -1
  27. package/dist/webdist/assets/channel-BBYa3XlX.js +1 -0
  28. package/dist/webdist/assets/{chat-api-CdVOTSst.js → chat-api-BQgsmVCJ.js} +1 -1
  29. package/dist/webdist/assets/{chat-queries-DINfS8uv.js → chat-queries-BuU4cQ0I.js} +1 -1
  30. package/dist/webdist/assets/{chevron-left-CbPqt11D.js → chevron-left-BoIfI017.js} +1 -1
  31. package/dist/webdist/assets/{chevron-right-C8EPnhrg.js → chevron-right-Btn5ue2K.js} +1 -1
  32. package/dist/webdist/assets/{chunk-2J33WTMH-B-ggs358.js → chunk-2J33WTMH-Cpm4yaej.js} +1 -1
  33. package/dist/webdist/assets/{chunk-4BX2VUAB-CBSHARpe.js → chunk-4BX2VUAB-Qkt8VpMd.js} +1 -1
  34. package/dist/webdist/assets/{chunk-55IACEB6-BikCaTgS.js → chunk-55IACEB6-D0lIZ5zv.js} +1 -1
  35. package/dist/webdist/assets/{chunk-727SXJPM-B8Uooh_X.js → chunk-727SXJPM-DmJbKG_f.js} +1 -1
  36. package/dist/webdist/assets/{chunk-AQP2D5EJ-C-wZiAmx.js → chunk-AQP2D5EJ-CP5FXopV.js} +1 -1
  37. package/dist/webdist/assets/{chunk-FMBD7UC4-lkRMU7V5.js → chunk-FMBD7UC4-CEHj-mOu.js} +1 -1
  38. package/dist/webdist/assets/{chunk-ND2GUHAM-CTBUDTXK.js → chunk-ND2GUHAM-DfaWkbDp.js} +1 -1
  39. package/dist/webdist/assets/{chunk-QZHKN3VN-CKOXFQ-c.js → chunk-QZHKN3VN-Cbt4eIAq.js} +1 -1
  40. package/dist/webdist/assets/{circle-check-dbo4u23c.js → circle-check-CyJ0DXgY.js} +1 -1
  41. package/dist/webdist/assets/{circle-x-CuPWHB4Y.js → circle-x-B2ihWKOZ.js} +1 -1
  42. package/dist/webdist/assets/classDiagram-4FO5ZUOK-3anTq5dR.js +1 -0
  43. package/dist/webdist/assets/classDiagram-v2-Q7XG4LA2-3anTq5dR.js +1 -0
  44. package/dist/webdist/assets/{common-RZkQjs09.js → common-CA-hju85.js} +1 -1
  45. package/dist/webdist/assets/{cose-bilkent-S5V4N54A-L3BPlYev.js → cose-bilkent-S5V4N54A-U7v4kFOg.js} +1 -1
  46. package/dist/webdist/assets/{dagre-BM42HDAG-DdFZFhxI.js → dagre-BM42HDAG-BrRqvg5R.js} +1 -1
  47. package/dist/webdist/assets/{diagram-2AECGRRQ-Bx4JyVtd.js → diagram-2AECGRRQ-CSOuZx8C.js} +1 -1
  48. package/dist/webdist/assets/{diagram-5GNKFQAL-DYxtCUYO.js → diagram-5GNKFQAL-Dc9npHHs.js} +1 -1
  49. package/dist/webdist/assets/{diagram-KO2AKTUF-BSV0zTVR.js → diagram-KO2AKTUF-CRMmrYOC.js} +1 -1
  50. package/dist/webdist/assets/{diagram-LMA3HP47-CS-L_g7_.js → diagram-LMA3HP47-DR-qZazu.js} +1 -1
  51. package/dist/webdist/assets/{diagram-OG6HWLK6-D8uK9mOu.js → diagram-OG6HWLK6-BRt3haop.js} +1 -1
  52. package/dist/webdist/assets/{dialog-fsfhY_Ib.js → dialog-OPLOEGn-.js} +1 -1
  53. package/dist/webdist/assets/{dropdown-menu-B6pYEdad.js → dropdown-menu-mOPaoWK5.js} +1 -1
  54. package/dist/webdist/assets/{erDiagram-TEJ5UH35-DX-3blsY.js → erDiagram-TEJ5UH35-D0M-EUsh.js} +1 -1
  55. package/dist/webdist/assets/{flowDiagram-I6XJVG4X-DUTsLqgt.js → flowDiagram-I6XJVG4X-DBufQOmB.js} +1 -1
  56. package/dist/webdist/assets/{ganttDiagram-6RSMTGT7-CwH0oq0S.js → ganttDiagram-6RSMTGT7-B6zSUp2B.js} +1 -1
  57. package/dist/webdist/assets/{git-branch-BiMfcJ1j.js → git-branch-D8GYPzhY.js} +1 -1
  58. package/dist/webdist/assets/{gitGraphDiagram-PVQCEYII-CmLeqvWh.js → gitGraphDiagram-PVQCEYII-CnSmYO2G.js} +1 -1
  59. package/dist/webdist/assets/index-COUI_CR-.js +13 -0
  60. package/dist/webdist/assets/index-DKAl71q8.css +1 -0
  61. package/dist/webdist/assets/{infoDiagram-5YYISTIA-BFTUzkbq.js → infoDiagram-5YYISTIA-F6nF57e3.js} +1 -1
  62. package/dist/webdist/assets/{ishikawaDiagram-YF4QCWOH-BdQIrqQU.js → ishikawaDiagram-YF4QCWOH-DXMvubwx.js} +1 -1
  63. package/dist/webdist/assets/{journeyDiagram-JHISSGLW-D1HmHaNc.js → journeyDiagram-JHISSGLW-BcMZWZZi.js} +1 -1
  64. package/dist/webdist/assets/{kanban-definition-UN3LZRKU-C5USgc8m.js → kanban-definition-UN3LZRKU-BhA3iHrI.js} +1 -1
  65. package/dist/webdist/assets/{linear-BDGxyxLo.js → linear-DCHP6NLs.js} +1 -1
  66. package/dist/webdist/assets/{lock-DCb387O_.js → lock-DEL9SW4n.js} +1 -1
  67. package/dist/webdist/assets/{mermaid.core-DWCJxsCl.js → mermaid.core-Bvxj3QV6.js} +4 -4
  68. package/dist/webdist/assets/{mindmap-definition-RKZ34NQL-BV3H5rWG.js → mindmap-definition-RKZ34NQL-DFW-B7At.js} +1 -1
  69. package/dist/webdist/assets/{pencil-BegDY0Zk.js → pencil-D3YoSpTL.js} +1 -1
  70. package/dist/webdist/assets/{personas-DNCENHUd.js → personas-BL5LWber.js} +2 -2
  71. package/dist/webdist/assets/{pieDiagram-4H26LBE5-DDN9VAOL.js → pieDiagram-4H26LBE5-D22oz4Bh.js} +1 -1
  72. package/dist/webdist/assets/{plus-DrZmKBTt.js → plus-Czof1-k0.js} +1 -1
  73. package/dist/webdist/assets/{quadrantDiagram-W4KKPZXB-Bx16Ru8w.js → quadrantDiagram-W4KKPZXB-rH5_lBaU.js} +1 -1
  74. package/dist/webdist/assets/{refresh-cw-B7Qjdj47.js → refresh-cw-eHr6ZrHD.js} +1 -1
  75. package/dist/webdist/assets/{requirementDiagram-4Y6WPE33-k0upGaul.js → requirementDiagram-4Y6WPE33-2GvaIJsP.js} +1 -1
  76. package/dist/webdist/assets/{rotate-ccw-B7o8hLk6.js → rotate-ccw-DBvaE0Sq.js} +1 -1
  77. package/dist/webdist/assets/{sankeyDiagram-5OEKKPKP-xyOWBpSr.js → sankeyDiagram-5OEKKPKP-VB7s7E26.js} +1 -1
  78. package/dist/webdist/assets/{sequenceDiagram-3UESZ5HK-BhBclCRW.js → sequenceDiagram-3UESZ5HK-DypBxMgR.js} +1 -1
  79. package/dist/webdist/assets/{skeleton-D15eL_7e.js → skeleton-COip0Uxa.js} +1 -1
  80. package/dist/webdist/assets/{sliders-horizontal-C4_t3PES.js → sliders-horizontal-BYbWJESN.js} +1 -1
  81. package/dist/webdist/assets/{sparkles-BT45JGMR.js → sparkles-Bunle1wO.js} +1 -1
  82. package/dist/webdist/assets/{star-SskkfhIb.js → star-CDjPloh2.js} +1 -1
  83. package/dist/webdist/assets/{stateDiagram-AJRCARHV-902Ow1i4.js → stateDiagram-AJRCARHV-De6Tx6UP.js} +1 -1
  84. package/dist/webdist/assets/stateDiagram-v2-BHNVJYJU-BJ8zIW-S.js +1 -0
  85. package/dist/webdist/assets/{switch-C-l-ej5M.js → switch-CrtIhLpg.js} +1 -1
  86. package/dist/webdist/assets/{terminal-55Og1Fyx.js → terminal-C_jrBBqy.js} +1 -1
  87. package/dist/webdist/assets/{timeline-definition-PNZ67QCA-BEyTzrTZ.js → timeline-definition-PNZ67QCA-DzMJnztZ.js} +1 -1
  88. package/dist/webdist/assets/{trash-2-B9nMCHMA.js → trash-2-BA8fBFXw.js} +1 -1
  89. package/dist/webdist/assets/useIsDesktop-Dg2G692v.js +1 -0
  90. package/dist/webdist/assets/{vennDiagram-CIIHVFJN-C77U6Nzk.js → vennDiagram-CIIHVFJN-BNR_zHHW.js} +1 -1
  91. package/dist/webdist/assets/{wardley-L42UT6IY-BZ10FiAs.js → wardley-L42UT6IY-Cm1Sh5Oj.js} +1 -1
  92. package/dist/webdist/assets/{wardleyDiagram-YWT4CUSO-DgrAaqyf.js → wardleyDiagram-YWT4CUSO-Bvni8f-6.js} +1 -1
  93. package/dist/webdist/assets/{wrench-DMY_WSQ9.js → wrench-Uhws4miP.js} +1 -1
  94. package/dist/webdist/assets/{xychartDiagram-2RQKCTM6-BlzVJUn3.js → xychartDiagram-2RQKCTM6-Dyk7o391.js} +1 -1
  95. package/dist/webdist/index.html +2 -2
  96. package/package.json +1 -1
  97. package/dist/webdist/assets/CodeComposer-BvNMY6PI.js +0 -1
  98. package/dist/webdist/assets/CodeHomeScreen-CmzaqOmH.js +0 -1
  99. package/dist/webdist/assets/CustomizeScreen-ACC_4SMn.js +0 -4
  100. package/dist/webdist/assets/DeveloperScreen-CSJZh91v.js +0 -1
  101. package/dist/webdist/assets/FsBrowser-D9RjrjvO.js +0 -1
  102. package/dist/webdist/assets/SettingsScreen-DsKi9vxM.js +0 -1
  103. package/dist/webdist/assets/WorkspaceScreen-DRoUxluw.js +0 -1
  104. package/dist/webdist/assets/channel-8eXCTkKl.js +0 -1
  105. package/dist/webdist/assets/check-Do9IgpFj.js +0 -1
  106. package/dist/webdist/assets/classDiagram-4FO5ZUOK-D5bPDMhb.js +0 -1
  107. package/dist/webdist/assets/classDiagram-v2-Q7XG4LA2-D5bPDMhb.js +0 -1
  108. package/dist/webdist/assets/copy-button-DKUAZ6Ig.js +0 -1
  109. package/dist/webdist/assets/index-CXwfn7-U.css +0 -1
  110. package/dist/webdist/assets/index-DaNuMYPC.js +0 -10
  111. package/dist/webdist/assets/stateDiagram-v2-BHNVJYJU-B5LKF3CJ.js +0 -1
  112. package/dist/webdist/assets/useIsDesktop-D2KX8NOA.js +0 -1
@@ -1,4 +1,4 @@
1
- var Nn=u=>{throw TypeError(u)};var xi=(u,t,e)=>t.has(u)||Nn("Cannot "+e);var st=(u,t,e)=>(xi(u,t,"read from private field"),e?e.call(u):t.get(u)),zt=(u,t,e)=>t.has(u)?Nn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(u):t.set(u,e),vt=(u,t,e,s)=>(xi(u,t,"write to private field"),s?s.call(u,e):t.set(u,e),e),Vt=(u,t,e)=>(xi(u,t,"access private method"),e);var Fn=(u,t,e,s)=>({set _(i){vt(u,t,i,e)},get _(){return st(u,t,s)}});import{j as C}from"./radix-j_81dozL.js";import{r as H,u as va,c as xa}from"./vendor-BFom-Mq6.js";import{o as On,l as wa,p as Sa,q as Ca}from"./chat-api-CdVOTSst.js";import{u as pr,a as Ea}from"./chat-queries-DINfS8uv.js";import{g as Xi,a as gr,B as re,S as _a,f as Ns,t as yt,A as Pe,j as Ta,F as ka,y as Pa,z as Ma,K as Ia,b as Da,d as La,u as Na,k as Fa,l as Oa,M as Rn,N as Ra,X as Cs,O as Ba,Q as ja,R as Ha,T as Ua}from"./index-DaNuMYPC.js";import{M as Ga,S as $a,A as za,T as Va,a as Wa,u as Xa}from"./ToolApprovalBar-D4YRUMat.js";import{D as Ya,a as Ka,b as qa,c as wi,d as Qa}from"./dropdown-menu-B6pYEdad.js";import{f as mr,a as br}from"./agent-api-D86F96i6.js";import{r as Ja,S as Za,s as to,C as eo,a as so,P as io,M as no,T as ro,e as ao,d as oo}from"./ModelLoadMenu-DzaxKmIV.js";import{u as lo,M as co}from"./useIsDesktop-D2KX8NOA.js";import{D as ho,o as uo,a as fo,b as po,c as go,p as mo}from"./dialog-fsfhY_Ib.js";import{S as bo}from"./switch-C-l-ej5M.js";import{C as yo,a as Ao,b as vo}from"./collapsible-tffcj0HQ.js";import{C as xo}from"./chevron-right-C8EPnhrg.js";import{a as Si,r as wo,b as So,c as Co,g as Eo,d as _o}from"./personas-DNCENHUd.js";import{a as To}from"./sliders-horizontal-C4_t3PES.js";import{a as Bn}from"./copy-button-DKUAZ6Ig.js";import"./tool-explain-B8rnv8bW.js";import"./pencil-BegDY0Zk.js";import"./trash-2-B9nMCHMA.js";import"./refresh-cw-B7Qjdj47.js";import"./chevron-left-CbPqt11D.js";import"./index-BP-7GzAI.js";import"./circle-check-dbo4u23c.js";import"./circle-x-CuPWHB4Y.js";import"./skeleton-D15eL_7e.js";import"./plus-DrZmKBTt.js";import"./check-Do9IgpFj.js";import"./star-SskkfhIb.js";import"./rotate-ccw-B7o8hLk6.js";const ko=[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]],Po=Xi("paperclip",ko);const Mo=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],Io=Xi("share-2",Mo);const Do=[["circle",{cx:"12",cy:"8",r:"5",key:"1hypcn"}],["path",{d:"M20 21a8 8 0 0 0-16 0",key:"rfgkzh"}]],Lo=Xi("user-round",Do),kt=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),se=[1/0,1/0,-1/0,-1/0],be=new Float32Array(se),Di=[.001,0,0,.001,0,0],Ci=1.35,Et="http://www.w3.org/2000/svg",_t={ANY:1,DISPLAY:2,PRINT:4,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},ae={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},Le="pdfjs_internal_id_",ts="pdfjs_internal_editor_",$={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,POPUP:16,SIGNATURE:101,COMMENT:102},W={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,INK_COLOR_AND_OPACITY:24,HIGHLIGHT_COLOR:31,HIGHLIGHT_THICKNESS:32,HIGHLIGHT_FREE:33,HIGHLIGHT_SHOW_ALL:34,DRAW_STEP:41},No={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},ft={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},Fs={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},ct={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,RICHMEDIA:27},Me={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},zs={ERRORS:0,WARNINGS:1,INFOS:5},Kt={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:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,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},We={moveTo:0,lineTo:1,curveTo:2,quadraticCurveTo:3,closePath:4},Fo={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let Vs=zs.WARNINGS;function Oo(u){Number.isInteger(u)&&(Vs=u)}function Ro(){return Vs}function Ws(u){Vs>=zs.INFOS&&console.info(`Info: ${u}`)}function z(u){Vs>=zs.WARNINGS&&console.warn(`Warning: ${u}`)}function X(u){throw new Error(u)}function lt(u,t){u||X(t)}function Bo(u){switch(u?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function yr(u,t=null,e=null){if(!u)return null;if(e&&typeof u=="string"&&(e.addDefaultProtocol&&u.startsWith("www.")&&u.match(/\./g)?.length>=2&&(u=`http://${u}`),e.tryConvertEncoding))try{u=Uo(u)}catch{}const s=t?URL.parse(u,t):URL.parse(u);return Bo(s)?s:null}function Ar(u,t,e=!1){const s=URL.parse(u);return s?(s.hash=t,s.href):e&&yr(u,"http://example.com")?u.split("#",1)[0]+`${t?`#${t}`:""}`:""}function Li(u){return u.substring(u.lastIndexOf("/")+1)}function G(u,t,e,s=!1){return Object.defineProperty(u,t,{value:e,enumerable:!s,configurable:!0,writable:!1}),e}const Ce=(function(){function t(e,s){this.message=e,this.name=s}return t.prototype=new Error,t.constructor=t,t})();class Ni extends Ce{constructor(t,e){super(t,"PasswordException"),this.code=e}}class Ei extends Ce{constructor(t,e){super(t,"UnknownErrorException"),this.details=e}}class Fi extends Ce{constructor(t){super(t,"InvalidPDFException")}}class js extends Ce{constructor(t,e,s){super(t,"ResponseException"),this.status=e,this.missing=s}}class jo extends Ce{constructor(t){super(t,"FormatError")}}class le extends Ce{constructor(t){super(t,"AbortException")}}function Ho(u){(typeof u!="object"||u?.length===void 0)&&X("Invalid argument for bytesToString");const t=u.length,e=8192;if(t<e)return String.fromCharCode.apply(null,u);const s=[];for(let i=0;i<t;i+=e){const n=Math.min(i+e,t),r=u.subarray(i,n);s.push(String.fromCharCode.apply(null,r))}return s.join("")}function Xs(u){typeof u!="string"&&X("Invalid argument for stringToBytes");const t=u.length,e=new Uint8Array(t);for(let s=0;s<t;++s)e[s]=u.charCodeAt(s)&255;return e}class J{static get isLittleEndian(){const t=new Uint8Array(4);t[0]=1;const e=new Uint32Array(t.buffer,0,1);return G(this,"isLittleEndian",e[0]===1)}static get isOffscreenCanvasSupported(){return G(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get isImageDecoderSupported(){return G(this,"isImageDecoderSupported",typeof ImageDecoder<"u")}static get isFloat16ArraySupported(){return G(this,"isFloat16ArraySupported",typeof Float16Array<"u")}static get isSanitizerSupported(){return G(this,"isSanitizerSupported",typeof Sanitizer<"u")}static get platform(){const{platform:t,userAgent:e}=navigator;return G(this,"platform",{isAndroid:e.includes("Android"),isLinux:t.includes("Linux"),isMac:t.includes("Mac"),isWindows:t.includes("Win"),isFirefox:e.includes("Firefox")})}static get isCanvasFilterSupported(){let t;return this.isOffscreenCanvasSupported?t=new OffscreenCanvas(1,1).getContext("2d"):typeof document<"u"&&(t=document.createElement("canvas").getContext("2d")),G(this,"isCanvasFilterSupported",t?.filter!==void 0)}static get isAlphaColorInputSupported(){if(typeof document>"u")return G(this,"isAlphaColorInputSupported",!1);const t=document.createElement("input");return t.type="color",t.setAttribute("alpha",""),t.value="#ff000080",G(this,"isAlphaColorInputSupported",t.value!=="#ff0000")}static get isBackdropFilterSupported(){return G(this,"isBackdropFilterSupported",typeof CSS<"u"&&CSS.supports("backdrop-filter","blur(1px)"))}}class k{static get hexNums(){return G(this,"hexNums",Array.from(Array(256).keys(),t=>t.toString(16).padStart(2,"0")))}static makeHexColor(t,e,s){return`#${this.hexNums[t]}${this.hexNums[e]}${this.hexNums[s]}`}static transform(t,e){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],t[0]*e[4]+t[2]*e[5]+t[4],t[1]*e[4]+t[3]*e[5]+t[5]]}static multiplyByDOMMatrix(t,e){return[t[0]*e.a+t[2]*e.b,t[1]*e.a+t[3]*e.b,t[0]*e.c+t[2]*e.d,t[1]*e.c+t[3]*e.d,t[0]*e.e+t[2]*e.f+t[4],t[1]*e.e+t[3]*e.f+t[5]]}static applyTransform(t,e,s=0){const i=t[s],n=t[s+1];t[s]=i*e[0]+n*e[2]+e[4],t[s+1]=i*e[1]+n*e[3]+e[5]}static applyTransformToBezier(t,e,s=0){const i=e[0],n=e[1],r=e[2],a=e[3],o=e[4],l=e[5];for(let c=0;c<6;c+=2){const h=t[s+c],d=t[s+c+1];t[s+c]=h*i+d*r+o,t[s+c+1]=h*n+d*a+l}}static applyInverseTransform(t,e){const s=t[0],i=t[1],n=e[0]*e[3]-e[1]*e[2];t[0]=(s*e[3]-i*e[2]+e[2]*e[5]-e[4]*e[3])/n,t[1]=(-s*e[1]+i*e[0]+e[4]*e[1]-e[5]*e[0])/n}static axialAlignedBoundingBox(t,e,s){const i=e[0],n=e[1],r=e[2],a=e[3],o=e[4],l=e[5],c=t[0],h=t[1],d=t[2],f=t[3];let p=i*c+o,g=p,m=i*d+o,b=m,y=a*h+l,A=y,w=a*f+l,x=w;if(n!==0||r!==0){const S=n*c,E=n*d,_=r*h,P=r*f;p+=_,b+=_,m+=P,g+=P,y+=S,x+=S,w+=E,A+=E}s[0]=Math.min(s[0],p,m,g,b),s[1]=Math.min(s[1],y,w,A,x),s[2]=Math.max(s[2],p,m,g,b),s[3]=Math.max(s[3],y,w,A,x)}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}static singularValueDecompose2dScale(t,e){const s=t[0],i=t[1],n=t[2],r=t[3],a=s**2+i**2,o=s*n+i*r,l=n**2+r**2,c=(a+l)/2,h=Math.sqrt(c**2-(a*l-o**2));e[0]=Math.sqrt(c+h||1),e[1]=Math.sqrt(c-h||1)}static normalizeRect(t){const e=t.slice(0);return t[0]>t[2]&&(e[0]=t[2],e[2]=t[0]),t[1]>t[3]&&(e[1]=t[3],e[3]=t[1]),e}static intersect(t,e){const s=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),i=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(s>i)return null;const n=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),r=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return n>r?null:[s,n,i,r]}static pointBoundingBox(t,e,s){s[0]=Math.min(s[0],t),s[1]=Math.min(s[1],e),s[2]=Math.max(s[2],t),s[3]=Math.max(s[3],e)}static rectBoundingBox(t,e,s,i,n){n[0]=Math.min(n[0],t,s),n[1]=Math.min(n[1],e,i),n[2]=Math.max(n[2],t,s),n[3]=Math.max(n[3],e,i)}static#t(t,e,s,i,n,r,a,o,l,c){if(l<=0||l>=1)return;const h=1-l,d=l*l,f=d*l,p=h*(h*(h*t+3*l*e)+3*d*s)+f*i,g=h*(h*(h*n+3*l*r)+3*d*a)+f*o;c[0]=Math.min(c[0],p),c[1]=Math.min(c[1],g),c[2]=Math.max(c[2],p),c[3]=Math.max(c[3],g)}static#e(t,e,s,i,n,r,a,o,l,c,h,d){if(Math.abs(l)<1e-12){Math.abs(c)>=1e-12&&this.#t(t,e,s,i,n,r,a,o,-h/c,d);return}const f=c**2-4*h*l;if(f<0)return;const p=Math.sqrt(f),g=2*l;this.#t(t,e,s,i,n,r,a,o,(-c+p)/g,d),this.#t(t,e,s,i,n,r,a,o,(-c-p)/g,d)}static bezierBoundingBox(t,e,s,i,n,r,a,o,l){l[0]=Math.min(l[0],t,a),l[1]=Math.min(l[1],e,o),l[2]=Math.max(l[2],t,a),l[3]=Math.max(l[3],e,o),this.#e(t,s,n,a,e,i,r,o,3*(-t+3*(s-n)+a),6*(t-2*s+n),3*(s-t),l),this.#e(t,s,n,a,e,i,r,o,3*(-e+3*(i-r)+o),6*(e-2*i+r),3*(i-e),l)}}function Uo(u){return decodeURIComponent(escape(u))}let _i=null,jn=null;function Go(u){return _i||(_i=/([\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,jn=new Map([["ſt","ſt"]])),u.replaceAll(_i,(t,e,s)=>e?e.normalize("NFKC"):jn.get(s))}function vr(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();const u=new Uint8Array(32);return crypto.getRandomValues(u),Ho(u)}function $o(u,t,e){if(!Array.isArray(e)||e.length<2)return!1;const[s,i,...n]=e;if(!u(s)&&!Number.isInteger(s)||!t(i))return!1;const r=n.length;let a=!0;switch(i.name){case"XYZ":if(r<2||r>3)return!1;break;case"Fit":case"FitB":return r===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(r>1)return!1;break;case"FitR":if(r!==4)return!1;a=!1;break;default:return!1}for(const o of n)if(!(typeof o=="number"||a&&o===null))return!1;return!0}const as=()=>[],Yi=()=>new Map,Oi=()=>Object.create(null);function et(u,t,e){return Math.min(Math.max(u,t),e)}class os{constructor({viewBox:t,userUnit:e,scale:s,rotation:i,offsetX:n=0,offsetY:r=0,dontFlip:a=!1}){this.viewBox=t,this.userUnit=e,this.scale=s,this.rotation=i,this.offsetX=n,this.offsetY=r,s*=e;const o=(t[2]+t[0])/2,l=(t[3]+t[1])/2;let c,h,d,f;switch(i%=360,i<0&&(i+=360),i){case 180:c=-1,h=0,d=0,f=1;break;case 90:c=0,h=1,d=1,f=0;break;case 270:c=0,h=-1,d=-1,f=0;break;case 0:c=1,h=0,d=0,f=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}a&&(d=-d,f=-f);let p,g,m,b;c===0?(p=Math.abs(l-t[1])*s+n,g=Math.abs(o-t[0])*s+r,m=(t[3]-t[1])*s,b=(t[2]-t[0])*s):(p=Math.abs(o-t[0])*s+n,g=Math.abs(l-t[1])*s+r,m=(t[2]-t[0])*s,b=(t[3]-t[1])*s),this.transform=[c*s,h*s,d*s,f*s,p-c*s*o-d*s*l,g-h*s*o-f*s*l],this.width=m,this.height=b}get rawDims(){const t=this.viewBox;return G(this,"rawDims",{pageWidth:t[2]-t[0],pageHeight:t[3]-t[1],pageX:t[0],pageY:t[1]})}clone({scale:t=this.scale,rotation:e=this.rotation,offsetX:s=this.offsetX,offsetY:i=this.offsetY,dontFlip:n=!1}={}){return new os({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:t,rotation:e,offsetX:s,offsetY:i,dontFlip:n})}convertToViewportPoint(t,e){const s=[t,e];return k.applyTransform(s,this.transform),s}convertToPdfPoint(t,e){const s=[t,e];return k.applyInverseTransform(s,this.transform),s}}class es{static textContent(t){const e=[],s={items:e,styles:Object.create(null)};function i(n){if(!n)return;let r=null;const a=n.name;if(a==="#text")r=n.value;else if(es.shouldBuildText(a))n?.attributes?.textContent?r=n.attributes.textContent:n.value&&(r=n.value);else return;if(r!==null&&e.push({str:r}),!!n.children)for(const o of n.children)i(o)}return i(t),s}static shouldBuildText(t){return!(t==="textarea"||t==="input"||t==="option"||t==="select")}}class xr{static setupStorage(t,e,s,i,n){const r=i.getValue(e,{value:null});switch(s.name){case"textarea":if(r.value!==null&&(t.textContent=r.value),n==="print")break;t.addEventListener("input",a=>{i.setValue(e,{value:a.target.value})});break;case"input":if(s.attributes.type==="radio"||s.attributes.type==="checkbox"){if(r.value===s.attributes.xfaOn?t.setAttribute("checked",!0):r.value===s.attributes.xfaOff&&t.removeAttribute("checked"),n==="print")break;t.addEventListener("change",a=>{i.setValue(e,{value:a.target.checked?a.target.getAttribute("xfaOn"):a.target.getAttribute("xfaOff")})})}else{if(r.value!==null&&t.setAttribute("value",r.value),n==="print")break;t.addEventListener("input",a=>{i.setValue(e,{value:a.target.value})})}break;case"select":if(r.value!==null){t.setAttribute("value",r.value);for(const a of s.children)a.attributes.value===r.value?a.attributes.selected=!0:Object.hasOwn(a.attributes,"selected")&&delete a.attributes.selected}t.addEventListener("input",a=>{const o=a.target.options,l=o.selectedIndex===-1?"":o[o.selectedIndex].value;i.setValue(e,{value:l})});break}}static setAttributes({html:t,element:e,storage:s=null,intent:i,linkService:n}){const{attributes:r}=e,a=t instanceof HTMLAnchorElement;r.type==="radio"&&(r.name=`${r.name}-${i}`);for(const[o,l]of Object.entries(r))if(l!=null)switch(o){case"class":l.length&&t.setAttribute(o,l.join(" "));break;case"dataId":break;case"id":t.setAttribute("data-element-id",l);break;case"style":Object.assign(t.style,l);break;case"textContent":t.textContent=l;break;default:(!a||o!=="href"&&o!=="newWindow")&&t.setAttribute(o,l)}a&&n.addLinkAttributes(t,r.href,r.newWindow),s&&r.dataId&&this.setupStorage(t,r.dataId,e,s)}static render(t){const e=t.annotationStorage,s=t.linkService,i=t.xfaHtml,n=t.intent||"display",r=document.createElement(i.name);i.attributes&&this.setAttributes({html:r,element:i,intent:n,linkService:s});const a=n!=="richText",o=t.div;if(o.append(r),t.viewport){const h=`matrix(${t.viewport.transform.join(",")})`;o.style.transform=h}a&&o.setAttribute("class","xfaLayer xfaFont");const l=[];if(i.children.length===0){if(i.value){const h=document.createTextNode(i.value);r.append(h),a&&es.shouldBuildText(i.name)&&l.push(h)}return{textDivs:l}}const c=[[i,-1,r]];for(;c.length>0;){const[h,d,f]=c.at(-1);if(d+1===h.children.length){c.pop();continue}const p=h.children[++c.at(-1)[1]];if(p===null)continue;const{name:g}=p;if(g==="#text"){const b=document.createTextNode(p.value);l.push(b),f.append(b);continue}const m=p?.attributes?.xmlns?document.createElementNS(p.attributes.xmlns,g):document.createElement(g);if(f.append(m),p.attributes&&this.setAttributes({html:m,element:p,storage:e,intent:n,linkService:s}),p.children?.length>0)c.push([p,-1,m]);else if(p.value){const b=document.createTextNode(p.value);a&&es.shouldBuildText(g)&&l.push(b),m.append(b)}}for(const h of o.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))h.setAttribute("readOnly",!0);return{textDivs:l}}static update(t){const e=`matrix(${t.viewport.transform.join(",")})`;t.div.style.transform=e,t.div.hidden=!1}static getPageViewport(t,{scale:e=1,rotation:s=0}){const{width:i,height:n}=t.attributes.style;return new os({viewBox:[0,0,parseInt(i,10),parseInt(n,10)],userUnit:1,scale:e,rotation:s})}}class Be{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF}async function Ki(u,t="text"){if(Qe(u,document.baseURI)){const e=await fetch(u);if(!e.ok)throw new Error(e.statusText);switch(t){case"blob":return e.blob();case"bytes":return e.bytes();case"json":return e.json()}return e.text()}return new Promise((e,s)=>{const i=new XMLHttpRequest;i.open("GET",u,!0),i.responseType=t==="bytes"?"arraybuffer":t,i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE){if(i.status===200||i.status===0){switch(t){case"bytes":e(new Uint8Array(i.response));return;case"blob":case"json":e(i.response);return}e(i.responseText);return}s(new Error(i.statusText))}},i.send(null)})}class qi extends Ce{constructor(t,e=0){super(t,"RenderingCancelledException"),this.extraDelay=e}}function Ys(u){const t=u.length;let e=0;for(;e<t&&u[e].trim()==="";)e++;return u.substring(e,e+5).toLowerCase()==="data:"}function Qi(u){return typeof u=="string"&&/\.pdf$/i.test(u)}function zo(u){return[u]=u.split(/[#?]/,1),Li(u)}function Vo(u,t="document.pdf"){if(typeof u!="string")return t;if(Ys(u))return z('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'),t;const s=(a=>{try{return new URL(a)}catch{}try{return new URL(decodeURIComponent(a))}catch{}try{return new URL(a,"https://foo.bar")}catch{}try{return new URL(decodeURIComponent(a),"https://foo.bar")}catch{}return null})(u);if(!s)return t;const i=a=>{try{let o=decodeURIComponent(a);return o.includes("/")&&(o=Li(o),o.length===4&&n.test(o))?a:o}catch{return a}},n=/\.pdf$/i,r=Li(s.pathname);if(n.test(r))return i(r);if(s.searchParams.size>0){const a=l=>[...l].findLast(c=>n.test(c)),o=a(s.searchParams.values())??a(s.searchParams.keys());if(o)return i(o)}if(s.hash){const o=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i.exec(s.hash);if(o)return i(o[0])}return t}class Hn{#t=new Map;times=[];time(t){this.#t.has(t)&&z(`Timer is already running for ${t}`),this.#t.set(t,Date.now())}timeEnd(t){this.#t.has(t)||z(`Timer has not been started for ${t}`),this.times.push({name:t,start:this.#t.get(t),end:Date.now()}),this.#t.delete(t)}toString(){const t=Math.max(...this.times.map(e=>e.name.length));return this.times.map(e=>`${e.name.padEnd(t)} ${e.end-e.start}ms
1
+ var Nn=u=>{throw TypeError(u)};var xi=(u,t,e)=>t.has(u)||Nn("Cannot "+e);var st=(u,t,e)=>(xi(u,t,"read from private field"),e?e.call(u):t.get(u)),zt=(u,t,e)=>t.has(u)?Nn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(u):t.set(u,e),vt=(u,t,e,s)=>(xi(u,t,"write to private field"),s?s.call(u,e):t.set(u,e),e),Vt=(u,t,e)=>(xi(u,t,"access private method"),e);var Fn=(u,t,e,s)=>({set _(i){vt(u,t,i,e)},get _(){return st(u,t,s)}});import{j as C}from"./radix-j_81dozL.js";import{r as H,u as va,c as xa}from"./vendor-BFom-Mq6.js";import{o as On,l as wa,p as Sa,q as Ca}from"./chat-api-BQgsmVCJ.js";import{u as pr,a as Ea}from"./chat-queries-BuU4cQ0I.js";import{g as Xi,a as gr,B as re,S as _a,f as Ns,t as yt,A as Pe,j as Ta,H as ka,D as Pa,E as Ma,N as Ia,b as Da,d as La,u as Na,k as Fa,l as Oa,O as Rn,Q as Bn,R as Ra,X as Cs,T as Ba,U as ja,V as Ha,W as Ua}from"./index-COUI_CR-.js";import{M as Ga,S as $a,A as za,T as Va,a as Wa,u as Xa}from"./ToolApprovalBar-BfIwjh_G.js";import{D as Ya,a as Ka,b as qa,c as wi,d as Qa}from"./dropdown-menu-mOPaoWK5.js";import{f as mr,a as br}from"./agent-api-C0qMHAE0.js";import{r as Ja,S as Za,s as to,C as eo,a as so,P as io,M as no,T as ro,e as ao,d as oo}from"./ModelLoadMenu-C7wK_COK.js";import{u as lo,M as co}from"./useIsDesktop-Dg2G692v.js";import{D as ho,o as uo,a as fo,b as po,c as go,p as mo}from"./dialog-OPLOEGn-.js";import{S as bo}from"./switch-CrtIhLpg.js";import{C as yo,a as Ao,b as vo}from"./collapsible-tffcj0HQ.js";import{C as xo}from"./chevron-right-Btn5ue2K.js";import{a as Si,r as wo,b as So,c as Co,g as Eo,d as _o}from"./personas-BL5LWber.js";import{a as To}from"./sliders-horizontal-BYbWJESN.js";import"./tool-explain-B8rnv8bW.js";import"./pencil-D3YoSpTL.js";import"./trash-2-BA8fBFXw.js";import"./refresh-cw-eHr6ZrHD.js";import"./chevron-left-BoIfI017.js";import"./index-BP-7GzAI.js";import"./circle-check-CyJ0DXgY.js";import"./circle-x-B2ihWKOZ.js";import"./skeleton-COip0Uxa.js";import"./plus-Czof1-k0.js";import"./star-CDjPloh2.js";import"./rotate-ccw-DBvaE0Sq.js";const ko=[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]],Po=Xi("paperclip",ko);const Mo=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],Io=Xi("share-2",Mo);const Do=[["circle",{cx:"12",cy:"8",r:"5",key:"1hypcn"}],["path",{d:"M20 21a8 8 0 0 0-16 0",key:"rfgkzh"}]],Lo=Xi("user-round",Do),kt=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),se=[1/0,1/0,-1/0,-1/0],be=new Float32Array(se),Di=[.001,0,0,.001,0,0],Ci=1.35,Et="http://www.w3.org/2000/svg",_t={ANY:1,DISPLAY:2,PRINT:4,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},ae={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},Le="pdfjs_internal_id_",ts="pdfjs_internal_editor_",$={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,POPUP:16,SIGNATURE:101,COMMENT:102},W={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,INK_COLOR_AND_OPACITY:24,HIGHLIGHT_COLOR:31,HIGHLIGHT_THICKNESS:32,HIGHLIGHT_FREE:33,HIGHLIGHT_SHOW_ALL:34,DRAW_STEP:41},No={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},ft={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},Fs={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},ct={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,RICHMEDIA:27},Me={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},zs={ERRORS:0,WARNINGS:1,INFOS:5},Kt={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:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,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},We={moveTo:0,lineTo:1,curveTo:2,quadraticCurveTo:3,closePath:4},Fo={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let Vs=zs.WARNINGS;function Oo(u){Number.isInteger(u)&&(Vs=u)}function Ro(){return Vs}function Ws(u){Vs>=zs.INFOS&&console.info(`Info: ${u}`)}function z(u){Vs>=zs.WARNINGS&&console.warn(`Warning: ${u}`)}function X(u){throw new Error(u)}function lt(u,t){u||X(t)}function Bo(u){switch(u?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function yr(u,t=null,e=null){if(!u)return null;if(e&&typeof u=="string"&&(e.addDefaultProtocol&&u.startsWith("www.")&&u.match(/\./g)?.length>=2&&(u=`http://${u}`),e.tryConvertEncoding))try{u=Uo(u)}catch{}const s=t?URL.parse(u,t):URL.parse(u);return Bo(s)?s:null}function Ar(u,t,e=!1){const s=URL.parse(u);return s?(s.hash=t,s.href):e&&yr(u,"http://example.com")?u.split("#",1)[0]+`${t?`#${t}`:""}`:""}function Li(u){return u.substring(u.lastIndexOf("/")+1)}function G(u,t,e,s=!1){return Object.defineProperty(u,t,{value:e,enumerable:!s,configurable:!0,writable:!1}),e}const Ce=(function(){function t(e,s){this.message=e,this.name=s}return t.prototype=new Error,t.constructor=t,t})();class Ni extends Ce{constructor(t,e){super(t,"PasswordException"),this.code=e}}class Ei extends Ce{constructor(t,e){super(t,"UnknownErrorException"),this.details=e}}class Fi extends Ce{constructor(t){super(t,"InvalidPDFException")}}class js extends Ce{constructor(t,e,s){super(t,"ResponseException"),this.status=e,this.missing=s}}class jo extends Ce{constructor(t){super(t,"FormatError")}}class le extends Ce{constructor(t){super(t,"AbortException")}}function Ho(u){(typeof u!="object"||u?.length===void 0)&&X("Invalid argument for bytesToString");const t=u.length,e=8192;if(t<e)return String.fromCharCode.apply(null,u);const s=[];for(let i=0;i<t;i+=e){const n=Math.min(i+e,t),r=u.subarray(i,n);s.push(String.fromCharCode.apply(null,r))}return s.join("")}function Xs(u){typeof u!="string"&&X("Invalid argument for stringToBytes");const t=u.length,e=new Uint8Array(t);for(let s=0;s<t;++s)e[s]=u.charCodeAt(s)&255;return e}class J{static get isLittleEndian(){const t=new Uint8Array(4);t[0]=1;const e=new Uint32Array(t.buffer,0,1);return G(this,"isLittleEndian",e[0]===1)}static get isOffscreenCanvasSupported(){return G(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get isImageDecoderSupported(){return G(this,"isImageDecoderSupported",typeof ImageDecoder<"u")}static get isFloat16ArraySupported(){return G(this,"isFloat16ArraySupported",typeof Float16Array<"u")}static get isSanitizerSupported(){return G(this,"isSanitizerSupported",typeof Sanitizer<"u")}static get platform(){const{platform:t,userAgent:e}=navigator;return G(this,"platform",{isAndroid:e.includes("Android"),isLinux:t.includes("Linux"),isMac:t.includes("Mac"),isWindows:t.includes("Win"),isFirefox:e.includes("Firefox")})}static get isCanvasFilterSupported(){let t;return this.isOffscreenCanvasSupported?t=new OffscreenCanvas(1,1).getContext("2d"):typeof document<"u"&&(t=document.createElement("canvas").getContext("2d")),G(this,"isCanvasFilterSupported",t?.filter!==void 0)}static get isAlphaColorInputSupported(){if(typeof document>"u")return G(this,"isAlphaColorInputSupported",!1);const t=document.createElement("input");return t.type="color",t.setAttribute("alpha",""),t.value="#ff000080",G(this,"isAlphaColorInputSupported",t.value!=="#ff0000")}static get isBackdropFilterSupported(){return G(this,"isBackdropFilterSupported",typeof CSS<"u"&&CSS.supports("backdrop-filter","blur(1px)"))}}class k{static get hexNums(){return G(this,"hexNums",Array.from(Array(256).keys(),t=>t.toString(16).padStart(2,"0")))}static makeHexColor(t,e,s){return`#${this.hexNums[t]}${this.hexNums[e]}${this.hexNums[s]}`}static transform(t,e){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],t[0]*e[4]+t[2]*e[5]+t[4],t[1]*e[4]+t[3]*e[5]+t[5]]}static multiplyByDOMMatrix(t,e){return[t[0]*e.a+t[2]*e.b,t[1]*e.a+t[3]*e.b,t[0]*e.c+t[2]*e.d,t[1]*e.c+t[3]*e.d,t[0]*e.e+t[2]*e.f+t[4],t[1]*e.e+t[3]*e.f+t[5]]}static applyTransform(t,e,s=0){const i=t[s],n=t[s+1];t[s]=i*e[0]+n*e[2]+e[4],t[s+1]=i*e[1]+n*e[3]+e[5]}static applyTransformToBezier(t,e,s=0){const i=e[0],n=e[1],r=e[2],a=e[3],o=e[4],l=e[5];for(let c=0;c<6;c+=2){const h=t[s+c],d=t[s+c+1];t[s+c]=h*i+d*r+o,t[s+c+1]=h*n+d*a+l}}static applyInverseTransform(t,e){const s=t[0],i=t[1],n=e[0]*e[3]-e[1]*e[2];t[0]=(s*e[3]-i*e[2]+e[2]*e[5]-e[4]*e[3])/n,t[1]=(-s*e[1]+i*e[0]+e[4]*e[1]-e[5]*e[0])/n}static axialAlignedBoundingBox(t,e,s){const i=e[0],n=e[1],r=e[2],a=e[3],o=e[4],l=e[5],c=t[0],h=t[1],d=t[2],f=t[3];let p=i*c+o,g=p,m=i*d+o,b=m,y=a*h+l,A=y,w=a*f+l,x=w;if(n!==0||r!==0){const S=n*c,E=n*d,_=r*h,P=r*f;p+=_,b+=_,m+=P,g+=P,y+=S,x+=S,w+=E,A+=E}s[0]=Math.min(s[0],p,m,g,b),s[1]=Math.min(s[1],y,w,A,x),s[2]=Math.max(s[2],p,m,g,b),s[3]=Math.max(s[3],y,w,A,x)}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}static singularValueDecompose2dScale(t,e){const s=t[0],i=t[1],n=t[2],r=t[3],a=s**2+i**2,o=s*n+i*r,l=n**2+r**2,c=(a+l)/2,h=Math.sqrt(c**2-(a*l-o**2));e[0]=Math.sqrt(c+h||1),e[1]=Math.sqrt(c-h||1)}static normalizeRect(t){const e=t.slice(0);return t[0]>t[2]&&(e[0]=t[2],e[2]=t[0]),t[1]>t[3]&&(e[1]=t[3],e[3]=t[1]),e}static intersect(t,e){const s=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),i=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(s>i)return null;const n=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),r=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return n>r?null:[s,n,i,r]}static pointBoundingBox(t,e,s){s[0]=Math.min(s[0],t),s[1]=Math.min(s[1],e),s[2]=Math.max(s[2],t),s[3]=Math.max(s[3],e)}static rectBoundingBox(t,e,s,i,n){n[0]=Math.min(n[0],t,s),n[1]=Math.min(n[1],e,i),n[2]=Math.max(n[2],t,s),n[3]=Math.max(n[3],e,i)}static#t(t,e,s,i,n,r,a,o,l,c){if(l<=0||l>=1)return;const h=1-l,d=l*l,f=d*l,p=h*(h*(h*t+3*l*e)+3*d*s)+f*i,g=h*(h*(h*n+3*l*r)+3*d*a)+f*o;c[0]=Math.min(c[0],p),c[1]=Math.min(c[1],g),c[2]=Math.max(c[2],p),c[3]=Math.max(c[3],g)}static#e(t,e,s,i,n,r,a,o,l,c,h,d){if(Math.abs(l)<1e-12){Math.abs(c)>=1e-12&&this.#t(t,e,s,i,n,r,a,o,-h/c,d);return}const f=c**2-4*h*l;if(f<0)return;const p=Math.sqrt(f),g=2*l;this.#t(t,e,s,i,n,r,a,o,(-c+p)/g,d),this.#t(t,e,s,i,n,r,a,o,(-c-p)/g,d)}static bezierBoundingBox(t,e,s,i,n,r,a,o,l){l[0]=Math.min(l[0],t,a),l[1]=Math.min(l[1],e,o),l[2]=Math.max(l[2],t,a),l[3]=Math.max(l[3],e,o),this.#e(t,s,n,a,e,i,r,o,3*(-t+3*(s-n)+a),6*(t-2*s+n),3*(s-t),l),this.#e(t,s,n,a,e,i,r,o,3*(-e+3*(i-r)+o),6*(e-2*i+r),3*(i-e),l)}}function Uo(u){return decodeURIComponent(escape(u))}let _i=null,jn=null;function Go(u){return _i||(_i=/([\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,jn=new Map([["ſt","ſt"]])),u.replaceAll(_i,(t,e,s)=>e?e.normalize("NFKC"):jn.get(s))}function vr(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();const u=new Uint8Array(32);return crypto.getRandomValues(u),Ho(u)}function $o(u,t,e){if(!Array.isArray(e)||e.length<2)return!1;const[s,i,...n]=e;if(!u(s)&&!Number.isInteger(s)||!t(i))return!1;const r=n.length;let a=!0;switch(i.name){case"XYZ":if(r<2||r>3)return!1;break;case"Fit":case"FitB":return r===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(r>1)return!1;break;case"FitR":if(r!==4)return!1;a=!1;break;default:return!1}for(const o of n)if(!(typeof o=="number"||a&&o===null))return!1;return!0}const as=()=>[],Yi=()=>new Map,Oi=()=>Object.create(null);function et(u,t,e){return Math.min(Math.max(u,t),e)}class os{constructor({viewBox:t,userUnit:e,scale:s,rotation:i,offsetX:n=0,offsetY:r=0,dontFlip:a=!1}){this.viewBox=t,this.userUnit=e,this.scale=s,this.rotation=i,this.offsetX=n,this.offsetY=r,s*=e;const o=(t[2]+t[0])/2,l=(t[3]+t[1])/2;let c,h,d,f;switch(i%=360,i<0&&(i+=360),i){case 180:c=-1,h=0,d=0,f=1;break;case 90:c=0,h=1,d=1,f=0;break;case 270:c=0,h=-1,d=-1,f=0;break;case 0:c=1,h=0,d=0,f=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}a&&(d=-d,f=-f);let p,g,m,b;c===0?(p=Math.abs(l-t[1])*s+n,g=Math.abs(o-t[0])*s+r,m=(t[3]-t[1])*s,b=(t[2]-t[0])*s):(p=Math.abs(o-t[0])*s+n,g=Math.abs(l-t[1])*s+r,m=(t[2]-t[0])*s,b=(t[3]-t[1])*s),this.transform=[c*s,h*s,d*s,f*s,p-c*s*o-d*s*l,g-h*s*o-f*s*l],this.width=m,this.height=b}get rawDims(){const t=this.viewBox;return G(this,"rawDims",{pageWidth:t[2]-t[0],pageHeight:t[3]-t[1],pageX:t[0],pageY:t[1]})}clone({scale:t=this.scale,rotation:e=this.rotation,offsetX:s=this.offsetX,offsetY:i=this.offsetY,dontFlip:n=!1}={}){return new os({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:t,rotation:e,offsetX:s,offsetY:i,dontFlip:n})}convertToViewportPoint(t,e){const s=[t,e];return k.applyTransform(s,this.transform),s}convertToPdfPoint(t,e){const s=[t,e];return k.applyInverseTransform(s,this.transform),s}}class es{static textContent(t){const e=[],s={items:e,styles:Object.create(null)};function i(n){if(!n)return;let r=null;const a=n.name;if(a==="#text")r=n.value;else if(es.shouldBuildText(a))n?.attributes?.textContent?r=n.attributes.textContent:n.value&&(r=n.value);else return;if(r!==null&&e.push({str:r}),!!n.children)for(const o of n.children)i(o)}return i(t),s}static shouldBuildText(t){return!(t==="textarea"||t==="input"||t==="option"||t==="select")}}class xr{static setupStorage(t,e,s,i,n){const r=i.getValue(e,{value:null});switch(s.name){case"textarea":if(r.value!==null&&(t.textContent=r.value),n==="print")break;t.addEventListener("input",a=>{i.setValue(e,{value:a.target.value})});break;case"input":if(s.attributes.type==="radio"||s.attributes.type==="checkbox"){if(r.value===s.attributes.xfaOn?t.setAttribute("checked",!0):r.value===s.attributes.xfaOff&&t.removeAttribute("checked"),n==="print")break;t.addEventListener("change",a=>{i.setValue(e,{value:a.target.checked?a.target.getAttribute("xfaOn"):a.target.getAttribute("xfaOff")})})}else{if(r.value!==null&&t.setAttribute("value",r.value),n==="print")break;t.addEventListener("input",a=>{i.setValue(e,{value:a.target.value})})}break;case"select":if(r.value!==null){t.setAttribute("value",r.value);for(const a of s.children)a.attributes.value===r.value?a.attributes.selected=!0:Object.hasOwn(a.attributes,"selected")&&delete a.attributes.selected}t.addEventListener("input",a=>{const o=a.target.options,l=o.selectedIndex===-1?"":o[o.selectedIndex].value;i.setValue(e,{value:l})});break}}static setAttributes({html:t,element:e,storage:s=null,intent:i,linkService:n}){const{attributes:r}=e,a=t instanceof HTMLAnchorElement;r.type==="radio"&&(r.name=`${r.name}-${i}`);for(const[o,l]of Object.entries(r))if(l!=null)switch(o){case"class":l.length&&t.setAttribute(o,l.join(" "));break;case"dataId":break;case"id":t.setAttribute("data-element-id",l);break;case"style":Object.assign(t.style,l);break;case"textContent":t.textContent=l;break;default:(!a||o!=="href"&&o!=="newWindow")&&t.setAttribute(o,l)}a&&n.addLinkAttributes(t,r.href,r.newWindow),s&&r.dataId&&this.setupStorage(t,r.dataId,e,s)}static render(t){const e=t.annotationStorage,s=t.linkService,i=t.xfaHtml,n=t.intent||"display",r=document.createElement(i.name);i.attributes&&this.setAttributes({html:r,element:i,intent:n,linkService:s});const a=n!=="richText",o=t.div;if(o.append(r),t.viewport){const h=`matrix(${t.viewport.transform.join(",")})`;o.style.transform=h}a&&o.setAttribute("class","xfaLayer xfaFont");const l=[];if(i.children.length===0){if(i.value){const h=document.createTextNode(i.value);r.append(h),a&&es.shouldBuildText(i.name)&&l.push(h)}return{textDivs:l}}const c=[[i,-1,r]];for(;c.length>0;){const[h,d,f]=c.at(-1);if(d+1===h.children.length){c.pop();continue}const p=h.children[++c.at(-1)[1]];if(p===null)continue;const{name:g}=p;if(g==="#text"){const b=document.createTextNode(p.value);l.push(b),f.append(b);continue}const m=p?.attributes?.xmlns?document.createElementNS(p.attributes.xmlns,g):document.createElement(g);if(f.append(m),p.attributes&&this.setAttributes({html:m,element:p,storage:e,intent:n,linkService:s}),p.children?.length>0)c.push([p,-1,m]);else if(p.value){const b=document.createTextNode(p.value);a&&es.shouldBuildText(g)&&l.push(b),m.append(b)}}for(const h of o.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))h.setAttribute("readOnly",!0);return{textDivs:l}}static update(t){const e=`matrix(${t.viewport.transform.join(",")})`;t.div.style.transform=e,t.div.hidden=!1}static getPageViewport(t,{scale:e=1,rotation:s=0}){const{width:i,height:n}=t.attributes.style;return new os({viewBox:[0,0,parseInt(i,10),parseInt(n,10)],userUnit:1,scale:e,rotation:s})}}class Be{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF}async function Ki(u,t="text"){if(Qe(u,document.baseURI)){const e=await fetch(u);if(!e.ok)throw new Error(e.statusText);switch(t){case"blob":return e.blob();case"bytes":return e.bytes();case"json":return e.json()}return e.text()}return new Promise((e,s)=>{const i=new XMLHttpRequest;i.open("GET",u,!0),i.responseType=t==="bytes"?"arraybuffer":t,i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE){if(i.status===200||i.status===0){switch(t){case"bytes":e(new Uint8Array(i.response));return;case"blob":case"json":e(i.response);return}e(i.responseText);return}s(new Error(i.statusText))}},i.send(null)})}class qi extends Ce{constructor(t,e=0){super(t,"RenderingCancelledException"),this.extraDelay=e}}function Ys(u){const t=u.length;let e=0;for(;e<t&&u[e].trim()==="";)e++;return u.substring(e,e+5).toLowerCase()==="data:"}function Qi(u){return typeof u=="string"&&/\.pdf$/i.test(u)}function zo(u){return[u]=u.split(/[#?]/,1),Li(u)}function Vo(u,t="document.pdf"){if(typeof u!="string")return t;if(Ys(u))return z('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'),t;const s=(a=>{try{return new URL(a)}catch{}try{return new URL(decodeURIComponent(a))}catch{}try{return new URL(a,"https://foo.bar")}catch{}try{return new URL(decodeURIComponent(a),"https://foo.bar")}catch{}return null})(u);if(!s)return t;const i=a=>{try{let o=decodeURIComponent(a);return o.includes("/")&&(o=Li(o),o.length===4&&n.test(o))?a:o}catch{return a}},n=/\.pdf$/i,r=Li(s.pathname);if(n.test(r))return i(r);if(s.searchParams.size>0){const a=l=>[...l].findLast(c=>n.test(c)),o=a(s.searchParams.values())??a(s.searchParams.keys());if(o)return i(o)}if(s.hash){const o=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i.exec(s.hash);if(o)return i(o[0])}return t}class Hn{#t=new Map;times=[];time(t){this.#t.has(t)&&z(`Timer is already running for ${t}`),this.#t.set(t,Date.now())}timeEnd(t){this.#t.has(t)||z(`Timer has not been started for ${t}`),this.times.push({name:t,start:this.#t.get(t),end:Date.now()}),this.#t.delete(t)}toString(){const t=Math.max(...this.times.map(e=>e.name.length));return this.times.map(e=>`${e.name.padEnd(t)} ${e.end-e.start}ms
2
2
  `).join("")}}function Qe(u,t){const e=t?URL.parse(u,t):URL.parse(u);return/https?:/.test(e?.protocol??"")}function Ft(u){u.preventDefault()}function ot(u){u.preventDefault(),u.stopPropagation()}class Ri{static#t;static toDateObject(t){if(t instanceof Date)return t;if(!t||typeof t!="string")return null;this.#t||=new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+\\-])?(\\d{2})?'?(\\d{2})?'?");const e=this.#t.exec(t);if(!e)return null;const s=parseInt(e[1],10);let i=parseInt(e[2],10);i=i>=1&&i<=12?i-1:0;let n=parseInt(e[3],10);n=n>=1&&n<=31?n:1;let r=parseInt(e[4],10);r=r>=0&&r<=23?r:0;let a=parseInt(e[5],10);a=a>=0&&a<=59?a:0;let o=parseInt(e[6],10);o=o>=0&&o<=59?o:0;const l=e[7]||"Z";let c=parseInt(e[8],10);c=c>=0&&c<=23?c:0;let h=parseInt(e[9],10)||0;return h=h>=0&&h<=59?h:0,l==="-"?(r+=c,a+=h):l==="+"&&(r-=c,a-=h),new Date(Date.UTC(s,i,n,r,a,o))}}function ls(u){if(u.startsWith("#")){const e=u.slice(1);return[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16),e.length>=8?parseInt(e.slice(6,8),16)/255:1]}if(u.startsWith("rgb(")){const[e,s,i]=u.slice(4,-1).split(",").map(n=>parseInt(n,10));return[e,s,i,1]}if(u.startsWith("rgba(")){const e=u.slice(5,-1).split(",");return[parseInt(e[0],10),parseInt(e[1],10),parseInt(e[2],10),parseFloat(e[3])]}const t=u.match(/^color\(srgb\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*([\d.]+|none))?\)$/);return t?[Math.round(parseFloat(t[1])*255),Math.round(parseFloat(t[2])*255),Math.round(parseFloat(t[3])*255),t[4]!==void 0&&t[4]!=="none"?parseFloat(t[4]):1]:null}function cs(u){const t=ls(u);return t?t.slice(0,3):(z(`Not a valid color format: "${u}"`),[0,0,0])}function Wo(u){const t=document.createElement("span");t.style.visibility="hidden",t.style.colorScheme="only light",document.body.append(t);for(const e of u.keys()){t.style.color=e;const s=window.getComputedStyle(t).color;u.set(e,cs(s))}t.remove()}function tt(u){const{a:t,b:e,c:s,d:i,e:n,f:r}=u.getTransform();return[t,e,s,i,n,r]}function Wt(u){const{a:t,b:e,c:s,d:i,e:n,f:r}=u.getTransform().invertSelf();return[t,e,s,i,n,r]}function we(u,t,e=!1,s=!0){if(t instanceof os){const{pageWidth:i,pageHeight:n}=t.rawDims,{style:r}=u,a=`round(down, var(--total-scale-factor) * ${i}px, var(--scale-round-x))`,o=`round(down, var(--total-scale-factor) * ${n}px, var(--scale-round-y))`;!e||t.rotation%180===0?(r.width=a,r.height=o):(r.width=o,r.height=a)}s&&u.setAttribute("data-main-rotation",t.rotation)}class Qt{constructor(){const{pixelRatio:t}=Qt;this.sx=t,this.sy=t}get scaled(){return this.sx!==1||this.sy!==1}get symmetric(){return this.sx===this.sy}limitCanvas(t,e,s,i,n=-1){let r=1/0,a=1/0,o=1/0;s=Qt.capPixels(s,n),s>0&&(r=Math.sqrt(s/(t*e))),i!==-1&&(a=i/t,o=i/e);const l=Math.min(r,a,o);return this.sx>l||this.sy>l?(this.sx=l,this.sy=l,!0):!1}static get pixelRatio(){return globalThis.devicePixelRatio||1}static capPixels(t,e){if(e>=0){const s=Math.ceil(window.screen.availWidth*window.screen.availHeight*this.pixelRatio**2*(1+e/100));return t>0?Math.min(t,s):s}return t}}const Bi=["image/apng","image/avif","image/bmp","image/gif","image/jpeg","image/png","image/svg+xml","image/webp","image/x-icon"];class Xo{static get isDarkMode(){return G(this,"isDarkMode",!!window?.matchMedia?.("(prefers-color-scheme: dark)").matches)}}class Yo{static get commentForegroundColor(){const t=document.createElement("span");t.classList.add("comment","sidebar");const{style:e}=t;e.width=e.height="0",e.display="none",e.color="var(--comment-fg-color)",document.body.append(t);const{color:s}=window.getComputedStyle(t);return t.remove(),G(this,"commentForegroundColor",cs(s))}}function Ko(u,t){t=et(t??1,0,1);const e=255*(1-t);return u.map(s=>Math.round(s*t+e))}function Un(u,t){const e=u[0]/255,s=u[1]/255,i=u[2]/255,n=Math.max(e,s,i),r=Math.min(e,s,i),a=(n+r)/2;if(n===r)t[0]=t[1]=0;else{const o=n-r;switch(t[1]=a<.5?o/(n+r):o/(2-n-r),n){case e:t[0]=((s-i)/o+(s<i?6:0))*60;break;case s:t[0]=((i-e)/o+2)*60;break;case i:t[0]=((e-s)/o+4)*60;break}}t[2]=a}function ji(u,t){const e=u[0],s=u[1],i=u[2],n=(1-Math.abs(2*i-1))*s,r=n*(1-Math.abs(e/60%2-1)),a=i-n/2;switch(Math.floor(e/60)){case 0:t[0]=n+a,t[1]=r+a,t[2]=a;break;case 1:t[0]=r+a,t[1]=n+a,t[2]=a;break;case 2:t[0]=a,t[1]=n+a,t[2]=r+a;break;case 3:t[0]=a,t[1]=r+a,t[2]=n+a;break;case 4:t[0]=r+a,t[1]=a,t[2]=n+a;break;case 5:case 6:t[0]=n+a,t[1]=a,t[2]=r+a;break}}function Gn(u){return u<=.03928?u/12.92:((u+.055)/1.055)**2.4}function $n(u,t,e){ji(u,e),e.map(Gn);const s=.2126*e[0]+.7152*e[1]+.0722*e[2];ji(t,e),e.map(Gn);const i=.2126*e[0]+.7152*e[1]+.0722*e[2];return s>i?(s+.05)/(i+.05):(i+.05)/(s+.05)}const zn=new Map;function qo(u,t){const e=u[0]+u[1]*256+u[2]*65536+t[0]*16777216+t[1]*4294967296+t[2]*1099511627776;let s=zn.get(e);if(s)return s;const i=new Float32Array(9),n=i.subarray(0,3),r=i.subarray(3,6);Un(u,r);const a=i.subarray(6,9);Un(t,a);const o=a[2]<.5,l=o?12:4.5;if(r[2]=o?Math.sqrt(r[2]):1-Math.sqrt(1-r[2]),$n(r,a,n)<l){let c,h;o?(c=r[2],h=1):(c=0,h=r[2]);const d=.005;for(;h-c>d;){const f=r[2]=(c+h)/2;o===$n(r,a,n)<l?c=f:h=f}r[2]=o?h:c}return ji(r,n),s=k.makeHexColor(Math.round(n[0]*255),Math.round(n[1]*255),Math.round(n[2]*255)),zn.set(e,s),s}function wr({html:u,dir:t,className:e},s){const i=document.createDocumentFragment();if(typeof u=="string"){const n=document.createElement("p");n.dir=t||"auto";const r=u.split(/\r\n?|\n/);for(let a=0,o=r.length;a<o;++a){const l=r[a];n.append(document.createTextNode(l)),a<o-1&&n.append(document.createElement("br"))}i.append(n)}else xr.render({xfaHtml:u,div:i,intent:"richText"});i.firstElementChild.classList.add("richText",e),s.append(i)}function Sr(u){const t=new Path2D;if(!u)return t;for(let e=0,s=u.length;e<s;)switch(u[e++]){case We.moveTo:t.moveTo(u[e++],u[e++]);break;case We.lineTo:t.lineTo(u[e++],u[e++]);break;case We.curveTo:t.bezierCurveTo(u[e++],u[e++],u[e++],u[e++],u[e++],u[e++]);break;case We.quadraticCurveTo:t.quadraticCurveTo(u[e++],u[e++],u[e++],u[e++]);break;case We.closePath:t.closePath();break;default:z(`Unrecognized drawing path operator: ${u[e-1]}`);break}return t}class Je{#t=null;#e=null;#s;#i=null;#n=null;#a=null;#r=null;#o=null;static#h=null;constructor(t){this.#s=t,Je.#h||=Object.freeze({freetext:"pdfjs-editor-remove-freetext-button",highlight:"pdfjs-editor-remove-highlight-button",ink:"pdfjs-editor-remove-ink-button",stamp:"pdfjs-editor-remove-stamp-button",signature:"pdfjs-editor-remove-signature-button"})}render(){const t=this.#t=document.createElement("div");t.classList.add("editToolbar","hidden"),t.setAttribute("role","toolbar");const e=this.#s._uiManager._signal;e instanceof AbortSignal&&!e.aborted&&(t.addEventListener("contextmenu",Ft,{signal:e}),t.addEventListener("pointerdown",Je.#l,{signal:e}));const s=this.#i=document.createElement("div");s.className="buttons",t.append(s);const i=this.#s.toolbarPosition;if(i){const{style:n}=t,r=this.#s._uiManager.direction==="ltr"?1-i[0]:i[0];n.insetInlineEnd=`${100*r}%`,n.top=`calc(${100*i[1]}% + var(--editor-toolbar-vert-offset))`}return t}get div(){return this.#t}static#l(t){t.stopPropagation()}#u(t){this.#s._focusEventsAllowed=!1,ot(t)}#d(t){this.#s._focusEventsAllowed=!0,ot(t)}#p(t){const e=this.#s._uiManager._signal;return!(e instanceof AbortSignal)||e.aborted?!1:(t.addEventListener("focusin",this.#u.bind(this),{capture:!0,signal:e}),t.addEventListener("focusout",this.#d.bind(this),{capture:!0,signal:e}),t.addEventListener("contextmenu",Ft,{signal:e}),!0)}hide(){this.#t.classList.add("hidden"),this.#e?.hideDropdown()}show(){this.#t.classList.remove("hidden"),this.#n?.shown(),this.#a?.shown()}addDeleteButton(){const{editorType:t,_uiManager:e}=this.#s,s=document.createElement("button");s.classList.add("basic","deleteButton"),s.tabIndex=0,s.setAttribute("data-l10n-id",Je.#h[t]),this.#p(s)&&s.addEventListener("click",i=>{e.delete()},{signal:e._signal}),this.#i.append(s)}get#m(){const t=document.createElement("div");return t.className="divider",t}async addAltText(t){const e=await t.render();this.#p(e),this.#i.append(e,this.#m),this.#n=t}addComment(t,e=null){if(this.#a)return;const s=t.renderForToolbar();if(!s)return;this.#p(s);const i=this.#r=this.#m;e?(this.#i.insertBefore(s,e),this.#i.insertBefore(i,e)):this.#i.append(s,i),this.#a=t,t.toolbar=this}addColorPicker(t){if(this.#e)return;this.#e=t;const e=t.renderButton();this.#p(e),this.#i.append(e,this.#m)}async addEditSignatureButton(t){const e=this.#o=await t.renderEditButton(this.#s);this.#p(e),this.#i.append(e,this.#m)}removeButton(t){t==="comment"&&(this.#a?.removeToolbarCommentButton(),this.#a=null,this.#r?.remove(),this.#r=null)}async addButton(t,e){switch(t){case"colorPicker":e&&this.addColorPicker(e);break;case"altText":e&&await this.addAltText(e);break;case"editSignature":e&&await this.addEditSignatureButton(e);break;case"delete":this.addDeleteButton();break;case"comment":e&&this.addComment(e);break}}async addButtonBefore(t,e,s){if(!e&&t==="comment")return;const i=this.#i.querySelector(s);i&&t==="comment"&&this.addComment(e,i)}updateEditSignatureButton(t){this.#o&&(this.#o.title=t)}remove(){this.#t.remove(),this.#e?.destroy(),this.#e=null}}class Qo{#t=null;#e=null;#s;constructor(t){this.#s=t}#i(){const t=this.#e=document.createElement("div");t.className="editToolbar",t.setAttribute("role","toolbar");const e=this.#s._signal;e instanceof AbortSignal&&!e.aborted&&t.addEventListener("contextmenu",Ft,{signal:e});const s=this.#t=document.createElement("div");return s.className="buttons",t.append(s),this.#s.hasCommentManager()&&this.#a("commentButton","pdfjs-comment-floating-button","pdfjs-comment-floating-button-label",()=>{this.#s.commentSelection("floating_button")}),this.#a("highlightButton","pdfjs-highlight-floating-button1","pdfjs-highlight-floating-button-label",()=>{this.#s.highlightSelection("floating_button")}),t}#n(t,e){let s=0,i=0;for(const n of t){const r=n.y+n.height;if(r<s)continue;const a=n.x+(e?n.width:0);if(r>s){i=a,s=r;continue}e?a>i&&(i=a):a<i&&(i=a)}return[e?1-i:i,s]}show(t,e,s){const[i,n]=this.#n(e,s),{style:r}=this.#e||=this.#i();t.append(this.#e),r.insetInlineEnd=`${100*i}%`,r.top=`calc(${100*n}% + var(--editor-toolbar-vert-offset))`}hide(){this.#e.remove()}#a(t,e,s,i){const n=document.createElement("button");n.classList.add("basic",t),n.tabIndex=0,n.setAttribute("data-l10n-id",e);const r=document.createElement("span");n.append(r),r.className="visuallyHidden",r.setAttribute("data-l10n-id",s);const a=this.#s._signal;a instanceof AbortSignal&&!a.aborted&&(n.addEventListener("contextmenu",Ft,{signal:a}),n.addEventListener("click",i,{signal:a})),this.#t.append(n)}}const Jo="068f09d6-5b37-4f77-a97a-f8ff4f253b68",Ti=Object.freeze({internal:Jo});function Cr(u,t,e){for(const s of e)t.addEventListener(s,u[s].bind(u))}class K{static#t=NaN;static#e=null;static#s=NaN;static#i=null;static initializeAndAddPointerId(t){(K.#e||=new Set).add(t)}static setPointer(t,e){K.#t||=e,K.#i??=t}static setTimeStamp(t){K.#s=t}static isSamePointerId(t){return K.#t===t}static isSamePointerIdOrRemove(t){return K.#t===t?!0:(K.#e?.delete(t),!1)}static isSamePointerType(t){return K.#i===t}static isInitializedAndDifferentPointerType(t){return K.#i!==null&&!K.isSamePointerType(t)}static isSameTimeStamp(t){return K.#s===t}static isUsingMultiplePointers(){return K.#e?.size>=1}static clearPointerType(){K.#i=null}static clearPointerIds(){K.#t=NaN,K.#e=null}static clearTimeStamp(){K.#s=NaN}}class Zo{#t=0;get id(){return`${ts}${this.#t++}`}}class Ji{#t=vr();#e=0;#s=null;static get _isSVGFittingCanvas(){const t=`data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 1 1" width="1" height="1" xmlns="${Et}"><rect width="1" height="1" style="fill:red;"/></svg>`,s=new OffscreenCanvas(1,3).getContext("2d",{willReadFrequently:!0}),i=new Image;i.src=t;const n=i.decode().then(()=>(s.drawImage(i,0,0,1,1,0,0,1,3),new Uint32Array(s.getImageData(0,0,1,1).data.buffer)[0]===0));return G(this,"_isSVGFittingCanvas",n)}async#i(t,e){this.#s||=new Map;let s=this.#s.get(t);if(s===null)return null;if(s?.bitmap)return s.refCounter+=1,s;try{s||={bitmap:null,id:`image_${this.#t}_${this.#e++}`,refCounter:0,isSvg:!1};let i;if(typeof e=="string"?(s.url=e,i=await Ki(e,"blob")):e instanceof File?i=s.file=e:e instanceof Blob&&(i=e),i.type==="image/svg+xml"){const n=Ji._isSVGFittingCanvas,r=new FileReader,a=new Image,o=new Promise((l,c)=>{a.onload=()=>{s.bitmap=a,s.isSvg=!0,l()},r.onload=async()=>{const h=s.svgUrl=r.result;a.src=await n?`${h}#svgView(preserveAspectRatio(none))`:h},a.onerror=r.onerror=c});r.readAsDataURL(i),await o}else s.bitmap=await createImageBitmap(i);s.refCounter=1}catch(i){z(i),s=null}return this.#s.set(t,s),s&&this.#s.set(s.id,s),s}async getFromFile(t){const{lastModified:e,name:s,size:i,type:n}=t;return this.#i(`${e}_${s}_${i}_${n}`,t)}async getFromUrl(t){return this.#i(t,t)}async getFromBlob(t,e){const s=await e;return this.#i(t,s)}async getFromId(t){this.#s||=new Map;const e=this.#s.get(t);if(!e)return null;if(e.bitmap)return e.refCounter+=1,e;if(e.file)return this.getFromFile(e.file);if(e.blobPromise){const{blobPromise:s}=e;return delete e.blobPromise,this.getFromBlob(e.id,s)}return this.getFromUrl(e.url)}getFromCanvas(t,e){this.#s||=new Map;let s=this.#s.get(t);if(s?.bitmap)return s.refCounter+=1,s;const i=new OffscreenCanvas(e.width,e.height);return i.getContext("2d").drawImage(e,0,0),s={bitmap:i.transferToImageBitmap(),id:`image_${this.#t}_${this.#e++}`,refCounter:1,isSvg:!1},this.#s.set(t,s),this.#s.set(s.id,s),s}getSvgUrl(t){const e=this.#s.get(t);return e?.isSvg?e.svgUrl:null}deleteId(t){this.#s||=new Map;const e=this.#s.get(t);if(!e||(e.refCounter-=1,e.refCounter!==0))return;const{bitmap:s}=e;if(!e.url&&!e.file){const i=new OffscreenCanvas(s.width,s.height);i.getContext("bitmaprenderer").transferFromImageBitmap(s),e.blobPromise=i.convertToBlob()}s.close?.(),e.bitmap=null}isValidId(t){return t.startsWith(`image_${this.#t}_`)}}class tl{#t=[];#e=!1;#s;#i=-1;constructor(t=128){this.#s=t}add({cmd:t,undo:e,post:s,mustExec:i,type:n=NaN,overwriteIfSameType:r=!1,keepUndo:a=!1}){if(i&&t(),this.#e)return;const o={cmd:t,undo:e,post:s,type:n};if(this.#i===-1){this.#t.length>0&&(this.#t.length=0),this.#i=0,this.#t.push(o);return}if(r&&this.#t[this.#i].type===n){a&&(o.undo=this.#t[this.#i].undo),this.#t[this.#i]=o;return}const l=this.#i+1;l===this.#s?this.#t.splice(0,1):(this.#i=l,l<this.#t.length&&this.#t.splice(l)),this.#t.push(o)}undo(){if(this.#i===-1)return;this.#e=!0;const{undo:t,post:e}=this.#t[this.#i];t(),e?.(),this.#e=!1,this.#i-=1}redo(){if(this.#i<this.#t.length-1){this.#i+=1,this.#e=!0;const{cmd:t,post:e}=this.#t[this.#i];t(),e?.(),this.#e=!1}}hasSomethingToUndo(){return this.#i!==-1}hasSomethingToRedo(){return this.#i<this.#t.length-1}cleanType(t){if(this.#i!==-1){for(let e=this.#i;e>=0;e--)if(this.#t[e].type!==t){this.#t.splice(e+1,this.#i-e),this.#i=e;return}this.#t.length=0,this.#i=-1}}destroy(){this.#t=null}}class Pt{static ALT=1;static CTRL=2;static META=4;static SHIFT=8;constructor(t){this.callbacks=new Map;const{isMac:e}=J.platform;for(const[s,i,n={}]of t){const r=s.some(a=>a.startsWith("mac+"));for(const a of s){let o=a;if(r){const h=a.startsWith("mac+");if(e!==h)continue;h&&(o=a.slice(4))}const[l,c]=Pt.#t(o);l!==null&&this.callbacks.getOrInsertComputed(l,as).push({callback:i,options:n,modifiers:c})}}}static#t(t){let e=null,s=0;for(let i of t.split("+")){if(i=i.trim(),!i)continue;const n=i.toUpperCase(),r=Pt[n];if(r){s|=r;continue}if(e!==null){z(`KeyboardManager: multiple keys in shortcut "${t}"`);break}e=n==="SPACE"?" ":i}return e===null&&z(`KeyboardManager: no key found in shortcut "${t}"`),[e,s]}static#e(t){const e=/^(?:Key([A-Z])|(?:Digit|Numpad)(\d))$/.exec(t);return e?e[1]?.toLowerCase()??e[2]:null}exec(t,e){let s=this.callbacks.get(e.key);if(!s){if(/^[a-z]$/i.test(e.key))return;const c=Pt.#e(e.code);if(c===null||c===e.key||(s=this.callbacks.get(c),!s))return}const i=(e.altKey?Pt.ALT:0)|(e.ctrlKey?Pt.CTRL:0)|(e.metaKey?Pt.META:0)|(e.shiftKey?Pt.SHIFT:0),n=s.find(c=>c.modifiers===i);if(!n)return;const{callback:r,options:{bubbles:a=!1,args:o=[],checker:l=null}}=n;l&&!l(t,e)||(r.bind(t,...o,e)(),a||ot(e))}}class Zi{static _colorsMapping=new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]);get _colors(){const t=new Map([["CanvasText",null],["Canvas",null]]);return Wo(t),G(this,"_colors",t)}convert(t){const e=cs(t);if(!window.matchMedia("(forced-colors: active)").matches)return e;for(const[s,i]of this._colors)if(i.every((n,r)=>n===e[r]))return Zi._colorsMapping.get(s);return e}getHexCode(t){const e=this._colors.get(t);return e?k.makeHexColor(...e):t}}class ce{#t=new AbortController;#e=null;#s=null;#i=new Map;#n=new Map;#a=null;#r=null;#o=null;#h=null;#l=new tl;#u=null;#d=null;#p=null;#m=0;#g=new Set;#c=null;#f=null;#y=new Set;_editorUndoBar=null;#A=!1;#b=!1;#S=!1;#C=null;#v=null;#E=null;#w=null;#T=!1;#P=null;#M=new Zo;#k=!1;#L=!1;#N=!1;#D=null;#F=null;#R=null;#j=null;#V=null;#_=$.NONE;#x=new Set;#O=null;#U=null;#$=null;#K=null;#X=null;#Y={isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1};#B=[0,0];#z=null;#W=null;#Z=null;#tt=null;#H=null;static TRANSLATE_SMALL=1;static TRANSLATE_BIG=10;static get _keyboardManager(){const t=ce.prototype,e=r=>r.#W.contains(document.activeElement)&&document.activeElement.tagName!=="BUTTON"&&r.hasSomethingToControl(),s=(r,{target:a})=>{if(a instanceof HTMLInputElement){const{type:o}=a;return o!=="text"&&o!=="number"}return!0},i=this.TRANSLATE_SMALL,n=this.TRANSLATE_BIG;return G(this,"_keyboardManager",new Pt([[["ctrl+a","mac+meta+a"],t.selectAll,{checker:s}],[["ctrl+z","mac+meta+z"],t.undo,{checker:s}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],t.redo,{checker:s}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],t.delete,{checker:s}],[["Enter"],t.addNewEditorFromKeyboard,{checker:(r,{target:a})=>!(a instanceof HTMLButtonElement)&&r.#W.contains(a)&&!r.isEnterHandled}],[["Space"],t.addNewEditorFromKeyboard,{checker:(r,{target:a})=>!(a instanceof HTMLButtonElement)&&r.#W.contains(document.activeElement)}],[["Escape"],t.unselectAll],[["ArrowLeft"],t.translateSelectedEditors,{args:[-i,0],checker:e}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t.translateSelectedEditors,{args:[-n,0],checker:e}],[["ArrowRight"],t.translateSelectedEditors,{args:[i,0],checker:e}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t.translateSelectedEditors,{args:[n,0],checker:e}],[["ArrowUp"],t.translateSelectedEditors,{args:[0,-i],checker:e}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t.translateSelectedEditors,{args:[0,-n],checker:e}],[["ArrowDown"],t.translateSelectedEditors,{args:[0,i],checker:e}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t.translateSelectedEditors,{args:[0,n],checker:e}]]))}constructor(t,e,s,i,n,r,a,o,l,c,h,d,f,p,g,m){const b=this._signal=this.#t.signal;this.#W=t,this.#Z=e,this.#tt=s,this.#r=i,this.#u=n,this.#U=r,this.#X=o,this._eventBus=a;const y={signal:b,...Ti};a.on("editingaction",this.onEditingAction.bind(this),y),a.on("pagechanging",this.onPageChanging.bind(this),y),a.on("scalechanging",this.onScaleChanging.bind(this),y),a.on("rotationchanging",this.onRotationChanging.bind(this),y),a.on("setpreference",this.onSetPreference.bind(this),y),a.on("switchannotationeditorparams",A=>this.updateParams(A.type,A.value),y),window.addEventListener("pointerdown",()=>{this.#L=!0},{capture:!0,signal:b}),window.addEventListener("pointerup",()=>{this.#L=!1},{capture:!0,signal:b}),window.addEventListener("beforeunload",this.#rt.bind(this),{capture:!0,signal:b}),this.#lt(),this.#pt(),this.#st(),this.#o=o.annotationStorage,this.#C=o.filterFactory,this.#$=l,this.#w=c||null,this.#A=h,this.#b=d,this.#S=f,this.#V=p||null,this.viewParameters={realScale:Be.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1,this._editorUndoBar=g||null,this._supportsPinchToZoom=m!==!1,n?.setSidebarUiManager(this)}destroy(){this.#H?.resolve(),this.#H=null,this.#t?.abort(),this.#t=null,this._signal=null;for(const t of this.#n.values())t.destroy();this.#n.clear(),this.#i.clear(),this.#y.clear(),this.#j?.clear(),this.#e=null,this.#x.clear(),this.#l.destroy(),this.#r?.destroy(),this.#u?.destroy(),this.#U?.destroy(),this.#P?.hide(),this.#P=null,this.#R?.destroy(),this.#R=null,this.#s=null,this.#v&&(clearTimeout(this.#v),this.#v=null),this.#z&&(clearTimeout(this.#z),this.#z=null),this._editorUndoBar?.destroy(),this.#X=null}combinedSignal(t){return AbortSignal.any([this._signal,t.signal])}get mlManager(){return this.#V}get useNewAltTextFlow(){return this.#b}get useNewAltTextWhenAddingImage(){return this.#S}get hcmFilter(){return G(this,"hcmFilter",this.#$?this.#C.addHCMFilter(this.#$.foreground,this.#$.background):"none")}get direction(){return G(this,"direction",getComputedStyle(this.#W).direction)}get _highlightColors(){return G(this,"_highlightColors",this.#w?new Map(this.#w.split(",").map(t=>(t=t.split("=").map(e=>e.trim()),t[1]=t[1].toUpperCase(),t))):null)}get highlightColors(){const{_highlightColors:t}=this;if(!t)return G(this,"highlightColors",null);const e=new Map,s=!!this.#$;for(const[i,n]of t){const r=i.endsWith("_HCM");if(s&&r){e.set(i.replace("_HCM",""),n);continue}!s&&!r&&e.set(i,n)}return G(this,"highlightColors",e)}get highlightColorNames(){return G(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,t=>t.reverse())):null)}getNonHCMColor(t){if(!this._highlightColors)return t;const e=this.highlightColorNames.get(t);return this._highlightColors.get(e)||t}getNonHCMColorName(t){return this.highlightColorNames.get(t)||t}setCurrentDrawingSession(t){t?(this.unselectAll(),this.disableUserSelect(!0)):this.disableUserSelect(!1),this.#p=t}setMainHighlightColorPicker(t){this.#R=t}editAltText(t,e=!1){this.#r?.editAltText(this,t,e)}hasCommentManager(){return!!this.#u}editComment(t,e,s,i){this.#u?.showDialog(this,t,e,s,i)}selectComment(t,e){this.#n.get(t)?.getEditorByUID(e)?.toggleComment(!0,!0)}updateComment(t){this.#u?.updateComment(t.getData())}updatePopupColor(t){this.#u?.updatePopupColor(t)}removeComment(t){this.#u?.removeComments([t.uid])}deleteComment(t,e){const s=()=>{t.comment=e},i=()=>{this._editorUndoBar?.show(s,"comment"),this.toggleComment(null),t.comment=null};this.addCommands({cmd:i,undo:s,mustExec:!0})}toggleComment(t,e,s=void 0){this.#u?.toggleCommentPopup(t,e,s)}makeCommentColor(t,e){return t&&this.#u?.makeCommentColor(t,e)||null}getCommentDialogElement(){return this.#u?.dialogElement||null}async waitForEditorsRendered(t){if(this.#n.has(t-1))return;const{resolve:e,promise:s}=Promise.withResolvers(),i=n=>{n.pageNumber===t&&(this._eventBus.off("editorsrendered",i),e())};this._eventBus.on("editorsrendered",i,Ti),await s}getSignature(t){this.#U?.getSignature({uiManager:this,editor:t})}get signatureManager(){return this.#U}switchToMode(t,e){this._eventBus.on("annotationeditormodechanged",e,{once:!0,signal:this._signal,...Ti}),this._eventBus.dispatch("showannotationeditorui",{source:this,mode:t})}setPreference(t,e){this._eventBus.dispatch("setpreference",{source:this,name:t,value:e})}onSetPreference({name:t,value:e}){t==="enableNewAltTextWhenAddingImage"&&(this.#S=e)}onPageChanging({pageNumber:t}){this.#m=t-1}deletePage(t){for(const e of this.getEditors(t))e.remove();this.#n.delete(t),this.#m===t&&(this.#m=0)}focusMainContainer(){this.#W.focus()}findParent(t,e){for(const s of this.#n.values()){const{x:i,y:n,width:r,height:a}=s.div.getBoundingClientRect();if(t>=i&&t<=i+r&&e>=n&&e<=n+a)return s}return null}disableUserSelect(t=!1){this.#Z.classList.toggle("noUserSelect",t)}addShouldRescale(t){this.#y.add(t)}removeShouldRescale(t){this.#y.delete(t)}onScaleChanging({scale:t}){this.commitOrRemove(),this.viewParameters.realScale=t*Be.PDF_TO_CSS_UNITS;for(const e of this.#y)e.onScaleChanging();this.#p?.onScaleChanging()}onRotationChanging({pagesRotation:t}){this.commitOrRemove(),this.viewParameters.rotation=t}#J({anchorNode:t}){return t.nodeType===Node.TEXT_NODE?t.parentElement:t}#et(t){const{currentLayer:e}=this;if(e.hasTextLayer(t))return e;for(const s of this.#n.values())if(s.hasTextLayer(t))return s;return null}highlightSelection(t="",e=!1){const s=document.getSelection();if(!s||s.isCollapsed)return;const{anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:a}=s,o=s.toString(),c=this.#J(s).closest(".textLayer"),h=this.getSelectionBoxes(c);if(!h)return;s.empty();const d=this.#et(c),f=this.#_===$.NONE,p=()=>{const g=d?.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:t,boxes:h,anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:a,text:o});f&&this.showAllEditors("highlight",!0,!0),e&&g?.editComment()};if(f){this.switchToMode($.HIGHLIGHT,p);return}p()}commentSelection(t=""){this.highlightSelection(t,!0)}#rt(t){this.commitOrRemove(),this.currentLayer?.endDrawingSession(!1)}#at(){const t=document.getSelection();if(!t||t.isCollapsed)return;const s=this.#J(t).closest(".textLayer"),i=this.getSelectionBoxes(s);i&&(this.#P||=new Qo(this),this.#P.show(s,i,this.direction==="ltr"))}getAndRemoveDataFromAnnotationStorage(t){if(!this.#o)return null;const e=`${ts}${t}`,s=this.#o.getRawValue(e);return s&&this.#o.remove(e),s}addToAnnotationStorage(t){!t.isEmpty()&&this.#o&&!this.#o.has(t.id)&&this.#o.setValue(t.id,t)}a11yAlert(t,e=null){const s=this.#tt;s&&(s.setAttribute("data-l10n-id",t),e?s.setAttribute("data-l10n-args",JSON.stringify(e)):s.removeAttribute("data-l10n-args"))}#ot(){const t=document.getSelection();if(!t||t.isCollapsed){this.#O&&(this.#P?.hide(),this.#O=null,this.#I({hasSelectedText:!1}));return}const{anchorNode:e}=t;if(e===this.#O)return;const i=this.#J(t).closest(".textLayer");if(!i){this.#O&&(this.#P?.hide(),this.#O=null,this.#I({hasSelectedText:!1}));return}if(this.#P?.hide(),this.#O=e,this.#I({hasSelectedText:!0}),!(this.#_!==$.HIGHLIGHT&&this.#_!==$.NONE)&&(this.#_===$.HIGHLIGHT&&this.showAllEditors("highlight",!0,!0),this.#T=this.isShiftKeyDown,!this.isShiftKeyDown)){const n=this.#_===$.HIGHLIGHT?this.#et(i):null;if(n?.toggleDrawing(),this.#L){const r=new AbortController,a=this.combinedSignal(r),o=l=>{l.type==="pointerup"&&l.button!==0||(r.abort(),n?.toggleDrawing(!0),l.type==="pointerup"&&this.#q("main_toolbar"))};window.addEventListener("pointerup",o,{signal:a}),window.addEventListener("blur",o,{signal:a})}else n?.toggleDrawing(!0),this.#q("main_toolbar")}}#q(t=""){this.#_===$.HIGHLIGHT?this.highlightSelection(t):this.#A&&this.#at()}#lt(){document.addEventListener("selectionchange",this.#ot.bind(this),{signal:this._signal})}#ct(){if(this.#E)return;this.#E=new AbortController;const t=this.combinedSignal(this.#E);window.addEventListener("focus",this.focus.bind(this),{signal:t}),window.addEventListener("blur",this.blur.bind(this),{signal:t})}#ht(){this.#E?.abort(),this.#E=null}blur(){if(this.isShiftKeyDown=!1,this.#T&&(this.#T=!1,this.#q("main_toolbar")),!this.hasSelection)return;const{activeElement:t}=document;for(const e of this.#x)if(e.div.contains(t)){this.#F=[e,t],e._focusEventsAllowed=!1;break}}focus(){if(!this.#F)return;const[t,e]=this.#F;this.#F=null,e.addEventListener("focusin",()=>{t._focusEventsAllowed=!0},{once:!0,signal:this._signal}),e.focus()}#st(){if(this.#D)return;this.#D=new AbortController;const t=this.combinedSignal(this.#D);window.addEventListener("keydown",this.keydown.bind(this),{signal:t}),window.addEventListener("keyup",this.keyup.bind(this),{signal:t})}#dt(){this.#D?.abort(),this.#D=null}#ut(){if(this.#d)return;this.#d=new AbortController;const t=this.combinedSignal(this.#d);document.addEventListener("copy",this.copy.bind(this),{signal:t}),document.addEventListener("cut",this.cut.bind(this),{signal:t}),document.addEventListener("paste",this.paste.bind(this),{signal:t})}#ft(){this.#d?.abort(),this.#d=null}#pt(){const t=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:t}),document.addEventListener("drop",this.drop.bind(this),{signal:t})}addEditListeners(){this.#st(),this.setEditingState(!0)}removeEditListeners(){this.#dt(),this.setEditingState(!1)}dragOver(t){for(const{type:e}of t.dataTransfer.items)for(const s of this.#f)if(s.isHandlingMimeForPasting(e)){t.dataTransfer.dropEffect="copy",t.preventDefault();return}}drop(t){for(const e of t.dataTransfer.items)for(const s of this.#f)if(s.isHandlingMimeForPasting(e.type)){s.paste(e,this.currentLayer),t.preventDefault();return}}copy(t){if(t.preventDefault(),this.#e?.commitOrRemove(),!this.hasSelection)return;const e=[];for(const s of this.#x){const i=s.serialize(!0);i&&e.push(i)}e.length!==0&&t.clipboardData.setData("application/pdfjs",JSON.stringify(e))}cut(t){this.copy(t),this.delete()}async paste(t){t.preventDefault();const{clipboardData:e}=t;for(const n of e.items)for(const r of this.#f)if(r.isHandlingMimeForPasting(n.type)){r.paste(n,this.currentLayer);return}let s=e.getData("application/pdfjs");if(!s)return;try{s=JSON.parse(s)}catch(n){z(`paste: "${n.message}".`);return}if(!Array.isArray(s))return;this.unselectAll();const i=this.currentLayer;try{const n=[];for(const o of s){const l=await i.deserialize(o);if(!l)return;n.push(l)}const r=()=>{for(const o of n)this.#it(o);this.#nt(n)},a=()=>{for(const o of n)o.remove()};this.addCommands({cmd:r,undo:a,mustExec:!0})}catch(n){z(`paste: "${n.message}".`)}}keydown(t){!this.isShiftKeyDown&&t.key==="Shift"&&(this.isShiftKeyDown=!0),this.#_!==$.NONE&&!this.isEditorHandlingKeyboard&&ce._keyboardManager.exec(this,t)}keyup(t){this.isShiftKeyDown&&t.key==="Shift"&&(this.isShiftKeyDown=!1,this.#T&&(this.#T=!1,this.#q("main_toolbar")))}onEditingAction({name:t}){switch(t){case"undo":case"redo":case"delete":case"selectAll":this[t]();break;case"highlightSelection":this.highlightSelection("context_menu");break;case"commentSelection":this.commentSelection("context_menu");break}}updatePageIndex(t,e){for(const i of this.getEditors(t))i.pageIndex=e;const s=this.#a.get(t);s&&(s.pageIndex=e,this.#n.set(e,s),this.#k?s.enable():s.disable())}startUpdatePages(){this.#a=new Map(this.#n),this.#n.clear()}endUpdatePages(){this.#a=null}clonePage(t,e){for(const s of this.getEditors(t)){const i=s.serialize(s.mode!==$.HIGHLIGHT);i&&(i.pageIndex=e,i.id=this.getId(),i.isClone=!0,delete i.popupRef,this.#o.setValue(i.id,i))}}findClonesForPage(t){const e=[],{pageIndex:s}=t;for(const[i,n]of this.#o)n.pageIndex===s&&n.isClone&&(this.#o.remove(i),e.push(t.deserialize(n).then(r=>{r&&(r.isClone=!0,t.addOrRebuild(r))})));return Promise.all(e)}#I(t){Object.entries(t).some(([s,i])=>this.#Y[s]!==i)&&(this._eventBus.dispatch("editingstateschanged",{source:this,details:Object.assign(this.#Y,t)}),this.#_===$.HIGHLIGHT&&t.hasSelectedEditor===!1&&this.#G([[W.HIGHLIGHT_FREE,!0]]))}#G(t){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:t})}setEditingState(t){t?(this.#ct(),this.#ut(),this.#I({isEditing:this.#_!==$.NONE,isEmpty:this.#Q(),hasSomethingToUndo:this.#l.hasSomethingToUndo(),hasSomethingToRedo:this.#l.hasSomethingToRedo(),hasSelectedEditor:!1})):(this.#ht(),this.#ft(),this.#I({isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(t){if(!this.#f){this.#f=t;for(const e of this.#f)this.#G(e.defaultPropertiesToUpdate)}}getId(){return this.#M.id}get currentLayer(){return this.#n.get(this.#m)}getLayer(t){return this.#n.get(t)}get currentPageIndex(){return this.#m}addLayer(t){this.#n.set(t.pageIndex,t),this.#k?t.enable():t.disable()}removeLayer(t){this.#n.delete(t.pageIndex)}async updateMode(t,e=null,s=!1,i=!1,n=!1,r=!1){if(this.#_!==t&&!(this.#H&&(await this.#H.promise,!this.#H))){if(this.#H=Promise.withResolvers(),this.#p?.commitOrRemove(),this.#_===$.POPUP&&this.#u?.hideSidebar(),this.#u?.destroyPopup(),this.#_=t,t===$.NONE){this.setEditingState(!1),this.#mt();for(const a of this.#i.values())a.hideStandaloneCommentButton();this._editorUndoBar?.hide(),this.toggleComment(null),this.#H.resolve();return}for(const a of this.#i.values())a.addStandaloneCommentButton();t===$.SIGNATURE&&await this.#U?.loadSignatures(),s&&K.clearPointerType(),this.setEditingState(!0),await this.#gt(),this.unselectAll();for(const a of this.#n.values())a.updateMode(t);if(t===$.POPUP){this.#s||=await this.#X.getAnnotationsByType(new Set(this.#f.map(l=>l._editorType)));const a=new Set,o=[];for(const l of this.#i.values()){const{annotationElementId:c,hasComment:h,deleted:d}=l;c&&a.add(c),h&&!d&&o.push(l.getData())}for(const l of this.#s){const{id:c,popupRef:h,contentsObj:d}=l;h&&d?.str&&!a.has(c)&&!this.#g.has(c)&&o.push(l)}this.#u?.showSidebar(o)}if(!e){i&&this.addNewEditorFromKeyboard(),this.#H.resolve();return}for(const a of this.#i.values())a.uid===e?(this.setSelected(a),r?a.editComment():n?a.enterInEditMode():a.focus()):a.unselect();this.#H.resolve()}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(t){t.mode!==this.#_&&this._eventBus.dispatch("switchannotationeditormode",{source:this,...t})}updateParams(t,e){if(this.#f){switch(t){case W.CREATE:this.currentLayer.addNewEditor(e);return;case W.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),(this.#K||=new Map).set(t,e),this.showAllEditors("highlight",e);break}if(this.hasSelection)for(const s of this.#x)s.updateParams(t,e);else for(const s of this.#f)s.updateDefaultParams(t,e)}}showAllEditors(t,e,s=!1){for(const n of this.#i.values())n.editorType===t&&n.show(e);(this.#K?.get(W.HIGHLIGHT_SHOW_ALL)??!0)!==e&&this.#G([[W.HIGHLIGHT_SHOW_ALL,e]])}enableWaiting(t=!1){if(this.#N!==t){this.#N=t;for(const e of this.#n.values())t?e.disableClick():e.enableClick(),e.div.classList.toggle("waiting",t)}}async#gt(){if(!this.#k){this.#k=!0;const t=[];for(const e of this.#n.values())t.push(e.enable());await Promise.all(t);for(const e of this.#i.values())e.enable()}}#mt(){if(this.unselectAll(),this.#k){this.#k=!1;for(const t of this.#n.values())t.disable();for(const t of this.#i.values())t.disable()}}*getEditors(t){for(const e of this.#i.values())e.pageIndex===t&&(yield e)}getEditor(t){return this.#i.get(t)}addEditor(t){this.#i.set(t.id,t)}removeEditor(t){t.div.contains(document.activeElement)&&(this.#v&&clearTimeout(this.#v),this.#v=setTimeout(()=>{this.focusMainContainer(),this.#v=null},0)),this.#i.delete(t.id),t.annotationElementId&&this.#j?.delete(t.annotationElementId),this.unselect(t),(!t.annotationElementId||!this.#g.has(t.annotationElementId))&&this.#o?.remove(t.id)}addDeletedAnnotationElement(t){this.#g.add(t.annotationElementId),this.addChangedExistingAnnotation(t),t.deleted=!0}isDeletedAnnotationElement(t){return this.#g.has(t)}removeDeletedAnnotationElement(t){this.#g.delete(t.annotationElementId),this.removeChangedExistingAnnotation(t),t.deleted=!1}#it(t){const e=this.#n.get(t.pageIndex);e?e.addOrRebuild(t):(this.addEditor(t),this.addToAnnotationStorage(t))}setActiveEditor(t){this.#e!==t&&(this.#e=t,t&&this.#G(t.propertiesToUpdate))}get#bt(){let t=null;for(t of this.#x);return t}updateUI(t){this.#bt===t&&this.#G(t.propertiesToUpdate)}updateUIForDefaultProperties(t){this.#G(t.defaultPropertiesToUpdate)}toggleSelected(t){if(this.#x.has(t)){this.#x.delete(t),t.unselect(),this.#I({hasSelectedEditor:this.hasSelection});return}this.#x.add(t),t.select(),this.#G(t.propertiesToUpdate),this.#I({hasSelectedEditor:!0})}setSelected(t){this.updateToolbar({mode:t.mode,editId:t.uid}),this.#p?.commitOrRemove();for(const e of this.#x)e!==t&&e.unselect();this.#u?.destroyPopup(),this.#x.clear(),this.#x.add(t),t.select(),this.#G(t.propertiesToUpdate),this.#I({hasSelectedEditor:!0})}get firstSelectedEditor(){return this.#x.values().next().value}unselect(t){t.unselect(),this.#x.delete(t),this.#I({hasSelectedEditor:this.hasSelection})}get hasSelection(){return this.#x.size!==0}get isEnterHandled(){return this.#x.size===1&&this.firstSelectedEditor.isEnterHandled}undo(){this.#l.undo(),this.#I({hasSomethingToUndo:this.#l.hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:this.#Q()}),this._editorUndoBar?.hide()}redo(){this.#l.redo(),this.#I({hasSomethingToUndo:!0,hasSomethingToRedo:this.#l.hasSomethingToRedo(),isEmpty:this.#Q()})}addCommands(t){this.#l.add(t),this.#I({hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:this.#Q()})}cleanUndoStack(t){this.#l.cleanType(t)}#Q(){if(this.#i.size===0)return!0;if(this.#i.size===1)for(const t of this.#i.values())return t.isEmpty();return!1}delete(){this.commitOrRemove();const t=this.currentLayer?.endDrawingSession(!0);if(!this.hasSelection&&!t)return;const e=t?[t]:[...this.#x],s=()=>{this._editorUndoBar?.show(i,e.length===1?e[0].editorType:e.length);for(const n of e)n.remove()},i=()=>{for(const n of e)this.#it(n)};this.addCommands({cmd:s,undo:i,mustExec:!0})}commitOrRemove(){this.#e?.commitOrRemove()}hasSomethingToControl(){return this.#e||this.hasSelection}#nt(t){for(const e of this.#x)e.unselect();this.#x.clear();for(const e of t)e.isEmpty()||(this.#x.add(e),e.select());this.#I({hasSelectedEditor:this.hasSelection})}selectAll(){for(const t of this.#x)t.commit();this.#nt(this.#i.values())}unselectAll(){if(!(this.#e&&(this.#e.commitOrRemove(),this.#_!==$.NONE))&&!this.#p?.commitOrRemove()&&(this.#u?.destroyPopup(),!!this.hasSelection)){for(const t of this.#x)t.unselect();this.#x.clear(),this.#I({hasSelectedEditor:!1})}}translateSelectedEditors(t,e,s=!1){if(s||this.commitOrRemove(),!this.hasSelection)return;this.#B[0]+=t,this.#B[1]+=e;const[i,n]=this.#B,r=[...this.#x],a=1e3;this.#z&&clearTimeout(this.#z),this.#z=setTimeout(()=>{this.#z=null,this.#B[0]=this.#B[1]=0,this.addCommands({cmd:()=>{for(const o of r)this.#i.has(o.id)&&(o.translateInPage(i,n),o.translationDone())},undo:()=>{for(const o of r)this.#i.has(o.id)&&(o.translateInPage(-i,-n),o.translationDone())},mustExec:!1})},a);for(const o of r)o.translateInPage(t,e),o.translationDone()}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),this.#c=new Map;for(const t of this.#x)this.#c.set(t,{savedX:t.x,savedY:t.y,savedPageIndex:t.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!this.#c)return!1;this.disableUserSelect(!1);const t=this.#c;this.#c=null;let e=!1;for(const[{x:i,y:n,pageIndex:r},a]of t)a.newX=i,a.newY=n,a.newPageIndex=r,e||=i!==a.savedX||n!==a.savedY||r!==a.savedPageIndex;if(!e)return!1;const s=(i,n,r,a)=>{if(this.#i.has(i.id)){const o=this.#n.get(a);o?i._setParentAndPosition(o,n,r):(i.pageIndex=a,i.x=n,i.y=r)}};return this.addCommands({cmd:()=>{for(const[i,{newX:n,newY:r,newPageIndex:a}]of t)s(i,n,r,a)},undo:()=>{for(const[i,{savedX:n,savedY:r,savedPageIndex:a}]of t)s(i,n,r,a)},mustExec:!0}),!0}dragSelectedEditors(t,e){if(this.#c)for(const s of this.#c.keys())s.drag(t,e)}rebuild(t){if(t.parent===null){const e=this.getLayer(t.pageIndex);e?(e.changeParent(t),e.addOrRebuild(t)):(this.addEditor(t),this.addToAnnotationStorage(t),t.rebuild())}else t.parent.addOrRebuild(t)}get isEditorHandlingKeyboard(){return this.getActive()?.shouldGetKeyboardEvents()||this.#x.size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(t){return this.#e===t}getActive(){return this.#e}getMode(){return this.#_}isEditingMode(){return this.#_!==$.NONE}get imageManager(){return G(this,"imageManager",new Ji)}getSelectionBoxes(t){if(!t)return null;const e=document.getSelection();for(let l=0,c=e.rangeCount;l<c;l++)if(!t.contains(e.getRangeAt(l).commonAncestorContainer))return null;const{x:s,y:i,width:n,height:r}=t.getBoundingClientRect();let a;switch(t.getAttribute("data-main-rotation")){case"90":a=(l,c,h,d)=>({x:(c-i)/r,y:1-(l+h-s)/n,width:d/r,height:h/n});break;case"180":a=(l,c,h,d)=>({x:1-(l+h-s)/n,y:1-(c+d-i)/r,width:h/n,height:d/r});break;case"270":a=(l,c,h,d)=>({x:1-(c+d-i)/r,y:(l-s)/n,width:d/r,height:h/n});break;default:a=(l,c,h,d)=>({x:(l-s)/n,y:(c-i)/r,width:h/n,height:d/r});break}const o=[];for(let l=0,c=e.rangeCount;l<c;l++){const h=e.getRangeAt(l);if(!h.collapsed)for(const{x:d,y:f,width:p,height:g}of h.getClientRects())p===0||g===0||o.push(a(d,f,p,g))}return o.length===0?null:o}addChangedExistingAnnotation({annotationElementId:t,id:e}){(this.#h||=new Map).set(t,e)}removeChangedExistingAnnotation({annotationElementId:t}){this.#h?.delete(t)}renderAnnotationElement(t){const e=this.#h?.get(t.data.id);if(!e)return;const s=this.#o.getRawValue(e);s&&(this.#_===$.NONE&&!s.hasBeenModified||s.renderAnnotationElement(t))}setMissingCanvas(t,e,s){const i=this.#j?.get(t);i&&(i.setCanvas(e,s),this.#j.delete(t))}addMissingCanvas(t,e){(this.#j||=new Map).set(t,e)}}class qt{#t=null;#e=!1;#s=null;#i=null;#n=null;#a=null;#r=!1;#o=null;#h=null;#l=null;#u=null;#d=!1;static#p=null;static _l10n=null;constructor(t){this.#h=t,this.#d=t._uiManager.useNewAltTextFlow,qt.#p||=Object.freeze({added:"pdfjs-editor-new-alt-text-added-button","added-label":"pdfjs-editor-new-alt-text-added-button-label",missing:"pdfjs-editor-new-alt-text-missing-button","missing-label":"pdfjs-editor-new-alt-text-missing-button-label",review:"pdfjs-editor-new-alt-text-to-review-button","review-label":"pdfjs-editor-new-alt-text-to-review-button-label"})}static initialize(t){qt._l10n??=t}async render(){const t=this.#s=document.createElement("button");t.className="altText",t.tabIndex="0";const e=this.#i=document.createElement("span");t.append(e),this.#d?(t.classList.add("new"),t.setAttribute("data-l10n-id",qt.#p.missing),e.setAttribute("data-l10n-id",qt.#p["missing-label"])):(t.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button"),e.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button-label"));const s=this.#h._uiManager._signal;t.addEventListener("contextmenu",Ft,{signal:s}),t.addEventListener("pointerdown",n=>n.stopPropagation(),{signal:s});const i=n=>{n.preventDefault(),this.#h._uiManager.editAltText(this.#h),this.#d&&this.#h._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_clicked",data:{label:this.#m}})};return t.addEventListener("click",i,{capture:!0,signal:s}),t.addEventListener("keydown",n=>{n.target===t&&n.key==="Enter"&&(this.#r=!0,i(n))},{signal:s}),await this.#g(),t}get#m(){return this.#t&&"added"||this.#t===null&&this.guessedText&&"review"||"missing"}finish(){this.#s&&(this.#s.focus({focusVisible:this.#r}),this.#r=!1)}isEmpty(){return this.#d?this.#t===null:!this.#t&&!this.#e}hasData(){return this.#d?this.#t!==null||!!this.#l:this.isEmpty()}get guessedText(){return this.#l}async setGuessedText(t){this.#t===null&&(this.#l=t,this.#u=await qt._l10n.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer",{generatedAltText:t}),this.#g())}toggleAltTextBadge(t=!1){if(!this.#d||this.#t){this.#o?.remove(),this.#o=null;return}if(!this.#o){const e=this.#o=document.createElement("div");e.className="noAltTextBadge",this.#h.div.append(e)}this.#o.classList.toggle("hidden",!t)}serialize(t){let e=this.#t;return!t&&this.#l===e&&(e=this.#u),{altText:e,decorative:this.#e,guessedText:this.#l,textWithDisclaimer:this.#u}}get data(){return{altText:this.#t,decorative:this.#e}}set data({altText:t,decorative:e,guessedText:s,textWithDisclaimer:i,cancel:n=!1}){s&&(this.#l=s,this.#u=i),!(this.#t===t&&this.#e===e)&&(n||(this.#t=t,this.#e=e),this.#g())}toggle(t=!1){this.#s&&(!t&&this.#a&&(clearTimeout(this.#a),this.#a=null),this.#s.disabled=!t)}shown(){this.#h._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_displayed",data:{label:this.#m}})}destroy(){this.#s?.remove(),this.#s=null,this.#i=null,this.#n=null,this.#o?.remove(),this.#o=null}async#g(){const t=this.#s;if(!t)return;if(this.#d){if(t.classList.toggle("done",!!this.#t),t.setAttribute("data-l10n-id",qt.#p[this.#m]),this.#i?.setAttribute("data-l10n-id",qt.#p[`${this.#m}-label`]),!this.#t){this.#n?.remove();return}}else{if(!this.#t&&!this.#e){t.classList.remove("done"),this.#n?.remove();return}t.classList.add("done"),t.setAttribute("data-l10n-id","pdfjs-editor-alt-text-edit-button")}let e=this.#n;if(!e){this.#n=e=document.createElement("span"),e.className="tooltip",e.setAttribute("role","tooltip"),e.id=`alt-text-tooltip-${this.#h.id}`;const i=100,n=this.#h._uiManager._signal;n.addEventListener("abort",()=>{clearTimeout(this.#a),this.#a=null},{once:!0}),t.addEventListener("mouseenter",()=>{this.#a=setTimeout(()=>{this.#a=null,this.#n.classList.add("show"),this.#h._reportTelemetry({action:"alt_text_tooltip"})},i)},{signal:n}),t.addEventListener("mouseleave",()=>{this.#a&&(clearTimeout(this.#a),this.#a=null),this.#n?.classList.remove("show")},{signal:n})}this.#e?e.setAttribute("data-l10n-id","pdfjs-editor-alt-text-decorative-tooltip"):(e.removeAttribute("data-l10n-id"),e.textContent=this.#t),e.parentNode||t.append(e),this.#h.getElementForAltText()?.setAttribute("aria-describedby",e.id)}}class Es{#t=null;#e=null;#s=!1;#i=null;#n=null;#a=null;#r=null;#o=null;#h=!1;#l=null;constructor(t){this.#i=t}renderForToolbar(){const t=this.#e=document.createElement("button");return t.className="comment",this.#u(t,!1)}renderForStandalone(){const t=this.#t=document.createElement("button");t.className="annotationCommentButton";const e=this.#i.commentButtonPosition;if(e){const{style:s}=t;s.insetInlineEnd=`calc(${100*(this.#i._uiManager.direction==="ltr"?1-e[0]:e[0])}% - var(--comment-button-dim))`,s.top=`calc(${100*e[1]}% - var(--comment-button-dim))`;const i=this.#i.commentButtonColor;i&&(s.backgroundColor=i)}return this.#u(t,!0)}focusButton(){setTimeout(()=>{(this.#t??this.#e)?.focus()},0)}onUpdatedColor(){if(!this.#t)return;const t=this.#i.commentButtonColor;t&&(this.#t.style.backgroundColor=t),this.#i._uiManager.updatePopupColor(this.#i)}get commentButtonWidth(){return(this.#t?.getBoundingClientRect().width??0)/this.#i.parent.boundingClientRect.width}get commentPopupPositionInLayer(){if(this.#l)return this.#l;if(!this.#t)return null;const{x:t,y:e,height:s}=this.#t.getBoundingClientRect(),{x:i,y:n,width:r,height:a}=this.#i.parent.boundingClientRect;return[(t-i)/r,(e+s-n)/a]}set commentPopupPositionInLayer(t){this.#l=t}hasDefaultPopupPosition(){return this.#l===null}removeStandaloneCommentButton(){this.#t?.remove(),this.#t=null}removeToolbarCommentButton(){this.#e?.remove(),this.#e=null}setCommentButtonStates({selected:t,hasPopup:e}){this.#t&&(this.#t.classList.toggle("selected",t),this.#t.ariaExpanded=e)}#u(t,e){if(!this.#i._uiManager.hasCommentManager())return null;t.tabIndex="0",t.ariaHasPopup="dialog",e?(t.ariaControls="commentPopup",t.setAttribute("data-l10n-id","pdfjs-show-comment-button")):(t.ariaControlsElements=[this.#i._uiManager.getCommentDialogElement()],t.setAttribute("data-l10n-id","pdfjs-editor-add-comment-button"));const s=this.#i._uiManager._signal;if(!(s instanceof AbortSignal)||s.aborted)return t;t.addEventListener("contextmenu",Ft,{signal:s}),e&&(t.addEventListener("focusin",n=>{this.#i._focusEventsAllowed=!1,ot(n)},{capture:!0,signal:s}),t.addEventListener("focusout",n=>{this.#i._focusEventsAllowed=!0,ot(n)},{capture:!0,signal:s})),t.addEventListener("pointerdown",n=>n.stopPropagation(),{signal:s});const i=n=>{n.preventDefault(),t===this.#e?this.edit():this.#i.toggleComment(!0)};return t.addEventListener("click",i,{capture:!0,signal:s}),t.addEventListener("keydown",n=>{n.target===t&&n.key==="Enter"&&(this.#s=!0,i(n))},{signal:s}),t.addEventListener("pointerenter",()=>{this.#i.toggleComment(!1,!0)},{signal:s}),t.addEventListener("pointerleave",()=>{this.#i.toggleComment(!1,!1)},{signal:s}),t}edit(t){const e=this.commentPopupPositionInLayer;let s,i;if(e)[s,i]=e;else{[s,i]=this.#i.commentButtonPosition;const{width:c,height:h,x:d,y:f}=this.#i;s=d+s*c,i=f+i*h}const n=this.#i.parent.boundingClientRect,{x:r,y:a,width:o,height:l}=n;this.#i._uiManager.editComment(this.#i,r+s*o,a+i*l,{...t,parentDimensions:n})}finish(){this.#e&&(this.#e.focus({focusVisible:this.#s}),this.#s=!1)}isDeleted(){return this.#h||this.#r===""}isEmpty(){return this.#r===null}hasBeenEdited(){return this.isDeleted()||this.#r!==this.#n}serialize(){return this.data}get data(){return{text:this.#r,richText:this.#a,date:this.#o,deleted:this.isDeleted()}}set data(t){if(t!==this.#r&&(this.#a=null),t===null){this.#r="",this.#h=!0;return}this.#r=t,this.#o=new Date,this.#h=!1}restoreData({text:t,richText:e,date:s}){this.#r=t,this.#a=e,this.#o=s,this.#h=!1}setInitialText(t,e=null){this.#n=t,this.data=t,this.#o=null,this.#a=e}shown(){}destroy(){this.#e?.remove(),this.#e=null,this.#t?.remove(),this.#t=null,this.#r="",this.#a=null,this.#o=null,this.#i=null,this.#s=!1,this.#h=!1}}class Ks{#t;#e=!1;#s=null;#i;#n;#a;#r;#o=null;#h;#l=null;#u;#d=null;constructor({container:t,isPinchingDisabled:e=null,isPinchingStopped:s=null,onPinchStart:i=null,onPinching:n=null,onPinchEnd:r=null,signal:a}){this.#t=t,this.#s=s,this.#i=e,this.#n=i,this.#a=n,this.#r=r,this.#u=new AbortController,this.#h=AbortSignal.any([a,this.#u.signal]),t.addEventListener("touchstart",this.#p.bind(this),{passive:!1,signal:this.#h})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return 35/Qt.pixelRatio}#p(t){if(this.#i?.())return;if(t.touches.length===1){if(this.#o)return;const i=this.#o=new AbortController,n=AbortSignal.any([this.#h,i.signal]),r=this.#t,a={capture:!0,signal:n,passive:!1},o=l=>{l.pointerType==="touch"&&(this.#o?.abort(),this.#o=null)};r.addEventListener("pointerdown",l=>{l.pointerType==="touch"&&(ot(l),o(l))},a),r.addEventListener("pointerup",o,a),r.addEventListener("pointercancel",o,a);return}if(!this.#d){this.#d=new AbortController;const i=AbortSignal.any([this.#h,this.#d.signal]),n=this.#t,r={signal:i,capture:!1,passive:!1};n.addEventListener("touchmove",this.#m.bind(this),r);const a=this.#g.bind(this);n.addEventListener("touchend",a,r),n.addEventListener("touchcancel",a,r),r.capture=!0,n.addEventListener("pointerdown",ot,r),n.addEventListener("pointermove",ot,r),n.addEventListener("pointercancel",ot,r),n.addEventListener("pointerup",ot,r),this.#n?.()}if(ot(t),t.touches.length!==2||this.#s?.()){this.#l=null;return}let[e,s]=t.touches;e.identifier>s.identifier&&([e,s]=[s,e]),this.#l={touch0X:e.screenX,touch0Y:e.screenY,touch1X:s.screenX,touch1Y:s.screenY}}#m(t){if(!this.#l||t.touches.length!==2)return;ot(t);let[e,s]=t.touches;e.identifier>s.identifier&&([e,s]=[s,e]);const{screenX:i,screenY:n}=e,{screenX:r,screenY:a}=s,o=this.#l,{touch0X:l,touch0Y:c,touch1X:h,touch1Y:d}=o,f=h-l,p=d-c,g=r-i,m=a-n,b=Math.hypot(g,m)||1,y=Math.hypot(f,p)||1;if(!this.#e&&Math.abs(y-b)<=Ks.MIN_TOUCH_DISTANCE_TO_PINCH)return;if(o.touch0X=i,o.touch0Y=n,o.touch1X=r,o.touch1Y=a,!this.#e){this.#e=!0;return}const A=[(i+r)/2,(n+a)/2];this.#a?.(A,y,b)}#g(t){t.touches.length>=2||(this.#d&&(this.#d.abort(),this.#d=null,this.#r?.()),this.#l&&(ot(t),this.#l=null,this.#e=!1))}destroy(){this.#u?.abort(),this.#u=null,this.#o?.abort(),this.#o=null}}class O{#t=null;#e=null;#s=null;#i=null;#n=null;#a=!1;#r=null;#o="";#h=null;#l=null;#u=null;#d=null;#p=null;#m="";#g=!1;#c=null;#f=!1;#y=!1;#A=!1;#b=null;#S=0;#C=0;#v=null;#E=null;isSelected=!1;_isCopy=!1;_editToolbar=null;_initialOptions=Object.create(null);_initialData=null;_isVisible=!0;_uiManager=null;_focusEventsAllowed=!0;static _l10n=null;static _l10nAlert=null;static _l10nResizer=null;#w=!1;#T=O._zIndex++;static _borderLineWidth=-1;static _colorManager=new Zi;static _zIndex=1;static _telemetryTimeout=1e3;static get _resizerKeyboardManager(){const t=O.prototype._resizeWithKeyboard,e=ce.TRANSLATE_SMALL,s=ce.TRANSLATE_BIG;return G(this,"_resizerKeyboardManager",new Pt([[["ArrowLeft"],t,{args:[-e,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t,{args:[-s,0]}],[["ArrowRight"],t,{args:[e,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t,{args:[s,0]}],[["ArrowUp"],t,{args:[0,-e]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t,{args:[0,-s]}],[["ArrowDown"],t,{args:[0,e]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t,{args:[0,s]}],[["Escape"],O.prototype._stopResizingWithKeyboard]]))}constructor(t){this.parent=t.parent,this.id=t.id,this.width=this.height=null,this.pageIndex=t.parent.pageIndex,this.name=t.name,this.div=null,this._uiManager=t.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=t.isCentered,this._structTreeParentId=null,this.annotationElementId=t.annotationElementId||null,this.creationDate=t.creationDate||new Date,this.modificationDate=t.modificationDate||null,this.canAddComment=!0;const{rotation:e,rawDims:{pageWidth:s,pageHeight:i,pageX:n,pageY:r}}=this.parent.viewport;this.rotation=e,this.pageRotation=(360+e-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[s,i],this.pageTranslation=[n,r];const[a,o]=this.parentDimensions;this.x=t.x/a,this.y=t.y/o,this.isAttachedToDOM=!1,this.deleted=!1}updatePageIndex(t){this.pageIndex=t}get editorType(){return Object.getPrototypeOf(this).constructor._type}get mode(){return Object.getPrototypeOf(this).constructor._editorType}static get isDrawer(){return!1}static get _defaultLineColor(){return G(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(t){const e=new el({id:t._uiManager.getId(),parent:t.parent,uiManager:t._uiManager});e.annotationElementId=t.annotationElementId,e.deleted=!0,e._uiManager.addToAnnotationStorage(e)}static initialize(t,e){if(O._l10n??=t,O._l10nAlert??=Object.freeze({highlight:"pdfjs-editor-highlight-added-alert",freetext:"pdfjs-editor-freetext-added-alert",ink:"pdfjs-editor-ink-added-alert",stamp:"pdfjs-editor-stamp-added-alert",signature:"pdfjs-editor-signature-added-alert"}),O._l10nResizer??=Object.freeze({topLeft:"pdfjs-editor-resizer-top-left",topMiddle:"pdfjs-editor-resizer-top-middle",topRight:"pdfjs-editor-resizer-top-right",middleRight:"pdfjs-editor-resizer-middle-right",bottomRight:"pdfjs-editor-resizer-bottom-right",bottomMiddle:"pdfjs-editor-resizer-bottom-middle",bottomLeft:"pdfjs-editor-resizer-bottom-left",middleLeft:"pdfjs-editor-resizer-middle-left"}),O._borderLineWidth!==-1)return;const s=getComputedStyle(document.documentElement);O._borderLineWidth=parseFloat(s.getPropertyValue("--outline-width"))||0}static updateDefaultParams(t,e){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(t){return!1}static paste(t,e){X("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return this.#w}set _isDraggable(t){this.#w=t,this.div?.classList.toggle("draggable",t)}get uid(){return this.annotationElementId||this.id}get isEnterHandled(){return!0}center(){const[t,e]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*e/(t*2),this.y+=this.width*t/(e*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*e/(t*2),this.y-=this.width*t/(e*2);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(t){this._uiManager.addCommands(t)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=this.#T}setParent(t){t!==null?(this.pageIndex=t.pageIndex,this.pageDimensions=t.pageDimensions):(this.#B(),this.#d?.remove(),this.#d=null),this.parent=t}focusin(t){this._focusEventsAllowed&&(this.#g?this.#g=!1:this.parent.setSelected(this))}focusout(t){!this._focusEventsAllowed||!this.isAttachedToDOM||t.relatedTarget?.closest(`#${this.id}`)||(t.preventDefault(),this.parent?.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.isInEditMode()&&this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(t,e,s,i){const[n,r]=this.parentDimensions;[s,i]=this.screenToPageTranslation(s,i),this.x=(t+s)/n,this.y=(e+i)/r,this.fixAndSetPosition()}_moveAfterPaste(t,e){if(this.isClone){delete this.isClone;return}const[s,i]=this.parentDimensions;this.setAt(t*s,e*i,this.width*s,this.height*i),this._onTranslated()}#P([t,e],s,i){[s,i]=this.screenToPageTranslation(s,i),this.x+=s/t,this.y+=i/e,this._onTranslating(this.x,this.y),this.fixAndSetPosition()}translate(t,e){this.#P(this.parentDimensions,t,e)}translateInPage(t,e){this.#c||=[this.x,this.y,this.width,this.height],this.#P(this.pageDimensions,t,e),this.div.scrollIntoView({block:"nearest"})}translationDone(){this._onTranslated(this.x,this.y)}drag(t,e){this.#c||=[this.x,this.y,this.width,this.height];const{div:s,parentDimensions:[i,n]}=this;if(this.x+=t/i,this.y+=e/n,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:h,y:d}=this.div.getBoundingClientRect();this.parent.findNewParent(this,h,d)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:r,y:a}=this;const[o,l]=this.getBaseTranslation();r+=o,a+=l;const{style:c}=s;c.left=`${(100*r).toFixed(2)}%`,c.top=`${(100*a).toFixed(2)}%`,this._onTranslating(r,a),s.scrollIntoView({block:"nearest"})}_onTranslating(t,e){}_onTranslated(t,e){}get _hasBeenMoved(){return!!this.#c&&(this.#c[0]!==this.x||this.#c[1]!==this.y)}get _hasBeenResized(){return!!this.#c&&(this.#c[2]!==this.width||this.#c[3]!==this.height)}getBaseTranslation(){const[t,e]=this.parentDimensions,{_borderLineWidth:s}=O,i=s/t,n=s/e;switch(this.rotation){case 90:return[-i,n];case 180:return[i,n];case 270:return[i,-n];default:return[-i,-n]}}get _mustFixPosition(){return!0}fixAndSetPosition(t=this.rotation){const{div:{style:e},pageDimensions:[s,i]}=this;let{x:n,y:r,width:a,height:o}=this;if(a*=s,o*=i,n*=s,r*=i,this._mustFixPosition)switch(t){case 0:n=et(n,0,s-a),r=et(r,0,i-o);break;case 90:n=et(n,0,s-o),r=et(r,a,i);break;case 180:n=et(n,a,s),r=et(r,o,i);break;case 270:n=et(n,o,s),r=et(r,0,i-a);break}this.x=n/=s,this.y=r/=i;const[l,c]=this.getBaseTranslation();n+=l,r+=c,e.left=`${(100*n).toFixed(2)}%`,e.top=`${(100*r).toFixed(2)}%`,this.moveInDOM()}static#M(t,e,s){switch(s){case 90:return[e,-t];case 180:return[-t,-e];case 270:return[-e,t];default:return[t,e]}}screenToPageTranslation(t,e){return O.#M(t,e,this.parentRotation)}pageTranslationToScreen(t,e){return O.#M(t,e,360-this.parentRotation)}#k(t){switch(t){case 90:{const[e,s]=this.pageDimensions;return[0,-e/s,s/e,0]}case 180:return[-1,0,0,-1];case 270:{const[e,s]=this.pageDimensions;return[0,e/s,-s/e,0]}default:return[1,0,0,1]}}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:t,pageDimensions:[e,s]}=this;return[e*t,s*t]}setDims(){const{div:{style:t},width:e,height:s}=this;t.width=`${(100*e).toFixed(2)}%`,t.height=`${(100*s).toFixed(2)}%`}getInitialTranslation(){return[0,0]}#L(){if(this.#h)return;this.#h=document.createElement("div"),this.#h.classList.add("resizers");const t=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"],e=this._uiManager._signal;for(const s of t){const i=document.createElement("div");this.#h.append(i),i.classList.add("resizer",s),i.setAttribute("data-resizer-name",s),i.addEventListener("pointerdown",this.#N.bind(this,s),{signal:e}),i.addEventListener("contextmenu",Ft,{signal:e}),i.tabIndex=-1}this.div.prepend(this.#h)}#N(t,e){e.preventDefault();const{isMac:s}=J.platform;if(e.button!==0||e.ctrlKey&&s)return;this.#s?.toggle(!1);const i=this._isDraggable;this._isDraggable=!1,this.#l=[e.screenX,e.screenY];const n=new AbortController,r=this._uiManager.combinedSignal(n);this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",this.#R.bind(this,t),{passive:!0,capture:!0,signal:r}),window.addEventListener("touchmove",ot,{passive:!1,signal:r}),window.addEventListener("contextmenu",Ft,{signal:r}),this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};const a=this.parent.div.style.cursor,o=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(e.target).cursor;const l=()=>{n.abort(),this.parent.togglePointerEvents(!0),this.#s?.toggle(!0),this._isDraggable=i,this.parent.div.style.cursor=a,this.div.style.cursor=o,this.#F()};window.addEventListener("pointerup",l,{signal:r}),window.addEventListener("blur",l,{signal:r})}#D(t,e,s,i){this.width=s,this.height=i,this.x=t,this.y=e,this.setDims(),this.fixAndSetPosition(),this._onResized()}_onResized(){}#F(){if(!this.#u)return;const{savedX:t,savedY:e,savedWidth:s,savedHeight:i}=this.#u;this.#u=null;const n=this.x,r=this.y,a=this.width,o=this.height;n===t&&r===e&&a===s&&o===i||this.addCommands({cmd:this.#D.bind(this,n,r,a,o),undo:this.#D.bind(this,t,e,s,i),mustExec:!0})}static _round(t){return Math.round(t*1e4)/1e4}#R(t,e){const[s,i]=this.parentDimensions,n=this.x,r=this.y,a=this.width,o=this.height,l=O.MIN_SIZE/s,c=O.MIN_SIZE/i,h=this.#k(this.rotation),d=(B,j)=>[h[0]*B+h[2]*j,h[1]*B+h[3]*j],f=this.#k(360-this.rotation),p=(B,j)=>[f[0]*B+f[2]*j,f[1]*B+f[3]*j];let g,m,b=!1,y=!1;switch(t){case"topLeft":b=!0,g=(B,j)=>[0,0],m=(B,j)=>[B,j];break;case"topMiddle":g=(B,j)=>[B/2,0],m=(B,j)=>[B/2,j];break;case"topRight":b=!0,g=(B,j)=>[B,0],m=(B,j)=>[0,j];break;case"middleRight":y=!0,g=(B,j)=>[B,j/2],m=(B,j)=>[0,j/2];break;case"bottomRight":b=!0,g=(B,j)=>[B,j],m=(B,j)=>[0,0];break;case"bottomMiddle":g=(B,j)=>[B/2,j],m=(B,j)=>[B/2,0];break;case"bottomLeft":b=!0,g=(B,j)=>[0,j],m=(B,j)=>[B,0];break;case"middleLeft":y=!0,g=(B,j)=>[0,j/2],m=(B,j)=>[B,j/2];break}const A=g(a,o),w=m(a,o);let x=d(...w);const S=O._round(n+x[0]),E=O._round(r+x[1]);let _=1,P=1,I,N;if(e.fromKeyboard)({deltaX:I,deltaY:N}=e);else{const{screenX:B,screenY:j}=e,[pt,nt]=this.#l;[I,N]=this.screenToPageTranslation(B-pt,j-nt),this.#l[0]=B,this.#l[1]=j}if([I,N]=p(I/s,N/i),b){const B=Math.hypot(a,o);_=P=Math.max(Math.min(Math.hypot(w[0]-A[0]-I,w[1]-A[1]-N)/B,1/a,1/o),l/a,c/o)}else y?_=et(Math.abs(w[0]-A[0]-I),l,1)/a:P=et(Math.abs(w[1]-A[1]-N),c,1)/o;const T=O._round(a*_),R=O._round(o*P);x=d(...m(T,R));const V=S-x[0],q=E-x[1];this.#c||=[this.x,this.y,this.width,this.height],this.width=T,this.height=R,this.x=V,this.y=q,this.setDims(),this.fixAndSetPosition(),this._onResizing()}_onResizing(){}altTextFinish(){this.#s?.finish()}get toolbarButtons(){return null}async addEditToolbar(){if(this._editToolbar||this.#y)return this._editToolbar;this._editToolbar=new Je(this),this.div.append(this._editToolbar.render());const{toolbarButtons:t}=this;if(t)for(const[e,s]of t)await this._editToolbar.addButton(e,s);return this.hasComment||this._editToolbar.addButton("comment",this.addCommentButton()),this._editToolbar.addButton("delete"),this._editToolbar}addCommentButtonInToolbar(){this._editToolbar?.addButtonBefore("comment",this.addCommentButton(),".deleteButton")}removeCommentButtonFromToolbar(){this._editToolbar?.removeButton("comment")}removeEditToolbar(){this._editToolbar?.remove(),this._editToolbar=null,this.#s?.destroy()}addContainer(t){const e=this._editToolbar?.div;e?e.before(t):this.div.append(t)}getClientDimensions(){return this.div.getBoundingClientRect()}createAltText(){return this.#s||(qt.initialize(O._l10n),this.#s=new qt(this),this.#t&&(this.#s.data=this.#t,this.#t=null)),this.#s}get altTextData(){return this.#s?.data}set altTextData(t){this.#s&&(this.#s.data=t)}get guessedAltText(){return this.#s?.guessedText}async setGuessedAltText(t){await this.#s?.setGuessedText(t)}serializeAltText(t){return this.#s?.serialize(t)}hasAltText(){return!!this.#s&&!this.#s.isEmpty()}hasAltTextData(){return this.#s?.hasData()??!1}focusCommentButton(){this.#i?.focusButton()}addCommentButton(){return this.canAddComment?this.#i||=new Es(this):null}addStandaloneCommentButton(){if(this._uiManager.hasCommentManager()){if(this.#n){this._uiManager.isEditingMode()&&this.#n.classList.remove("hidden");return}this.hasComment&&(this.#n=this.#i.renderForStandalone(),this.div.append(this.#n))}}removeStandaloneCommentButton(){this.#i.removeStandaloneCommentButton(),this.#n=null}hideStandaloneCommentButton(){this.#n?.classList.add("hidden")}get comment(){if(!this.#i)return null;const{data:{richText:t,text:e,date:s,deleted:i}}=this.#i;return{text:e,richText:t,date:s,deleted:i,color:this.getNonHCMColor(),opacity:this.opacity??1}}set comment(t){this.#i||=new Es(this),typeof t=="object"&&t!==null?this.#i.restoreData(t):this.#i.data=t,this.hasComment?(this.removeCommentButtonFromToolbar(),this.addStandaloneCommentButton(),this._uiManager.updateComment(this)):(this.addCommentButtonInToolbar(),this.removeStandaloneCommentButton(),this._uiManager.removeComment(this))}setCommentData({comment:t,popupRef:e,richText:s}){if(!e||(this.#i||=new Es(this),this.#i.setInitialText(t,s),!this.annotationElementId))return;const i=this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);i&&this.updateFromAnnotationLayer(i)}get hasEditedComment(){return this.#i?.hasBeenEdited()}get hasDeletedComment(){return this.#i?.isDeleted()}get hasComment(){return!!this.#i&&!this.#i.isEmpty()&&!this.#i.isDeleted()}async editComment(t){this.#i||=new Es(this),this.#i.edit(t)}toggleComment(t,e=void 0){this.hasComment&&this._uiManager.toggleComment(this,t,e)}setSelectedCommentButton(t){this.#i.setSelectedButton(t)}addComment(t){if(this.hasEditedComment){const[,,,i]=t.rect,[n]=this.pageDimensions,[r]=this.pageTranslation,a=r+n+1,o=i-100,l=a+180;t.popup={contents:this.comment.text,deleted:this.comment.deleted,rect:[a,o,l,i]}}}updateFromAnnotationLayer({popup:{contents:t,deleted:e}}){this.#i.data=e?null:t}get parentBoundingClientRect(){return this.parent.boundingClientRect}render(){const t=this.div=document.createElement("div");t.setAttribute("data-editor-rotation",(360-this.rotation)%360),t.className=this.name,t.setAttribute("id",this.id),t.tabIndex=this.#a?-1:0,t.setAttribute("role","application"),this.defaultL10nId&&t.setAttribute("data-l10n-id",this.defaultL10nId),this._isVisible||t.classList.add("hidden"),this.setInForeground(),this.#U();const[e,s]=this.parentDimensions;this.parentRotation%180!==0&&(t.style.maxWidth=`${(100*s/e).toFixed(2)}%`,t.style.maxHeight=`${(100*e/s).toFixed(2)}%`);const[i,n]=this.getInitialTranslation();return this.translate(i,n),Cr(this,t,["keydown","pointerdown","dblclick"]),this.isResizable&&this._uiManager._supportsPinchToZoom&&(this.#E||=new Ks({container:t,isPinchingDisabled:()=>!this.isSelected,onPinchStart:this.#j.bind(this),onPinching:this.#V.bind(this),onPinchEnd:this.#_.bind(this),signal:this._uiManager._signal})),this.addStandaloneCommentButton(),this._uiManager._editorUndoBar?.hide(),t}#j(){this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height},this.#s?.toggle(!1),this.parent.togglePointerEvents(!1)}#V(t,e,s){let n=.7*(s/e)+1-.7;if(n===1)return;const r=this.#k(this.rotation),a=(S,E)=>[r[0]*S+r[2]*E,r[1]*S+r[3]*E],[o,l]=this.parentDimensions,c=this.x,h=this.y,d=this.width,f=this.height,p=O.MIN_SIZE/o,g=O.MIN_SIZE/l;n=Math.max(Math.min(n,1/d,1/f),p/d,g/f);const m=O._round(d*n),b=O._round(f*n);if(m===d&&b===f)return;this.#c||=[c,h,d,f];const y=a(d/2,f/2),A=O._round(c+y[0]),w=O._round(h+y[1]),x=a(m/2,b/2);this.x=A-x[0],this.y=w-x[1],this.width=m,this.height=b,this.setDims(),this.fixAndSetPosition(),this._onResizing()}#_(){this.#s?.toggle(!0),this.parent.togglePointerEvents(!0),this.#F()}pointerdown(t){const{isMac:e}=J.platform;if(t.button!==0||t.ctrlKey&&e){t.preventDefault();return}if(this.#g=!0,this._isDraggable){this.#O(t);return}this.#x(t)}#x(t){const{isMac:e}=J.platform;t.ctrlKey&&!e||t.shiftKey||t.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this)}#O(t){const{isSelected:e}=this;this._uiManager.setUpDragSession();let s=!1;const i=new AbortController,n=this._uiManager.combinedSignal(i),r={capture:!0,passive:!1,signal:n},a=l=>{i.abort(),this.#r=null,this.#g=!1,this._uiManager.endDragSession()||this.#x(l),s&&this._onStopDragging()};e&&(this.#S=t.clientX,this.#C=t.clientY,this.#r=t.pointerId,this.#o=t.pointerType,window.addEventListener("pointermove",l=>{s||(s=!0,this._uiManager.toggleComment(this,!0,!1),this._onStartDragging());const{clientX:c,clientY:h,pointerId:d}=l;if(d!==this.#r){ot(l);return}const[f,p]=this.screenToPageTranslation(c-this.#S,h-this.#C);this.#S=c,this.#C=h,this._uiManager.dragSelectedEditors(f,p)},r),window.addEventListener("touchmove",ot,r),window.addEventListener("pointerdown",l=>{l.pointerType===this.#o&&(this.#E||l.isPrimary)&&a(l),ot(l)},r));const o=l=>{if(!this.#r||this.#r===l.pointerId){a(l);return}ot(l)};window.addEventListener("pointerup",o,{signal:n}),window.addEventListener("blur",o,{signal:n})}_onStartDragging(){}_onStopDragging(){}moveInDOM(){this.#b&&clearTimeout(this.#b),this.#b=setTimeout(()=>{this.#b=null,this.parent?.moveEditorInDOM(this)},0)}_setParentAndPosition(t,e,s){t.changeParent(this),this.x=e,this.y=s,this.fixAndSetPosition(),this._onTranslated()}getRect(t,e,s=this.rotation){const i=this.parentScale,[n,r]=this.pageDimensions,[a,o]=this.pageTranslation,l=t/i,c=e/i,h=this.x*n,d=this.y*r,f=this.width*n,p=this.height*r;switch(s){case 0:return[h+l+a,r-d-c-p+o,h+l+f+a,r-d-c+o];case 90:return[h+c+a,r-d+l+o,h+c+p+a,r-d+l+f+o];case 180:return[h-l-f+a,r-d+c+o,h-l+a,r-d+c+p+o];case 270:return[h-c-p+a,r-d-l-f+o,h-c+a,r-d-l+o];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(t,e){const[s,i,n,r]=t,a=n-s,o=r-i;switch(this.rotation){case 0:return[s,e-r,a,o];case 90:return[s,e-i,o,a];case 180:return[n,e-i,a,o];case 270:return[n,e-r,o,a];default:throw new Error("Invalid rotation")}}getPDFRect(){return this.getRect(0,0)}getNonHCMColor(){return this.color&&O._colorManager.convert(this._uiManager.getNonHCMColor(this.color))}onUpdatedColor(){this.#i?.onUpdatedColor()}getData(){const{comment:{text:t,color:e,date:s,opacity:i,deleted:n,richText:r},uid:a,pageIndex:o,creationDate:l,modificationDate:c}=this;return{id:a,pageIndex:o,rect:this.getPDFRect(),richText:r,contentsObj:{str:t},creationDate:l,modificationDate:s||c,popupRef:!n,color:e,opacity:i}}onceAdded(t){}isEmpty(){return!1}enableEditMode(){return this.isInEditMode()?!1:(this.parent.setEditingState(!1),this.#y=!0,!0)}disableEditMode(){return this.isInEditMode()?(this.parent.setEditingState(!0),this.#y=!1,!0):!1}isInEditMode(){return this.#y}shouldGetKeyboardEvents(){return this.#A}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){const{top:t,left:e,bottom:s,right:i}=this.getClientDimensions(),{innerHeight:n,innerWidth:r}=window;return e<r&&i>0&&t<n&&s>0}#U(){if(this.#p||!this.div)return;this.#p=new AbortController;const t=this._uiManager.combinedSignal(this.#p);this.div.addEventListener("focusin",this.focusin.bind(this),{signal:t}),this.div.addEventListener("focusout",this.focusout.bind(this),{signal:t})}rebuild(){this.#U()}rotate(t){}resize(){}serializeDeleted(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:this._initialData?.popupRef||""}}serialize(t=!1,e=null){return{annotationType:this.mode,pageIndex:this.pageIndex,rect:this.getPDFRect(),rotation:this.rotation,structTreeParentId:this._structTreeParentId,popupRef:this._initialData?.popupRef||""}}static async deserialize(t,e,s){const i=new this.prototype.constructor({parent:e,id:s.getId(),uiManager:s,annotationElementId:t.annotationElementId,creationDate:t.creationDate,modificationDate:t.modificationDate});i.rotation=t.rotation,i.#t=t.accessibilityData,i._isCopy=t.isCopy||!1;const[n,r]=i.pageDimensions,[a,o,l,c]=i.getRectInCurrentCoords(t.rect,r);return i.x=a/n,i.y=o/r,i.width=l/n,i.height=c/r,i}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){if(this.#p?.abort(),this.#p=null,this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),this.hideCommentPopup(),this.#b&&(clearTimeout(this.#b),this.#b=null),this.#B(),this.removeEditToolbar(),this.#v){for(const t of this.#v.values())clearTimeout(t);this.#v=null}this.parent=null,this.#E?.destroy(),this.#E=null,this.#d?.remove(),this.#d=null}get isResizable(){return!1}makeResizable(){this.isResizable&&(this.#L(),this.#h.classList.remove("hidden"))}get toolbarPosition(){return null}get commentButtonPosition(){return this._uiManager.direction==="ltr"?[1,0]:[0,0]}get commentButtonPositionInPage(){const{commentButtonPosition:[t,e]}=this,[s,i,n,r]=this.getPDFRect();return[O._round(s+(n-s)*t),O._round(i+(r-i)*(1-e))]}get commentButtonColor(){return this._uiManager.makeCommentColor(this.getNonHCMColor(),this.opacity)}get commentPopupPosition(){return this.#i.commentPopupPositionInLayer}set commentPopupPosition(t){this.#i.commentPopupPositionInLayer=t}hasDefaultPopupPosition(){return this.#i.hasDefaultPopupPosition()}get commentButtonWidth(){return this.#i.commentButtonWidth}get elementBeforePopup(){return this.div}setCommentButtonStates(t){this.#i?.setCommentButtonStates(t)}keydown(t){if(!this.isResizable||t.target!==this.div||t.key!=="Enter")return;this._uiManager.setSelected(this),this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};const e=this.#h.children;if(!this.#e){this.#e=Array.from(e);const r=this.#$.bind(this),a=this.#K.bind(this),o=this._uiManager._signal;for(const l of this.#e){const c=l.getAttribute("data-resizer-name");l.setAttribute("role","spinbutton"),l.addEventListener("keydown",r,{signal:o}),l.addEventListener("blur",a,{signal:o}),l.addEventListener("focus",this.#X.bind(this,c),{signal:o}),l.setAttribute("data-l10n-id",O._l10nResizer[c])}}const s=this.#e[0];let i=0;for(const r of e){if(r===s)break;i++}const n=(360-this.rotation+this.parentRotation)%360/90*(this.#e.length/4);if(n!==i){if(n<i)for(let a=0;a<i-n;a++)this.#h.append(this.#h.firstElementChild);else if(n>i)for(let a=0;a<n-i;a++)this.#h.firstElementChild.before(this.#h.lastElementChild);let r=0;for(const a of e){const l=this.#e[r++].getAttribute("data-resizer-name");a.setAttribute("data-l10n-id",O._l10nResizer[l])}}this.#Y(0),this.#A=!0,this.#h.firstElementChild.focus({focusVisible:!0}),t.preventDefault(),t.stopImmediatePropagation()}#$(t){O._resizerKeyboardManager.exec(this,t)}#K(t){this.#A&&t.relatedTarget?.parentNode!==this.#h&&this.#B()}#X(t){this.#m=this.#A?t:""}#Y(t){if(this.#e)for(const e of this.#e)e.tabIndex=t}_resizeWithKeyboard(t,e){this.#A&&this.#R(this.#m,{deltaX:t,deltaY:e,fromKeyboard:!0})}#B(){this.#A=!1,this.#Y(-1),this.#F()}_stopResizingWithKeyboard(){this.#B(),this.div.focus()}select(){if(this.isSelected&&this._editToolbar){this._editToolbar.show();return}if(this.isSelected=!0,this.makeResizable(),this.div?.classList.add("selectedEditor"),!this._editToolbar){this.addEditToolbar().then(()=>{this.div?.classList.contains("selectedEditor")&&this._editToolbar?.show()});return}this._editToolbar?.show(),this.#s?.toggleAltTextBadge(!1)}focus(){this.div&&!this.div.contains(document.activeElement)&&setTimeout(()=>this.div?.focus({preventScroll:!0}),0)}unselect(){this.isSelected&&(this.isSelected=!1,this.#h?.classList.add("hidden"),this.div?.classList.remove("selectedEditor"),this.div?.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),this._editToolbar?.hide(),this.#s?.toggleAltTextBadge(!0),this.hideCommentPopup())}hideCommentPopup(){this.hasComment&&this._uiManager.toggleComment(null)}updateParams(t,e){}disableEditing(){}enableEditing(){}get canChangeContent(){return!1}enterInEditMode(){this.canChangeContent&&(this.enableEditMode(),this.div.focus())}dblclick(t){t.target.nodeName!=="BUTTON"&&(this.enterInEditMode(),this.parent.updateToolbar({mode:this.constructor._editorType,editId:this.uid}))}getElementForAltText(){return this.div}get contentDiv(){return this.div}get isEditing(){return this.#f}set isEditing(t){this.#f=t,this.parent&&(t?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(t,e=!1){if(e){this.#v||=new Map;const{action:s}=t;let i=this.#v.get(s);i&&clearTimeout(i),i=setTimeout(()=>{this._reportTelemetry(t),this.#v.delete(s),this.#v.size===0&&(this.#v=null)},O._telemetryTimeout),this.#v.set(s,i);return}t.type||=this.editorType,this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:t}})}show(t=this._isVisible){this.div.classList.toggle("hidden",!t),this._isVisible=t}enable(){this.div&&(this.div.tabIndex=0),this.#a=!1}disable(){this.div&&(this.div.tabIndex=-1),this.#a=!0}updateFakeAnnotationElement(t){if(!this.#d&&!this.deleted){this.#d=t.addFakeAnnotation(this);return}if(this.deleted){this.#d.remove(),this.#d=null;return}(this.hasEditedComment||this._hasBeenMoved||this._hasBeenResized)&&this.#d.updateEdited({rect:this.getPDFRect(),popup:this.comment})}renderAnnotationElement(t){if(this.deleted)return t.hide(),null;let e=t.container.querySelector(".annotationContent");if(!e)e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),t.container.prepend(e);else if(e.nodeName==="CANVAS"){const s=e;e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),s.before(e)}return e}resetAnnotationElement(t){const{firstElementChild:e}=t.container;e?.nodeName==="DIV"&&e.classList.contains("annotationContent")&&e.remove()}}class el extends O{constructor(t){super(t),this.annotationElementId=t.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}}const Vn=3285377520,Dt=4294901760,Xt=65535;class Hi{constructor(t){this.h1=t?t&4294967295:Vn,this.h2=t?t&4294967295:Vn}update(t){let e,s;if(typeof t=="string"){e=new Uint8Array(t.length*2),s=0;for(let g=0,m=t.length;g<m;g++){const b=t.charCodeAt(g);b<=255?e[s++]=b:(e[s++]=b>>>8,e[s++]=b&255)}}else if(ArrayBuffer.isView(t))e=t.slice(),s=e.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const i=s>>2,n=s-i*4,r=new Uint32Array(e.buffer,0,i);let a=0,o=0,l=this.h1,c=this.h2;const h=3432918353,d=461845907,f=h&Xt,p=d&Xt;for(let g=0;g<i;g++)g&1?(a=r[g],a=a*h&Dt|a*f&Xt,a=a<<15|a>>>17,a=a*d&Dt|a*p&Xt,l^=a,l=l<<13|l>>>19,l=l*5+3864292196):(o=r[g],o=o*h&Dt|o*f&Xt,o=o<<15|o>>>17,o=o*d&Dt|o*p&Xt,c^=o,c=c<<13|c>>>19,c=c*5+3864292196);switch(a=0,n){case 3:a^=e[i*4+2]<<16;case 2:a^=e[i*4+1]<<8;case 1:a^=e[i*4],a=a*h&Dt|a*f&Xt,a=a<<15|a>>>17,a=a*d&Dt|a*p&Xt,i&1?l^=a:c^=a}this.h1=l,this.h2=c}hexdigest(){let t=this.h1,e=this.h2;return t^=e>>>1,t=t*3981806797&Dt|t*36045&Xt,e=e*4283543511&Dt|((e<<16|t>>>16)*2950163797&Dt)>>>16,t^=e>>>1,t=t*444984403&Dt|t*60499&Xt,e=e*3301882366&Dt|((e<<16|t>>>16)*3120437893&Dt)>>>16,t^=e>>>1,(t>>>0).toString(16).padStart(8,"0")+(e>>>0).toString(16).padStart(8,"0")}}const ss=Object.freeze({map:null,hash:"",transfer:void 0});class tn{#t=!1;#e=null;#s=null;#i=new Map;onSetModified=null;onResetModified=null;onAnnotationEditor=null;getValue(t,e){const s=this.#i.get(t);return s===void 0?e:Object.assign(e,s)}getRawValue(t){return this.#i.get(t)}remove(t){const e=this.#i.get(t);e!==void 0&&(e instanceof O&&this.#s.delete(e.annotationElementId),this.#i.delete(t),this.#i.size===0&&this.resetModified(),!this.#i.values().some(s=>s instanceof O)&&this.onAnnotationEditor?.(null))}setValue(t,e){const s=this.#i.get(t);let i=!1;if(s!==void 0)for(const[n,r]of Object.entries(e))s[n]!==r&&(i=!0,s[n]=r);else i=!0,this.#i.set(t,e);i&&this.#n(),e instanceof O&&((this.#s||=new Map).set(e.annotationElementId,e),this.onAnnotationEditor?.(e.constructor._type))}has(t){return this.#i.has(t)}get size(){return this.#i.size}#n(){this.#t||(this.#t=!0,this.onSetModified?.())}resetModified(){this.#t&&(this.#t=!1,this.onResetModified?.())}get print(){return new Er(this)}get serializable(){if(this.#i.size===0)return ss;const t=new Map,e=new Hi,s=[],i=Object.create(null);let n=!1;for(const[r,a]of this.#i){const o=a instanceof O?a.serialize(!1,i):a;a.page&&(a.pageIndex=a.page._pageIndex,delete a.page),o&&(t.set(r,o),e.update(`${r}:${JSON.stringify(o)}`),n||=!!o.bitmap)}if(n)for(const r of t.values())r.bitmap&&s.push(r.bitmap);return t.size>0?{map:t,hash:e.hexdigest(),transfer:s}:ss}get editorStats(){let t=null;const e=new Map;let s=0,i=0;for(const n of this.#i.values()){if(!(n instanceof O)){n.popup&&(n.popup.deleted?i+=1:s+=1);continue}n.isCommentDeleted?i+=1:n.hasEditedComment&&(s+=1);const r=n.telemetryFinalData;if(!r)continue;const{type:a}=r;e.getOrInsertComputed(a,()=>Object.getPrototypeOf(n).constructor),t||=Object.create(null);const o=t[a]||=new Map;for(const[l,c]of Object.entries(r)){if(l==="type")continue;const h=o.getOrInsertComputed(l,Yi);h.set(c,(h.get(c)??0)+1)}}if((i>0||s>0)&&(t||=Object.create(null),t.comments={deleted:i,edited:s}),!t)return null;for(const[n,r]of e)t[n]=r.computeTelemetryFinalData(t[n]);return t}resetModifiedIds(){this.#e=null}updateEditor(t,e){const s=this.#s?.get(t);return s?(s.updateFromAnnotationLayer(e),!0):!1}getEditor(t){return this.#s?.get(t)||null}get modifiedIds(){if(this.#e)return this.#e;const t=[];if(this.#s)for(const s of this.#s.values())s.serialize()&&t.push(s.annotationElementId);let e="";if(t.length){const s=new Hi;s.update(t.join(",")),e=s.hexdigest()}return this.#e={ids:new Set(t),hash:e}}[Symbol.iterator](){return this.#i.entries()}}class Er extends tn{#t=ss;constructor(t){super();const{serializable:e}=t;if(e===ss)return;const{map:s,hash:i,transfer:n}=e,r=structuredClone(s,n?{transfer:n}:null);this.#t={map:r,hash:i,transfer:[]}}get print(){X("Should not call PrintAnnotationStorage.print")}get serializable(){return this.#t}get modifiedIds(){return G(this,"modifiedIds",{ids:new Set,hash:""})}}const ke="__forcedDependency",{floor:Wn,ceil:Xn}=Math;function Yn(u,t,e,s,i,n){u[t*4+0]=Math.min(u[t*4+0],e),u[t*4+1]=Math.min(u[t*4+1],s),u[t*4+2]=Math.max(u[t*4+2],i),u[t*4+3]=Math.max(u[t*4+3],n)}function sl(u,t,e,s,i){let n;u?(u<0&&(n=i[0],i[0]=i[2],i[2]=n),i[0]*=u,i[2]*=u,t<0&&(n=i[1],i[1]=i[3],i[3]=n),i[1]*=t,i[3]*=t):i.fill(0),i[0]+=e,i[1]+=s,i[2]+=e,i[3]+=s}const Ui=new Uint32Array(new Uint8Array([255,255,0,0]).buffer)[0];class il{#t;#e;constructor(t,e){this.#t=t,this.#e=e}get length(){return this.#t.length}isEmpty(t){return this.#t[t]===Ui}minX(t){return this.#e[t*4+0]/256}minY(t){return this.#e[t*4+1]/256}maxX(t){return(this.#e[t*4+2]+1)/256}maxY(t){return(this.#e[t*4+3]+1)/256}}const Kn=(u,t)=>u?.getOrInsertComputed(t,()=>({dependencies:new Set,isRenderingOperation:!1}));class nl{#t=[[1,0,0,1,0,0]];#e=[-1/0,-1/0,1/0,1/0];#s=new Float64Array(se);_pendingBBoxIdx=-1;#i;#n;#a;#r;_savesStack=[];_markedContentStack=[];constructor(t,e){this.#i=t.width,this.#n=t.height,this.#o(e)}growOperationsCount(t){t>=this.#r.length&&this.#o(t,this.#r)}#o(t,e){const s=new ArrayBuffer(t*4);this.#a=new Uint8ClampedArray(s),this.#r=new Uint32Array(s),e&&e.length>0?(this.#r.set(e),this.#r.fill(Ui,e.length)):this.#r.fill(Ui)}get clipBox(){return this.#e}save(t){return this.#e={__proto__:this.#e},this._savesStack.push(t),this}restore(t,e){const s=Object.getPrototypeOf(this.#e);if(s===null)return this;this.#e=s;const i=this._savesStack.pop();return i!==void 0&&(e?.(i,t),this.#r[t]=this.#r[i]),this}recordOpenMarker(t){return this._savesStack.push(t),this}getOpenMarker(){return this._savesStack.length===0?null:this._savesStack.at(-1)}recordCloseMarker(t,e){const s=this._savesStack.pop();return s!==void 0&&(e?.(s,t),this.#r[t]=this.#r[s]),this}beginMarkedContent(t){return this._markedContentStack.push(t),this}endMarkedContent(t,e){const s=this._markedContentStack.pop();return s!==void 0&&(e?.(s,t),this.#r[t]=this.#r[s]),this}pushBaseTransform(t){return this.#t.push(k.multiplyByDOMMatrix(this.#t.at(-1),t.getTransform())),this}popBaseTransform(){return this.#t.length>1&&this.#t.pop(),this}resetBBox(t){return this._pendingBBoxIdx!==t&&(this._pendingBBoxIdx=t,this.#s.set(se,0)),this}recordClipBox(t,e,s,i,n,r){const a=k.multiplyByDOMMatrix(this.#t.at(-1),e.getTransform()),o=se.slice();k.axialAlignedBoundingBox([s,n,i,r],a,o);const l=k.intersect(this.#e,o);return l?(this.#e[0]=l[0],this.#e[1]=l[1],this.#e[2]=l[2],this.#e[3]=l[3]):(this.#e[0]=this.#e[1]=1/0,this.#e[2]=this.#e[3]=-1/0),this}recordBBox(t,e,s,i,n,r){const a=this.#e;if(a[0]===1/0)return this;const o=k.multiplyByDOMMatrix(this.#t.at(-1),e.getTransform());if(a[0]===-1/0)return k.axialAlignedBoundingBox([s,n,i,r],o,this.#s),this;const l=se.slice();return k.axialAlignedBoundingBox([s,n,i,r],o,l),this.#s[0]=et(l[0],a[0],this.#s[0]),this.#s[1]=et(l[1],a[1],this.#s[1]),this.#s[2]=et(l[2],this.#s[2],a[2]),this.#s[3]=et(l[3],this.#s[3],a[3]),this}recordFullPageBBox(t){return this.#s[0]=Math.max(0,this.#e[0]),this.#s[1]=Math.max(0,this.#e[1]),this.#s[2]=Math.min(this.#i,this.#e[2]),this.#s[3]=Math.min(this.#n,this.#e[3]),this}recordOperation(t,e=!1,s){if(this._pendingBBoxIdx!==t)return this;const i=Wn(this.#s[0]*256/this.#i),n=Wn(this.#s[1]*256/this.#n),r=Xn(this.#s[2]*256/this.#i),a=Xn(this.#s[3]*256/this.#n);if(Yn(this.#a,t,i,n,r,a),s)for(const o of s)for(const l of o)l!==t&&Yn(this.#a,l,i,n,r,a);return e||(this._pendingBBoxIdx=-1),this}bboxToClipBoxDropOperation(t){return this._pendingBBoxIdx===t&&(this._pendingBBoxIdx=-1,this.#e[0]=Math.max(this.#e[0],this.#s[0]),this.#e[1]=Math.max(this.#e[1],this.#s[1]),this.#e[2]=Math.min(this.#e[2],this.#s[2]),this.#e[3]=Math.min(this.#e[3],this.#s[3])),this}take(){return new il(this.#r,this.#a)}takeDebugMetadata(){throw new Error("Unreachable")}recordSimpleData(t,e){return this}recordIncrementalData(t,e){return this}resetIncrementalData(t,e){return this}recordNamedData(t,e){return this}recordSimpleDataFromNamed(t,e,s){return this}recordFutureForcedDependency(t,e){return this}inheritSimpleDataAsFutureForcedDependencies(t){return this}inheritPendingDependenciesAsFutureForcedDependencies(){return this}recordCharacterBBox(t,e,s,i=1,n=0,r=0,a){return this}getSimpleIndex(t){}recordDependencies(t,e){return this}recordNamedDependency(t,e){return this}recordShowTextOperation(t,e=!1){return this}}class rl{#t={__proto__:null};#e={__proto__:null,transform:[],moveText:[],sameLineText:[],[ke]:[]};#s=new Map;#i=new Set;#n=new Map;#a;#r;#o;constructor(t,e=!1){this.#o=t,e&&(this.#a=new Map,this.#r=(s,i)=>{Kn(this.#a,i).dependencies.add(s)})}get clipBox(){return this.#o.clipBox}growOperationsCount(t){this.#o.growOperationsCount(t)}save(t){return this.#t={__proto__:this.#t},this.#e={__proto__:this.#e,transform:{__proto__:this.#e.transform},moveText:{__proto__:this.#e.moveText},sameLineText:{__proto__:this.#e.sameLineText},[ke]:{__proto__:this.#e[ke]}},this.#o.save(t),this}restore(t){this.#o.restore(t,this.#r);const e=Object.getPrototypeOf(this.#t);return e===null?this:(this.#t=e,this.#e=Object.getPrototypeOf(this.#e),this)}recordOpenMarker(t){return this.#o.recordOpenMarker(t,this.#r),this}getOpenMarker(){return this.#o.getOpenMarker()}recordCloseMarker(t){return this.#o.recordCloseMarker(t,this.#r),this}beginMarkedContent(t){return this.#o.beginMarkedContent(t),this}endMarkedContent(t){return this.#o.endMarkedContent(t,this.#r),this}pushBaseTransform(t){return this.#o.pushBaseTransform(t),this}popBaseTransform(){return this.#o.popBaseTransform(),this}recordSimpleData(t,e){return this.#t[t]=e,this}recordIncrementalData(t,e){return this.#e[t].push(e),this}resetIncrementalData(t,e){return this.#e[t].length=0,this}recordNamedData(t,e){return this.#s.set(t,e),this}recordSimpleDataFromNamed(t,e,s){this.#t[t]=this.#s.get(e)??s}recordFutureForcedDependency(t,e){return this.recordIncrementalData(ke,e),this}inheritSimpleDataAsFutureForcedDependencies(t){for(const e of t)e in this.#t&&this.recordFutureForcedDependency(e,this.#t[e]);return this}inheritPendingDependenciesAsFutureForcedDependencies(){for(const t of this.#i)this.recordFutureForcedDependency(ke,t);return this}resetBBox(t){return this.#o.resetBBox(t),this}recordClipBox(t,e,s,i,n,r){return this.#o.recordClipBox(t,e,s,i,n,r),this}recordBBox(t,e,s,i,n,r){return this.#o.recordBBox(t,e,s,i,n,r),this}recordCharacterBBox(t,e,s,i=1,n=0,r=0,a){const o=s.bbox;let l,c;if(o&&(l=o[2]!==o[0]&&o[3]!==o[1]&&this.#n.get(s),l!==!1&&(c=[0,0,0,0],k.axialAlignedBoundingBox(o,s.fontMatrix,c),(i!==1||n!==0||r!==0)&&sl(i,-i,n,r,c),l)))return this.recordBBox(t,e,c[0],c[2],c[1],c[3]);if(!a)return this.recordFullPageBBox(t);const h=a();return o&&c&&l===void 0&&(l=c[0]<=n-h.actualBoundingBoxLeft&&c[2]>=n+h.actualBoundingBoxRight&&c[1]<=r-h.actualBoundingBoxAscent&&c[3]>=r+h.actualBoundingBoxDescent,this.#n.set(s,l),l)?this.recordBBox(t,e,c[0],c[2],c[1],c[3]):this.recordBBox(t,e,n-h.actualBoundingBoxLeft,n+h.actualBoundingBoxRight,r-h.actualBoundingBoxAscent,r+h.actualBoundingBoxDescent)}recordFullPageBBox(t){return this.#o.recordFullPageBBox(t),this}getSimpleIndex(t){return this.#t[t]}recordDependencies(t,e){const s=this.#i,i=this.#t,n=this.#e;for(const r of e)r in this.#t?s.add(i[r]):r in n&&n[r].forEach(s.add,s);return this}recordNamedDependency(t,e){return this.#s.has(e)&&this.#i.add(this.#s.get(e)),this}recordOperation(t,e=!1){if(this.recordDependencies(t,[ke]),this.#a){const i=Kn(this.#a,t),{dependencies:n}=i;this.#i.forEach(n.add,n),this.#o._savesStack.forEach(n.add,n),this.#o._markedContentStack.forEach(n.add,n),n.delete(t),i.isRenderingOperation=!0}const s=!e&&t===this.#o._pendingBBoxIdx;return this.#o.recordOperation(t,e,[this.#i,this.#o._savesStack,this.#o._markedContentStack]),s&&this.#i.clear(),this}recordShowTextOperation(t,e=!1){const s=Array.from(this.#i);this.recordOperation(t,e),this.recordIncrementalData("sameLineText",t);for(const i of s)this.recordIncrementalData("sameLineText",i);return this}bboxToClipBoxDropOperation(t,e=!1){const s=!e&&t===this.#o._pendingBBoxIdx;return this.#o.bboxToClipBoxDropOperation(t),s&&this.#i.clear(),this}take(){return this.#n.clear(),this.#o.take()}takeDebugMetadata(){return this.#a}}class is{#t;#e;#s;#i=0;#n=0;constructor(t,e,s){if(t instanceof is&&t.#s===!!s)return t;this.#t=t,this.#e=e,this.#s=!!s}get clipBox(){return this.#t.clipBox}growOperationsCount(){throw new Error("Unreachable")}save(t){return this.#n++,this.#t.save(this.#e),this}restore(t){return this.#n>0&&(this.#t.restore(this.#e),this.#n--),this}recordOpenMarker(t){return this.#i++,this}getOpenMarker(){return this.#i>0?this.#e:this.#t.getOpenMarker()}recordCloseMarker(t){return this.#i--,this}beginMarkedContent(t){return this}endMarkedContent(t){return this}pushBaseTransform(t){return this.#t.pushBaseTransform(t),this}popBaseTransform(){return this.#t.popBaseTransform(),this}recordSimpleData(t,e){return this.#t.recordSimpleData(t,this.#e),this}recordIncrementalData(t,e){return this.#t.recordIncrementalData(t,this.#e),this}resetIncrementalData(t,e){return this.#t.resetIncrementalData(t,this.#e),this}recordNamedData(t,e){return this}recordSimpleDataFromNamed(t,e,s){return this.#t.recordSimpleDataFromNamed(t,e,this.#e),this}recordFutureForcedDependency(t,e){return this.#t.recordFutureForcedDependency(t,this.#e),this}inheritSimpleDataAsFutureForcedDependencies(t){return this.#t.inheritSimpleDataAsFutureForcedDependencies(t),this}inheritPendingDependenciesAsFutureForcedDependencies(){return this.#t.inheritPendingDependenciesAsFutureForcedDependencies(),this}resetBBox(t){return this.#s||this.#t.resetBBox(this.#e),this}recordClipBox(t,e,s,i,n,r){return this.#s||this.#t.recordClipBox(this.#e,e,s,i,n,r),this}recordBBox(t,e,s,i,n,r){return this.#s||this.#t.recordBBox(this.#e,e,s,i,n,r),this}recordCharacterBBox(t,e,s,i,n,r,a){return this.#s||this.#t.recordCharacterBBox(this.#e,e,s,i,n,r,a),this}recordFullPageBBox(t){return this.#s||this.#t.recordFullPageBBox(this.#e),this}getSimpleIndex(t){return this.#t.getSimpleIndex(t)}recordDependencies(t,e){return this.#t.recordDependencies(this.#e,e),this}recordNamedDependency(t,e){return this.#t.recordNamedDependency(this.#e,e),this}recordOperation(t){return this.#t.recordOperation(this.#e,!0),this}recordShowTextOperation(t){return this.#t.recordShowTextOperation(this.#e,!0),this}bboxToClipBoxDropOperation(t){return this.#s||this.#t.bboxToClipBoxDropOperation(this.#e,!0),this}take(){throw new Error("Unreachable")}takeDebugMetadata(){throw new Error("Unreachable")}}const Lt={stroke:["path","transform","filter","strokeColor","strokeAlpha","lineWidth","lineCap","lineJoin","miterLimit","dash"],fill:["path","transform","filter","fillColor","fillAlpha","globalCompositeOperation","SMask"],imageXObject:["transform","SMask","filter","fillAlpha","strokeAlpha","globalCompositeOperation"],rawFillPath:["filter","fillColor","fillAlpha"],showText:["transform","leading","charSpacing","wordSpacing","hScale","textRise","moveText","textMatrix","font","fontObj","filter","fillColor","textRenderingMode","SMask","fillAlpha","strokeAlpha","globalCompositeOperation","sameLineText"],transform:["transform"],transformAndFill:["transform","fillColor"]};class Hs{#t;#e;#s=4;#i=0;#n=new Hs.#a(this.#s*6);static#a=J.isFloat16ArraySupported?Float16Array:Float32Array;constructor(t){this.#t=t.width,this.#e=t.height}record(t,e,s,i){if(this.#i===this.#s){this.#s*=2;const a=new Hs.#a(this.#s*6);a.set(this.#n),this.#n=a}const n=tt(t);let r;if(i[0]!==1/0){const a=se.slice();k.axialAlignedBoundingBox([0,-s,e,0],n,a);const o=k.intersect(i,a);if(!o)return;const[l,c,h,d]=o;if(l!==a[0]||c!==a[1]||h!==a[2]||d!==a[3]){const f=Math.atan2(n[1],n[0]),p=Math.abs(Math.sin(f)),g=Math.abs(Math.cos(f));if(p<1e-6||g<1e-6||Math.abs(p-g)<1e-6)r=[l,c,l,d,h,c];else{const m=h-l,b=d-c,y=p*p,A=g*g,w=g*p,x=A-y,S=(b*A-m*w)/x,E=(b*w-m*y)/x;r=[l+E,c,l,c+S,h,d-S]}}}r||(r=[0,-s,0,0,e,-s],k.applyTransform(r,n,0),k.applyTransform(r,n,2),k.applyTransform(r,n,4)),r[0]/=this.#t,r[1]/=this.#e,r[2]/=this.#t,r[3]/=this.#e,r[4]/=this.#t,r[5]/=this.#e,this.#n.set(r,this.#i*6),this.#i++}take(){return this.#n.subarray(0,this.#i*6)}}class al{#t=new Set;#e=null;constructor({ownerDocument:t=globalThis.document,styleElement:e=null}){this._document=t,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(t){this.nativeFontFaces.add(t),this._document.fonts.add(t)}removeNativeFontFace(t){this.nativeFontFaces.delete(t),this._document.fonts.delete(t)}insertRule(t){const e=this.#s();e.insertRule(t,e.cssRules.length)}#s(){if(this.#e)return this.#e;const t=this._document.defaultView?.CSSStyleSheet||globalThis.CSSStyleSheet;if(!this.styleElement&&t){const{adoptedStyleSheets:e}=this._document;if(e){const s=new t;return e.push(s),this.#e=s}}return this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement)),this.#e=this.styleElement.sheet}clear(){for(const t of this.nativeFontFaces)this._document.fonts.delete(t);if(this.nativeFontFaces.clear(),this.#t.clear(),this.#e){const{adoptedStyleSheets:t}=this._document;t?.includes(this.#e)&&(this._document.adoptedStyleSheets=t.filter(e=>e!==this.#e)),this.#e=null}this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}async loadSystemFont({systemFontInfo:t,disableFontFace:e,_inspectFont:s}){if(!(!t||this.#t.has(t.loadedName))){if(lt(!e,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:i,src:n,style:r}=t,a=new FontFace(i,n,r);this.addNativeFontFace(a);try{await a.load(),this.#t.add(i),s?.(t)}catch{z(`Cannot load system font: ${t.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(a)}return}X("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(t){if(t.attached||t.missingFile&&!t.systemFontInfo)return;if(t.attached=!0,t.systemFontInfo){await this.loadSystemFont(t);return}if(this.isFontLoadingAPISupported){const s=t.createNativeFontFace();if(s){this.addNativeFontFace(s);try{await s.loaded}catch(i){throw z(`Failed to load font '${s.family}': '${i}'.`),t.disableFontFace=!0,i}}return}const e=t.createFontFaceRule();if(e){if(this.insertRule(e),this.isSyncFontLoadingSupported)return;await new Promise(s=>{const i=this._queueLoadingCallback(s);this._prepareFontLoadEvent(t,i)})}}get isFontLoadingAPISupported(){const t=!!this._document?.fonts;return G(this,"isFontLoadingAPISupported",t)}get isSyncFontLoadingSupported(){return G(this,"isSyncFontLoadingSupported",kt||J.platform.isFirefox)}_queueLoadingCallback(t){function e(){for(lt(!i.done,"completeRequest() cannot be called twice."),i.done=!0;s.length>0&&s[0].done;){const n=s.shift();setTimeout(n.callback,0)}}const{loadingRequests:s}=this,i={done:!1,complete:e,callback:t};return s.push(i),i}get _loadTestFont(){const t=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return G(this,"_loadTestFont",t)}_prepareFontLoadEvent(t,e){function s(x,S){return x.charCodeAt(S)<<24|x.charCodeAt(S+1)<<16|x.charCodeAt(S+2)<<8|x.charCodeAt(S+3)&255}function i(x){return String.fromCharCode(x>>24&255,x>>16&255,x>>8&255,x&255)}function n(x,S,E,_){const P=x.substring(0,S),I=x.substring(S+E);return P+_+I}let r,a;const o=this._document.createElement("canvas");o.width=1,o.height=1;const l=o.getContext("2d");let c=0;function h(x,S){if(++c>30){z("Load test font never loaded."),S();return}if(l.font="30px "+x,l.fillText(".",0,20),l.getImageData(0,0,1,1).data[3]>0){S();return}setTimeout(h.bind(null,x,S))}const d=`lt${Date.now()}${this.loadTestFontId++}`;let f=this._loadTestFont;f=n(f,976,d.length,d);const g=16,m=1482184792;let b=s(f,g);for(r=0,a=d.length-3;r<a;r+=4)b=b-m+s(d,r)|0;r<d.length&&(b=b-m+s(d+"XXX",r)|0),f=n(f,g,4,i(b));const y=`url(data:font/opentype;base64,${btoa(f)});`,A=`@font-face {font-family:"${d}";src:${y}}`;this.insertRule(A);const w=this._document.createElement("div");w.style.visibility="hidden",w.style.width=w.style.height="10px",w.style.position="absolute",w.style.top=w.style.left="0px";for(const x of[t.loadedName,d]){const S=this._document.createElement("span");S.textContent="Hi",S.style.fontFamily=x,w.append(S)}this._document.body.append(w),h(d,()=>{w.remove(),e.complete()})}}class ol{compiledGlyphs=Object.create(null);#t;constructor(t,e=null,s,i){this.#t=t,this._inspectFont=e,s&&(this.charProcOperatorList=s),i&&Object.assign(this,i)}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let t;if(!this.cssFontInfo)t=new FontFace(this.loadedName,this.data,{});else{const e={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(e.style=`oblique ${this.cssFontInfo.italicAngle}deg`),t=new FontFace(this.cssFontInfo.fontFamily,this.data,e)}return this._inspectFont?.(this),t}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;const t=`url(data:${this.mimetype};base64,${this.data.toBase64()});`;let e;if(!this.cssFontInfo)e=`@font-face {font-family:"${this.loadedName}";src:${t}}`;else{let s=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(s+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),e=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${s}src:${t}}`}return this._inspectFont?.(this,t),e}getPathGenerator(t,e){if(this.compiledGlyphs[e]!==void 0)return this.compiledGlyphs[e];const s=this.loadedName+"_path_"+e;let i;try{i=t.get(s)}catch(r){z(`getPathGenerator - ignoring character: "${r}".`)}const n=Sr(i?.path);return this.fontExtraProperties||t.delete(s),this.compiledGlyphs[e]=n}get black(){return this.#t.black}get bold(){return this.#t.bold}get disableFontFace(){return this.#t.disableFontFace}set disableFontFace(t){G(this,"disableFontFace",!!t)}get fontExtraProperties(){return this.#t.fontExtraProperties}get isInvalidPDFjsFont(){return this.#t.isInvalidPDFjsFont}get isType3Font(){return this.#t.isType3Font}get italic(){return this.#t.italic}get missingFile(){return this.#t.missingFile}get remeasure(){return this.#t.remeasure}get vertical(){return this.#t.vertical}get ascent(){return this.#t.ascent}get defaultWidth(){return this.#t.defaultWidth}get descent(){return this.#t.descent}get bbox(){return this.#t.bbox}get fontMatrix(){return this.#t.fontMatrix}get fallbackName(){return this.#t.fallbackName}get loadedName(){return this.#t.loadedName}get mimetype(){return this.#t.mimetype}get name(){return this.#t.name}get data(){return this.#t.data}clearData(){this.#t.clearData()}get cssFontInfo(){return this.#t.cssFontInfo}get systemFontInfo(){return this.#t.systemFontInfo}get defaultVMetrics(){return this.#t.defaultVMetrics}}class ll{static strings=["fontFamily","fontWeight","italicAngle"]}class cl{static strings=["css","loadedName","baseFontName","src"]}class Rt{static bools=["black","bold","disableFontFace","fontExtraProperties","isInvalidPDFjsFont","isType3Font","italic","missingFile","remeasure","vertical"];static numbers=["ascent","defaultWidth","descent"];static strings=["fallbackName","loadedName","mimetype","name"];static OFFSET_NUMBERS=Math.ceil(this.bools.length*2/8);static OFFSET_BBOX=this.OFFSET_NUMBERS+this.numbers.length*8;static OFFSET_FONT_MATRIX=this.OFFSET_BBOX+1+8;static OFFSET_DEFAULT_VMETRICS=this.OFFSET_FONT_MATRIX+1+48;static OFFSET_STRINGS=this.OFFSET_DEFAULT_VMETRICS+1+6}class pe{static KIND=0;static HAS_BBOX=1;static HAS_BACKGROUND=2;static SHADING_TYPE=3;static N_COORD=4;static N_COLOR=8;static N_STOP=12;static N_FIGURES=16}class hl{#t;#e=new TextDecoder;#s;constructor(t){this.#t=t,this.#s=new DataView(t)}#i(t){lt(t<ll.strings.length,"Invalid string index");let e=0;for(let i=0;i<t;i++)e+=this.#s.getUint32(e)+4;const s=this.#s.getUint32(e);return this.#e.decode(new Uint8Array(this.#t,e+4,s))}get fontFamily(){return this.#i(0)}get fontWeight(){return this.#i(1)}get italicAngle(){return this.#i(2)}}class dl{#t;#e=new TextDecoder;#s;constructor(t){this.#t=t,this.#s=new DataView(t)}get guessFallback(){return this.#s.getUint8(0)!==0}#i(t){lt(t<cl.strings.length,"Invalid string index");let e=5;for(let i=0;i<t;i++)e+=this.#s.getUint32(e)+4;const s=this.#s.getUint32(e);return this.#e.decode(new Uint8Array(this.#t,e+4,s))}get css(){return this.#i(0)}get loadedName(){return this.#i(1)}get baseFontName(){return this.#i(2)}get src(){return this.#i(3)}get style(){let t=1;t+=4+this.#s.getUint32(t);const e=this.#s.getUint32(t),s=this.#e.decode(new Uint8Array(this.#t,t+4,e));t+=4+e;const i=this.#s.getUint32(t),n=this.#e.decode(new Uint8Array(this.#t,t+4,i));return{style:s,weight:n}}}class ul{#t;#e=new TextDecoder;#s;constructor({buffer:t,extra:e}){this.#t=t,this.#s=new DataView(t),e&&Object.assign(this,e)}#i(t){lt(t<Rt.bools.length,"Invalid boolean index");const e=Math.floor(t/4),s=t*2%8,i=this.#s.getUint8(e)>>s&3;return i===0?void 0:i===2}get black(){return this.#i(0)}get bold(){return this.#i(1)}get disableFontFace(){return this.#i(2)}get fontExtraProperties(){return this.#i(3)}get isInvalidPDFjsFont(){return this.#i(4)}get isType3Font(){return this.#i(5)}get italic(){return this.#i(6)}get missingFile(){return this.#i(7)}get remeasure(){return this.#i(8)}get vertical(){return this.#i(9)}#n(t){return lt(t<Rt.numbers.length,"Invalid number index"),this.#s.getFloat64(Rt.OFFSET_NUMBERS+t*8)}get ascent(){return this.#n(0)}get defaultWidth(){return this.#n(1)}get descent(){return this.#n(2)}#a(t,e,s,i){const n=this.#s.getUint8(t);if(n===0)return;lt(n===e,"Invalid array length."),t+=1;const r=new Array(n);for(let a=0;a<n;a++)r[a]=this.#s[s](t,!0),t+=i;return r}get bbox(){return this.#a(Rt.OFFSET_BBOX,4,"getInt16",2)}get fontMatrix(){return this.#a(Rt.OFFSET_FONT_MATRIX,6,"getFloat64",8)}get defaultVMetrics(){return this.#a(Rt.OFFSET_DEFAULT_VMETRICS,3,"getInt16",2)}#r(t){lt(t<Rt.strings.length,"Invalid string index");let e=Rt.OFFSET_STRINGS+4;for(let i=0;i<t;i++)e+=this.#s.getUint32(e)+4;const s=this.#s.getUint32(e);return this.#e.decode(new Uint8Array(this.#t,e+4,s))}get fallbackName(){return this.#r(0)}get loadedName(){return this.#r(1)}get mimetype(){return this.#r(2)}get name(){return this.#r(3)}#o(){let t=Rt.OFFSET_STRINGS;const e=this.#s.getUint32(t);t+=4+e;const s=this.#s.getUint32(t);t+=4+s;const i=this.#s.getUint32(t);t+=4+i;const n=this.#s.getUint32(t);return{offset:t,length:n}}get data(){const{offset:t,length:e}=this.#o();return e===0?void 0:new Uint8Array(this.#t,t+4,e)}clearData(){const{offset:t,length:e}=this.#o();e!==0&&(this.#s.setUint32(t,0),this.#t=new Uint8Array(this.#t,0,t+4).slice().buffer,this.#s=new DataView(this.#t))}get cssFontInfo(){let t=Rt.OFFSET_STRINGS;const e=this.#s.getUint32(t);t+=4+e;const s=this.#s.getUint32(t);t+=4+s;const i=this.#s.getUint32(t);if(i===0)return null;const n=new Uint8Array(i);return n.set(new Uint8Array(this.#t,t+4,i)),new hl(n.buffer)}get systemFontInfo(){let t=Rt.OFFSET_STRINGS;const e=this.#s.getUint32(t);t+=4+e;const s=this.#s.getUint32(t);if(s===0)return null;const i=new Uint8Array(s);return i.set(new Uint8Array(this.#t,t+4,s)),new dl(i.buffer)}}class fl{constructor(t){this.buffer=t,this.view=new DataView(t),this.data=new Uint8Array(t)}getIR(){const t=this.view,e=this.data[pe.KIND],s=!!this.data[pe.HAS_BBOX],i=!!this.data[pe.HAS_BACKGROUND],n=t.getUint32(pe.N_COORD,!0),r=t.getUint32(pe.N_COLOR,!0),a=t.getUint32(pe.N_STOP,!0);let o=20;const l=new Float32Array(this.buffer,o,n*2);o+=n*8;const c=new Uint8Array(this.buffer,o,r*4);o+=r*4;const h=[];for(let p=0;p<a;++p){const g=t.getFloat32(o,!0);o+=4;const m=t.getUint32(o,!0);o+=4,h.push([g,`#${m.toString(16).padStart(6,"0")}`])}let d=null;if(s){d=[];for(let p=0;p<4;++p)d.push(t.getFloat32(o,!0)),o+=4}let f=null;if(i&&(f=new Uint8Array(this.buffer,o,3),o+=3),e===1)return["RadialAxial","axial",d,h,Array.from(l.slice(0,2)),Array.from(l.slice(2,4)),null,null];if(e===2)return["RadialAxial","radial",d,h,[l[0],l[1]],[l[3],l[4]],l[2],l[5]];if(e===3){const p=this.data[pe.SHADING_TYPE];let g=null;if(l.length>0){g=se.slice();for(let m=0,b=l.length;m<b;m+=2)k.pointBoundingBox(l[m],l[m+1],g)}return["Mesh",p,l,c,n,g,d,f]}throw new Error(`Unsupported pattern kind: ${e}`)}}class pl{#t;constructor(t){this.#t=t}get path(){return J.isFloat16ArraySupported?new Float16Array(this.#t):new Float32Array(this.#t)}}function gl(u){if(u instanceof URL)return u;if(typeof u=="string"){if(kt){if(/^[a-z][a-z0-9\-+.]+:/i.test(u))return new URL(u);const e=process.getBuiltinModule("url");return new URL(e.pathToFileURL(u))}const t=URL.parse(u,window.location);if(t)return t}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function ml(u){if(kt&&typeof Buffer<"u"&&u instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(u instanceof Uint8Array&&u.byteLength===u.buffer.byteLength)return u;if(typeof u=="string")return Xs(u);if(u instanceof ArrayBuffer||ArrayBuffer.isView(u)||typeof u=="object"&&!isNaN(u?.length))return new Uint8Array(u);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}function _s(u){if(typeof u!="string")return null;if(u.endsWith("/"))return u;throw new Error(`Invalid factory url: "${u}" must include trailing slash.`)}const Gi=u=>typeof u=="object"&&Number.isInteger(u?.num)&&u.num>=0&&Number.isInteger(u?.gen)&&u.gen>=0,bl=u=>typeof u=="object"&&typeof u?.name=="string",yl=$o.bind(null,Gi,bl);class Al{#t=new Map;#e=Promise.resolve();postMessage(t,e){const s={data:structuredClone(t,e?{transfer:e}:null)};this.#e.then(()=>{for(const[i]of this.#t)i.call(this,s)})}addEventListener(t,e,s=null){let i=null;if(s?.signal instanceof AbortSignal){const{signal:n}=s;if(n.aborted){z("LoopbackPort - cannot use an `aborted` signal.");return}const r=()=>this.removeEventListener(t,e);i=()=>n.removeEventListener("abort",r),n.addEventListener("abort",r)}this.#t.set(e,i)}removeEventListener(t,e){this.#t.get(e)?.(),this.#t.delete(e)}terminate(){for(const[,t]of this.#t)t?.();this.#t.clear()}}const Ts={DATA:1,ERROR:2},ut={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function qn(){}function xt(u){if(u instanceof le||u instanceof Fi||u instanceof Ni||u instanceof js||u instanceof Ei)return u;switch(u instanceof Error||typeof u=="object"&&u!==null||X('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),u.name){case"AbortException":return new le(u.message);case"InvalidPDFException":return new Fi(u.message);case"PasswordException":return new Ni(u.message,u.code);case"ResponseException":return new js(u.message,u.status,u.missing);case"UnknownErrorException":return new Ei(u.message,u.details)}return new Ei(u.message,u.toString())}class Ke{#t=new AbortController;constructor(t,e,s){this.sourceName=t,this.targetName=e,this.comObj=s,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),s.addEventListener("message",this.#e.bind(this),{signal:this.#t.signal})}#e({data:t}){if(t.targetName!==this.sourceName)return;if(t.stream){this.#i(t);return}if(t.callback){const s=t.callbackId,i=this.callbackCapabilities[s];if(!i)throw new Error(`Cannot resolve callback ${s}`);if(delete this.callbackCapabilities[s],t.callback===Ts.DATA)i.resolve(t.data);else if(t.callback===Ts.ERROR)i.reject(xt(t.reason));else throw new Error("Unexpected callback case");return}const e=this.actionHandler[t.action];if(!e)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const s=this.sourceName,i=t.sourceName,n=this.comObj;Promise.try(e,t.data).then(function(r){n.postMessage({sourceName:s,targetName:i,callback:Ts.DATA,callbackId:t.callbackId,data:r})},function(r){n.postMessage({sourceName:s,targetName:i,callback:Ts.ERROR,callbackId:t.callbackId,reason:xt(r)})});return}if(t.streamId){this.#s(t);return}e(t.data)}on(t,e){const s=this.actionHandler;if(s[t])throw new Error(`There is already an actionName called "${t}"`);s[t]=e}send(t,e,s){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,data:e},s)}sendWithPromise(t,e,s){const i=this.callbackId++,n=Promise.withResolvers();this.callbackCapabilities[i]=n;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,callbackId:i,data:e},s)}catch(r){n.reject(r)}return n.promise}sendWithStream(t,e,s,i){const n=this.streamId++,r=this.sourceName,a=this.targetName,o=this.comObj;return new ReadableStream({start:l=>{const c=Promise.withResolvers();return this.streamControllers[n]={controller:l,startCall:c,pullCall:null,cancelCall:null,isClosed:!1},o.postMessage({sourceName:r,targetName:a,action:t,streamId:n,data:e,desiredSize:l.desiredSize},i),c.promise},pull:l=>{const c=Promise.withResolvers();return this.streamControllers[n].pullCall=c,o.postMessage({sourceName:r,targetName:a,stream:ut.PULL,streamId:n,desiredSize:l.desiredSize}),c.promise},cancel:l=>{lt(l instanceof Error,"cancel must have a valid reason");const c=Promise.withResolvers();return this.streamControllers[n].cancelCall=c,this.streamControllers[n].isClosed=!0,o.postMessage({sourceName:r,targetName:a,stream:ut.CANCEL,streamId:n,reason:xt(l)}),c.promise}},s)}#s(t){const e=t.streamId,s=this.sourceName,i=t.sourceName,n=this.comObj,r=this,a=this.actionHandler[t.action],o={enqueue(l,c=1,h){if(this.isCancelled)return;const d=this.desiredSize;this.desiredSize-=c,d>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),n.postMessage({sourceName:s,targetName:i,stream:ut.ENQUEUE,streamId:e,chunk:l},h)},close(){this.isCancelled||(this.isCancelled=!0,n.postMessage({sourceName:s,targetName:i,stream:ut.CLOSE,streamId:e}),delete r.streamSinks[e])},error(l){lt(l instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,n.postMessage({sourceName:s,targetName:i,stream:ut.ERROR,streamId:e,reason:xt(l)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:t.desiredSize,ready:null};o.sinkCapability.resolve(),o.ready=o.sinkCapability.promise,this.streamSinks[e]=o,Promise.try(a,t.data,o).then(function(){n.postMessage({sourceName:s,targetName:i,stream:ut.START_COMPLETE,streamId:e,success:!0})},function(l){n.postMessage({sourceName:s,targetName:i,stream:ut.START_COMPLETE,streamId:e,reason:xt(l)})})}#i(t){const e=t.streamId,s=this.sourceName,i=t.sourceName,n=this.comObj,r=this.streamControllers[e],a=this.streamSinks[e];switch(t.stream){case ut.START_COMPLETE:t.success?r.startCall.resolve():r.startCall.reject(xt(t.reason));break;case ut.PULL_COMPLETE:t.success?r.pullCall.resolve():r.pullCall.reject(xt(t.reason));break;case ut.PULL:if(!a){n.postMessage({sourceName:s,targetName:i,stream:ut.PULL_COMPLETE,streamId:e,success:!0});break}a.desiredSize<=0&&t.desiredSize>0&&a.sinkCapability.resolve(),a.desiredSize=t.desiredSize,Promise.try(a.onPull||qn).then(function(){n.postMessage({sourceName:s,targetName:i,stream:ut.PULL_COMPLETE,streamId:e,success:!0})},function(l){n.postMessage({sourceName:s,targetName:i,stream:ut.PULL_COMPLETE,streamId:e,reason:xt(l)})});break;case ut.ENQUEUE:if(lt(r,"enqueue should have stream controller"),r.isClosed)break;r.controller.enqueue(t.chunk);break;case ut.CLOSE:if(lt(r,"close should have stream controller"),r.isClosed)break;r.isClosed=!0,r.controller.close(),this.#n(r,e);break;case ut.ERROR:lt(r,"error should have stream controller"),r.controller.error(xt(t.reason)),this.#n(r,e);break;case ut.CANCEL_COMPLETE:t.success?r.cancelCall.resolve():r.cancelCall.reject(xt(t.reason)),this.#n(r,e);break;case ut.CANCEL:if(!a)break;const o=xt(t.reason);Promise.try(a.onCancel||qn,o).then(function(){n.postMessage({sourceName:s,targetName:i,stream:ut.CANCEL_COMPLETE,streamId:e,success:!0})},function(l){n.postMessage({sourceName:s,targetName:i,stream:ut.CANCEL_COMPLETE,streamId:e,reason:xt(l)})}),a.sinkCapability.reject(o),a.isCancelled=!0,delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}}async#n(t,e){await Promise.allSettled([t.startCall?.promise,t.pullCall?.promise,t.cancelCall?.promise]),delete this.streamControllers[e]}destroy(){this.#t?.abort(),this.#t=null}}class _r{#t=Object.freeze({cMapUrl:"CMap",standardFontDataUrl:"font",wasmUrl:"wasm"});constructor({cMapUrl:t=null,standardFontDataUrl:e=null,wasmUrl:s=null}){this.cMapUrl=t,this.standardFontDataUrl=e,this.wasmUrl=s}async fetch({kind:t,filename:e}){switch(t){case"cMapUrl":case"standardFontDataUrl":case"wasmUrl":break;default:X(`Not implemented: ${t}`)}const s=this[t];if(!s)throw new Error(`Ensure that the \`${t}\` API parameter is provided.`);const i=`${s}${e}`;return this._fetch(i,t).catch(n=>{throw new Error(`Unable to load ${this.#t[t]} data at: ${i}`)})}async _fetch(t,e){X("Abstract method `_fetch` called.")}}class Qn extends _r{async _fetch(t,e){const s=e==="cMapUrl"&&!t.endsWith(".bcmap")?"text":"bytes",i=await Ki(t,s);return i instanceof Uint8Array?i:Xs(i)}}class Tr{#t=!1;constructor({enableHWA:t=!1}){this.#t=t}create(t,e){if(t<=0||e<=0)throw new Error("Invalid canvas size");const s=this._createCanvas(t,e);return{canvas:s,context:s.getContext("2d",{willReadFrequently:!this.#t})}}reset({canvas:t},e,s){if(!t)throw new Error("Canvas is not specified");if(e<=0||s<=0)throw new Error("Invalid canvas size");t.width=e,t.height=s}destroy(t){const{canvas:e}=t;if(!e)throw new Error("Canvas is not specified");e.width=e.height=0,t.canvas=null,t.context=null}_createCanvas(t,e){X("Abstract method `_createCanvas` called.")}}class vl extends Tr{constructor({ownerDocument:t=globalThis.document,enableHWA:e=!1}){super({enableHWA:e}),this._document=t}_createCanvas(t,e){const s=this._document.createElement("canvas");return s.width=t,s.height=e,s}}class kr{addFilter(t){return"none"}addHCMFilter(t,e){return"none"}addAlphaFilter(t){return"none"}addLuminosityFilter(t){return"none"}addKnockoutFilter(t=0){return"none"}addHighlightHCMFilter(t,e,s,i,n){return"none"}addSelectionHCMFilter(t,e){return"none"}addSelectionFilter(){return"none"}createSelectionStyle(t=null){return null}destroy(t=!1){}}class xl extends kr{#t;#e;#s;#i;#n;#a;#r=0;constructor({docId:t,ownerDocument:e=globalThis.document}){super(),this.#i=t,this.#n=e}get#o(){return this.#e||=new Map}get#h(){return this.#a||=new Map}get#l(){if(!this.#s){const t=this.#n.createElement("div"),{style:e}=t;e.colorScheme="only light",e.visibility="hidden",e.contain="strict",e.width=e.height=0,e.position="absolute",e.top=e.left=0,e.zIndex=-1;const s=this.#n.createElementNS(Et,"svg");s.setAttribute("width",0),s.setAttribute("height",0),this.#s=this.#n.createElementNS(Et,"defs"),t.append(s),s.append(this.#s),this.#n.body.append(t)}return this.#s}#u(t){if(t.length===1){const o=t[0],l=new Array(256);for(let h=0;h<256;h++)l[h]=o[h]/255;const c=l.join(",");return[c,c,c]}const[e,s,i]=t,n=new Array(256),r=new Array(256),a=new Array(256);for(let o=0;o<256;o++)n[o]=e[o]/255,r[o]=s[o]/255,a[o]=i[o]/255;return[n.join(","),r.join(","),a.join(",")]}#d(t){if(this.#t===void 0){this.#t="";const e=this.#n.URL;e!==this.#n.baseURI&&(Ys(e)?z('#createUrl: ignore "data:"-URL for performance reasons.'):this.#t=Ar(e,""))}return`url(${this.#t}#${t})`}addFilter(t){if(!t)return"none";let e=this.#o.get(t);if(e)return e;const[s,i,n]=this.#u(t),r=t.length===1?s:`${s}${i}${n}`;if(e=this.#o.get(r),e)return this.#o.set(t,e),e;const a=`g_${this.#i}_transfer_map_${this.#r++}`,o=this.#d(a);this.#o.set(t,o),this.#o.set(r,o);const l=this.#g(a);return this.#f(s,i,n,l),o}addHCMFilter(t,e){const s=`${t}-${e}`,i="base";let n=this.#h.get(i);if(n?.key===s||(n?(n.filter?.remove(),n.key=s,n.url="none",n.filter=null):(n={key:s,url:"none",filter:null},this.#h.set(i,n)),!t||!e))return n.url;const r=this.#A(t);t=k.makeHexColor(...r);const a=this.#A(e);if(e=k.makeHexColor(...a),this.#l.style.color="",t==="#000000"&&e==="#ffffff"||t===e)return n.url;const o=new Array(256);for(let f=0;f<=255;f++){const p=f/255;o[f]=p<=.03928?p/12.92:((p+.055)/1.055)**2.4}const l=o.join(","),c=`g_${this.#i}_hcm_filter`,h=n.filter=this.#g(c);this.#f(l,l,l,h),this.#m(h);const d=(f,p)=>{const g=r[f]/255,m=a[f]/255,b=new Array(p+1);for(let y=0;y<=p;y++)b[y]=g+y/p*(m-g);return b.join(",")};return this.#f(d(0,5),d(1,5),d(2,5),h),n.url=this.#d(c),n.url}addSelectionHCMFilter(t,e){return this.addHighlightHCMFilter("selection",t,e,"HighlightText","Highlight")}addSelectionFilter(){return this.addHighlightHCMFilter("selection_default","black","white","HighlightText","Highlight")}createSelectionStyle(t=null){const e=t?this.addSelectionHCMFilter(t.foreground,t.background):this.addSelectionFilter();return e==="none"||!J.platform.isFirefox?null:{"backdrop-filter":e,"background-color":"transparent"}}addAlphaFilter(t){let e=this.#o.get(t);if(e)return e;const[s]=this.#u([t]),i=`alpha_${s}`;if(e=this.#o.get(i),e)return this.#o.set(t,e),e;const n=`g_${this.#i}_alpha_map_${this.#r++}`,r=this.#d(n);this.#o.set(t,r),this.#o.set(i,r);const a=this.#g(n);return this.#y(s,a),r}addLuminosityFilter(t){let e=this.#o.get(t||"luminosity");if(e)return e;let s,i;if(t?([s]=this.#u([t]),i=`luminosity_${s}`):i="luminosity",e=this.#o.get(i),e)return this.#o.set(t,e),e;const n=`g_${this.#i}_luminosity_map_${this.#r++}`,r=this.#d(n);this.#o.set(t,r),this.#o.set(i,r);const a=this.#g(n);return this.#p(a),t&&this.#y(s,a),r}addKnockoutFilter(t=0){const e=t>0?Math.min(1/t,1e6):1e6,s=`knockout_${e}`,i=this.#o.get(s);if(i)return i;const n=`g_${this.#i}_knockout_filter_${this.#r++}`,r=this.#d(n);this.#o.set(s,r);const a=this.#g(n),o=this.#n.createElementNS(Et,"feComponentTransfer");a.append(o);const l=this.#n.createElementNS(Et,"feFuncA");return l.setAttribute("type","linear"),l.setAttribute("slope",`${e}`),l.setAttribute("intercept","0"),o.append(l),r}addHighlightHCMFilter(t,e,s,i,n){const r=`${e}-${s}-${i}-${n}`;let a=this.#h.get(t);if(a?.key===r||(a?(a.filter?.remove(),a.key=r,a.url="none",a.filter=null):(a={key:r,url:"none",filter:null},this.#h.set(t,a)),!e||!s))return a.url;const[o,l]=[e,s].map(this.#A.bind(this));let c=Math.round(.2126*o[0]+.7152*o[1]+.0722*o[2]),h=Math.round(.2126*l[0]+.7152*l[1]+.0722*l[2]),[d,f]=[i,n].map(this.#S.bind(this));h<c&&([c,h,d,f]=[h,c,f,d]),this.#l.style.color="";const p=(b,y,A)=>{const w=new Array(256),x=(h-c)/A,S=b/255,E=(y-b)/(255*A);let _=0;for(let P=0;P<=A;P++){const I=Math.round(c+P*x),N=S+P*E;for(let T=_;T<=I;T++)w[T]=N;_=I+1}for(let P=_;P<256;P++)w[P]=w[_-1];return w.join(",")},g=`g_${this.#i}_hcm_${t}_filter`,m=a.filter=this.#g(g);return this.#m(m),this.#f(p(d[0],f[0],5),p(d[1],f[1],5),p(d[2],f[2],5),m),a.url=this.#d(g),a.url}destroy(t=!1){t&&this.#a?.size||(this.#s?.parentNode.parentNode.remove(),this.#s=null,this.#e?.clear(),this.#e=null,this.#a?.clear(),this.#a=null,this.#r=0)}#p(t){const e=this.#n.createElementNS(Et,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"),t.append(e)}#m(t){const e=this.#n.createElementNS(Et,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),t.append(e)}#g(t){const e=this.#n.createElementNS(Et,"filter");return e.setAttribute("color-interpolation-filters","sRGB"),e.setAttribute("id",t),this.#l.append(e),e}#c(t,e,s){const i=this.#n.createElementNS(Et,e);i.setAttribute("type","discrete"),i.setAttribute("tableValues",s),t.append(i)}#f(t,e,s,i){const n=this.#n.createElementNS(Et,"feComponentTransfer");i.append(n),this.#c(n,"feFuncR",t),this.#c(n,"feFuncG",e),this.#c(n,"feFuncB",s)}#y(t,e){const s=this.#n.createElementNS(Et,"feComponentTransfer");e.append(s),this.#c(s,"feFuncA",t)}#A(t){return this.#l.style.color=t,cs(getComputedStyle(this.#l).getPropertyValue("color"))}#b(t){return this.#l.style.color=t,ls(getComputedStyle(this.#l).getPropertyValue("color"))}#S(t){const[e,s,i,n]=this.#b(t);if(n===1)return[e,s,i];const[r,a,o]=this.#A("Canvas");return[ki(e,r,n),ki(s,a,n),ki(i,o,n)]}}function ki(u,t,e){return Math.round(e*u+(1-e)*t)}kt&&z("Please use the `legacy` build in Node.js environments.");async function wl(u){const e=await process.getBuiltinModule("fs/promises").readFile(u);return new Uint8Array(e)}class Sl extends kr{}class Cl extends Tr{_createCanvas(t,e){return process.getBuiltinModule("module").createRequire(import.meta.url)("@napi-rs/canvas").createCanvas(t,e)}}class El extends _r{async _fetch(t,e){return wl(t)}}function Pr({src:u,srcPos:t=0,dest:e,width:s,height:i,nonBlackColor:n=4294967295,inverseDecode:r=!1}){const a=J.isLittleEndian?4278190080:255,[o,l]=r?[n,a]:[a,n],c=s>>3,h=s&7,d=o^l,f=u.length;e=new Uint32Array(e.buffer);let p=0;for(let g=0;g<i;++g){for(const b=t+c;t<b;++t,p+=8){const y=u[t];e[p]=o^-(y>>7&1)&d,e[p+1]=o^-(y>>6&1)&d,e[p+2]=o^-(y>>5&1)&d,e[p+3]=o^-(y>>4&1)&d,e[p+4]=o^-(y>>3&1)&d,e[p+5]=o^-(y>>2&1)&d,e[p+6]=o^-(y>>1&1)&d,e[p+7]=o^-(y&1)&d}if(h===0)continue;const m=t<f?u[t++]:255;for(let b=0;b<h;++b,++p)e[p]=o^-(m>>7-b&1)&d}return{srcPos:t,destPos:p}}function _l({src:u,srcPos:t=0,dest:e,destPos:s=0,width:i,height:n}){let r=0;const a=i*n*3,o=a>>2,l=new Uint32Array(u.buffer,t,o),c=J.isLittleEndian?4278190080:255;if(J.isLittleEndian){for(;r<o-2;r+=3,s+=4){const h=l[r],d=l[r+1],f=l[r+2];e[s]=h|c,e[s+1]=h>>>24|d<<8|c,e[s+2]=d>>>16|f<<16|c,e[s+3]=f>>>8|c}for(let h=r*4,d=t+a;h<d;h+=3)e[s++]=u[h]|u[h+1]<<8|u[h+2]<<16|c}else{for(;r<o-2;r+=3,s+=4){const h=l[r],d=l[r+1],f=l[r+2];e[s]=h|c,e[s+1]=h<<24|d>>>8|c,e[s+2]=d<<16|f>>>16|c,e[s+3]=f<<8|c}for(let h=r*4,d=t+a;h<d;h+=3)e[s++]=u[h]<<24|u[h+1]<<16|u[h+2]<<8|c}return{srcPos:t+a,destPos:s}}const Tl=`
3
3
  struct Uniforms {
4
4
  offsetX : f32,
@@ -54,7 +54,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
54
54
  `),position:b,pageIndex:y-1,rect:o.slice(0),rotation:l,annotationElementId:c,id:c,deleted:!1,popupRef:h,comment:f?.str||null,richText:d,creationDate:p,modificationDate:g}}const n=await super.deserialize(t,e,s);return n.#i=t.fontSize,n.color=k.makeHexColor(...t.color),n.#t=gt.#d(t.value),n._initialData=i,t.comment&&n.setCommentData(t),n}serialize(t=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const e=O._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.color),s=Object.assign(super.serialize(t),{color:e,fontSize:this.#i,value:this.#u()});return this.addComment(s),t?(s.isCopy=!0,s):this.annotationElementId&&!this.#p(s)?null:(s.id=this.annotationElementId,s)}#p(t){const{value:e,fontSize:s,color:i,pageIndex:n}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||t.value!==e||t.fontSize!==s||t.color.some((r,a)=>r!==i[a])||t.pageIndex!==n}renderAnnotationElement(t){const e=super.renderAnnotationElement(t);if(!e)return null;const{style:s}=e;s.fontSize=`calc(${this.#i}px * var(--total-scale-factor))`,s.color=this.color,e.replaceChildren();for(const i of this.#t.split(`
55
55
  `)){const n=document.createElement("div");n.append(i?document.createTextNode(i):document.createElement("br")),e.append(n)}return t.updateEdited({rect:this.getPDFRect(),popup:this._uiManager.hasCommentManager()||this.hasEditedComment?this.comment:{text:this.#t}}),e}resetAnnotationElement(t){super.resetAnnotationElement(t),t.resetEdited()}}class L{static PRECISION=1e-4;toSVGPath(){X("Abstract method `toSVGPath` must be implemented.")}get box(){X("Abstract getter `box` must be implemented.")}serialize(t,e){X("Abstract method `serialize` must be implemented.")}static _rescale(t,e,s,i,n,r){r||=new Float32Array(t.length);for(let a=0,o=t.length;a<o;a+=2)r[a]=e+t[a]*i,r[a+1]=s+t[a+1]*n;return r}static _rescaleAndSwap(t,e,s,i,n,r){r||=new Float32Array(t.length);for(let a=0,o=t.length;a<o;a+=2)r[a]=e+t[a+1]*i,r[a+1]=s+t[a]*n;return r}static _translate(t,e,s,i){i||=new Float32Array(t.length);for(let n=0,r=t.length;n<r;n+=2)i[n]=e+t[n],i[n+1]=s+t[n+1];return i}static svgRound(t){return Math.round(t*1e4)}static _normalizePoint(t,e,s,i,n){switch(n){case 90:return[1-e/s,t/i];case 180:return[1-t/s,1-e/i];case 270:return[e/s,1-t/i];default:return[t/s,e/i]}}static createBezierPoints(t,e,s,i,n,r){return[(t+5*s)/6,(e+5*i)/6,(5*s+n)/6,(5*i+r)/6,(s+n)/2,(i+r)/2]}}class ye{#t;#e=[];#s;#i;#n=[];#a=new Float32Array(18);#r;#o;#h;#l;#u;#d;#p=[];static#m=8;static#g=2;static#c=ye.#m+ye.#g;constructor({x:t,y:e},s,i,n,r,a=0){this.#t=s,this.#d=n*i,this.#i=r,this.#a.set([NaN,NaN,NaN,NaN,t,e],6),this.#s=a,this.#l=ye.#m*i,this.#h=ye.#c*i,this.#u=i,this.#p.push(t,e)}isEmpty(){return isNaN(this.#a[8])}#f(){const t=this.#a.subarray(4,6),e=this.#a.subarray(16,18),[s,i,n,r]=this.#t;return[(this.#r+(t[0]-e[0])/2-s)/n,(this.#o+(t[1]-e[1])/2-i)/r,(this.#r+(e[0]-t[0])/2-s)/n,(this.#o+(e[1]-t[1])/2-i)/r]}add({x:t,y:e}){this.#r=t,this.#o=e;const[s,i,n,r]=this.#t;let[a,o,l,c]=this.#a.subarray(8,12);const h=t-l,d=e-c,f=Math.hypot(h,d);if(f<this.#h)return!1;const p=f-this.#l,g=p/f,m=g*h,b=g*d;let y=a,A=o;a=l,o=c,l+=m,c+=b,this.#p?.push(t,e);const w=-b/p,x=m/p,S=w*this.#d,E=x*this.#d;return this.#a.set(this.#a.subarray(2,8),0),this.#a.set([l+S,c+E],4),this.#a.set(this.#a.subarray(14,18),12),this.#a.set([l-S,c-E],16),isNaN(this.#a[6])?(this.#n.length===0&&(this.#a.set([a+S,o+E],2),this.#n.push(NaN,NaN,NaN,NaN,(a+S-s)/n,(o+E-i)/r),this.#a.set([a-S,o-E],14),this.#e.push(NaN,NaN,NaN,NaN,(a-S-s)/n,(o-E-i)/r)),this.#a.set([y,A,a,o,l,c],6),!this.isEmpty()):(this.#a.set([y,A,a,o,l,c],6),Math.abs(Math.atan2(A-o,y-a)-Math.atan2(b,m))<Math.PI/2?([a,o,l,c]=this.#a.subarray(2,6),this.#n.push(NaN,NaN,NaN,NaN,((a+l)/2-s)/n,((o+c)/2-i)/r),[a,o,y,A]=this.#a.subarray(14,18),this.#e.push(NaN,NaN,NaN,NaN,((y+a)/2-s)/n,((A+o)/2-i)/r),!0):([y,A,a,o,l,c]=this.#a.subarray(0,6),this.#n.push(((y+5*a)/6-s)/n,((A+5*o)/6-i)/r,((5*a+l)/6-s)/n,((5*o+c)/6-i)/r,((a+l)/2-s)/n,((o+c)/2-i)/r),[l,c,a,o,y,A]=this.#a.subarray(12,18),this.#e.push(((y+5*a)/6-s)/n,((A+5*o)/6-i)/r,((5*a+l)/6-s)/n,((5*o+c)/6-i)/r,((a+l)/2-s)/n,((o+c)/2-i)/r),!0))}toSVGPath(){if(this.isEmpty())return"";const t=this.#n,e=this.#e;if(isNaN(this.#a[6])&&!this.isEmpty())return this.#y();const s=[];s.push(`M${t[4]} ${t[5]}`);for(let i=6;i<t.length;i+=6)isNaN(t[i])?s.push(`L${t[i+4]} ${t[i+5]}`):s.push(`C${t[i]} ${t[i+1]} ${t[i+2]} ${t[i+3]} ${t[i+4]} ${t[i+5]}`);this.#b(s);for(let i=e.length-6;i>=6;i-=6)isNaN(e[i])?s.push(`L${e[i+4]} ${e[i+5]}`):s.push(`C${e[i]} ${e[i+1]} ${e[i+2]} ${e[i+3]} ${e[i+4]} ${e[i+5]}`);return this.#A(s),s.join(" ")}#y(){const[t,e,s,i]=this.#t,[n,r,a,o]=this.#f();return`M${(this.#a[2]-t)/s} ${(this.#a[3]-e)/i} L${(this.#a[4]-t)/s} ${(this.#a[5]-e)/i} L${n} ${r} L${a} ${o} L${(this.#a[16]-t)/s} ${(this.#a[17]-e)/i} L${(this.#a[14]-t)/s} ${(this.#a[15]-e)/i} Z`}#A(t){const e=this.#e;t.push(`L${e[4]} ${e[5]} Z`)}#b(t){const[e,s,i,n]=this.#t,r=this.#a.subarray(4,6),a=this.#a.subarray(16,18),[o,l,c,h]=this.#f();t.push(`L${(r[0]-e)/i} ${(r[1]-s)/n} L${o} ${l} L${c} ${h} L${(a[0]-e)/i} ${(a[1]-s)/n}`)}newFreeDrawOutline(t,e,s,i,n,r){return new Xr(t,e,s,i,n,r)}getOutlines(){const t=this.#n,e=this.#e,s=this.#a,[i,n,r,a]=this.#t,o=new Float32Array((this.#p?.length??0)+2);for(let h=0,d=o.length-2;h<d;h+=2)o[h]=(this.#p[h]-i)/r,o[h+1]=(this.#p[h+1]-n)/a;if(o[o.length-2]=(this.#r-i)/r,o[o.length-1]=(this.#o-n)/a,isNaN(s[6])&&!this.isEmpty())return this.#S(o);const l=new Float32Array(this.#n.length+24+this.#e.length);let c=t.length;for(let h=0;h<c;h+=2){if(isNaN(t[h])){l[h]=l[h+1]=NaN;continue}l[h]=t[h],l[h+1]=t[h+1]}c=this.#v(l,c);for(let h=e.length-6;h>=6;h-=6)for(let d=0;d<6;d+=2){if(isNaN(e[h+d])){l[c]=l[c+1]=NaN,c+=2;continue}l[c]=e[h+d],l[c+1]=e[h+d+1],c+=2}return this.#C(l,c),this.newFreeDrawOutline(l,o,this.#t,this.#u,this.#s,this.#i)}#S(t){const e=this.#a,[s,i,n,r]=this.#t,[a,o,l,c]=this.#f(),h=new Float32Array(36);return h.set([NaN,NaN,NaN,NaN,(e[2]-s)/n,(e[3]-i)/r,NaN,NaN,NaN,NaN,(e[4]-s)/n,(e[5]-i)/r,NaN,NaN,NaN,NaN,a,o,NaN,NaN,NaN,NaN,l,c,NaN,NaN,NaN,NaN,(e[16]-s)/n,(e[17]-i)/r,NaN,NaN,NaN,NaN,(e[14]-s)/n,(e[15]-i)/r],0),this.newFreeDrawOutline(h,t,this.#t,this.#u,this.#s,this.#i)}#C(t,e){const s=this.#e;return t.set([NaN,NaN,NaN,NaN,s[4],s[5]],e),e+=6}#v(t,e){const s=this.#a.subarray(4,6),i=this.#a.subarray(16,18),[n,r,a,o]=this.#t,[l,c,h,d]=this.#f();return t.set([NaN,NaN,NaN,NaN,(s[0]-n)/a,(s[1]-r)/o,NaN,NaN,NaN,NaN,l,c,NaN,NaN,NaN,NaN,h,d,NaN,NaN,NaN,NaN,(i[0]-n)/a,(i[1]-r)/o],e),e+=24}}class Xr extends L{#t;#e=new Float32Array(4);#s;#i;#n;#a;#r;constructor(t,e,s,i,n,r){super(),this.#r=t,this.#n=e,this.#t=s,this.#a=i,this.#s=n,this.#i=r,this.firstPoint=[NaN,NaN],this.lastPoint=[NaN,NaN],this.#o(r);const[a,o,l,c]=this.#e;for(let h=0,d=t.length;h<d;h+=2)t[h]=(t[h]-a)/l,t[h+1]=(t[h+1]-o)/c;for(let h=0,d=e.length;h<d;h+=2)e[h]=(e[h]-a)/l,e[h+1]=(e[h+1]-o)/c}toSVGPath(){const t=[`M${this.#r[4]} ${this.#r[5]}`];for(let e=6,s=this.#r.length;e<s;e+=6){if(isNaN(this.#r[e])){t.push(`L${this.#r[e+4]} ${this.#r[e+5]}`);continue}t.push(`C${this.#r[e]} ${this.#r[e+1]} ${this.#r[e+2]} ${this.#r[e+3]} ${this.#r[e+4]} ${this.#r[e+5]}`)}return t.push("Z"),t.join(" ")}serialize([t,e,s,i],n){const r=s-t,a=i-e;let o,l;switch(n){case 0:o=L._rescale(this.#r,t,i,r,-a),l=L._rescale(this.#n,t,i,r,-a);break;case 90:o=L._rescaleAndSwap(this.#r,t,e,r,a),l=L._rescaleAndSwap(this.#n,t,e,r,a);break;case 180:o=L._rescale(this.#r,s,e,-r,a),l=L._rescale(this.#n,s,e,-r,a);break;case 270:o=L._rescaleAndSwap(this.#r,s,i,-r,-a),l=L._rescaleAndSwap(this.#n,s,i,-r,-a);break}return{outline:Array.from(o),points:[Array.from(l)]}}#o(t){const e=this.#r;let s=e[4],i=e[5];const n=[s,i,s,i];let r=s,a=i,o=s,l=i;const c=t?Math.max:Math.min,h=new Float32Array(4);for(let f=6,p=e.length;f<p;f+=6){const g=e[f+4],m=e[f+5];isNaN(e[f])?(k.pointBoundingBox(g,m,n),a>m?(r=g,a=m):a===m&&(r=c(r,g)),l<m?(o=g,l=m):l===m&&(o=c(o,g))):(h.set(se,0),k.bezierBoundingBox(s,i,...e.slice(f,f+6),h),k.rectBoundingBox(...h,n),a>h[1]?(r=h[0],a=h[1]):a===h[1]&&(r=c(r,h[0])),l<h[3]?(o=h[2],l=h[3]):l===h[3]&&(o=c(o,h[2]))),s=g,i=m}const d=this.#e;d[0]=n[0]-this.#s,d[1]=n[1]-this.#s,d[2]=n[2]-n[0]+2*this.#s,d[3]=n[3]-n[1]+2*this.#s,this.firstPoint=[r,a],this.lastPoint=[o,l]}get box(){return this.#e}newOutliner(t,e,s,i,n,r=0){return new ye(t,e,s,i,n,r)}getNewOutline(t,e){const[s,i,n,r]=this.#e,[a,o,l,c]=this.#t,h=n*l,d=r*c,f=s*l+a,p=i*c+o,g=this.newOutliner({x:this.#n[0]*h+f,y:this.#n[1]*d+p},this.#t,this.#a,t,this.#i,e??this.#s);for(let m=2;m<this.#n.length;m+=2)g.add({x:this.#n[m]*h+f,y:this.#n[m+1]*d+p});return g.getOutlines()}}class zi{#t;#e;#s;#i=[];#n=[];constructor(t,e=0,s=0,i=!0){const n=se.slice(),r=10**-4;for(const{x:g,y:m,width:b,height:y}of t){const A=Math.floor((g-e)/r)*r,w=Math.ceil((g+b+e)/r)*r,x=Math.floor((m-e)/r)*r,S=Math.ceil((m+y+e)/r)*r,E=[A,x,S,!0],_=[w,x,S,!1];this.#i.push(E,_),k.rectBoundingBox(A,x,w,S,n)}const a=n[2]-n[0]+2*s,o=n[3]-n[1]+2*s,l=n[0]-s,c=n[1]-s;let h=i?-1/0:1/0,d=1/0;const f=this.#i.at(i?-1:-2),p=[f[0],f[2]];for(const g of this.#i){const[m,b,y,A]=g;!A&&i?b<d?(d=b,h=m):b===d&&(h=Math.max(h,m)):A&&!i&&(b<d?(d=b,h=m):b===d&&(h=Math.min(h,m))),g[0]=(m-l)/a,g[1]=(b-c)/o,g[2]=(y-c)/o}this.#t=new Float32Array([l,c,a,o]),this.#e=[h,d],this.#s=p}getOutlines(){this.#i.sort((e,s)=>e[0]-s[0]||e[1]-s[1]||e[2]-s[2]);const t=[];for(const e of this.#i)e[3]?(t.push(...this.#l(e)),this.#o(e)):(this.#h(e),t.push(...this.#l(e)));return this.#a(t)}#a(t){const e=[],s=new Set;for(const r of t){const[a,o,l]=r;e.push([a,o,r],[a,l,r])}e.sort((r,a)=>r[1]-a[1]||r[0]-a[0]);for(let r=0,a=e.length;r<a;r+=2){const o=e[r][2],l=e[r+1][2];o.push(l),l.push(o),s.add(o),s.add(l)}const i=[];let n;for(;s.size>0;){const r=s.values().next().value;let[a,o,l,c,h]=r;s.delete(r);let d=a,f=o;for(n=[a,l],i.push(n);;){let p;if(s.has(c))p=c;else if(s.has(h))p=h;else break;s.delete(p),[a,o,l,c,h]=p,d!==a&&(n.push(d,f,a,f===o?o:l),d=a),f=f===o?l:o}n.push(d,f)}return new Oc(i,this.#t,this.#e,this.#s)}#r(t){const e=this.#n;let s=0,i=e.length-1;for(;s<=i;){const n=s+i>>1,r=e[n][0];if(r===t)return n;r<t?s=n+1:i=n-1}return i+1}#o([,t,e]){const s=this.#r(t);this.#n.splice(s,0,[t,e])}#h([,t,e]){const s=this.#r(t);for(let i=s;i<this.#n.length;i++){const[n,r]=this.#n[i];if(n!==t)break;if(n===t&&r===e){this.#n.splice(i,1);return}}for(let i=s-1;i>=0;i--){const[n,r]=this.#n[i];if(n!==t)break;if(n===t&&r===e){this.#n.splice(i,1);return}}}#l(t){const[e,s,i]=t,n=[[e,s,i]],r=this.#r(i);for(let a=0;a<r;a++){const[o,l]=this.#n[a];for(let c=0,h=n.length;c<h;c++){const[,d,f]=n[c];if(!(l<=d||f<=o)){if(d>=o){if(f>l)n[c][1]=l;else{if(h===1)return[];n.splice(c,1),c--,h--}continue}n[c][2]=o,f>l&&n.push([e,l,f])}}}return n}}class Oc extends L{#t;#e;constructor(t,e,s,i){super(),this.#e=t,this.#t=e,this.firstPoint=s,this.lastPoint=i}toSVGPath(){const t=[];for(const e of this.#e){let[s,i]=e;t.push(`M${s} ${i}`);for(let n=2;n<e.length;n+=2){const r=e[n],a=e[n+1];r===s?(t.push(`V${a}`),i=a):a===i&&(t.push(`H${r}`),s=r)}t.push("Z")}return t.join(" ")}serialize([t,e,s,i],n){const r=[],a=s-t,o=i-e;for(const l of this.#e){const c=new Array(l.length);for(let h=0;h<l.length;h+=2)c[h]=t+l[h]*a,c[h+1]=i-l[h+1]*o;r.push(c)}return r}get box(){return this.#t}}class Vi extends ye{newFreeDrawOutline(t,e,s,i,n,r){return new Rc(t,e,s,i,n,r)}}class Rc extends Xr{newOutliner(t,e,s,i,n,r=0){return new Vi(t,e,s,i,n,r)}}class dt extends O{#t=null;#e=0;#s;#i=null;#n=null;#a=null;#r=null;#o=0;#h=null;#l=null;#u=null;#d=!1;#p=null;#m=null;#g=null;#c="";#f;#y="";static _defaultColor=null;static _defaultOpacity=1;static _defaultThickness=12;static _type="highlight";static _editorType=$.HIGHLIGHT;static _freeHighlightId=-1;static _freeHighlight=null;static _freeHighlightClipId="";static get _keyboardManager(){const t=dt.prototype;return G(this,"_keyboardManager",new Pt([[["ArrowLeft"],t._moveCaret,{args:[0]}],[["ArrowRight"],t._moveCaret,{args:[1]}],[["ArrowUp"],t._moveCaret,{args:[2]}],[["ArrowDown"],t._moveCaret,{args:[3]}]]))}constructor(t){super({...t,name:"highlightEditor"}),this.color=t.color||dt._defaultColor,this.#f=t.thickness||dt._defaultThickness,this.opacity=t.opacity||dt._defaultOpacity,this.#s=t.boxes||null,this.#y=t.methodOfCreation||"",this.#c=t.text||"",this._isDraggable=!1,this.defaultL10nId="pdfjs-editor-highlight-editor",t.highlightId>-1?(this.#d=!0,this.#b(t),this.#w()):this.#s&&(this.#t=t.anchorNode,this.#e=t.anchorOffset,this.#r=t.focusNode,this.#o=t.focusOffset,this.#A(),this.#w(),this.rotate(this.rotation)),this.annotationElementId||this._uiManager.a11yAlert(O._l10nAlert.highlight)}get telemetryInitialData(){return{action:"added",type:this.#d?"free_highlight":"highlight",color:this._uiManager.getNonHCMColorName(this.color),thickness:this.#f,methodOfCreation:this.#y}}get telemetryFinalData(){return{type:"highlight",color:this._uiManager.getNonHCMColorName(this.color)}}static computeTelemetryFinalData(t){return{numberOfColors:t.get("color").size}}#A(){const t=new zi(this.#s,.001);this.#l=t.getOutlines(),[this.x,this.y,this.width,this.height]=this.#l.box;const e=new zi(this.#s,.0025,.001,this._uiManager.direction==="ltr");this.#a=e.getOutlines();const{firstPoint:s}=this.#l;this.#p=[(s[0]-this.x)/this.width,(s[1]-this.y)/this.height];const{lastPoint:i}=this.#a;this.#m=[(i[0]-this.x)/this.width,(i[1]-this.y)/this.height]}#b({highlightOutlines:t,highlightId:e,clipPathId:s}){this.#l=t;const i=1.5;if(this.#a=t.getNewOutline(this.#f/2+i,.0025),e>=0)this.#u=e,this.#i=s,this.parent.drawLayer.finalizeDraw(e,{bbox:t.box,path:{d:t.toSVGPath()}}),this.#g=this.parent.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:!0},bbox:this.#a.box,path:{d:this.#a.toSVGPath()}},!0);else if(this.parent){const h=this.parent.viewport.rotation;this.parent.drawLayer.updateProperties(this.#u,{bbox:dt.#T(this.#l.box,(h-this.rotation+360)%360),path:{d:t.toSVGPath()}}),this.parent.drawLayer.updateProperties(this.#g,{bbox:dt.#T(this.#a.box,h),path:{d:this.#a.toSVGPath()}})}const[n,r,a,o]=t.box;switch(this.rotation){case 0:this.x=n,this.y=r,this.width=a,this.height=o;break;case 90:{const[h,d]=this.parentDimensions;this.x=r,this.y=1-n,this.width=a*d/h,this.height=o*h/d;break}case 180:this.x=1-n,this.y=1-r,this.width=a,this.height=o;break;case 270:{const[h,d]=this.parentDimensions;this.x=1-r,this.y=n,this.width=a*d/h,this.height=o*h/d;break}}const{firstPoint:l}=t;this.#p=[(l[0]-n)/a,(l[1]-r)/o];const{lastPoint:c}=this.#a;this.#m=[(c[0]-n)/a,(c[1]-r)/o]}static initialize(t,e){O.initialize(t,e),dt._defaultColor||=e.highlightColors?.values().next().value||"#fff066"}static updateDefaultParams(t,e){switch(t){case W.HIGHLIGHT_COLOR:dt._defaultColor=e;break;case W.HIGHLIGHT_THICKNESS:dt._defaultThickness=e;break}}translateInPage(t,e){}get toolbarPosition(){return this.#m}get commentButtonPosition(){return this.#p}updateParams(t,e){switch(t){case W.HIGHLIGHT_COLOR:this.#S(e);break;case W.HIGHLIGHT_THICKNESS:this.#C(e);break}}static get defaultPropertiesToUpdate(){return[[W.HIGHLIGHT_COLOR,dt._defaultColor],[W.HIGHLIGHT_THICKNESS,dt._defaultThickness]]}get propertiesToUpdate(){return[[W.HIGHLIGHT_COLOR,this.color||dt._defaultColor],[W.HIGHLIGHT_THICKNESS,this.#f||dt._defaultThickness],[W.HIGHLIGHT_FREE,this.#d]]}onUpdatedColor(){this.parent?.drawLayer.updateProperties(this.#u,{root:{fill:this.color,"fill-opacity":this.opacity}}),this.#n?.updateColor(this.color),super.onUpdatedColor()}#S(t){const e=(n,r)=>{this.color=n,this.opacity=r,this.onUpdatedColor()},s=this.color,i=this.opacity;this.addCommands({cmd:e.bind(this,t,dt._defaultOpacity),undo:e.bind(this,s,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:W.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"color_changed",color:this._uiManager.getNonHCMColorName(t)},!0)}#C(t){const e=this.#f,s=i=>{this.#f=i,this.#v(i)};this.addCommands({cmd:s.bind(this,t),undo:s.bind(this,e),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:W.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"thickness_changed",thickness:t},!0)}get toolbarButtons(){return this._uiManager.highlightColors?[["colorPicker",this.#n=new Nt({editor:this})]]:super.toolbarButtons}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}fixAndSetPosition(){return super.fixAndSetPosition(this.#k())}getBaseTranslation(){return[0,0]}getRect(t,e){return super.getRect(t,e,this.#k())}onceAdded(t){this.annotationElementId||this.parent.addUndoableEditor(this),t&&this.div.focus()}remove(){this.#E(),this._reportTelemetry({action:"deleted"}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#w(),this.isAttachedToDOM||this.parent.add(this)))}setParent(t){let e=!1;this.parent&&!t?this.#E():t&&(this.#w(t),e=!this.parent&&this.div?.classList.contains("selectedEditor")),super.setParent(t),this.show(this._isVisible),e&&this.select()}#v(t){this.#d&&(this.#b({highlightOutlines:this.#l.getNewOutline(t/2)}),this.fixAndSetPosition(),this.setDims())}#E(){this.#u===null||!this.parent||(this.parent.drawLayer.remove(this.#u),this.#u=null,this.parent.drawLayer.remove(this.#g),this.#g=null)}#w(t=this.parent){this.#u===null&&({id:this.#u,clipPathId:this.#i}=t.drawLayer.draw({bbox:this.#l.box,root:{viewBox:"0 0 1 1",fill:this.color,"fill-opacity":this.opacity},rootClass:{highlight:!0,free:this.#d},path:{d:this.#l.toSVGPath()}},!1,!0),this.#g=t.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:this.#d},bbox:this.#a.box,path:{d:this.#a.toSVGPath()}},this.#d),this.#h&&(this.#h.style.clipPath=this.#i))}static#T([t,e,s,i],n){switch(n){case 90:return[1-e-i,t,i,s];case 180:return[1-t-s,1-e-i,s,i];case 270:return[e,1-t-s,i,s]}return[t,e,s,i]}rotate(t){const{drawLayer:e}=this.parent;let s;this.#d?(t=(t-this.rotation+360)%360,s=dt.#T(this.#l.box,t)):s=dt.#T([this.x,this.y,this.width,this.height],t),e.updateProperties(this.#u,{bbox:s,root:{"data-main-rotation":t}}),e.updateProperties(this.#g,{bbox:dt.#T(this.#a.box,t),root:{"data-main-rotation":t}})}render(){if(this.div)return this.div;const t=super.render();this.#c&&(t.setAttribute("aria-label",this.#c),t.setAttribute("role","mark")),this.#d?t.classList.add("free"):this.div.addEventListener("keydown",this.#P.bind(this),{signal:this._uiManager._signal});const e=this.#h=document.createElement("div");return t.append(e),e.setAttribute("aria-hidden","true"),e.className="internal",e.style.clipPath=this.#i,this.setDims(),Cr(this,this.#h,["pointerover","pointerleave"]),this.enableEditing(),t}pointerover(){this.isSelected||this.parent?.drawLayer.updateProperties(this.#g,{rootClass:{hovered:!0}})}pointerleave(){this.isSelected||this.parent?.drawLayer.updateProperties(this.#g,{rootClass:{hovered:!1}})}#P(t){dt._keyboardManager.exec(this,t)}_moveCaret(t){switch(this.parent.unselect(this),t){case 0:case 2:this.#M(!0);break;case 1:case 3:this.#M(!1);break}}#M(t){if(!this.#t)return;const e=window.getSelection();t?e.setPosition(this.#t,this.#e):e.setPosition(this.#r,this.#o)}select(){super.select(),this.#g&&this.parent?.drawLayer.updateProperties(this.#g,{rootClass:{hovered:!1,selected:!0}})}unselect(){super.unselect(),this.#g&&(this.parent?.drawLayer.updateProperties(this.#g,{rootClass:{selected:!1}}),this.#d||this.#M(!1))}get _mustFixPosition(){return!this.#d}show(t=this._isVisible){super.show(t),this.parent&&(this.parent.drawLayer.updateProperties(this.#u,{rootClass:{hidden:!t}}),this.parent.drawLayer.updateProperties(this.#g,{rootClass:{hidden:!t}}))}#k(){return this.#d?this.rotation:0}#L(){if(this.#d)return null;const[t,e]=this.pageDimensions,[s,i]=this.pageTranslation,n=this.#s,r=new Float32Array(n.length*8);let a=0;for(const{x:o,y:l,width:c,height:h}of n){const d=o*t+s,f=(1-l)*e+i;r[a]=r[a+4]=d,r[a+1]=r[a+3]=f,r[a+2]=r[a+6]=d+c*t,r[a+5]=r[a+7]=f-h*e,a+=8}return r}#N(t){return this.#l.serialize(t,this.#k())}static startHighlighting(t,e,{target:s,x:i,y:n}){const{x:r,y:a,width:o,height:l}=s.getBoundingClientRect(),c=new AbortController,h=t.combinedSignal(c),d=f=>{c.abort(),this.#F(t,f)};window.addEventListener("blur",d,{signal:h}),window.addEventListener("pointerup",d,{signal:h}),window.addEventListener("pointerdown",ot,{capture:!0,passive:!1,signal:h}),window.addEventListener("contextmenu",Ft,{signal:h}),s.addEventListener("pointermove",this.#D.bind(this,t),{signal:h}),this._freeHighlight=new Vi({x:i,y:n},[r,a,o,l],t.scale,this._defaultThickness/2,e,.001),{id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=t.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:"0 0 1 1",fill:this._defaultColor,"fill-opacity":this._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:this._freeHighlight.toSVGPath()}},!0,!0)}static#D(t,e){this._freeHighlight.add(e)&&t.drawLayer.updateProperties(this._freeHighlightId,{path:{d:this._freeHighlight.toSVGPath()}})}static#F(t,e){this._freeHighlight.isEmpty()?t.drawLayer.remove(this._freeHighlightId):t.createAndAddNewEditor(e,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:"main_toolbar"}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=""}static async deserialize(t,e,s){let i=null;if(t instanceof zr){const{data:{quadPoints:g,rect:m,rotation:b,id:y,color:A,opacity:w,popupRef:x,richText:S,contentsObj:E,creationDate:_,modificationDate:P},parent:{page:{pageNumber:I}}}=t;i=t={annotationType:$.HIGHLIGHT,color:Array.from(A),opacity:w,quadPoints:g,boxes:null,pageIndex:I-1,rect:m.slice(0),rotation:b,annotationElementId:y,id:y,deleted:!1,popupRef:x,richText:S,comment:E?.str||null,creationDate:_,modificationDate:P}}else if(t instanceof on){const{data:{inkLists:g,rect:m,rotation:b,id:y,color:A,borderStyle:{rawWidth:w},popupRef:x,richText:S,contentsObj:E,creationDate:_,modificationDate:P},parent:{page:{pageNumber:I}}}=t;i=t={annotationType:$.HIGHLIGHT,color:Array.from(A),thickness:w,inkLists:g,boxes:null,pageIndex:I-1,rect:m.slice(0),rotation:b,annotationElementId:y,id:y,deleted:!1,popupRef:x,richText:S,comment:E?.str||null,creationDate:_,modificationDate:P}}const{color:n,quadPoints:r,inkLists:a,outlines:o,opacity:l}=t,c=await super.deserialize(t,e,s);c.color=k.makeHexColor(...n),c.opacity=l||1,a&&(c.#f=t.thickness),c._initialData=i,t.comment&&c.setCommentData(t);const[h,d]=c.pageDimensions,[f,p]=c.pageTranslation;if(r){const g=c.#s=[];for(let m=0;m<r.length;m+=8)g.push({x:(r[m]-f)/h,y:1-(r[m+1]-p)/d,width:(r[m+2]-r[m])/h,height:(r[m+1]-r[m+5])/d});c.#A(),c.#w(),c.rotate(c.rotation)}else if(a||o){c.#d=!0;const g=(a||o.points)[0],m={x:g[0]-f,y:d-(g[1]-p)},b=new Vi(m,[0,0,h,d],1,c.#f/2,!0,.001);for(let w=0,x=g.length;w<x;w+=2)m.x=g[w]-f,m.y=d-(g[w+1]-p),b.add(m);const{id:y,clipPathId:A}=e.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:"0 0 1 1",fill:c.color,"fill-opacity":c._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:b.toSVGPath()}},!0,!0);c.#b({highlightOutlines:b.getOutlines(),highlightId:y,clipPathId:A}),c.#w(),c.rotate(c.parentRotation)}return c}serialize(t=!1){if(this.isEmpty()||t)return null;if(this.deleted)return this.serializeDeleted();const e=O._colorManager.convert(this._uiManager.getNonHCMColor(this.color)),s=super.serialize(t);return Object.assign(s,{color:e,opacity:this.opacity,thickness:this.#f,quadPoints:this.#L(),outlines:this.#N(s.rect)}),this.addComment(s),this.annotationElementId&&!this.#R(s)?null:(s.id=this.annotationElementId,s)}#R(t){const{color:e}=this._initialData;return this.hasEditedComment||t.color.some((s,i)=>s!==e[i])}renderAnnotationElement(t){return this.deleted?(t.hide(),null):(t.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}static canCreateNewEmptyEditor(){return!1}}class Yr{#t=Object.create(null);updateProperty(t,e){this[t]=e,this.updateSVGProperty(t,e)}updateProperties(t){if(t)for(const[e,s]of Object.entries(t))e.startsWith("_")||this.updateProperty(e,s)}updateSVGProperty(t,e){this.#t[t]=e}toSVGProperties(){const t=this.#t;return this.#t=Object.create(null),{root:t}}reset(){this.#t=Object.create(null)}updateAll(t=this){this.updateProperties(t)}clone(){X("Not implemented")}}class Y extends O{#t=null;#e;_colorPicker=null;_drawId=null;static _currentDrawId=-1;static _currentParent=null;static#s=null;static#i=null;static#n=null;static _INNER_MARGIN=3;constructor(t){super(t),this.#e=t.mustBeCommitted||!1,this._addOutlines(t)}onUpdatedColor(){this._colorPicker?.update(this.color),super.onUpdatedColor()}onUpdatedOpacity(){this._colorPicker?.updateOpacity?.(this.opacity)}_addOutlines(t){t.drawOutlines&&(this.#a(t),this.#h())}#a({drawOutlines:t,drawId:e,drawingOptions:s}){this.#t=t,this._drawingOptions||=s,this.annotationElementId||this._uiManager.a11yAlert(O._l10nAlert[this.editorType]),e>=0?(this._drawId=e,this.parent.drawLayer.finalizeDraw(e,t.defaultProperties)):this._drawId=this.#r(t,this.parent),this.#d(t.box)}#r(t,e){const{id:s}=e.drawLayer.draw(Y._mergeSVGProperties(this._drawingOptions.toSVGProperties(),t.defaultSVGProperties),!1,!1);return s}static _mergeSVGProperties(t,e){const s=new Set(Object.keys(t));for(const[i,n]of Object.entries(e))s.has(i)?Object.assign(t[i],n):t[i]=n;return t}static getDefaultDrawingOptions(t){X("Not implemented")}static get typesMap(){X("Not implemented")}static get isDrawer(){return!0}static get supportMultipleDrawings(){return!1}static updateDefaultParams(t,e){const s=this.typesMap.get(t);s&&this._defaultDrawingOptions.updateProperty(s,e),this._currentParent&&(Y.#s.updateProperty(s,e),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(t,e){const s=this.constructor.typesMap.get(t);s&&this._updateProperty(t,s,e)}static get defaultPropertiesToUpdate(){const t=[],e=this._defaultDrawingOptions;for(const[s,i]of this.typesMap)t.push([s,e[i]]);return t}get propertiesToUpdate(){const t=[],{_drawingOptions:e}=this;for(const[s,i]of this.constructor.typesMap)t.push([s,e[i]]);return t}_updateProperty(t,e,s){const i=this._drawingOptions,n=i[e],r=a=>{i.updateProperty(e,a);const o=this.#t.updateProperty(e,a);o&&this.#d(o),this.parent?.drawLayer.updateProperties(this._drawId,i.toSVGProperties()),t===this.colorType?this.onUpdatedColor():t===this.opacityType&&this.onUpdatedOpacity()};this.addCommands({cmd:r.bind(this,s),undo:r.bind(this,n),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:t,overwriteIfSameType:!0,keepUndo:!0})}_updateColorAndOpacity(t,e){const s=this.constructor.typesMap.get(this.colorType),i=this.constructor.typesMap.get(this.opacityType),n=this._drawingOptions,r=n[s],a=n[i],o=(l,c)=>{n.updateProperty(s,l),n.updateProperty(i,c),this.#t.updateProperty(s,l),this.#t.updateProperty(i,c),this.parent?.drawLayer.updateProperties(this._drawId,n.toSVGProperties()),this.onUpdatedColor(),this.onUpdatedOpacity()};this.addCommands({cmd:o.bind(this,t,e),undo:o.bind(this,r,a),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:W.INK_COLOR_AND_OPACITY,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){this.parent?.drawLayer.updateProperties(this._drawId,Y._mergeSVGProperties(this.#t.getPathResizingSVGProperties(this.#u()),{bbox:this.#p()}))}_onResized(){this.parent?.drawLayer.updateProperties(this._drawId,Y._mergeSVGProperties(this.#t.getPathResizedSVGProperties(this.#u()),{bbox:this.#p()}))}_onTranslating(t,e){this.parent?.drawLayer.updateProperties(this._drawId,{bbox:this.#p()})}_onTranslated(){this.parent?.drawLayer.updateProperties(this._drawId,Y._mergeSVGProperties(this.#t.getPathTranslatedSVGProperties(this.#u(),this.parentDimensions),{bbox:this.#p()}))}_onStartDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}commit(){super.commit(),this.disableEditMode(),this.disableEditing()}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(t){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,this.#e&&(this.#e=!1,this.commit(),this.parent.setSelected(this),t&&this.isOnScreen&&this.div.focus())}remove(){this.#o(),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#h(),this.#d(this.#t.box),this.isAttachedToDOM||this.parent.add(this)))}setParent(t){let e=!1;this.parent&&!t?(this._uiManager.removeShouldRescale(this),this.#o()):t&&(this._uiManager.addShouldRescale(this),this.#h(t),e=!this.parent&&this.div?.classList.contains("selectedEditor")),super.setParent(t),e&&this.select()}#o(){this._drawId===null||!this.parent||(this.parent.drawLayer.remove(this._drawId),this._drawId=null,this._drawingOptions.reset())}#h(t=this.parent){if(!(this._drawId!==null&&this.parent===t)){if(this._drawId!==null){this.parent.drawLayer.updateParent(this._drawId,t.drawLayer);return}this._drawingOptions.updateAll(),this._drawId=this.#r(this.#t,t)}}#l([t,e,s,i]){const{parentDimensions:[n,r],rotation:a}=this;switch(a){case 90:return[e,1-t,s*(r/n),i*(n/r)];case 180:return[1-t,1-e,s,i];case 270:return[1-e,t,s*(r/n),i*(n/r)];default:return[t,e,s,i]}}#u(){const{x:t,y:e,width:s,height:i,parentDimensions:[n,r],rotation:a}=this;switch(a){case 90:return[1-e,t,s*(n/r),i*(r/n)];case 180:return[1-t,1-e,s,i];case 270:return[e,1-t,s*(n/r),i*(r/n)];default:return[t,e,s,i]}}#d(t){[this.x,this.y,this.width,this.height]=this.#l(t),this.div&&(this.fixAndSetPosition(),this.setDims()),this._onResized()}#p(){const{x:t,y:e,width:s,height:i,rotation:n,parentRotation:r,parentDimensions:[a,o]}=this;switch((n*4+r)/90){case 1:return[1-e-i,t,i,s];case 2:return[1-t-s,1-e-i,s,i];case 3:return[e,1-t-s,i,s];case 4:return[t,e-s*(a/o),i*(o/a),s*(a/o)];case 5:return[1-e,t,s*(a/o),i*(o/a)];case 6:return[1-t-i*(o/a),1-e,i*(o/a),s*(a/o)];case 7:return[e-s*(a/o),1-t-i*(o/a),s*(a/o),i*(o/a)];case 8:return[t-s,e-i,s,i];case 9:return[1-e,t-s,i,s];case 10:return[1-t,1-e,s,i];case 11:return[e-i,1-t,i,s];case 12:return[t-i*(o/a),e,i*(o/a),s*(a/o)];case 13:return[1-e-s*(a/o),t-i*(o/a),s*(a/o),i*(o/a)];case 14:return[1-t,1-e-s*(a/o),i*(o/a),s*(a/o)];case 15:return[e,1-t,s*(a/o),i*(o/a)];default:return[t,e,s,i]}}rotate(){this.parent&&this.parent.drawLayer.updateProperties(this._drawId,Y._mergeSVGProperties({bbox:this.#p()},this.#t.updateRotation((this.parentRotation-this.rotation+360)%360)))}onScaleChanging(){this.parent&&this.#d(this.#t.updateParentDimensions(this.parentDimensions,this.parent.scale))}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;let t,e;this._isCopy&&(t=this.x,e=this.y);const s=super.render();s.classList.add("draw");const i=document.createElement("div");return s.append(i),i.setAttribute("aria-hidden","true"),i.className="internal",this.setDims(),this._uiManager.addShouldRescale(this),this.disableEditing(),this._isCopy&&this._moveAfterPaste(t,e),s}static createDrawerInstance(t,e,s,i,n){X("Not implemented")}static startDrawing(t,e,s,i){const{target:n,offsetX:r,offsetY:a,pointerId:o,pointerType:l}=i;if(K.isInitializedAndDifferentPointerType(l))return;const{viewport:{rotation:c}}=t,{width:h,height:d}=n.getBoundingClientRect(),f=Y.#i=new AbortController,p=t.combinedSignal(f);if(K.setPointer(l,o),window.addEventListener("pointerup",g=>{K.isSamePointerIdOrRemove(g.pointerId)&&this._endDraw(g)},{signal:p}),window.addEventListener("pointercancel",g=>{K.isSamePointerIdOrRemove(g.pointerId)&&this._currentParent.endDrawingSession()},{signal:p}),window.addEventListener("pointerdown",g=>{K.isSamePointerType(g.pointerType)&&(K.initializeAndAddPointerId(g.pointerId),Y.#s.isCancellable()&&(Y.#s.removeLastElement(),Y.#s.isEmpty()?this._currentParent.endDrawingSession(!0):this._endDraw(null)))},{capture:!0,passive:!1,signal:p}),window.addEventListener("contextmenu",Ft,{signal:p}),n.addEventListener("pointermove",this._drawMove.bind(this),{signal:p}),n.addEventListener("touchmove",g=>{K.isSameTimeStamp(g.timeStamp)&&ot(g)},{signal:p}),t.toggleDrawing(),e._editorUndoBar?.hide(),Y.#s){t.drawLayer.updateProperties(this._currentDrawId,Y.#s.startNew(r,a,h,d,c));return}e.updateUIForDefaultProperties(this),Y.#s=this.createDrawerInstance(r,a,h,d,c),Y.#n=this.getDefaultDrawingOptions(),this._currentParent=t,{id:this._currentDrawId}=t.drawLayer.draw(this._mergeSVGProperties(Y.#n.toSVGProperties(),Y.#s.defaultSVGProperties),!0,!1)}static _drawMove(t){if(K.isSameTimeStamp(t.timeStamp),!Y.#s)return;const{offsetX:e,offsetY:s,pointerId:i}=t;if(K.isSamePointerId(i)){if(K.isUsingMultiplePointers()){this._endDraw(t);return}this._currentParent.drawLayer.updateProperties(this._currentDrawId,Y.#s.add(e,s)),K.setTimeStamp(t.timeStamp),ot(t)}}static _cleanup(t){t&&(this._currentDrawId=-1,this._currentParent=null,Y.#s=null,Y.#n=null,K.clearTimeStamp()),Y.#i&&(Y.#i.abort(),Y.#i=null,K.clearPointerIds())}static _endDraw(t){const e=this._currentParent;if(e){if(e.toggleDrawing(!0),this._cleanup(!1),t?.target===e.div&&e.drawLayer.updateProperties(this._currentDrawId,Y.#s.end(t.offsetX,t.offsetY)),this.supportMultipleDrawings){const s=Y.#s,i=this._currentDrawId,n=s.getLastElement();e.addCommands({cmd:()=>{e.drawLayer.updateProperties(i,s.setLastElement(n))},undo:()=>{e.drawLayer.updateProperties(i,s.removeLastElement())},mustExec:!1,type:W.DRAW_STEP});return}this.endDrawing(!1)}}static endDrawing(t){const e=this._currentParent;if(!e)return null;if(e.toggleDrawing(!0),e.cleanUndoStack(W.DRAW_STEP),!Y.#s.isEmpty()){const{pageDimensions:[s,i],scale:n}=e,r=e.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,drawOutlines:Y.#s.getOutlines(s*n,i*n,n,this._INNER_MARGIN),drawingOptions:Y.#n,mustBeCommitted:!t});return this._cleanup(!0),r}return e.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(t){}static deserializeDraw(t,e,s,i,n,r){X("Not implemented")}static async deserialize(t,e,s){const{rawDims:{pageWidth:i,pageHeight:n,pageX:r,pageY:a}}=e.viewport,o=this.deserializeDraw(r,a,i,n,this._INNER_MARGIN,t),l=await super.deserialize(t,e,s);return l.createDrawingOptions(t),l.#a({drawOutlines:o}),l.#h(),l.onScaleChanging(),l.rotate(),l}serializeDraw(t){const[e,s]=this.pageTranslation,[i,n]=this.pageDimensions;return this.#t.serialize([e,s,i,n],t)}renderAnnotationElement(t){return t.updateEdited({rect:this.getPDFRect()}),null}static canCreateNewEmptyEditor(){return!1}}class Bc{#t=new Float64Array(6);#e;#s;#i;#n;#a;#r="";#o=0;#h=new hs;#l;#u;constructor(t,e,s,i,n,r){this.#l=s,this.#u=i,this.#i=n,this.#n=r,[t,e]=this.#d(t,e);const a=this.#e=[NaN,NaN,NaN,NaN,t,e];this.#a=[t,e],this.#s=[{line:a,points:this.#a}],this.#t.set(a,0)}updateProperty(t,e){t==="stroke-width"&&(this.#n=e)}#d(t,e){return L._normalizePoint(t,e,this.#l,this.#u,this.#i)}isEmpty(){return!this.#s?.length}isCancellable(){return this.#a.length<=10}add(t,e){[t,e]=this.#d(t,e);const[s,i,n,r]=this.#t.subarray(2,6),a=t-n,o=e-r;return Math.hypot(this.#l*a,this.#u*o)<=2?null:(this.#a.push(t,e),isNaN(s)?(this.#t.set([n,r,t,e],2),this.#e.push(NaN,NaN,NaN,NaN,t,e),{path:{d:this.toSVGPath()}}):(isNaN(this.#t[0])&&this.#e.splice(6,6),this.#t.set([s,i,n,r,t,e],0),this.#e.push(...L.createBezierPoints(s,i,n,r,t,e)),{path:{d:this.toSVGPath()}}))}end(t,e){const s=this.add(t,e);return s||(this.#a.length===2?{path:{d:this.toSVGPath()}}:null)}startNew(t,e,s,i,n){this.#l=s,this.#u=i,this.#i=n,[t,e]=this.#d(t,e);const r=this.#e=[NaN,NaN,NaN,NaN,t,e];this.#a=[t,e];const a=this.#s.at(-1);return a&&(a.line=new Float32Array(a.line),a.points=new Float32Array(a.points)),this.#s.push({line:r,points:this.#a}),this.#t.set(r,0),this.#o=0,this.toSVGPath(),null}getLastElement(){return this.#s.at(-1)}setLastElement(t){return this.#s?(this.#s.push(t),this.#e=t.line,this.#a=t.points,this.#o=0,{path:{d:this.toSVGPath()}}):this.#h.setLastElement(t)}removeLastElement(){if(!this.#s)return this.#h.removeLastElement();this.#s.pop(),this.#r="";for(let t=0,e=this.#s.length;t<e;t++){const{line:s,points:i}=this.#s[t];this.#e=s,this.#a=i,this.#o=0,this.toSVGPath()}return{path:{d:this.#r}}}toSVGPath(){const t=L.svgRound(this.#e[4]),e=L.svgRound(this.#e[5]);if(this.#a.length===2)return this.#r=`${this.#r} M ${t} ${e} Z`,this.#r;if(this.#a.length<=6){const i=this.#r.lastIndexOf("M");this.#r=`${this.#r.slice(0,i)} M ${t} ${e}`,this.#o=6}if(this.#a.length===4){const i=L.svgRound(this.#e[10]),n=L.svgRound(this.#e[11]);return this.#r=`${this.#r} L ${i} ${n}`,this.#o=12,this.#r}const s=[];this.#o===0&&(s.push(`M ${t} ${e}`),this.#o=6);for(let i=this.#o,n=this.#e.length;i<n;i+=6){const[r,a,o,l,c,h]=this.#e.slice(i,i+6).map(L.svgRound);s.push(`C${r} ${a} ${o} ${l} ${c} ${h}`)}return this.#r+=s.join(" "),this.#o=this.#e.length,this.#r}getOutlines(t,e,s,i){const n=this.#s.at(-1);return n.line=new Float32Array(n.line),n.points=new Float32Array(n.points),this.#h.build(this.#s,t,e,s,this.#i,this.#n,i),this.#t=null,this.#e=null,this.#s=null,this.#r=null,this.#h}get defaultSVGProperties(){return{root:{viewBox:"0 0 10000 10000"},rootClass:{draw:!0},bbox:[0,0,1,1]}}}class hs extends L{#t;#e=0;#s;#i;#n;#a;#r;#o;#h;build(t,e,s,i,n,r,a){this.#n=e,this.#a=s,this.#r=i,this.#o=n,this.#h=r,this.#s=a??0,this.#i=t,this.#d()}get thickness(){return this.#h}setLastElement(t){return this.#i.push(t),{path:{d:this.toSVGPath()}}}removeLastElement(){return this.#i.pop(),{path:{d:this.toSVGPath()}}}toSVGPath(){const t=[];for(const{line:e}of this.#i){if(t.push(`M${L.svgRound(e[4])} ${L.svgRound(e[5])}`),e.length===6){t.push("Z");continue}if(e.length===12&&isNaN(e[6])){t.push(`L${L.svgRound(e[10])} ${L.svgRound(e[11])}`);continue}for(let s=6,i=e.length;s<i;s+=6){const[n,r,a,o,l,c]=e.subarray(s,s+6).map(L.svgRound);t.push(`C${n} ${r} ${a} ${o} ${l} ${c}`)}}return t.join("")}serialize([t,e,s,i],n){const r=[],a=[],[o,l,c,h]=this.#u();let d,f,p,g,m,b,y,A,w;switch(this.#o){case 0:w=L._rescale,d=t,f=e+i,p=s,g=-i,m=t+o*s,b=e+(1-l-h)*i,y=t+(o+c)*s,A=e+(1-l)*i;break;case 90:w=L._rescaleAndSwap,d=t,f=e,p=s,g=i,m=t+l*s,b=e+o*i,y=t+(l+h)*s,A=e+(o+c)*i;break;case 180:w=L._rescale,d=t+s,f=e,p=-s,g=i,m=t+(1-o-c)*s,b=e+l*i,y=t+(1-o)*s,A=e+(l+h)*i;break;case 270:w=L._rescaleAndSwap,d=t+s,f=e+i,p=-s,g=-i,m=t+(1-l-h)*s,b=e+(1-o-c)*i,y=t+(1-l)*s,A=e+(1-o)*i;break}for(const{line:x,points:S}of this.#i)r.push(w(x,d,f,p,g,n?new Array(x.length):null)),a.push(w(S,d,f,p,g,n?new Array(S.length):null));return{lines:r,points:a,rect:[m,b,y,A]}}static deserialize(t,e,s,i,n,{paths:{lines:r,points:a},rotation:o,thickness:l}){const c=[];let h,d,f,p,g;switch(o){case 0:g=L._rescale,h=-t/s,d=e/i+1,f=1/s,p=-1/i;break;case 90:g=L._rescaleAndSwap,h=-e/i,d=-t/s,f=1/i,p=1/s;break;case 180:g=L._rescale,h=t/s+1,d=-e/i,f=-1/s,p=1/i;break;case 270:g=L._rescaleAndSwap,h=e/i+1,d=t/s+1,f=-1/i,p=-1/s;break}if(!r){r=[];for(const b of a){const y=b.length;if(y===2){r.push(new Float32Array([NaN,NaN,NaN,NaN,b[0],b[1]]));continue}if(y===4){r.push(new Float32Array([NaN,NaN,NaN,NaN,b[0],b[1],NaN,NaN,NaN,NaN,b[2],b[3]]));continue}const A=new Float32Array(3*(y-2));r.push(A);let[w,x,S,E]=b.subarray(0,4);A.set([NaN,NaN,NaN,NaN,w,x],0);for(let _=4;_<y;_+=2){const P=b[_],I=b[_+1];A.set(L.createBezierPoints(w,x,S,E,P,I),(_-2)*3),[w,x,S,E]=[S,E,P,I]}}}for(let b=0,y=r.length;b<y;b++)c.push({line:g(r[b].map(A=>A??NaN),h,d,f,p),points:g(a[b].map(A=>A??NaN),h,d,f,p)});const m=new this.prototype.constructor;return m.build(c,s,i,1,o,l,n),m}#l(t=this.#h){const e=this.#s+t/2*this.#r;return this.#o%180===0?[e/this.#n,e/this.#a]:[e/this.#a,e/this.#n]}#u(){const[t,e,s,i]=this.#t,[n,r]=this.#l(0);return[t+n,e+r,s-2*n,i-2*r]}#d(){const t=this.#t=be.slice();for(const{line:i}of this.#i){if(i.length<=12){for(let a=4,o=i.length;a<o;a+=6)k.pointBoundingBox(i[a],i[a+1],t);continue}let n=i[4],r=i[5];for(let a=6,o=i.length;a<o;a+=6){const[l,c,h,d,f,p]=i.subarray(a,a+6);k.bezierBoundingBox(n,r,l,c,h,d,f,p,t),n=f,r=p}}const[e,s]=this.#l();t[0]=et(t[0]-e,0,1),t[1]=et(t[1]-s,0,1),t[2]=et(t[2]+e,0,1),t[3]=et(t[3]+s,0,1),t[2]-=t[0],t[3]-=t[1]}get box(){return this.#t}updateProperty(t,e){return t==="stroke-width"?this.#p(e):null}#p(t){const[e,s]=this.#l();this.#h=t;const[i,n]=this.#l(),[r,a]=[i-e,n-s],o=this.#t;return o[0]-=r,o[1]-=a,o[2]+=2*r,o[3]+=2*a,o}updateParentDimensions([t,e],s){const[i,n]=this.#l();this.#n=t,this.#a=e,this.#r=s;const[r,a]=this.#l(),o=r-i,l=a-n,c=this.#t;return c[0]-=o,c[1]-=l,c[2]+=2*o,c[3]+=2*l,c}updateRotation(t){return this.#e=t,{path:{transform:this.rotationTransform}}}get viewBox(){return this.#t.map(L.svgRound).join(" ")}get defaultProperties(){const[t,e]=this.#t;return{root:{viewBox:this.viewBox},path:{"transform-origin":`${L.svgRound(t)} ${L.svgRound(e)}`}}}get rotationTransform(){const[,,t,e]=this.#t;let s=0,i=0,n=0,r=0,a=0,o=0;switch(this.#e){case 90:i=e/t,n=-t/e,a=t;break;case 180:s=-1,r=-1,a=t,o=e;break;case 270:i=-e/t,n=t/e,o=e;break;default:return""}return`matrix(${s} ${i} ${n} ${r} ${L.svgRound(a)} ${L.svgRound(o)})`}getPathResizingSVGProperties([t,e,s,i]){const[n,r]=this.#l(),[a,o,l,c]=this.#t;if(Math.abs(l-n)<=L.PRECISION||Math.abs(c-r)<=L.PRECISION){const g=t+s/2-(a+l/2),m=e+i/2-(o+c/2);return{path:{"transform-origin":`${L.svgRound(t)} ${L.svgRound(e)}`,transform:`${this.rotationTransform} translate(${g} ${m})`}}}const h=(s-2*n)/(l-2*n),d=(i-2*r)/(c-2*r),f=l/s,p=c/i;return{path:{"transform-origin":`${L.svgRound(a)} ${L.svgRound(o)}`,transform:`${this.rotationTransform} scale(${f} ${p}) translate(${L.svgRound(n)} ${L.svgRound(r)}) scale(${h} ${d}) translate(${L.svgRound(-n)} ${L.svgRound(-r)})`}}}getPathResizedSVGProperties([t,e,s,i]){const[n,r]=this.#l(),a=this.#t,[o,l,c,h]=a;if(a[0]=t,a[1]=e,a[2]=s,a[3]=i,Math.abs(c-n)<=L.PRECISION||Math.abs(h-r)<=L.PRECISION){const m=t+s/2-(o+c/2),b=e+i/2-(l+h/2);for(const{line:y,points:A}of this.#i)L._translate(y,m,b,y),L._translate(A,m,b,A);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${L.svgRound(t)} ${L.svgRound(e)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}const d=(s-2*n)/(c-2*n),f=(i-2*r)/(h-2*r),p=-d*(o+n)+t+n,g=-f*(l+r)+e+r;if(d!==1||f!==1||p!==0||g!==0)for(const{line:m,points:b}of this.#i)L._rescale(m,p,g,d,f,m),L._rescale(b,p,g,d,f,b);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${L.svgRound(t)} ${L.svgRound(e)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}getPathTranslatedSVGProperties([t,e],s){const[i,n]=s,r=this.#t,a=t-r[0],o=e-r[1];if(this.#n===i&&this.#a===n)for(const{line:l,points:c}of this.#i)L._translate(l,a,o,l),L._translate(c,a,o,c);else{const l=this.#n/i,c=this.#a/n;this.#n=i,this.#a=n;for(const{line:h,points:d}of this.#i)L._rescale(h,a,o,l,c,h),L._rescale(d,a,o,l,c,d);r[2]*=l,r[3]*=c}return r[0]=t,r[1]=e,{root:{viewBox:this.viewBox},path:{d:this.toSVGPath(),"transform-origin":`${L.svgRound(t)} ${L.svgRound(e)}`}}}get defaultSVGProperties(){const t=this.#t;return{root:{viewBox:this.viewBox},rootClass:{draw:!0},path:{d:this.toSVGPath(),"transform-origin":`${L.svgRound(t[0])} ${L.svgRound(t[1])}`,transform:this.rotationTransform||null},bbox:t}}}class ni extends Yr{constructor(t){super(),this._viewParameters=t,super.updateProperties({fill:"none",stroke:O._defaultLineColor,"stroke-opacity":1,"stroke-width":1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-miterlimit":10})}updateSVGProperty(t,e){t==="stroke-width"&&(e??=this["stroke-width"],e*=this._viewParameters.realScale),super.updateSVGProperty(t,e)}clone(){const t=new ni(this._viewParameters);return t.updateAll(this),t}}class cn extends Y{static _type="ink";static _editorType=$.INK;static _defaultDrawingOptions=null;constructor(t){super({...t,name:"inkEditor"}),this._willKeepAspectRatio=!0,this.defaultL10nId="pdfjs-editor-ink-editor"}static initialize(t,e){O.initialize(t,e),this._defaultDrawingOptions=new ni(e.viewParameters)}static getDefaultDrawingOptions(t){const e=this._defaultDrawingOptions.clone();return e.updateProperties(t),e}static get supportMultipleDrawings(){return!0}static get typesMap(){return G(this,"typesMap",new Map([[W.INK_THICKNESS,"stroke-width"],[W.INK_COLOR,"stroke"],[W.INK_OPACITY,"stroke-opacity"]]))}static createDrawerInstance(t,e,s,i,n){return new Bc(t,e,s,i,n,this._defaultDrawingOptions["stroke-width"])}static deserializeDraw(t,e,s,i,n,r){return hs.deserialize(t,e,s,i,n,r)}static async deserialize(t,e,s){let i=null;if(t instanceof on){const{data:{inkLists:r,rect:a,rotation:o,id:l,color:c,opacity:h,borderStyle:{rawWidth:d},popupRef:f,richText:p,contentsObj:g,creationDate:m,modificationDate:b},parent:{page:{pageNumber:y}}}=t;i=t={annotationType:$.INK,color:Array.from(c),thickness:d,opacity:h,paths:{points:r},boxes:null,pageIndex:y-1,rect:a.slice(0),rotation:o,annotationElementId:l,id:l,deleted:!1,popupRef:f,richText:p,comment:g?.str||null,creationDate:m,modificationDate:b}}const n=await super.deserialize(t,e,s);return n._initialData=i,t.comment&&n.setCommentData(t),n}get toolbarButtons(){return this._colorPicker||=new rs(this),[["colorPicker",this._colorPicker]]}get colorType(){return W.INK_COLOR}get colorAndOpacityType(){return W.INK_COLOR_AND_OPACITY}get opacityType(){return W.INK_OPACITY}updateParams(t,e){if(t===W.INK_COLOR_AND_OPACITY){this._updateColorAndOpacity(e.color,e.opacity);return}super.updateParams(t,e)}static updateDefaultParams(t,e){if(t===W.INK_COLOR_AND_OPACITY){super.updateDefaultParams(W.INK_COLOR,e.color),super.updateDefaultParams(W.INK_OPACITY,e.opacity);return}super.updateDefaultParams(t,e)}get color(){return this._drawingOptions.stroke}get opacity(){return this._drawingOptions["stroke-opacity"]}onScaleChanging(){if(!this.parent)return;super.onScaleChanging();const{_drawId:t,_drawingOptions:e,parent:s}=this;e.updateSVGProperty("stroke-width"),s.drawLayer.updateProperties(t,e.toSVGProperties())}static onScaleChangingWhenDrawing(){const t=this._currentParent;t&&(super.onScaleChangingWhenDrawing(),this._defaultDrawingOptions.updateSVGProperty("stroke-width"),t.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}createDrawingOptions({color:t,thickness:e,opacity:s}){this._drawingOptions=cn.getDefaultDrawingOptions({stroke:k.makeHexColor(...t),"stroke-width":e,"stroke-opacity":s})}serialize(t=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const{lines:e,points:s}=this.serializeDraw(t),{_drawingOptions:{stroke:i,"stroke-opacity":n,"stroke-width":r}}=this,a=Object.assign(super.serialize(t),{color:O._colorManager.convert(i),opacity:n,thickness:r,paths:{lines:e,points:s}});return this.addComment(a),t?(a.isCopy=!0,a):this.annotationElementId&&!this.#t(a)?null:(a.id=this.annotationElementId,a)}#t(t){const{color:e,thickness:s,opacity:i,pageIndex:n}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||this._hasBeenResized||t.color.some((r,a)=>r!==e[a])||t.thickness!==s||t.opacity!==i||t.pageIndex!==n}renderAnnotationElement(t){if(this.deleted)return t.hide(),null;const{points:e,rect:s}=this.serializeDraw(!1);return t.updateEdited({rect:s,thickness:this._drawingOptions["stroke-width"],points:e,popup:this.comment}),null}}class Wi extends hs{toSVGPath(){let t=super.toSVGPath();return t.endsWith("Z")||(t+="Z"),t}}const Is=8,Ye=3;class De{static#t={maxDim:512,sigmaSFactor:.02,sigmaR:25,kernelSize:16};static#e(t,e,s,i){return s-=t,i-=e,s===0?i>0?0:4:s===1?i+6:2-i}static#s=new Int32Array([0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1]);static#i(t,e,s,i,n,r,a){const o=this.#e(s,i,n,r);for(let l=0;l<8;l++){const c=(-l+o-a+16)%8,h=this.#s[2*c],d=this.#s[2*c+1];if(t[(s+h)*e+(i+d)]!==0)return c}return-1}static#n(t,e,s,i,n,r,a){const o=this.#e(s,i,n,r);for(let l=0;l<8;l++){const c=(l+o+a+16)%8,h=this.#s[2*c],d=this.#s[2*c+1];if(t[(s+h)*e+(i+d)]!==0)return c}return-1}static#a(t,e,s,i){const n=t.length,r=new Int32Array(n);for(let c=0;c<n;c++)r[c]=t[c]<=i?1:0;for(let c=1;c<s-1;c++)r[c*e]=r[c*e+e-1]=0;for(let c=0;c<e;c++)r[c]=r[e*s-1-c]=0;let a=1,o;const l=[];for(let c=1;c<s-1;c++){o=1;for(let h=1;h<e-1;h++){const d=c*e+h,f=r[d];if(f===0)continue;let p=c,g=h;if(f===1&&r[d-1]===0)a+=1,g-=1;else if(f>=1&&r[d+1]===0)a+=1,g+=1,f>1&&(o=f);else{f!==1&&(o=Math.abs(f));continue}const m=[h,c],b=g===h+1,y={isHole:b,points:m,id:a,parent:0};l.push(y);let A;for(const N of l)if(N.id===o){A=N;break}A?A.isHole?y.parent=b?A.parent:o:y.parent=b?o:A.parent:y.parent=b?o:0;const w=this.#i(r,e,c,h,p,g,0);if(w===-1){r[d]=-a,r[d]!==1&&(o=Math.abs(r[d]));continue}let x=this.#s[2*w],S=this.#s[2*w+1];const E=c+x,_=h+S;p=E,g=_;let P=c,I=h;for(;;){const N=this.#n(r,e,P,I,p,g,1);x=this.#s[2*N],S=this.#s[2*N+1];const T=P+x,R=I+S;m.push(R,T);const V=P*e+I;if(r[V+1]===0?r[V]=-a:r[V]===1&&(r[V]=a),T===c&&R===h&&P===E&&I===_){r[d]!==1&&(o=Math.abs(r[d]));break}else p=P,g=I,P=T,I=R}}}return l}static#r(t,e,s,i){if(s-e<=4){for(let E=e;E<s-2;E+=2)i.push(t[E],t[E+1]);return}const n=t[e],r=t[e+1],a=t[s-4]-n,o=t[s-3]-r,l=Math.hypot(a,o),c=a/l,h=o/l,d=c*r-h*n,f=o/a,p=1/l,g=Math.atan(f),m=Math.cos(g),b=Math.sin(g),y=p*(Math.abs(m)+Math.abs(b)),A=p*(1-y+y**2),w=Math.max(Math.atan(Math.abs(b+m)*A),Math.atan(Math.abs(b-m)*A));let x=0,S=e;for(let E=e+2;E<s-2;E+=2){const _=Math.abs(d-c*t[E+1]+h*t[E]);_>x&&(S=E,x=_)}x>(l*w)**2?(this.#r(t,e,S+2,i),this.#r(t,S,s,i)):i.push(n,r)}static#o(t){const e=[],s=t.length;return this.#r(t,0,s,e),e.push(t[s-2],t[s-1]),e.length<=4?null:e}static#h(t,e,s,i,n,r){const a=new Float32Array(r**2),o=-2*i**2,l=r>>1;for(let g=0;g<r;g++){const m=(g-l)**2;for(let b=0;b<r;b++)a[g*r+b]=Math.exp((m+(b-l)**2)/o)}const c=new Float32Array(256),h=-2*n**2;for(let g=0;g<256;g++)c[g]=Math.exp(g**2/h);const d=t.length,f=new Uint8Array(d),p=new Uint32Array(256);for(let g=0;g<s;g++)for(let m=0;m<e;m++){const b=g*e+m,y=t[b];let A=0,w=0;for(let S=0;S<r;S++){const E=g+S-l;if(!(E<0||E>=s))for(let _=0;_<r;_++){const P=m+_-l;if(P<0||P>=e)continue;const I=t[E*e+P],N=a[S*r+_]*c[Math.abs(I-y)];A+=I*N,w+=N}}const x=f[b]=Math.round(A/w);p[x]++}return[f,p]}static#l(t){const e=new Uint32Array(256);for(const s of t)e[s]++;return e}static#u(t){const e=t.length,s=new Uint8ClampedArray(e>>2);let i=-1/0,n=1/0;for(let a=0,o=s.length;a<o;a++){const l=s[a]=t[a<<2];i=Math.max(i,l),n=Math.min(n,l)}const r=255/(i-n);for(let a=0,o=s.length;a<o;a++)s[a]=(s[a]-n)*r;return s}static#d(t){let e,s=-1/0,i=-1/0;const n=t.findIndex(o=>o!==0);let r=n,a=n;for(e=n;e<256;e++){const o=t[e];o>s&&(e-r>i&&(i=e-r,a=e-1),s=o,r=e)}for(e=a-1;e>=0&&!(t[e]>t[e+1]);e--);return e}static#p(t){const e=t,{width:s,height:i}=t,{maxDim:n}=this.#t;let r=s,a=i;if(s>n||i>n){let d=s,f=i,p=Math.log2(Math.max(s,i)/n);const g=Math.floor(p);p=p===g?g-1:g;for(let b=0;b<p;b++){r=Math.ceil(d/2),a=Math.ceil(f/2);const y=new OffscreenCanvas(r,a);y.getContext("2d").drawImage(t,0,0,d,f,0,0,r,a),d=r,f=a,t!==e&&t.close(),t=y.transferToImageBitmap()}const m=Math.min(n/r,n/a);r=Math.round(r*m),a=Math.round(a*m)}const l=new OffscreenCanvas(r,a).getContext("2d",{willReadFrequently:!0});l.fillStyle="white",l.fillRect(0,0,r,a),l.filter="grayscale(1)",l.drawImage(t,0,0,t.width,t.height,0,0,r,a);const c=l.getImageData(0,0,r,a).data;return[this.#u(c),r,a]}static extractContoursFromText(t,{fontFamily:e,fontStyle:s,fontWeight:i},n,r,a,o){let l=new OffscreenCanvas(1,1),c=l.getContext("2d",{alpha:!1});const h=200,d=c.font=`${s} ${i} ${h}px ${e}`,{actualBoundingBoxLeft:f,actualBoundingBoxRight:p,actualBoundingBoxAscent:g,actualBoundingBoxDescent:m,fontBoundingBoxAscent:b,fontBoundingBoxDescent:y,width:A}=c.measureText(t),w=1.5,x=Math.ceil(Math.max(Math.abs(f)+Math.abs(p)||0,A)*w),S=Math.ceil(Math.max(Math.abs(g)+Math.abs(m)||h,Math.abs(b)+Math.abs(y)||h)*w);l=new OffscreenCanvas(x,S),c=l.getContext("2d",{alpha:!0,willReadFrequently:!0}),c.font=d,c.filter="grayscale(1)",c.fillStyle="white",c.fillRect(0,0,x,S),c.fillStyle="black",c.fillText(t,x*(w-1)/2,S*(3-w)/2);const E=this.#u(c.getImageData(0,0,x,S).data),_=this.#l(E),P=this.#d(_),I=this.#a(E,x,S,P);return this.processDrawnLines({lines:{curves:I,width:x,height:S},pageWidth:n,pageHeight:r,rotation:a,innerMargin:o,mustSmooth:!0,areContours:!0})}static process(t,e,s,i,n){const[r,a,o]=this.#p(t),[l,c]=this.#h(r,a,o,Math.hypot(a,o)*this.#t.sigmaSFactor,this.#t.sigmaR,this.#t.kernelSize),h=this.#d(c),d=this.#a(l,a,o,h);return this.processDrawnLines({lines:{curves:d,width:a,height:o},pageWidth:e,pageHeight:s,rotation:i,innerMargin:n,mustSmooth:!0,areContours:!0})}static processDrawnLines({lines:t,pageWidth:e,pageHeight:s,rotation:i,innerMargin:n,mustSmooth:r,areContours:a}){i%180!==0&&([e,s]=[s,e]);const{curves:o,width:l,height:c}=t,h=t.thickness??0,d=[],f=Math.min(e/l,s/c),p=f/e,g=f/s,m=[];for(const{points:y}of o){const A=r?this.#o(y):y;if(!A)continue;m.push(A);const w=A.length,x=new Float32Array(w),S=new Float32Array(3*(w===2?2:w-2));if(d.push({line:S,points:x}),w===2){x[0]=A[0]*p,x[1]=A[1]*g,S.set([NaN,NaN,NaN,NaN,x[0],x[1]],0);continue}let[E,_,P,I]=A;E*=p,_*=g,P*=p,I*=g,x.set([E,_,P,I],0),S.set([NaN,NaN,NaN,NaN,E,_],0);for(let N=4;N<w;N+=2){const T=x[N]=A[N]*p,R=x[N+1]=A[N+1]*g;S.set(L.createBezierPoints(E,_,P,I,T,R),(N-2)*3),[E,_,P,I]=[P,I,T,R]}}if(d.length===0)return null;const b=a?new Wi:new hs;return b.build(d,e,s,1,i,a?0:h,n),{outline:b,newCurves:m,areContours:a,thickness:h,width:l,height:c}}static async compressSignature({outlines:t,areContours:e,thickness:s,width:i,height:n}){let r=1/0,a=-1/0,o=0;for(const y of t){o+=y.length;for(let A=2,w=y.length;A<w;A++){const x=y[A]-y[A-2];r=Math.min(r,x),a=Math.max(a,x)}}let l;r>=-128&&a<=127?l=Int8Array:r>=-32768&&a<=32767?l=Int16Array:l=Int32Array;const c=t.length,h=Is+Ye*c,d=new Uint32Array(h);let f=0;d[f++]=h*Uint32Array.BYTES_PER_ELEMENT+(o-2*c)*l.BYTES_PER_ELEMENT,d[f++]=0,d[f++]=i,d[f++]=n,d[f++]=e?0:1,d[f++]=Math.max(0,Math.floor(s??0)),d[f++]=c,d[f++]=l.BYTES_PER_ELEMENT;for(const y of t)d[f++]=y.length-2,d[f++]=y[0],d[f++]=y[1];const p=new CompressionStream("deflate-raw"),g=p.writable.getWriter();await g.ready,g.write(d);const m=l.prototype.constructor;for(const y of t){const A=new m(y.length-2);for(let w=2,x=y.length;w<x;w++)A[w-2]=y[w]-y[w-2];g.write(A)}return g.close(),(await new Response(p.readable).bytes()).toBase64()}static async decompressSignature(t){try{const e=Uint8Array.fromBase64(t),{readable:s,writable:i}=new DecompressionStream("deflate-raw"),n=i.getWriter();await n.ready,n.write(e).then(async()=>{await n.ready,await n.close()}).catch(()=>{});let r=null,a=0;for await(const A of s)r||=new Uint8Array(new Uint32Array(A.buffer,0,4)[0]),r.set(A,a),a+=A.length;const o=new Uint32Array(r.buffer,0,r.length>>2),l=o[1];if(l!==0)throw new Error(`Invalid version: ${l}`);const c=o[2],h=o[3],d=o[4]===0,f=o[5],p=o[6],g=o[7],m=[],b=(Is+Ye*p)*Uint32Array.BYTES_PER_ELEMENT;let y;switch(g){case Int8Array.BYTES_PER_ELEMENT:y=new Int8Array(r.buffer,b);break;case Int16Array.BYTES_PER_ELEMENT:y=new Int16Array(r.buffer,b);break;case Int32Array.BYTES_PER_ELEMENT:y=new Int32Array(r.buffer,b);break}a=0;for(let A=0;A<p;A++){const w=o[Ye*A+Is],x=new Float32Array(w+2);m.push(x);for(let S=0;S<Ye-1;S++)x[S]=o[Ye*A+Is+S+1];for(let S=0;S<w;S++)x[S+2]=x[S]+y[a++]}return{areContours:d,thickness:f,outlines:m,width:c,height:h}}catch(e){return z(`decompressSignature: ${e}`),null}}}class hn extends Yr{constructor(){super(),super.updateProperties({fill:O._defaultLineColor,"stroke-width":0})}clone(){const t=new hn;return t.updateAll(this),t}}class dn extends ni{constructor(t){super(t),super.updateProperties({stroke:O._defaultLineColor,"stroke-width":1})}clone(){const t=new dn(this._viewParameters);return t.updateAll(this),t}}class Yt extends Y{#t=!1;#e=null;#s=null;#i=null;static _type="signature";static _editorType=$.SIGNATURE;static _defaultDrawingOptions=null;constructor(t){super({...t,mustBeCommitted:!0,name:"signatureEditor"}),this._willKeepAspectRatio=!0,this.#s=t.signatureData||null,this.#e=null,this.defaultL10nId="pdfjs-editor-signature-editor1"}static initialize(t,e){O.initialize(t,e),this._defaultDrawingOptions=new hn,this._defaultDrawnSignatureOptions=new dn(e.viewParameters)}static getDefaultDrawingOptions(t){const e=this._defaultDrawingOptions.clone();return e.updateProperties(t),e}static get supportMultipleDrawings(){return!1}static get typesMap(){return G(this,"typesMap",new Map)}static get isDrawer(){return!1}get telemetryFinalData(){return{type:"signature",hasDescription:!!this.#e}}static computeTelemetryFinalData(t){const e=t.get("hasDescription");return{hasAltText:e.get(!0)??0,hasNoAltText:e.get(!1)??0}}get isResizable(){return!0}onScaleChanging(){this._drawId!==null&&super.onScaleChanging()}render(){if(this.div)return this.div;let t,e;const{_isCopy:s}=this;if(s&&(this._isCopy=!1,t=this.x,e=this.y),super.render(),this._drawId===null)if(this.#s){const{lines:i,mustSmooth:n,areContours:r,description:a,uuid:o,heightInPage:l}=this.#s,{rawDims:{pageWidth:c,pageHeight:h},rotation:d}=this.parent.viewport,f=De.processDrawnLines({lines:i,pageWidth:c,pageHeight:h,rotation:d,innerMargin:Yt._INNER_MARGIN,mustSmooth:n,areContours:r});this.addSignature(f,l,a,o)}else this.div.setAttribute("data-l10n-args",JSON.stringify({description:""})),this.div.hidden=!0,this._uiManager.getSignature(this);else this.div.setAttribute("data-l10n-args",JSON.stringify({description:this.#e||""}));return s&&(this._isCopy=!0,this._moveAfterPaste(t,e)),this.div}setUuid(t){this.#i=t,this.addEditToolbar()}getUuid(){return this.#i}get description(){return this.#e}set description(t){this.#e=t,this.div&&(this.div.setAttribute("data-l10n-args",JSON.stringify({description:t})),super.addEditToolbar().then(e=>{e?.updateEditSignatureButton(t)}))}getSignaturePreview(){const{newCurves:t,areContours:e,thickness:s,width:i,height:n}=this.#s,r=Math.max(i,n),a=De.processDrawnLines({lines:{curves:t.map(o=>({points:o})),thickness:s,width:i,height:n},pageWidth:r,pageHeight:r,rotation:0,innerMargin:0,mustSmooth:!1,areContours:e});return{areContours:e,outline:a.outline}}get toolbarButtons(){return this._uiManager.signatureManager?[["editSignature",this._uiManager.signatureManager]]:super.toolbarButtons}addSignature(t,e,s,i){const{x:n,y:r}=this,{outline:a}=this.#s=t;this.#t=a instanceof Wi,this.description=s;let o;this.#t?o=Yt.getDefaultDrawingOptions():(o=Yt._defaultDrawnSignatureOptions.clone(),o.updateProperties({"stroke-width":a.thickness})),this._addOutlines({drawOutlines:a,drawingOptions:o});const[,l]=this.pageDimensions;let c=e/l;c=c>=1?.5:c,this.width*=c/this.height,this.width>=1&&(c*=.9/this.width,this.width=.9),this.height=c,this.setDims(),this.x=n,this.y=r,this.center(),this._onResized(),this.onScaleChanging(),this.rotate(),this._uiManager.addToAnnotationStorage(this),this.setUuid(i),this._reportTelemetry({action:"pdfjs.signature.inserted",data:{hasBeenSaved:!!i,hasDescription:!!s}}),this.div.hidden=!1}getFromImage(t){const{rawDims:{pageWidth:e,pageHeight:s},rotation:i}=this.parent.viewport;return De.process(t,e,s,i,Yt._INNER_MARGIN)}getFromText(t,e){const{rawDims:{pageWidth:s,pageHeight:i},rotation:n}=this.parent.viewport;return De.extractContoursFromText(t,e,s,i,n,Yt._INNER_MARGIN)}getDrawnSignature(t){const{rawDims:{pageWidth:e,pageHeight:s},rotation:i}=this.parent.viewport;return De.processDrawnLines({lines:t,pageWidth:e,pageHeight:s,rotation:i,innerMargin:Yt._INNER_MARGIN,mustSmooth:!1,areContours:!1})}createDrawingOptions({areContours:t,thickness:e}){t?this._drawingOptions=Yt.getDefaultDrawingOptions():(this._drawingOptions=Yt._defaultDrawnSignatureOptions.clone(),this._drawingOptions.updateProperties({"stroke-width":e}))}serialize(t=!1){if(this.isEmpty())return null;const{lines:e,points:s}=this.serializeDraw(t),{_drawingOptions:{"stroke-width":i}}=this,n=Object.assign(super.serialize(t),{isSignature:!0,areContours:this.#t,color:[0,0,0],thickness:this.#t?0:i});return this.addComment(n),t?(n.paths={lines:e,points:s},n.uuid=this.#i,n.isCopy=!0):n.lines=e,this.#e&&(n.accessibilityData={type:"Figure",alt:this.#e}),n}static deserializeDraw(t,e,s,i,n,r){return r.areContours?Wi.deserialize(t,e,s,i,n,r):hs.deserialize(t,e,s,i,n,r)}static async deserialize(t,e,s){const i=await super.deserialize(t,e,s);return i.#t=t.areContours,i.description=t.accessibilityData?.alt||"",i.#i=t.uuid,i}}class jc extends O{#t=null;#e=null;#s=null;#i=null;#n=null;#a="";#r=null;#o=!1;#h=null;#l=!1;#u=!1;static _type="stamp";static _editorType=$.STAMP;constructor(t){super({...t,name:"stampEditor"}),this.#i=t.bitmapUrl,this.#n=t.bitmapFile,this.defaultL10nId="pdfjs-editor-stamp-editor"}static initialize(t,e){O.initialize(t,e)}static isHandlingMimeForPasting(t){return Bi.includes(t)}static paste(t,e){e.pasteEditor({mode:$.STAMP},{bitmapFile:t.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){return{type:"stamp",hasAltText:!!this.altTextData?.altText}}static computeTelemetryFinalData(t){const e=t.get("hasAltText");return{hasAltText:e.get(!0)??0,hasNoAltText:e.get(!1)??0}}#d(t,e=!1){if(!t){this.remove();return}this.#t=t.bitmap,e||(this.#e=t.id,this.#l=t.isSvg),t.file&&(this.#a=t.file.name),this.#g()}#p(){if(this.#s=null,this._uiManager.enableWaiting(!1),!!this.#r){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#t){this.addEditToolbar().then(()=>{this._editToolbar.hide(),this._uiManager.editAltText(this,!0)});return}if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#t){this._reportTelemetry({action:"pdfjs.image.image_added",data:{alt_text_modal:!1,alt_text_type:"empty"}});try{this.mlGuessAltText()}catch{}}this.div.focus()}}async mlGuessAltText(t=null,e=!0){if(this.hasAltTextData())return null;const{mlManager:s}=this._uiManager;if(!s)throw new Error("No ML.");if(!await s.isEnabledFor("altText"))throw new Error("ML isn't enabled for alt text.");const{data:i,width:n,height:r}=t||this.copyCanvas(null,null,!0).imageData,a=await s.guess({name:"altText",request:{data:i,width:n,height:r,channels:i.length/(n*r)}});if(!a)throw new Error("No response from the AI service.");if(a.error)throw new Error("Error from the AI service.");if(a.cancel)return null;if(!a.output)throw new Error("No valid response from the AI service.");const o=a.output;return await this.setGuessedAltText(o),e&&!this.hasAltTextData()&&(this.altTextData={alt:o,decorative:!1}),o}#m(){if(this.#e){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(this.#e).then(s=>this.#d(s,!0)).finally(()=>this.#p());return}if(this.#i){const s=this.#i;this.#i=null,this._uiManager.enableWaiting(!0),this.#s=this._uiManager.imageManager.getFromUrl(s).then(i=>this.#d(i)).finally(()=>this.#p());return}if(this.#n){const s=this.#n;this.#n=null,this._uiManager.enableWaiting(!0),this.#s=this._uiManager.imageManager.getFromFile(s).then(i=>this.#d(i)).finally(()=>this.#p());return}const t=document.createElement("input");t.type="file",t.accept=Bi.join(",");const e=this._uiManager._signal;this.#s=new Promise(s=>{t.addEventListener("change",async()=>{if(!t.files||t.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);const i=await this._uiManager.imageManager.getFromFile(t.files[0]);this._reportTelemetry({action:"pdfjs.image.image_selected",data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),this.#d(i)}s()},{signal:e}),t.addEventListener("cancel",()=>{this.remove(),s()},{signal:e})}).finally(()=>this.#p()),t.click()}remove(){this.#e&&(this.#t=null,this._uiManager.imageManager.deleteId(this.#e),this.#r?.remove(),this.#r=null,this.#h&&(clearTimeout(this.#h),this.#h=null)),super.remove()}rebuild(){if(!this.parent){this.#e&&this.#m();return}super.rebuild(),this.div!==null&&(this.#e&&this.#r===null&&this.#m(),this.isAttachedToDOM||this.parent.add(this))}onceAdded(t){this._isDraggable=!0,t&&this.div.focus()}isEmpty(){return!(this.#s||this.#t||this.#i||this.#n||this.#e||this.#o)}get toolbarButtons(){return[["altText",this.createAltText()]]}get isResizable(){return!0}render(){if(this.div)return this.div;let t,e;return this._isCopy&&(t=this.x,e=this.y),super.render(),this.div.hidden=!0,this.createAltText(),this.#o||(this.#t?this.#g():this.#m()),this._isCopy&&this._moveAfterPaste(t,e),this._uiManager.addShouldRescale(this),this.div}setCanvas(t,e){const{id:s,bitmap:i}=this._uiManager.imageManager.getFromCanvas(t,e);e.remove(),s&&this._uiManager.imageManager.isValidId(s)&&(this.#e=s,i&&(this.#t=i),this.#o=!1,this.#g())}_onResized(){this.onScaleChanging()}onScaleChanging(){if(!this.parent)return;this.#h!==null&&clearTimeout(this.#h);const t=200;this.#h=setTimeout(()=>{this.#h=null,this.#f()},t)}#g(){const{div:t}=this;let{width:e,height:s}=this.#t;const[i,n]=this.pageDimensions,r=.75;if(this.width)e=this.width*i,s=this.height*n;else if(e>r*i||s>r*n){const o=Math.min(r*i/e,r*n/s);e*=o,s*=o}this._uiManager.enableWaiting(!1);const a=this.#r=document.createElement("canvas");a.setAttribute("role","img"),this.addContainer(a),this.width=e/i,this.height=s/n,this.setDims(),this._initialOptions?.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(t.hidden=!1),this.#f(),this.#u||(this.parent.addUndoableEditor(this),this.#u=!0),this._reportTelemetry({action:"inserted_image"}),this.#a&&this.div.setAttribute("aria-description",this.#a),this.annotationElementId||this._uiManager.a11yAlert(O._l10nAlert.stamp)}copyCanvas(t,e,s=!1){t||(t=224);const{width:i,height:n}=this.#t,r=new Qt;let a=this.#t,o=i,l=n,c=null;if(e){if(i>e||n>e){const S=Math.min(e/i,e/n);o=Math.floor(i*S),l=Math.floor(n*S)}c=document.createElement("canvas");const d=c.width=Math.ceil(o*r.sx),f=c.height=Math.ceil(l*r.sy);this.#l||(a=this.#c(d,f));const p=c.getContext("2d");p.filter=this._uiManager.hcmFilter;let g="white",m="#cfcfd8";this._uiManager.hcmFilter!=="none"?m="black":Xo.isDarkMode&&(g="#8f8f9d",m="#42414d");const b=15,y=b*r.sx,A=b*r.sy,w=new OffscreenCanvas(y*2,A*2),x=w.getContext("2d");x.fillStyle=g,x.fillRect(0,0,y*2,A*2),x.fillStyle=m,x.fillRect(0,0,y,A),x.fillRect(y,A,y,A),p.fillStyle=p.createPattern(w,"repeat"),p.fillRect(0,0,d,f),p.drawImage(a,0,0,a.width,a.height,0,0,d,f)}let h=null;if(s){let d,f;if(r.symmetric&&a.width<t&&a.height<t)d=a.width,f=a.height;else if(a=this.#t,i>t||n>t){const m=Math.min(t/i,t/n);d=Math.floor(i*m),f=Math.floor(n*m),this.#l||(a=this.#c(d,f))}const g=new OffscreenCanvas(d,f).getContext("2d",{willReadFrequently:!0});g.drawImage(a,0,0,a.width,a.height,0,0,d,f),h={width:d,height:f,data:g.getImageData(0,0,d,f).data}}return{canvas:c,width:o,height:l,imageData:h}}#c(t,e){const{width:s,height:i}=this.#t;let n=s,r=i,a=this.#t;for(;n>2*t||r>2*e;){const o=n,l=r;n>2*t&&(n=Math.ceil(n/2)),r>2*e&&(r=Math.ceil(r/2));const c=new OffscreenCanvas(n,r);c.getContext("2d").drawImage(a,0,0,o,l,0,0,n,r),a=c.transferToImageBitmap()}return a}#f(){const[t,e]=this.parentDimensions,{width:s,height:i}=this,n=new Qt,r=Math.ceil(s*t*n.sx),a=Math.ceil(i*e*n.sy),o=this.#r;if(!o||o.width===r&&o.height===a)return;o.width=r,o.height=a;const l=this.#l?this.#t:this.#c(r,a),c=o.getContext("2d");c.filter=this._uiManager.hcmFilter,c.drawImage(l,0,0,l.width,l.height,0,0,r,a)}#y(t){if(t){if(this.#l){const i=this._uiManager.imageManager.getSvgUrl(this.#e);if(i)return i}const e=document.createElement("canvas");return{width:e.width,height:e.height}=this.#t,e.getContext("2d").drawImage(this.#t,0,0),e.toDataURL()}if(this.#l){const[e,s]=this.pageDimensions,i=Math.round(this.width*e*Be.PDF_TO_CSS_UNITS),n=Math.round(this.height*s*Be.PDF_TO_CSS_UNITS),r=new OffscreenCanvas(i,n);return r.getContext("2d").drawImage(this.#t,0,0,this.#t.width,this.#t.height,0,0,i,n),r.transferToImageBitmap()}return structuredClone(this.#t)}static async deserialize(t,e,s){let i=null,n=!1;if(t instanceof Vr){const{data:{rect:g,rotation:m,id:b,structParent:y,popupRef:A,richText:w,contentsObj:x,creationDate:S,modificationDate:E},container:_,parent:{page:{pageNumber:P}},canvas:I}=t;let N,T;I?(delete t.canvas,{id:N,bitmap:T}=s.imageManager.getFromCanvas(_.id,I),I.remove()):(n=!0,t._hasNoCanvas=!0);const R=(await e._structTree.getAriaAttributes(`${Le}${b}`))?.get("aria-label")||"";i=t={annotationType:$.STAMP,bitmapId:N,bitmap:T,pageIndex:P-1,rect:g.slice(0),rotation:m,annotationElementId:b,id:b,deleted:!1,accessibilityData:{decorative:!1,altText:R},isSvg:!1,structParent:y,popupRef:A,richText:w,comment:x?.str||null,creationDate:S,modificationDate:E}}const r=await super.deserialize(t,e,s),{rect:a,bitmap:o,bitmapUrl:l,bitmapId:c,isSvg:h,accessibilityData:d}=t;n?(s.addMissingCanvas(t.id,r),r.#o=!0):c&&s.imageManager.isValidId(c)?(r.#e=c,o&&(r.#t=o)):r.#i=l,r.#l=h;const[f,p]=r.pageDimensions;return r.width=(a[2]-a[0])/f,r.height=(a[3]-a[1])/p,d&&(r.altTextData=d),r._initialData=i,t.comment&&r.setCommentData(t),r.#u=!!i,r}serialize(t=!1,e=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const s=Object.assign(super.serialize(t),{bitmapId:this.#e,isSvg:this.#l});if(this.addComment(s),t)return s.bitmapUrl=this.#y(!0),s.accessibilityData=this.serializeAltText(!0),s.isCopy=!0,s;const{decorative:i,altText:n}=this.serializeAltText(!1);if(!i&&n&&(s.accessibilityData={type:"Figure",alt:n}),this.annotationElementId){const a=this.#A(s);return a.isSame?null:(a.isSameAltText?delete s.accessibilityData:s.accessibilityData.structParent=this._initialData.structParent??-1,s.id=this.annotationElementId,delete s.bitmapId,s)}if(e===null)return s;e.stamps||=new Map;const r=this.#l?(s.rect[2]-s.rect[0])*(s.rect[3]-s.rect[1]):null;if(!e.stamps.has(this.#e))e.stamps.set(this.#e,{area:r,serialized:s}),s.bitmap=this.#y(!1);else if(this.#l){const a=e.stamps.get(this.#e);r>a.area&&(a.area=r,a.serialized.bitmap.close(),a.serialized.bitmap=this.#y(!1))}return s}#A(t){const{pageIndex:e,accessibilityData:{altText:s}}=this._initialData,i=t.pageIndex===e,n=(t.accessibilityData?.alt||"")===s;return{isSame:!this.hasEditedComment&&!this._hasBeenMoved&&!this._hasBeenResized&&i&&n,isSameAltText:n}}renderAnnotationElement(t){return this.deleted?(t.hide(),null):(t.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}}class te{#t;#e=!1;#s=null;#i=null;#n=null;#a=new Map;#r=!1;#o=!1;#h=!1;#l=null;#u=null;#d=null;#p=null;#m=null;#g=-1;#c;static _initialized=!1;static#f=new Map([gt,cn,jc,dt,Yt].map(t=>[t._editorType,t]));constructor({uiManager:t,pageIndex:e,div:s,structTreeLayer:i,accessibilityManager:n,annotationLayer:r,drawLayer:a,textLayer:o,viewport:l,l10n:c}){const h=[...te.#f.values()];if(!te._initialized){te._initialized=!0;for(const d of h)d.initialize(c,t)}t.registerEditorTypes(h),this.#c=t,this.pageIndex=e,this.div=s,this.#t=n,this.#s=r,this.viewport=l,this.#d=o,this.drawLayer=a,this._structTree=i,this.#c.addLayer(this)}get isEmpty(){return this.#a.size===0}get isInvisible(){return this.isEmpty&&this.#c.getMode()===$.NONE}updateToolbar(t){this.#c.updateToolbar(t)}updateMode(t=this.#c.getMode()){switch(this.#v(),t){case $.NONE:this.div.classList.toggle("nonEditing",!0),this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case $.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case $.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:e}=this.div;if(e.toggle("nonEditing",!1),t===$.POPUP)e.toggle("commentEditing",!0);else{e.toggle("commentEditing",!1);for(const s of te.#f.values())e.toggle(`${s._type}Editing`,t===s._editorType)}this.div.hidden=!1}hasTextLayer(t){return t===this.#d?.div}setEditingState(t){this.#c.setEditingState(t)}addCommands(t){this.#c.addCommands(t)}cleanUndoStack(t){this.#c.cleanUndoStack(t)}toggleDrawing(t=!1){this.div.classList.toggle("drawing",!t)}togglePointerEvents(t=!1){this.div.classList.toggle("disabled",!t)}toggleAnnotationLayerPointerEvents(t=!1){this.#s?.togglePointerEvents(t)}get#y(){return this.#a.size!==0?this.#a.values():this.#c.getEditors(this.pageIndex)}async enable(){this.#h=!0,this.div.tabIndex=0,this.togglePointerEvents(!0),this.div.classList.toggle("nonEditing",!1),this.#m?.abort(),this.#m=null;const t=new Set;for(const s of this.#y)s.enableEditing(),s.show(!0),s.annotationElementId&&(this.#c.removeChangedExistingAnnotation(s),t.add(s.annotationElementId));const e=this.#s;if(e)for(const s of e.getEditableAnnotations()){if(s.hide(),this.#c.isDeletedAnnotationElement(s.data.id)||t.has(s.data.id))continue;const i=await this.deserialize(s);i&&(this.addOrRebuild(i),i.enableEditing())}this.#h=!1,this.#c._eventBus.dispatch("editorsrendered",{source:this,pageNumber:this.pageIndex+1})}disable(){if(this.#o=!0,this.div.tabIndex=-1,this.togglePointerEvents(!1),this.div.classList.toggle("nonEditing",!0),this.#d&&!this.#m){this.#m=new AbortController;const i=this.#c.combinedSignal(this.#m);this.#d.div.addEventListener("pointerdown",n=>{const{clientX:a,clientY:o,timeStamp:l}=n,c=this.#g;if(l-c>500){this.#g=l;return}this.#g=-1;const{classList:h}=this.div;h.toggle("getElements",!0);const d=document.elementsFromPoint(a,o);if(h.toggle("getElements",!1),!this.div.contains(d[0]))return;let f;const p=new RegExp(`^${ts}[0-9]+$`);for(const m of d)if(p.test(m.id)){f=m.id;break}if(!f)return;const g=this.#a.get(f);g?.annotationElementId===null&&(ot(n),g.dblclick(n))},{signal:i,capture:!0})}const t=this.#s,e=[];if(t){const i=new Map,n=new Map;for(const r of this.#y){if(r.disableEditing(),!r.annotationElementId){e.push(r);continue}if(r.serialize()!==null){i.set(r.annotationElementId,r);continue}else n.set(r.annotationElementId,r);this.getEditableAnnotation(r.annotationElementId)?.show(),r.remove()}for(const r of t.getEditableAnnotations()){const{id:a}=r.data;if(this.#c.isDeletedAnnotationElement(a)){r.updateEdited({deleted:!0});continue}let o=n.get(a);if(o){o.resetAnnotationElement(r),o.show(!1),r.show();continue}o=i.get(a),o&&(this.#c.addChangedExistingAnnotation(o),o.renderAnnotationElement(r)&&o.show(!1)),r.show()}}this.#v(),this.isEmpty&&(this.div.hidden=!0);const{classList:s}=this.div;for(const i of te.#f.values())s.remove(`${i._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),t?.updateFakeAnnotations(e),this.#o=!1}getEditableAnnotation(t){return this.#s?.getEditableAnnotation(t)||null}setActiveEditor(t){this.#c.getActive()!==t&&this.#c.setActiveEditor(t)}enableTextSelection(){if(this.div.tabIndex=-1,this.#d?.div&&!this.#p){this.#p=new AbortController;const t=this.#c.combinedSignal(this.#p);this.#d.div.addEventListener("pointerdown",this.#A.bind(this),{signal:t}),this.#d.div.classList.add("highlighting")}}disableTextSelection(){this.div.tabIndex=0,this.#d?.div&&this.#p&&(this.#p.abort(),this.#p=null,this.#d.div.classList.remove("highlighting"))}#A(t){this.#c.unselectAll();const{target:e}=t;if(e===this.#d.div||(e.getAttribute("role")==="img"||e.classList.contains("endOfContent")||e.classList.contains("textLayerImages")||e.classList.contains("textLayerImagePlaceholder"))&&this.#d.div.contains(e)){const{isMac:s}=J.platform;if(t.button!==0||t.ctrlKey&&s)return;this.#c.showAllEditors("highlight",!0,!0),this.#d.div.classList.add("free"),this.toggleDrawing(),dt.startHighlighting(this,this.#c.direction==="ltr",{target:this.#d.div,x:t.x,y:t.y}),this.#d.div.addEventListener("pointerup",()=>{this.#d.div.classList.remove("free"),this.toggleDrawing(!0)},{once:!0,signal:this.#c._signal}),t.preventDefault()}}enableClick(){if(this.#i)return;this.#i=new AbortController;const t=this.#c.combinedSignal(this.#i);this.div.addEventListener("pointerdown",this.pointerdown.bind(this),{signal:t});const e=this.pointerup.bind(this);this.div.addEventListener("pointerup",e,{signal:t}),this.div.addEventListener("pointercancel",e,{signal:t})}disableClick(){this.#i?.abort(),this.#i=null}attach(t){this.#a.set(t.id,t);const{annotationElementId:e}=t;e&&this.#c.isDeletedAnnotationElement(e)&&this.#c.removeDeletedAnnotationElement(t)}detach(t){this.#a.delete(t.id),this.#t?.removePointerInTextLayer(t.contentDiv),!this.#o&&t.annotationElementId&&this.#c.addDeletedAnnotationElement(t)}remove(t){this.detach(t),this.#c.removeEditor(t),t.div.remove(),t.isAttachedToDOM=!1}changeParent(t){t.parent!==this&&(t.parent&&t.annotationElementId&&(this.#c.addDeletedAnnotationElement(t),O.deleteAnnotationElement(t),t.annotationElementId=null),this.attach(t),t.parent?.detach(t),t.setParent(this),t.div&&t.isAttachedToDOM&&(t.div.remove(),this.div.append(t.div)))}add(t){if(!(t.parent===this&&t.isAttachedToDOM)){if(this.changeParent(t),this.#c.addEditor(t),this.attach(t),!t.isAttachedToDOM){const e=t.render();this.div.append(e),t.isAttachedToDOM=!0}t.fixAndSetPosition(),t.onceAdded(!this.#h),this.#c.addToAnnotationStorage(t),t._reportTelemetry(t.telemetryInitialData)}}moveEditorInDOM(t){if(!t.isAttachedToDOM)return;const{activeElement:e}=document;t.div.contains(e)&&!this.#n&&(t._focusEventsAllowed=!1,this.#n=setTimeout(()=>{this.#n=null,t.div.contains(document.activeElement)?t._focusEventsAllowed=!0:(t.div.addEventListener("focusin",()=>{t._focusEventsAllowed=!0},{once:!0,signal:this.#c._signal}),e.focus())},0)),t._structTreeParentId=this.#t?.moveElementInDOM(this.div,t.div,t.contentDiv,!0)}addOrRebuild(t){t.needsToBeRebuilt()?(t.parent||=this,t.rebuild(),t.show()):this.add(t)}addUndoableEditor(t){const e=()=>t._uiManager.rebuild(t),s=()=>{t.remove()};this.addCommands({cmd:e,undo:s,mustExec:!1})}getEditorByUID(t){for(const e of this.#a.values())if(e.uid===t)return e;return null}get#b(){return te.#f.get(this.#c.getMode())}combinedSignal(t){return this.#c.combinedSignal(t)}#S(t){const e=this.#b;return e?new e.prototype.constructor(t):null}canCreateNewEmptyEditor(){return this.#b?.canCreateNewEmptyEditor()}async pasteEditor(t,e){this.updateToolbar(t),await this.#c.updateMode(t.mode);const{offsetX:s,offsetY:i}=this.#C(),n=this.#c.getId(),r=this.#S({parent:this,id:n,x:s,y:i,uiManager:this.#c,isCentered:!0,...e});r&&this.add(r)}async deserialize(t){return await te.#f.get(t.annotationType??t.annotationEditorType)?.deserialize(t,this,this.#c)||null}createAndAddNewEditor(t,e,s={}){const i=this.#c.getId(),n=this.#S({parent:this,id:i,x:t.offsetX,y:t.offsetY,uiManager:this.#c,isCentered:e,...s});return n&&this.add(n),n}get boundingClientRect(){return this.div.getBoundingClientRect()}#C(){const{x:t,y:e,width:s,height:i}=this.boundingClientRect,n=Math.max(0,t),r=Math.max(0,e),a=Math.min(window.innerWidth,t+s),o=Math.min(window.innerHeight,e+i),l=(n+a)/2-t,c=(r+o)/2-e,[h,d]=this.viewport.rotation%180===0?[l,c]:[c,l];return{offsetX:h,offsetY:d}}addNewEditor(t={}){this.createAndAddNewEditor(this.#C(),!0,t)}setSelected(t){this.#c.setSelected(t)}toggleSelected(t){this.#c.toggleSelected(t)}unselect(t){this.#c.unselect(t)}pointerup(t){const{isMac:e}=J.platform;if(t.button!==0||t.ctrlKey&&e||t.target!==this.div||!this.#r||(this.#r=!1,this.#b?.isDrawer&&this.#b.supportMultipleDrawings))return;if(!this.#e){this.#e=!0;return}const s=this.#c.getMode();if(s===$.STAMP||s===$.POPUP||s===$.SIGNATURE){this.#c.unselectAll();return}this.createAndAddNewEditor(t,!1)}pointerdown(t){if(this.#c.getMode()===$.HIGHLIGHT&&this.enableTextSelection(),this.#r){this.#r=!1;return}const{isMac:e}=J.platform;if(t.button!==0||t.ctrlKey&&e||t.target!==this.div)return;if(this.#r=!0,this.#b?.isDrawer){this.startDrawingSession(t);return}const s=this.#c.getActive();this.#e=!s||s.isEmpty()}startDrawingSession(t){if(this.div.focus({preventScroll:!0}),this.#l){this.#b.startDrawing(this,this.#c,!1,t);return}this.#c.setCurrentDrawingSession(this),this.#l=new AbortController;const e=this.#c.combinedSignal(this.#l);this.div.addEventListener("blur",({relatedTarget:s})=>{s&&!this.div.contains(s)&&(this.#u=null,this.commitOrRemove())},{signal:e}),this.#b.startDrawing(this,this.#c,!1,t)}pause(t){if(t){const{activeElement:e}=document;this.div.contains(e)&&(this.#u=e);return}this.#u&&setTimeout(()=>{this.#u?.focus(),this.#u=null},0)}endDrawingSession(t=!1){return this.#l?(this.#c.setCurrentDrawingSession(null),this.#l.abort(),this.#l=null,this.#u=null,this.#b.endDrawing(t)):null}findNewParent(t,e,s){const i=this.#c.findParent(e,s);return i===null||i===this?!1:(i.changeParent(t),!0)}commitOrRemove(){return this.#l?(this.endDrawingSession(),!0):!1}onScaleChanging(){this.#l&&this.#b.onScaleChangingWhenDrawing(this)}destroy(){this.commitOrRemove(),this.#c.getActive()?.parent===this&&(this.#c.commitOrRemove(),this.#c.setActiveEditor(null)),this.#n&&(clearTimeout(this.#n),this.#n=null);for(const t of this.#a.values())this.#t?.removePointerInTextLayer(t.contentDiv),t.setParent(null),t.isAttachedToDOM=!1,t.div.remove();this.div=null,this.#a.clear(),this.#c.removeLayer(this)}#v(){for(const t of this.#a.values())t.isEmpty()&&t.remove()}async render({viewport:t}){this.viewport=t,we(this.div,t);for(const e of this.#c.getEditors(this.pageIndex))this.add(e),e.rebuild();await this.#c.findClonesForPage(this),this.div.hidden=this.isEmpty,this.updateMode()}update({viewport:t}){this.#c.commitOrRemove(),this.#v();const e=this.viewport.rotation,s=t.rotation;if(this.viewport=t,we(this.div,{rotation:s}),e!==s)for(const i of this.#a.values())i.rotate(s)}get pageDimensions(){const{pageWidth:t,pageHeight:e}=this.viewport.rawDims;return[t,e]}get scale(){return this.#c.viewParameters.realScale}}function Hc(u,t){return u===t?0:u.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function Ds(u){return u?u.nodeType===Node.ELEMENT_NODE?u.closest(".textLayer"):u.parentElement?.closest(".textLayer")||null:null}function Uc(u,t,e,s){if(u===e)return t<=s;const i=u.compareDocumentPosition(e);return i&Node.DOCUMENT_POSITION_FOLLOWING?!0:i&Node.DOCUMENT_POSITION_PRECEDING?!1:null}function ur(u,t,e){if(u.nodeType!==Node.ELEMENT_NODE||!u.classList.contains("textLayer")||t!==u.childNodes.length)return{container:u,offset:t};let s=u.lastChild;return s?.nodeType===Node.ELEMENT_NODE&&s.classList.contains("endOfContent")&&(s=s.previousSibling),!s||!e.contains(s)?null:s.nodeType===Node.TEXT_NODE?{container:s,offset:s.textContent.length}:{container:s,offset:s.childNodes.length}}class U{#t=null;#e=new Map;#s=null;#i=null;#n=null;#a=null;#r=new Map;static#o=0;static#h=0;static#l=null;static#u=new Set;static#d=!1;static#p=new Set;static#m=new WeakMap;constructor({filterFactory:t=null,pageColors:e=null,pageIndex:s,textLayer:i=null}){if(this.pageIndex=s,this.#i=t,this.#n=e,i){const n=U.#m.get(i);if(n?.selectionDiv&&(n.selectionDiv.remove(),U.#u.delete(n.selectionDiv)),U.#m.set(i,{drawLayer:this}),U.#p.add(i),this.#s=i,this.#a=new MutationObserver(r=>{if(!(!this.#t||!this.#s?.isConnected||!U.#c())){for(const{addedNodes:a}of r)for(const o of a)if(o.nodeType===Node.ELEMENT_NODE&&o.classList.contains("endOfContent")){U.#y();return}}}),this.#a.observe(i,{childList:!0}),U.#l===null){U.#l=new AbortController;const{signal:r}=U.#l;document.addEventListener("selectionchange",U.#y.bind(U),{signal:r}),document.addEventListener("pointerdown",()=>{U.#d=!0},{signal:r}),document.addEventListener("pointerup",()=>{U.#d=!1},{signal:r}),window.addEventListener("blur",()=>{U.#d=!1},{signal:r})}}}setParent(t){if(!this.#t){this.#t=t,this.#s?.isConnected&&U.#c()&&U.#y();return}if(this.#t!==t){if(this.#e.size>0)for(const e of this.#e.values())e.remove(),t.append(e);this.#t=t}}static#g(t){const e=this.#m.get(t);e?.selectionDiv&&(e.selectionDiv.remove(),this.#u.delete(e.selectionDiv),e.selectionDiv=null,e.path=null)}static#c(){const t=document.getSelection();return!!t&&!t.isCollapsed}static#f(){return[...this.#p].filter(t=>t.isConnected).sort(Hc)}static#y(){const t=document.getSelection();if(!t||t.isCollapsed){for(const r of this.#u)r.remove();this.#u.clear();return}const e=new WeakMap,s=this.#f(),i=[];for(let r=0,a=t.rangeCount;r<a;r++){const o=t.getRangeAt(r);if(o.collapsed)continue;let{startContainer:l,startOffset:c,endContainer:h,endOffset:d}=o,f=Ds(l),p=Ds(h);const g=f===null,m=p===null;if(this.#d&&g!==m)return;if(t.rangeCount===1){const{anchorNode:A,anchorOffset:w,focusNode:x,focusOffset:S}=t,E=Ds(A),_=Ds(x),P=Uc(A,w,x,S);E&&_&&P!==null&&(P?(l=A,c=w,f=E,h=x,d=S,p=_):(l=x,c=S,f=_,h=A,d=w,p=E))}const b=s.filter(A=>o.intersectsNode(A));if(b.length===0)continue;let y=!1;if(f||(f=b[0],l=f,c=0,y=!0),p||(p=b.at(-1),h=p,d=p.childNodes.length,y=!0),h.nodeType===Node.ELEMENT_NODE){if(h.classList.contains("endOfContent")){const A=h.previousSibling;if(!A)continue;h=A,d=A.nodeType===Node.TEXT_NODE?A.textContent.length:A.childNodes.length}else if(h.classList.contains("textLayer")&&h.childNodes.length===d){const A=ur(h,d,p);if(!A)continue;h=A.container,d=A.offset}}if(l.nodeType===Node.ELEMENT_NODE){const A=ur(l,c,f);if(!A)continue;l=A.container,c=A.offset}if(f===p&&!y&&b.includes(f)){i.push([o,f]);continue}for(const A of b){const w=A.firstChild;if(!w)continue;const x=document.createRange();if(A===f?x.setStart(l,c):x.setStartBefore(w),A===p)x.setEnd(h,d);else{const S=A.lastChild;if(!S)continue;if(S.nodeType===Node.ELEMENT_NODE&&S.classList.contains("endOfContent")){const E=S.previousSibling;if(!E)continue;x.setEndAfter(E)}else x.setEndAfter(S)}x.collapsed||i.push([x,A])}}const n=new Set(i.map(r=>r[1]));for(const r of this.#p)n.has(r)||this.#g(r);for(const[r,a]of i){const o=U.#m.get(a);if(!o)continue;let l=e.get(a);if(!l){const p=a.getBoundingClientRect();l=(g,m,b,y)=>({x:(g-p.x)/p.width,y:(m-p.y)/p.height,width:b/p.width,height:y/p.height}),e.set(a,l)}const c=[];for(let{x:p,y:g,width:m,height:b}of r.getClientRects())m===0||b===0||({x:p,y:g,width:m,height:b}=l(p,g,m,b),!(m===1&&b===1)&&c.push(`M${p} ${g} h${m} v${b} h-${m} Z`));if(c.length===0)continue;const h=o.drawLayer;let d=o.selectionDiv,f=o.path;if(!d){const p=`clip_selection_${U.#h++}`;d=document.createElement("div"),d.className="selection",d.style.clipPath=`url(#${p})`;const g=h.#i?.createSelectionStyle(h.#n);if(g)for(const[y,A]of Object.entries(g))d.style.setProperty(y,A);const m=U._svgFactory.create(1,1,!0);m.setAttribute("aria-hidden","true"),m.setAttribute("width","100%"),m.setAttribute("height","100%");const b=U._svgFactory.createElement("clipPath");b.setAttribute("id",p),b.setAttribute("clipPathUnits","objectBoundingBox"),f=U._svgFactory.createElement("path"),b.append(f),m.append(b),d.append(m),o.path=f,o.selectionDiv=d}!d.parentNode&&h.#t&&(h.#t.append(d),this.#u.add(d)),f.setAttribute("d",c.join(" "))}}static get _svgFactory(){return G(this,"_svgFactory",new Us)}static#A(t,[e,s,i,n]){const{style:r}=t;r.top=`${100*s}%`,r.left=`${100*e}%`,r.width=`${100*i}%`,r.height=`${100*n}%`}#b(){const t=U._svgFactory.create(1,1,!0);return this.#t.append(t),t.setAttribute("aria-hidden","true"),t}#S(t,e){const s=U._svgFactory.createElement("clipPath");t.append(s);const i=`clip_${e}`;s.setAttribute("id",i),s.setAttribute("clipPathUnits","objectBoundingBox");const n=U._svgFactory.createElement("use");return s.append(n),n.setAttribute("href",`#${e}`),n.classList.add("clip"),i}#C(t,e){for(const[s,i]of Object.entries(e))i===null?t.removeAttribute(s):t.setAttribute(s,i)}draw(t,e=!1,s=!1){const i=U.#o++,n=this.#b(),r=U._svgFactory.createElement("defs");n.append(r);const a=U._svgFactory.createElement("path");r.append(a);const o=`path_${i}`;a.setAttribute("id",o),a.setAttribute("vector-effect","non-scaling-stroke"),e&&this.#r.set(i,a);const l=s?this.#S(r,o):null,c=U._svgFactory.createElement("use");return n.append(c),c.setAttribute("href",`#${o}`),this.updateProperties(n,t),this.#e.set(i,n),{id:i,clipPathId:`url(#${l})`}}drawOutline(t,e){const s=U.#o++,i=this.#b(),n=U._svgFactory.createElement("defs");i.append(n);const r=U._svgFactory.createElement("path");n.append(r);const a=`path_${s}`;r.setAttribute("id",a),r.setAttribute("vector-effect","non-scaling-stroke");let o;if(e){const h=U._svgFactory.createElement("mask");n.append(h),o=`mask_${s}`,h.setAttribute("id",o),h.setAttribute("maskUnits","objectBoundingBox");const d=U._svgFactory.createElement("rect");h.append(d),d.setAttribute("width","1"),d.setAttribute("height","1"),d.setAttribute("fill","white");const f=U._svgFactory.createElement("use");h.append(f),f.setAttribute("href",`#${a}`),f.setAttribute("stroke","none"),f.setAttribute("fill","black"),f.setAttribute("fill-rule","nonzero"),f.classList.add("mask")}const l=U._svgFactory.createElement("use");i.append(l),l.setAttribute("href",`#${a}`),o&&l.setAttribute("mask",`url(#${o})`);const c=l.cloneNode();return i.append(c),l.classList.add("mainOutline"),c.classList.add("secondaryOutline"),this.updateProperties(i,t),this.#e.set(s,i),s}finalizeDraw(t,e){this.#r.delete(t),this.updateProperties(t,e)}updateProperties(t,e){if(!e)return;const{root:s,bbox:i,rootClass:n,path:r}=e,a=typeof t=="number"?this.#e.get(t):t;if(a){if(s&&this.#C(a,s),i&&U.#A(a,i),n){const{classList:o}=a;for(const[l,c]of Object.entries(n))o.toggle(l,c)}if(r){const l=a.firstElementChild.firstElementChild;this.#C(l,r)}}}updateParent(t,e){if(e===this)return;const s=this.#e.get(t);s&&(e.#t.append(s),this.#e.delete(t),e.#e.set(t,s))}remove(t){this.#r.delete(t),this.#t!==null&&(this.#e.get(t).remove(),this.#e.delete(t))}destroy(){this.#t=null;for(const t of this.#e.values())t.remove();this.#e.clear(),this.#r.clear(),this.#a?.disconnect(),this.#a=null,this.#s&&(U.#m.get(this.#s)?.drawLayer===this&&(U.#g(this.#s),U.#m.delete(this.#s),U.#p.delete(this.#s),U.#p.size===0&&(U.#l?.abort(),U.#l=null,U.#d=!1)),this.#s=null)}}function Ls(u){return`${(u*100).toFixed(2)}%`}class Gs{#t=[];#e=new Map;#s=null;#i=0;#n=0;#a=0;static#r=null;constructor(t,e,s,i){this.#i=t,this.#t=e,this.#n=s.rawDims.pageWidth,this.#a=s.rawDims.pageHeight,this.#s=i}render(){const t=document.createElement("div");t.className="textLayerImages";for(let e=0;e<this.#t.length;e+=6){const s=this.#o(this.#t.subarray(e,e+6));s&&t.append(s)}return t.addEventListener("contextmenu",e=>{if(!(e.target instanceof HTMLCanvasElement))return;const s=e.target,i=this.#e.get(s);if(!i)return;const n=Gs.#r?.deref();if(n===s)return;n&&(n.width=0,n.height=0),Gs.#r=new WeakRef(s);const{inverseTransform:r,x1:a,y1:o,width:l,height:c}=i,h=this.#s(),d=Math.ceil(a*h.width),f=Math.ceil(o*h.height),p=Math.floor((a+l/this.#n)*h.width),g=Math.floor((o+c/this.#a)*h.height);s.width=p-d,s.height=g-f;const m=s.getContext("2d");m.setTransform(...r),m.translate(-d,-f),m.drawImage(h,0,0)}),t}#o([t,e,s,i,n,r]){const a=Math.hypot((n-t)*this.#n,(r-e)*this.#a),o=Math.hypot((s-t)*this.#n,(i-e)*this.#a);if(a<this.#i||o<this.#i)return null;const l=[(n-t)*this.#n/a,(r-e)*this.#a/a,(s-t)*this.#n/o,(i-e)*this.#a/o,0,0],c=k.inverseTransform(l),h=document.createElement("canvas");return h.className="textLayerImagePlaceholder",h.width=0,h.height=0,Object.assign(h.style,{opacity:0,position:"absolute",left:Ls(t),top:Ls(e),width:Ls(a/this.#n),height:Ls(o/this.#a),transformOrigin:"0% 0%",transform:`matrix(${l.join(",")})`}),this.#e.set(h,{inverseTransform:c,width:a,height:o,x1:t,y1:e}),h}}globalThis._pdfjsTestingUtils={HighlightOutliner:zi};globalThis.pdfjsLib={AbortException:le,AnnotationEditorLayer:te,AnnotationEditorParamsType:W,AnnotationEditorType:$,AnnotationEditorUIManager:ce,AnnotationLayer:ln,AnnotationMode:ae,AnnotationType:ct,applyOpacity:Ko,build:pc,ColorPicker:Nt,createValidAbsoluteUrl:yr,CSSConstants:Yo,DOMSVGFactory:Us,DrawLayer:U,FeatureTest:J,fetchData:Ki,findContrastColor:qo,getDocument:Br,getFilenameFromUrl:zo,getPdfFilenameFromUrl:Vo,getRGB:cs,getRGBA:ls,getUuid:vr,GlobalWorkerOptions:Oe,ImageKind:Fs,InvalidPDFException:Fi,isDataScheme:Ys,isPdfFile:Qi,isValidExplicitDest:yl,makeArr:as,makeMap:Yi,makeObj:Oi,MathClamp:et,noContextMenu:Ft,normalizeUnicode:Go,OPS:Kt,OutputScale:Qt,PasswordException:Ni,PasswordResponses:Fo,PDFDataRangeTransport:jr,PDFDateString:Ri,PDFWorker:ns,PermissionFlag:No,PixelsPerInch:Be,RenderingCancelledException:qi,renderRichText:wr,ResponseException:js,setLayerDimensions:we,shadow:G,SignatureExtractor:De,stopEvent:ot,SupportedImageMimeTypes:Bi,TextLayer:Tt,TextLayerImages:Gs,TouchManager:Ks,updateUrlHash:Ar,Util:k,VerbosityLevel:zs,version:fc,XfaLayer:xr};const Gc="/assets/pdf.worker.min-DEtVeC4l.mjs";Oe.workerSrc=Gc;async function $c(u){const t=await u.arrayBuffer(),e=await Br({data:t}).promise,s=[];for(let i=1;i<=e.numPages;i++){const a=(await(await e.getPage(i)).getTextContent()).items.map(o=>"str"in o?o.str:"").join(" ");s.push(a)}return s.join(`
56
56
 
57
- `)}function fr(u){return u>=1e6?`${(u/1e6).toFixed(1)}M`:u>=1e3?`${(u/1e3).toFixed(1)}k`:String(u)}function zc({ctxUsed:u,ctxMax:t}){if(t<=0)return null;const e=t>0?u/t:0,s=Math.min(1,e),i=Math.round(s*100),n=e>.9?"var(--err)":e>.75?"var(--warn)":"var(--accent)",r=e>.9?{color:"var(--err)"}:e>.75?{color:"var(--warn)"}:{},a=e>.9?"Context nearly full — older messages may be truncated":`Context: ${u.toLocaleString()} / ${t.toLocaleString()} tokens`;return C.jsxs("div",{className:"flex items-center gap-1.5 ml-auto",title:a,children:[C.jsx("div",{className:"h-[3px] w-20 overflow-hidden rounded-full shrink-0",style:{background:"var(--border)"},children:C.jsx("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${(s*100).toFixed(1)}%`,background:n}})}),C.jsx("span",{className:"text-[11px] text-faint whitespace-nowrap tabular-nums shrink-0",style:r,children:`${fr(u)} / ${fr(t)} · ${i}%`})]})}const Vc=new Set(["filesystem"]),Wc=[{key:"temperature",label:"Temperature",min:0,max:2,step:.01,def:.8,modelField:"temp"},{key:"top_p",label:"Top P",min:0,max:1,step:.01,def:.95,modelField:"topP"},{key:"top_k",label:"Top K",min:0,max:200,step:1,def:40,modelField:"topK"},{key:"min_p",label:"Min P",min:0,max:1,step:.01,def:.05,modelField:"minP"}];function Xc({conv:u,draft:t,modelSampling:e}){const s=pr(),[i,n]=H.useState(!1),[r,a]=H.useState(""),[o,l]=H.useState({}),[c,h]=H.useState([]),[d,f]=H.useState(!0),[p,g]=H.useState(!1),m=gr({queryKey:br.list(),queryFn:mr,enabled:i,staleTime:0}),b=(m.data??[]).filter(T=>!Vc.has(T.id));H.useEffect(()=>{i&&(g(!1),u?(a(u.systemPrompt??""),l(u.sampling??{}),h(u.skillIds??[]),f(u.preserveThinking??!1)):t&&(a(t.systemPrompt??""),l(t.sampling??{}),h(t.skillIds??[]),f(t.preserveThinking??!0)))},[i,u,t]);const y=T=>h(R=>R.includes(T)?R.filter(V=>V!==T):[...R,T]),A=b.length>0&&b.every(T=>c.includes(T.id)),w=b.some(T=>c.includes(T.id)),x=H.useRef(null);H.useEffect(()=>{x.current&&(x.current.indeterminate=w&&!A)},[w,A]);const S=()=>h(A?[]:b.map(T=>T.id)),E=Object.keys(o).length>0,_=u?.expertMode??!1,P=(T,R)=>l(V=>({...V,[T]:R})),I=()=>l({}),N=()=>{if(!u){t?.onChange({systemPrompt:r,sampling:o,skillIds:c,preserveThinking:d}),n(!1);return}const T=_?{id:u.id,sampling:o,skillIds:c,preserveThinking:d}:{id:u.id,systemPrompt:r,sampling:o,skillIds:c,preserveThinking:d};s.update.mutate(T,{onSuccess:()=>{yt.success("Thread settings saved"),n(!1)},onError:R=>yt.error(R instanceof Pe?R.message:"Could not save settings.")})};return C.jsxs(ho,{open:i,onOpenChange:n,children:[C.jsx(uo,{asChild:!0,children:C.jsx(re,{size:"icon",variant:"ghost",className:"h-8 w-8",title:"Thread settings — system prompt & sampling overrides",disabled:!u&&!t,children:C.jsx(_a,{size:15})})}),C.jsxs(fo,{className:"max-w-md",children:[C.jsx(po,{children:C.jsx(go,{children:"Thread settings"})}),C.jsxs("div",{className:"flex max-h-[60vh] flex-col gap-5 overflow-y-auto",children:[C.jsxs("div",{children:[C.jsx("label",{className:"mb-1.5 block text-[11px] font-medium uppercase tracking-wide text-faint",children:"System prompt"}),_?C.jsx("p",{className:"rounded-lg border border-border bg-panel-2 px-3 py-2 text-[13px] text-muted",children:"System prompt is managed by TurboLLM for the Expert assistant."}):C.jsx("textarea",{rows:4,value:r,onChange:T=>a(T.target.value),placeholder:"Leave blank to use the model's built-in default",className:"w-full resize-none rounded-lg border border-border bg-bg px-3 py-2 text-[14px] leading-[1.6] text-ink outline-none placeholder:text-faint focus:border-[color:var(--accent)]"})]}),C.jsxs("div",{children:[C.jsxs("div",{className:"mb-2.5 flex items-center justify-between",children:[C.jsx("span",{className:"text-[11px] font-medium uppercase tracking-wide text-faint",children:"Sampling overrides"}),E&&C.jsx("button",{type:"button",onClick:I,className:"text-[12px] text-muted underline-offset-2 hover:text-ink hover:underline",children:"Reset to model defaults"})]}),C.jsx("div",{className:"flex flex-col gap-3.5",children:Wc.map(T=>{const R=T.key in o,q=e?.[T.modelField]??T.def,B=R?o[T.key]??q:q;return C.jsxs("div",{className:"flex items-center gap-3",children:[C.jsx("span",{className:"w-24 shrink-0 text-[13px]",style:{color:R?"var(--ink)":"var(--muted)"},children:T.label}),C.jsx("input",{type:"range",min:T.min,max:T.max,step:T.step,value:B,onChange:j=>P(T.key,parseFloat(j.target.value)),className:"flex-1",style:{accentColor:"var(--accent)"}}),C.jsx("span",{className:"w-10 shrink-0 text-right font-mono text-[13px] tabular-nums text-ink",children:T.step<1?B.toFixed(2):String(Math.round(B))})]},T.key)})}),!E&&C.jsx("p",{className:"mt-2.5 text-[12px] text-faint",children:"Using model defaults · move any slider to override for this thread"})]}),C.jsxs(yo,{open:p,onOpenChange:g,children:[C.jsxs("div",{className:"flex items-center gap-2",children:[C.jsxs(Ao,{className:"flex flex-1 items-center gap-2 text-left",children:[C.jsx(xo,{size:14,className:Ns("shrink-0 text-faint transition-transform",p&&"rotate-90")}),C.jsxs("span",{className:"text-[11px] font-medium uppercase tracking-wide text-faint",children:["Skills",c.length>0?` (${c.length})`:""]})]}),b.length>0&&C.jsxs("label",{className:"flex cursor-pointer items-center gap-1.5 text-[11px] text-muted",children:[C.jsx("input",{ref:x,type:"checkbox",checked:A,onChange:S}),"All"]})]}),C.jsx(vo,{children:C.jsx("div",{className:"mt-2.5",children:m.isLoading?C.jsx("p",{className:"text-[12px] text-faint",children:"Loading…"}):b.length===0?C.jsx("p",{className:"text-[12px] text-faint",children:"No skills yet — create one under Skills."}):C.jsx("div",{className:"flex flex-col gap-2",children:b.map(T=>C.jsxs("label",{className:"flex cursor-pointer items-start gap-2 text-[13px]",children:[C.jsx("input",{type:"checkbox",className:"mt-0.5",checked:c.includes(T.id),onChange:()=>y(T.id)}),C.jsxs("span",{className:"flex flex-col",children:[C.jsx("span",{className:"text-ink",children:T.name}),T.description&&C.jsx("span",{className:"text-[12px] text-muted",children:T.description})]})]},T.id))})})})]}),C.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-lg border border-border bg-panel-2 px-3 py-2.5",children:[C.jsxs("span",{className:"flex flex-col",children:[C.jsx("span",{className:"text-[13px] text-ink",children:"Preserve thinking across turns"}),C.jsx("span",{className:"text-[12px] text-muted",children:"Resend the model's past reasoning on later turns, not just its final answers — uses more tokens per request."})]}),C.jsx(bo,{checked:d,onCheckedChange:f})]})]}),C.jsxs("div",{className:"mt-5 flex justify-end gap-2",children:[C.jsx(mo,{asChild:!0,children:C.jsx(re,{variant:"ghost",size:"sm",children:"Cancel"})}),C.jsx(re,{size:"sm",onClick:N,disabled:s.update.isPending,children:s.update.isPending?"Saving…":"Save"})]})]})]})}function kh(){const{data:u}=Ta(),t=u?.model,e=u?.engine.state,{query:s}=ka(),i=Pa(),n=i.data?.engines.find(v=>v.id===i.data?.activeEngineId),a=Ma(t?.key??null,n?.id).data?.profile.sampling,{convId:o}=va(),[l]=xa(),c=l.get("readonly")==="1",[h,d]=H.useState(o??null);H.useEffect(()=>{h&&Ia(h)},[h]);const f=H.useRef(h);f.current=h;const[p,g]=H.useState({}),m=h?p[h]:void 0,[b,y]=H.useState(new Set),[A,w]=H.useState(""),[x,S]=H.useState(null),[E,_]=H.useState(null),[P,I]=H.useState(!1),[N,T]=H.useState(!0),R=lo(),[V,q]=H.useState(!1),B=H.useRef(null),[j,pt]=H.useState(()=>Math.min(Math.max(Ja(),Za),to())),[nt,St]=H.useState([]),[jt,Q]=H.useState(null),Z=H.useRef(null),[Ht,ie]=H.useState(null),[Jt,rt]=H.useState(null),ds=v=>{if(v){const D=localStorage.getItem(`tllm.thinkingBudget.${v}`);if(D!==null)return Number(D)}const M=localStorage.getItem("tllm.thinkingBudget.default");return M!==null?Number(M):-1},[_e,us]=H.useState(()=>ds(null)),je=v=>{h&&localStorage.setItem(`tllm.thinkingBudget.${h}`,String(v)),us(v)},[Ot,he]=H.useState(()=>Si()),ri=Da(),Kr=La(),ai=wo(ri.data??[],Kr.data??{}),oi=ai.find(v=>v.id===Ot),Ut=H.useRef({}),li=H.useRef({}),He=H.useRef(null),Ue=H.useRef(null),qr=H.useRef(null),un=H.useRef(null),de=H.useRef(!1),fs=H.useRef({}),ci=H.useRef(null),Zt=Na(),ue=pr(),fn=Fa(),Ge=Oa(),Te=Ea(h).data,$e=Te?.messages??[],[ps,hi]=H.useState([]),gs=Te?.skillIds??ps,[di,pn]=H.useState(""),[ms,gn]=H.useState({}),[ui,mn]=H.useState(!0),bn=H.useCallback(v=>{v.systemPrompt!==void 0&&pn(v.systemPrompt),v.sampling!==void 0&&gn(v.sampling),v.skillIds!==void 0&&hi(v.skillIds),v.preserveThinking!==void 0&&mn(v.preserveThinking)},[]),yn=!!Te,An=!!t,Qr=H.useMemo(()=>{if(!(yn||!An))return{systemPrompt:di,sampling:ms,skillIds:ps,preserveThinking:ui,onChange:bn}},[yn,An,di,ms,ps,ui,bn]),Jr=gr({queryKey:br.list(),queryFn:mr,staleTime:3e4}),Zr=new Set(["filesystem"]),vn=(Jr.data??[]).filter(v=>!Zr.has(v.id)),fi=/^\/([a-z0-9-]*)$/i.exec(A),bs=fi?.[1]?.toLowerCase()??"",fe=fi?vn.filter(v=>!bs||v.id.includes(bs)||v.name.toLowerCase().includes(bs)):[],pi=!!fi&&fe.length>0&&!m,[gi,mi]=H.useState(0);H.useEffect(()=>{mi(0)},[bs,pi]);const xn=v=>{if(w(`/${v.id} `),setTimeout(ys,0),h){const M=Array.from(new Set([...gs,v.id]));ue.update.mutate({id:h,skillIds:M})}else hi(M=>Array.from(new Set([...M,v.id])));yt.success(`Skill enabled: ${v.name}`),setTimeout(()=>Ue.current?.focus(),0)},bi=Rn(v=>v.pendingConversationId),ta=Rn(v=>v.setPendingConversationId);H.useEffect(()=>{bi&&(yi(bi),ta(null))},[bi]);const ea=(fn.data?.models??[]).filter(v=>v.compatibleWithActiveEngine),sa=Ge.load.isPending||Ge.eject.isPending||e==="starting"||e==="stopping",ia=v=>{Ge.load.mutate({key:v},{onError:M=>yt.error(M instanceof Pe?M.message:"Could not load model.")})},na=()=>{if(Object.keys(Ut.current).length>0){for(const v of Object.values(Ut.current))v.abort();Ut.current={}}g(v=>Object.keys(v).length>0?{}:v),Ge.eject.mutate(void 0,{onError:v=>yt.error(v instanceof Pe?v.message:"Could not eject model.")})},ys=()=>{const v=Ue.current;v&&(v.style.height="auto",v.style.height=`${Math.min(v.scrollHeight,160)}px`)},As=H.useCallback((v=!1)=>{const M=He.current;M&&(v||!de.current)&&(M.scrollTo({top:M.scrollHeight,behavior:"smooth"}),I(!1))},[]),vs=H.useCallback(()=>{const v=He.current,M=f.current;if(!v||!M)return;v.scrollHeight-v.scrollTop-v.clientHeight<80?delete fs.current[M]:fs.current[M]=v.scrollTop},[]);H.useEffect(()=>{const v=He.current;if(!v)return;const M=()=>{const D=v.scrollHeight-v.scrollTop-v.clientHeight<80;de.current=!D,I(!D&&!!m),vs()};return v.addEventListener("scroll",M),()=>v.removeEventListener("scroll",M)},[m,vs]),H.useEffect(()=>{m&&As()},[m,As]),H.useEffect(()=>{const v=He.current,M=ci.current;if(!(!v||!h||Te?.id!==h||M?.id!==h))if(ci.current=null,M.top===null)de.current=!1,v.scrollTop=v.scrollHeight,I(!1);else{v.scrollTop=M.top;const D=v.scrollHeight-M.top-v.clientHeight<80;de.current=!D,I(!D&&!!p[h])}},[h,Te?.id]),H.useEffect(()=>{const v=M=>{if((M.ctrlKey||M.metaKey)&&(M.key==="n"||M.key==="N")){M.preventDefault(),Sn();return}M.key==="Escape"&&h&&p[h]&&Cn()};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)}),H.useEffect(()=>{us(ds(h))},[h]);const wn=async(v,M,D)=>{try{await navigator.clipboard.writeText(v),yt.success(M)}catch{Q({text:v,title:D})}},ra=async()=>{if(h)try{const{url:v}=await Ba(h);await wn(v,"Link copied","Share link")}catch{yt.error("Could not get share URL.")}},aa=async()=>{if(h)try{const v=await ja(h);await wn(v,"Debug info copied","Debug snapshot")}catch{yt.error("Could not get debug info.")}},oa=()=>{h&&Ha(h)},la=async v=>{const M=v.target.files?.[0];if(v.target.value="",!M)return;ie(null),rt(null);let D;try{const F=await M.text();D=JSON.parse(F)}catch{ie("Invalid file — could not parse JSON.");return}if(!Array.isArray(D)){const F=D?.model;F&&((fn.data?.models??[]).some(Ct=>Ct.key===F)||rt(F))}try{const{id:F}=await Ua(D);Zt.invalidateQueries({queryKey:["conversations"]}),yi(F)}catch(F){const at=F instanceof Pe?F.message:"Import failed. Check the file is a valid .turbollm-chat.json or OpenAI-format JSON.";ie(at)}},Sn=()=>{vs(),d(null),w(""),he(Si()),Ue.current?.focus()},yi=v=>{vs(),ci.current={id:v,top:fs.current[v]??null},d(v),S(null),he(So(v)),b.has(v)&&y(M=>{const D=new Set(M);return D.delete(v),D})},ca=v=>{v===h&&(Ut.current[v]?.abort(),delete Ut.current[v],delete fs.current[v],g(M=>{if(!(v in M))return M;const D={...M};return delete D[v],D}),d(null),S(null),w(""),he(Si()))},Cn=async()=>{h&&(Ut.current[h]?.abort(),await ue.stop.mutateAsync(h).catch(()=>{}))},ha=async v=>{const M=Array.from(v.target.files??[]),D=await Promise.all(M.map(async F=>{if(F.type==="application/pdf"||/\.pdf$/i.test(F.name)){const Ct=await $c(F);return{file:F,dataUrl:Ct}}const Gt=await new Promise(Ct=>{const $t=new FileReader;$t.onload=()=>Ct($t.result),F.type.startsWith("image/")?$t.readAsDataURL(F):$t.readAsText(F)});return{file:F,dataUrl:Gt}}));St(F=>[...F,...D]),v.target.value=""},En=v=>{const M=Date.now(),D=[...li.current[v]??[],M].filter(F=>F>M-2e3);return li.current[v]=D,Math.round(D.length/2*10)/10},xs=(v,M)=>{g(D=>D[v]?{...D,[v]:M(D[v])}:D)},ws=v=>{g(M=>{if(!(v in M))return M;const D={...M};return delete D[v],D})},Ai=async(v,M)=>{try{for await(const D of M)if(D.event==="meta")li.current[v]=[],g(F=>({...F,[v]:{assistantId:D.data.assistantMessageId,content:"",reasoning:"",progress:null,liveGenTps:0,genTokens:0,timeline:[]}})),Zt.invalidateQueries({queryKey:["conversation",v]});else if(D.event==="progress")xs(v,F=>({...F,progress:{phase:D.data.phase,pct:D.data.pct,tps:D.data.tps}}));else if(D.event==="reasoning"){const F=En(v);xs(v,at=>({...at,reasoning:at.reasoning+D.data.delta,progress:null,liveGenTps:F,genTokens:at.genTokens+1}))}else if(D.event==="delta"){const F=En(v);xs(v,at=>({...at,content:at.content+D.data.delta,timeline:Wa(at.timeline,D.data.delta),progress:null,liveGenTps:F,genTokens:at.genTokens+1}))}else if(D.event==="tool_call"){const F=D.data,at={id:F.id,name:F.name,args:F.args,status:F.status,result:F.result};xs(v,Gt=>({...Gt,timeline:Xa(Gt.timeline,at)}))}else D.event==="done"?(g(F=>{const at=F[v];if(at&&Zt.setQueryData(["conversation",v],Ct=>Ct&&{...Ct,messages:(Ct.messages??[]).map($t=>$t.id===at.assistantId?{...$t,content:at.content,reasoning:at.reasoning}:$t)}),!(v in F))return F;const Gt={...F};return delete Gt[v],Gt}),v!==f.current&&y(F=>new Set(F).add(v)),Zt.invalidateQueries({queryKey:["conversation",v]}),Zt.invalidateQueries({queryKey:["conversations"]}),v===f.current&&setTimeout(()=>As(),80)):D.event==="error"&&(ws(v),v!==f.current&&y(F=>new Set(F).add(v)),Zt.invalidateQueries({queryKey:["conversation",v]}),yt.error(D.data.message));ws(v),Zt.invalidateQueries({queryKey:["conversation",v]})}catch(D){ws(v),D?.name!=="AbortError"&&yt.error(D instanceof Pe?D.message:"Request failed."),Zt.invalidateQueries({queryKey:["conversation",v]})}finally{delete Ut.current[v]}},_n=async v=>{const M=A.trim();if(!M&&nt.length===0||m)return;if(e!=="running"||!t){yt.error("Load a model first.");return}const D=/^\/([a-z0-9-]+)(?:\s+([\s\S]*))?$/.exec(M),F=D?vn.find(mt=>mt.id===D[1]):void 0,at=F?(D?.[2]??"").trim():M,Gt=nt.filter(mt=>mt.file.type.startsWith("image/")),Ct=nt.filter(mt=>!mt.file.type.startsWith("image/")),$t=Gt.map(mt=>mt.dataUrl),ba=Ct.map(mt=>`[Attached: ${mt.file.name}]
57
+ `)}function fr(u){return u>=1e6?`${(u/1e6).toFixed(1)}M`:u>=1e3?`${(u/1e3).toFixed(1)}k`:String(u)}function zc({ctxUsed:u,ctxMax:t}){if(t<=0)return null;const e=t>0?u/t:0,s=Math.min(1,e),i=Math.round(s*100),n=e>.9?"var(--err)":e>.75?"var(--warn)":"var(--accent)",r=e>.9?{color:"var(--err)"}:e>.75?{color:"var(--warn)"}:{},a=e>.9?"Context nearly full — older messages may be truncated":`Context: ${u.toLocaleString()} / ${t.toLocaleString()} tokens`;return C.jsxs("div",{className:"flex items-center gap-1.5 ml-auto",title:a,children:[C.jsx("div",{className:"h-[3px] w-20 overflow-hidden rounded-full shrink-0",style:{background:"var(--border)"},children:C.jsx("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${(s*100).toFixed(1)}%`,background:n}})}),C.jsx("span",{className:"text-[11px] text-faint whitespace-nowrap tabular-nums shrink-0",style:r,children:`${fr(u)} / ${fr(t)} · ${i}%`})]})}const Vc=new Set(["filesystem"]),Wc=[{key:"temperature",label:"Temperature",min:0,max:2,step:.01,def:.8,modelField:"temp"},{key:"top_p",label:"Top P",min:0,max:1,step:.01,def:.95,modelField:"topP"},{key:"top_k",label:"Top K",min:0,max:200,step:1,def:40,modelField:"topK"},{key:"min_p",label:"Min P",min:0,max:1,step:.01,def:.05,modelField:"minP"}];function Xc({conv:u,draft:t,modelSampling:e}){const s=pr(),[i,n]=H.useState(!1),[r,a]=H.useState(""),[o,l]=H.useState({}),[c,h]=H.useState([]),[d,f]=H.useState(!0),[p,g]=H.useState(!1),m=gr({queryKey:br.list(),queryFn:mr,enabled:i,staleTime:0}),b=(m.data??[]).filter(T=>!Vc.has(T.id));H.useEffect(()=>{i&&(g(!1),u?(a(u.systemPrompt??""),l(u.sampling??{}),h(u.skillIds??[]),f(u.preserveThinking??!1)):t&&(a(t.systemPrompt??""),l(t.sampling??{}),h(t.skillIds??[]),f(t.preserveThinking??!0)))},[i,u,t]);const y=T=>h(R=>R.includes(T)?R.filter(V=>V!==T):[...R,T]),A=b.length>0&&b.every(T=>c.includes(T.id)),w=b.some(T=>c.includes(T.id)),x=H.useRef(null);H.useEffect(()=>{x.current&&(x.current.indeterminate=w&&!A)},[w,A]);const S=()=>h(A?[]:b.map(T=>T.id)),E=Object.keys(o).length>0,_=u?.expertMode??!1,P=(T,R)=>l(V=>({...V,[T]:R})),I=()=>l({}),N=()=>{if(!u){t?.onChange({systemPrompt:r,sampling:o,skillIds:c,preserveThinking:d}),n(!1);return}const T=_?{id:u.id,sampling:o,skillIds:c,preserveThinking:d}:{id:u.id,systemPrompt:r,sampling:o,skillIds:c,preserveThinking:d};s.update.mutate(T,{onSuccess:()=>{yt.success("Thread settings saved"),n(!1)},onError:R=>yt.error(R instanceof Pe?R.message:"Could not save settings.")})};return C.jsxs(ho,{open:i,onOpenChange:n,children:[C.jsx(uo,{asChild:!0,children:C.jsx(re,{size:"icon",variant:"ghost",className:"h-8 w-8",title:"Thread settings — system prompt & sampling overrides",disabled:!u&&!t,children:C.jsx(_a,{size:15})})}),C.jsxs(fo,{className:"max-w-md",children:[C.jsx(po,{children:C.jsx(go,{children:"Thread settings"})}),C.jsxs("div",{className:"flex max-h-[60vh] flex-col gap-5 overflow-y-auto",children:[C.jsxs("div",{children:[C.jsx("label",{className:"mb-1.5 block text-[11px] font-medium uppercase tracking-wide text-faint",children:"System prompt"}),_?C.jsx("p",{className:"rounded-lg border border-border bg-panel-2 px-3 py-2 text-[13px] text-muted",children:"System prompt is managed by TurboLLM for the Expert assistant."}):C.jsx("textarea",{rows:4,value:r,onChange:T=>a(T.target.value),placeholder:"Leave blank to use the model's built-in default",className:"w-full resize-none rounded-lg border border-border bg-bg px-3 py-2 text-[14px] leading-[1.6] text-ink outline-none placeholder:text-faint focus:border-[color:var(--accent)]"})]}),C.jsxs("div",{children:[C.jsxs("div",{className:"mb-2.5 flex items-center justify-between",children:[C.jsx("span",{className:"text-[11px] font-medium uppercase tracking-wide text-faint",children:"Sampling overrides"}),E&&C.jsx("button",{type:"button",onClick:I,className:"text-[12px] text-muted underline-offset-2 hover:text-ink hover:underline",children:"Reset to model defaults"})]}),C.jsx("div",{className:"flex flex-col gap-3.5",children:Wc.map(T=>{const R=T.key in o,q=e?.[T.modelField]??T.def,B=R?o[T.key]??q:q;return C.jsxs("div",{className:"flex items-center gap-3",children:[C.jsx("span",{className:"w-24 shrink-0 text-[13px]",style:{color:R?"var(--ink)":"var(--muted)"},children:T.label}),C.jsx("input",{type:"range",min:T.min,max:T.max,step:T.step,value:B,onChange:j=>P(T.key,parseFloat(j.target.value)),className:"flex-1",style:{accentColor:"var(--accent)"}}),C.jsx("span",{className:"w-10 shrink-0 text-right font-mono text-[13px] tabular-nums text-ink",children:T.step<1?B.toFixed(2):String(Math.round(B))})]},T.key)})}),!E&&C.jsx("p",{className:"mt-2.5 text-[12px] text-faint",children:"Using model defaults · move any slider to override for this thread"})]}),C.jsxs(yo,{open:p,onOpenChange:g,children:[C.jsxs("div",{className:"flex items-center gap-2",children:[C.jsxs(Ao,{className:"flex flex-1 items-center gap-2 text-left",children:[C.jsx(xo,{size:14,className:Ns("shrink-0 text-faint transition-transform",p&&"rotate-90")}),C.jsxs("span",{className:"text-[11px] font-medium uppercase tracking-wide text-faint",children:["Skills",c.length>0?` (${c.length})`:""]})]}),b.length>0&&C.jsxs("label",{className:"flex cursor-pointer items-center gap-1.5 text-[11px] text-muted",children:[C.jsx("input",{ref:x,type:"checkbox",checked:A,onChange:S}),"All"]})]}),C.jsx(vo,{children:C.jsx("div",{className:"mt-2.5",children:m.isLoading?C.jsx("p",{className:"text-[12px] text-faint",children:"Loading…"}):b.length===0?C.jsx("p",{className:"text-[12px] text-faint",children:"No skills yet — create one under Skills."}):C.jsx("div",{className:"flex flex-col gap-2",children:b.map(T=>C.jsxs("label",{className:"flex cursor-pointer items-start gap-2 text-[13px]",children:[C.jsx("input",{type:"checkbox",className:"mt-0.5",checked:c.includes(T.id),onChange:()=>y(T.id)}),C.jsxs("span",{className:"flex flex-col",children:[C.jsx("span",{className:"text-ink",children:T.name}),T.description&&C.jsx("span",{className:"text-[12px] text-muted",children:T.description})]})]},T.id))})})})]}),C.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-lg border border-border bg-panel-2 px-3 py-2.5",children:[C.jsxs("span",{className:"flex flex-col",children:[C.jsx("span",{className:"text-[13px] text-ink",children:"Preserve thinking across turns"}),C.jsx("span",{className:"text-[12px] text-muted",children:"Resend the model's past reasoning on later turns, not just its final answers — uses more tokens per request."})]}),C.jsx(bo,{checked:d,onCheckedChange:f})]})]}),C.jsxs("div",{className:"mt-5 flex justify-end gap-2",children:[C.jsx(mo,{asChild:!0,children:C.jsx(re,{variant:"ghost",size:"sm",children:"Cancel"})}),C.jsx(re,{size:"sm",onClick:N,disabled:s.update.isPending,children:s.update.isPending?"Saving…":"Save"})]})]})]})}function _h(){const{data:u}=Ta(),t=u?.model,e=u?.engine.state,{query:s}=ka(),i=Pa(),n=i.data?.engines.find(v=>v.id===i.data?.activeEngineId),a=Ma(t?.key??null,n?.id).data?.profile.sampling,{convId:o}=va(),[l]=xa(),c=l.get("readonly")==="1",[h,d]=H.useState(o??null);H.useEffect(()=>{h&&Ia(h)},[h]);const f=H.useRef(h);f.current=h;const[p,g]=H.useState({}),m=h?p[h]:void 0,[b,y]=H.useState(new Set),[A,w]=H.useState(""),[x,S]=H.useState(null),[E,_]=H.useState(null),[P,I]=H.useState(!1),[N,T]=H.useState(!0),R=lo(),[V,q]=H.useState(!1),B=H.useRef(null),[j,pt]=H.useState(()=>Math.min(Math.max(Ja(),Za),to())),[nt,St]=H.useState([]),[jt,Q]=H.useState(null),Z=H.useRef(null),[Ht,ie]=H.useState(null),[Jt,rt]=H.useState(null),ds=v=>{if(v){const D=localStorage.getItem(`tllm.thinkingBudget.${v}`);if(D!==null)return Number(D)}const M=localStorage.getItem("tllm.thinkingBudget.default");return M!==null?Number(M):-1},[_e,us]=H.useState(()=>ds(null)),je=v=>{h&&localStorage.setItem(`tllm.thinkingBudget.${h}`,String(v)),us(v)},[Ot,he]=H.useState(()=>Si()),ri=Da(),Kr=La(),ai=wo(ri.data??[],Kr.data??{}),oi=ai.find(v=>v.id===Ot),Ut=H.useRef({}),li=H.useRef({}),He=H.useRef(null),Ue=H.useRef(null),qr=H.useRef(null),un=H.useRef(null),de=H.useRef(!1),fs=H.useRef({}),ci=H.useRef(null),Zt=Na(),ue=pr(),fn=Fa(),Ge=Oa(),Te=Ea(h).data,$e=Te?.messages??[],[ps,hi]=H.useState([]),gs=Te?.skillIds??ps,[di,pn]=H.useState(""),[ms,gn]=H.useState({}),[ui,mn]=H.useState(!0),bn=H.useCallback(v=>{v.systemPrompt!==void 0&&pn(v.systemPrompt),v.sampling!==void 0&&gn(v.sampling),v.skillIds!==void 0&&hi(v.skillIds),v.preserveThinking!==void 0&&mn(v.preserveThinking)},[]),yn=!!Te,An=!!t,Qr=H.useMemo(()=>{if(!(yn||!An))return{systemPrompt:di,sampling:ms,skillIds:ps,preserveThinking:ui,onChange:bn}},[yn,An,di,ms,ps,ui,bn]),Jr=gr({queryKey:br.list(),queryFn:mr,staleTime:3e4}),Zr=new Set(["filesystem"]),vn=(Jr.data??[]).filter(v=>!Zr.has(v.id)),fi=/^\/([a-z0-9-]*)$/i.exec(A),bs=fi?.[1]?.toLowerCase()??"",fe=fi?vn.filter(v=>!bs||v.id.includes(bs)||v.name.toLowerCase().includes(bs)):[],pi=!!fi&&fe.length>0&&!m,[gi,mi]=H.useState(0);H.useEffect(()=>{mi(0)},[bs,pi]);const xn=v=>{if(w(`/${v.id} `),setTimeout(ys,0),h){const M=Array.from(new Set([...gs,v.id]));ue.update.mutate({id:h,skillIds:M})}else hi(M=>Array.from(new Set([...M,v.id])));yt.success(`Skill enabled: ${v.name}`),setTimeout(()=>Ue.current?.focus(),0)},bi=Rn(v=>v.pendingConversationId),ta=Rn(v=>v.setPendingConversationId);H.useEffect(()=>{bi&&(yi(bi),ta(null))},[bi]);const ea=(fn.data?.models??[]).filter(v=>v.compatibleWithActiveEngine),sa=Ge.load.isPending||Ge.eject.isPending||e==="starting"||e==="stopping",ia=v=>{Ge.load.mutate({key:v},{onError:M=>yt.error(M instanceof Pe?M.message:"Could not load model.")})},na=()=>{if(Object.keys(Ut.current).length>0){for(const v of Object.values(Ut.current))v.abort();Ut.current={}}g(v=>Object.keys(v).length>0?{}:v),Ge.eject.mutate(void 0,{onError:v=>yt.error(v instanceof Pe?v.message:"Could not eject model.")})},ys=()=>{const v=Ue.current;v&&(v.style.height="auto",v.style.height=`${Math.min(v.scrollHeight,160)}px`)},As=H.useCallback((v=!1)=>{const M=He.current;M&&(v||!de.current)&&(M.scrollTo({top:M.scrollHeight,behavior:"smooth"}),I(!1))},[]),vs=H.useCallback(()=>{const v=He.current,M=f.current;if(!v||!M)return;v.scrollHeight-v.scrollTop-v.clientHeight<80?delete fs.current[M]:fs.current[M]=v.scrollTop},[]);H.useEffect(()=>{const v=He.current;if(!v)return;const M=()=>{const D=v.scrollHeight-v.scrollTop-v.clientHeight<80;de.current=!D,I(!D&&!!m),vs()};return v.addEventListener("scroll",M),()=>v.removeEventListener("scroll",M)},[m,vs]),H.useEffect(()=>{m&&As()},[m,As]),H.useEffect(()=>{const v=He.current,M=ci.current;if(!(!v||!h||Te?.id!==h||M?.id!==h))if(ci.current=null,M.top===null)de.current=!1,v.scrollTop=v.scrollHeight,I(!1);else{v.scrollTop=M.top;const D=v.scrollHeight-M.top-v.clientHeight<80;de.current=!D,I(!D&&!!p[h])}},[h,Te?.id]),H.useEffect(()=>{const v=M=>{if((M.ctrlKey||M.metaKey)&&(M.key==="n"||M.key==="N")){M.preventDefault(),Sn();return}M.key==="Escape"&&h&&p[h]&&Cn()};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)}),H.useEffect(()=>{us(ds(h))},[h]);const wn=async(v,M,D)=>{try{await navigator.clipboard.writeText(v),yt.success(M)}catch{Q({text:v,title:D})}},ra=async()=>{if(h)try{const{url:v}=await Ba(h);await wn(v,"Link copied","Share link")}catch{yt.error("Could not get share URL.")}},aa=async()=>{if(h)try{const v=await ja(h);await wn(v,"Debug info copied","Debug snapshot")}catch{yt.error("Could not get debug info.")}},oa=()=>{h&&Ha(h)},la=async v=>{const M=v.target.files?.[0];if(v.target.value="",!M)return;ie(null),rt(null);let D;try{const F=await M.text();D=JSON.parse(F)}catch{ie("Invalid file — could not parse JSON.");return}if(!Array.isArray(D)){const F=D?.model;F&&((fn.data?.models??[]).some(Ct=>Ct.key===F)||rt(F))}try{const{id:F}=await Ua(D);Zt.invalidateQueries({queryKey:["conversations"]}),yi(F)}catch(F){const at=F instanceof Pe?F.message:"Import failed. Check the file is a valid .turbollm-chat.json or OpenAI-format JSON.";ie(at)}},Sn=()=>{vs(),d(null),w(""),he(Si()),Ue.current?.focus()},yi=v=>{vs(),ci.current={id:v,top:fs.current[v]??null},d(v),S(null),he(So(v)),b.has(v)&&y(M=>{const D=new Set(M);return D.delete(v),D})},ca=v=>{v===h&&(Ut.current[v]?.abort(),delete Ut.current[v],delete fs.current[v],g(M=>{if(!(v in M))return M;const D={...M};return delete D[v],D}),d(null),S(null),w(""),he(Si()))},Cn=async()=>{h&&(Ut.current[h]?.abort(),await ue.stop.mutateAsync(h).catch(()=>{}))},ha=async v=>{const M=Array.from(v.target.files??[]),D=await Promise.all(M.map(async F=>{if(F.type==="application/pdf"||/\.pdf$/i.test(F.name)){const Ct=await $c(F);return{file:F,dataUrl:Ct}}const Gt=await new Promise(Ct=>{const $t=new FileReader;$t.onload=()=>Ct($t.result),F.type.startsWith("image/")?$t.readAsDataURL(F):$t.readAsText(F)});return{file:F,dataUrl:Gt}}));St(F=>[...F,...D]),v.target.value=""},En=v=>{const M=Date.now(),D=[...li.current[v]??[],M].filter(F=>F>M-2e3);return li.current[v]=D,Math.round(D.length/2*10)/10},xs=(v,M)=>{g(D=>D[v]?{...D,[v]:M(D[v])}:D)},ws=v=>{g(M=>{if(!(v in M))return M;const D={...M};return delete D[v],D})},Ai=async(v,M)=>{try{for await(const D of M)if(D.event==="meta")li.current[v]=[],g(F=>({...F,[v]:{assistantId:D.data.assistantMessageId,content:"",reasoning:"",progress:null,liveGenTps:0,genTokens:0,timeline:[]}})),Zt.invalidateQueries({queryKey:["conversation",v]});else if(D.event==="progress")xs(v,F=>({...F,progress:{phase:D.data.phase,pct:D.data.pct,tps:D.data.tps}}));else if(D.event==="reasoning"){const F=En(v);xs(v,at=>({...at,reasoning:at.reasoning+D.data.delta,progress:null,liveGenTps:F,genTokens:at.genTokens+1}))}else if(D.event==="delta"){const F=En(v);xs(v,at=>({...at,content:at.content+D.data.delta,timeline:Wa(at.timeline,D.data.delta),progress:null,liveGenTps:F,genTokens:at.genTokens+1}))}else if(D.event==="tool_call"){const F=D.data,at={id:F.id,name:F.name,args:F.args,status:F.status,result:F.result};xs(v,Gt=>({...Gt,timeline:Xa(Gt.timeline,at)}))}else D.event==="done"?(g(F=>{const at=F[v];if(at&&Zt.setQueryData(["conversation",v],Ct=>Ct&&{...Ct,messages:(Ct.messages??[]).map($t=>$t.id===at.assistantId?{...$t,content:at.content,reasoning:at.reasoning}:$t)}),!(v in F))return F;const Gt={...F};return delete Gt[v],Gt}),v!==f.current&&y(F=>new Set(F).add(v)),Zt.invalidateQueries({queryKey:["conversation",v]}),Zt.invalidateQueries({queryKey:["conversations"]}),v===f.current&&setTimeout(()=>As(),80)):D.event==="error"&&(ws(v),v!==f.current&&y(F=>new Set(F).add(v)),Zt.invalidateQueries({queryKey:["conversation",v]}),yt.error(D.data.message));ws(v),Zt.invalidateQueries({queryKey:["conversation",v]})}catch(D){ws(v),D?.name!=="AbortError"&&yt.error(D instanceof Pe?D.message:"Request failed."),Zt.invalidateQueries({queryKey:["conversation",v]})}finally{delete Ut.current[v]}},_n=async v=>{const M=A.trim();if(!M&&nt.length===0||m)return;if(e!=="running"||!t){yt.error("Load a model first.");return}const D=/^\/([a-z0-9-]+)(?:\s+([\s\S]*))?$/.exec(M),F=D?vn.find(mt=>mt.id===D[1]):void 0,at=F?(D?.[2]??"").trim():M,Gt=nt.filter(mt=>mt.file.type.startsWith("image/")),Ct=nt.filter(mt=>!mt.file.type.startsWith("image/")),$t=Gt.map(mt=>mt.dataUrl),ba=Ct.map(mt=>`[Attached: ${mt.file.name}]
58
58
  ${mt.dataUrl}`).join(`
59
59
 
60
60
  `);w(""),St([]),setTimeout(ys,0),de.current=!1;let It=h;try{if(It)F&&!gs.includes(F.id)&&await ue.update.mutateAsync({id:It,skillIds:Array.from(new Set([...gs,F.id]))});else{const Ve=ai.find(ne=>ne.id===Ot);let Pn=[];if(s.data?.autoMemoryEnabled)try{const{facts:ne}=await wa();Pn=ne.map(In=>In.factText)}catch{}let Ss=Co(Ot,Ve?.systemPrompt??"",Eo(),Pn);if(Ot==="expert")try{const ne=await Sa(),Dn=`## User's hardware
@@ -62,4 +62,4 @@ GPU: ${ne.gpus.length>0?ne.gpus.map(Ln=>`${Ln.name} (${Math.round(Ln.vramMb/1024
62
62
  RAM: ${Math.round(ne.ramMB/1024)} GB
63
63
  OS: ${ne.os}`;Ss=Ss?`${Ss}
64
64
 
65
- ${Dn}`:Dn}catch{}const Mn=Array.from(new Set([...ps,...Ve?.skillIds??[],...F?[F.id]:[]])),Aa=di.trim()||Ss;It=(await ue.create.mutateAsync({modelKey:t.key,systemPrompt:Aa||void 0,toolPolicy:Ot==="research"?"force_web_search":void 0,skillIds:Mn.length?Mn:void 0,allowedTools:Ve?.tools,sampling:Object.keys(ms).length?ms:void 0,preserveThinking:ui})).id,_o(It,Ot),d(It),hi([]),pn(""),gn({}),mn(!0)}F&&yt.success(`Using skill: ${F.name}`);const mt=new AbortController;Ut.current[It]=mt;const ya=Ct.map(Ve=>Ve.file.name);await Ai(It,Ca(It,at,mt.signal,$t,ba,ya,_e))}catch(mt){It&&ws(It),mt?.name!=="AbortError"&&yt.error(mt instanceof Pe?mt.message:"Request failed."),It&&Zt.invalidateQueries({queryKey:["conversation",It]})}},da=(v,M)=>{if(!h)return;const D=$e.find(F=>F.id===v)?.role==="user";S(null),ue.editMsg.mutate({convId:h,msgId:v,content:M},{onSuccess:()=>{if(de.current=!1,D&&e==="running"&&t){const F=new AbortController;Ut.current[h]=F,Ai(h,On(h,F.signal,_e))}},onError:()=>yt.error("Could not edit message.")})},ua=async()=>{if(!h||m)return;if(e!=="running"||!t){yt.error("Load a model first.");return}await ue.regenerate.mutateAsync(h).catch(()=>{});const v=new AbortController;Ut.current[h]=v,Ai(h,On(h,v.signal,_e))},fa=v=>{h&&ue.deleteMsg.mutate({convId:h,msgId:v.id},{onError:()=>yt.error("Could not delete message.")})},Tn=$e.findLast(v=>v.role==="assistant")?.stats,pa=Tn?.ctxUsed??0,ga=t?.ctx||Tn?.ctxMax||0,ze=e==="running"&&!!t,kn=m?.timeline.find(v=>v.kind==="tool"&&v.call.status==="awaiting_approval"),vi=kn?.kind==="tool"?kn.call:void 0,ma=H.useMemo(()=>new Set(Object.keys(p)),[p]);return C.jsxs("div",{className:"flex h-full overflow-hidden",children:[!R&&V&&C.jsx("div",{className:"fixed inset-0 z-30 bg-black/40 md:hidden",onClick:()=>q(!1),"aria-hidden":!0}),C.jsx("div",{ref:B,className:Ns("tllm-chat-sidebar",R?N?"shrink-0":"w-10 shrink-0":Ns("fixed inset-y-0 left-0 z-40 w-[84vw] max-w-[300px] shadow-[var(--shadow-2)]",V?"translate-x-0":"-translate-x-full")),style:R&&N?{width:j}:void 0,children:C.jsx(eo,{activeId:h,onSelect:v=>{yi(v),R||q(!1)},onNew:()=>{Sn(),R||q(!1)},onImport:c?void 0:()=>Z.current?.click(),collapsed:R?!N:!1,onToggle:R?()=>T(v=>!v):()=>q(!1),generating:!!m,generatingIds:ma,recentlyCompletedIds:b,onDeleted:ca})}),R&&N&&C.jsx(so,{sidebarRef:B,onCommit:pt}),C.jsxs("div",{className:"relative flex min-w-0 flex-1 flex-col",children:[c&&C.jsxs("div",{className:"flex shrink-0 items-center gap-2 border-b border-border bg-panel-2 px-4 py-1.5 text-[12px] text-muted",children:[C.jsx("span",{className:"font-medium text-ink",children:"Shared view"}),C.jsx("span",{className:"text-faint",children:"—"}),C.jsx("span",{children:"read only"})]}),C.jsxs("div",{className:"flex h-12 shrink-0 items-center gap-1.5 border-b border-border px-3 md:gap-2 md:px-4",children:[C.jsx(re,{size:"icon",variant:"ghost",className:"h-8 w-8 shrink-0 md:hidden",onClick:()=>q(!0),title:"Conversations","aria-label":"Open conversations",children:C.jsx(io,{size:16})}),C.jsx(no,{models:ea,loadedKey:t?.key??null,loadedName:t?.name??null,pending:sa,ejecting:Ge.eject.isPending,onLoad:ia,onEject:na,onSettings:v=>_(v)}),t&&C.jsx(re,{size:"icon",variant:"ghost",className:"h-8 w-8",onClick:()=>_(t.key),title:"Model settings — change on the fly",children:C.jsx(To,{size:15})}),C.jsx(Xc,{conv:Te,draft:Qr,modelSampling:a}),C.jsx(ro,{value:_e,onChange:je}),h&&oi&&C.jsxs("span",{title:oi.description,className:"hidden items-center gap-1 rounded-full border border-border px-2 py-0.5 text-[11px] text-muted select-none sm:inline-flex",children:[C.jsx(Lo,{size:11}),oi.name]}),e==="starting"&&C.jsx("span",{className:"text-[12px] text-muted",children:"Loading model…"}),e==="stopping"&&C.jsx("span",{className:"text-[12px] text-muted",children:"Ejecting…"}),ze&&C.jsx("div",{className:"ml-auto hidden sm:flex",children:C.jsx(zc,{ctxUsed:pa,ctxMax:ga})}),h&&C.jsxs(Ya,{children:[C.jsx(Ka,{asChild:!0,children:C.jsx(re,{size:"icon",variant:"ghost",className:"ml-auto h-8 w-8",title:"Share or export this chat",children:C.jsx(Io,{size:15})})}),C.jsxs(qa,{align:"end",className:"min-w-[180px]",children:[C.jsxs(wi,{className:"text-[13px]",onSelect:()=>{ra()},children:[C.jsx(Bn,{size:13,className:"text-muted"}),"Copy link (LAN)"]}),C.jsxs(wi,{className:"text-[13px]",onSelect:()=>{aa()},children:[C.jsx(Bn,{size:13,className:"text-muted"}),"Copy debug info"]}),C.jsx(Qa,{}),C.jsxs(wi,{className:"text-[13px]",onSelect:oa,children:[C.jsx(Ra,{size:13,className:"text-muted"}),"Export chat"]})]})]})]}),C.jsx("div",{ref:He,className:"min-h-0 flex-1 overflow-y-auto overflow-x-hidden",children:C.jsxs("div",{className:"mx-auto flex w-full max-w-3xl flex-col gap-6 px-4 py-4 md:px-8 md:py-6",children:[C.jsx("input",{ref:Z,type:"file",accept:".json,.turbollm-chat.json",hidden:!0,onChange:v=>{la(v)}}),Jt&&C.jsxs("div",{className:"mb-2 flex items-start gap-2 rounded-md border border-[color:var(--warn)] bg-[color-mix(in_srgb,var(--warn)_8%,transparent)] px-3 py-2 text-[13px]",children:[C.jsxs("span",{className:"flex-1",children:[C.jsx("span",{className:"font-medium",children:"Model not found:"})," ",C.jsx("span",{className:"font-mono",children:Jt})," is not available on this machine. The chat was imported — select a different model to continue."]}),C.jsx("button",{type:"button",onClick:()=>rt(null),className:"shrink-0 text-faint hover:text-ink",children:C.jsx(Cs,{size:13})})]}),Ht&&C.jsxs("div",{className:"mb-2 flex items-start gap-2 rounded-md border border-[color:var(--err)] bg-[color-mix(in_srgb,var(--err)_8%,transparent)] px-3 py-2 text-[13px]",children:[C.jsx("span",{className:"flex-1 text-[color:var(--err)]",children:Ht}),C.jsx("button",{type:"button",onClick:()=>ie(null),className:"shrink-0 text-faint hover:text-ink",children:C.jsx(Cs,{size:13})})]}),$e.length===0&&!m&&C.jsx("div",{className:"flex flex-col items-center gap-4 py-16",children:t?C.jsxs(C.Fragment,{children:[C.jsx("p",{className:"text-[15px] font-medium text-ink",children:t.name}),C.jsx(Yc,{selected:Ot,onChange:he,agents:ai}),C.jsx("div",{className:"flex flex-wrap justify-center gap-2",children:["Explain something to me","Help me write","Review this code"].map(v=>C.jsx("button",{type:"button",onClick:()=>{w(v),setTimeout(()=>Ue.current?.focus(),0)},className:"rounded-full border border-border px-4 py-1.5 text-[13px] text-muted hover:border-accent hover:text-ink transition-colors",children:v},v))})]}):C.jsx("p",{className:"text-[14px] text-muted",children:"Select a model above to begin"})}),$e.filter(v=>v.id!==m?.assistantId).map((v,M,D)=>C.jsx(Ga,{message:v,convId:c?void 0:h??void 0,isLast:M===D.length-1&&!m,onEdit:c?void 0:F=>S(F.id),onDelete:c?void 0:fa,onRegenerate:c?void 0:ua,editingId:x,onEditSave:F=>da(v.id,F),onEditCancel:()=>S(null)},v.id)),m&&C.jsx($a,{timeline:m.timeline,reasoning:m.reasoning,progress:m.progress,liveGenTps:m.liveGenTps,genTokens:m.genTokens}),C.jsx("div",{ref:qr})]})}),P&&m&&C.jsxs("button",{type:"button",onClick:()=>{de.current=!1,As(!0)},className:"absolute bottom-28 left-1/2 -translate-x-1/2 flex animate-[tllm-rise-in_150ms_ease-out] items-center gap-1.5 rounded-full border border-border bg-panel px-3 py-1.5 text-[13px] text-muted shadow-[var(--shadow-2)] transition-colors hover:text-ink motion-reduce:animate-none",children:[C.jsx(za,{size:13})," Jump to latest"]}),jt&&C.jsx("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/40",onClick:()=>Q(null),children:C.jsxs("div",{className:"mx-4 w-full max-w-lg rounded-lg border border-border bg-panel p-4 shadow-[var(--shadow-2)]",onClick:v=>v.stopPropagation(),children:[C.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[C.jsx("span",{className:"text-[13px] font-medium text-ink",children:jt.title}),C.jsx("button",{type:"button",onClick:()=>Q(null),className:"text-faint hover:text-ink",children:C.jsx(Cs,{size:14})})]}),C.jsx("textarea",{readOnly:!0,autoFocus:!0,className:"h-48 w-full resize-none rounded border border-border bg-panel-2 p-2 text-[12px] font-mono text-ink outline-none",value:jt.text,onFocus:v=>v.target.select()}),C.jsx("p",{className:"mt-1 text-[11px] text-faint",children:"Select all and copy (Ctrl+C / Cmd+C)"})]})}),!c&&h&&vi&&C.jsx("div",{className:"mx-auto w-full max-w-3xl",children:C.jsx(Va,{pending:vi,convId:h,onResolved:()=>{}},vi.id)}),c?null:C.jsx("div",{className:"mx-auto w-full max-w-3xl px-3 pb-3 md:px-8 md:pb-5",children:C.jsxs("div",{className:"relative w-full",children:[pi&&C.jsx("div",{className:"absolute bottom-full left-0 mb-2 w-full max-w-sm overflow-hidden rounded-lg border border-border bg-panel shadow-[var(--shadow-2)]",children:fe.map((v,M)=>C.jsxs("button",{type:"button",onClick:()=>xn(v),className:Ns("flex w-full flex-col items-start gap-0.5 px-3 py-2 text-left text-[13px]",M===gi?"bg-panel-2":"hover:bg-panel-2"),children:[C.jsxs("span",{className:"text-ink",children:["/",v.id,gs.includes(v.id)?" · already on":""]}),v.description&&C.jsx("span",{className:"text-[12px] text-muted",children:v.description})]},v.id))}),C.jsxs("div",{className:"rounded-[var(--radius-lg)] border border-border bg-panel shadow-[var(--shadow-2)] focus-within:border-[color:var(--accent)]",children:[nt.length>0&&C.jsx("div",{className:"flex flex-wrap gap-1.5 px-2 pt-2",children:nt.map((v,M)=>C.jsxs("div",{className:"relative flex items-center gap-1 rounded border border-border bg-panel-2 px-2 py-1 text-[12px]",children:[v.file.type.startsWith("image/")?C.jsx("img",{src:v.dataUrl,className:"h-8 w-8 rounded object-cover",alt:""}):C.jsx("span",{className:"text-muted",children:v.file.name}),C.jsx("button",{type:"button",onClick:()=>St(D=>D.filter((F,at)=>at!==M)),className:"text-faint hover:text-err",children:C.jsx(Cs,{size:11})})]},M))}),C.jsxs("div",{className:"flex items-end gap-2 p-2",children:[C.jsx("button",{type:"button",onClick:()=>un.current?.click(),disabled:!ze||!!m,className:"grid h-9 w-9 shrink-0 place-items-center rounded-md hover:bg-panel-2 disabled:opacity-40",title:"Attach image or document",children:C.jsx(Po,{size:15,className:"text-muted"})}),C.jsx("input",{ref:un,type:"file",multiple:!0,accept:"image/*,.pdf,.txt,.md,.csv,.json,.yaml,.yml,.log,.ts,.tsx,.js,.jsx,.py,.go,.rs,.java,.c,.cpp,.h,.rb,.php,.sh,.sql,.xml,.toml,.ini",hidden:!0,onChange:ha}),C.jsx("textarea",{ref:Ue,rows:1,className:"max-h-40 min-h-9 flex-1 resize-none bg-transparent px-2 py-1.5 text-[15px] text-ink outline-none placeholder:overflow-hidden placeholder:whitespace-nowrap placeholder:text-faint",placeholder:ze?`Message ${t.name}…`:"Load a model above to start chatting",value:A,disabled:!ze||!!m||!!x,onChange:v=>{w(v.target.value),ys()},onKeyDown:v=>{if(pi){if(v.key==="ArrowDown"){v.preventDefault(),mi(M=>Math.min(M+1,fe.length-1));return}if(v.key==="ArrowUp"){v.preventDefault(),mi(M=>Math.max(M-1,0));return}if(v.key==="Tab"){v.preventDefault();const M=fe[Math.min(gi,fe.length-1)];w(`/${M.id}`),setTimeout(ys,0);return}if(v.key==="Enter"&&!v.shiftKey){v.preventDefault(),xn(fe[Math.min(gi,fe.length-1)]);return}if(v.key==="Escape"){v.preventDefault(),w("");return}}if(v.key==="Enter"&&!v.shiftKey&&(v.preventDefault(),_n()),v.key==="ArrowUp"&&!A&&!m){const M=$e.findLast(D=>D.role==="user");M&&S(M.id)}}}),m?C.jsx(re,{size:"icon",variant:"outline",onClick:()=>{Cn()},title:"Stop generation (Esc)",children:C.jsx(ao,{size:15})}):C.jsx(re,{size:"icon",onClick:()=>{_n()},disabled:!ze||!A.trim()&&nt.length===0||!!x,"aria-label":"Send",children:C.jsx(oo,{size:15})})]})]}),t&&C.jsxs("p",{className:"mt-1.5 px-1 text-[11px] text-faint max-[720px]:hidden",children:[t.name," · Enter to send · Shift+Enter for newline"]})]})})]}),C.jsx(co,{modelKey:E,onClose:()=>_(null)})]})}function Yc({selected:u,onChange:t,agents:e}){return C.jsxs("div",{className:"flex w-full max-w-xs flex-col items-center gap-1.5",children:[C.jsx("p",{className:"text-[11px] uppercase tracking-wide text-faint",children:"Agent"}),C.jsx("select",{value:u,onChange:s=>t(s.target.value),className:"w-full max-w-full truncate rounded-md border border-border bg-bg px-2 py-1.5 text-[13px] text-ink outline-none",children:e.map(s=>C.jsxs("option",{value:s.id,children:[s.name," — ",s.description]},s.id))})]})}export{kh as ChatScreen};
65
+ ${Dn}`:Dn}catch{}const Mn=Array.from(new Set([...ps,...Ve?.skillIds??[],...F?[F.id]:[]])),Aa=di.trim()||Ss;It=(await ue.create.mutateAsync({modelKey:t.key,systemPrompt:Aa||void 0,toolPolicy:Ot==="research"?"force_web_search":void 0,skillIds:Mn.length?Mn:void 0,allowedTools:Ve?.tools,sampling:Object.keys(ms).length?ms:void 0,preserveThinking:ui})).id,_o(It,Ot),d(It),hi([]),pn(""),gn({}),mn(!0)}F&&yt.success(`Using skill: ${F.name}`);const mt=new AbortController;Ut.current[It]=mt;const ya=Ct.map(Ve=>Ve.file.name);await Ai(It,Ca(It,at,mt.signal,$t,ba,ya,_e))}catch(mt){It&&ws(It),mt?.name!=="AbortError"&&yt.error(mt instanceof Pe?mt.message:"Request failed."),It&&Zt.invalidateQueries({queryKey:["conversation",It]})}},da=(v,M)=>{if(!h)return;const D=$e.find(F=>F.id===v)?.role==="user";S(null),ue.editMsg.mutate({convId:h,msgId:v,content:M},{onSuccess:()=>{if(de.current=!1,D&&e==="running"&&t){const F=new AbortController;Ut.current[h]=F,Ai(h,On(h,F.signal,_e))}},onError:()=>yt.error("Could not edit message.")})},ua=async()=>{if(!h||m)return;if(e!=="running"||!t){yt.error("Load a model first.");return}await ue.regenerate.mutateAsync(h).catch(()=>{});const v=new AbortController;Ut.current[h]=v,Ai(h,On(h,v.signal,_e))},fa=v=>{h&&ue.deleteMsg.mutate({convId:h,msgId:v.id},{onError:()=>yt.error("Could not delete message.")})},Tn=$e.findLast(v=>v.role==="assistant")?.stats,pa=Tn?.ctxUsed??0,ga=t?.ctx||Tn?.ctxMax||0,ze=e==="running"&&!!t,kn=m?.timeline.find(v=>v.kind==="tool"&&v.call.status==="awaiting_approval"),vi=kn?.kind==="tool"?kn.call:void 0,ma=H.useMemo(()=>new Set(Object.keys(p)),[p]);return C.jsxs("div",{className:"flex h-full overflow-hidden",children:[!R&&V&&C.jsx("div",{className:"fixed inset-0 z-30 bg-black/40 md:hidden",onClick:()=>q(!1),"aria-hidden":!0}),C.jsx("div",{ref:B,className:Ns("tllm-chat-sidebar",R?N?"shrink-0":"w-10 shrink-0":Ns("fixed inset-y-0 left-0 z-40 w-[84vw] max-w-[300px] shadow-[var(--shadow-2)]",V?"translate-x-0":"-translate-x-full")),style:R&&N?{width:j}:void 0,children:C.jsx(eo,{activeId:h,onSelect:v=>{yi(v),R||q(!1)},onNew:()=>{Sn(),R||q(!1)},onImport:c?void 0:()=>Z.current?.click(),collapsed:R?!N:!1,onToggle:R?()=>T(v=>!v):()=>q(!1),generating:!!m,generatingIds:ma,recentlyCompletedIds:b,onDeleted:ca})}),R&&N&&C.jsx(so,{sidebarRef:B,onCommit:pt}),C.jsxs("div",{className:"relative flex min-w-0 flex-1 flex-col",children:[c&&C.jsxs("div",{className:"flex shrink-0 items-center gap-2 border-b border-border bg-panel-2 px-4 py-1.5 text-[12px] text-muted",children:[C.jsx("span",{className:"font-medium text-ink",children:"Shared view"}),C.jsx("span",{className:"text-faint",children:"—"}),C.jsx("span",{children:"read only"})]}),C.jsxs("div",{className:"flex h-12 shrink-0 items-center gap-1.5 border-b border-border px-3 md:gap-2 md:px-4",children:[C.jsx(re,{size:"icon",variant:"ghost",className:"h-8 w-8 shrink-0 md:hidden",onClick:()=>q(!0),title:"Conversations","aria-label":"Open conversations",children:C.jsx(io,{size:16})}),C.jsx(no,{models:ea,loadedKey:t?.key??null,loadedName:t?.name??null,pending:sa,ejecting:Ge.eject.isPending,onLoad:ia,onEject:na,onSettings:v=>_(v)}),t&&C.jsx(re,{size:"icon",variant:"ghost",className:"h-8 w-8",onClick:()=>_(t.key),title:"Model settings — change on the fly",children:C.jsx(To,{size:15})}),C.jsx(Xc,{conv:Te,draft:Qr,modelSampling:a}),C.jsx(ro,{value:_e,onChange:je}),h&&oi&&C.jsxs("span",{title:oi.description,className:"hidden items-center gap-1 rounded-full border border-border px-2 py-0.5 text-[11px] text-muted select-none sm:inline-flex",children:[C.jsx(Lo,{size:11}),oi.name]}),e==="starting"&&C.jsxs("span",{className:"text-[12px] text-muted",children:["Loading model…",t?.loadElapsedMs!=null&&` (${Math.round(t.loadElapsedMs/1e3)}s)`]}),e==="stopping"&&C.jsx("span",{className:"text-[12px] text-muted",children:"Ejecting…"}),ze&&C.jsx("div",{className:"ml-auto hidden sm:flex",children:C.jsx(zc,{ctxUsed:pa,ctxMax:ga})}),h&&C.jsxs(Ya,{children:[C.jsx(Ka,{asChild:!0,children:C.jsx(re,{size:"icon",variant:"ghost",className:"ml-auto h-8 w-8",title:"Share or export this chat",children:C.jsx(Io,{size:15})})}),C.jsxs(qa,{align:"end",className:"min-w-[180px]",children:[C.jsxs(wi,{className:"text-[13px]",onSelect:()=>{ra()},children:[C.jsx(Bn,{size:13,className:"text-muted"}),"Copy link (LAN)"]}),C.jsxs(wi,{className:"text-[13px]",onSelect:()=>{aa()},children:[C.jsx(Bn,{size:13,className:"text-muted"}),"Copy debug info"]}),C.jsx(Qa,{}),C.jsxs(wi,{className:"text-[13px]",onSelect:oa,children:[C.jsx(Ra,{size:13,className:"text-muted"}),"Export chat"]})]})]})]}),C.jsx("div",{ref:He,className:"min-h-0 flex-1 overflow-y-auto overflow-x-hidden",children:C.jsxs("div",{className:"mx-auto flex w-full max-w-3xl flex-col gap-6 px-4 py-4 md:px-8 md:py-6",children:[C.jsx("input",{ref:Z,type:"file",accept:".json,.turbollm-chat.json",hidden:!0,onChange:v=>{la(v)}}),Jt&&C.jsxs("div",{className:"mb-2 flex items-start gap-2 rounded-md border border-[color:var(--warn)] bg-[color-mix(in_srgb,var(--warn)_8%,transparent)] px-3 py-2 text-[13px]",children:[C.jsxs("span",{className:"flex-1",children:[C.jsx("span",{className:"font-medium",children:"Model not found:"})," ",C.jsx("span",{className:"font-mono",children:Jt})," is not available on this machine. The chat was imported — select a different model to continue."]}),C.jsx("button",{type:"button",onClick:()=>rt(null),className:"shrink-0 text-faint hover:text-ink",children:C.jsx(Cs,{size:13})})]}),Ht&&C.jsxs("div",{className:"mb-2 flex items-start gap-2 rounded-md border border-[color:var(--err)] bg-[color-mix(in_srgb,var(--err)_8%,transparent)] px-3 py-2 text-[13px]",children:[C.jsx("span",{className:"flex-1 text-[color:var(--err)]",children:Ht}),C.jsx("button",{type:"button",onClick:()=>ie(null),className:"shrink-0 text-faint hover:text-ink",children:C.jsx(Cs,{size:13})})]}),$e.length===0&&!m&&C.jsx("div",{className:"flex flex-col items-center gap-4 py-16",children:t?C.jsxs(C.Fragment,{children:[C.jsx("p",{className:"text-[15px] font-medium text-ink",children:t.name}),C.jsx(Yc,{selected:Ot,onChange:he,agents:ai}),C.jsx("div",{className:"flex flex-wrap justify-center gap-2",children:["Explain something to me","Help me write","Review this code"].map(v=>C.jsx("button",{type:"button",onClick:()=>{w(v),setTimeout(()=>Ue.current?.focus(),0)},className:"rounded-full border border-border px-4 py-1.5 text-[13px] text-muted hover:border-accent hover:text-ink transition-colors",children:v},v))})]}):C.jsx("p",{className:"text-[14px] text-muted",children:"Select a model above to begin"})}),$e.filter(v=>v.id!==m?.assistantId).map((v,M,D)=>C.jsx(Ga,{message:v,convId:c?void 0:h??void 0,isLast:M===D.length-1&&!m,onEdit:c?void 0:F=>S(F.id),onDelete:c?void 0:fa,onRegenerate:c?void 0:ua,editingId:x,onEditSave:F=>da(v.id,F),onEditCancel:()=>S(null)},v.id)),m&&C.jsx($a,{timeline:m.timeline,reasoning:m.reasoning,progress:m.progress,liveGenTps:m.liveGenTps,genTokens:m.genTokens}),C.jsx("div",{ref:qr})]})}),P&&m&&C.jsxs("button",{type:"button",onClick:()=>{de.current=!1,As(!0)},className:"absolute bottom-28 left-1/2 -translate-x-1/2 flex animate-[tllm-rise-in_150ms_ease-out] items-center gap-1.5 rounded-full border border-border bg-panel px-3 py-1.5 text-[13px] text-muted shadow-[var(--shadow-2)] transition-colors hover:text-ink motion-reduce:animate-none",children:[C.jsx(za,{size:13})," Jump to latest"]}),jt&&C.jsx("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/40",onClick:()=>Q(null),children:C.jsxs("div",{className:"mx-4 w-full max-w-lg rounded-lg border border-border bg-panel p-4 shadow-[var(--shadow-2)]",onClick:v=>v.stopPropagation(),children:[C.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[C.jsx("span",{className:"text-[13px] font-medium text-ink",children:jt.title}),C.jsx("button",{type:"button",onClick:()=>Q(null),className:"text-faint hover:text-ink",children:C.jsx(Cs,{size:14})})]}),C.jsx("textarea",{readOnly:!0,autoFocus:!0,className:"h-48 w-full resize-none rounded border border-border bg-panel-2 p-2 text-[12px] font-mono text-ink outline-none",value:jt.text,onFocus:v=>v.target.select()}),C.jsx("p",{className:"mt-1 text-[11px] text-faint",children:"Select all and copy (Ctrl+C / Cmd+C)"})]})}),!c&&h&&vi&&C.jsx("div",{className:"mx-auto w-full max-w-3xl",children:C.jsx(Va,{pending:vi,convId:h,onResolved:()=>{}},vi.id)}),c?null:C.jsx("div",{className:"mx-auto w-full max-w-3xl px-3 pb-3 md:px-8 md:pb-5",children:C.jsxs("div",{className:"relative w-full",children:[pi&&C.jsx("div",{className:"absolute bottom-full left-0 mb-2 w-full max-w-sm overflow-hidden rounded-lg border border-border bg-panel shadow-[var(--shadow-2)]",children:fe.map((v,M)=>C.jsxs("button",{type:"button",onClick:()=>xn(v),className:Ns("flex w-full flex-col items-start gap-0.5 px-3 py-2 text-left text-[13px]",M===gi?"bg-panel-2":"hover:bg-panel-2"),children:[C.jsxs("span",{className:"text-ink",children:["/",v.id,gs.includes(v.id)?" · already on":""]}),v.description&&C.jsx("span",{className:"text-[12px] text-muted",children:v.description})]},v.id))}),C.jsxs("div",{className:"rounded-[var(--radius-lg)] border border-border bg-panel shadow-[var(--shadow-2)] focus-within:border-[color:var(--accent)]",children:[nt.length>0&&C.jsx("div",{className:"flex flex-wrap gap-1.5 px-2 pt-2",children:nt.map((v,M)=>C.jsxs("div",{className:"relative flex items-center gap-1 rounded border border-border bg-panel-2 px-2 py-1 text-[12px]",children:[v.file.type.startsWith("image/")?C.jsx("img",{src:v.dataUrl,className:"h-8 w-8 rounded object-cover",alt:""}):C.jsx("span",{className:"text-muted",children:v.file.name}),C.jsx("button",{type:"button",onClick:()=>St(D=>D.filter((F,at)=>at!==M)),className:"text-faint hover:text-err",children:C.jsx(Cs,{size:11})})]},M))}),C.jsxs("div",{className:"flex items-end gap-2 p-2",children:[C.jsx("button",{type:"button",onClick:()=>un.current?.click(),disabled:!ze||!!m,className:"grid h-9 w-9 shrink-0 place-items-center rounded-md hover:bg-panel-2 disabled:opacity-40",title:"Attach image or document",children:C.jsx(Po,{size:15,className:"text-muted"})}),C.jsx("input",{ref:un,type:"file",multiple:!0,accept:"image/*,.pdf,.txt,.md,.csv,.json,.yaml,.yml,.log,.ts,.tsx,.js,.jsx,.py,.go,.rs,.java,.c,.cpp,.h,.rb,.php,.sh,.sql,.xml,.toml,.ini",hidden:!0,onChange:ha}),C.jsx("textarea",{ref:Ue,rows:1,className:"max-h-40 min-h-9 flex-1 resize-none bg-transparent px-2 py-1.5 text-[15px] text-ink outline-none placeholder:overflow-hidden placeholder:whitespace-nowrap placeholder:text-faint",placeholder:ze?`Message ${t.name}…`:"Load a model above to start chatting",value:A,disabled:!ze||!!m||!!x,onChange:v=>{w(v.target.value),ys()},onKeyDown:v=>{if(pi){if(v.key==="ArrowDown"){v.preventDefault(),mi(M=>Math.min(M+1,fe.length-1));return}if(v.key==="ArrowUp"){v.preventDefault(),mi(M=>Math.max(M-1,0));return}if(v.key==="Tab"){v.preventDefault();const M=fe[Math.min(gi,fe.length-1)];w(`/${M.id}`),setTimeout(ys,0);return}if(v.key==="Enter"&&!v.shiftKey){v.preventDefault(),xn(fe[Math.min(gi,fe.length-1)]);return}if(v.key==="Escape"){v.preventDefault(),w("");return}}if(v.key==="Enter"&&!v.shiftKey&&(v.preventDefault(),_n()),v.key==="ArrowUp"&&!A&&!m){const M=$e.findLast(D=>D.role==="user");M&&S(M.id)}}}),m?C.jsx(re,{size:"icon",variant:"outline",onClick:()=>{Cn()},title:"Stop generation (Esc)",children:C.jsx(ao,{size:15})}):C.jsx(re,{size:"icon",onClick:()=>{_n()},disabled:!ze||!A.trim()&&nt.length===0||!!x,"aria-label":"Send",children:C.jsx(oo,{size:15})})]})]}),t&&C.jsxs("p",{className:"mt-1.5 px-1 text-[11px] text-faint max-[720px]:hidden",children:[t.name," · Enter to send · Shift+Enter for newline"]})]})})]}),C.jsx(co,{modelKey:E,onClose:()=>_(null)})]})}function Yc({selected:u,onChange:t,agents:e}){return C.jsxs("div",{className:"flex w-full max-w-xs flex-col items-center gap-1.5",children:[C.jsx("p",{className:"text-[11px] uppercase tracking-wide text-faint",children:"Agent"}),C.jsx("select",{value:u,onChange:s=>t(s.target.value),className:"w-full max-w-full truncate rounded-md border border-border bg-bg px-2 py-1.5 text-[13px] text-ink outline-none",children:e.map(s=>C.jsxs("option",{value:s.id,children:[s.name," — ",s.description]},s.id))})]})}export{_h as ChatScreen};