chatlab-cli 0.34.2 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/dist/{chat-command-6IOH2QRF.mjs → chat-command-24RYGJAS.mjs} +8 -8
  2. package/dist/{chunk-INBJ7SND.mjs → chunk-22YJOBA3.mjs} +589 -513
  3. package/dist/chunk-22YJOBA3.mjs.map +1 -0
  4. package/dist/{chunk-4LW6443F.mjs → chunk-4GWWKHWA.mjs} +833 -886
  5. package/dist/chunk-4GWWKHWA.mjs.map +1 -0
  6. package/dist/{chunk-MENKFEPC.mjs → chunk-7IGBPZMI.mjs} +56 -48
  7. package/dist/chunk-7IGBPZMI.mjs.map +1 -0
  8. package/dist/{chunk-72RWABYJ.mjs → chunk-BRZ6YIBR.mjs} +3 -3
  9. package/dist/chunk-BRZ6YIBR.mjs.map +1 -0
  10. package/dist/{chunk-2XCNTG4O.mjs → chunk-DC7IUDNV.mjs} +677 -69
  11. package/dist/chunk-DC7IUDNV.mjs.map +1 -0
  12. package/dist/{chunk-H6D4DZOC.mjs → chunk-DEFEU567.mjs} +12 -18
  13. package/dist/chunk-DEFEU567.mjs.map +1 -0
  14. package/dist/{chunk-4RLZFGO5.mjs → chunk-GQMCDWZQ.mjs} +2 -2
  15. package/dist/{chunk-52P5ZRBD.mjs → chunk-KIMJXKZO.mjs} +2 -2
  16. package/dist/{chunk-652KEAX3.mjs → chunk-KXDJ7N6N.mjs} +2 -2
  17. package/dist/{chunk-U6MVJSXX.mjs → chunk-QKEARRFH.mjs} +15 -9
  18. package/dist/chunk-QKEARRFH.mjs.map +1 -0
  19. package/dist/{chunk-UMBEHBIZ.mjs → chunk-U36TQMAF.mjs} +2 -2
  20. package/dist/{chunk-JX6MFS6F.mjs → chunk-ZBPPLXM4.mjs} +15 -15
  21. package/dist/cli.mjs +9 -9
  22. package/dist/contacts-worker.mjs +2 -2
  23. package/dist/global-insight-worker.mjs +1 -1
  24. package/dist/{http-HSK46XEU.mjs → http-3K4YMWDE.mjs} +12 -12
  25. package/dist/{import-DF2WD2HE.mjs → import-D4LV565A.mjs} +7 -7
  26. package/dist/index.mjs +12 -12
  27. package/dist/{mcp-A2RND7KN.mjs → mcp-KL22FKQ2.mjs} +8 -8
  28. package/dist/people-relationships-worker.mjs +2 -2
  29. package/dist/semantic-index-worker.mjs +1 -1
  30. package/dist/{src-SHFHW2QB.mjs → src-COIB6Z4P.mjs} +24 -38
  31. package/dist/{stream-import-GZ2QDE3Z.mjs → stream-import-FSXCFG4M.mjs} +7 -7
  32. package/dist/{worker-runtime-OWN56GG5.mjs → worker-runtime-DPS2LURI.mjs} +5 -5
  33. package/dist-cli-web/assets/AISettingsTab-rQC2ocFH.js +1 -0
  34. package/dist-cli-web/assets/AboutTab-DMPziKjj.js +1 -0
  35. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-CnRLt_1j.js +110 -0
  36. package/dist-cli-web/assets/Alert--bTQXRcZ.js +1 -0
  37. package/dist-cli-web/assets/ApiSettingsTab-CtXl4I28.js +2 -0
  38. package/dist-cli-web/assets/BatchManageTab-1KaCPweN.js +1 -0
  39. package/dist-cli-web/assets/{BufferResource-BdKXeRZS.js → BufferResource-BXSJADxx.js} +1 -1
  40. package/dist-cli-web/assets/CanvasRenderer-Cq--8UQ_.js +1 -0
  41. package/dist-cli-web/assets/ChatRecordDrawer-BC0F7ok1.js +11 -0
  42. package/dist-cli-web/assets/ChatRecordDrawer-Tt6UduRC.css +1 -0
  43. package/dist-cli-web/assets/Checkbox-CwajNPGF.js +1 -0
  44. package/dist-cli-web/assets/DataDirCleanupNotice-D0Oruka2.js +1 -0
  45. package/dist-cli-web/assets/DatePicker.vue_vue_type_script_setup_true_lang-C4CsoIlq.js +1 -0
  46. package/dist-cli-web/assets/DebugToolsPanel-DVDwS-wz.js +1 -0
  47. package/dist-cli-web/assets/EChartWordcloud-KV0MdsDE.js +1 -0
  48. package/dist-cli-web/assets/{Filter-B2eEAPxI.js → Filter-DVaqcFmI.js} +1 -1
  49. package/dist-cli-web/assets/GlobalTaskBar-COW_uBX6.css +1 -0
  50. package/dist-cli-web/assets/GlobalTaskBar-DpPMX0jx.js +1 -0
  51. package/dist-cli-web/assets/GroupRelationshipGalaxyView-CLnO3phW.js +1 -0
  52. package/dist-cli-web/assets/Label-Bt2U4lGy.js +1 -0
  53. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-Cnshyn0f.js +1 -0
  54. package/dist-cli-web/assets/MessageExportModal-BozaR9UZ.js +1 -0
  55. package/dist-cli-web/assets/PageHeader-CEe0xTl3.js +1 -0
  56. package/dist-cli-web/assets/PageTabs.vue_vue_type_script_setup_true_lang-D2DZrrnv.js +1 -0
  57. package/dist-cli-web/assets/{RelationshipGalaxyCanvas-CwQ63TPi.js → RelationshipGalaxyCanvas-6EamagxG.js} +3 -3
  58. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-BLqISQe5.js → RelationshipGalaxyThreeCanvas-B6GB4PWS.js} +166 -166
  59. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-CMuibfiA.css → RelationshipGalaxyThreeCanvas-TYGOUDiv.css} +1 -1
  60. package/dist-cli-web/assets/{RenderTargetSystem-eC_VrDAr.js → RenderTargetSystem-mYuj4uBS.js} +1 -1
  61. package/dist-cli-web/assets/RovingFocusItem-B2y6BG1a.js +1 -0
  62. package/dist-cli-web/assets/ScreenCaptureModal-BvAtSNNR.js +1 -0
  63. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-ueEF4zHE.js +1 -0
  64. package/dist-cli-web/assets/Select-Cm4I8u9n.js +1 -0
  65. package/dist-cli-web/assets/SettingsModal-CjVax3I6.css +1 -0
  66. package/dist-cli-web/assets/SettingsModal-Cwshzj7i.js +2 -0
  67. package/dist-cli-web/assets/StorageTab-D7HzH16Y.js +1 -0
  68. package/dist-cli-web/assets/Switch-BVw4e_19.js +1 -0
  69. package/dist-cli-web/assets/Tabs-Dqwkh3Ea.js +1 -0
  70. package/dist-cli-web/assets/Tabs-OrJkANIA.js +1 -0
  71. package/dist-cli-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-DPIvbq75.js +1 -0
  72. package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-dEdo6CqM.js +1 -0
  73. package/dist-cli-web/assets/VisuallyHiddenInput-BOdkR_GC.js +1 -0
  74. package/dist-cli-web/assets/{WebGLRenderer-CRp_HC84.js → WebGLRenderer-BB8ukBI_.js} +2 -2
  75. package/dist-cli-web/assets/{WebGPURenderer-WIUnEhpi.js → WebGPURenderer-DDOzF1Kc.js} +2 -2
  76. package/dist-cli-web/assets/aiChat-CzFSFuOJ.js +8 -0
  77. package/dist-cli-web/assets/annual-summary-time-range-CmrAqcuj.js +1 -0
  78. package/dist-cli-web/assets/base-CawUl6ET.js +1 -0
  79. package/dist-cli-web/assets/{browserAll-B29Ox2in.js → browserAll-BRqlnNxq.js} +2 -2
  80. package/dist-cli-web/assets/chatlabSiteLocale-CrCNb8QP.js +1 -0
  81. package/dist-cli-web/assets/clamp-jFYhBC76.js +1 -0
  82. package/dist-cli-web/assets/cli-web-ClAJ6Tao.js +1 -0
  83. package/dist-cli-web/assets/{dateFormat-T7kMS5IP.js → dateFormat-DXuDxIye.js} +1 -1
  84. package/dist-cli-web/assets/fetch-3_xX8Yi8.js +1 -0
  85. package/dist-cli-web/assets/{fetch-DsHf-61a.js → fetch-Bcy2T8Fe.js} +1 -1
  86. package/dist-cli-web/assets/{fetch-DvrVGAzR.js → fetch-CGu53cxT.js} +1 -1
  87. package/dist-cli-web/assets/{fetch-BBgZQob_.js → fetch-CP1afnT0.js} +1 -1
  88. package/dist-cli-web/assets/{fetch-D9sn99zX.js → fetch-DWAIk_6_.js} +1 -1
  89. package/dist-cli-web/assets/{fetch-BKBlpBl4.js → fetch-DijSOvop.js} +1 -1
  90. package/dist-cli-web/assets/{fetch-CYaGyohV.js → fetch-Dy38lkAa.js} +1 -1
  91. package/dist-cli-web/assets/{fetch-L6PKD8-N.js → fetch-DzKlTaLz.js} +1 -1
  92. package/dist-cli-web/assets/{fetch-D8hJZa8o.js → fetch-LY-yerw1.js} +1 -1
  93. package/dist-cli-web/assets/{fetch-BLi6Jsjg.js → fetch-q480XYZQ.js} +1 -1
  94. package/dist-cli-web/assets/index-0dp58uL4.css +1 -0
  95. package/dist-cli-web/assets/index-1X7zdLgJ.css +1 -0
  96. package/dist-cli-web/assets/index-4enwdBcq.css +1 -0
  97. package/dist-cli-web/assets/index-AudHHbMs.js +1 -0
  98. package/dist-cli-web/assets/{index-0qcENyvH.js → index-BRV_D8dv.js} +3 -3
  99. package/dist-cli-web/assets/index-CF4DTbvD.js +1 -0
  100. package/dist-cli-web/assets/index-CMLoht5R.js +1 -0
  101. package/dist-cli-web/assets/index-CMPHZH6B.css +1 -0
  102. package/dist-cli-web/assets/index-CNzv7aBW.js +1 -0
  103. package/dist-cli-web/assets/index-CXUTiy-V.js +1 -0
  104. package/dist-cli-web/assets/index-D5m0P4ss.js +36 -0
  105. package/dist-cli-web/assets/index-Di6FmCdk.js +64 -0
  106. package/dist-cli-web/assets/index-DkOrt7_X.js +2 -0
  107. package/dist-cli-web/assets/index-Dlb6fC68.js +1 -0
  108. package/dist-cli-web/assets/index-IA7YUjQX.js +2 -0
  109. package/dist-cli-web/assets/index-kzU381y1.js +1 -0
  110. package/dist-cli-web/assets/index-z8Vogc-b.js +137 -0
  111. package/dist-cli-web/assets/lazy-overlay-visibility-Bd9ZFOgR.js +1 -0
  112. package/dist-cli-web/assets/member-select-utils-BXZ3oHct.js +1 -0
  113. package/dist-cli-web/assets/people-page-header-Bh3KXD4g.js +1 -0
  114. package/dist-cli-web/assets/prompt-DcAcgQiB.js +1 -0
  115. package/dist-cli-web/assets/relationship-galaxy-connections-Cg4G5yYE.js +1 -0
  116. package/dist-cli-web/assets/semantic-index-config-builder-CK6v64Y1.js +1 -0
  117. package/dist-cli-web/assets/service-YZnJyEMq.js +1 -0
  118. package/dist-cli-web/assets/useFormControl-B-aXrJZN.js +1 -0
  119. package/dist-cli-web/assets/useTable-DPEMaGby.js +1 -0
  120. package/dist-cli-web/assets/useToast-B36MzFFy.js +1 -0
  121. package/dist-cli-web/assets/vendor-echarts-DfAMQxdr.js +11 -0
  122. package/dist-cli-web/assets/{vendor-echarts-wordcloud-Ca8n6qS6.js → vendor-echarts-wordcloud-BsaEJTPY.js} +1 -1
  123. package/dist-cli-web/assets/vendor-zrender-PFmZe1EY.js +8 -0
  124. package/dist-cli-web/assets/{webworkerAll-B2qvP2qR.js → webworkerAll-Dwqmy_YO.js} +1 -1
  125. package/dist-cli-web/index.html +2 -2
  126. package/package.json +1 -1
  127. package/dist/chunk-2XCNTG4O.mjs.map +0 -1
  128. package/dist/chunk-4LW6443F.mjs.map +0 -1
  129. package/dist/chunk-72RWABYJ.mjs.map +0 -1
  130. package/dist/chunk-H6D4DZOC.mjs.map +0 -1
  131. package/dist/chunk-INBJ7SND.mjs.map +0 -1
  132. package/dist/chunk-MENKFEPC.mjs.map +0 -1
  133. package/dist/chunk-U6MVJSXX.mjs.map +0 -1
  134. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-B06LYYS9.js +0 -110
  135. package/dist-cli-web/assets/CanvasRenderer-DDRdIyZ8.js +0 -1
  136. package/dist-cli-web/assets/DataDirCleanupNotice-CP8P1lsL.js +0 -1
  137. package/dist-cli-web/assets/EChartWordcloud-CqknPGui.js +0 -1
  138. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-BFaXTz1c.js +0 -1
  139. package/dist-cli-web/assets/MessageExportModal-CZge6qub.js +0 -1
  140. package/dist-cli-web/assets/PageHeader-CxKbcLDc.js +0 -1
  141. package/dist-cli-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-DVmpDz05.js +0 -1
  142. package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-CCH1UQGc.js +0 -1
  143. package/dist-cli-web/assets/annual-summary-time-range-R3pLPEuN.js +0 -1
  144. package/dist-cli-web/assets/base-CLwWn3Rs.js +0 -1
  145. package/dist-cli-web/assets/cli-web-CVLb5Pkq.js +0 -1
  146. package/dist-cli-web/assets/fetch-Cm2WR2Cv.js +0 -1
  147. package/dist-cli-web/assets/index-AkF_KqVI.js +0 -1
  148. package/dist-cli-web/assets/index-BVOFyB9E.js +0 -137
  149. package/dist-cli-web/assets/index-BkdOH41D.js +0 -1
  150. package/dist-cli-web/assets/index-C4TuoOLM.js +0 -2
  151. package/dist-cli-web/assets/index-C6Mk-Xqt.js +0 -1
  152. package/dist-cli-web/assets/index-CkgUsaeX.js +0 -1
  153. package/dist-cli-web/assets/index-CuAy1Xmt.js +0 -64
  154. package/dist-cli-web/assets/index-D_0qeKKc.js +0 -53
  155. package/dist-cli-web/assets/index-DeR0Vukh.js +0 -1
  156. package/dist-cli-web/assets/index-DrjoMv9s.css +0 -1
  157. package/dist-cli-web/assets/index-Dx-XvfIK.js +0 -2
  158. package/dist-cli-web/assets/index-Jhwca9kg.css +0 -1
  159. package/dist-cli-web/assets/index-_DrviTnP.js +0 -1
  160. package/dist-cli-web/assets/index-vtF05fh7.css +0 -1
  161. package/dist-cli-web/assets/index-xN0sjOLK.js +0 -1
  162. package/dist-cli-web/assets/people-page-header-CCNJOrmK.js +0 -1
  163. package/dist-cli-web/assets/vendor-echarts-B-i_56Av.js +0 -11
  164. package/dist-cli-web/assets/vendor-zrender-5DcYjSZk.js +0 -8
  165. /package/dist/{chat-command-6IOH2QRF.mjs.map → chat-command-24RYGJAS.mjs.map} +0 -0
  166. /package/dist/{chunk-4RLZFGO5.mjs.map → chunk-GQMCDWZQ.mjs.map} +0 -0
  167. /package/dist/{chunk-52P5ZRBD.mjs.map → chunk-KIMJXKZO.mjs.map} +0 -0
  168. /package/dist/{chunk-652KEAX3.mjs.map → chunk-KXDJ7N6N.mjs.map} +0 -0
  169. /package/dist/{chunk-UMBEHBIZ.mjs.map → chunk-U36TQMAF.mjs.map} +0 -0
  170. /package/dist/{chunk-JX6MFS6F.mjs.map → chunk-ZBPPLXM4.mjs.map} +0 -0
  171. /package/dist/{http-HSK46XEU.mjs.map → http-3K4YMWDE.mjs.map} +0 -0
  172. /package/dist/{import-DF2WD2HE.mjs.map → import-D4LV565A.mjs.map} +0 -0
  173. /package/dist/{mcp-A2RND7KN.mjs.map → mcp-KL22FKQ2.mjs.map} +0 -0
  174. /package/dist/{src-SHFHW2QB.mjs.map → src-COIB6Z4P.mjs.map} +0 -0
  175. /package/dist/{stream-import-GZ2QDE3Z.mjs.map → stream-import-FSXCFG4M.mjs.map} +0 -0
  176. /package/dist/{worker-runtime-OWN56GG5.mjs.map → worker-runtime-DPS2LURI.mjs.map} +0 -0
@@ -1,4 +1,4 @@
1
- import{D as R,a as F,j as d,z as P,d as B,w as b,g as q,b as Ce,S as O,T as S,ak as Ne,L as Z,al as De,c as T,ab as X,q as y,K as C,N as M,r as g,M as J,am as Q,an as Ie,ao as ee,ap as Ge,aq as Ue,A as Fe,R as Pe}from"./RelationshipGalaxyCanvas-CwQ63TPi.js";import{e as Oe,G as Me,c as Le,b as we,U as He,B as te,d as N,f as re,g as Ve}from"./BufferResource-BdKXeRZS.js";import{R as Xe,S as ke,d as We}from"./RenderTargetSystem-eC_VrDAr.js";import"./index-D_0qeKKc.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-C4TuoOLM.js";import"./LoadingState.vue_vue_type_script_setup_true_lang-BFaXTz1c.js";import"./people-page-header-CCNJOrmK.js";import"./relationship-galaxy-viewport-Cwfa51ER.js";import"./Filter-B2eEAPxI.js";function je(){const{userAgent:t}=R.get().getNavigator();return/^((?!chrome|android).)*safari/i.test(t)}class ne{constructor(){this._tempState=F.for2d(),this._didUploadHash={}}init(e){e.renderer.runners.contextChange.add(this)}contextChange(){this._didUploadHash={}}start(e,r,n){const s=e.renderer,i=this._didUploadHash[n.uid];s.shader.bind(n,i),i||(this._didUploadHash[n.uid]=!0),s.shader.updateUniformGroup(s.globalUniforms.uniformGroup),s.geometry.bind(r,n.glProgram)}execute(e,r){const n=e.renderer;this._tempState.blendMode=r.blendMode,n.state.set(this._tempState);const s=r.textures.textures;for(let i=0;i<r.textures.count;i++)n.texture.bind(s[i],i);n.geometry.draw(r.topology,r.size,r.start)}}ne.extension={type:[d.WebGLPipesAdaptor],name:"batch"};var A=(t=>(t[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",t))(A||{});class Ke{constructor(e,r){this._lastBindBaseLocation=-1,this._lastBindCallId=-1,this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.type=r}destroy(){this.buffer=null,this.updateID=-1,this.byteLength=-1,this.type=-1,this._lastBindBaseLocation=-1,this._lastBindCallId=-1}}class se{constructor(e){this._boundBufferBases=Object.create(null),this._minBaseLocation=0,this._nextBindBaseIndex=this._minBaseLocation,this._bindCallId=0,this._renderer=e,this._managedBuffers=new P({renderer:e,type:"resource",onUnload:this.onBufferUnload.bind(this),name:"glBuffer"})}destroy(){this._managedBuffers.destroy(),this._renderer=null,this._gl=null,this._boundBufferBases={}}contextChange(){this._gl=this._renderer.gl,this.destroyAll(!0),this._maxBindings=this._renderer.limits.maxUniformBindings}getGlBuffer(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]||this.createGLBuffer(e)}bind(e){const{_gl:r}=this,n=this.getGlBuffer(e);r.bindBuffer(n.type,n.buffer)}bindBufferBase(e,r){const{_gl:n}=this;this._boundBufferBases[r]!==e&&(this._boundBufferBases[r]=e,e._lastBindBaseLocation=r,n.bindBufferBase(n.UNIFORM_BUFFER,r,e.buffer))}nextBindBase(e){this._bindCallId++,this._minBaseLocation=0,e&&(this._boundBufferBases[0]=null,this._minBaseLocation=1,this._nextBindBaseIndex<1&&(this._nextBindBaseIndex=1))}freeLocationForBufferBase(e){let r=this.getLastBindBaseLocation(e);if(r>=this._minBaseLocation)return e._lastBindCallId=this._bindCallId,r;let n=0,s=this._nextBindBaseIndex;for(;n<2;){s>=this._maxBindings&&(s=this._minBaseLocation,n++);const i=this._boundBufferBases[s];if(i&&i._lastBindCallId===this._bindCallId){s++;continue}break}return r=s,this._nextBindBaseIndex=s+1,n>=2?-1:(e._lastBindCallId=this._bindCallId,this._boundBufferBases[r]=null,r)}getLastBindBaseLocation(e){const r=e._lastBindBaseLocation;return this._boundBufferBases[r]===e?r:-1}bindBufferRange(e,r,n,s){const{_gl:i}=this;n||(n=0),r||(r=0),this._boundBufferBases[r]=null,i.bindBufferRange(i.UNIFORM_BUFFER,r||0,e.buffer,n*256,s||256)}updateBuffer(e){const{_gl:r}=this,n=this.getGlBuffer(e);if(e._updateID===n.updateID)return n;n.updateID=e._updateID,r.bindBuffer(n.type,n.buffer);const s=e.data,i=e.descriptor.usage&B.STATIC?r.STATIC_DRAW:r.DYNAMIC_DRAW;return s?n.byteLength>=s.byteLength?r.bufferSubData(n.type,0,s,0,e._updateSize/s.BYTES_PER_ELEMENT):(n.byteLength=s.byteLength,r.bufferData(n.type,s,i)):(n.byteLength=e.descriptor.size,r.bufferData(n.type,n.byteLength,i)),n}destroyAll(e=!1){this._managedBuffers.removeAll(e)}onBufferUnload(e,r=!1){const n=e._gpuData[this._renderer.uid];n&&(r||this._gl.deleteBuffer(n.buffer))}createGLBuffer(e){const{_gl:r}=this;let n=A.ARRAY_BUFFER;e.descriptor.usage&B.INDEX?n=A.ELEMENT_ARRAY_BUFFER:e.descriptor.usage&B.UNIFORM&&(n=A.UNIFORM_BUFFER);const s=new Ke(r.createBuffer(),n);return e._gpuData[this._renderer.uid]=s,this._managedBuffers.add(e),s}resetState(){this._boundBufferBases=Object.create(null)}}se.extension={type:[d.WebGLSystem],name:"buffer"};const L=class ie{constructor(e){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=e,this.extensions=Object.create(null),this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(e){this.gl=e,this._renderer.gl=e}init(e){e={...ie.defaultOptions,...e};let r=this.multiView=e.multiView;if(e.context&&r&&(b("Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together."),r=!1),r?this.canvas=R.get().createCanvas(this._renderer.canvas.width,this._renderer.canvas.height):this.canvas=this._renderer.view.canvas,e.context)this.initFromContext(e.context);else{const n=this._renderer.background.alpha<1,s=e.premultipliedAlpha??!0,i=e.antialias&&!this._renderer.backBuffer.useBackBuffer;this.createContext(e.preferWebGLVersion,{alpha:n,premultipliedAlpha:s,antialias:i,stencil:!0,preserveDrawingBuffer:e.preserveDrawingBuffer,powerPreference:e.powerPreference??"default"})}}ensureCanvasSize(e){if(!this.multiView){e!==this.canvas&&b("multiView is disabled, but targetCanvas is not the main canvas");return}const{canvas:r}=this;(r.width<e.width||r.height<e.height)&&(r.width=Math.max(e.width,e.width),r.height=Math.max(e.height,e.height))}initFromContext(e){this.gl=e,this.webGLVersion=e instanceof R.get().getWebGLRenderingContext()?1:2,this.getExtensions(),this.validateContext(e),this._renderer.runners.contextChange.emit(e);const r=this._renderer.view.canvas;r.addEventListener("webglcontextlost",this.handleContextLost,!1),r.addEventListener("webglcontextrestored",this.handleContextRestored,!1)}createContext(e,r){let n;const s=this.canvas;if(e===2&&(n=s.getContext("webgl2",r)),!n&&(n=s.getContext("webgl",r),!n))throw new Error("This browser does not support WebGL. Try using the canvas renderer");this.gl=n,this.initFromContext(this.gl)}getExtensions(){const{gl:e}=this,r={anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),s3tc:e.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:e.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:e.getExtension("WEBGL_compressed_texture_etc"),etc1:e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:e.getExtension("WEBGL_compressed_texture_atc"),astc:e.getExtension("WEBGL_compressed_texture_astc"),bptc:e.getExtension("EXT_texture_compression_bptc"),rgtc:e.getExtension("EXT_texture_compression_rgtc"),loseContext:e.getExtension("WEBGL_lose_context")};if(this.webGLVersion===1)this.extensions={...r,drawBuffers:e.getExtension("WEBGL_draw_buffers"),depthTexture:e.getExtension("WEBGL_depth_texture"),vertexArrayObject:e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:e.getExtension("OES_element_index_uint"),floatTexture:e.getExtension("OES_texture_float"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),textureHalfFloat:e.getExtension("OES_texture_half_float"),textureHalfFloatLinear:e.getExtension("OES_texture_half_float_linear"),vertexAttribDivisorANGLE:e.getExtension("ANGLE_instanced_arrays"),srgb:e.getExtension("EXT_sRGB")};else{this.extensions={...r,colorBufferFloat:e.getExtension("EXT_color_buffer_float")};const n=e.getExtension("WEBGL_provoking_vertex");n&&n.provokingVertexWEBGL(n.FIRST_VERTEX_CONVENTION_WEBGL)}}handleContextLost(e){e.preventDefault(),this._contextLossForced&&(this._contextLossForced=!1,setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext?.restoreContext()},0))}handleContextRestored(){this.getExtensions(),this._renderer.runners.contextChange.emit(this.gl)}destroy(){const e=this._renderer.view.canvas;this._renderer=null,e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext?.loseContext()}forceContextLoss(){this.extensions.loseContext?.loseContext(),this._contextLossForced=!0}validateContext(e){const r=e.getContextAttributes();r&&!r.stencil&&b("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const n=this.supports,s=this.webGLVersion===2,i=this.extensions;n.uint32Indices=s||!!i.uint32ElementIndex,n.uniformBufferObject=s,n.vertexArrayObject=s||!!i.vertexArrayObject,n.srgbTextures=s||!!i.srgb,n.nonPowOf2wrapping=s,n.nonPowOf2mipmaps=s,n.msaa=s,n.uint32Indices||b("Provided WebGL context does not support 32 index buffer, large scenes may not render correctly")}};L.extension={type:[d.WebGLSystem],name:"context"};L.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2,multiView:!1};let $e=L;var G=(t=>(t[t.RGBA=6408]="RGBA",t[t.RGB=6407]="RGB",t[t.RG=33319]="RG",t[t.RED=6403]="RED",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.ALPHA=6406]="ALPHA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",t))(G||{}),w=(t=>(t[t.TEXTURE_2D=3553]="TEXTURE_2D",t[t.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",t[t.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",t[t.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",t[t.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",t[t.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",t[t.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",t))(w||{}),h=(t=>(t[t.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",t[t.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",t[t.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",t[t.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",t[t.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",t[t.UNSIGNED_INT=5125]="UNSIGNED_INT",t[t.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",t[t.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",t[t.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",t[t.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",t[t.BYTE=5120]="BYTE",t[t.SHORT=5122]="SHORT",t[t.INT=5124]="INT",t[t.FLOAT=5126]="FLOAT",t[t.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",t[t.HALF_FLOAT=36193]="HALF_FLOAT",t))(h||{});const k={uint8x2:h.UNSIGNED_BYTE,uint8x4:h.UNSIGNED_BYTE,sint8x2:h.BYTE,sint8x4:h.BYTE,unorm8x2:h.UNSIGNED_BYTE,unorm8x4:h.UNSIGNED_BYTE,snorm8x2:h.BYTE,snorm8x4:h.BYTE,uint16x2:h.UNSIGNED_SHORT,uint16x4:h.UNSIGNED_SHORT,sint16x2:h.SHORT,sint16x4:h.SHORT,unorm16x2:h.UNSIGNED_SHORT,unorm16x4:h.UNSIGNED_SHORT,snorm16x2:h.SHORT,snorm16x4:h.SHORT,float16x2:h.HALF_FLOAT,float16x4:h.HALF_FLOAT,float32:h.FLOAT,float32x2:h.FLOAT,float32x3:h.FLOAT,float32x4:h.FLOAT,uint32:h.UNSIGNED_INT,uint32x2:h.UNSIGNED_INT,uint32x3:h.UNSIGNED_INT,uint32x4:h.UNSIGNED_INT,sint32:h.INT,sint32x2:h.INT,sint32x3:h.INT,sint32x4:h.INT};function Ye(t){return k[t]??k.float32}const ze={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5};class qe{constructor(){this.vaoCache=Object.create(null)}destroy(){this.vaoCache=Object.create(null)}}class ae{constructor(e){this._renderer=e,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0,this._managedGeometries=new P({renderer:e,type:"resource",onUnload:this.onGeometryUnload.bind(this),name:"glGeometry"})}contextChange(){const e=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw new Error("[PixiJS] Vertex Array Objects are not supported on this device");this.destroyAll(!0);const r=this._renderer.context.extensions.vertexArrayObject;r&&(e.createVertexArray=()=>r.createVertexArrayOES(),e.bindVertexArray=s=>r.bindVertexArrayOES(s),e.deleteVertexArray=s=>r.deleteVertexArrayOES(s));const n=this._renderer.context.extensions.vertexAttribDivisorANGLE;n&&(e.drawArraysInstanced=(s,i,a,c)=>{n.drawArraysInstancedANGLE(s,i,a,c)},e.drawElementsInstanced=(s,i,a,c,o)=>{n.drawElementsInstancedANGLE(s,i,a,c,o)},e.vertexAttribDivisor=(s,i)=>n.vertexAttribDivisorANGLE(s,i)),this._activeGeometry=null,this._activeVao=null}bind(e,r){const n=this.gl;this._activeGeometry=e;const s=this.getVao(e,r);this._activeVao!==s&&(this._activeVao=s,n.bindVertexArray(s)),this.updateBuffers()}resetState(){this.unbind()}updateBuffers(){const e=this._activeGeometry,r=this._renderer.buffer;for(let n=0;n<e.buffers.length;n++){const s=e.buffers[n];r.updateBuffer(s)}e._gcLastUsed=this._renderer.gc.now}checkCompatibility(e,r){const n=e.attributes,s=r._attributeData;for(const i in s)if(!n[i])throw new Error(`shader and geometry incompatible, geometry missing the "${i}" attribute`)}getSignature(e,r){const n=e.attributes,s=r._attributeData,i=["g",e.uid];for(const a in n)s[a]&&i.push(a,s[a].location);return i.join("-")}getVao(e,r){return e._gpuData[this._renderer.uid]?.vaoCache[r._key]||this.initGeometryVao(e,r)}initGeometryVao(e,r,n=!0){const s=this._renderer.gl,i=this._renderer.buffer;this._renderer.shader._getProgramData(r),this.checkCompatibility(e,r);const a=this.getSignature(e,r);let c=e._gpuData[this._renderer.uid];c||(c=new qe,e._gpuData[this._renderer.uid]=c,this._managedGeometries.add(e));const o=c.vaoCache;let u=o[a];if(u)return o[r._key]=u,u;Oe(e,r._attributeData);const _=e.buffers;u=s.createVertexArray(),s.bindVertexArray(u);for(let l=0;l<_.length;l++){const f=_[l];i.bind(f)}return this.activateVao(e,r),o[r._key]=u,o[a]=u,s.bindVertexArray(null),u}onGeometryUnload(e,r=!1){const n=e._gpuData[this._renderer.uid];if(!n)return;const s=n.vaoCache;if(!r)for(const i in s)this._activeVao!==s[i]&&this.resetState(),this.gl.deleteVertexArray(s[i])}destroyAll(e=!1){this._managedGeometries.removeAll(e)}activateVao(e,r){const n=this._renderer.gl,s=this._renderer.buffer,i=e.attributes;e.indexBuffer&&s.bind(e.indexBuffer);let a=null;for(const c in i){const o=i[c],u=o.buffer,_=s.getGlBuffer(u),l=r._attributeData[c];if(l){a!==_&&(s.bind(u),a=_);const f=l.location;n.enableVertexAttribArray(f);const m=q(o.format),p=Ye(o.format);if(l.format?.substring(1,4)==="int"?n.vertexAttribIPointer(f,m.size,p,o.stride,o.offset):n.vertexAttribPointer(f,m.size,p,m.normalised,o.stride,o.offset),o.instance)if(this.hasInstance){const E=o.divisor??1;n.vertexAttribDivisor(f,E)}else throw new Error("geometry error, GPU Instancing is not supported on this device")}}}draw(e,r,n,s){const{gl:i}=this._renderer,a=this._activeGeometry,c=ze[e||a.topology];if(s??(s=a.instanceCount),a.indexBuffer){const o=a.indexBuffer.data.BYTES_PER_ELEMENT,u=o===2?i.UNSIGNED_SHORT:i.UNSIGNED_INT;s!==1?i.drawElementsInstanced(c,r||a.indexBuffer.data.length,u,(n||0)*o,s):i.drawElements(c,r||a.indexBuffer.data.length,u,(n||0)*o)}else s!==1?i.drawArraysInstanced(c,n||0,r||a.getSize(),s):i.drawArrays(c,n||0,r||a.getSize());return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this._managedGeometries.destroy(),this._renderer=null,this.gl=null,this._activeVao=null,this._activeGeometry=null}}ae.extension={type:[d.WebGLSystem],name:"geometry"};const Ze=new Ne({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),H=class oe{constructor(e){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=e}init(e={}){const{useBackBuffer:r,antialias:n}={...oe.defaultOptions,...e};this.useBackBuffer=r,this._antialias=n,this._renderer.context.supports.msaa||(b("antialiasing, is not supported on when using the back buffer"),this._antialias=!1),this._state=F.for2d();const s=new Ce({vertex:`
1
+ import{D as R,a as F,j as d,z as P,d as B,w as b,g as q,b as Ce,S as O,T as S,ak as Ne,L as Z,al as De,c as T,ab as X,q as y,K as C,N as M,r as g,M as J,am as Q,an as Ie,ao as ee,ap as Ge,aq as Ue,A as Fe,R as Pe}from"./RelationshipGalaxyCanvas-6EamagxG.js";import{e as Oe,G as Me,c as Le,b as we,U as He,B as te,d as N,f as re,g as Ve}from"./BufferResource-BXSJADxx.js";import{R as Xe,S as ke,d as We}from"./RenderTargetSystem-mYuj4uBS.js";import"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-IA7YUjQX.js";import"./Tabs-OrJkANIA.js";import"./RovingFocusItem-B2y6BG1a.js";import"./useToast-B36MzFFy.js";import"./LoadingState.vue_vue_type_script_setup_true_lang-Cnshyn0f.js";import"./people-page-header-Bh3KXD4g.js";import"./relationship-galaxy-connections-Cg4G5yYE.js";import"./relationship-galaxy-viewport-Cwfa51ER.js";import"./Filter-DVaqcFmI.js";function je(){const{userAgent:t}=R.get().getNavigator();return/^((?!chrome|android).)*safari/i.test(t)}class ne{constructor(){this._tempState=F.for2d(),this._didUploadHash={}}init(e){e.renderer.runners.contextChange.add(this)}contextChange(){this._didUploadHash={}}start(e,r,n){const s=e.renderer,i=this._didUploadHash[n.uid];s.shader.bind(n,i),i||(this._didUploadHash[n.uid]=!0),s.shader.updateUniformGroup(s.globalUniforms.uniformGroup),s.geometry.bind(r,n.glProgram)}execute(e,r){const n=e.renderer;this._tempState.blendMode=r.blendMode,n.state.set(this._tempState);const s=r.textures.textures;for(let i=0;i<r.textures.count;i++)n.texture.bind(s[i],i);n.geometry.draw(r.topology,r.size,r.start)}}ne.extension={type:[d.WebGLPipesAdaptor],name:"batch"};var A=(t=>(t[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",t))(A||{});class Ke{constructor(e,r){this._lastBindBaseLocation=-1,this._lastBindCallId=-1,this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.type=r}destroy(){this.buffer=null,this.updateID=-1,this.byteLength=-1,this.type=-1,this._lastBindBaseLocation=-1,this._lastBindCallId=-1}}class se{constructor(e){this._boundBufferBases=Object.create(null),this._minBaseLocation=0,this._nextBindBaseIndex=this._minBaseLocation,this._bindCallId=0,this._renderer=e,this._managedBuffers=new P({renderer:e,type:"resource",onUnload:this.onBufferUnload.bind(this),name:"glBuffer"})}destroy(){this._managedBuffers.destroy(),this._renderer=null,this._gl=null,this._boundBufferBases={}}contextChange(){this._gl=this._renderer.gl,this.destroyAll(!0),this._maxBindings=this._renderer.limits.maxUniformBindings}getGlBuffer(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]||this.createGLBuffer(e)}bind(e){const{_gl:r}=this,n=this.getGlBuffer(e);r.bindBuffer(n.type,n.buffer)}bindBufferBase(e,r){const{_gl:n}=this;this._boundBufferBases[r]!==e&&(this._boundBufferBases[r]=e,e._lastBindBaseLocation=r,n.bindBufferBase(n.UNIFORM_BUFFER,r,e.buffer))}nextBindBase(e){this._bindCallId++,this._minBaseLocation=0,e&&(this._boundBufferBases[0]=null,this._minBaseLocation=1,this._nextBindBaseIndex<1&&(this._nextBindBaseIndex=1))}freeLocationForBufferBase(e){let r=this.getLastBindBaseLocation(e);if(r>=this._minBaseLocation)return e._lastBindCallId=this._bindCallId,r;let n=0,s=this._nextBindBaseIndex;for(;n<2;){s>=this._maxBindings&&(s=this._minBaseLocation,n++);const i=this._boundBufferBases[s];if(i&&i._lastBindCallId===this._bindCallId){s++;continue}break}return r=s,this._nextBindBaseIndex=s+1,n>=2?-1:(e._lastBindCallId=this._bindCallId,this._boundBufferBases[r]=null,r)}getLastBindBaseLocation(e){const r=e._lastBindBaseLocation;return this._boundBufferBases[r]===e?r:-1}bindBufferRange(e,r,n,s){const{_gl:i}=this;n||(n=0),r||(r=0),this._boundBufferBases[r]=null,i.bindBufferRange(i.UNIFORM_BUFFER,r||0,e.buffer,n*256,s||256)}updateBuffer(e){const{_gl:r}=this,n=this.getGlBuffer(e);if(e._updateID===n.updateID)return n;n.updateID=e._updateID,r.bindBuffer(n.type,n.buffer);const s=e.data,i=e.descriptor.usage&B.STATIC?r.STATIC_DRAW:r.DYNAMIC_DRAW;return s?n.byteLength>=s.byteLength?r.bufferSubData(n.type,0,s,0,e._updateSize/s.BYTES_PER_ELEMENT):(n.byteLength=s.byteLength,r.bufferData(n.type,s,i)):(n.byteLength=e.descriptor.size,r.bufferData(n.type,n.byteLength,i)),n}destroyAll(e=!1){this._managedBuffers.removeAll(e)}onBufferUnload(e,r=!1){const n=e._gpuData[this._renderer.uid];n&&(r||this._gl.deleteBuffer(n.buffer))}createGLBuffer(e){const{_gl:r}=this;let n=A.ARRAY_BUFFER;e.descriptor.usage&B.INDEX?n=A.ELEMENT_ARRAY_BUFFER:e.descriptor.usage&B.UNIFORM&&(n=A.UNIFORM_BUFFER);const s=new Ke(r.createBuffer(),n);return e._gpuData[this._renderer.uid]=s,this._managedBuffers.add(e),s}resetState(){this._boundBufferBases=Object.create(null)}}se.extension={type:[d.WebGLSystem],name:"buffer"};const L=class ie{constructor(e){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=e,this.extensions=Object.create(null),this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(e){this.gl=e,this._renderer.gl=e}init(e){e={...ie.defaultOptions,...e};let r=this.multiView=e.multiView;if(e.context&&r&&(b("Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together."),r=!1),r?this.canvas=R.get().createCanvas(this._renderer.canvas.width,this._renderer.canvas.height):this.canvas=this._renderer.view.canvas,e.context)this.initFromContext(e.context);else{const n=this._renderer.background.alpha<1,s=e.premultipliedAlpha??!0,i=e.antialias&&!this._renderer.backBuffer.useBackBuffer;this.createContext(e.preferWebGLVersion,{alpha:n,premultipliedAlpha:s,antialias:i,stencil:!0,preserveDrawingBuffer:e.preserveDrawingBuffer,powerPreference:e.powerPreference??"default"})}}ensureCanvasSize(e){if(!this.multiView){e!==this.canvas&&b("multiView is disabled, but targetCanvas is not the main canvas");return}const{canvas:r}=this;(r.width<e.width||r.height<e.height)&&(r.width=Math.max(e.width,e.width),r.height=Math.max(e.height,e.height))}initFromContext(e){this.gl=e,this.webGLVersion=e instanceof R.get().getWebGLRenderingContext()?1:2,this.getExtensions(),this.validateContext(e),this._renderer.runners.contextChange.emit(e);const r=this._renderer.view.canvas;r.addEventListener("webglcontextlost",this.handleContextLost,!1),r.addEventListener("webglcontextrestored",this.handleContextRestored,!1)}createContext(e,r){let n;const s=this.canvas;if(e===2&&(n=s.getContext("webgl2",r)),!n&&(n=s.getContext("webgl",r),!n))throw new Error("This browser does not support WebGL. Try using the canvas renderer");this.gl=n,this.initFromContext(this.gl)}getExtensions(){const{gl:e}=this,r={anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),s3tc:e.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:e.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:e.getExtension("WEBGL_compressed_texture_etc"),etc1:e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:e.getExtension("WEBGL_compressed_texture_atc"),astc:e.getExtension("WEBGL_compressed_texture_astc"),bptc:e.getExtension("EXT_texture_compression_bptc"),rgtc:e.getExtension("EXT_texture_compression_rgtc"),loseContext:e.getExtension("WEBGL_lose_context")};if(this.webGLVersion===1)this.extensions={...r,drawBuffers:e.getExtension("WEBGL_draw_buffers"),depthTexture:e.getExtension("WEBGL_depth_texture"),vertexArrayObject:e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:e.getExtension("OES_element_index_uint"),floatTexture:e.getExtension("OES_texture_float"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),textureHalfFloat:e.getExtension("OES_texture_half_float"),textureHalfFloatLinear:e.getExtension("OES_texture_half_float_linear"),vertexAttribDivisorANGLE:e.getExtension("ANGLE_instanced_arrays"),srgb:e.getExtension("EXT_sRGB")};else{this.extensions={...r,colorBufferFloat:e.getExtension("EXT_color_buffer_float")};const n=e.getExtension("WEBGL_provoking_vertex");n&&n.provokingVertexWEBGL(n.FIRST_VERTEX_CONVENTION_WEBGL)}}handleContextLost(e){e.preventDefault(),this._contextLossForced&&(this._contextLossForced=!1,setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext?.restoreContext()},0))}handleContextRestored(){this.getExtensions(),this._renderer.runners.contextChange.emit(this.gl)}destroy(){const e=this._renderer.view.canvas;this._renderer=null,e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext?.loseContext()}forceContextLoss(){this.extensions.loseContext?.loseContext(),this._contextLossForced=!0}validateContext(e){const r=e.getContextAttributes();r&&!r.stencil&&b("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const n=this.supports,s=this.webGLVersion===2,i=this.extensions;n.uint32Indices=s||!!i.uint32ElementIndex,n.uniformBufferObject=s,n.vertexArrayObject=s||!!i.vertexArrayObject,n.srgbTextures=s||!!i.srgb,n.nonPowOf2wrapping=s,n.nonPowOf2mipmaps=s,n.msaa=s,n.uint32Indices||b("Provided WebGL context does not support 32 index buffer, large scenes may not render correctly")}};L.extension={type:[d.WebGLSystem],name:"context"};L.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2,multiView:!1};let $e=L;var G=(t=>(t[t.RGBA=6408]="RGBA",t[t.RGB=6407]="RGB",t[t.RG=33319]="RG",t[t.RED=6403]="RED",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.ALPHA=6406]="ALPHA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",t))(G||{}),w=(t=>(t[t.TEXTURE_2D=3553]="TEXTURE_2D",t[t.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",t[t.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",t[t.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",t[t.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",t[t.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",t[t.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",t))(w||{}),h=(t=>(t[t.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",t[t.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",t[t.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",t[t.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",t[t.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",t[t.UNSIGNED_INT=5125]="UNSIGNED_INT",t[t.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",t[t.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",t[t.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",t[t.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",t[t.BYTE=5120]="BYTE",t[t.SHORT=5122]="SHORT",t[t.INT=5124]="INT",t[t.FLOAT=5126]="FLOAT",t[t.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",t[t.HALF_FLOAT=36193]="HALF_FLOAT",t))(h||{});const k={uint8x2:h.UNSIGNED_BYTE,uint8x4:h.UNSIGNED_BYTE,sint8x2:h.BYTE,sint8x4:h.BYTE,unorm8x2:h.UNSIGNED_BYTE,unorm8x4:h.UNSIGNED_BYTE,snorm8x2:h.BYTE,snorm8x4:h.BYTE,uint16x2:h.UNSIGNED_SHORT,uint16x4:h.UNSIGNED_SHORT,sint16x2:h.SHORT,sint16x4:h.SHORT,unorm16x2:h.UNSIGNED_SHORT,unorm16x4:h.UNSIGNED_SHORT,snorm16x2:h.SHORT,snorm16x4:h.SHORT,float16x2:h.HALF_FLOAT,float16x4:h.HALF_FLOAT,float32:h.FLOAT,float32x2:h.FLOAT,float32x3:h.FLOAT,float32x4:h.FLOAT,uint32:h.UNSIGNED_INT,uint32x2:h.UNSIGNED_INT,uint32x3:h.UNSIGNED_INT,uint32x4:h.UNSIGNED_INT,sint32:h.INT,sint32x2:h.INT,sint32x3:h.INT,sint32x4:h.INT};function Ye(t){return k[t]??k.float32}const ze={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5};class qe{constructor(){this.vaoCache=Object.create(null)}destroy(){this.vaoCache=Object.create(null)}}class ae{constructor(e){this._renderer=e,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0,this._managedGeometries=new P({renderer:e,type:"resource",onUnload:this.onGeometryUnload.bind(this),name:"glGeometry"})}contextChange(){const e=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw new Error("[PixiJS] Vertex Array Objects are not supported on this device");this.destroyAll(!0);const r=this._renderer.context.extensions.vertexArrayObject;r&&(e.createVertexArray=()=>r.createVertexArrayOES(),e.bindVertexArray=s=>r.bindVertexArrayOES(s),e.deleteVertexArray=s=>r.deleteVertexArrayOES(s));const n=this._renderer.context.extensions.vertexAttribDivisorANGLE;n&&(e.drawArraysInstanced=(s,i,a,c)=>{n.drawArraysInstancedANGLE(s,i,a,c)},e.drawElementsInstanced=(s,i,a,c,o)=>{n.drawElementsInstancedANGLE(s,i,a,c,o)},e.vertexAttribDivisor=(s,i)=>n.vertexAttribDivisorANGLE(s,i)),this._activeGeometry=null,this._activeVao=null}bind(e,r){const n=this.gl;this._activeGeometry=e;const s=this.getVao(e,r);this._activeVao!==s&&(this._activeVao=s,n.bindVertexArray(s)),this.updateBuffers()}resetState(){this.unbind()}updateBuffers(){const e=this._activeGeometry,r=this._renderer.buffer;for(let n=0;n<e.buffers.length;n++){const s=e.buffers[n];r.updateBuffer(s)}e._gcLastUsed=this._renderer.gc.now}checkCompatibility(e,r){const n=e.attributes,s=r._attributeData;for(const i in s)if(!n[i])throw new Error(`shader and geometry incompatible, geometry missing the "${i}" attribute`)}getSignature(e,r){const n=e.attributes,s=r._attributeData,i=["g",e.uid];for(const a in n)s[a]&&i.push(a,s[a].location);return i.join("-")}getVao(e,r){return e._gpuData[this._renderer.uid]?.vaoCache[r._key]||this.initGeometryVao(e,r)}initGeometryVao(e,r,n=!0){const s=this._renderer.gl,i=this._renderer.buffer;this._renderer.shader._getProgramData(r),this.checkCompatibility(e,r);const a=this.getSignature(e,r);let c=e._gpuData[this._renderer.uid];c||(c=new qe,e._gpuData[this._renderer.uid]=c,this._managedGeometries.add(e));const o=c.vaoCache;let u=o[a];if(u)return o[r._key]=u,u;Oe(e,r._attributeData);const _=e.buffers;u=s.createVertexArray(),s.bindVertexArray(u);for(let l=0;l<_.length;l++){const f=_[l];i.bind(f)}return this.activateVao(e,r),o[r._key]=u,o[a]=u,s.bindVertexArray(null),u}onGeometryUnload(e,r=!1){const n=e._gpuData[this._renderer.uid];if(!n)return;const s=n.vaoCache;if(!r)for(const i in s)this._activeVao!==s[i]&&this.resetState(),this.gl.deleteVertexArray(s[i])}destroyAll(e=!1){this._managedGeometries.removeAll(e)}activateVao(e,r){const n=this._renderer.gl,s=this._renderer.buffer,i=e.attributes;e.indexBuffer&&s.bind(e.indexBuffer);let a=null;for(const c in i){const o=i[c],u=o.buffer,_=s.getGlBuffer(u),l=r._attributeData[c];if(l){a!==_&&(s.bind(u),a=_);const f=l.location;n.enableVertexAttribArray(f);const m=q(o.format),p=Ye(o.format);if(l.format?.substring(1,4)==="int"?n.vertexAttribIPointer(f,m.size,p,o.stride,o.offset):n.vertexAttribPointer(f,m.size,p,m.normalised,o.stride,o.offset),o.instance)if(this.hasInstance){const E=o.divisor??1;n.vertexAttribDivisor(f,E)}else throw new Error("geometry error, GPU Instancing is not supported on this device")}}}draw(e,r,n,s){const{gl:i}=this._renderer,a=this._activeGeometry,c=ze[e||a.topology];if(s??(s=a.instanceCount),a.indexBuffer){const o=a.indexBuffer.data.BYTES_PER_ELEMENT,u=o===2?i.UNSIGNED_SHORT:i.UNSIGNED_INT;s!==1?i.drawElementsInstanced(c,r||a.indexBuffer.data.length,u,(n||0)*o,s):i.drawElements(c,r||a.indexBuffer.data.length,u,(n||0)*o)}else s!==1?i.drawArraysInstanced(c,n||0,r||a.getSize(),s):i.drawArrays(c,n||0,r||a.getSize());return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this._managedGeometries.destroy(),this._renderer=null,this.gl=null,this._activeVao=null,this._activeGeometry=null}}ae.extension={type:[d.WebGLSystem],name:"geometry"};const Ze=new Ne({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),H=class oe{constructor(e){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=e}init(e={}){const{useBackBuffer:r,antialias:n}={...oe.defaultOptions,...e};this.useBackBuffer=r,this._antialias=n,this._renderer.context.supports.msaa||(b("antialiasing, is not supported on when using the back buffer"),this._antialias=!1),this._state=F.for2d();const s=new Ce({vertex:`
2
2
  attribute vec2 aPosition;
3
3
  out vec2 vUv;
4
4
 
@@ -153,4 +153,4 @@ import{D as R,a as F,j as d,z as P,d as B,w as b,g as q,b as Ce,S as O,T as S,ak
153
153
  cv = cu.value;
154
154
  v = uv["${n}"];
155
155
  ${c};`)}}return new Function("ud","uv","renderer","syncData",r.join(`
156
- `))}class pe{constructor(e){this._cache={},this._uniformGroupSyncHash={},this._renderer=e,this.gl=null,this._cache={}}contextChange(e){this.gl=e}updateUniformGroup(e,r,n){const s=this._renderer.shader._getProgramData(r);(!e.isStatic||e._dirtyId!==s.uniformDirtyGroups[e.uid])&&(s.uniformDirtyGroups[e.uid]=e._dirtyId,this._getUniformSyncFunction(e,r)(s.uniformData,e.uniforms,this._renderer,n))}_getUniformSyncFunction(e,r){return this._uniformGroupSyncHash[e._signature]?.[r._key]||this._createUniformSyncFunction(e,r)}_createUniformSyncFunction(e,r){const n=this._uniformGroupSyncHash[e._signature]||(this._uniformGroupSyncHash[e._signature]={}),s=this._getSignature(e,r._uniformData,"u");return this._cache[s]||(this._cache[s]=this._generateUniformsSync(e,r._uniformData)),n[r._key]=this._cache[s],n[r._key]}_generateUniformsSync(e,r){return mt(e,r)}_getSignature(e,r,n){const s=e.uniforms,i=[`${n}-`];for(const a in s)i.push(a),r[a]&&i.push(r[a].type);return i.join("-")}destroy(){this._renderer=null,this._cache=null}}pe.extension={type:[d.WebGLSystem],name:"uniformGroup"};function Et(t){const e={};if(e.normal=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e.add=[t.ONE,t.ONE],e.multiply=[t.DST_COLOR,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],e.screen=[t.ONE,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],e.none=[0,0],e["normal-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],e["add-npm"]=[t.SRC_ALPHA,t.ONE,t.ONE,t.ONE],e["screen-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],e.erase=[t.ZERO,t.ONE_MINUS_SRC_ALPHA],!(t instanceof R.get().getWebGLRenderingContext()))e.min=[t.ONE,t.ONE,t.ONE,t.ONE,t.MIN,t.MIN],e.max=[t.ONE,t.ONE,t.ONE,t.ONE,t.MAX,t.MAX];else{const n=t.getExtension("EXT_blend_minmax");n&&(e.min=[t.ONE,t.ONE,t.ONE,t.ONE,n.MIN_EXT,n.MIN_EXT],e.max=[t.ONE,t.ONE,t.ONE,t.ONE,n.MAX_EXT,n.MAX_EXT])}return e}const bt=0,pt=1,St=2,Rt=3,gt=4,Tt=5,Se=class U{constructor(e){this._invertFrontFace=!1,this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode="none",this._blendEq=!1,this.map=[],this.map[bt]=this.setBlend,this.map[pt]=this.setOffset,this.map[St]=this.setCullFace,this.map[Rt]=this.setDepthTest,this.map[gt]=this.setFrontFace,this.map[Tt]=this.setDepthMask,this.checks=[],this.defaultState=F.for2d(),e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){this._invertFrontFace=!e.isRoot,this._cullFace?this.setFrontFace(this._frontFace):this._frontFaceDirty=!0}contextChange(e){this.gl=e,this.blendModesMap=Et(e),this.resetState()}set(e){if(e||(e=this.defaultState),this.stateId!==e.data){let r=this.stateId^e.data,n=0;for(;r;)r&1&&this.map[n].call(this,!!(e.data&1<<n)),r>>=1,n++;this.stateId=e.data}for(let r=0;r<this.checks.length;r++)this.checks[r](this,e)}forceState(e){e||(e=this.defaultState);for(let r=0;r<this.map.length;r++)this.map[r].call(this,!!(e.data&1<<r));for(let r=0;r<this.checks.length;r++)this.checks[r](this,e);this.stateId=e.data}setBlend(e){this._updateCheck(U._checkBlendMode,e),this.gl[e?"enable":"disable"](this.gl.BLEND)}setOffset(e){this._updateCheck(U._checkPolygonOffset,e),this.gl[e?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest(e){this.gl[e?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask(e){this.gl.depthMask(e)}setCullFace(e){this._cullFace=e,this.gl[e?"enable":"disable"](this.gl.CULL_FACE),this._cullFace&&this._frontFaceDirty&&this.setFrontFace(this._frontFace)}setFrontFace(e){this._frontFace=e,this._frontFaceDirty=!1;const r=this._invertFrontFace?!e:e;this._glFrontFace!==r&&(this._glFrontFace=r,this.gl.frontFace(this.gl[r?"CW":"CCW"]))}setBlendMode(e){if(this.blendModesMap[e]||(e="normal"),e===this.blendMode)return;this.blendMode=e;const r=this.blendModesMap[e],n=this.gl;r.length===2?n.blendFunc(r[0],r[1]):n.blendFuncSeparate(r[0],r[1],r[2],r[3]),r.length===6?(this._blendEq=!0,n.blendEquationSeparate(r[4],r[5])):this._blendEq&&(this._blendEq=!1,n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD))}setPolygonOffset(e,r){this.gl.polygonOffset(e,r)}resetState(){this._glFrontFace=!1,this._frontFace=!1,this._cullFace=!1,this._frontFaceDirty=!1,this._invertFrontFace=!1,this.gl.frontFace(this.gl.CCW),this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode="",this.setBlendMode("normal")}_updateCheck(e,r){const n=this.checks.indexOf(e);r&&n===-1?this.checks.push(e):!r&&n!==-1&&this.checks.splice(n,1)}static _checkBlendMode(e,r){e.setBlendMode(r.blendMode)}static _checkPolygonOffset(e,r){e.setPolygonOffset(1,r.polygonOffset)}destroy(){this.gl=null,this.checks.length=0}};Se.extension={type:[d.WebGLSystem],name:"state"};let xt=Se;class vt{constructor(e){this.target=w.TEXTURE_2D,this._layerInitMask=0,this.texture=e,this.width=-1,this.height=-1,this.type=h.UNSIGNED_BYTE,this.internalFormat=G.RGBA,this.format=G.RGBA,this.samplerType=0}destroy(){}}const At={id:"buffer",upload(t,e,r,n,s,i=!1){const a=s||e.target;!i&&e.width===t.width&&e.height===t.height?r.texSubImage2D(a,0,0,0,t.width,t.height,e.format,e.type,t.resource):r.texImage2D(a,0,e.internalFormat,t.width,t.height,0,e.format,e.type,t.resource),e.width=t.width,e.height=t.height}},Bt={"bc1-rgba-unorm":!0,"bc1-rgba-unorm-srgb":!0,"bc2-rgba-unorm":!0,"bc2-rgba-unorm-srgb":!0,"bc3-rgba-unorm":!0,"bc3-rgba-unorm-srgb":!0,"bc4-r-unorm":!0,"bc4-r-snorm":!0,"bc5-rg-unorm":!0,"bc5-rg-snorm":!0,"bc6h-rgb-ufloat":!0,"bc6h-rgb-float":!0,"bc7-rgba-unorm":!0,"bc7-rgba-unorm-srgb":!0,"etc2-rgb8unorm":!0,"etc2-rgb8unorm-srgb":!0,"etc2-rgb8a1unorm":!0,"etc2-rgb8a1unorm-srgb":!0,"etc2-rgba8unorm":!0,"etc2-rgba8unorm-srgb":!0,"eac-r11unorm":!0,"eac-r11snorm":!0,"eac-rg11unorm":!0,"eac-rg11snorm":!0,"astc-4x4-unorm":!0,"astc-4x4-unorm-srgb":!0,"astc-5x4-unorm":!0,"astc-5x4-unorm-srgb":!0,"astc-5x5-unorm":!0,"astc-5x5-unorm-srgb":!0,"astc-6x5-unorm":!0,"astc-6x5-unorm-srgb":!0,"astc-6x6-unorm":!0,"astc-6x6-unorm-srgb":!0,"astc-8x5-unorm":!0,"astc-8x5-unorm-srgb":!0,"astc-8x6-unorm":!0,"astc-8x6-unorm-srgb":!0,"astc-8x8-unorm":!0,"astc-8x8-unorm-srgb":!0,"astc-10x5-unorm":!0,"astc-10x5-unorm-srgb":!0,"astc-10x6-unorm":!0,"astc-10x6-unorm-srgb":!0,"astc-10x8-unorm":!0,"astc-10x8-unorm-srgb":!0,"astc-10x10-unorm":!0,"astc-10x10-unorm-srgb":!0,"astc-12x10-unorm":!0,"astc-12x10-unorm-srgb":!0,"astc-12x12-unorm":!0,"astc-12x12-unorm-srgb":!0},yt={id:"compressed",upload(t,e,r,n,s,i){const a=s??e.target;r.pixelStorei(r.UNPACK_ALIGNMENT,4);let c=t.pixelWidth,o=t.pixelHeight;const u=!!Bt[t.format];for(let _=0;_<t.resource.length;_++){const l=t.resource[_];u?r.compressedTexImage2D(a,_,e.internalFormat,c,o,0,l):r.texImage2D(a,_,e.internalFormat,c,o,0,e.format,e.type,l),c=Math.max(c>>1,1),o=Math.max(o>>1,1)}}},$=["right","left","top","bottom","front","back"];function Ct(t){return{id:"cube",upload(e,r,n,s){const i=e.faces;for(let a=0;a<$.length;a++){const c=$[a],o=i[c];(t[o.uploadMethodId]||t.image).upload(o,r,n,s,w.TEXTURE_CUBE_MAP_POSITIVE_X+a,(r._layerInitMask&1<<a)===0),r._layerInitMask|=1<<a}r.width=e.pixelWidth,r.height=e.pixelHeight}}}const Re={id:"image",upload(t,e,r,n,s,i=!1){const a=s||e.target,c=t.pixelWidth,o=t.pixelHeight,u=t.resourceWidth,_=t.resourceHeight,l=n===2,f=i||e.width!==c||e.height!==o,m=u>=c&&_>=o,p=t.resource;(l?Nt:Dt)(r,a,e,c,o,u,_,p,f,m),e.width=c,e.height=o}};function Nt(t,e,r,n,s,i,a,c,o,u){if(!u){o&&t.texImage2D(e,0,r.internalFormat,n,s,0,r.format,r.type,null),t.texSubImage2D(e,0,0,0,i,a,r.format,r.type,c);return}if(!o){t.texSubImage2D(e,0,0,0,r.format,r.type,c);return}t.texImage2D(e,0,r.internalFormat,n,s,0,r.format,r.type,c)}function Dt(t,e,r,n,s,i,a,c,o,u){if(!u){o&&t.texImage2D(e,0,r.internalFormat,n,s,0,r.format,r.type,null),t.texSubImage2D(e,0,0,0,r.format,r.type,c);return}if(!o){t.texSubImage2D(e,0,0,0,r.format,r.type,c);return}t.texImage2D(e,0,r.internalFormat,r.format,r.type,c)}const It=je(),Gt={id:"video",upload(t,e,r,n,s,i=It){if(!t.isValid){const a=s??e.target;r.texImage2D(a,0,e.internalFormat,1,1,0,e.format,e.type,null);return}Re.upload(t,e,r,n,s,i)}},Y={linear:9729,nearest:9728},Ut={linear:{linear:9987,nearest:9985},nearest:{linear:9986,nearest:9984}},I={"clamp-to-edge":33071,repeat:10497,"mirror-repeat":33648},Ft={never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519};function z(t,e,r,n,s,i,a,c){const o=i;if(!c||t.addressModeU!=="repeat"||t.addressModeV!=="repeat"||t.addressModeW!=="repeat"){const u=I[a?"clamp-to-edge":t.addressModeU],_=I[a?"clamp-to-edge":t.addressModeV],l=I[a?"clamp-to-edge":t.addressModeW];e[s](o,e.TEXTURE_WRAP_S,u),e[s](o,e.TEXTURE_WRAP_T,_),e.TEXTURE_WRAP_R&&e[s](o,e.TEXTURE_WRAP_R,l)}if((!c||t.magFilter!=="linear")&&e[s](o,e.TEXTURE_MAG_FILTER,Y[t.magFilter]),r){if(!c||t.mipmapFilter!=="linear"){const u=Ut[t.minFilter][t.mipmapFilter];e[s](o,e.TEXTURE_MIN_FILTER,u)}}else e[s](o,e.TEXTURE_MIN_FILTER,Y[t.minFilter]);if(n&&t.maxAnisotropy>1){const u=Math.min(t.maxAnisotropy,e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT));e[s](o,n.TEXTURE_MAX_ANISOTROPY_EXT,u)}t.compare&&e[s](o,e.TEXTURE_COMPARE_FUNC,Ft[t.compare])}function Pt(t){return{r8unorm:t.RED,r8snorm:t.RED,r8uint:t.RED,r8sint:t.RED,r16uint:t.RED,r16sint:t.RED,r16float:t.RED,rg8unorm:t.RG,rg8snorm:t.RG,rg8uint:t.RG,rg8sint:t.RG,r32uint:t.RED,r32sint:t.RED,r32float:t.RED,rg16uint:t.RG,rg16sint:t.RG,rg16float:t.RG,rgba8unorm:t.RGBA,"rgba8unorm-srgb":t.RGBA,rgba8snorm:t.RGBA,rgba8uint:t.RGBA,rgba8sint:t.RGBA,bgra8unorm:t.RGBA,"bgra8unorm-srgb":t.RGBA,rgb9e5ufloat:t.RGB,rgb10a2unorm:t.RGBA,rg11b10ufloat:t.RGB,rg32uint:t.RG,rg32sint:t.RG,rg32float:t.RG,rgba16uint:t.RGBA,rgba16sint:t.RGBA,rgba16float:t.RGBA,rgba32uint:t.RGBA,rgba32sint:t.RGBA,rgba32float:t.RGBA,stencil8:t.STENCIL_INDEX8,depth16unorm:t.DEPTH_COMPONENT,depth24plus:t.DEPTH_COMPONENT,"depth24plus-stencil8":t.DEPTH_STENCIL,depth32float:t.DEPTH_COMPONENT,"depth32float-stencil8":t.DEPTH_STENCIL}}function Ot(t,e){let r={},n=t.RGBA;return t instanceof R.get().getWebGLRenderingContext()?e.srgb&&(r={"rgba8unorm-srgb":e.srgb.SRGB8_ALPHA8_EXT,"bgra8unorm-srgb":e.srgb.SRGB8_ALPHA8_EXT}):(r={"rgba8unorm-srgb":t.SRGB8_ALPHA8,"bgra8unorm-srgb":t.SRGB8_ALPHA8},n=t.RGBA8),{r8unorm:t.R8,r8snorm:t.R8_SNORM,r8uint:t.R8UI,r8sint:t.R8I,r16uint:t.R16UI,r16sint:t.R16I,r16float:t.R16F,rg8unorm:t.RG8,rg8snorm:t.RG8_SNORM,rg8uint:t.RG8UI,rg8sint:t.RG8I,r32uint:t.R32UI,r32sint:t.R32I,r32float:t.R32F,rg16uint:t.RG16UI,rg16sint:t.RG16I,rg16float:t.RG16F,rgba8unorm:t.RGBA,...r,rgba8snorm:t.RGBA8_SNORM,rgba8uint:t.RGBA8UI,rgba8sint:t.RGBA8I,bgra8unorm:n,rgb9e5ufloat:t.RGB9_E5,rgb10a2unorm:t.RGB10_A2,rg11b10ufloat:t.R11F_G11F_B10F,rg32uint:t.RG32UI,rg32sint:t.RG32I,rg32float:t.RG32F,rgba16uint:t.RGBA16UI,rgba16sint:t.RGBA16I,rgba16float:t.RGBA16F,rgba32uint:t.RGBA32UI,rgba32sint:t.RGBA32I,rgba32float:t.RGBA32F,stencil8:t.STENCIL_INDEX8,depth16unorm:t.DEPTH_COMPONENT16,depth24plus:t.DEPTH_COMPONENT24,"depth24plus-stencil8":t.DEPTH24_STENCIL8,depth32float:t.DEPTH_COMPONENT32F,"depth32float-stencil8":t.DEPTH32F_STENCIL8,...e.s3tc?{"bc1-rgba-unorm":e.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,"bc2-rgba-unorm":e.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,"bc3-rgba-unorm":e.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT}:{},...e.s3tc_sRGB?{"bc1-rgba-unorm-srgb":e.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,"bc2-rgba-unorm-srgb":e.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,"bc3-rgba-unorm-srgb":e.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}:{},...e.rgtc?{"bc4-r-unorm":e.rgtc.COMPRESSED_RED_RGTC1_EXT,"bc4-r-snorm":e.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,"bc5-rg-unorm":e.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,"bc5-rg-snorm":e.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}:{},...e.bptc?{"bc6h-rgb-float":e.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,"bc6h-rgb-ufloat":e.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,"bc7-rgba-unorm":e.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,"bc7-rgba-unorm-srgb":e.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT}:{},...e.etc?{"etc2-rgb8unorm":e.etc.COMPRESSED_RGB8_ETC2,"etc2-rgb8unorm-srgb":e.etc.COMPRESSED_SRGB8_ETC2,"etc2-rgb8a1unorm":e.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgb8a1unorm-srgb":e.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgba8unorm":e.etc.COMPRESSED_RGBA8_ETC2_EAC,"etc2-rgba8unorm-srgb":e.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,"eac-r11unorm":e.etc.COMPRESSED_R11_EAC,"eac-rg11unorm":e.etc.COMPRESSED_SIGNED_RG11_EAC}:{},...e.astc?{"astc-4x4-unorm":e.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,"astc-4x4-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,"astc-5x4-unorm":e.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,"astc-5x4-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,"astc-5x5-unorm":e.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,"astc-5x5-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,"astc-6x5-unorm":e.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,"astc-6x5-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,"astc-6x6-unorm":e.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,"astc-6x6-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,"astc-8x5-unorm":e.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,"astc-8x5-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,"astc-8x6-unorm":e.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,"astc-8x6-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,"astc-8x8-unorm":e.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,"astc-8x8-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,"astc-10x5-unorm":e.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,"astc-10x5-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,"astc-10x6-unorm":e.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,"astc-10x6-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,"astc-10x8-unorm":e.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,"astc-10x8-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,"astc-10x10-unorm":e.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,"astc-10x10-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,"astc-12x10-unorm":e.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,"astc-12x10-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,"astc-12x12-unorm":e.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,"astc-12x12-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR}:{}}}function Mt(t){return{r8unorm:t.UNSIGNED_BYTE,r8snorm:t.BYTE,r8uint:t.UNSIGNED_BYTE,r8sint:t.BYTE,r16uint:t.UNSIGNED_SHORT,r16sint:t.SHORT,r16float:t.HALF_FLOAT,rg8unorm:t.UNSIGNED_BYTE,rg8snorm:t.BYTE,rg8uint:t.UNSIGNED_BYTE,rg8sint:t.BYTE,r32uint:t.UNSIGNED_INT,r32sint:t.INT,r32float:t.FLOAT,rg16uint:t.UNSIGNED_SHORT,rg16sint:t.SHORT,rg16float:t.HALF_FLOAT,rgba8unorm:t.UNSIGNED_BYTE,"rgba8unorm-srgb":t.UNSIGNED_BYTE,rgba8snorm:t.BYTE,rgba8uint:t.UNSIGNED_BYTE,rgba8sint:t.BYTE,bgra8unorm:t.UNSIGNED_BYTE,"bgra8unorm-srgb":t.UNSIGNED_BYTE,rgb9e5ufloat:t.UNSIGNED_INT_5_9_9_9_REV,rgb10a2unorm:t.UNSIGNED_INT_2_10_10_10_REV,rg11b10ufloat:t.UNSIGNED_INT_10F_11F_11F_REV,rg32uint:t.UNSIGNED_INT,rg32sint:t.INT,rg32float:t.FLOAT,rgba16uint:t.UNSIGNED_SHORT,rgba16sint:t.SHORT,rgba16float:t.HALF_FLOAT,rgba32uint:t.UNSIGNED_INT,rgba32sint:t.INT,rgba32float:t.FLOAT,stencil8:t.UNSIGNED_BYTE,depth16unorm:t.UNSIGNED_SHORT,depth24plus:t.UNSIGNED_INT,"depth24plus-stencil8":t.UNSIGNED_INT_24_8,depth32float:t.FLOAT,"depth32float-stencil8":t.FLOAT_32_UNSIGNED_INT_24_8_REV}}function Lt(t){return{"2d":t.TEXTURE_2D,cube:t.TEXTURE_CUBE_MAP,"1d":null,"3d":t?.TEXTURE_3D||null,"2d-array":t?.TEXTURE_2D_ARRAY||null,"cube-array":t?.TEXTURE_CUBE_MAP_ARRAY||null}}const wt=4,V=class ge{constructor(e){this._glSamplers=Object.create(null),this._boundTextures=[],this._activeTextureLocation=-1,this._boundSamplers=Object.create(null),this._premultiplyAlpha=!1,this._useSeparateSamplers=!1,this._renderer=e,this._managedTextures=new P({renderer:e,type:"resource",onUnload:this.onSourceUnload.bind(this),name:"glTexture"});const r={image:Re,buffer:At,video:Gt,compressed:yt,...ge.uploadExtensions};this._uploads={...r,cube:Ct(r)}}get managedTextures(){return Object.values(this._managedTextures.items)}contextChange(e){this._gl=e,this._mapFormatToInternalFormat||(this._mapFormatToInternalFormat=Ot(e,this._renderer.context.extensions),this._mapFormatToType=Mt(e),this._mapFormatToFormat=Pt(e),this._mapViewDimensionToGlTarget=Lt(e)),this._managedTextures.removeAll(!0),this._glSamplers=Object.create(null),this._boundSamplers=Object.create(null),this._premultiplyAlpha=!1;for(let r=0;r<16;r++)this.bind(S.EMPTY,r)}initSource(e){this.bind(e)}bind(e,r=0){const n=e.source;e?(this.bindSource(n,r),this._useSeparateSamplers&&this._bindSampler(n.style,r)):(this.bindSource(null,r),this._useSeparateSamplers&&this._bindSampler(null,r))}bindSource(e,r=0){const n=this._gl;if(e._gcLastUsed=this._renderer.gc.now,this._boundTextures[r]!==e){this._boundTextures[r]=e,this._activateLocation(r),e||(e=S.EMPTY.source);const s=this.getGlSource(e);n.bindTexture(s.target,s.texture)}}_bindSampler(e,r=0){const n=this._gl;if(!e){this._boundSamplers[r]=null,n.bindSampler(r,null);return}const s=this._getGlSampler(e);this._boundSamplers[r]!==s&&(this._boundSamplers[r]=s,n.bindSampler(r,s))}unbind(e){const r=e.source,n=this._boundTextures,s=this._gl;for(let i=0;i<n.length;i++)if(n[i]===r){this._activateLocation(i);const a=this.getGlSource(r);s.bindTexture(a.target,null),n[i]=null}}_activateLocation(e){this._activeTextureLocation!==e&&(this._activeTextureLocation=e,this._gl.activeTexture(this._gl.TEXTURE0+e))}_initSource(e){const r=this._gl,n=new vt(r.createTexture());if(n.type=this._mapFormatToType[e.format],n.internalFormat=this._mapFormatToInternalFormat[e.format],n.format=this._mapFormatToFormat[e.format],n.target=this._mapViewDimensionToGlTarget[e.viewDimension],n.target===null)throw new Error(`Unsupported view dimension: ${e.viewDimension} with this webgl version: ${this._renderer.context.webGLVersion}`);if(e.uploadMethodId==="cube"&&(n.target=r.TEXTURE_CUBE_MAP),e.autoGenerateMipmaps&&(this._renderer.context.supports.nonPowOf2mipmaps||e.isPowerOfTwo)){const i=Math.max(e.width,e.height);e.mipLevelCount=Math.floor(Math.log2(i))+1}return e._gpuData[this._renderer.uid]=n,this._managedTextures.add(e)&&(e.on("update",this.onSourceUpdate,this),e.on("resize",this.onSourceUpdate,this),e.on("styleChange",this.onStyleChange,this),e.on("updateMipmaps",this.onUpdateMipmaps,this)),this.onSourceUpdate(e),this.updateStyle(e,!1),n}onStyleChange(e){this.updateStyle(e,!1)}updateStyle(e,r){const n=this._gl,s=this.getGlSource(e);n.bindTexture(s.target,s.texture),this._boundTextures[this._activeTextureLocation]=e,z(e.style,n,e.mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"texParameteri",s.target,!this._renderer.context.supports.nonPowOf2wrapping&&!e.isPowerOfTwo,r)}onSourceUnload(e,r=!1){const n=e._gpuData[this._renderer.uid];n&&(r||(this.unbind(e),this._gl.deleteTexture(n.texture)),e.off("update",this.onSourceUpdate,this),e.off("resize",this.onSourceUpdate,this),e.off("styleChange",this.onStyleChange,this),e.off("updateMipmaps",this.onUpdateMipmaps,this))}onSourceUpdate(e){const r=this._gl,n=this.getGlSource(e);r.bindTexture(n.target,n.texture),this._boundTextures[this._activeTextureLocation]=e;const s=e.alphaMode==="premultiply-alpha-on-upload";if(this._premultiplyAlpha!==s&&(this._premultiplyAlpha=s,r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s)),this._uploads[e.uploadMethodId])this._uploads[e.uploadMethodId].upload(e,n,r,this._renderer.context.webGLVersion);else if(n.target===r.TEXTURE_2D)this._initEmptyTexture2D(n,e);else if(n.target===r.TEXTURE_2D_ARRAY)this._initEmptyTexture2DArray(n,e);else if(n.target===r.TEXTURE_CUBE_MAP)this._initEmptyTextureCube(n,e);else throw new Error("[GlTextureSystem] Unsupported texture target for empty allocation.");this._applyMipRange(n,e),e.autoGenerateMipmaps&&e.mipLevelCount>1&&this.onUpdateMipmaps(e,!1)}onUpdateMipmaps(e,r=!0){r&&this.bindSource(e,0);const n=this.getGlSource(e);this._gl.generateMipmap(n.target)}_initEmptyTexture2D(e,r){const n=this._gl;n.texImage2D(n.TEXTURE_2D,0,e.internalFormat,r.pixelWidth,r.pixelHeight,0,e.format,e.type,null);let s=Math.max(r.pixelWidth>>1,1),i=Math.max(r.pixelHeight>>1,1);for(let a=1;a<r.mipLevelCount;a++)n.texImage2D(n.TEXTURE_2D,a,e.internalFormat,s,i,0,e.format,e.type,null),s=Math.max(s>>1,1),i=Math.max(i>>1,1)}_initEmptyTexture2DArray(e,r){if(this._renderer.context.webGLVersion!==2)throw new Error("[GlTextureSystem] TEXTURE_2D_ARRAY requires WebGL2.");const n=this._gl,s=Math.max(r.arrayLayerCount|0,1);n.texImage3D(n.TEXTURE_2D_ARRAY,0,e.internalFormat,r.pixelWidth,r.pixelHeight,s,0,e.format,e.type,null);let i=Math.max(r.pixelWidth>>1,1),a=Math.max(r.pixelHeight>>1,1);for(let c=1;c<r.mipLevelCount;c++)n.texImage3D(n.TEXTURE_2D_ARRAY,c,e.internalFormat,i,a,s,0,e.format,e.type,null),i=Math.max(i>>1,1),a=Math.max(a>>1,1)}_initEmptyTextureCube(e,r){const n=this._gl,s=6;for(let c=0;c<s;c++)n.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+c,0,e.internalFormat,r.pixelWidth,r.pixelHeight,0,e.format,e.type,null);let i=Math.max(r.pixelWidth>>1,1),a=Math.max(r.pixelHeight>>1,1);for(let c=1;c<r.mipLevelCount;c++){for(let o=0;o<s;o++)n.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+o,c,e.internalFormat,i,a,0,e.format,e.type,null);i=Math.max(i>>1,1),a=Math.max(a>>1,1)}}_applyMipRange(e,r){if(this._renderer.context.webGLVersion!==2||r.mipLevelCount<=1)return;const n=this._gl,s=Math.max((r.mipLevelCount|0)-1,0);n.texParameteri(e.target,n.TEXTURE_BASE_LEVEL,0),n.texParameteri(e.target,n.TEXTURE_MAX_LEVEL,s)}_initSampler(e){const r=this._gl,n=this._gl.createSampler();return this._glSamplers[e._resourceId]=n,z(e,r,this._boundTextures[this._activeTextureLocation].mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"samplerParameteri",n,!1,!0),this._glSamplers[e._resourceId]}_getGlSampler(e){return this._glSamplers[e._resourceId]||this._initSampler(e)}getGlSource(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]||this._initSource(e)}generateCanvas(e){const{pixels:r,width:n,height:s}=this.getPixels(e),i=R.get().createCanvas();i.width=n,i.height=s;const a=i.getContext("2d");if(a){const c=a.createImageData(n,s);c.data.set(r),a.putImageData(c,0,0)}return i}getPixels(e){const r=e.source.resolution,n=e.frame,s=Math.max(Math.round(n.width*r),1),i=Math.max(Math.round(n.height*r),1),a=new Uint8Array(wt*s*i),c=this._renderer,o=c.renderTarget.getRenderTarget(e),u=c.renderTarget.getGpuRenderTarget(o),_=c.gl;return _.bindFramebuffer(_.FRAMEBUFFER,u.resolveTargetFramebuffer),_.readPixels(Math.round(n.x*r),Math.round(n.y*r),s,i,_.RGBA,_.UNSIGNED_BYTE,a),{pixels:new Uint8ClampedArray(a.buffer),width:s,height:i}}destroy(){this._managedTextures.destroy(),this._glSamplers=null,this._boundTextures=null,this._boundSamplers=null,this._mapFormatToInternalFormat=null,this._mapFormatToType=null,this._mapFormatToFormat=null,this._uploads=null,this._renderer=null}resetState(){this._activeTextureLocation=-1,this._boundTextures.fill(S.EMPTY.source),this._boundSamplers=Object.create(null);const e=this._gl;this._premultiplyAlpha=!1,e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this._premultiplyAlpha)}};V.extension={type:[d.WebGLSystem],name:"texture"};V.uploadExtensions=Object.create(null);let Te=V;g.handleByMap(d.TextureUploaderWebGL,Te.uploadExtensions);class xe{contextChange(e){const r=new M({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uTransformMatrix:{value:new J,type:"mat3x3<f32>"},uRound:{value:0,type:"f32"}}),n=e.limits.maxBatchableTextures,s=Q({name:"graphics",bits:[Ie,Ge(n),re,ee]});this.shader=new O({glProgram:s,resources:{localUniforms:r,batchSamplers:Ue(n)}})}execute(e,r){const n=r.context,s=n.customShader||this.shader,i=e.renderer,a=i.graphicsContext,{batcher:c,instructions:o}=a.getContextRenderData(n);s.groups[0]=i.globalUniforms.bindGroup,i.state.set(e.state),i.shader.bind(s),i.geometry.bind(c.geometry,s.glProgram);const u=o.instructions;for(let _=0;_<o.instructionSize;_++){const l=u[_];if(l.size){for(let f=0;f<l.textures.count;f++)i.texture.bind(l.textures.textures[f],f);i.geometry.draw(l.topology,l.size,l.start)}}}destroy(){this.shader.destroy(!0),this.shader=null}}xe.extension={type:[d.WebGLPipesAdaptor],name:"graphics"};class ve{init(){const e=Q({name:"mesh",bits:[re,Ve,ee]});this._shader=new O({glProgram:e,resources:{uTexture:S.EMPTY.source,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new J}}}})}execute(e,r){const n=e.renderer;let s=r._shader;if(s){if(!s.glProgram){b("Mesh shader has no glProgram",r.shader);return}}else{s=this._shader;const i=r.texture,a=i.source;s.resources.uTexture=a,s.resources.uSampler=a.style,s.resources.textureUniforms.uniforms.uTextureMatrix=i.textureMatrix.mapCoord}s.groups[100]=n.globalUniforms.bindGroup,s.groups[101]=e.localUniformsBindGroup,n.encoder.draw({geometry:r._geometry,shader:s,state:r.state})}destroy(){this._shader.destroy(!0),this._shader=null}}ve.extension={type:[d.WebGLPipesAdaptor],name:"mesh"};const Ht=[...ke,he,Je,$e,_e,se,Te,de,ae,pe,be,ue,xt,le,ce],Vt=[...We],Xt=[ne,ve,xe],Ae=[],Be=[],ye=[];g.handleByNamedList(d.WebGLSystem,Ae);g.handleByNamedList(d.WebGLPipes,Be);g.handleByNamedList(d.WebGLPipesAdaptor,ye);g.add(...Ht,...Vt,...Xt);class Qt extends Fe{constructor(){const e={name:"webgl",type:Pe.WEBGL,systems:Ae,renderPipes:Be,renderPipeAdaptors:ye};super(e)}}export{Qt as WebGLRenderer};
156
+ `))}class pe{constructor(e){this._cache={},this._uniformGroupSyncHash={},this._renderer=e,this.gl=null,this._cache={}}contextChange(e){this.gl=e}updateUniformGroup(e,r,n){const s=this._renderer.shader._getProgramData(r);(!e.isStatic||e._dirtyId!==s.uniformDirtyGroups[e.uid])&&(s.uniformDirtyGroups[e.uid]=e._dirtyId,this._getUniformSyncFunction(e,r)(s.uniformData,e.uniforms,this._renderer,n))}_getUniformSyncFunction(e,r){return this._uniformGroupSyncHash[e._signature]?.[r._key]||this._createUniformSyncFunction(e,r)}_createUniformSyncFunction(e,r){const n=this._uniformGroupSyncHash[e._signature]||(this._uniformGroupSyncHash[e._signature]={}),s=this._getSignature(e,r._uniformData,"u");return this._cache[s]||(this._cache[s]=this._generateUniformsSync(e,r._uniformData)),n[r._key]=this._cache[s],n[r._key]}_generateUniformsSync(e,r){return mt(e,r)}_getSignature(e,r,n){const s=e.uniforms,i=[`${n}-`];for(const a in s)i.push(a),r[a]&&i.push(r[a].type);return i.join("-")}destroy(){this._renderer=null,this._cache=null}}pe.extension={type:[d.WebGLSystem],name:"uniformGroup"};function Et(t){const e={};if(e.normal=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e.add=[t.ONE,t.ONE],e.multiply=[t.DST_COLOR,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],e.screen=[t.ONE,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],e.none=[0,0],e["normal-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],e["add-npm"]=[t.SRC_ALPHA,t.ONE,t.ONE,t.ONE],e["screen-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],e.erase=[t.ZERO,t.ONE_MINUS_SRC_ALPHA],!(t instanceof R.get().getWebGLRenderingContext()))e.min=[t.ONE,t.ONE,t.ONE,t.ONE,t.MIN,t.MIN],e.max=[t.ONE,t.ONE,t.ONE,t.ONE,t.MAX,t.MAX];else{const n=t.getExtension("EXT_blend_minmax");n&&(e.min=[t.ONE,t.ONE,t.ONE,t.ONE,n.MIN_EXT,n.MIN_EXT],e.max=[t.ONE,t.ONE,t.ONE,t.ONE,n.MAX_EXT,n.MAX_EXT])}return e}const bt=0,pt=1,St=2,Rt=3,gt=4,Tt=5,Se=class U{constructor(e){this._invertFrontFace=!1,this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode="none",this._blendEq=!1,this.map=[],this.map[bt]=this.setBlend,this.map[pt]=this.setOffset,this.map[St]=this.setCullFace,this.map[Rt]=this.setDepthTest,this.map[gt]=this.setFrontFace,this.map[Tt]=this.setDepthMask,this.checks=[],this.defaultState=F.for2d(),e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){this._invertFrontFace=!e.isRoot,this._cullFace?this.setFrontFace(this._frontFace):this._frontFaceDirty=!0}contextChange(e){this.gl=e,this.blendModesMap=Et(e),this.resetState()}set(e){if(e||(e=this.defaultState),this.stateId!==e.data){let r=this.stateId^e.data,n=0;for(;r;)r&1&&this.map[n].call(this,!!(e.data&1<<n)),r>>=1,n++;this.stateId=e.data}for(let r=0;r<this.checks.length;r++)this.checks[r](this,e)}forceState(e){e||(e=this.defaultState);for(let r=0;r<this.map.length;r++)this.map[r].call(this,!!(e.data&1<<r));for(let r=0;r<this.checks.length;r++)this.checks[r](this,e);this.stateId=e.data}setBlend(e){this._updateCheck(U._checkBlendMode,e),this.gl[e?"enable":"disable"](this.gl.BLEND)}setOffset(e){this._updateCheck(U._checkPolygonOffset,e),this.gl[e?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest(e){this.gl[e?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask(e){this.gl.depthMask(e)}setCullFace(e){this._cullFace=e,this.gl[e?"enable":"disable"](this.gl.CULL_FACE),this._cullFace&&this._frontFaceDirty&&this.setFrontFace(this._frontFace)}setFrontFace(e){this._frontFace=e,this._frontFaceDirty=!1;const r=this._invertFrontFace?!e:e;this._glFrontFace!==r&&(this._glFrontFace=r,this.gl.frontFace(this.gl[r?"CW":"CCW"]))}setBlendMode(e){if(this.blendModesMap[e]||(e="normal"),e===this.blendMode)return;this.blendMode=e;const r=this.blendModesMap[e],n=this.gl;r.length===2?n.blendFunc(r[0],r[1]):n.blendFuncSeparate(r[0],r[1],r[2],r[3]),r.length===6?(this._blendEq=!0,n.blendEquationSeparate(r[4],r[5])):this._blendEq&&(this._blendEq=!1,n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD))}setPolygonOffset(e,r){this.gl.polygonOffset(e,r)}resetState(){this._glFrontFace=!1,this._frontFace=!1,this._cullFace=!1,this._frontFaceDirty=!1,this._invertFrontFace=!1,this.gl.frontFace(this.gl.CCW),this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode="",this.setBlendMode("normal")}_updateCheck(e,r){const n=this.checks.indexOf(e);r&&n===-1?this.checks.push(e):!r&&n!==-1&&this.checks.splice(n,1)}static _checkBlendMode(e,r){e.setBlendMode(r.blendMode)}static _checkPolygonOffset(e,r){e.setPolygonOffset(1,r.polygonOffset)}destroy(){this.gl=null,this.checks.length=0}};Se.extension={type:[d.WebGLSystem],name:"state"};let xt=Se;class vt{constructor(e){this.target=w.TEXTURE_2D,this._layerInitMask=0,this.texture=e,this.width=-1,this.height=-1,this.type=h.UNSIGNED_BYTE,this.internalFormat=G.RGBA,this.format=G.RGBA,this.samplerType=0}destroy(){}}const At={id:"buffer",upload(t,e,r,n,s,i=!1){const a=s||e.target;!i&&e.width===t.width&&e.height===t.height?r.texSubImage2D(a,0,0,0,t.width,t.height,e.format,e.type,t.resource):r.texImage2D(a,0,e.internalFormat,t.width,t.height,0,e.format,e.type,t.resource),e.width=t.width,e.height=t.height}},Bt={"bc1-rgba-unorm":!0,"bc1-rgba-unorm-srgb":!0,"bc2-rgba-unorm":!0,"bc2-rgba-unorm-srgb":!0,"bc3-rgba-unorm":!0,"bc3-rgba-unorm-srgb":!0,"bc4-r-unorm":!0,"bc4-r-snorm":!0,"bc5-rg-unorm":!0,"bc5-rg-snorm":!0,"bc6h-rgb-ufloat":!0,"bc6h-rgb-float":!0,"bc7-rgba-unorm":!0,"bc7-rgba-unorm-srgb":!0,"etc2-rgb8unorm":!0,"etc2-rgb8unorm-srgb":!0,"etc2-rgb8a1unorm":!0,"etc2-rgb8a1unorm-srgb":!0,"etc2-rgba8unorm":!0,"etc2-rgba8unorm-srgb":!0,"eac-r11unorm":!0,"eac-r11snorm":!0,"eac-rg11unorm":!0,"eac-rg11snorm":!0,"astc-4x4-unorm":!0,"astc-4x4-unorm-srgb":!0,"astc-5x4-unorm":!0,"astc-5x4-unorm-srgb":!0,"astc-5x5-unorm":!0,"astc-5x5-unorm-srgb":!0,"astc-6x5-unorm":!0,"astc-6x5-unorm-srgb":!0,"astc-6x6-unorm":!0,"astc-6x6-unorm-srgb":!0,"astc-8x5-unorm":!0,"astc-8x5-unorm-srgb":!0,"astc-8x6-unorm":!0,"astc-8x6-unorm-srgb":!0,"astc-8x8-unorm":!0,"astc-8x8-unorm-srgb":!0,"astc-10x5-unorm":!0,"astc-10x5-unorm-srgb":!0,"astc-10x6-unorm":!0,"astc-10x6-unorm-srgb":!0,"astc-10x8-unorm":!0,"astc-10x8-unorm-srgb":!0,"astc-10x10-unorm":!0,"astc-10x10-unorm-srgb":!0,"astc-12x10-unorm":!0,"astc-12x10-unorm-srgb":!0,"astc-12x12-unorm":!0,"astc-12x12-unorm-srgb":!0},yt={id:"compressed",upload(t,e,r,n,s,i){const a=s??e.target;r.pixelStorei(r.UNPACK_ALIGNMENT,4);let c=t.pixelWidth,o=t.pixelHeight;const u=!!Bt[t.format];for(let _=0;_<t.resource.length;_++){const l=t.resource[_];u?r.compressedTexImage2D(a,_,e.internalFormat,c,o,0,l):r.texImage2D(a,_,e.internalFormat,c,o,0,e.format,e.type,l),c=Math.max(c>>1,1),o=Math.max(o>>1,1)}}},$=["right","left","top","bottom","front","back"];function Ct(t){return{id:"cube",upload(e,r,n,s){const i=e.faces;for(let a=0;a<$.length;a++){const c=$[a],o=i[c];(t[o.uploadMethodId]||t.image).upload(o,r,n,s,w.TEXTURE_CUBE_MAP_POSITIVE_X+a,(r._layerInitMask&1<<a)===0),r._layerInitMask|=1<<a}r.width=e.pixelWidth,r.height=e.pixelHeight}}}const Re={id:"image",upload(t,e,r,n,s,i=!1){const a=s||e.target,c=t.pixelWidth,o=t.pixelHeight,u=t.resourceWidth,_=t.resourceHeight,l=n===2,f=i||e.width!==c||e.height!==o,m=u>=c&&_>=o,p=t.resource;(l?Nt:Dt)(r,a,e,c,o,u,_,p,f,m),e.width=c,e.height=o}};function Nt(t,e,r,n,s,i,a,c,o,u){if(!u){o&&t.texImage2D(e,0,r.internalFormat,n,s,0,r.format,r.type,null),t.texSubImage2D(e,0,0,0,i,a,r.format,r.type,c);return}if(!o){t.texSubImage2D(e,0,0,0,r.format,r.type,c);return}t.texImage2D(e,0,r.internalFormat,n,s,0,r.format,r.type,c)}function Dt(t,e,r,n,s,i,a,c,o,u){if(!u){o&&t.texImage2D(e,0,r.internalFormat,n,s,0,r.format,r.type,null),t.texSubImage2D(e,0,0,0,r.format,r.type,c);return}if(!o){t.texSubImage2D(e,0,0,0,r.format,r.type,c);return}t.texImage2D(e,0,r.internalFormat,r.format,r.type,c)}const It=je(),Gt={id:"video",upload(t,e,r,n,s,i=It){if(!t.isValid){const a=s??e.target;r.texImage2D(a,0,e.internalFormat,1,1,0,e.format,e.type,null);return}Re.upload(t,e,r,n,s,i)}},Y={linear:9729,nearest:9728},Ut={linear:{linear:9987,nearest:9985},nearest:{linear:9986,nearest:9984}},I={"clamp-to-edge":33071,repeat:10497,"mirror-repeat":33648},Ft={never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519};function z(t,e,r,n,s,i,a,c){const o=i;if(!c||t.addressModeU!=="repeat"||t.addressModeV!=="repeat"||t.addressModeW!=="repeat"){const u=I[a?"clamp-to-edge":t.addressModeU],_=I[a?"clamp-to-edge":t.addressModeV],l=I[a?"clamp-to-edge":t.addressModeW];e[s](o,e.TEXTURE_WRAP_S,u),e[s](o,e.TEXTURE_WRAP_T,_),e.TEXTURE_WRAP_R&&e[s](o,e.TEXTURE_WRAP_R,l)}if((!c||t.magFilter!=="linear")&&e[s](o,e.TEXTURE_MAG_FILTER,Y[t.magFilter]),r){if(!c||t.mipmapFilter!=="linear"){const u=Ut[t.minFilter][t.mipmapFilter];e[s](o,e.TEXTURE_MIN_FILTER,u)}}else e[s](o,e.TEXTURE_MIN_FILTER,Y[t.minFilter]);if(n&&t.maxAnisotropy>1){const u=Math.min(t.maxAnisotropy,e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT));e[s](o,n.TEXTURE_MAX_ANISOTROPY_EXT,u)}t.compare&&e[s](o,e.TEXTURE_COMPARE_FUNC,Ft[t.compare])}function Pt(t){return{r8unorm:t.RED,r8snorm:t.RED,r8uint:t.RED,r8sint:t.RED,r16uint:t.RED,r16sint:t.RED,r16float:t.RED,rg8unorm:t.RG,rg8snorm:t.RG,rg8uint:t.RG,rg8sint:t.RG,r32uint:t.RED,r32sint:t.RED,r32float:t.RED,rg16uint:t.RG,rg16sint:t.RG,rg16float:t.RG,rgba8unorm:t.RGBA,"rgba8unorm-srgb":t.RGBA,rgba8snorm:t.RGBA,rgba8uint:t.RGBA,rgba8sint:t.RGBA,bgra8unorm:t.RGBA,"bgra8unorm-srgb":t.RGBA,rgb9e5ufloat:t.RGB,rgb10a2unorm:t.RGBA,rg11b10ufloat:t.RGB,rg32uint:t.RG,rg32sint:t.RG,rg32float:t.RG,rgba16uint:t.RGBA,rgba16sint:t.RGBA,rgba16float:t.RGBA,rgba32uint:t.RGBA,rgba32sint:t.RGBA,rgba32float:t.RGBA,stencil8:t.STENCIL_INDEX8,depth16unorm:t.DEPTH_COMPONENT,depth24plus:t.DEPTH_COMPONENT,"depth24plus-stencil8":t.DEPTH_STENCIL,depth32float:t.DEPTH_COMPONENT,"depth32float-stencil8":t.DEPTH_STENCIL}}function Ot(t,e){let r={},n=t.RGBA;return t instanceof R.get().getWebGLRenderingContext()?e.srgb&&(r={"rgba8unorm-srgb":e.srgb.SRGB8_ALPHA8_EXT,"bgra8unorm-srgb":e.srgb.SRGB8_ALPHA8_EXT}):(r={"rgba8unorm-srgb":t.SRGB8_ALPHA8,"bgra8unorm-srgb":t.SRGB8_ALPHA8},n=t.RGBA8),{r8unorm:t.R8,r8snorm:t.R8_SNORM,r8uint:t.R8UI,r8sint:t.R8I,r16uint:t.R16UI,r16sint:t.R16I,r16float:t.R16F,rg8unorm:t.RG8,rg8snorm:t.RG8_SNORM,rg8uint:t.RG8UI,rg8sint:t.RG8I,r32uint:t.R32UI,r32sint:t.R32I,r32float:t.R32F,rg16uint:t.RG16UI,rg16sint:t.RG16I,rg16float:t.RG16F,rgba8unorm:t.RGBA,...r,rgba8snorm:t.RGBA8_SNORM,rgba8uint:t.RGBA8UI,rgba8sint:t.RGBA8I,bgra8unorm:n,rgb9e5ufloat:t.RGB9_E5,rgb10a2unorm:t.RGB10_A2,rg11b10ufloat:t.R11F_G11F_B10F,rg32uint:t.RG32UI,rg32sint:t.RG32I,rg32float:t.RG32F,rgba16uint:t.RGBA16UI,rgba16sint:t.RGBA16I,rgba16float:t.RGBA16F,rgba32uint:t.RGBA32UI,rgba32sint:t.RGBA32I,rgba32float:t.RGBA32F,stencil8:t.STENCIL_INDEX8,depth16unorm:t.DEPTH_COMPONENT16,depth24plus:t.DEPTH_COMPONENT24,"depth24plus-stencil8":t.DEPTH24_STENCIL8,depth32float:t.DEPTH_COMPONENT32F,"depth32float-stencil8":t.DEPTH32F_STENCIL8,...e.s3tc?{"bc1-rgba-unorm":e.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,"bc2-rgba-unorm":e.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,"bc3-rgba-unorm":e.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT}:{},...e.s3tc_sRGB?{"bc1-rgba-unorm-srgb":e.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,"bc2-rgba-unorm-srgb":e.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,"bc3-rgba-unorm-srgb":e.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}:{},...e.rgtc?{"bc4-r-unorm":e.rgtc.COMPRESSED_RED_RGTC1_EXT,"bc4-r-snorm":e.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,"bc5-rg-unorm":e.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,"bc5-rg-snorm":e.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}:{},...e.bptc?{"bc6h-rgb-float":e.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,"bc6h-rgb-ufloat":e.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,"bc7-rgba-unorm":e.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,"bc7-rgba-unorm-srgb":e.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT}:{},...e.etc?{"etc2-rgb8unorm":e.etc.COMPRESSED_RGB8_ETC2,"etc2-rgb8unorm-srgb":e.etc.COMPRESSED_SRGB8_ETC2,"etc2-rgb8a1unorm":e.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgb8a1unorm-srgb":e.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgba8unorm":e.etc.COMPRESSED_RGBA8_ETC2_EAC,"etc2-rgba8unorm-srgb":e.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,"eac-r11unorm":e.etc.COMPRESSED_R11_EAC,"eac-rg11unorm":e.etc.COMPRESSED_SIGNED_RG11_EAC}:{},...e.astc?{"astc-4x4-unorm":e.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,"astc-4x4-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,"astc-5x4-unorm":e.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,"astc-5x4-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,"astc-5x5-unorm":e.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,"astc-5x5-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,"astc-6x5-unorm":e.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,"astc-6x5-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,"astc-6x6-unorm":e.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,"astc-6x6-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,"astc-8x5-unorm":e.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,"astc-8x5-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,"astc-8x6-unorm":e.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,"astc-8x6-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,"astc-8x8-unorm":e.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,"astc-8x8-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,"astc-10x5-unorm":e.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,"astc-10x5-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,"astc-10x6-unorm":e.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,"astc-10x6-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,"astc-10x8-unorm":e.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,"astc-10x8-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,"astc-10x10-unorm":e.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,"astc-10x10-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,"astc-12x10-unorm":e.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,"astc-12x10-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,"astc-12x12-unorm":e.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,"astc-12x12-unorm-srgb":e.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR}:{}}}function Mt(t){return{r8unorm:t.UNSIGNED_BYTE,r8snorm:t.BYTE,r8uint:t.UNSIGNED_BYTE,r8sint:t.BYTE,r16uint:t.UNSIGNED_SHORT,r16sint:t.SHORT,r16float:t.HALF_FLOAT,rg8unorm:t.UNSIGNED_BYTE,rg8snorm:t.BYTE,rg8uint:t.UNSIGNED_BYTE,rg8sint:t.BYTE,r32uint:t.UNSIGNED_INT,r32sint:t.INT,r32float:t.FLOAT,rg16uint:t.UNSIGNED_SHORT,rg16sint:t.SHORT,rg16float:t.HALF_FLOAT,rgba8unorm:t.UNSIGNED_BYTE,"rgba8unorm-srgb":t.UNSIGNED_BYTE,rgba8snorm:t.BYTE,rgba8uint:t.UNSIGNED_BYTE,rgba8sint:t.BYTE,bgra8unorm:t.UNSIGNED_BYTE,"bgra8unorm-srgb":t.UNSIGNED_BYTE,rgb9e5ufloat:t.UNSIGNED_INT_5_9_9_9_REV,rgb10a2unorm:t.UNSIGNED_INT_2_10_10_10_REV,rg11b10ufloat:t.UNSIGNED_INT_10F_11F_11F_REV,rg32uint:t.UNSIGNED_INT,rg32sint:t.INT,rg32float:t.FLOAT,rgba16uint:t.UNSIGNED_SHORT,rgba16sint:t.SHORT,rgba16float:t.HALF_FLOAT,rgba32uint:t.UNSIGNED_INT,rgba32sint:t.INT,rgba32float:t.FLOAT,stencil8:t.UNSIGNED_BYTE,depth16unorm:t.UNSIGNED_SHORT,depth24plus:t.UNSIGNED_INT,"depth24plus-stencil8":t.UNSIGNED_INT_24_8,depth32float:t.FLOAT,"depth32float-stencil8":t.FLOAT_32_UNSIGNED_INT_24_8_REV}}function Lt(t){return{"2d":t.TEXTURE_2D,cube:t.TEXTURE_CUBE_MAP,"1d":null,"3d":t?.TEXTURE_3D||null,"2d-array":t?.TEXTURE_2D_ARRAY||null,"cube-array":t?.TEXTURE_CUBE_MAP_ARRAY||null}}const wt=4,V=class ge{constructor(e){this._glSamplers=Object.create(null),this._boundTextures=[],this._activeTextureLocation=-1,this._boundSamplers=Object.create(null),this._premultiplyAlpha=!1,this._useSeparateSamplers=!1,this._renderer=e,this._managedTextures=new P({renderer:e,type:"resource",onUnload:this.onSourceUnload.bind(this),name:"glTexture"});const r={image:Re,buffer:At,video:Gt,compressed:yt,...ge.uploadExtensions};this._uploads={...r,cube:Ct(r)}}get managedTextures(){return Object.values(this._managedTextures.items)}contextChange(e){this._gl=e,this._mapFormatToInternalFormat||(this._mapFormatToInternalFormat=Ot(e,this._renderer.context.extensions),this._mapFormatToType=Mt(e),this._mapFormatToFormat=Pt(e),this._mapViewDimensionToGlTarget=Lt(e)),this._managedTextures.removeAll(!0),this._glSamplers=Object.create(null),this._boundSamplers=Object.create(null),this._premultiplyAlpha=!1;for(let r=0;r<16;r++)this.bind(S.EMPTY,r)}initSource(e){this.bind(e)}bind(e,r=0){const n=e.source;e?(this.bindSource(n,r),this._useSeparateSamplers&&this._bindSampler(n.style,r)):(this.bindSource(null,r),this._useSeparateSamplers&&this._bindSampler(null,r))}bindSource(e,r=0){const n=this._gl;if(e._gcLastUsed=this._renderer.gc.now,this._boundTextures[r]!==e){this._boundTextures[r]=e,this._activateLocation(r),e||(e=S.EMPTY.source);const s=this.getGlSource(e);n.bindTexture(s.target,s.texture)}}_bindSampler(e,r=0){const n=this._gl;if(!e){this._boundSamplers[r]=null,n.bindSampler(r,null);return}const s=this._getGlSampler(e);this._boundSamplers[r]!==s&&(this._boundSamplers[r]=s,n.bindSampler(r,s))}unbind(e){const r=e.source,n=this._boundTextures,s=this._gl;for(let i=0;i<n.length;i++)if(n[i]===r){this._activateLocation(i);const a=this.getGlSource(r);s.bindTexture(a.target,null),n[i]=null}}_activateLocation(e){this._activeTextureLocation!==e&&(this._activeTextureLocation=e,this._gl.activeTexture(this._gl.TEXTURE0+e))}_initSource(e){const r=this._gl,n=new vt(r.createTexture());if(n.type=this._mapFormatToType[e.format],n.internalFormat=this._mapFormatToInternalFormat[e.format],n.format=this._mapFormatToFormat[e.format],n.target=this._mapViewDimensionToGlTarget[e.viewDimension],n.target===null)throw new Error(`Unsupported view dimension: ${e.viewDimension} with this webgl version: ${this._renderer.context.webGLVersion}`);if(e.uploadMethodId==="cube"&&(n.target=r.TEXTURE_CUBE_MAP),e.autoGenerateMipmaps&&(this._renderer.context.supports.nonPowOf2mipmaps||e.isPowerOfTwo)){const i=Math.max(e.width,e.height);e.mipLevelCount=Math.floor(Math.log2(i))+1}return e._gpuData[this._renderer.uid]=n,this._managedTextures.add(e)&&(e.on("update",this.onSourceUpdate,this),e.on("resize",this.onSourceUpdate,this),e.on("styleChange",this.onStyleChange,this),e.on("updateMipmaps",this.onUpdateMipmaps,this)),this.onSourceUpdate(e),this.updateStyle(e,!1),n}onStyleChange(e){this.updateStyle(e,!1)}updateStyle(e,r){const n=this._gl,s=this.getGlSource(e);n.bindTexture(s.target,s.texture),this._boundTextures[this._activeTextureLocation]=e,z(e.style,n,e.mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"texParameteri",s.target,!this._renderer.context.supports.nonPowOf2wrapping&&!e.isPowerOfTwo,r)}onSourceUnload(e,r=!1){const n=e._gpuData[this._renderer.uid];n&&(r||(this.unbind(e),this._gl.deleteTexture(n.texture)),e.off("update",this.onSourceUpdate,this),e.off("resize",this.onSourceUpdate,this),e.off("styleChange",this.onStyleChange,this),e.off("updateMipmaps",this.onUpdateMipmaps,this))}onSourceUpdate(e){const r=this._gl,n=this.getGlSource(e);r.bindTexture(n.target,n.texture),this._boundTextures[this._activeTextureLocation]=e;const s=e.alphaMode==="premultiply-alpha-on-upload";if(this._premultiplyAlpha!==s&&(this._premultiplyAlpha=s,r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s)),this._uploads[e.uploadMethodId])this._uploads[e.uploadMethodId].upload(e,n,r,this._renderer.context.webGLVersion);else if(n.target===r.TEXTURE_2D)this._initEmptyTexture2D(n,e);else if(n.target===r.TEXTURE_2D_ARRAY)this._initEmptyTexture2DArray(n,e);else if(n.target===r.TEXTURE_CUBE_MAP)this._initEmptyTextureCube(n,e);else throw new Error("[GlTextureSystem] Unsupported texture target for empty allocation.");this._applyMipRange(n,e),e.autoGenerateMipmaps&&e.mipLevelCount>1&&this.onUpdateMipmaps(e,!1)}onUpdateMipmaps(e,r=!0){r&&this.bindSource(e,0);const n=this.getGlSource(e);this._gl.generateMipmap(n.target)}_initEmptyTexture2D(e,r){const n=this._gl;n.texImage2D(n.TEXTURE_2D,0,e.internalFormat,r.pixelWidth,r.pixelHeight,0,e.format,e.type,null);let s=Math.max(r.pixelWidth>>1,1),i=Math.max(r.pixelHeight>>1,1);for(let a=1;a<r.mipLevelCount;a++)n.texImage2D(n.TEXTURE_2D,a,e.internalFormat,s,i,0,e.format,e.type,null),s=Math.max(s>>1,1),i=Math.max(i>>1,1)}_initEmptyTexture2DArray(e,r){if(this._renderer.context.webGLVersion!==2)throw new Error("[GlTextureSystem] TEXTURE_2D_ARRAY requires WebGL2.");const n=this._gl,s=Math.max(r.arrayLayerCount|0,1);n.texImage3D(n.TEXTURE_2D_ARRAY,0,e.internalFormat,r.pixelWidth,r.pixelHeight,s,0,e.format,e.type,null);let i=Math.max(r.pixelWidth>>1,1),a=Math.max(r.pixelHeight>>1,1);for(let c=1;c<r.mipLevelCount;c++)n.texImage3D(n.TEXTURE_2D_ARRAY,c,e.internalFormat,i,a,s,0,e.format,e.type,null),i=Math.max(i>>1,1),a=Math.max(a>>1,1)}_initEmptyTextureCube(e,r){const n=this._gl,s=6;for(let c=0;c<s;c++)n.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+c,0,e.internalFormat,r.pixelWidth,r.pixelHeight,0,e.format,e.type,null);let i=Math.max(r.pixelWidth>>1,1),a=Math.max(r.pixelHeight>>1,1);for(let c=1;c<r.mipLevelCount;c++){for(let o=0;o<s;o++)n.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+o,c,e.internalFormat,i,a,0,e.format,e.type,null);i=Math.max(i>>1,1),a=Math.max(a>>1,1)}}_applyMipRange(e,r){if(this._renderer.context.webGLVersion!==2||r.mipLevelCount<=1)return;const n=this._gl,s=Math.max((r.mipLevelCount|0)-1,0);n.texParameteri(e.target,n.TEXTURE_BASE_LEVEL,0),n.texParameteri(e.target,n.TEXTURE_MAX_LEVEL,s)}_initSampler(e){const r=this._gl,n=this._gl.createSampler();return this._glSamplers[e._resourceId]=n,z(e,r,this._boundTextures[this._activeTextureLocation].mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"samplerParameteri",n,!1,!0),this._glSamplers[e._resourceId]}_getGlSampler(e){return this._glSamplers[e._resourceId]||this._initSampler(e)}getGlSource(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]||this._initSource(e)}generateCanvas(e){const{pixels:r,width:n,height:s}=this.getPixels(e),i=R.get().createCanvas();i.width=n,i.height=s;const a=i.getContext("2d");if(a){const c=a.createImageData(n,s);c.data.set(r),a.putImageData(c,0,0)}return i}getPixels(e){const r=e.source.resolution,n=e.frame,s=Math.max(Math.round(n.width*r),1),i=Math.max(Math.round(n.height*r),1),a=new Uint8Array(wt*s*i),c=this._renderer,o=c.renderTarget.getRenderTarget(e),u=c.renderTarget.getGpuRenderTarget(o),_=c.gl;return _.bindFramebuffer(_.FRAMEBUFFER,u.resolveTargetFramebuffer),_.readPixels(Math.round(n.x*r),Math.round(n.y*r),s,i,_.RGBA,_.UNSIGNED_BYTE,a),{pixels:new Uint8ClampedArray(a.buffer),width:s,height:i}}destroy(){this._managedTextures.destroy(),this._glSamplers=null,this._boundTextures=null,this._boundSamplers=null,this._mapFormatToInternalFormat=null,this._mapFormatToType=null,this._mapFormatToFormat=null,this._uploads=null,this._renderer=null}resetState(){this._activeTextureLocation=-1,this._boundTextures.fill(S.EMPTY.source),this._boundSamplers=Object.create(null);const e=this._gl;this._premultiplyAlpha=!1,e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this._premultiplyAlpha)}};V.extension={type:[d.WebGLSystem],name:"texture"};V.uploadExtensions=Object.create(null);let Te=V;g.handleByMap(d.TextureUploaderWebGL,Te.uploadExtensions);class xe{contextChange(e){const r=new M({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uTransformMatrix:{value:new J,type:"mat3x3<f32>"},uRound:{value:0,type:"f32"}}),n=e.limits.maxBatchableTextures,s=Q({name:"graphics",bits:[Ie,Ge(n),re,ee]});this.shader=new O({glProgram:s,resources:{localUniforms:r,batchSamplers:Ue(n)}})}execute(e,r){const n=r.context,s=n.customShader||this.shader,i=e.renderer,a=i.graphicsContext,{batcher:c,instructions:o}=a.getContextRenderData(n);s.groups[0]=i.globalUniforms.bindGroup,i.state.set(e.state),i.shader.bind(s),i.geometry.bind(c.geometry,s.glProgram);const u=o.instructions;for(let _=0;_<o.instructionSize;_++){const l=u[_];if(l.size){for(let f=0;f<l.textures.count;f++)i.texture.bind(l.textures.textures[f],f);i.geometry.draw(l.topology,l.size,l.start)}}}destroy(){this.shader.destroy(!0),this.shader=null}}xe.extension={type:[d.WebGLPipesAdaptor],name:"graphics"};class ve{init(){const e=Q({name:"mesh",bits:[re,Ve,ee]});this._shader=new O({glProgram:e,resources:{uTexture:S.EMPTY.source,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new J}}}})}execute(e,r){const n=e.renderer;let s=r._shader;if(s){if(!s.glProgram){b("Mesh shader has no glProgram",r.shader);return}}else{s=this._shader;const i=r.texture,a=i.source;s.resources.uTexture=a,s.resources.uSampler=a.style,s.resources.textureUniforms.uniforms.uTextureMatrix=i.textureMatrix.mapCoord}s.groups[100]=n.globalUniforms.bindGroup,s.groups[101]=e.localUniformsBindGroup,n.encoder.draw({geometry:r._geometry,shader:s,state:r.state})}destroy(){this._shader.destroy(!0),this._shader=null}}ve.extension={type:[d.WebGLPipesAdaptor],name:"mesh"};const Ht=[...ke,he,Je,$e,_e,se,Te,de,ae,pe,be,ue,xt,le,ce],Vt=[...We],Xt=[ne,ve,xe],Ae=[],Be=[],ye=[];g.handleByNamedList(d.WebGLSystem,Ae);g.handleByNamedList(d.WebGLPipes,Be);g.handleByNamedList(d.WebGLPipesAdaptor,ye);g.add(...Ht,...Vt,...Xt);class nr extends Fe{constructor(){const e={name:"webgl",type:Pe.WEBGL,systems:Ae,renderPipes:Be,renderPipeAdaptors:ye};super(e)}}export{nr as WebGLRenderer};
@@ -1,4 +1,4 @@
1
- import{y as L,a as D,j as l,z as k,e as pe,H as le,D as T,c as C,d as B,B as fe,I as z,J as w,w as v,K as y,q as ge,L as me,N as O,O as R,r as G,M as F,Q as I,V as _e,W,X as be,S as H,T as E,A as xe,R as ye}from"./RelationshipGalaxyCanvas-CwQ63TPi.js";import{c as Ge,u as Pe,U as Se,B as Te,G as Be,e as Ce,l as ve,a as Ue,t as Me}from"./BufferResource-BdKXeRZS.js";import{R as we,S as Re,d as Ee}from"./RenderTargetSystem-eC_VrDAr.js";import"./index-D_0qeKKc.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-C4TuoOLM.js";import"./LoadingState.vue_vue_type_script_setup_true_lang-BFaXTz1c.js";import"./people-page-header-CCNJOrmK.js";import"./relationship-galaxy-viewport-Cwfa51ER.js";import"./Filter-B2eEAPxI.js";const P=D.for2d();class N{start(e,t,r){const s=e.renderer,i=s.encoder,n=r.gpuProgram;this._shader=r,this._geometry=t,i.setGeometry(t,n),P.blendMode="normal",s.pipeline.getPipeline(t,n,P);const o=s.globalUniforms.bindGroup;i.resetBindGroup(1),i.setBindGroup(0,o,n)}execute(e,t){const r=this._shader.gpuProgram,s=e.renderer,i=s.encoder;if(!t.bindGroup){const u=t.textures;t.bindGroup=L(u.textures,u.count,s.limits.maxBatchableTextures)}P.blendMode=t.blendMode;const n=s.bindGroup.getBindGroup(t.bindGroup,r,1),o=s.pipeline.getPipeline(this._geometry,r,P,t.topology);t.bindGroup._touch(s.gc.now,s.tick),i.setPipeline(o),i.renderPassEncoder.setBindGroup(1,n),i.renderPassEncoder.drawIndexed(t.size,1,t.start)}}N.extension={type:[l.WebGPUPipesAdaptor],name:"batch"};class V{constructor(e){this._hash=Object.create(null),this._renderer=e}contextChange(e){this._gpu=e}getBindGroup(e,t,r){return e._updateKey(),this._hash[e._key]||this._createBindGroup(e,t,r)}_createBindGroup(e,t,r){const s=this._gpu.device,i=t.layout[r],n=[],o=this._renderer;for(const g in i){const p=e.resources[g]??e.resources[i[g]];let h;if(p._resourceType==="uniformGroup"){const d=p;o.ubo.updateUniformGroup(d);const f=d.buffer;h={buffer:o.buffer.getGPUBuffer(f),offset:0,size:f.descriptor.size}}else if(p._resourceType==="buffer"){const d=p;h={buffer:o.buffer.getGPUBuffer(d),offset:0,size:d.descriptor.size}}else if(p._resourceType==="bufferResource"){const d=p;h={buffer:o.buffer.getGPUBuffer(d.buffer),offset:d.offset,size:d.size}}else if(p._resourceType==="textureSampler"){const d=p;h=o.texture.getGpuSampler(d)}else if(p._resourceType==="textureSource"){const d=p;h=o.texture.getTextureView(d)}n.push({binding:i[g],resource:h})}const u=o.shader.getProgramData(t).bindGroups[r],c=s.createBindGroup({layout:u,entries:n});return this._hash[e._key]=c,c}destroy(){this._hash=null,this._renderer=null}}V.extension={type:[l.WebGPUSystem],name:"bindGroup"};class Ae{constructor(e){this.gpuBuffer=e}destroy(){this.gpuBuffer.destroy(),this.gpuBuffer=null}}class j{constructor(e){this._renderer=e,this._managedBuffers=new k({renderer:e,type:"resource",onUnload:this.onBufferUnload.bind(this),name:"gpuBuffer"})}contextChange(e){this._gpu=e}getGPUBuffer(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]?.gpuBuffer||this.createGPUBuffer(e)}updateBuffer(e){const t=this.getGPUBuffer(e),r=e.data;return e._updateID&&r&&(e._updateID=0,this._gpu.device.queue.writeBuffer(t,0,r.buffer,0,(e._updateSize||r.byteLength)+3&-4)),t}destroyAll(){this._managedBuffers.removeAll()}onBufferUnload(e){e.off("update",this.updateBuffer,this),e.off("change",this.onBufferChange,this)}createGPUBuffer(e){const t=this._gpu.device.createBuffer(e.descriptor);return e._updateID=0,e._resourceId=pe("resource"),e.data&&(le(e.data.buffer,t.getMappedRange(),e.data.byteOffset,e.data.byteLength),t.unmap()),e._gpuData[this._renderer.uid]=new Ae(t),this._managedBuffers.add(e)&&(e.on("update",this.updateBuffer,this),e.on("change",this.onBufferChange,this)),t}onBufferChange(e){this._managedBuffers.remove(e),e._updateID=0,this.createGPUBuffer(e)}destroy(){this._managedBuffers.destroy(),this._renderer=null,this._gpu=null}}j.extension={type:[l.WebGPUSystem],name:"buffer"};class Le{constructor({minUniformOffsetAlignment:e}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=e,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(e){if(e>this._minUniformOffsetAlignment/4)throw new Error(`UniformBufferBatch: array is too large: ${e*4}`);const t=this.byteIndex;let r=t+e*4;if(r=Math.ceil(r/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment,r>this.data.length*4)throw new Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=r,t}addGroup(e){const t=this.addEmptyGroup(e.length);for(let r=0;r<e.length;r++)this.data[t/4+r]=e[r];return t}destroy(){this.data=null}}class K{constructor(e){this._colorMaskCache=15,this._renderer=e}setMask(e){this._colorMaskCache!==e&&(this._colorMaskCache=e,this._renderer.pipeline.setColorMask(e))}destroy(){this._renderer=null,this._colorMaskCache=null}}K.extension={type:[l.WebGPUSystem],name:"colorMask"};class U{constructor(e){this._renderer=e}async init(e){return this._initPromise?this._initPromise:(this._initPromise=(e.gpu?Promise.resolve(e.gpu):this._createDeviceAndAdaptor(e)).then(t=>{this.gpu=t,this.extensions={transientAttachment:typeof GPUTextureUsage.TRANSIENT_ATTACHMENT=="number"},this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise)}contextChange(e){this._renderer.gpu=e}async _createDeviceAndAdaptor(e){const t=await T.get().getNavigator().gpu.requestAdapter({powerPreference:e.powerPreference,forceFallbackAdapter:e.forceFallbackAdapter}),r=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(i=>t.features.has(i)),s=await t.requestDevice({requiredFeatures:r});return{adapter:t,device:s}}destroy(){this.gpu=null,this.extensions=null,this._renderer=null}}U.extension={type:[l.WebGPUSystem],name:"device"};U.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};class q{constructor(e){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=e}renderStart(){this.commandFinished=new Promise(e=>{this._resolveCommandFinished=e}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(e){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(e.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(e){this.renderPassEncoder.setViewport(e.x,e.y,e.width,e.height,0,1)}setPipelineFromGeometryProgramAndState(e,t,r,s){const i=this._renderer.pipeline.getPipeline(e,t,r,s);this.setPipeline(i)}setPipeline(e){this._boundPipeline!==e&&(this._boundPipeline=e,this.renderPassEncoder.setPipeline(e))}_setVertexBuffer(e,t){this._boundVertexBuffer[e]!==t&&(this._boundVertexBuffer[e]=t,this.renderPassEncoder.setVertexBuffer(e,this._renderer.buffer.updateBuffer(t)))}_setIndexBuffer(e){if(this._boundIndexBuffer===e)return;this._boundIndexBuffer=e;const t=e.data.BYTES_PER_ELEMENT===2?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(e),t)}resetBindGroup(e){this._boundBindGroup[e]=null}setBindGroup(e,t,r){if(this._boundBindGroup[e]===t)return;this._boundBindGroup[e]=t,t._touch(this._renderer.gc.now,this._renderer.tick);const s=this._renderer.bindGroup.getBindGroup(t,r,e);this.renderPassEncoder.setBindGroup(e,s)}setGeometry(e,t){const r=this._renderer.pipeline.getBufferNamesToBind(e,t);for(const s in r)this._setVertexBuffer(parseInt(s,10),e.attributes[r[s]].buffer);e.indexBuffer&&this._setIndexBuffer(e.indexBuffer)}_setShaderBindGroups(e,t){for(const r in e.groups){const s=e.groups[r];t||this._syncBindGroup(s),this.setBindGroup(r,s,e.gpuProgram)}}_syncBindGroup(e){for(const t in e.resources){const r=e.resources[t];r.isUniformGroup&&this._renderer.ubo.updateUniformGroup(r)}}draw(e){const{geometry:t,shader:r,state:s,topology:i,size:n,start:o,instanceCount:u,skipSync:c}=e;this.setPipelineFromGeometryProgramAndState(t,r.gpuProgram,s,i),this.setGeometry(t,r.gpuProgram),this._setShaderBindGroups(r,c),t.indexBuffer?this.renderPassEncoder.drawIndexed(n||t.indexBuffer.data.length,u??t.instanceCount,o||0):this.renderPassEncoder.draw(n||t.getSize(),u??t.instanceCount,o||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){const e=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1],this._renderer.renderTarget.mipLevel,this._renderer.renderTarget.layer);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e);const t=this._boundPipeline,r={...this._boundVertexBuffer},s=this._boundIndexBuffer,i={...this._boundBindGroup};this._clearCache();const n=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(n.x,n.y,n.width,n.height,0,1),this.setPipeline(t);for(const o in r)this._setVertexBuffer(o,r[o]);for(const o in i)this.setBindGroup(o,i[o],null);this._setIndexBuffer(s)}_clearCache(){for(let e=0;e<16;e++)this._boundBindGroup[e]=null,this._boundVertexBuffer[e]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(e){this._gpu=e}}q.extension={type:[l.WebGPUSystem],name:"encoder",priority:1};class Y{constructor(e){this._renderer=e}contextChange(){this.maxTextures=this._renderer.device.gpu.device.limits.maxSampledTexturesPerShaderStage,this.maxBatchableTextures=this.maxTextures}destroy(){}}Y.extension={type:[l.WebGPUSystem],name:"limits"};class ${constructor(e){this._renderTargetStencilState=Object.create(null),this._renderer=e,e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){let t=this._renderTargetStencilState[e.uid];t||(t=this._renderTargetStencilState[e.uid]={stencilMode:C.DISABLED,stencilReference:0}),this._activeRenderTarget=e,this.setStencilMode(t.stencilMode,t.stencilReference)}setStencilMode(e,t){const r=this._renderTargetStencilState[this._activeRenderTarget.uid];r.stencilMode=e,r.stencilReference=t;const s=this._renderer;s.pipeline.setStencilMode(e),s.encoder.renderPassEncoder.setStencilReference(t)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}$.extension={type:[l.WebGPUSystem],name:"stencil"};const S={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2<i32>":{align:8,size:8},"vec2<u32>":{align:8,size:8},"vec2<f32>":{align:8,size:8},"vec2<f16>":{align:4,size:4},"vec3<i32>":{align:16,size:12},"vec3<u32>":{align:16,size:12},"vec3<f32>":{align:16,size:12},"vec3<f16>":{align:8,size:6},"vec4<i32>":{align:16,size:16},"vec4<u32>":{align:16,size:16},"vec4<f32>":{align:16,size:16},"vec4<f16>":{align:8,size:8},"mat2x2<f32>":{align:8,size:16},"mat2x2<f16>":{align:4,size:8},"mat3x2<f32>":{align:8,size:24},"mat3x2<f16>":{align:4,size:12},"mat4x2<f32>":{align:8,size:32},"mat4x2<f16>":{align:4,size:16},"mat2x3<f32>":{align:16,size:32},"mat2x3<f16>":{align:8,size:16},"mat3x3<f32>":{align:16,size:48},"mat3x3<f16>":{align:8,size:24},"mat4x3<f32>":{align:16,size:64},"mat4x3<f16>":{align:8,size:32},"mat2x4<f32>":{align:16,size:32},"mat2x4<f16>":{align:8,size:16},"mat3x4<f32>":{align:16,size:48},"mat3x4<f16>":{align:8,size:24},"mat4x4<f32>":{align:16,size:64},"mat4x4<f16>":{align:8,size:32}};function De(a){const e=a.map(r=>({data:r,offset:0,size:0}));let t=0;for(let r=0;r<e.length;r++){const s=e[r];let i=S[s.data.type].size;const n=S[s.data.type].align;if(!S[s.data.type])throw new Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${s.data.type}`);s.data.size>1&&(i=Math.max(i,n)*s.data.size),t=Math.ceil(t/n)*n,s.size=i,s.offset=t,t+=i}return t=Math.ceil(t/16)*16,{uboElements:e,size:t}}function ke(a,e){const{size:t,align:r}=S[a.data.type],s=(r-t)/4,i=a.data.type.indexOf("i32")>=0?"dataInt32":"data";return`
1
+ import{y as L,a as D,j as l,z as k,e as pe,H as le,D as T,c as C,d as B,B as fe,I as z,J as w,w as v,K as y,q as ge,L as me,N as O,O as R,r as G,M as F,Q as I,V as _e,W,X as be,S as H,T as E,A as xe,R as ye}from"./RelationshipGalaxyCanvas-6EamagxG.js";import{c as Ge,u as Pe,U as Se,B as Te,G as Be,e as Ce,l as ve,a as Ue,t as Me}from"./BufferResource-BXSJADxx.js";import{R as we,S as Re,d as Ee}from"./RenderTargetSystem-mYuj4uBS.js";import"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-IA7YUjQX.js";import"./Tabs-OrJkANIA.js";import"./RovingFocusItem-B2y6BG1a.js";import"./useToast-B36MzFFy.js";import"./LoadingState.vue_vue_type_script_setup_true_lang-Cnshyn0f.js";import"./people-page-header-Bh3KXD4g.js";import"./relationship-galaxy-connections-Cg4G5yYE.js";import"./relationship-galaxy-viewport-Cwfa51ER.js";import"./Filter-DVaqcFmI.js";const P=D.for2d();class N{start(e,t,r){const s=e.renderer,i=s.encoder,n=r.gpuProgram;this._shader=r,this._geometry=t,i.setGeometry(t,n),P.blendMode="normal",s.pipeline.getPipeline(t,n,P);const o=s.globalUniforms.bindGroup;i.resetBindGroup(1),i.setBindGroup(0,o,n)}execute(e,t){const r=this._shader.gpuProgram,s=e.renderer,i=s.encoder;if(!t.bindGroup){const u=t.textures;t.bindGroup=L(u.textures,u.count,s.limits.maxBatchableTextures)}P.blendMode=t.blendMode;const n=s.bindGroup.getBindGroup(t.bindGroup,r,1),o=s.pipeline.getPipeline(this._geometry,r,P,t.topology);t.bindGroup._touch(s.gc.now,s.tick),i.setPipeline(o),i.renderPassEncoder.setBindGroup(1,n),i.renderPassEncoder.drawIndexed(t.size,1,t.start)}}N.extension={type:[l.WebGPUPipesAdaptor],name:"batch"};class V{constructor(e){this._hash=Object.create(null),this._renderer=e}contextChange(e){this._gpu=e}getBindGroup(e,t,r){return e._updateKey(),this._hash[e._key]||this._createBindGroup(e,t,r)}_createBindGroup(e,t,r){const s=this._gpu.device,i=t.layout[r],n=[],o=this._renderer;for(const g in i){const p=e.resources[g]??e.resources[i[g]];let h;if(p._resourceType==="uniformGroup"){const d=p;o.ubo.updateUniformGroup(d);const f=d.buffer;h={buffer:o.buffer.getGPUBuffer(f),offset:0,size:f.descriptor.size}}else if(p._resourceType==="buffer"){const d=p;h={buffer:o.buffer.getGPUBuffer(d),offset:0,size:d.descriptor.size}}else if(p._resourceType==="bufferResource"){const d=p;h={buffer:o.buffer.getGPUBuffer(d.buffer),offset:d.offset,size:d.size}}else if(p._resourceType==="textureSampler"){const d=p;h=o.texture.getGpuSampler(d)}else if(p._resourceType==="textureSource"){const d=p;h=o.texture.getTextureView(d)}n.push({binding:i[g],resource:h})}const u=o.shader.getProgramData(t).bindGroups[r],c=s.createBindGroup({layout:u,entries:n});return this._hash[e._key]=c,c}destroy(){this._hash=null,this._renderer=null}}V.extension={type:[l.WebGPUSystem],name:"bindGroup"};class Ae{constructor(e){this.gpuBuffer=e}destroy(){this.gpuBuffer.destroy(),this.gpuBuffer=null}}class j{constructor(e){this._renderer=e,this._managedBuffers=new k({renderer:e,type:"resource",onUnload:this.onBufferUnload.bind(this),name:"gpuBuffer"})}contextChange(e){this._gpu=e}getGPUBuffer(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]?.gpuBuffer||this.createGPUBuffer(e)}updateBuffer(e){const t=this.getGPUBuffer(e),r=e.data;return e._updateID&&r&&(e._updateID=0,this._gpu.device.queue.writeBuffer(t,0,r.buffer,0,(e._updateSize||r.byteLength)+3&-4)),t}destroyAll(){this._managedBuffers.removeAll()}onBufferUnload(e){e.off("update",this.updateBuffer,this),e.off("change",this.onBufferChange,this)}createGPUBuffer(e){const t=this._gpu.device.createBuffer(e.descriptor);return e._updateID=0,e._resourceId=pe("resource"),e.data&&(le(e.data.buffer,t.getMappedRange(),e.data.byteOffset,e.data.byteLength),t.unmap()),e._gpuData[this._renderer.uid]=new Ae(t),this._managedBuffers.add(e)&&(e.on("update",this.updateBuffer,this),e.on("change",this.onBufferChange,this)),t}onBufferChange(e){this._managedBuffers.remove(e),e._updateID=0,this.createGPUBuffer(e)}destroy(){this._managedBuffers.destroy(),this._renderer=null,this._gpu=null}}j.extension={type:[l.WebGPUSystem],name:"buffer"};class Le{constructor({minUniformOffsetAlignment:e}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=e,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(e){if(e>this._minUniformOffsetAlignment/4)throw new Error(`UniformBufferBatch: array is too large: ${e*4}`);const t=this.byteIndex;let r=t+e*4;if(r=Math.ceil(r/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment,r>this.data.length*4)throw new Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=r,t}addGroup(e){const t=this.addEmptyGroup(e.length);for(let r=0;r<e.length;r++)this.data[t/4+r]=e[r];return t}destroy(){this.data=null}}class K{constructor(e){this._colorMaskCache=15,this._renderer=e}setMask(e){this._colorMaskCache!==e&&(this._colorMaskCache=e,this._renderer.pipeline.setColorMask(e))}destroy(){this._renderer=null,this._colorMaskCache=null}}K.extension={type:[l.WebGPUSystem],name:"colorMask"};class U{constructor(e){this._renderer=e}async init(e){return this._initPromise?this._initPromise:(this._initPromise=(e.gpu?Promise.resolve(e.gpu):this._createDeviceAndAdaptor(e)).then(t=>{this.gpu=t,this.extensions={transientAttachment:typeof GPUTextureUsage.TRANSIENT_ATTACHMENT=="number"},this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise)}contextChange(e){this._renderer.gpu=e}async _createDeviceAndAdaptor(e){const t=await T.get().getNavigator().gpu.requestAdapter({powerPreference:e.powerPreference,forceFallbackAdapter:e.forceFallbackAdapter}),r=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(i=>t.features.has(i)),s=await t.requestDevice({requiredFeatures:r});return{adapter:t,device:s}}destroy(){this.gpu=null,this.extensions=null,this._renderer=null}}U.extension={type:[l.WebGPUSystem],name:"device"};U.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};class q{constructor(e){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=e}renderStart(){this.commandFinished=new Promise(e=>{this._resolveCommandFinished=e}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(e){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(e.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(e){this.renderPassEncoder.setViewport(e.x,e.y,e.width,e.height,0,1)}setPipelineFromGeometryProgramAndState(e,t,r,s){const i=this._renderer.pipeline.getPipeline(e,t,r,s);this.setPipeline(i)}setPipeline(e){this._boundPipeline!==e&&(this._boundPipeline=e,this.renderPassEncoder.setPipeline(e))}_setVertexBuffer(e,t){this._boundVertexBuffer[e]!==t&&(this._boundVertexBuffer[e]=t,this.renderPassEncoder.setVertexBuffer(e,this._renderer.buffer.updateBuffer(t)))}_setIndexBuffer(e){if(this._boundIndexBuffer===e)return;this._boundIndexBuffer=e;const t=e.data.BYTES_PER_ELEMENT===2?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(e),t)}resetBindGroup(e){this._boundBindGroup[e]=null}setBindGroup(e,t,r){if(this._boundBindGroup[e]===t)return;this._boundBindGroup[e]=t,t._touch(this._renderer.gc.now,this._renderer.tick);const s=this._renderer.bindGroup.getBindGroup(t,r,e);this.renderPassEncoder.setBindGroup(e,s)}setGeometry(e,t){const r=this._renderer.pipeline.getBufferNamesToBind(e,t);for(const s in r)this._setVertexBuffer(parseInt(s,10),e.attributes[r[s]].buffer);e.indexBuffer&&this._setIndexBuffer(e.indexBuffer)}_setShaderBindGroups(e,t){for(const r in e.groups){const s=e.groups[r];t||this._syncBindGroup(s),this.setBindGroup(r,s,e.gpuProgram)}}_syncBindGroup(e){for(const t in e.resources){const r=e.resources[t];r.isUniformGroup&&this._renderer.ubo.updateUniformGroup(r)}}draw(e){const{geometry:t,shader:r,state:s,topology:i,size:n,start:o,instanceCount:u,skipSync:c}=e;this.setPipelineFromGeometryProgramAndState(t,r.gpuProgram,s,i),this.setGeometry(t,r.gpuProgram),this._setShaderBindGroups(r,c),t.indexBuffer?this.renderPassEncoder.drawIndexed(n||t.indexBuffer.data.length,u??t.instanceCount,o||0):this.renderPassEncoder.draw(n||t.getSize(),u??t.instanceCount,o||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){const e=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1],this._renderer.renderTarget.mipLevel,this._renderer.renderTarget.layer);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e);const t=this._boundPipeline,r={...this._boundVertexBuffer},s=this._boundIndexBuffer,i={...this._boundBindGroup};this._clearCache();const n=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(n.x,n.y,n.width,n.height,0,1),this.setPipeline(t);for(const o in r)this._setVertexBuffer(o,r[o]);for(const o in i)this.setBindGroup(o,i[o],null);this._setIndexBuffer(s)}_clearCache(){for(let e=0;e<16;e++)this._boundBindGroup[e]=null,this._boundVertexBuffer[e]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(e){this._gpu=e}}q.extension={type:[l.WebGPUSystem],name:"encoder",priority:1};class Y{constructor(e){this._renderer=e}contextChange(){this.maxTextures=this._renderer.device.gpu.device.limits.maxSampledTexturesPerShaderStage,this.maxBatchableTextures=this.maxTextures}destroy(){}}Y.extension={type:[l.WebGPUSystem],name:"limits"};class ${constructor(e){this._renderTargetStencilState=Object.create(null),this._renderer=e,e.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(e){let t=this._renderTargetStencilState[e.uid];t||(t=this._renderTargetStencilState[e.uid]={stencilMode:C.DISABLED,stencilReference:0}),this._activeRenderTarget=e,this.setStencilMode(t.stencilMode,t.stencilReference)}setStencilMode(e,t){const r=this._renderTargetStencilState[this._activeRenderTarget.uid];r.stencilMode=e,r.stencilReference=t;const s=this._renderer;s.pipeline.setStencilMode(e),s.encoder.renderPassEncoder.setStencilReference(t)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}$.extension={type:[l.WebGPUSystem],name:"stencil"};const S={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2<i32>":{align:8,size:8},"vec2<u32>":{align:8,size:8},"vec2<f32>":{align:8,size:8},"vec2<f16>":{align:4,size:4},"vec3<i32>":{align:16,size:12},"vec3<u32>":{align:16,size:12},"vec3<f32>":{align:16,size:12},"vec3<f16>":{align:8,size:6},"vec4<i32>":{align:16,size:16},"vec4<u32>":{align:16,size:16},"vec4<f32>":{align:16,size:16},"vec4<f16>":{align:8,size:8},"mat2x2<f32>":{align:8,size:16},"mat2x2<f16>":{align:4,size:8},"mat3x2<f32>":{align:8,size:24},"mat3x2<f16>":{align:4,size:12},"mat4x2<f32>":{align:8,size:32},"mat4x2<f16>":{align:4,size:16},"mat2x3<f32>":{align:16,size:32},"mat2x3<f16>":{align:8,size:16},"mat3x3<f32>":{align:16,size:48},"mat3x3<f16>":{align:8,size:24},"mat4x3<f32>":{align:16,size:64},"mat4x3<f16>":{align:8,size:32},"mat2x4<f32>":{align:16,size:32},"mat2x4<f16>":{align:8,size:16},"mat3x4<f32>":{align:16,size:48},"mat3x4<f16>":{align:8,size:24},"mat4x4<f32>":{align:16,size:64},"mat4x4<f16>":{align:8,size:32}};function De(a){const e=a.map(r=>({data:r,offset:0,size:0}));let t=0;for(let r=0;r<e.length;r++){const s=e[r];let i=S[s.data.type].size;const n=S[s.data.type].align;if(!S[s.data.type])throw new Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${s.data.type}`);s.data.size>1&&(i=Math.max(i,n)*s.data.size),t=Math.ceil(t/n)*n,s.size=i,s.offset=t,t+=i}return t=Math.ceil(t/16)*16,{uboElements:e,size:t}}function ke(a,e){const{size:t,align:r}=S[a.data.type],s=(r-t)/4,i=a.data.type.indexOf("i32")>=0?"dataInt32":"data";return`
2
2
  v = uv.${a.data.name};
3
3
  ${e!==0?`offset += ${e};`:""}
4
4
 
@@ -38,4 +38,4 @@ import{y as L,a as D,j as l,z as k,e as pe,H as le,D as T,c as C,d as B,B as fe,
38
38
  fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {
39
39
  return textureSample(img, imgSampler, texCoord);
40
40
  }
41
- `})),t=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:e}]}}),this.pipelines[e]=t),t}generateMipmap(e){const t=this._getMipmapPipeline(e.format);if(e.dimension==="3d"||e.dimension==="1d")throw new Error("Generating mipmaps for non-2d textures is currently unsupported!");let r=e;const s=e.depthOrArrayLayers||1,i=e.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!i){const u={size:{width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:s},format:e.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:e.mipLevelCount-1};r=this.device.createTexture(u)}const n=this.device.createCommandEncoder({}),o=t.getBindGroupLayout(0);for(let u=0;u<s;++u){let c=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:u,arrayLayerCount:1}),g=i?1:0;for(let p=1;p<e.mipLevelCount;++p){const h=r.createView({baseMipLevel:g++,mipLevelCount:1,dimension:"2d",baseArrayLayer:u,arrayLayerCount:1}),d=n.beginRenderPass({colorAttachments:[{view:h,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),f=this.device.createBindGroup({layout:o,entries:[{binding:0,resource:this.sampler},{binding:1,resource:c}]});d.setPipeline(t),d.setBindGroup(0,f),d.draw(3,1,0,0),d.end(),c=h}}if(!i){const u={width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:s};for(let c=1;c<e.mipLevelCount;++c)n.copyTextureToTexture({texture:r,mipLevel:c-1},{texture:e,mipLevel:c},u),u.width=Math.ceil(u.width/2),u.height=Math.ceil(u.height/2)}return this.device.queue.submit([n.finish()]),i||r.destroy(),e}}class $e{constructor(e){this.textureView=null,this.gpuTexture=e}destroy(){this.gpuTexture.destroy(),this.textureView=null,this.gpuTexture=null}}const M=class ie{constructor(e){this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._renderer=e,e.gc.addCollection(this,"_bindGroupHash","hash"),this._managedTextures=new k({renderer:e,type:"resource",onUnload:this.onSourceUnload.bind(this),name:"gpuTextureSource"});const t={image:se,buffer:Ne,video:qe,compressed:je,...ie.uploadExtensions};this._uploads={...t,cube:Ke(t)}}get managedTextures(){return Object.values(this._managedTextures.items)}contextChange(e){this._gpu=e}initSource(e){return e._gpuData[this._renderer.uid]?.gpuTexture||this._initSource(e)}_initSource(e){if(e.autoGenerateMipmaps){const c=Math.max(e.pixelWidth,e.pixelHeight);e.mipLevelCount=Math.floor(Math.log2(c))+1}let t;e.sampleCount>1?(t=GPUTextureUsage.RENDER_ATTACHMENT,e.transient&&this._renderer.device.extensions.transientAttachment&&(t|=GPUTextureUsage.TRANSIENT_ATTACHMENT)):(t=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,e.uploadMethodId!=="compressed"&&(t|=GPUTextureUsage.RENDER_ATTACHMENT,t|=GPUTextureUsage.COPY_SRC));const r=re[e.format]||{blockWidth:1,blockHeight:1},s=Math.ceil(e.pixelWidth/r.blockWidth)*r.blockWidth,i=Math.ceil(e.pixelHeight/r.blockHeight)*r.blockHeight,n={label:e.label,size:{width:s,height:i,depthOrArrayLayers:e.arrayLayerCount},format:e.format,sampleCount:e.sampleCount,mipLevelCount:e.mipLevelCount,dimension:e.dimension,usage:t},o=this._gpu.device.createTexture(n);return e._gpuData[this._renderer.uid]=new $e(o),this._managedTextures.add(e)&&(e.on("update",this.onSourceUpdate,this),e.on("resize",this.onSourceResize,this),e.on("updateMipmaps",this.onUpdateMipmaps,this)),this.onSourceUpdate(e),o}onSourceUpdate(e){const t=this.getGpuSource(e);t&&(this._uploads[e.uploadMethodId]&&this._uploads[e.uploadMethodId].upload(e,t,this._gpu),e.autoGenerateMipmaps&&e.mipLevelCount>1&&this.onUpdateMipmaps(e))}onUpdateMipmaps(e){this._mipmapGenerator||(this._mipmapGenerator=new Ye(this._gpu.device));const t=this.getGpuSource(e);this._mipmapGenerator.generateMipmap(t)}onSourceUnload(e){e.off("update",this.onSourceUpdate,this),e.off("resize",this.onSourceResize,this),e.off("updateMipmaps",this.onUpdateMipmaps,this)}onSourceResize(e){e._gcLastUsed=this._renderer.gc.now;const t=e._gpuData[this._renderer.uid],r=t?.gpuTexture;r?(r.width!==e.pixelWidth||r.height!==e.pixelHeight)&&(t.destroy(),this._bindGroupHash[e.uid]=null,e._gpuData[this._renderer.uid]=null,this.initSource(e)):this.initSource(e)}_initSampler(e){return this._gpuSamplers[e._resourceId]=this._gpu.device.createSampler(e),this._gpuSamplers[e._resourceId]}getGpuSampler(e){return this._gpuSamplers[e._resourceId]||this._initSampler(e)}getGpuSource(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]?.gpuTexture||this.initSource(e)}getTextureBindGroup(e){return this._bindGroupHash[e.uid]||this._createTextureBindGroup(e)}_createTextureBindGroup(e){const t=e.source;return this._bindGroupHash[e.uid]=new z({0:t,1:t.style,2:new O({uTextureMatrix:{type:"mat3x3<f32>",value:e.textureMatrix.mapCoord}})}),this._bindGroupHash[e.uid]}getTextureView(e){const t=e.source;t._gcLastUsed=this._renderer.gc.now;let r=t._gpuData[this._renderer.uid];return r||(this.initSource(t),r=t._gpuData[this._renderer.uid]),r.textureView||(r.textureView=r.gpuTexture.createView({dimension:t.viewDimension})),r.textureView}generateCanvas(e){const t=this._renderer,r=t.gpu.device.createCommandEncoder(),s=T.get().createCanvas();s.width=e.source.pixelWidth,s.height=e.source.pixelHeight;const i=s.getContext("webgpu");return i.configure({device:t.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:T.get().getNavigator().gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),r.copyTextureToTexture({texture:t.texture.getGpuSource(e.source),origin:{x:0,y:0}},{texture:i.getCurrentTexture()},{width:s.width,height:s.height}),t.gpu.device.queue.submit([r.finish()]),s}getPixels(e){const t=this.generateCanvas(e),r=R.getOptimalCanvasAndContext(t.width,t.height),s=r.context;s.drawImage(t,0,0);const{width:i,height:n}=t,o=s.getImageData(0,0,i,n),u=new Uint8ClampedArray(o.data.buffer);return R.returnCanvasAndContext(r),{pixels:u,width:i,height:n}}destroy(){this._managedTextures.destroy();for(const e of Object.keys(this._bindGroupHash)){const t=Number(e);this._bindGroupHash[t]?.destroy()}this._renderer=null,this._gpu=null,this._mipmapGenerator=null,this._gpuSamplers=null,this._bindGroupHash=null}};M.extension={type:[l.WebGPUSystem],name:"texture"};M.uploadExtensions=Object.create(null);let ne=M;G.handleByMap(l.TextureUploaderWebGPU,ne.uploadExtensions);class oe{constructor(){this._maxTextures=0}contextChange(e){const t=new O({uTransformMatrix:{value:new F,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}});this._maxTextures=e.limits.maxBatchableTextures;const r=I({name:"graphics",bits:[_e,be(this._maxTextures),ve,W]});this.shader=new H({gpuProgram:r,resources:{localUniforms:t}})}execute(e,t){const r=t.context,s=r.customShader||this.shader,i=e.renderer,n=i.graphicsContext,{batcher:o,instructions:u}=n.getContextRenderData(r),c=i.encoder;c.setGeometry(o.geometry,s.gpuProgram);const g=i.globalUniforms.bindGroup;c.setBindGroup(0,g,s.gpuProgram);const p=i.renderPipes.uniformBatch.getUniformBindGroup(s.resources.localUniforms,!0);c.setBindGroup(2,p,s.gpuProgram);const h=u.instructions;let d=null;for(let f=0;f<u.instructionSize;f++){const m=h[f];if(m.topology!==d&&(d=m.topology,c.setPipelineFromGeometryProgramAndState(o.geometry,s.gpuProgram,e.state,m.topology)),s.groups[1]=m.bindGroup,!m.gpuBindGroup){const x=m.textures;m.bindGroup=L(x.textures,x.count,this._maxTextures),m.gpuBindGroup=i.bindGroup.getBindGroup(m.bindGroup,s.gpuProgram,1)}c.setBindGroup(1,m.bindGroup,s.gpuProgram),c.renderPassEncoder.drawIndexed(m.size,1,m.start)}}destroy(){this.shader.destroy(!0),this.shader=null}}oe.extension={type:[l.WebGPUPipesAdaptor],name:"graphics"};class ae{init(){const e=I({name:"mesh",bits:[Ue,Me,W]});this._shader=new H({gpuProgram:e,resources:{uTexture:E.EMPTY._source,uSampler:E.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new F}}}})}execute(e,t){const r=e.renderer;let s=t._shader;if(!s)s=this._shader,s.groups[2]=r.texture.getTextureBindGroup(t.texture);else if(!s.gpuProgram){v("Mesh shader has no gpuProgram",t.shader);return}const i=s.gpuProgram;if(i.autoAssignGlobalUniforms&&(s.groups[0]=r.globalUniforms.bindGroup),i.autoAssignLocalUniforms){const n=e.localUniforms;s.groups[1]=r.renderPipes.uniformBatch.getUniformBindGroup(n,!0)}r.encoder.draw({geometry:t._geometry,shader:s,state:t.state})}destroy(){this._shader.destroy(!0),this._shader=null}}ae.extension={type:[l.WebGPUPipesAdaptor],name:"mesh"};const Xe=[...Re,X,q,U,Y,j,ne,Z,ee,te,Q,K,$,V],Je=[...Ee,J],Qe=[N,ae,oe],ue=[],ce=[],de=[];G.handleByNamedList(l.WebGPUSystem,ue);G.handleByNamedList(l.WebGPUPipes,ce);G.handleByNamedList(l.WebGPUPipesAdaptor,de);G.add(...Xe,...Je,...Qe);class ht extends xe{constructor(){const e={name:"webgpu",type:ye.WEBGPU,systems:ue,renderPipes:ce,renderPipeAdaptors:de};super(e)}}export{ht as WebGPURenderer};
41
+ `})),t=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:e}]}}),this.pipelines[e]=t),t}generateMipmap(e){const t=this._getMipmapPipeline(e.format);if(e.dimension==="3d"||e.dimension==="1d")throw new Error("Generating mipmaps for non-2d textures is currently unsupported!");let r=e;const s=e.depthOrArrayLayers||1,i=e.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!i){const u={size:{width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:s},format:e.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:e.mipLevelCount-1};r=this.device.createTexture(u)}const n=this.device.createCommandEncoder({}),o=t.getBindGroupLayout(0);for(let u=0;u<s;++u){let c=e.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:u,arrayLayerCount:1}),g=i?1:0;for(let p=1;p<e.mipLevelCount;++p){const h=r.createView({baseMipLevel:g++,mipLevelCount:1,dimension:"2d",baseArrayLayer:u,arrayLayerCount:1}),d=n.beginRenderPass({colorAttachments:[{view:h,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),f=this.device.createBindGroup({layout:o,entries:[{binding:0,resource:this.sampler},{binding:1,resource:c}]});d.setPipeline(t),d.setBindGroup(0,f),d.draw(3,1,0,0),d.end(),c=h}}if(!i){const u={width:Math.ceil(e.width/2),height:Math.ceil(e.height/2),depthOrArrayLayers:s};for(let c=1;c<e.mipLevelCount;++c)n.copyTextureToTexture({texture:r,mipLevel:c-1},{texture:e,mipLevel:c},u),u.width=Math.ceil(u.width/2),u.height=Math.ceil(u.height/2)}return this.device.queue.submit([n.finish()]),i||r.destroy(),e}}class $e{constructor(e){this.textureView=null,this.gpuTexture=e}destroy(){this.gpuTexture.destroy(),this.textureView=null,this.gpuTexture=null}}const M=class ie{constructor(e){this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._renderer=e,e.gc.addCollection(this,"_bindGroupHash","hash"),this._managedTextures=new k({renderer:e,type:"resource",onUnload:this.onSourceUnload.bind(this),name:"gpuTextureSource"});const t={image:se,buffer:Ne,video:qe,compressed:je,...ie.uploadExtensions};this._uploads={...t,cube:Ke(t)}}get managedTextures(){return Object.values(this._managedTextures.items)}contextChange(e){this._gpu=e}initSource(e){return e._gpuData[this._renderer.uid]?.gpuTexture||this._initSource(e)}_initSource(e){if(e.autoGenerateMipmaps){const c=Math.max(e.pixelWidth,e.pixelHeight);e.mipLevelCount=Math.floor(Math.log2(c))+1}let t;e.sampleCount>1?(t=GPUTextureUsage.RENDER_ATTACHMENT,e.transient&&this._renderer.device.extensions.transientAttachment&&(t|=GPUTextureUsage.TRANSIENT_ATTACHMENT)):(t=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,e.uploadMethodId!=="compressed"&&(t|=GPUTextureUsage.RENDER_ATTACHMENT,t|=GPUTextureUsage.COPY_SRC));const r=re[e.format]||{blockWidth:1,blockHeight:1},s=Math.ceil(e.pixelWidth/r.blockWidth)*r.blockWidth,i=Math.ceil(e.pixelHeight/r.blockHeight)*r.blockHeight,n={label:e.label,size:{width:s,height:i,depthOrArrayLayers:e.arrayLayerCount},format:e.format,sampleCount:e.sampleCount,mipLevelCount:e.mipLevelCount,dimension:e.dimension,usage:t},o=this._gpu.device.createTexture(n);return e._gpuData[this._renderer.uid]=new $e(o),this._managedTextures.add(e)&&(e.on("update",this.onSourceUpdate,this),e.on("resize",this.onSourceResize,this),e.on("updateMipmaps",this.onUpdateMipmaps,this)),this.onSourceUpdate(e),o}onSourceUpdate(e){const t=this.getGpuSource(e);t&&(this._uploads[e.uploadMethodId]&&this._uploads[e.uploadMethodId].upload(e,t,this._gpu),e.autoGenerateMipmaps&&e.mipLevelCount>1&&this.onUpdateMipmaps(e))}onUpdateMipmaps(e){this._mipmapGenerator||(this._mipmapGenerator=new Ye(this._gpu.device));const t=this.getGpuSource(e);this._mipmapGenerator.generateMipmap(t)}onSourceUnload(e){e.off("update",this.onSourceUpdate,this),e.off("resize",this.onSourceResize,this),e.off("updateMipmaps",this.onUpdateMipmaps,this)}onSourceResize(e){e._gcLastUsed=this._renderer.gc.now;const t=e._gpuData[this._renderer.uid],r=t?.gpuTexture;r?(r.width!==e.pixelWidth||r.height!==e.pixelHeight)&&(t.destroy(),this._bindGroupHash[e.uid]=null,e._gpuData[this._renderer.uid]=null,this.initSource(e)):this.initSource(e)}_initSampler(e){return this._gpuSamplers[e._resourceId]=this._gpu.device.createSampler(e),this._gpuSamplers[e._resourceId]}getGpuSampler(e){return this._gpuSamplers[e._resourceId]||this._initSampler(e)}getGpuSource(e){return e._gcLastUsed=this._renderer.gc.now,e._gpuData[this._renderer.uid]?.gpuTexture||this.initSource(e)}getTextureBindGroup(e){return this._bindGroupHash[e.uid]||this._createTextureBindGroup(e)}_createTextureBindGroup(e){const t=e.source;return this._bindGroupHash[e.uid]=new z({0:t,1:t.style,2:new O({uTextureMatrix:{type:"mat3x3<f32>",value:e.textureMatrix.mapCoord}})}),this._bindGroupHash[e.uid]}getTextureView(e){const t=e.source;t._gcLastUsed=this._renderer.gc.now;let r=t._gpuData[this._renderer.uid];return r||(this.initSource(t),r=t._gpuData[this._renderer.uid]),r.textureView||(r.textureView=r.gpuTexture.createView({dimension:t.viewDimension})),r.textureView}generateCanvas(e){const t=this._renderer,r=t.gpu.device.createCommandEncoder(),s=T.get().createCanvas();s.width=e.source.pixelWidth,s.height=e.source.pixelHeight;const i=s.getContext("webgpu");return i.configure({device:t.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:T.get().getNavigator().gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),r.copyTextureToTexture({texture:t.texture.getGpuSource(e.source),origin:{x:0,y:0}},{texture:i.getCurrentTexture()},{width:s.width,height:s.height}),t.gpu.device.queue.submit([r.finish()]),s}getPixels(e){const t=this.generateCanvas(e),r=R.getOptimalCanvasAndContext(t.width,t.height),s=r.context;s.drawImage(t,0,0);const{width:i,height:n}=t,o=s.getImageData(0,0,i,n),u=new Uint8ClampedArray(o.data.buffer);return R.returnCanvasAndContext(r),{pixels:u,width:i,height:n}}destroy(){this._managedTextures.destroy();for(const e of Object.keys(this._bindGroupHash)){const t=Number(e);this._bindGroupHash[t]?.destroy()}this._renderer=null,this._gpu=null,this._mipmapGenerator=null,this._gpuSamplers=null,this._bindGroupHash=null}};M.extension={type:[l.WebGPUSystem],name:"texture"};M.uploadExtensions=Object.create(null);let ne=M;G.handleByMap(l.TextureUploaderWebGPU,ne.uploadExtensions);class oe{constructor(){this._maxTextures=0}contextChange(e){const t=new O({uTransformMatrix:{value:new F,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}});this._maxTextures=e.limits.maxBatchableTextures;const r=I({name:"graphics",bits:[_e,be(this._maxTextures),ve,W]});this.shader=new H({gpuProgram:r,resources:{localUniforms:t}})}execute(e,t){const r=t.context,s=r.customShader||this.shader,i=e.renderer,n=i.graphicsContext,{batcher:o,instructions:u}=n.getContextRenderData(r),c=i.encoder;c.setGeometry(o.geometry,s.gpuProgram);const g=i.globalUniforms.bindGroup;c.setBindGroup(0,g,s.gpuProgram);const p=i.renderPipes.uniformBatch.getUniformBindGroup(s.resources.localUniforms,!0);c.setBindGroup(2,p,s.gpuProgram);const h=u.instructions;let d=null;for(let f=0;f<u.instructionSize;f++){const m=h[f];if(m.topology!==d&&(d=m.topology,c.setPipelineFromGeometryProgramAndState(o.geometry,s.gpuProgram,e.state,m.topology)),s.groups[1]=m.bindGroup,!m.gpuBindGroup){const x=m.textures;m.bindGroup=L(x.textures,x.count,this._maxTextures),m.gpuBindGroup=i.bindGroup.getBindGroup(m.bindGroup,s.gpuProgram,1)}c.setBindGroup(1,m.bindGroup,s.gpuProgram),c.renderPassEncoder.drawIndexed(m.size,1,m.start)}}destroy(){this.shader.destroy(!0),this.shader=null}}oe.extension={type:[l.WebGPUPipesAdaptor],name:"graphics"};class ae{init(){const e=I({name:"mesh",bits:[Ue,Me,W]});this._shader=new H({gpuProgram:e,resources:{uTexture:E.EMPTY._source,uSampler:E.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new F}}}})}execute(e,t){const r=e.renderer;let s=t._shader;if(!s)s=this._shader,s.groups[2]=r.texture.getTextureBindGroup(t.texture);else if(!s.gpuProgram){v("Mesh shader has no gpuProgram",t.shader);return}const i=s.gpuProgram;if(i.autoAssignGlobalUniforms&&(s.groups[0]=r.globalUniforms.bindGroup),i.autoAssignLocalUniforms){const n=e.localUniforms;s.groups[1]=r.renderPipes.uniformBatch.getUniformBindGroup(n,!0)}r.encoder.draw({geometry:t._geometry,shader:s,state:t.state})}destroy(){this._shader.destroy(!0),this._shader=null}}ae.extension={type:[l.WebGPUPipesAdaptor],name:"mesh"};const Xe=[...Re,X,q,U,Y,j,ne,Z,ee,te,Q,K,$,V],Je=[...Ee,J],Qe=[N,ae,oe],ue=[],ce=[],de=[];G.handleByNamedList(l.WebGPUSystem,ue);G.handleByNamedList(l.WebGPUPipes,ce);G.handleByNamedList(l.WebGPUPipesAdaptor,de);G.add(...Xe,...Je,...Qe);class gt extends xe{constructor(){const e={name:"webgpu",type:ye.WEBGPU,systems:ue,renderPipes:ce,renderPipeAdaptors:de};super(e)}}export{gt as WebGPURenderer};
@@ -0,0 +1,8 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-D5m0P4ss.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-CMPHZH6B.css"])))=>i.map(i=>d[i]);
2
+ import{U as bs,d as is,r as L,g as te,ar as Je,bo as We,bp as Qe,bq as _s,T as xs,b9 as Us,br as ds,af as qs,a5 as Ls,bs as Ds,aq as Fs,ac as fs,aN as re,bt as Ke}from"./index-D5m0P4ss.js";import{u as Os}from"./prompt-DcAcgQiB.js";import{C as ws}from"./chatlabSiteLocale-CrCNb8QP.js";const xe="chart_runtime",$s=4e3,zs=`
3
+ …[truncated]`;function ps(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function gs(e){return!ps(e)||!Array.isArray(e.content)?"":e.content.map(t=>ps(t)&&t.type==="text"&&typeof t.text=="string"?t.text:"").filter(t=>t.length>0).join(`
4
+ `)}function ms(e,t=$s){return e.length<=t?e:e.slice(0,t)+zs}function X(){return bs("assistant-crud")}function le(){return bs("skill-crud")}const ks=ws,Ws={"zh-CN":"cn","zh-TW":"cn","en-US":"en","ja-JP":"ja"},Bs=is("assistant",()=>{const e=L([]),t=L(null),u=L(!1),f=new Set;let c=null;const h=L([]),D=L([]),b=L([]),M=L(!1),E=L(null),x=L("group"),J=L("zh-CN"),U=te(()=>t.value?e.value.find(m=>m.id===t.value)??null:null),V=te(()=>e.value.filter(m=>{const d=!m.applicableChatTypes?.length||m.applicableChatTypes.includes(x.value),T=!m.supportedLocales?.length||m.supportedLocales.some(j=>J.value.startsWith(j));return d&&T})),F=4,Y=te(()=>V.value.slice(0,F)),ce=te(()=>V.value.slice(F)),_=te(()=>V.value.length>F),K=te(()=>{const m=new Set(e.value.map(d=>d.id));return b.value.map(d=>({...d,imported:m.has(d.id)}))});function ue(m,d){x.value=m,J.value=d}async function N(){try{const m=X();e.value=await m.getAll(),u.value=!0}catch(m){console.error("[AssistantStore] Failed to load assistants:",m)}}async function Ie(){try{h.value=await X().getBuiltinCatalog()}catch(m){console.error("[AssistantStore] Failed to load builtin catalog:",m)}}async function Re(){try{D.value=await X().getBuiltinToolCatalog()}catch(m){console.error("[AssistantStore] Failed to load builtin tool catalog:",m)}}async function ie(m){const d=Ws[m||J.value]??"en",T=`${ks}/${d}/assistant.json`;M.value=!0,E.value=null;try{const j=await Je().fetchRemoteConfig(T);if(!j.success||!j.data){E.value=j.error||"Failed to fetch cloud catalog",b.value=[];return}const n=j.data;if(!Array.isArray(n)){E.value="Invalid catalog format",b.value=[];return}b.value=n.filter(s=>s.id&&s.name&&s.path)}catch(j){E.value=String(j),b.value=[]}finally{M.value=!1}}async function Te(m){const d=`${ks}${m.path}`;try{const T=await Je().fetchRemoteConfig(d);if(!T.success||typeof T.data!="string")return{success:!1,error:T.error||"Failed to fetch assistant content"};const j=await X().importFromMd(T.data);return j.success&&await N(),j}catch(T){return{success:!1,error:String(T)}}}function Me(m){return e.value.some(d=>d.id===m)}function ve(m){t.value=m}function Ne(){t.value=null}async function Pe(m){try{return await X().getConfig(m)}catch(d){return console.error("[AssistantStore] Failed to get config:",d),null}}async function k(m,d){try{const T=await X().update(m,d);return T.success&&await N(),T}catch(T){return{success:!1,error:String(T)}}}async function y(m){try{const d=await X().reset(m);return d.success&&await N(),d}catch(d){return{success:!1,error:String(d)}}}async function R(m){const d=We(m);if(f.has(d))return null;f.add(d);try{const T=await X().getUpgradeInfo(d);if(!T)return null;try{if(c||(c={...(await Qe().getPreferences()).assistantUpgradeSkippedVersions}),T.latestVersion!==null&&c[T.builtinId]===T.latestVersion)return null}catch(j){console.error("[AssistantStore] Failed to load skipped assistant upgrades:",j)}return T}catch(T){return f.delete(d),console.error("[AssistantStore] Failed to check assistant upgrade:",T),null}}async function ee(m){if(m.latestVersion===null)return{success:!1,error:"Assistant template version is unavailable"};try{c||(c={...(await Qe().getPreferences()).assistantUpgradeSkippedVersions});const d={...c,[m.builtinId]:m.latestVersion},T=await Qe().savePreferences({assistantUpgradeSkippedVersions:d});return T.success&&(c=d),T}catch(d){return{success:!1,error:String(d)}}}async function de(m,d){try{const T=await X().upgradeWithBackup(m.assistantId,d);return T.success&&await N(),T}catch(T){return{success:!1,error:String(T)}}}async function Ae(m){try{const d=await X().importBuiltin(m);return d.success&&(await N(),await Ie()),d}catch(d){return{success:!1,error:String(d)}}}async function Ue(m){try{const d=await X().reimport(m);return d.success&&(await N(),await Ie()),d}catch(d){return{success:!1,error:String(d)}}}async function qe(m){try{const d=await X().create(m);return d.success&&await N(),d}catch(d){return{success:!1,error:String(d)}}}async function He(m){try{const d=X(),T=await d.getConfig(m);if(!T)return{success:!1,error:"Assistant not found"};const{id:j,builtinId:n,...s}=T,o=await d.create({...s,name:`${T.name}${_s.global.t("ai.assistant.duplicateSuffix")}`});return o.success&&await N(),o}catch(d){return{success:!1,error:String(d)}}}async function Ve(m){try{const d=await X().delete(m);return d.success&&await N(),d}catch(d){return{success:!1,error:String(d)}}}return{assistants:e,selectedAssistantId:t,selectedAssistant:U,isLoaded:u,builtinCatalog:h,builtinToolCatalog:D,cloudCatalog:b,cloudLoading:M,cloudError:E,cloudCatalogWithStatus:K,currentChatType:x,currentLocale:J,filteredAssistants:V,defaultAssistants:Y,moreAssistants:ce,hasMoreAssistants:_,loadAssistants:N,loadBuiltinCatalog:Ie,loadBuiltinToolCatalog:Re,fetchCloudCatalog:ie,importFromCloud:Te,isCloudItemImported:Me,selectAssistant:ve,clearSelection:Ne,setFilterContext:ue,getAssistantConfig:Pe,updateAssistant:k,createAssistant:qe,duplicateAssistant:He,resetAssistant:y,checkDefaultAssistantUpgrade:R,skipAssistantUpgrade:ee,upgradeAssistantWithBackup:de,importAssistant:Ae,reimportAssistant:Ue,deleteAssistant:Ve}}),ys=ws,js={"zh-CN":"cn","zh-TW":"cn","en-US":"en","ja-JP":"ja"},Js=is("skill",()=>{const e=L([]),t=L(null),u=L(!1),f=L([]),c=L([]),h=L(!1),D=L(null),b=L("group"),M=L("zh-CN");function E(){const k=M.value.startsWith("zh");return{id:xe,name:k?"绘图助手":"Chart Assistant",description:k?"按本轮问题生成灵活的聊天数据图表":"Generate flexible charts for this chat question",tags:[k?"图表":"chart"],chatScope:"all",tools:["render_chart","get_schema"],builtinId:xe}}const x=te(()=>t.value?t.value===xe?E():e.value.find(k=>k.id===t.value)??null:null),J=te(()=>E()),U=te(()=>e.value.filter(k=>k.chatScope==="all"||k.chatScope===b.value)),V=te(()=>{const y=Bs().selectedAssistant,R=[J.value,...U.value];return y?R.filter(ee=>(ee.tools.length,!0)):R}),F=te(()=>{const k={};for(const y of V.value){const R=y.tags[0]||"other";k[R]||(k[R]=[]),k[R].push(y)}return k}),Y=te(()=>{const k=new Set(e.value.map(y=>y.id));return c.value.map(y=>({...y,imported:k.has(y.id)}))});function ce(k,y){b.value=k,y&&(M.value=y)}async function _(){try{e.value=await le().getAll(),u.value=!0}catch(k){console.error("[SkillStore] Failed to load skills:",k)}}async function K(){try{f.value=await le().getBuiltinCatalog()}catch(k){console.error("[SkillStore] Failed to load builtin catalog:",k)}}async function ue(){const k=js[M.value]??"en",y=`${ys}/${k}/skill.json`;h.value=!0,D.value=null;try{const R=await Je().fetchRemoteConfig(y);if(!R.success||!R.data){D.value=R.error||"Failed to fetch cloud catalog",c.value=[];return}const ee=R.data;if(!Array.isArray(ee)){D.value="Invalid catalog format",c.value=[];return}c.value=ee.filter(de=>de.id&&de.name&&de.path)}catch(R){D.value=String(R),c.value=[]}finally{h.value=!1}}async function N(k){const y=`${ys}${k.path}`;try{const R=await Je().fetchRemoteConfig(y);if(!R.success||typeof R.data!="string")return{success:!1,error:R.error||"Failed to fetch skill content"};const ee=await le().importFromMd(R.data);return ee.success&&await _(),ee}catch(R){return{success:!1,error:String(R)}}}function Ie(k){return e.value.some(y=>y.id===k)}function Re(k){t.value=k}async function ie(k){if(k===xe)return{...E(),prompt:"",builtinId:xe};try{return await le().getConfig(k)}catch(y){return console.error("[SkillStore] Failed to get skill config:",y),null}}async function Te(k,y){try{const R=await le().update(k,y);return R.success&&await _(),R}catch(R){return{success:!1,error:String(R)}}}async function Me(k){try{const y=await le().create(k);return y.success&&await _(),y}catch(y){return{success:!1,error:String(y)}}}async function ve(k){try{const y=await le().delete(k);return y.success&&(t.value===k&&(t.value=null),await _()),y}catch(y){return{success:!1,error:String(y)}}}async function Ne(k){try{const y=await le().importBuiltin(k);return y.success&&(await _(),await K()),y}catch(y){return{success:!1,error:String(y)}}}async function Pe(k){try{const y=await le().reimport(k);return y.success&&(await _(),await K()),y}catch(y){return{success:!1,error:String(y)}}}return{skills:e,activeSkillId:t,builtinCatalog:f,isLoaded:u,currentChatType:b,currentLocale:M,activeSkill:x,scopedSkills:U,compatibleSkills:V,groupedSkills:F,cloudCatalog:c,cloudLoading:h,cloudError:D,cloudCatalogWithStatus:Y,setFilterContext:ce,loadSkills:_,loadBuiltinCatalog:K,fetchCloudCatalog:ue,importFromCloud:N,isCloudItemImported:Ie,activateSkill:Re,getSkillConfig:ie,updateSkill:Te,createSkill:Me,deleteSkill:ve,importSkill:Ne,reimportSkill:Pe}});async function Rs(e){const{url:t,method:u="POST",headers:f={},body:c,signal:h,onEvent:D}=e,b=await xs(t,{method:u,headers:{"Content-Type":"application/json",...f},body:c!=null?JSON.stringify(c):void 0,signal:h});if(!b.ok){const U=await b.text().catch(()=>"");throw new Error(`SSE request failed: HTTP ${b.status} ${U}`)}if(!b.body)throw new Error("SSE response has no body");const M=b.body.getReader(),E=new TextDecoder;let x="",J="";for(;;){const{done:U,value:V}=await M.read();if(U)break;x+=E.decode(V,{stream:!0});const F=x.split(`
5
+ `);x=F.pop()||"";for(const Y of F)Y.startsWith("event: ")?J=Y.slice(7).trim():Y.startsWith("data: ")&&(D({event:J,data:Y.slice(6)}),J="")}x.trim()&&x.startsWith("data: ")&&D({event:J,data:x.slice(6)})}function ut(){return{async chatStream(e,t,u){let f;try{return await Rs({url:"/_web/ai/llm/chat-stream",body:{messages:e,options:t},onEvent:({data:c})=>{try{const h=JSON.parse(c);h.finishReason==="error"&&h.error&&(f=h.error),u?.(h)}catch{}}}),f?{success:!1,error:f}:{success:!0}}catch(c){const h=c instanceof Error?c.message:String(c);return{success:!1,error:f??h}}}}}const Be=new Map;function es(){return{runStream(e,t){const u=Date.now();ds("ai_request_started");const f=new AbortController,c=`local_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;Be.set(c,{serverId:"",abortController:f});const D=new Promise(b=>{let M="";const E=[];let x=0,J,U=!1,V;Rs({url:"/_web/ai/agent/stream",body:e,signal:f.signal,onEvent:({event:F,data:Y})=>{try{const ce=JSON.parse(Y);if(F==="meta"){const K=Be.get(c);K&&(K.serverId=ce.requestId??"");return}const _=ce;switch(t?.(_),_.type){case"content":_.content&&(M+=_.content);break;case"tool_start":_.toolName&&E.push(_.toolName);break;case"status":_.status&&(x=_.status.round);break;case"done":_.usage&&(J=_.usage);break;case"error":U=!0,V=_.error;break}}catch{}}}).then(()=>{Be.delete(c),b({success:!U,result:{content:M,toolsUsed:E,toolRounds:x,totalUsage:J},...U&&V?{error:V}:{}})}).catch(F=>{Be.delete(c),f.signal.aborted?b({success:!1,result:{content:M,toolsUsed:E,toolRounds:x,aborted:!0}}):b({success:!1,error:{name:"FetchError",message:F.message??String(F),stack:null}})})}).then(b=>(ds("ai_request_completed",{success:b.success,duration_ms:Date.now()-u,...b.success?{}:{failure_reason:b.result?.aborted?"aborted":b.error?.name==="FetchError"?"network":"unknown"}}),b));return{requestId:c,promise:D}},async abort(e){const t=Be.get(e);if(!t)return{success:!1,error:"Request not found"};if(t.abortController.abort(),t.serverId)try{const{post:u}=await Us(async()=>{const{post:f}=await import("./index-D5m0P4ss.js").then(c=>c.cJ);return{post:f}},__vite__mapDeps([0,1,2]));await u("/ai/agent/abort",{requestId:t.serverId})}catch{}return Be.delete(e),{success:!0}}}}function Hs(e){return e.desensitize&&!e.desensitizeRules.some(t=>t.builtin)}function Vs(e){if(e.dataCleaning||e.mergeConsecutive||e.blacklistKeywords.length>0||e.denoise||e.desensitize||e.anonymizeNames)return{dataCleaning:e.dataCleaning,mergeConsecutive:e.mergeConsecutive,mergeWindowSeconds:e.mergeWindowSeconds,blacklistKeywords:[...e.blacklistKeywords],denoise:e.denoise,desensitize:e.desensitize,desensitizeRules:e.desensitizeRules.map(u=>({...u,locales:[...u.locales]})),anonymizeNames:e.anonymizeNames}}function ae(e){return e==="render_chart"}function Gs(e,t,u){if(!e||!ae(e))return null;const f=e;return{type:"tool",tool:{name:f,displayName:f,status:"running",params:t,toolCallId:u,transient:!0}}}function Ms(e,t,u){if(!Z(e))return!1;const f=e;return f.type!=="tool"||!f.tool||f.tool.transient!==!0||f.tool.name!==t||u&&f.tool.toolCallId!==u?!1:ae(String(f.tool.name))}function Ys(e,t,u){let f=!1;const c=[...e];for(let h=c.length-1;h>=0;h--)if(Ms(c[h],t,u)){c.splice(h,1),f=!0;break}return f?c:[...e]}function Z(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Is(e){return Z(e)&&e.version===1&&Z(e.spec)&&Z(e.dataset)}function ns(e){if(!Z(e))return[];const t=Z(e.details)?e.details:e,u=[];if(Is(t.chart)&&u.push(t.chart),Array.isArray(t.charts))for(const f of t.charts)Is(f)&&u.push(f);return u}function Ns(e){return{...e,dataset:{...e.dataset,rows:[]}}}function Ps(e){return e.map(t=>({type:"chart",chart:Ns(t)}))}function rs(e){return Array.isArray(e)?`[${e.map(rs).join(",")}]`:Z(e)?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${rs(e[t])}`).join(",")}}`:JSON.stringify(e)}function Ss(e){const t=Ns(e);return rs({spec:t.spec,columns:t.dataset.columns,data:t.data,rowCount:t.rowCount,truncated:t.truncated})}function Xs(e,t){const u=Ss(t);return e.some(f=>{if(!Z(f))return!1;const c=f;return c.type==="chart"&&c.chart?Ss(c.chart)===u:!1})}function Zs(e,t,u,f){const c=[...e];let h=-1;for(let E=c.length-1;E>=0;E--)if(Ms(c[E],t,u)){h=E;break}const D=h>=0?c.filter((E,x)=>x!==h):c,b=f.filter(E=>!Xs(D,E)),M=Ps(b);return h>=0?(c.splice(h,1,...M),c):[...c,...M]}function Qs(e,t,u,f,c){if(f.length>0)return Zs(e,t,u,f);const h=Ys(e,t,u);return c?[...h,c]:h}function dt(e,t,u){const f=e[t];return!Z(f)||f.type!=="error"||!Z(f.error)||f.error.name!=="ChartRenderError"?!1:u?.isStreaming?!0:e.slice(t+1).some(c=>Z(c)&&c.type==="chart")}function Ks(e){return Z(e)?typeof e.error=="string"?e.error:Z(e.error)&&typeof e.error.message=="string"?e.error.message:Array.isArray(e.content)?e.content.map(t=>Z(t)&&t.type==="text"&&typeof t.text=="string"?t.text:"").join(`
6
+ `).trim():null:null}function hs(e,t){if(!ae(e)||ns(t).length>0)return null;const u=Ks(t);if(!u)return null;const c=/^Error:\s*(.+)$/is.exec(u)?.[1]?.trim();return!c||/^Call get_schema before render_chart\b/i.test(c)?null:{type:"error",error:{name:"ChartRenderError",message:c,stack:null}}}function je(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ss(e){return je(e)&&e.version===1&&typeof e.query=="string"&&Array.isArray(e.groups)}function Ts(e){if(!je(e))return null;const t=je(e.details)?e.details:null;if(t&&ss(t.evidence))return t.evidence;const u=je(e.data)?e.data:null;return u&&ss(u.evidence)?u.evidence:ss(e.evidence)?e.evidence:null}function et(e){return{type:"evidence",evidence:e}}function vs(e){return JSON.parse(JSON.stringify(e))}function ls(e){return JSON.parse(JSON.stringify(e))}function Es(e){return e?.type==="plan_draft"&&typeof e.text=="string"}function st(e,t){const u=e.map(ls),f=u[u.length-1];return Es(f)?f.text+=t:u.push({type:"plan_draft",version:1,status:"streaming",text:t}),u}function tt(e,t){const u=e.map(ls);for(let f=u.length-1;f>=0;f--){const c=u[f];if(Es(c)){const h=c.text.trim();return u[f]={...vs(t),...h?{displayText:h}:{}},u}}return u.push(vs(t)),u}function nt(e){return e.filter(t=>t.type!=="plan_draft").map(ls)}function As(e){if(!e)return;const t=JSON.parse(JSON.stringify(e));for(const u of t)u.type==="tool"&&delete u.tool.displayResult;return t}const oe="__draft__";function rt(e){return e?`${e.startTs}_${e.endTs}`:"all"}function ot(e){return`${e.sessionId}:${e.chatType}:${rt(e.timeFilter)}`}function os(){return{promptTokens:0,completionTokens:0,totalTokens:0,cacheReadTokens:0,cacheWriteTokens:0}}function Cs(e){return{promptTokens:e.promptTokens??0,completionTokens:e.completionTokens??0,totalTokens:e.totalTokens??0,cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0}}function $e(e){if(e&&typeof e=="object"){const t=e;return{name:typeof t.name=="string"?t.name:null,message:typeof t.message=="string"?t.message:"未知错误",stack:typeof t.stack=="string"?t.stack:null,statusCode:typeof t.statusCode=="number"?t.statusCode:null,url:typeof t.url=="string"?t.url:null,responseBody:typeof t.responseBody=="string"?t.responseBody:null,responseHeaders:t.responseHeaders&&typeof t.responseHeaders=="object"?t.responseHeaders:null,requestBody:typeof t.requestBody=="string"?t.requestBody:null,cause:typeof t.cause=="string"?t.cause:null,provider:typeof t.provider=="string"?t.provider:null,friendlyMessage:typeof t.friendlyMessage=="string"?t.friendlyMessage:null}}return{name:null,message:e?String(e):"未知错误",stack:null}}function ze(e){return{id:e.id,role:e.role,content:e.content,timestamp:e.timestamp*1e3,parentId:e.parentId,contentBlocks:e.contentBlocks}}function as(e=null){return{messages:[],sourceMessages:[],currentKeywords:[],assistantId:e,loaded:!1}}function at(e){const t=as(null);return{sessionId:e.sessionId,sessionName:e.sessionName,chatType:e.chatType,locale:e.locale,timeFilter:e.timeFilter,selectedAssistantId:null,messages:t.messages,sourceMessages:t.sourceMessages,currentKeywords:t.currentKeywords,isLoadingSource:!1,isAIThinking:!1,currentAIChatId:null,currentToolStatus:null,toolsUsedInCurrentRound:[],sessionTokenUsage:os(),agentStatus:null,ownerInfo:void 0,ownerInfoInitialized:!1,isAborted:!1,currentRequestId:"",currentAgentRequestId:"",aiChatBuffers:{[oe]:t}}}function ts(e){return e.currentAIChatId??oe}const ft=is("aiChatRuntime",()=>{const e=L({}),t=L(null),u=Os(),f=qs(),c=Ls(),h=Bs(),D=Js(),b=Ds(),{aiGlobalSettings:M}=Fs(u);let E=!1;function x(n){return`${n}_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function J(n){const s=ot(n),o=e.value[s];if(o)return o.sessionName=n.sessionName,o.chatType=n.chatType,o.locale=n.locale,o.timeFilter=n.timeFilter,{chatKey:s,state:o};const r=at(n);e.value[s]=r;const a=e.value[s];return K(s),{chatKey:s,state:a}}function U(n){return e.value[n]??null}function V(){return t.value?U(t.value.chatKey):null}function F(n,s,o=null){return n.aiChatBuffers[s]||(n.aiChatBuffers[s]=as(o)),n.aiChatBuffers[s]}function Y(n,s){const o=n.currentAIChatId??oe,r=n.aiChatBuffers[o];r&&(r.sessionTokenUsage={...n.sessionTokenUsage});const a=F(n,s);n.currentAIChatId=s===oe?null:s,n.messages=a.messages,n.sourceMessages=a.sourceMessages,n.currentKeywords=a.currentKeywords,n.selectedAssistantId=a.assistantId,n.sessionTokenUsage=a.sessionTokenUsage?{...a.sessionTokenUsage}:os(),n.agentStatus=null}function ce(n,s,o){const r=F(n,s);return n.aiChatBuffers[o]=r,s!==o&&delete n.aiChatBuffers[s],n.currentAIChatId===null&&s===oe&&(n.currentAIChatId=o),r}function _(n){const s=U(n);s&&(s.selectedAssistantId?h.selectAssistant(s.selectedAssistantId):h.clearSelection())}async function K(n){const s=U(n);if(!s)return;const r=f.sessions.find(a=>a.id===s.sessionId)?.ownerId;if(!r){s.ownerInfo=void 0,s.ownerInfoInitialized=!0;return}if(!(s.ownerInfoInitialized&&s.ownerInfo?.platformId===r))try{const w=(await fs().getMembers(s.sessionId)).find(v=>v.platformId===r);s.ownerInfo=w?{platformId:r,displayName:w.groupNickname||w.accountName||r}:{platformId:r,displayName:r},s.ownerInfoInitialized=!0}catch(a){console.error("[AI] 获取 Owner 信息失败:",a),s.ownerInfo=void 0,s.ownerInfoInitialized=!0}}function ue(n,s,o,r=null){const a=U(n);a&&(t.value={requestId:o,chatKey:n,sessionId:a.sessionId,sessionName:a.sessionName,chatType:a.chatType,aiChatId:r,questionPreview:s.trim().slice(0,80),startedAt:Date.now()})}function N(n,s){t.value&&t.value.chatKey===n&&(s&&t.value.requestId!==s||(t.value=null))}function Ie(n,s){t.value&&t.value.chatKey===n&&(t.value.aiChatId=s)}function Re(n){return{phase:"preparing",round:0,toolsUsed:n.toolsUsedInCurrentRound.length,contextTokens:0,totalUsage:{...n.sessionTokenUsage},updatedAt:Date.now()}}function ie(n,s,o){const r=n.agentStatus?{...n.agentStatus}:Re(n);n.agentStatus={...r,...o,phase:s,updatedAt:Date.now()}}function Te(n,s){const o=U(n);if(!o||o.isAIThinking)return!1;const r=F(o,ts(o),s);return r.assistantId=s,o.selectedAssistantId=s,h.selectAssistant(s),!0}async function Me(n,s){const o=U(n);if(!o)return!1;try{const r=await re().getAIChat(s),a=F(o,s,r?.assistantId??null);if(!a.loaded){const[w,v]=await Promise.all([re().getMessages(s),re().getAIChatTokenUsage(s)]);a.messages.splice(0,a.messages.length,...w.map(S=>ze(S))),a.sourceMessages.splice(0,a.sourceMessages.length),a.currentKeywords.splice(0,a.currentKeywords.length),a.sessionTokenUsage=Cs(v),a.loaded=!0}return a.assistantId=r?.assistantId??a.assistantId??null,Y(o,s),_(n),!0}catch(r){return console.error("[AI] 加载对话历史失败:",r),!1}}function ve(n,s){const o=U(n);if(!o)return!1;const r=s??oe;return o.aiChatBuffers[r]?(Y(o,r),_(n),!0):!1}function Ne(){return t.value?(E=!0,ve(t.value.chatKey,t.value.aiChatId)):!1}async function Pe(n){if(E){E=!1;return}const s=U(n);if(!(!s||s.isAIThinking)){if(h.isLoaded||await h.loadAssistants(),!s.selectedAssistantId){const o=We(s.locale);Te(n,o)}k(n)}}function k(n,s){const o=U(n);if(!o||o.isAIThinking)return!1;const r=as(o.selectedAssistantId);return o.aiChatBuffers[oe]=r,Y(o,oe),o.currentToolStatus=null,o.toolsUsedInCurrentRound=[],o.isLoadingSource=!1,o.sessionTokenUsage=os(),o.agentStatus=null,o.isAborted=!1,o.currentRequestId="",o.currentAgentRequestId="",s&&r.messages.push({id:x("welcome"),role:"assistant",content:s,timestamp:Date.now()}),!0}async function y(){}async function R(){}function ee(n,s){const o=p=>{const I=s();n.messages[I]={...n.messages[I],...p}};return{updateAIMessage:o,appendTextToBlocks:p=>{if(!p)return;const I=s(),l=n.messages[I].contentBlocks||[],C=l[l.length-1];p.trim().length===0&&(!C||C.type!=="text")||(C&&C.type==="text"?C.text+=p:l.push({type:"text",text:p}),o({contentBlocks:[...l],content:n.messages[I].content+p}))},appendThinkToBlocks:(p,I,l)=>{if(!p&&l===void 0)return;const C=s(),B=n.messages[C].contentBlocks||[],H=I||"think",W=B[B.length-1];let q=W;if(W&&W.type==="think"&&W.tag===H)W.text+=p;else if(p.trim().length>0)q={type:"think",tag:H,text:p},B.push(q);else if(l!==void 0)for(let G=B.length-1;G>=0;G--){const Se=B[G];if(Se.type==="think"&&Se.tag===H){q=Se;break}}l!==void 0&&q&&q.type==="think"&&(q.durationMs=l),o({contentBlocks:[...B]})},appendChartsToBlocks:p=>{if(p.length===0)return;const I=s(),l=n.messages[I].contentBlocks||[];l.push(...Ps(p)),o({contentBlocks:[...l]})},appendEvidenceToBlocks:p=>{const I=s(),l=n.messages[I].contentBlocks||[];l.push(et(p)),o({contentBlocks:[...l]})},appendPlanDraftToBlocks:p=>{if(!p)return;const I=s(),l=n.messages[I].contentBlocks||[];o({contentBlocks:[...st(l,p)]})},appendPlanToBlocks:p=>{const I=s(),l=n.messages[I].contentBlocks||[];o({contentBlocks:[...tt(l,p)]})},removePlanDraftsFromBlocks:()=>{const p=s(),I=n.messages[p].contentBlocks||[];o({contentBlocks:[...nt(I)]})},updatePlanBlockStatus:p=>{const I=s(),l=n.messages[I].contentBlocks||[];for(let C=l.length-1;C>=0;C--){const B=l[C];if(B.type==="plan"){B.status=p;break}}o({contentBlocks:[...l]})},appendErrorToBlocks:p=>{const I=s(),l=n.messages[I].contentBlocks||[];l.push({type:"error",error:p}),o({contentBlocks:[...l]})},addToolBlock:(p,I,l)=>{const C=s(),B=n.messages[C].contentBlocks||[];B.push({type:"tool",tool:{name:p,displayName:p,status:"running",params:I,toolCallId:l}}),o({contentBlocks:[...B]})},addRenderOnlyToolPendingBlock:(p,I,l)=>{const C=Gs(p,I,l);if(!C)return;const B=s(),H=n.messages[B].contentBlocks||[];H.push(C),o({contentBlocks:[...H]})},updateRenderOnlyToolResult:(p,I,l,C)=>{const B=s(),H=n.messages[B].contentBlocks||[];o({contentBlocks:Qs(H,p,I,l,C)})},updateToolBlockStatus:(p,I,l)=>{const C=s(),B=n.messages[C].contentBlocks||[],H=q=>q.type==="tool"&&q.tool.status==="running";let W;if(l?.toolCallId)for(let q=B.length-1;q>=0;q--){const G=B[q];if(H(G)&&G.tool.toolCallId===l.toolCallId){W=G;break}}if(!W)for(let q=B.length-1;q>=0;q--){const G=B[q];if(H(G)&&G.tool.name===p){W=G;break}}W&&(W.tool.status=I,l?.result!==void 0&&(W.tool.result=l.result),l?.displayResult!==void 0&&(W.tool.displayResult=l.displayResult),l?.isError!==void 0&&(W.tool.isError=l.isError)),o({contentBlocks:[...B]})}}}async function de(n,s,o){const r=U(n);if(!r)return{success:!1,reason:"error"};if(!s.trim())return{success:!1,reason:"empty"};if(r.isAIThinking||t.value)return{success:!1,reason:"busy",activeTask:t.value};const a=x("req"),w=ts(r);let v=w===oe?null:w;const S=F(r,w,r.selectedAssistantId);let P,A;S.assistantId=r.selectedAssistantId,S.loaded=!0,ue(n,s,a,v),_(n),K(n);const $=D.activeSkillId,fe=D.activeSkill?.name,pe=M.value.enableAutoSkill??!0,ge=pe?M.value.chartAutoMode??"suggest":"explicit",Ce=(o?.mentionedMembers??[]).map(z=>({memberId:z.memberId,platformId:z.platformId,displayName:z.displayName,aliases:[...z.aliases],mentionText:z.mentionText}));r.isAIThinking=!0,r.isLoadingSource=!0,r.currentToolStatus=null,r.toolsUsedInCurrentRound=[],r.agentStatus=null,r.isAborted=!1,r.currentRequestId=a,r.currentAgentRequestId="";try{const z=await Ke().hasConfig();if(r.isAborted)return N(n,a),{success:!1,reason:"aborted"};if(r.currentRequestId!==a)return N(n,a),{success:!1,reason:"busy",activeTask:t.value};if(!z)return S.messages.push({id:x("error"),role:"assistant",content:"⚠️ 请先配置 AI 服务。点击左下角「设置」按钮前往「模型配置Tab」进行配置。",timestamp:Date.now()}),N(n,a),{success:!1,reason:"no_config"};const p={id:x("user"),role:"user",content:s,timestamp:Date.now(),toolCalls:[]};P=p,S.messages.push(p);const I={id:x("ai"),role:"assistant",content:"",timestamp:Date.now(),isStreaming:!0,contentBlocks:[]};$&&fe&&I.contentBlocks.push({type:"skill",skillId:$,skillName:fe}),S.messages.push(I);let l=S.messages.length-1,C=!1;const{updateAIMessage:B,appendTextToBlocks:H,appendThinkToBlocks:W,appendChartsToBlocks:q,appendEvidenceToBlocks:G,appendPlanDraftToBlocks:Se,appendPlanToBlocks:Le,removePlanDraftsFromBlocks:be,updatePlanBlockStatus:Ee,appendErrorToBlocks:Ge,addToolBlock:Ye,addRenderOnlyToolPendingBlock:Xe,updateRenderOnlyToolResult:De,updateToolBlockStatus:se}=ee(S,()=>l),me=S.assistantId??We(r.locale);if(!v){const i=s.slice(0,50)+(s.length>50?"...":""),O=await re().createAIChat(r.sessionId,i,me);if(r.isAborted)return B({isStreaming:!1}),N(n,a),{success:!1,reason:"aborted"};if(r.currentRequestId!==a)return B({isStreaming:!1}),N(n,a),{success:!1,reason:"busy",activeTask:t.value};v=O.id,ce(r,oe,O.id),S.assistantId=me,Ie(n,O.id)}const ke={sessionId:r.sessionId,aiChatId:v,timeFilter:r.timeFilter?{startTs:r.timeFilter.startTs,endTs:r.timeFilter.endTs}:void 0,maxMessagesLimit:M.value.maxMessagesPerRequest,ownerInfo:r.ownerInfo?{platformId:r.ownerInfo.platformId,displayName:r.ownerInfo.displayName}:void 0,mentionedMembers:Ce.length>0?Ce:void 0,preprocessConfig:await Ue(),searchContextBefore:M.value.searchContextBefore,searchContextAfter:M.value.searchContextAfter},{requestId:he,promise:Ze}=es().runStream({userMessage:s,sessionId:r.sessionId,aiChatId:v,timeFilter:ke.timeFilter,maxMessagesLimit:ke.maxMessagesLimit,ownerInfo:ke.ownerInfo,mentionedMembers:ke.mentionedMembers,preprocessConfig:ke.preprocessConfig,chatType:r.chatType,locale:r.locale,assistantId:me,skillId:$,enableAutoSkill:$?void 0:pe,chartAutoMode:$?void 0:ge,thinkingLevel:(()=>{const i=b.defaultAssistant;if(!(!i?.configId||!i?.modelId))return u.getThinkingLevel(i.configId,i.modelId)})()},i=>{if(!(r.isAborted||a!==r.currentRequestId))switch(i.type){case"content":i.content&&(r.currentToolStatus=null,H(i.content));break;case"think":i.content?W(i.content,i.thinkTag):i.thinkDurationMs!==void 0&&W("",i.thinkTag,i.thinkDurationMs);break;case"tool_start":if(i.toolName){const O=i.toolParams;r.currentToolStatus={name:i.toolName,displayName:i.toolName,status:"running"},r.toolsUsedInCurrentRound.push(i.toolName),ae(i.toolName)?Xe(i.toolName,O,i.toolCallId):Ye(i.toolName,O,i.toolCallId)}break;case"tool_result":if(i.toolName){const O=ns(i.toolResult),Q=hs(i.toolName,i.toolResult);ae(i.toolName)?De(i.toolName,i.toolCallId,O,Q):q(O);const Fe=Ts(i.toolResult);Fe&&G(Fe),Q&&(ae(i.toolName)||Ge(Q.error));const _e=Q!==null||i.toolIsError===!0;if(r.currentToolStatus?.name===i.toolName&&(r.currentToolStatus={...r.currentToolStatus,status:_e?"error":"done"}),!ae(i.toolName)){const we=gs(i.toolResult);se(i.toolName,_e?"error":"done",{toolCallId:i.toolCallId,result:ms(we),displayResult:we,isError:i.toolIsError})}}r.isLoadingSource=!1;break;case"plan_delta":i.planDelta&&Se(i.planDelta);break;case"plan":i.plan&&(Le(i.plan),Ee("executing"));break;case"plan_skipped":be();break;case"status":i.status&&(!r.agentStatus||i.status.updatedAt>=r.agentStatus.updatedAt)&&(r.agentStatus=i.status);break;case"compression_done":if(i.compressionResult){const O={id:`summary-${Date.now()}`,role:"summary",content:i.compressionResult.summaryContent,timestamp:i.compressionResult.timestamp},Q=Math.max(0,S.messages.length-1);S.messages.splice(Q,0,O),l++}break;case"done":r.currentToolStatus=null,C||Ee("done"),i.usage&&(A={...i.usage},r.sessionTokenUsage={promptTokens:r.sessionTokenUsage.promptTokens+i.usage.promptTokens,completionTokens:r.sessionTokenUsage.completionTokens+i.usage.completionTokens,totalTokens:r.sessionTokenUsage.totalTokens+i.usage.totalTokens,cacheReadTokens:r.sessionTokenUsage.cacheReadTokens+i.usage.cacheReadTokens,cacheWriteTokens:r.sessionTokenUsage.cacheWriteTokens+i.usage.cacheWriteTokens}),ie(r,"completed",i.usage?{totalUsage:i.usage}:void 0);break;case"error":if(be(),Ee("skipped"),r.currentToolStatus&&(r.currentToolStatus={...r.currentToolStatus,status:"error"},se(r.currentToolStatus.name,"error")),!C){C=!0;const O=S.messages[l].contentBlocks||[];O.push({type:"error",error:$e(i.error)}),B({contentBlocks:[...O],isStreaming:!1})}ie(r,"error");break}});r.currentAgentRequestId=he,ue(n,s,he,v);const ne=await Ze;if(r.isAborted)return N(n,he),{success:!1,reason:"aborted"};if(a!==r.currentRequestId)return N(n,he),{success:!1,reason:"busy",activeTask:t.value};if(ne.success&&ne.result){S.messages[l]={...S.messages[l],dataSource:{toolsUsed:ne.result.toolsUsed,toolRounds:ne.result.toolRounds},isStreaming:!1};const i=await Ae(v,p,S.messages[l],A);i&&(Object.assign(p,i.userMessage),S.messages[l]={...S.messages[l],...i.assistantMessage,isStreaming:!1})}else if(C){const i=await Ae(v,p,S.messages[l],A);i&&(Object.assign(p,i.userMessage),S.messages[l]={...S.messages[l],...i.assistantMessage,isStreaming:!1})}else{const i=S.messages[l].contentBlocks||[];i.push({type:"error",error:$e(ne.error)}),S.messages[l]={...S.messages[l],contentBlocks:[...i],isStreaming:!1};const O=await Ae(v,p,S.messages[l],A);O&&(Object.assign(p,O.userMessage),S.messages[l]={...S.messages[l],...O.assistantMessage,isStreaming:!1})}return{success:!0}}catch(z){console.error("[AI] 处理失败:",z),r.agentStatus=null;const p=S.messages[S.messages.length-1];if(p&&p.role==="assistant"){const I={name:z instanceof Error?z.name:null,message:z instanceof Error?z.message:String(z),stack:z instanceof Error?z.stack??null:null},l=p.contentBlocks||[];l.push({type:"error",error:I}),p.contentBlocks=[...l],p.isStreaming=!1;const C=P||S.messages.findLast(B=>B.role==="user");C&&await Ae(v,C,p,A)}return{success:!1,reason:"error"}}finally{r.isAIThinking=!1,r.isLoadingSource=!1,r.currentToolStatus=null,r.isAborted=!1,r.currentRequestId="",r.currentAgentRequestId="",N(n)}}async function Ae(n,s,o,r){try{if(!n)return null;const a=await re().addMessage(n,"user",s.content),w=As(o.contentBlocks),v=await re().addMessage(n,"assistant",o.content,void 0,void 0,w,r);return{userMessage:ze(a),assistantMessage:ze(v)}}catch(a){return console.error("[AI] 保存对话失败:",a),null}}async function Ue(){const n=c.aiPreprocessConfig;return Hs(n)&&await c.ensureDesensitizeRules(),Vs(c.aiPreprocessConfig)}function qe(n){return n.trim().replace(/^[\s"'“”‘’([{<]+|[\s"'“”‘’)\]}>.,!?;:,。!?;:、]+$/g,"").toLocaleLowerCase()}async function He(n,s){const o=new Set;for(const r of s.matchAll(/@([^\s@]+)/g)){const a=qe(r[1]??"");a&&o.add(a)}if(o.size===0)return[];try{const r=await fs().getMembers(n.sessionId),a=new Map;r.forEach(P=>{const A=P.groupNickname||P.accountName||P.platformId;a.set(A,(a.get(A)??0)+1)});const w=r.map(P=>{const A=P.groupNickname||P.accountName||P.platformId,$=(a.get(A)??0)>1?`${A}·${P.platformId}`:A,fe=[...P.aliases],pe=[A,P.groupNickname||"",P.accountName||"",P.platformId,$,...fe].map(qe).filter(Boolean);return{memberId:P.id,platformId:P.platformId,displayName:A,aliases:fe,mentionText:`@${$}`,lookupValues:pe}}),v=[],S=new Set;for(const P of o){const A=w.find($=>!S.has($.memberId)&&$.lookupValues.includes(P));A&&(S.add(A.memberId),v.push({memberId:A.memberId,platformId:A.platformId,displayName:A.displayName,aliases:A.aliases,mentionText:A.mentionText}))}return v}catch(r){return console.error("[AI] Failed to resolve mentioned members for edited message:",r),[]}}async function Ve(n,s,o,r){const a=U(n),w=o.trim();if(!a||!a.currentAIChatId)return{success:!1,reason:"error"};if(!w)return{success:!1,reason:"empty"};if(a.isAIThinking||t.value)return{success:!1,reason:"busy",activeTask:t.value};const v=r?.overwriteSubsequent??!1,S=F(a,a.currentAIChatId,a.selectedAssistantId),P=S.messages.findIndex($=>$.id===s),A=S.messages[P];return!A||A.role!=="user"||A.isStreaming?{success:!1,reason:"error"}:A.content.trim()===w?{success:!1,reason:"empty"}:v?m(n,a,S,P,A,w):d(n,a,S,P,A,w)}async function m(n,s,o,r,a,w){try{return await Ke().hasConfig()?s.isAborted?{success:!1,reason:"aborted"}:s.isAIThinking||t.value?{success:!1,reason:"busy",activeTask:t.value}:(await re().deleteMessagesFrom(s.currentAIChatId,a.id),o.messages.splice(r,o.messages.length-r),de(n,w)):{success:!1,reason:"no_config"}}catch(v){return console.error("[AI] edit and overwrite failed:",v),{success:!1,reason:"error"}}}async function d(n,s,o,r,a,w){const v=x("req");let S,P=!1;ue(n,w,v,s.currentAIChatId),_(n),K(n),s.isAIThinking=!0,s.isLoadingSource=!0,s.currentToolStatus=null,s.toolsUsedInCurrentRound=[],s.agentStatus=null,s.isAborted=!1,s.currentRequestId=v,s.currentAgentRequestId="";const A=o.messages[r+1],$=A?.role==="assistant",fe=$?o.messages.slice(r+2):o.messages.slice(r+1),pe={id:x("ai"),role:"assistant",content:"",timestamp:Date.now(),isStreaming:!0,contentBlocks:[]},ge=D.activeSkillId,Ce=D.activeSkill?.name;ge&&Ce&&pe.contentBlocks.push({type:"skill",skillId:ge,skillName:Ce});const z={...a,content:w},p=$?2:1;o.messages.splice(r,p,z,pe);const I=r+1,l=()=>{o.messages.splice(r,o.messages.length-r,a),$&&o.messages.splice(r+1,0,A),o.messages.push(...fe)},{updateAIMessage:C,appendTextToBlocks:B,appendThinkToBlocks:H,appendChartsToBlocks:W,appendEvidenceToBlocks:q,appendPlanDraftToBlocks:G,appendPlanToBlocks:Se,removePlanDraftsFromBlocks:Le,updatePlanBlockStatus:be,appendErrorToBlocks:Ee,addToolBlock:Ge,addRenderOnlyToolPendingBlock:Ye,updateRenderOnlyToolResult:Xe,updateToolBlockStatus:De}=ee(o,()=>I);try{if(!await Ke().hasConfig())return l(),N(n,v),{success:!1,reason:"no_config"};const me=o.assistantId??We(s.locale),ke=await He(s,w);if(s.isAborted)return l(),N(n,v),{success:!1,reason:"aborted"};if(v!==s.currentRequestId)return l(),N(n,v),{success:!1,reason:"busy",activeTask:t.value};const he=M.value.enableAutoSkill??!0,Ze=he?M.value.chartAutoMode??"suggest":"explicit",ne={sessionId:s.sessionId,aiChatId:s.currentAIChatId,historyLeafMessageId:a.parentId??null,timeFilter:s.timeFilter?{startTs:s.timeFilter.startTs,endTs:s.timeFilter.endTs}:void 0,maxMessagesLimit:M.value.maxMessagesPerRequest,ownerInfo:s.ownerInfo?{platformId:s.ownerInfo.platformId,displayName:s.ownerInfo.displayName}:void 0,mentionedMembers:ke.length>0?ke:void 0,preprocessConfig:await Ue(),searchContextBefore:M.value.searchContextBefore,searchContextAfter:M.value.searchContextAfter},{requestId:i,promise:O}=es().runStream({userMessage:w,sessionId:s.sessionId,aiChatId:s.currentAIChatId,historyLeafMessageId:a.parentId??null,timeFilter:ne.timeFilter,maxMessagesLimit:ne.maxMessagesLimit,ownerInfo:ne.ownerInfo,mentionedMembers:ne.mentionedMembers,preprocessConfig:ne.preprocessConfig,chatType:s.chatType,locale:s.locale,assistantId:me,skillId:ge,enableAutoSkill:ge?void 0:he,chartAutoMode:ge?void 0:Ze,thinkingLevel:(()=>{const g=b.defaultAssistant;if(!(!g?.configId||!g?.modelId))return u.getThinkingLevel(g.configId,g.modelId)})()},g=>{if(!(s.isAborted||v!==s.currentRequestId))switch(g.type){case"content":s.currentToolStatus=null,B(g.content||"");break;case"think":g.content?H(g.content,g.thinkTag):g.thinkDurationMs!==void 0&&H("",g.thinkTag,g.thinkDurationMs);break;case"tool_start":if(g.toolName){const ye=g.toolParams;s.currentToolStatus={name:g.toolName,displayName:g.toolName,status:"running"},s.toolsUsedInCurrentRound.push(g.toolName),ae(g.toolName)?Ye(g.toolName,ye,g.toolCallId):Ge(g.toolName,ye,g.toolCallId)}break;case"tool_result":if(g.toolName){const ye=ns(g.toolResult),Oe=hs(g.toolName,g.toolResult);ae(g.toolName)?Xe(g.toolName,g.toolCallId,ye,Oe):W(ye);const cs=Ts(g.toolResult);if(cs&&q(cs),Oe&&(ae(g.toolName)||Ee(Oe.error)),!ae(g.toolName)){const us=gs(g.toolResult);De(g.toolName,Oe!==null||g.toolIsError===!0?"error":"done",{toolCallId:g.toolCallId,result:ms(us),displayResult:us,isError:g.toolIsError})}}s.currentToolStatus=null,s.isLoadingSource=!1;break;case"plan_delta":g.planDelta&&G(g.planDelta);break;case"plan":g.plan&&(Se(g.plan),be("executing"));break;case"plan_skipped":Le();break;case"status":g.status&&(!s.agentStatus||g.status.updatedAt>=s.agentStatus.updatedAt)&&(s.agentStatus=g.status);break;case"done":s.currentToolStatus=null,P||be("done"),g.usage&&(S={...g.usage}),ie(s,"completed",g.usage?{totalUsage:g.usage}:void 0);break;case"error":{Le(),be("skipped"),P=!0,s.currentToolStatus&&De(s.currentToolStatus.name,"error");const ye=o.messages[I].contentBlocks||[];ye.push({type:"error",error:$e(g.error)}),C({contentBlocks:[...ye],isStreaming:!1}),ie(s,"error");break}}});s.currentAgentRequestId=i,ue(n,w,i,s.currentAIChatId);const Q=await O;if(s.isAborted)return l(),N(n,i),{success:!1,reason:"aborted"};if(v!==s.currentRequestId)return l(),N(n,i),{success:!1,reason:"busy",activeTask:t.value};if(Q.success&&Q.result)C({dataSource:{toolsUsed:Q.result.toolsUsed,toolRounds:Q.result.toolRounds},isStreaming:!1});else if(!P){const g=o.messages[I].contentBlocks||[];g.push({type:"error",error:$e(Q.error)}),C({contentBlocks:[...g],isStreaming:!1})}if(!Q.success)return l(),{success:!1,reason:"error"};await re().updateMessageContent(a.id,w),$&&await re().deleteAndRelinkMessage(s.currentAIChatId,A.id);const Fe=As(o.messages[I].contentBlocks),_e=await re().insertMessageAfter(s.currentAIChatId,a.id,"assistant",o.messages[I].content,Fe,S);o.messages[I]={...ze(_e),dataSource:o.messages[I].dataSource,isStreaming:!1},o.messages[r]={...o.messages[r],content:w};const we=I+1;return we<o.messages.length&&(o.messages[we]={...o.messages[we],parentId:_e.id}),o.sessionTokenUsage=Cs(await re().getAIChatTokenUsage(s.currentAIChatId)),s.sessionTokenUsage={...o.sessionTokenUsage},{success:!0}}catch(se){if(s.isAborted)return l(),{success:!1,reason:"aborted"};console.error("[AI] edit and regenerate failed:",se);const me=o.messages[I]?.contentBlocks||[];return me.push({type:"error",error:{name:se instanceof Error?se.name:null,message:se instanceof Error?se.message:String(se),stack:se instanceof Error?se.stack??null:null}}),o.messages[I]&&C({contentBlocks:[...me],isStreaming:!1}),{success:!1,reason:"error"}}finally{s.isAIThinking=!1,s.isLoadingSource=!1,s.currentToolStatus=null,s.isAborted=!1,s.currentRequestId="",s.currentAgentRequestId="",N(n)}}async function T(n){const s=U(n);if(!s||!s.isAIThinking)return!1;s.isAborted=!0,s.isAIThinking=!1,s.isLoadingSource=!1,s.currentToolStatus=null,ie(s,"aborted");const o=t.value?.chatKey===n?t.value.aiChatId??oe:ts(s),r=s.aiChatBuffers[o],a=r?r.messages[r.messages.length-1]:void 0;if(a&&a.role==="assistant"&&a.isStreaming&&(a.isStreaming=!1,a.content+=`
7
+
8
+ _(已停止生成)_`),s.currentAgentRequestId)try{await es().abort(s.currentAgentRequestId)}catch(w){console.error("[AI] 中止 Agent 请求失败:",w)}return s.currentRequestId="",s.currentAgentRequestId="",N(n),!0}async function j(){return t.value?T(t.value.chatKey):!1}return{sessionStates:e,activeTask:t,ensureSessionState:J,getSessionState:U,getActiveTaskState:V,applySessionAssistantSelection:_,selectAssistantForSession:Te,loadAIChat:Me,focusAIChat:ve,focusActiveTaskAIChat:Ne,resetToSelectorOnEnter:Pe,startNewAIChat:k,loadMoreSourceMessages:y,updateMaxMessages:R,sendMessage:de,editMessageAndRegenerate:Ve,stopGeneration:T,stopActiveTask:j}});export{ut as a,Js as b,Bs as c,dt as s,ft as u};
@@ -0,0 +1 @@
1
+ import{w as Y,j as y,g as c,r,p as d}from"./index-D5m0P4ss.js";const m=Symbol("AnnualSummaryTimeRange");function T(){const e=new Date().getFullYear(),l=Math.floor(Date.now()/1e3),n=r(null),t=r(e),u=r(0),o=r([e]),v=c(()=>({mode:"year",year:t.value})),f=c(()=>{const a=o.value.at(-1)??e;return{availableYears:o.value,fullRange:{start:Math.floor(new Date(a,0,1).getTime()/1e3),end:l}}});function g(a){const i=[...new Set([e,...a])].sort((A,S)=>S-A);i.join(",")!==o.value.join(",")&&(o.value=i)}function w(a){t.value=a,n.value=null,u.value++}const s={modelValue:n,componentKey:u,initialState:v,rangeSource:f,setAvailableYears:g,switchToYear:w};return d(m,s),s}function h(){const e=y(m);if(!e)throw new Error("Annual summary time range context is unavailable");return e}function R(e,l){return Y(e,(n,t)=>{t&&!n&&l()})}export{T as p,h as u,R as w};
@@ -0,0 +1 @@
1
+ import{a as v,a5 as C,o as f,i as b,an as y,n as g,l as w,s as k,g as h,b0 as _,ad as E,w as p,B as L,H as S,C as T,r as z,b1 as R,c as O,b2 as t}from"./index-D5m0P4ss.js";import{u as $,i as M,m as A,n as I,o as B,p as D,q as N,j as P,s as V,t as F,v as H,w as K,k as Y}from"./vendor-echarts-DfAMQxdr.js";const W={key:0,class:"insight-card-glow-center absolute bottom-0 left-1/3 h-[30%] w-[30%] rounded-full blur-[40px]"},j=v({__name:"CardDecoration",props:{theme:{}},setup(i){const e=i,a=C(),s=h(()=>e.theme!==void 0),o=h(()=>{const n=_(e.theme??a.insightCardTheme);return{"--insight-card-glow-start":n.startColor,"--insight-card-glow-end":n.endColor}});return(n,r)=>(f(),b("div",{class:g(["pointer-events-none absolute inset-0 overflow-hidden",{"card-decoration--vivid":s.value}]),style:y(o.value)},[w("div",{class:g(["insight-card-glow-start absolute rounded-full",s.value?"-left-[15%] -top-[15%] h-[60%] w-[60%] blur-[60px]":"-left-[20%] -top-[20%] h-[70%] w-[70%] blur-[80px]"])},null,2),w("div",{class:g(["insight-card-glow-end absolute rounded-full",s.value?"-right-[15%] top-[5%] h-[60%] w-[60%] blur-[60px]":"-right-[20%] top-[10%] h-[70%] w-[70%] blur-[80px]"])},null,2),s.value?(f(),b("div",W)):k("",!0)],6))}}),Q=E(j,[["__scopeId","data-v-17f2762c"]]),G=v({__name:"EChart",props:{option:{},height:{default:300},loading:{type:Boolean,default:!1},theme:{default:"auto"}},setup(i,{expose:e}){$([M,A,I,B,D,N,P,V,F,H,K]);const a=i,s=z();let o=null,n=null;const r=h(()=>typeof a.height=="number"?`${a.height}px`:a.height),d=h(()=>a.theme==="auto"?document.documentElement.classList.contains("dark"):a.theme==="dark");function l(){s.value&&(o&&o.dispose(),o=Y(s.value,d.value?"dark":void 0),o.setOption({backgroundColor:"transparent",...a.option}))}function u(){if(!o){l();return}o.setOption({backgroundColor:"transparent",...a.option},{notMerge:!0})}function c(){o?.resize()}p(()=>a.option,u,{deep:!0}),p(()=>a.height,()=>{setTimeout(()=>{o?.resize()},0)}),p(d,()=>{l()}),p(()=>a.loading,x=>{x?o?.showLoading("default",{text:"",spinnerRadius:12,lineWidth:2}):o?.hideLoading()});let m=null;return L(()=>{S(()=>{l()}),window.addEventListener("resize",c),s.value&&(n=new ResizeObserver(()=>c()),n.observe(s.value)),m=new MutationObserver(()=>{a.theme==="auto"&&l()}),m.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]})}),T(()=>{window.removeEventListener("resize",c),n?.disconnect(),m?.disconnect(),o?.dispose(),o=null}),e({getInstance:()=>o,resize:c}),(x,J)=>(f(),b("div",{ref_key:"chartRef",ref:s,style:y({height:r.value,width:"100%"})},null,4))}}),Z=v({__name:"EChartBar",props:{data:{},height:{default:200},mode:{default:"expanded"},horizontal:{type:Boolean,default:!1},gradient:{type:Boolean,default:!0},borderRadius:{default:4}},setup(i){const e=i,a=R(),s=h(()=>a.value==="dark"),o={type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"#ee4567"},{offset:1,color:"#f7758c"}]},n=h(()=>{const r=e.horizontal,d=e.mode==="compact",l=e.data.labels.length,u=s.value?"#a1a1aa":"#6b7280",c=s.value?"rgba(255, 255, 255, 0.08)":"#e5e7eb";return{tooltip:{trigger:"axis",confine:!0,extraCssText:"max-width: min(360px, 70vw); white-space: normal; word-break: break-word;",axisPointer:{type:"shadow"},backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:r?d?72:96:36,right:16,top:20,bottom:r?20:l>8?48:30,outerBoundsMode:"same"},xAxis:r?{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{type:"dashed",color:c}},axisLabel:{fontSize:11,color:u}}:{type:"category",data:e.data.labels,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:u,interval:"auto",rotate:!r&&l>8?28:0,hideOverlap:!0}},yAxis:r?{type:"category",data:e.data.labels,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:u,overflow:"truncate",width:d?70:110}}:{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{type:"dashed",color:c}},axisLabel:{fontSize:11,color:u}},series:[{type:"bar",data:e.data.values,itemStyle:{color:e.gradient?o:"#ee4567",borderRadius:e.borderRadius},barMaxWidth:40,emphasis:{itemStyle:{color:e.gradient?{...o,colorStops:[{offset:0,color:"#de335e"},{offset:1,color:"#ee4567"}]}:"#de335e"}}}]}});return(r,d)=>(f(),O(G,{option:n.value,height:i.height},null,8,["option","height"]))}}),q={[t.TEXT]:"text",[t.IMAGE]:"image",[t.VOICE]:"voice",[t.VIDEO]:"video",[t.FILE]:"file",[t.EMOJI]:"emoji",[t.LINK]:"link",[t.LOCATION]:"location",[t.RED_PACKET]:"redPacket",[t.TRANSFER]:"transfer",[t.POKE]:"poke",[t.CALL]:"call",[t.SHARE]:"share",[t.REPLY]:"reply",[t.FORWARD]:"forward",[t.CONTACT]:"contact",[t.SYSTEM]:"system",[t.RECALL]:"recall",[t.OTHER]:"other"};function ee(i,e){const a=q[i];return e&&a?e(`common.messageType.${a}`):e?e("common.messageType.unknown"):"未知"}export{Q as C,Z as _,G as a,ee as g};