dsh-film 0.5.3 → 0.6.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 (143) hide show
  1. package/apps/toonflow/build/ext/ext-media.umd.js +3 -3
  2. package/apps/toonflow/build/nodes/audioGenerationNode.umd.js +2 -2
  3. package/apps/toonflow/build/nodes/imageGenerationNode.umd.js +9 -9
  4. package/apps/toonflow/build/nodes/videoGenerationNode.umd.js +4 -4
  5. package/apps/toonflow/build/server/film.js +792 -792
  6. package/apps/toonflow/build/web/assets/{abnfDiagram-VCTEODGH-RhGAnAn6.js → abnfDiagram-VCTEODGH-BYcC5Nn5.js} +1 -1
  7. package/apps/toonflow/build/web/assets/{about-CG5Azud8.js → about-BTScDdjd.js} +3 -3
  8. package/apps/toonflow/build/web/assets/{addCustomProviderDialog-DJaPtoLQ.js → addCustomProviderDialog-B0J45_fP.js} +1 -1
  9. package/apps/toonflow/build/web/assets/{addCustomProviderDialog-qUCJ8G8c.js → addCustomProviderDialog-C0mNJ7H9.js} +3 -3
  10. package/apps/toonflow/build/web/assets/{addProviderDialog-Cz7uH_2G.js → addProviderDialog-BShk8git.js} +1 -1
  11. package/apps/toonflow/build/web/assets/{alert-BLKtm_mK-BxjzC0Zx.js → alert-BLKtm_mK-zuXaOUs8.js} +1 -1
  12. package/apps/toonflow/build/web/assets/{architectureDiagram-5GKGNRK7-zZ1dwzx4.js → architectureDiagram-5GKGNRK7-Dx1nSHrI.js} +1 -1
  13. package/apps/toonflow/build/web/assets/{blockDiagram-I7D4REHJ-BHX-Qe8v.js → blockDiagram-I7D4REHJ-D6nvfBlo.js} +1 -1
  14. package/apps/toonflow/build/web/assets/{button--KQ-t6Kp-By6RgXSr.js → button--KQ-t6Kp-BcHYzrl7.js} +1 -1
  15. package/apps/toonflow/build/web/assets/{c4Diagram-7LVT6UL2-Di0SQ5gm.js → c4Diagram-7LVT6UL2-DQLIx79E.js} +1 -1
  16. package/apps/toonflow/build/web/assets/{caret--fIGj8_a-COAoTyp4.js → caret--fIGj8_a-DptdqiwF.js} +1 -1
  17. package/apps/toonflow/build/web/assets/channel-DyMGbacZ.js +1 -0
  18. package/apps/toonflow/build/web/assets/{chunk-4HAMMTFA-DqUcxChH.js → chunk-4HAMMTFA-DSd4YQeM.js} +1 -1
  19. package/apps/toonflow/build/web/assets/{chunk-75Z2AOVW-DnnafXaP.js → chunk-75Z2AOVW-CSUTvual.js} +1 -1
  20. package/apps/toonflow/build/web/assets/{chunk-DU6HZSFF-BYDjy2a5.js → chunk-DU6HZSFF-DszB7ikg.js} +1 -1
  21. package/apps/toonflow/build/web/assets/{chunk-F27PBJKO-BJO9wMQg.js → chunk-F27PBJKO-DphsCRNz.js} +1 -1
  22. package/apps/toonflow/build/web/assets/{chunk-GMAD6QVW-es0xKAHj.js → chunk-GMAD6QVW-Ba7SnYoz.js} +1 -1
  23. package/apps/toonflow/build/web/assets/{chunk-GVQU2GXP-DE4xHY5C.js → chunk-GVQU2GXP-CqSQ-XTk.js} +1 -1
  24. package/apps/toonflow/build/web/assets/{chunk-IMKFNOWR-CjmyjwZJ.js → chunk-IMKFNOWR-CUd68MV_.js} +1 -1
  25. package/apps/toonflow/build/web/assets/{chunk-L3NEJ4N5-Dff56h-A.js → chunk-L3NEJ4N5-re2ZWCC1.js} +1 -1
  26. package/apps/toonflow/build/web/assets/{chunk-OSK3NFVY-Ban20yug.js → chunk-OSK3NFVY-DhJd2lHd.js} +1 -1
  27. package/apps/toonflow/build/web/assets/{chunk-P2QGCYS3-CYnn4R0Y.js → chunk-P2QGCYS3-Bx59GG5c.js} +1 -1
  28. package/apps/toonflow/build/web/assets/{chunk-POPQ4Y6H-ncIk6HPm.js → chunk-POPQ4Y6H-FxVD7EhC.js} +1 -1
  29. package/apps/toonflow/build/web/assets/{chunk-PWAF6VOD-D55WVdz7.js → chunk-PWAF6VOD-lcTolV7H.js} +1 -1
  30. package/apps/toonflow/build/web/assets/{chunk-SHT3W25Y-CMi86fzE.js → chunk-SHT3W25Y-CNf8ftUT.js} +1 -1
  31. package/apps/toonflow/build/web/assets/{chunk-SVP7TREG-CXEBC1ba.js → chunk-SVP7TREG-CBd2Mwfy.js} +1 -1
  32. package/apps/toonflow/build/web/assets/{chunk-TICWLB2K-B91fEJ2P.js → chunk-TICWLB2K-DYMcNKeS.js} +1 -1
  33. package/apps/toonflow/build/web/assets/{chunk-XXDRQBXY-DwjbANST.js → chunk-XXDRQBXY-CGbZ9ccO.js} +1 -1
  34. package/apps/toonflow/build/web/assets/classDiagram-ZZMXUADV-DKwbT9B8.js +1 -0
  35. package/apps/toonflow/build/web/assets/classDiagram-v2-VYDZK3BY-DKwbT9B8.js +1 -0
  36. package/apps/toonflow/build/web/assets/{code-TE80M-uF-BLCSiO6q.js → code-TE80M-uF-nBWFiays.js} +1 -1
  37. package/apps/toonflow/build/web/assets/{code-block-DHMOMJDf-CqQFV1LV.js → code-block-DHMOMJDf-5e5ky6kz.js} +2 -2
  38. package/apps/toonflow/build/web/assets/{color-picker-DdxIwVRW.js → color-picker-BDSGZuYK.js} +1 -1
  39. package/apps/toonflow/build/web/assets/{cose-bilkent-JH36ORCC-CTa9jrfF.js → cose-bilkent-JH36ORCC-_BQV-Nk9.js} +1 -1
  40. package/apps/toonflow/build/web/assets/{css-Bd99MQNe.js → css-BbKKziBc.js} +1 -1
  41. package/apps/toonflow/build/web/assets/{css-B2VALKb2.js → css-BlHmxxIa.js} +1 -1
  42. package/apps/toonflow/build/web/assets/{css-Ddg9Mrak.js → css-BzatOKqD.js} +3 -3
  43. package/apps/toonflow/build/web/assets/css-CIogEZdS.js +1 -0
  44. package/apps/toonflow/build/web/assets/{css-C0HzjUOi.js → css-DO5CRVB7.js} +1 -1
  45. package/apps/toonflow/build/web/assets/{cynefinDiagram-5FMLGOSQ-CCJtVs7F.js → cynefinDiagram-5FMLGOSQ-5pmX4-2e.js} +1 -1
  46. package/apps/toonflow/build/web/assets/{dagre-GXQ25YYZ-BYmoVqrz.js → dagre-GXQ25YYZ-BXP41h4Z.js} +1 -1
  47. package/apps/toonflow/build/web/assets/{developer-Bty3sIWd.js → developer-D9DrJwpL.js} +2 -2
  48. package/apps/toonflow/build/web/assets/{diagram-S7CK7UJ4-B0N7fm5m.js → diagram-S7CK7UJ4-BKoYY1nI.js} +1 -1
  49. package/apps/toonflow/build/web/assets/{diagram-UQ7AKVKN-CTrrDwnr.js → diagram-UQ7AKVKN-8x44k2cz.js} +1 -1
  50. package/apps/toonflow/build/web/assets/{diagram-VSXAHHWV-xra0nw-Z.js → diagram-VSXAHHWV-BBTvmnyP.js} +1 -1
  51. package/apps/toonflow/build/web/assets/{diagram-VX7I27RA-IQX_rJ2G.js → diagram-VX7I27RA-VCe6rvgb.js} +1 -1
  52. package/apps/toonflow/build/web/assets/{diagram-Z3DM3KII-C40rzZnZ.js → diagram-Z3DM3KII-flUfNMq6.js} +1 -1
  53. package/apps/toonflow/build/web/assets/{document-D5bUw7A-.js → document-CT2pTR9I.js} +2 -2
  54. package/apps/toonflow/build/web/assets/{dropdown-C1VVicv6-BwqRrETJ.js → dropdown-C1VVicv6-BZCaIzK0.js} +1 -1
  55. package/apps/toonflow/build/web/assets/{ebnfDiagram-PWID7BFC-BUoEUcGu.js → ebnfDiagram-PWID7BFC-DmPJSxhB.js} +1 -1
  56. package/apps/toonflow/build/web/assets/{editProviderDialog-B1fJa67Y.js → editProviderDialog-CVb96aC6.js} +2 -2
  57. package/apps/toonflow/build/web/assets/{erDiagram-RLTQ6QDP-BE4QrIgi.js → erDiagram-RLTQ6QDP-dt37n13K.js} +1 -1
  58. package/apps/toonflow/build/web/assets/{error-component-DtKM0hGV-DYReqvNK.js → error-component-DtKM0hGV-CM5GLop9.js} +1 -1
  59. package/apps/toonflow/build/web/assets/flowDiagram-HODETNUW-BdFvui-d.js +1 -0
  60. package/apps/toonflow/build/web/assets/{footnote-definition-DCmA6zZU-ANYKe-DE.js → footnote-definition-DCmA6zZU-BTJMuYhq.js} +1 -1
  61. package/apps/toonflow/build/web/assets/{footnote-reference-Bzs0VYi--DDMWm8hx.js → footnote-reference-Bzs0VYi--H-_QBQs1.js} +1 -1
  62. package/apps/toonflow/build/web/assets/{formCreate-CJMeoVLF.js → formCreate-BuCixryX.js} +1 -1
  63. package/apps/toonflow/build/web/assets/{ganttDiagram-EL5Y4UJY-CNIGYI2W.js → ganttDiagram-EL5Y4UJY-DWNb2s0p.js} +1 -1
  64. package/apps/toonflow/build/web/assets/{general-D4ZLIF5I.js → general-Zp54VBYd.js} +1 -1
  65. package/apps/toonflow/build/web/assets/{gitGraphDiagram-WWUBYQGX-BR2Iau4Z.js → gitGraphDiagram-WWUBYQGX-Bg_ehdSP.js} +1 -1
  66. package/apps/toonflow/build/web/assets/{hello-CEIqLzvD.js → hello-_Csy47ql.js} +2 -2
  67. package/apps/toonflow/build/web/assets/{home-CEM_wJGG.js → home-xL_STq0G.js} +1 -1
  68. package/apps/toonflow/build/web/assets/{html-wOlXXuRb-Cv8Owfho.js → html-wOlXXuRb-DaqvlxrK.js} +1 -1
  69. package/apps/toonflow/build/web/assets/{icon-B9ufy3Wq-CAxAySDd.js → icon-B9ufy3Wq-Cv6VsDDV.js} +1 -1
  70. package/apps/toonflow/build/web/assets/{image-5kVEigfx-CFkJOrQ5.js → image-5kVEigfx-CuTYjNs6.js} +1 -1
  71. package/apps/toonflow/build/web/assets/{image-BTIAvDIK.js → image-BvARkGsh.js} +1 -1
  72. package/apps/toonflow/build/web/assets/{image-DacVk3M4-DwLEgDli.js → image-DacVk3M4-_CipJ0n1.js} +1 -1
  73. package/apps/toonflow/build/web/assets/{index-B2gWaLwQ.js → index-DkjmNKoR.js} +3 -3
  74. package/apps/toonflow/build/web/assets/{infoDiagram-27XIBGKW-CXu7xgVi.js → infoDiagram-27XIBGKW-Uhg8NjbX.js} +1 -1
  75. package/apps/toonflow/build/web/assets/{inline-math-DXsZkcD9-C4b2iCe3.js → inline-math-DXsZkcD9-yi1Ztao9.js} +1 -1
  76. package/apps/toonflow/build/web/assets/{input-tag-0HyYZG5J.js → input-tag-C5c4KiUi.js} +1 -1
  77. package/apps/toonflow/build/web/assets/{ishikawaDiagram-5VMMS53U-DrvyyYGJ.js → ishikawaDiagram-5VMMS53U-CPI2GXZ9.js} +1 -1
  78. package/apps/toonflow/build/web/assets/{journeyDiagram-3NMN7TZE-BCy3h0Lk.js → journeyDiagram-3NMN7TZE-ySnm62hQ.js} +1 -1
  79. package/apps/toonflow/build/web/assets/{kanban-definition-UXKFOSKX-WTdDnA-2.js → kanban-definition-UXKFOSKX-B66q1tK_.js} +1 -1
  80. package/apps/toonflow/build/web/assets/{languageModel-BLRfxLtk.js → languageModel-Bo4Z9Bgg.js} +2 -2
  81. package/apps/toonflow/build/web/assets/{line-DZtoJMMD.js → line-M9jakFtU.js} +1 -1
  82. package/apps/toonflow/build/web/assets/{linear-DqY_ECbX.js → linear-Bv7PUcb5.js} +1 -1
  83. package/apps/toonflow/build/web/assets/{link-B4i80GlG-DJ582nOV.js → link-B4i80GlG-BXZ7KKyT.js} +1 -1
  84. package/apps/toonflow/build/web/assets/{math-HWaHchtn-BramK43U.js → math-HWaHchtn-B_jdYab6.js} +1 -1
  85. package/apps/toonflow/build/web/assets/{mcp-CrX2GmED.js → mcp-kmhKwYmN.js} +1 -1
  86. package/apps/toonflow/build/web/assets/{mediaModel-DOF_UQCv.js → mediaModel-CWfQoF2G.js} +2 -2
  87. package/apps/toonflow/build/web/assets/{mermaid-CMetGjR8-DzXP7WAI.js → mermaid-CMetGjR8-F_hrrGCO.js} +1 -1
  88. package/apps/toonflow/build/web/assets/{mermaid.core-DZMIxVnl.js → mermaid.core-DcUpBwkH.js} +4 -4
  89. package/apps/toonflow/build/web/assets/{messageMarkdown-DNvKdA3v.js → messageMarkdown-DMY2GADY.js} +4 -4
  90. package/apps/toonflow/build/web/assets/{mindmap-definition-YA3MSWOX-CUewCRBi.js → mindmap-definition-YA3MSWOX-B8Cq3sKq.js} +1 -1
  91. package/apps/toonflow/build/web/assets/{modal-_s_8RqAI-UE6TKhM5.js → modal-_s_8RqAI-By87H326.js} +1 -1
  92. package/apps/toonflow/build/web/assets/{modelEditorDialog-BpsiwSYt.js → modelEditorDialog-CZS1RYIE.js} +1 -1
  93. package/apps/toonflow/build/web/assets/{opening-Nc-sWTQG.js → opening-p7q5sMV_.js} +1 -1
  94. package/apps/toonflow/build/web/assets/{pegDiagram-XKGWAZYB-DeBG6khq.js → pegDiagram-XKGWAZYB-zDk3_KJf.js} +1 -1
  95. package/apps/toonflow/build/web/assets/{pieDiagram-E7YTZNPT-BEJFCZB5.js → pieDiagram-E7YTZNPT-DYNOJRhg.js} +1 -1
  96. package/apps/toonflow/build/web/assets/{pluginMarket-PsB0dNU0.js → pluginMarket-ByDFGIKy.js} +2 -2
  97. package/apps/toonflow/build/web/assets/{privacy-96RKyGb5.js → privacy-DyUaK50I.js} +1 -1
  98. package/apps/toonflow/build/web/assets/{providerAgentDialog-CX4KIMHq.js → providerAgentDialog-XSqe6jKf.js} +1 -1
  99. package/apps/toonflow/build/web/assets/{providerDebugDialog-B3ZBD3Vc.js → providerDebugDialog-MaZF466f.js} +1 -1
  100. package/apps/toonflow/build/web/assets/{quadrantDiagram-AXDQQJYC-WqqB7WXu.js → quadrantDiagram-AXDQQJYC-CyipJZ6I.js} +1 -1
  101. package/apps/toonflow/build/web/assets/{railroadDiagram-O6MQD6OU-DVPWvml7.js → railroadDiagram-O6MQD6OU-By1oB_jG.js} +1 -1
  102. package/apps/toonflow/build/web/assets/{replyStream-CkBC9dko.js → replyStream-BCACp6-a.js} +1 -1
  103. package/apps/toonflow/build/web/assets/{requirementDiagram-BXWQKSXE-DB_FDS0u.js → requirementDiagram-BXWQKSXE-BR4siEWc.js} +1 -1
  104. package/apps/toonflow/build/web/assets/{sankeyDiagram-P5KCCOFB-BNAUdSOL.js → sankeyDiagram-P5KCCOFB-Zs4cVqN_.js} +1 -1
  105. package/apps/toonflow/build/web/assets/{segmented-lXL-xmY0-BSNEU2ss.js → segmented-lXL-xmY0-BtHPWOs_.js} +1 -1
  106. package/apps/toonflow/build/web/assets/{sequenceDiagram-WJ2MYXX4-CgVu9HtE.js → sequenceDiagram-WJ2MYXX4-ivLD9-s3.js} +1 -1
  107. package/apps/toonflow/build/web/assets/{settings-DBtP3Sd3.js → settings-C-jGkjPy.js} +2 -2
  108. package/apps/toonflow/build/web/assets/{slider-EylRwEuS.js → slider-A2xmbZhU.js} +1 -1
  109. package/apps/toonflow/build/web/assets/{src-Dg5VDKGt.js → src-CrEdA6ga.js} +1 -1
  110. package/apps/toonflow/build/web/assets/{stateDiagram-D77RDMKH-Br5PWH87.js → stateDiagram-D77RDMKH-CV5r4CuV.js} +1 -1
  111. package/apps/toonflow/build/web/assets/stateDiagram-v2-MP3YSRHH-DU76EkQp.js +1 -0
  112. package/apps/toonflow/build/web/assets/{swimlanes-42K2YHIH-DBbAzQHo.js → swimlanes-42K2YHIH-lR26v_kC.js} +1 -1
  113. package/apps/toonflow/build/web/assets/swimlanesDiagram-VR7AAH4N-CRCGethi.js +8 -0
  114. package/apps/toonflow/build/web/assets/{systemPromptDialog-DD2ZJGK2.js → systemPromptDialog-3xfouQCw.js} +1 -1
  115. package/apps/toonflow/build/web/assets/{table-DoalR-BE-B8UqIQ6i.js → table-DoalR-BE-fVm5PIdJ.js} +1 -1
  116. package/apps/toonflow/build/web/assets/{table-v2-CohE61SB.js → table-v2-DTcjJl76.js} +1 -1
  117. package/apps/toonflow/build/web/assets/{tfAccount-DW4jQYGg.js → tfAccount-ur0Bx70S.js} +2 -2
  118. package/apps/toonflow/build/web/assets/{tfRechargeDialog-DEeGb1hF.js → tfRechargeDialog-BwaaQa3s.js} +1 -1
  119. package/apps/toonflow/build/web/assets/{throttle-BO1J-yC3.js → throttle-srY7LhSD.js} +1 -1
  120. package/apps/toonflow/build/web/assets/{timeline-definition-24CTP7MA-n-ImtEs3.js → timeline-definition-24CTP7MA-DG5uL-_-.js} +1 -1
  121. package/apps/toonflow/build/web/assets/{tiptapHost-DWs2RP2d.js → tiptapHost-CdHdfM7J.js} +1 -1
  122. package/apps/toonflow/build/web/assets/{tooltip-Dqytx65e-DFWGByFe.js → tooltip-Dqytx65e-xS6EFvGE.js} +1 -1
  123. package/apps/toonflow/build/web/assets/{ui-oYJGTo-H.js → ui-CYky-dLX.js} +1 -1
  124. package/apps/toonflow/build/web/assets/{vennDiagram-4TSXK5OY-Bz-oAsvT.js → vennDiagram-4TSXK5OY-CeoaUSXR.js} +1 -1
  125. package/apps/toonflow/build/web/assets/{wardleyDiagram-VM6X3IG4-P3aFagHV.js → wardleyDiagram-VM6X3IG4-DXDElELN.js} +1 -1
  126. package/apps/toonflow/build/web/assets/{workspace-B9lHMRgK.js → workspace-Dloa1_cx.js} +4 -4
  127. package/apps/toonflow/build/web/assets/{workspaceFiles-CTUc31AG.js → workspaceFiles-D8LZx7e-.js} +1 -1
  128. package/apps/toonflow/build/web/assets/{workspacePicker-BPBcvZtO.js → workspacePicker-BqLly6Ic.js} +1 -1
  129. package/apps/toonflow/build/web/assets/{xychartDiagram-S5SC5T6Z-BsyieKDK.js → xychartDiagram-S5SC5T6Z-DmUD8Oyt.js} +1 -1
  130. package/apps/toonflow/build/web/assets/{yaml-BRD7Ck1_-Cb9uqrvI.js → yaml-BRD7Ck1_-bn2kZow7.js} +1 -1
  131. package/apps/toonflow/build/web/assets/{zoom-container-1u9Y9848-BbnbHnhl.js → zoom-container-1u9Y9848-DIS0cb6X.js} +1 -1
  132. package/apps/toonflow/build/web/index.html +1 -1
  133. package/client/client.js +2 -1
  134. package/lib/contracts.d.ts +91 -0
  135. package/lib/index.js +18 -2
  136. package/package.json +1 -1
  137. package/apps/toonflow/build/web/assets/channel-DBTFjsEG.js +0 -1
  138. package/apps/toonflow/build/web/assets/classDiagram-ZZMXUADV-D3rcQzPk.js +0 -1
  139. package/apps/toonflow/build/web/assets/classDiagram-v2-VYDZK3BY-D3rcQzPk.js +0 -1
  140. package/apps/toonflow/build/web/assets/css-DVOBTSge.js +0 -1
  141. package/apps/toonflow/build/web/assets/flowDiagram-HODETNUW-HFaF43Lg.js +0 -1
  142. package/apps/toonflow/build/web/assets/stateDiagram-v2-MP3YSRHH-BR1LcVy7.js +0 -1
  143. package/apps/toonflow/build/web/assets/swimlanesDiagram-VR7AAH4N-BHdY8HfA.js +0 -8
@@ -1,3 +1,3 @@
1
- /*! toonflowExt:{"id":"ext-media","displayName":"音视频","icon":"data:image\u002fsvg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%234e9fff%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%223%22%20width%3D%2218%22%20height%3D%2218%22%20rx%3D%223%22%2F%3E%3Cpath%20d%3D%22m10%208%206%204-6%204z%22%2F%3E%3C%2Fsvg%3E","extensions":["mp4","mp3","wav","pcm","opus"],"resourceKind":"file","configRules":[],"version":"0.1.0","readme":"# 音视频预览\r\n\r\n在文档页打开 MP4、MP3、WAV、PCM 和 Opus,后缀不区分大小写。提供播放、暂停、进度和音量控件,视频支持全屏;隐藏标签时暂停播放。\r\n\r\nMP4、MP3、WAV 和 Ogg 容器的 Opus 使用客户端原生解码能力。不支持的编码或损坏文件会显示播放失败提示。\r\n\r\n原始 PCM 默认使用 24000 Hz、单声道、16 位小端整数,可在预览顶部选择实际采样率、单\u002f双声道、8 位无符号或 16\u002f24\u002f32 位整数、32 位浮点及大小端。多声道数据须交错排列,数据必须包含完整采样帧。有符号和浮点格式转换为 16 位 WAV 供播放,非有限浮点值按静音处理。预览只在内存中转换,不改写原文件。\r\n\r\n```sh\r\nbun run --cwd packages\u002fext\u002fmedia typecheck\r\nbun run --cwd packages\u002fext\u002fmedia build --mode development\r\n```\r\n\r\n开发构建同步到 `data\u002fext\u002fext-media.umd.js`;生产构建输出到 `build\u002fext\u002fext-media.umd.js`,随现有扩展打包流程发布。\r\n"} */
2
- if(typeof document!=="undefined"){let style=document.getElementById("toonflowExt-ext-media");if(!style){style=document.createElement("style");style.id="toonflowExt-ext-media";document.head.appendChild(style)}style.textContent=".mediaDocument[data-v-37919c44]{flex-direction:column;width:100%;height:100%;min-height:0;display:flex}.mediaDocument .pcmToolbar[data-v-37919c44]{border-bottom:1px solid var(--el-border-color-lighter);flex-wrap:wrap;align-items:center;gap:12px;padding:12px 16px;display:flex}.mediaDocument .pcmToolbar label[data-v-37919c44]{color:var(--el-text-color-primary);align-items:center;gap:8px;font-size:.75rem;display:flex}.mediaDocument .pcmToolbar label .el-select[data-v-37919c44]{width:170px}.mediaDocument .pcmToolbar p[data-v-37919c44]{color:var(--el-text-color-secondary);flex-basis:100%;margin:0;font-size:.75rem}.mediaDocument .mediaPreview[data-v-37919c44]{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;min-height:0;padding:24px;display:flex;overflow:auto}.mediaDocument .mediaPreview video[data-v-37919c44]{background:#000;max-width:100%;max-height:100%;display:block}.mediaDocument .mediaPreview audio[data-v-37919c44]{flex-shrink:0;width:min(100%,640px)}.mediaDocument .mediaPreview .audioLabel[data-v-37919c44]{overflow-wrap:anywhere;max-width:100%;color:var(--el-text-color-primary);margin:0}.mediaDocument .mediaPreview .mediaStatus[data-v-37919c44]{color:var(--el-text-color-secondary);font-size:.875rem}.mediaDocument .mediaPreview .mediaError[data-v-37919c44]{overflow-wrap:anywhere;max-width:640px;color:var(--el-color-danger);font-size:.875rem}\n/*$vite$:1*/"}
3
- (function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t(require("vue"),require("element-plus")):typeof define==`function`&&define.amd?define([`vue`,`element-plus`],t):(e=typeof globalThis<`u`?globalThis:e||self,e.toonflowExts=e.toonflowExts||{},e.toonflowExts[`ext-media`]=t(e.toonflowExtHost.vue,e.toonflowExtHost.elementPlus))})(this,function(e,t){var n=Object.defineProperty,r=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},i=(e,t)=>{let r={};for(var i in e)n(r,i,{get:e[i],enumerable:!0});return t||n(r,Symbol.toStringTag,{value:`Module`}),r};function a(e){if(typeof e.id!=`string`||e.id.length>96||!/^ext-[a-z][a-zA-Z0-9]*$/.test(e.id))throw Error(`扩展 ID 必须为 ext- 加小驼峰名称,最多 96 个字符:${e.id}`);if(typeof e.displayName!=`string`||!e.displayName.trim())throw Error(`扩展显示名不能为空`);if(e.icon!==void 0){let t=e.icon;if(typeof t!=`string`||t&&!/^data:image\/(?:svg\+xml|png|jpeg|webp|gif|avif)(?:;[^,]*)?,/i.test(t)&&!(URL.canParse(t)&&[`http:`,`https:`].includes(new URL(t).protocol)))throw Error(`扩展图标必须是 HTTP、HTTPS 或图片 data URL`)}if(e.configRules!==void 0&&(!Array.isArray(e.configRules)||e.configRules.length>100))throw Error(`扩展配置规则必须为最多 100 项的表单规则数组`);if(e.resourceKind!==`file`&&e.resourceKind!==`canvasNode`)throw Error(`扩展资源类型无效`);if(e.text!==void 0&&typeof e.text!=`boolean`)throw Error(`扩展文本标记必须为布尔值`);if(!Array.isArray(e.extensions)||e.extensions.some(e=>typeof e!=`string`||!/^[a-z0-9]+$/.test(e)))throw Error(`文件后缀必须是不带点的小写字母或数字`);if(e.resourceKind===`file`&&!e.extensions.length)throw Error(`文件扩展至少需要一个后缀`);if(new Set(e.extensions).size!==e.extensions.length)throw Error(`文件后缀不能重复`);if(typeof e.load!=`function`)throw Error(`扩展必须提供组件加载函数`);return e}var o={id:`ext-media`,displayName:`音视频`,icon:`data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%234e9fff%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%223%22%20width%3D%2218%22%20height%3D%2218%22%20rx%3D%223%22%2F%3E%3Cpath%20d%3D%22m10%208%206%204-6%204z%22%2F%3E%3C%2Fsvg%3E`,extensions:[`mp4`,`mp3`,`wav`,`pcm`,`opus`],resourceKind:`file`};function s(e,t){let{sampleRate:n,channels:r,format:i}=t,a=c[i];if(typeof i!=`string`||!Number.isInteger(a))throw RangeError(`不支持的 PCM 采样格式`);if(!Number.isInteger(n)||n<1||n>4294967295)throw RangeError(`PCM 采样率必须为正整数`);let o=i===`u8`?8:16,s=r*o/8;if(!Number.isInteger(r)||r<1||s>65535)throw RangeError(`PCM 声道数超出 WAV 范围`);let l=n*s;if(l>4294967295)throw RangeError(`PCM 字节率超出 WAV 范围`);if(!(e instanceof ArrayBuffer)||!e.byteLength||e.byteLength%(r*a))throw RangeError(`PCM 数据为空或包含不完整采样帧`);let u=e.byteLength/a*o/8,d=u%2;if(36+u+d>4294967295)throw RangeError(`PCM 数据超出 RIFF 4 GiB 范围`);let f=new ArrayBuffer(44+u+d),p=new DataView(f);if(p.setUint32(0,1380533830),p.setUint32(4,36+u+d,!0),p.setUint32(8,1463899717),p.setUint32(12,1718449184),p.setUint32(16,16,!0),p.setUint16(20,1,!0),p.setUint16(22,r,!0),p.setUint32(24,n,!0),p.setUint32(28,l,!0),p.setUint16(32,s,!0),p.setUint16(34,o,!0),p.setUint32(36,1684108385),p.setUint32(40,u,!0),i===`u8`||i===`s16le`)return new Uint8Array(f,44,u).set(new Uint8Array(e)),new Blob([f],{type:`audio/wav`});let m=new DataView(e),h=i.endsWith(`le`);for(let t=0,n=44;t<e.byteLength;t+=a,n+=2){let e;if(i.startsWith(`f32`)){let n=m.getFloat32(t,h),r=Number.isFinite(n)?Math.max(-1,Math.min(1,n)):0;e=Math.round(r*(r<0?32768:32767))}else if(a===2)e=m.getInt16(t,h);else if(a===3){let n=m.getUint8(t+(h?0:2)),r=m.getUint8(t+1),i=m.getUint8(t+(h?2:0));e=(n|r<<8|i<<16)<<8>>16}else e=m.getInt32(t,h)>>16;p.setInt16(n,e,!0)}return new Blob([f],{type:`audio/wav`})}var c,l=r((()=>{c={u8:1,s16le:2,s24le:3,s32le:4,f32le:4,s16be:2,s24be:3,s32be:4,f32be:4}})),u,d,f,p,m,h,g=r((()=>{l(),u={class:`mediaDocument`},d=[`aria-busy`],f={key:0,class:`mediaStatus`,role:`status`},p={key:1,class:`mediaError`,role:`alert`},m={key:0,class:`audioLabel`},h=(0,e.defineComponent)({__name:`index`,props:{context:{}},setup(n){let r=n,i=(0,e.computed)(()=>r.context.resource.path.split(`.`).at(-1)?.toLowerCase()),a=(0,e.computed)(()=>i.value===`mp4`),o=(0,e.computed)(()=>i.value===`pcm`),c=(0,e.ref)(),l=(0,e.ref)(``),h=(0,e.ref)(``),g=(0,e.shallowRef)(),_=(0,e.computed)(()=>o.value?h.value:l.value),v=(0,e.ref)(!1),y=(0,e.ref)(``),b=(0,e.ref)(``),x=(0,e.ref)(``),S=(0,e.computed)(()=>y.value||x.value||b.value),C=(0,e.ref)(24e3),w=(0,e.ref)(1),T=(0,e.ref)(`s16le`),E=[{value:`u8`,label:`8 位无符号`},{value:`s16le`,label:`16 位整数(小端)`},{value:`s24le`,label:`24 位整数(小端)`},{value:`s32le`,label:`32 位整数(小端)`},{value:`f32le`,label:`32 位浮点(小端)`},{value:`s16be`,label:`16 位整数(大端)`},{value:`s24be`,label:`24 位整数(大端)`},{value:`s32be`,label:`32 位整数(大端)`},{value:`f32be`,label:`32 位浮点(大端)`}];function D(){c.value?.pause(),c.value?.removeAttribute(`src`),c.value?.load()}function O(){b.value=`无法播放:${r.context.resource.label}。文件可能损坏,或当前客户端不支持其编码。`}return(0,e.watch)(()=>r.context.active,e=>{e||c.value?.pause()}),(0,e.onBeforeUnmount)(D),(0,e.watch)(()=>[r.context.resource.directory,r.context.resource.path],async(e,t,n)=>{let s=!1,c;n(()=>{s=!0,D(),c?.release()}),D(),l.value=``,g.value=void 0,y.value=``,b.value=``,v.value=!0;try{let e=r.context.resource.path;if(o.value){let t=await r.context.files.read(e);s||(g.value=t)}else{let t=a.value?`video/mp4`:i.value===`mp3`?`audio/mpeg`:i.value===`opus`?`audio/ogg`:`audio/wav`;c=r.context.files.acquireUrl(e,t);let n=await c.url;s||(l.value=n)}}catch(e){s||(y.value=e instanceof Error?e.message:`媒体读取失败`)}finally{s||(v.value=!1)}},{immediate:!0}),(0,e.watch)([g,C,w,T],([e,t,n,r],i,a)=>{if(D(),h.value=``,x.value=``,b.value=``,e)try{let i=URL.createObjectURL(s(e,{sampleRate:t,channels:n,format:r}));h.value=i,a(()=>{D(),URL.revokeObjectURL(i)})}catch(e){x.value=e instanceof Error?e.message:`PCM 预览失败`}}),(r,i)=>((0,e.openBlock)(),(0,e.createElementBlock)(`section`,u,[o.value?((0,e.openBlock)(),(0,e.createElementBlock)(`form`,{key:0,class:`pcmToolbar`,onSubmit:i[3]||=(0,e.withModifiers)(()=>{},[`prevent`])},[(0,e.createElementVNode)(`label`,null,[i[4]||=(0,e.createTextVNode)(`采样率(Hz)`,-1),(0,e.createVNode)((0,e.unref)(t.ElInputNumber),{modelValue:C.value,"onUpdate:modelValue":i[0]||=e=>C.value=e,min:1,max:384e3,step:1e3,size:`small`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`label`,null,[i[5]||=(0,e.createTextVNode)(`声道`,-1),(0,e.createVNode)((0,e.unref)(t.ElSelect),{modelValue:w.value,"onUpdate:modelValue":i[1]||=e=>w.value=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(t.ElOption),{label:`单声道`,value:1}),(0,e.createVNode)((0,e.unref)(t.ElOption),{label:`双声道`,value:2})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`label`,null,[i[6]||=(0,e.createTextVNode)(`采样格式`,-1),(0,e.createVNode)((0,e.unref)(t.ElSelect),{modelValue:T.value,"onUpdate:modelValue":i[2]||=e=>T.value=e,size:`small`},{default:(0,e.withCtx)(()=>[((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(E,n=>(0,e.createVNode)((0,e.unref)(t.ElOption),{key:n.value,label:n.label,value:n.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`])]),i[7]||=(0,e.createElementVNode)(`p`,null,`PCM 不包含格式信息,请按文件实际参数设置。多声道数据按交错排列读取。`,-1)],32)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:`mediaPreview`,"aria-busy":v.value},[v.value?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,f,`正在读取…`)):S.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,p,(0,e.toDisplayString)(S.value),1)):_.value?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:2},[a.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`p`,m,(0,e.toDisplayString)(n.context.resource.label),1)),((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(a.value?`video`:`audio`),{key:_.value,ref_key:`player`,ref:c,src:_.value,controls:``,playsinline:``,preload:`metadata`,"aria-label":n.context.resource.label,onError:O},null,40,[`src`,`aria-label`]))],64)):(0,e.createCommentVNode)(``,!0)],8,d)]))}})})),_=r((()=>{})),v,y=r((()=>{v=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n}})),b=i({default:()=>x}),x,S=r((()=>{g(),g(),_(),y(),x=v(h,[[`__scopeId`,`data-v-37919c44`]])}));return a({...o,load:()=>Promise.resolve().then(()=>(S(),b))})});
1
+ /*! toonflowExt:{"id":"ext-media","displayName":"音视频","icon":"data:image\u002fsvg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%234e9fff%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%223%22%20width%3D%2218%22%20height%3D%2218%22%20rx%3D%223%22%2F%3E%3Cpath%20d%3D%22m10%208%206%204-6%204z%22%2F%3E%3C%2Fsvg%3E","extensions":["mp4","m4v","mov","webm","mp3","m4a","aac","wav","ogg","opus","flac","pcm"],"resourceKind":"file","configRules":[],"version":"0.2.0","readme":"# 音视频预览\r\n\r\n在文档页打开视频 MP4、M4V、MOV、WebM,音频 MP3、M4A(Film 音频节点写出的 AAC)、AAC、WAV、Ogg、Opus、FLAC 和 PCM,后缀不区分大小写。提供播放、暂停、进度和音量控件,视频支持全屏;隐藏标签时暂停播放。\r\n\r\n除 PCM 外都使用客户端原生解码能力(MOV 需为浏览器支持的编码,例如 H.264\u002fAAC)。不支持的编码或损坏文件会显示播放失败提示。\r\n\r\n原始 PCM 默认使用 24000 Hz、单声道、16 位小端整数,可在预览顶部选择实际采样率、单\u002f双声道、8 位无符号或 16\u002f24\u002f32 位整数、32 位浮点及大小端。多声道数据须交错排列,数据必须包含完整采样帧。有符号和浮点格式转换为 16 位 WAV 供播放,非有限浮点值按静音处理。预览只在内存中转换,不改写原文件。\r\n\r\n```sh\r\nbun run --cwd packages\u002fext\u002fmedia typecheck\r\nbun run --cwd packages\u002fext\u002fmedia build --mode development\r\n```\r\n\r\n开发构建同步到 `data\u002fext\u002fext-media.umd.js`;生产构建输出到 `build\u002fext\u002fext-media.umd.js`,随现有扩展打包流程发布。\r\n"} */
2
+ if(typeof document!=="undefined"){let style=document.getElementById("toonflowExt-ext-media");if(!style){style=document.createElement("style");style.id="toonflowExt-ext-media";document.head.appendChild(style)}style.textContent=".mediaDocument[data-v-13cc5fbb]{flex-direction:column;width:100%;height:100%;min-height:0;display:flex}.mediaDocument .pcmToolbar[data-v-13cc5fbb]{border-bottom:1px solid var(--el-border-color-lighter);flex-wrap:wrap;align-items:center;gap:12px;padding:12px 16px;display:flex}.mediaDocument .pcmToolbar label[data-v-13cc5fbb]{color:var(--el-text-color-primary);align-items:center;gap:8px;font-size:.75rem;display:flex}.mediaDocument .pcmToolbar label .el-select[data-v-13cc5fbb]{width:170px}.mediaDocument .pcmToolbar p[data-v-13cc5fbb]{color:var(--el-text-color-secondary);flex-basis:100%;margin:0;font-size:.75rem}.mediaDocument .mediaPreview[data-v-13cc5fbb]{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;min-height:0;padding:24px;display:flex;overflow:auto}.mediaDocument .mediaPreview video[data-v-13cc5fbb]{background:#000;max-width:100%;max-height:100%;display:block}.mediaDocument .mediaPreview audio[data-v-13cc5fbb]{flex-shrink:0;width:min(100%,640px)}.mediaDocument .mediaPreview .audioLabel[data-v-13cc5fbb]{overflow-wrap:anywhere;max-width:100%;color:var(--el-text-color-primary);margin:0}.mediaDocument .mediaPreview .mediaStatus[data-v-13cc5fbb]{color:var(--el-text-color-secondary);font-size:.875rem}.mediaDocument .mediaPreview .mediaError[data-v-13cc5fbb]{overflow-wrap:anywhere;max-width:640px;color:var(--el-color-danger);font-size:.875rem}\n/*$vite$:1*/"}
3
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t(require("vue"),require("element-plus")):typeof define==`function`&&define.amd?define([`vue`,`element-plus`],t):(e=typeof globalThis<`u`?globalThis:e||self,e.toonflowExts=e.toonflowExts||{},e.toonflowExts[`ext-media`]=t(e.toonflowExtHost.vue,e.toonflowExtHost.elementPlus))})(this,function(e,t){var n=Object.defineProperty,r=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},i=(e,t)=>{let r={};for(var i in e)n(r,i,{get:e[i],enumerable:!0});return t||n(r,Symbol.toStringTag,{value:`Module`}),r};function a(e){if(typeof e.id!=`string`||e.id.length>96||!/^ext-[a-z][a-zA-Z0-9]*$/.test(e.id))throw Error(`扩展 ID 必须为 ext- 加小驼峰名称,最多 96 个字符:${e.id}`);if(typeof e.displayName!=`string`||!e.displayName.trim())throw Error(`扩展显示名不能为空`);if(e.icon!==void 0){let t=e.icon;if(typeof t!=`string`||t&&!/^data:image\/(?:svg\+xml|png|jpeg|webp|gif|avif)(?:;[^,]*)?,/i.test(t)&&!(URL.canParse(t)&&[`http:`,`https:`].includes(new URL(t).protocol)))throw Error(`扩展图标必须是 HTTP、HTTPS 或图片 data URL`)}if(e.configRules!==void 0&&(!Array.isArray(e.configRules)||e.configRules.length>100))throw Error(`扩展配置规则必须为最多 100 项的表单规则数组`);if(e.resourceKind!==`file`&&e.resourceKind!==`canvasNode`)throw Error(`扩展资源类型无效`);if(e.text!==void 0&&typeof e.text!=`boolean`)throw Error(`扩展文本标记必须为布尔值`);if(!Array.isArray(e.extensions)||e.extensions.some(e=>typeof e!=`string`||!/^[a-z0-9]+$/.test(e)))throw Error(`文件后缀必须是不带点的小写字母或数字`);if(e.resourceKind===`file`&&!e.extensions.length)throw Error(`文件扩展至少需要一个后缀`);if(new Set(e.extensions).size!==e.extensions.length)throw Error(`文件后缀不能重复`);if(typeof e.load!=`function`)throw Error(`扩展必须提供组件加载函数`);return e}function o(e){let t=e.split(/[\\/]/).at(-1)?.split(`.`)??[];return t.length>1?s[t.at(-1).toLowerCase()]:void 0}var s,c=r((()=>{s={mp4:{element:`video`,mimeType:`video/mp4`},m4v:{element:`video`,mimeType:`video/mp4`},mov:{element:`video`,mimeType:`video/quicktime`},webm:{element:`video`,mimeType:`video/webm`},mp3:{element:`audio`,mimeType:`audio/mpeg`},m4a:{element:`audio`,mimeType:`audio/mp4`},aac:{element:`audio`,mimeType:`audio/aac`},wav:{element:`audio`,mimeType:`audio/wav`},ogg:{element:`audio`,mimeType:`audio/ogg`},opus:{element:`audio`,mimeType:`audio/ogg`},flac:{element:`audio`,mimeType:`audio/flac`},pcm:{element:`audio`,mimeType:`audio/wav`}}}));c();var l={id:`ext-media`,displayName:`音视频`,icon:`data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%234e9fff%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%223%22%20width%3D%2218%22%20height%3D%2218%22%20rx%3D%223%22%2F%3E%3Cpath%20d%3D%22m10%208%206%204-6%204z%22%2F%3E%3C%2Fsvg%3E`,extensions:Object.keys(s),resourceKind:`file`};function u(e,t){let{sampleRate:n,channels:r,format:i}=t,a=d[i];if(typeof i!=`string`||!Number.isInteger(a))throw RangeError(`不支持的 PCM 采样格式`);if(!Number.isInteger(n)||n<1||n>4294967295)throw RangeError(`PCM 采样率必须为正整数`);let o=i===`u8`?8:16,s=r*o/8;if(!Number.isInteger(r)||r<1||s>65535)throw RangeError(`PCM 声道数超出 WAV 范围`);let c=n*s;if(c>4294967295)throw RangeError(`PCM 字节率超出 WAV 范围`);if(!(e instanceof ArrayBuffer)||!e.byteLength||e.byteLength%(r*a))throw RangeError(`PCM 数据为空或包含不完整采样帧`);let l=e.byteLength/a*o/8,u=l%2;if(36+l+u>4294967295)throw RangeError(`PCM 数据超出 RIFF 4 GiB 范围`);let f=new ArrayBuffer(44+l+u),p=new DataView(f);if(p.setUint32(0,1380533830),p.setUint32(4,36+l+u,!0),p.setUint32(8,1463899717),p.setUint32(12,1718449184),p.setUint32(16,16,!0),p.setUint16(20,1,!0),p.setUint16(22,r,!0),p.setUint32(24,n,!0),p.setUint32(28,c,!0),p.setUint16(32,s,!0),p.setUint16(34,o,!0),p.setUint32(36,1684108385),p.setUint32(40,l,!0),i===`u8`||i===`s16le`)return new Uint8Array(f,44,l).set(new Uint8Array(e)),new Blob([f],{type:`audio/wav`});let m=new DataView(e),h=i.endsWith(`le`);for(let t=0,n=44;t<e.byteLength;t+=a,n+=2){let e;if(i.startsWith(`f32`)){let n=m.getFloat32(t,h),r=Number.isFinite(n)?Math.max(-1,Math.min(1,n)):0;e=Math.round(r*(r<0?32768:32767))}else if(a===2)e=m.getInt16(t,h);else if(a===3){let n=m.getUint8(t+(h?0:2)),r=m.getUint8(t+1),i=m.getUint8(t+(h?2:0));e=(n|r<<8|i<<16)<<8>>16}else e=m.getInt32(t,h)>>16;p.setInt16(n,e,!0)}return new Blob([f],{type:`audio/wav`})}var d,f=r((()=>{d={u8:1,s16le:2,s24le:3,s32le:4,f32le:4,s16be:2,s24be:3,s32be:4,f32be:4}})),p,m,h,g,_,v,y=r((()=>{f(),c(),p={class:`mediaDocument`},m=[`aria-busy`],h={key:0,class:`mediaStatus`,role:`status`},g={key:1,class:`mediaError`,role:`alert`},_={key:0,class:`audioLabel`},v=(0,e.defineComponent)({__name:`index`,props:{context:{}},setup(n){let r=n,i=(0,e.computed)(()=>o(r.context.resource.path)),a=(0,e.computed)(()=>i.value?.element===`video`),s=(0,e.computed)(()=>r.context.resource.path.split(`.`).at(-1)?.toLowerCase()===`pcm`),c=(0,e.ref)(),l=(0,e.ref)(``),d=(0,e.ref)(``),f=(0,e.shallowRef)(),v=(0,e.computed)(()=>s.value?d.value:l.value),y=(0,e.ref)(!1),b=(0,e.ref)(``),x=(0,e.ref)(``),S=(0,e.ref)(``),C=(0,e.computed)(()=>b.value||S.value||x.value),w=(0,e.ref)(24e3),T=(0,e.ref)(1),E=(0,e.ref)(`s16le`),D=[{value:`u8`,label:`8 位无符号`},{value:`s16le`,label:`16 位整数(小端)`},{value:`s24le`,label:`24 位整数(小端)`},{value:`s32le`,label:`32 位整数(小端)`},{value:`f32le`,label:`32 位浮点(小端)`},{value:`s16be`,label:`16 位整数(大端)`},{value:`s24be`,label:`24 位整数(大端)`},{value:`s32be`,label:`32 位整数(大端)`},{value:`f32be`,label:`32 位浮点(大端)`}];function O(){c.value?.pause(),c.value?.removeAttribute(`src`),c.value?.load()}function k(){x.value=`无法播放:${r.context.resource.label}。文件可能损坏,或当前客户端不支持其编码。`}return(0,e.watch)(()=>r.context.active,e=>{e||c.value?.pause()}),(0,e.onBeforeUnmount)(O),(0,e.watch)(()=>[r.context.resource.directory,r.context.resource.path],async(e,t,n)=>{let a=!1,o;n(()=>{a=!0,O(),o?.release()}),O(),l.value=``,f.value=void 0,b.value=``,x.value=``,y.value=!0;try{let e=r.context.resource.path;if(s.value){let t=await r.context.files.read(e);a||(f.value=t)}else{if(!i.value)throw Error(`不支持的音视频格式:${r.context.resource.label}`);o=r.context.files.acquireUrl(e,i.value.mimeType);let t=await o.url;a||(l.value=t)}}catch(e){a||(b.value=e instanceof Error?e.message:`媒体读取失败`)}finally{a||(y.value=!1)}},{immediate:!0}),(0,e.watch)([f,w,T,E],([e,t,n,r],i,a)=>{if(O(),d.value=``,S.value=``,x.value=``,e)try{let i=URL.createObjectURL(u(e,{sampleRate:t,channels:n,format:r}));d.value=i,a(()=>{O(),URL.revokeObjectURL(i)})}catch(e){S.value=e instanceof Error?e.message:`PCM 预览失败`}}),(r,i)=>((0,e.openBlock)(),(0,e.createElementBlock)(`section`,p,[s.value?((0,e.openBlock)(),(0,e.createElementBlock)(`form`,{key:0,class:`pcmToolbar`,onSubmit:i[3]||=(0,e.withModifiers)(()=>{},[`prevent`])},[(0,e.createElementVNode)(`label`,null,[i[4]||=(0,e.createTextVNode)(`采样率(Hz)`,-1),(0,e.createVNode)((0,e.unref)(t.ElInputNumber),{modelValue:w.value,"onUpdate:modelValue":i[0]||=e=>w.value=e,min:1,max:384e3,step:1e3,size:`small`},null,8,[`modelValue`])]),(0,e.createElementVNode)(`label`,null,[i[5]||=(0,e.createTextVNode)(`声道`,-1),(0,e.createVNode)((0,e.unref)(t.ElSelect),{modelValue:T.value,"onUpdate:modelValue":i[1]||=e=>T.value=e,size:`small`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(t.ElOption),{label:`单声道`,value:1}),(0,e.createVNode)((0,e.unref)(t.ElOption),{label:`双声道`,value:2})]),_:1},8,[`modelValue`])]),(0,e.createElementVNode)(`label`,null,[i[6]||=(0,e.createTextVNode)(`采样格式`,-1),(0,e.createVNode)((0,e.unref)(t.ElSelect),{modelValue:E.value,"onUpdate:modelValue":i[2]||=e=>E.value=e,size:`small`},{default:(0,e.withCtx)(()=>[((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(D,n=>(0,e.createVNode)((0,e.unref)(t.ElOption),{key:n.value,label:n.label,value:n.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`])]),i[7]||=(0,e.createElementVNode)(`p`,null,`PCM 不包含格式信息,请按文件实际参数设置。多声道数据按交错排列读取。`,-1)],32)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:`mediaPreview`,"aria-busy":y.value},[y.value?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,h,`正在读取…`)):C.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,g,(0,e.toDisplayString)(C.value),1)):v.value?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:2},[a.value?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`p`,_,(0,e.toDisplayString)(n.context.resource.label),1)),((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(a.value?`video`:`audio`),{key:v.value,ref_key:`player`,ref:c,src:v.value,controls:``,playsinline:``,preload:`metadata`,"aria-label":n.context.resource.label,onError:k},null,40,[`src`,`aria-label`]))],64)):(0,e.createCommentVNode)(``,!0)],8,m)]))}})})),b=r((()=>{})),x,S=r((()=>{x=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n}})),C=i({default:()=>w}),w,T=r((()=>{y(),y(),b(),S(),w=x(v,[[`__scopeId`,`data-v-13cc5fbb`]])}));return a({...l,load:()=>Promise.resolve().then(()=>(T(),C))})});