aitu-app 0.6.93 → 0.6.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/assets/{CanvasAudioPlayer-DaNPbJyT.js → CanvasAudioPlayer-MQmzmp9O.js} +1 -1
- package/assets/ComicCreator-B8HpL03H.css +1 -0
- package/assets/{ComicCreator-DkeHdMnR.js → ComicCreator-BBO0wjlm.js} +11 -11
- package/assets/{DeferredAIInputBar-lWK2fRaw.js → DeferredAIInputBar-YDFMyEQ1.js} +2 -2
- package/assets/{DrawnixDeferredFeatures-CbWSXV6C.js → DrawnixDeferredFeatures-UiZzEf4s.js} +1 -1
- package/assets/{KnowledgeBaseContent-BUr9he8d.js → KnowledgeBaseContent-DIlNoBYO.js} +8 -8
- package/assets/{MVCreator-BOzN-tXU.js → MVCreator-Bg7oPAIu.js} +6 -6
- package/assets/{ModelBenchmarkWorkbench-jUHEm6aS.js → ModelBenchmarkWorkbench-DX0Z0TFt.js} +2 -2
- package/assets/{MusicAnalyzer-BuGqo-5v.js → MusicAnalyzer-Bn2HokY1.js} +2 -2
- package/assets/{ParametersDropdown-yEFuMwP3.js → ParametersDropdown-fMrc2mnc.js} +1 -1
- package/assets/{PromptHistoryTool-Bkam4jDq.js → PromptHistoryTool-B9qwbOY-.js} +1 -1
- package/assets/{ResizableDivider-4YaXoujg.js → ResizableDivider-DOGyLnuC.js} +1 -1
- package/assets/{TaskQueuePanel-B4n4yFrN.js → TaskQueuePanel-g4tLdp14.js} +1 -1
- package/assets/VideoAnalyzer--qkSl05P.css +1 -0
- package/assets/{VideoAnalyzer-Dw6JxzL_.js → VideoAnalyzer-CLkjYvYh.js} +2 -2
- package/assets/{VideoAnalyzer-DD1ikZBf.js → VideoAnalyzer-DwmwUiQN.js} +1 -1
- package/assets/{ai-chat-CbA4VxVi.js → ai-chat-CsfpjH1l.js} +5 -5
- package/assets/{ai-generation-preferences-service-DvXSxpFD.js → ai-generation-preferences-service-BBR4MJT_.js} +1 -1
- package/assets/{batch-image-generation-C9zuT56U.js → batch-image-generation-C9xMq3yL.js} +1 -1
- package/assets/{diagram-engines-arQ_psja.js → diagram-engines-wbp2Edui.js} +2 -2
- package/assets/{editor-engines-BXUe6h7p.js → editor-engines-D1I2u4bz.js} +1 -1
- package/assets/{index-DbzFDVbD.js → index-CMEHlvTW.js} +2 -2
- package/assets/{index-vRkGyT2X.js → index-DD6Od4WV.js} +4 -4
- package/assets/{index-D6y0DVFb.js → index-DTEfuYVO.js} +1 -1
- package/assets/{index-7v8cNwYN.js → index-DjI-hnz2.js} +1 -1
- package/assets/{index-CfHqQVdk.js → index-DxLdzrnI.js} +1 -1
- package/assets/{index.es-C8HW6iHn.js → index.es-BednKUNq.js} +1 -1
- package/assets/{jspdf.es.min-ClNUHu_u.js → jspdf.es.min-BH14Knc0.js} +2 -2
- package/assets/{markdown-to-drawnix-BCRkjrJ-.js → markdown-to-drawnix-DwP1sZP_.js} +2 -2
- package/assets/{mermaid-to-drawnix-jTl2aB2R.js → mermaid-to-drawnix-kfoAuYjg.js} +2 -2
- package/assets/{model-benchmark-launcher-Jt3muucM.js → model-benchmark-launcher-t9k-pxKY.js} +1 -1
- package/assets/{photo-wall-splitter-DmDAK7uj.js → photo-wall-splitter-Br2t8v2-.js} +1 -1
- package/assets/{prompt-utils-CXPwwhv5.js → prompt-utils-rqQlxZwD.js} +1 -1
- package/assets/{retry-image-nmgTk8q5.js → retry-image-_PYFxvET.js} +1 -1
- package/assets/{settings-dialog-D20-RzdV.js → settings-dialog-CTabtybb.js} +1 -1
- package/assets/{skill-dsl-parser-BzXNppVj.js → skill-dsl-parser-8NKeoHFb.js} +1 -1
- package/assets/{startup-app-BmKsISci.js → startup-app-BLmT3dT4.js} +663 -663
- package/assets/{task-sync-OlH4BhNN.js → task-sync-B3VpSb_7.js} +1 -1
- package/assets/{tool-windows-BJIgtPhd.js → tool-windows-DAY2gDTq.js} +19 -19
- package/assets/{ttd-dialog-BC8TvOF6.js → ttd-dialog-D5ZO5ECj.js} +2 -2
- package/assets/{ttd-dialog-submit-shortcut-CtoAZbit.js → ttd-dialog-submit-shortcut-Cf9ZANxG.js} +1 -1
- package/assets/{useCharacters-DYaygzmK.js → useCharacters-DG8vfSuJ.js} +2 -2
- package/assets/{useMediaViewer-g_sRo1wu.js → useMediaViewer-B3Nq2EnI.js} +1 -1
- package/assets/{useWorkflowSubmission-DtY6AO0Y.js → useWorkflowSubmission-4PmnGrC4.js} +6 -6
- package/assets/{video-recovery-service-B1myHeGL.js → video-recovery-service-Bw4wm0Xr.js} +1 -1
- package/assets/{workflow-generation-utils-BzmNYqLw.js → workflow-generation-utils-CZ1XO__K.js} +2 -2
- package/assets/{workflow-submission-service-D54XS7uS.js → workflow-submission-service-BJ15PVJJ.js} +1 -1
- package/changelog.json +13 -20
- package/idle-prefetch-manifest.json +278 -278
- package/manifest.json +3 -3
- package/package.json +1 -1
- package/precache-manifest.json +8 -8
- package/sw.js +1 -1
- package/version.json +3 -3
- package/assets/ComicCreator-DDZpl9mw.css +0 -1
- package/assets/VideoAnalyzer-BQM5Hxrh.css +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Opentu CDN Assets v0.6.
|
|
1
|
+
# Opentu CDN Assets v0.6.94
|
|
2
2
|
|
|
3
3
|
> 静态资源包,不含 HTML 文件
|
|
4
4
|
|
|
5
|
-
- unpkg: https://unpkg.com/aitu-app@0.6.
|
|
6
|
-
- jsdelivr: https://cdn.jsdelivr.net/npm/aitu-app@0.6.
|
|
5
|
+
- unpkg: https://unpkg.com/aitu-app@0.6.94/
|
|
6
|
+
- jsdelivr: https://cdn.jsdelivr.net/npm/aitu-app@0.6.94/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./startup-app-BruT4WBY.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{_ as ke}from"./startup-runtime-DTmhLESk.js";import{r as n,j as t,da as he,B as C,jf as Ae,fY as Se,dS as Te,dT as Le,de as ue,dc as J,eE as U,eu as Ee,o as de,cg as Ne,c0 as Ce,dV as Me,ey as Re,eG as oe,eH as pe,$ as ie,ez as _e,A as De,ax as $e,eI as ze,ex as Oe,m as Ue,eJ as Fe,eK as fe,eL as Ye,eF as le,jg as qe,jh as Ve,ji as Be,X as He,eN as Qe,eO as We,eP as Xe,eQ as Ke,eR as Ge}from"./startup-app-BmKsISci.js";import{u as Je,a as Ze,b as me,d as Z,e as et}from"./tool-windows-BJIgtPhd.js";import{b as tt}from"./ai-chat-CbA4VxVi.js";const ye=5;function ve(e,i,s){const c=Math.max(0,window.innerWidth-i),f=Math.max(0,window.innerHeight-s);return{x:Math.max(0,Math.min(e.x,c)),y:Math.max(0,Math.min(e.y,f))}}function at(e){try{const i=localStorage.getItem(e);if(!i)return null;const s=JSON.parse(i);if(typeof s.x=="number"&&typeof s.y=="number")return s}catch{}return null}function nt(e,i){try{localStorage.setItem(e,JSON.stringify(i))}catch{}}function st(e){const{storageKey:i,enabled:s=!0}=e,[c,f]=n.useState(()=>s?at(i):null),[v,b]=n.useState(!1),w=n.useRef(!1),h=n.useRef(null),I=n.useRef(null),_=n.useCallback(m=>{if(!s||m.button!==0)return;const y=I.current;if(!y)return;const p=y.getBoundingClientRect();h.current={startPointerX:m.clientX,startPointerY:m.clientY,startElX:p.left,startElY:p.top,activated:!1,frameId:0}},[s]);n.useEffect(()=>{if(!s)return;const m=p=>{const u=h.current;if(!u)return;const g=p.clientX-u.startPointerX,M=p.clientY-u.startPointerY;if(!u.activated){if(Math.abs(g)<ye&&Math.abs(M)<ye)return;u.activated=!0,b(!0)}cancelAnimationFrame(u.frameId),u.frameId=requestAnimationFrame(()=>{const S=I.current;if(!S)return;const d=ve({x:u.startElX+g,y:u.startElY+M},S.offsetWidth,S.offsetHeight);f(d)})},y=()=>{const p=h.current;if(!p)return;cancelAnimationFrame(p.frameId);const u=p.activated;h.current=null,b(!1),u&&(w.current=!0,requestAnimationFrame(()=>{w.current=!1}),f(g=>(g&&nt(i,g),g)))};return window.addEventListener("pointermove",m),window.addEventListener("pointerup",y),()=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",y)}},[s,i]),n.useEffect(()=>{if(!s||!c)return;const m=()=>{const y=I.current;y&&f(p=>p&&ve(p,y.offsetWidth,y.offsetHeight))};return window.addEventListener("resize",m),()=>window.removeEventListener("resize",m)},[s,!!c]);const P=n.useCallback(()=>{f(null);try{localStorage.removeItem(i)}catch{}},[i]);return{position:c,isDragging:v,wasDraggedRef:w,elementRef:I,handlePointerDown:_,resetPosition:P}}const ot=({volume:e,onVolumeChange:i})=>{const s=n.useRef(null),c=n.useRef(null),f=n.useRef(!1),v=n.useRef(!1),b=n.useRef(!1),[w,h]=n.useState(!1),[I,_]=n.useState(!1),[P,m]=n.useState(!1),y=Math.round(e*100),p={"--canvas-audio-progress":`${e*100}%`},u=()=>{c.current!==null&&(window.clearTimeout(c.current),c.current=null)},g=()=>{u(),h(!0)},M=()=>{u(),h(d=>!d)},S=()=>{u(),!(v.current||b.current)&&(c.current=window.setTimeout(()=>{h(!1)},180))};return n.useEffect(()=>{v.current=I},[I]),n.useEffect(()=>{b.current=P},[P]),n.useEffect(()=>()=>u(),[]),n.useEffect(()=>{if(!w)return;const d=x=>{var k;(k=s.current)!=null&&k.contains(x.target)||(u(),h(!1),m(!1),_(!1),f.current=!1)};return document.addEventListener("pointerdown",d,!0),()=>document.removeEventListener("pointerdown",d,!0)},[w]),n.useEffect(()=>{if(!P)return;const d=()=>{b.current=!1,m(!1),v.current||(u(),c.current=window.setTimeout(()=>{h(!1)},180))};return window.addEventListener("pointerup",d),()=>window.removeEventListener("pointerup",d)},[P]),t.jsx("div",{ref:s,className:he("canvas-audio-player__volume",{"canvas-audio-player__volume--expanded":w}),onPointerDown:d=>d.stopPropagation(),onMouseEnter:()=>{v.current=!0,_(!0),u()},onMouseLeave:()=>{v.current=!1,_(!1),S()},onBlur:d=>{var k;const x=d.relatedTarget;x&&((k=s.current)!=null&&k.contains(x))||S()},children:t.jsxs("div",{className:"canvas-audio-player__volume-shell",children:[t.jsx("div",{className:"canvas-audio-player__volume-slider-wrap",children:t.jsx("input",{type:"range",min:0,max:1,step:.01,value:e,onFocus:g,onPointerDown:d=>{d.stopPropagation(),b.current=!0,m(!0),g()},onChange:d=>i(Number(d.target.value)),className:"canvas-audio-player__slider canvas-audio-player__slider--volume",style:p,"aria-label":"Playback volume","aria-valuetext":`${y}%`})}),t.jsxs("span",{className:"canvas-audio-player__volume-value",children:[y,"%"]}),t.jsx(C,{content:"音量",children:t.jsx("button",{type:"button",className:"canvas-audio-player__volume-toggle",onPointerDown:d=>{d.stopPropagation(),f.current=!0},onClick:()=>{f.current=!1,M()},onFocus:()=>{f.current||g()},onBlur:()=>{f.current=!1},"aria-label":"Volume controls","aria-expanded":w,children:e<=.01?t.jsx(Ae,{size:16}):t.jsx(Se,{size:16})})})]})})},ge="asset:";function it(e){var i;return(i=e==null?void 0:e.elementId)!=null&&i.startsWith(ge)?e.elementId.slice(ge.length):null}function xe(e){if(typeof e!="number"||!Number.isFinite(e)||e<=0)return"--:--";const i=Math.floor(e),s=Math.floor(i/60),c=i%60;return`${s}:${String(c).padStart(2,"0")}`}function lt(e){var s;const i=((s=e.segments[e.segments.length-1])==null?void 0:s.endMs)||0;return xe(i/1e3)}const rt=({queue:e,activeQueueIndex:i,queueSource:s,activePlaylistId:c,playing:f=!1,activeReadingSourceId:v,onSelect:b,onPlayAllTracksItem:w})=>{const{assets:h}=Te(),{playlists:I,playlistItems:_,favoriteAssetIds:P,createPlaylist:m,addAssetToPlaylist:y,removeAssetFromPlaylist:p,toggleFavorite:u}=Le(),{contextMenu:g,openAt:M,close:S}=tt(),[d,x]=n.useState(!1),[k,E]=n.useState(""),[F,T]=n.useState(null),{noteMetas:$,loadReadingSource:W,buildReadingQueue:X}=Je(),[Y,q]=n.useState(s==="reading"?ue:J),V=Y===ue,R=s==="playlist"&&c?c:J,L=e.filter(a=>!U(a)),ee=Ze(L),K=a=>{const o=it(a);if(o)return o;if(!(a!=null&&a.audioUrl))return null;const r=h.find(j=>j.type===Me.AUDIO&&j.url===a.audioUrl);return(r==null?void 0:r.id)||null},B=n.useMemo(()=>new Set(R!==J?(_[R]||[]).map(a=>a.assetId?Ee({kind:"asset",assetId:a.assetId}):null).filter(a=>!!a):[]),[_,R]),D=n.useCallback(async a=>{if(w){w(a);return}const o=await W(a);o&&(await X(a),b(o))},[w,W,X,b]),z=n.useMemo(()=>$.map(a=>({id:a.id,title:a.title||"未命名笔记",subtitle:new Date(a.updatedAt).toLocaleDateString("zh-CN"),canFavorite:!1,isActive:(v==null?void 0:v.includes(a.id))===!0,isPlaying:f&&(v==null?void 0:v.includes(a.id))===!0})),[$,v,f]);return s==="reading"?t.jsxs("div",{className:"canvas-audio-player__playlist",children:[t.jsx(me,{className:"canvas-audio-player__playlist-tabs",selectedPlaylistId:Y,allCount:L.length,allTracksCount:$.length,playlists:I,playlistItems:_,onSelect:q,onCreate:()=>{E(""),x(!0)}}),V?z.length===0?t.jsxs("div",{className:"canvas-audio-player__playlist-empty",children:[t.jsx(de,{size:16}),t.jsx("span",{children:"知识库还没有笔记"})]}):t.jsx(Z,{className:"canvas-audio-player__playlist-list",items:z,onSelect:a=>void D(a.id),onTogglePlayback:a=>void D(a.id),showPlaybackIndicator:!0}):t.jsx(Z,{className:"canvas-audio-player__playlist-list audio-track-list--queue",items:e.map((a,o)=>{const r=a;return{id:r.readingSourceId,title:r.title||"朗读轨道",subtitle:lt(r),previewImageUrl:r.previewImageUrl,isActive:o===i,isPlaying:o===i,canFavorite:!1}}),onSelect:a=>{const o=e.find(r=>U(r)&&r.readingSourceId===a.id);o&&b(o)},onTogglePlayback:a=>{const o=e.find(r=>U(r)&&r.readingSourceId===a.id);o&&b(o)},showPlaybackIndicator:!0})]}):t.jsxs("div",{className:"canvas-audio-player__playlist",children:[t.jsx(me,{className:"canvas-audio-player__playlist-tabs",selectedPlaylistId:Y,allCount:L.length,allTracksCount:$.length,playlists:I,playlistItems:_,onSelect:q,onCreate:()=>{E(""),x(!0)}}),V?z.length===0?t.jsxs("div",{className:"canvas-audio-player__playlist-empty",children:[t.jsx(de,{size:16}),t.jsx("span",{children:"知识库还没有笔记"})]}):t.jsx(Z,{className:"canvas-audio-player__playlist-list",items:z,onSelect:a=>void D(a.id),onTogglePlayback:a=>void D(a.id),showPlaybackIndicator:!0}):t.jsx(Z,{className:"canvas-audio-player__playlist-list audio-track-list--queue",items:L.map((a,o)=>{const r=K(a);return{id:`${a.audioUrl}-${o}`,title:a.title||"未命名音频",subtitle:xe(ee.get(a.audioUrl)??a.duration),previewImageUrl:a.previewImageUrl,isActive:o===i,isPlaying:o===i,isFavorite:r?P.has(r):!1,canFavorite:!!r}}),onSelect:a=>{const o=L.find((r,j)=>`${r.audioUrl}-${j}`===a.id);o&&b(o)},onContextMenu:(a,o)=>{const r=L.find((H,te)=>`${H.audioUrl}-${te}`===a.id),j=K(r);j&&(o.preventDefault(),o.stopPropagation(),M(o.clientX,o.clientY,{kind:"asset",assetId:j}))},onToggleFavorite:a=>{const o=L.find((j,H)=>`${j.audioUrl}-${H}`===a.id),r=K(o);r&&u(r)},onTogglePlayback:a=>{const o=L.find((r,j)=>`${r.audioUrl}-${j}`===a.id);o&&b(o)},showFavoriteButton:!0,showPlaybackIndicator:!0}),t.jsx(et,{contextMenu:g?{x:g.x,y:g.y,item:g.payload}:null,playlists:I,playlistItems:_,favoriteAssetIds:P,selectedPlaylistId:R===J?null:R,currentPlaylistItemKeys:B,onClose:S,onToggleFavorite:a=>void u(a),onAddToPlaylist:(a,o)=>{a.kind==="asset"&&y(a.assetId,o)},onRemoveFromPlaylist:(a,o)=>{a.kind==="asset"&&p(a.assetId,o)},onCreatePlaylistAndAdd:a=>{a.kind==="asset"&&(T(a.assetId),E(""),x(!0))}}),t.jsx(Ne,{visible:d,header:"新建播放列表",onClose:()=>x(!1),onConfirm:async()=>{const a=await m(k);F&&await y(F,a.id),x(!1),E(""),T(null)},onCancel:()=>{x(!1),T(null)},confirmBtn:"确定",cancelBtn:"取消",children:t.jsx(Ce,{value:k,onChange:a=>E(String(a)),placeholder:"请输入播放列表名称"})})]})},we={sequential:t.jsx(Ge,{size:14}),"list-loop":t.jsx(Ke,{size:14}),"single-loop":t.jsx(Xe,{size:14}),shuffle:t.jsx(We,{size:14})},ct=Object.keys(le).map(e=>({value:e,content:le[e],prefixIcon:we[e]}));function ut(e,i){return Qe(i).map(s=>{const c=_e(s),f=Math.abs(s-e)<.001;return{value:s,content:f?`✓ ${c}`:c}})}function be(e){if(typeof e!="number"||!Number.isFinite(e)||e<=0)return"--:--";const i=Math.floor(e),s=Math.floor(i/60),c=i%60;return`${s}:${String(c).padStart(2,"0")}`}const vt=()=>{const e=Re(),i=n.useRef(null),[s,c]=n.useState(!1),[f,v]=n.useState(()=>{const l=oe.getToolState(pe);return(l==null?void 0:l.status)==="open"}),[b,w]=n.useState(()=>{try{return localStorage.getItem(ie.AUDIO_PLAYER_LAYOUT)==="vertical"?"vertical":"horizontal"}catch{return"horizontal"}}),[h,I]=n.useState(()=>typeof window<"u"?window.innerWidth:1024);n.useEffect(()=>{const l=()=>I(window.innerWidth);return window.addEventListener("resize",l),window.addEventListener("orientationchange",l),()=>{window.removeEventListener("resize",l),window.removeEventListener("orientationchange",l)}},[]);const _=h<=768?"vertical":b,[P,m]=n.useState(null),y=h<=768,{position:p,isDragging:u,wasDraggedRef:g,elementRef:M,handlePointerDown:S}=st({storageKey:ie.AUDIO_PLAYER_POSITION,enabled:!y}),d=n.useMemo(()=>!e.duration||e.duration<=0?0:Math.max(0,Math.min(100,e.currentTime/e.duration*100)),[e.currentTime,e.duration]),x=Number.isFinite(e.currentTime)?e.currentTime:0,k=Number.isFinite(e.duration)?e.duration:0,E=be(x),F=be(k),T=e.activeQueueIndex>=0?e.queue[e.activeQueueIndex]:null,$=e.activeTitle||(U(T)?T.title:void 0),W=e.activePreviewImageUrl||(U(T)?T.previewImageUrl:void 0),X=e.activeQueueIndex>0,Y=e.activeQueueIndex>=0&&e.activeQueueIndex<e.queue.length-1,q=e.queue.length>1&&e.activeQueueIndex>=0,V=q?`${e.activeQueueIndex+1}/${e.queue.length}`:null,R=e.queueSource==="playlist"?e.activePlaylistName||"播放列表":e.activePlaylistName||(e.queueSource==="reading"?"朗读轨道":"画布音频"),L=q?`${R} ${e.activeQueueIndex+1} / ${e.queue.length}`:R,ee=V?`${V} · ${E} / ${F}`:`${E} / ${F}`,B=e.queueSource==="reading"&&(!!e.activeReadingSourceId||T!==null&&U(T))||!!e.activeAudioUrl,D=e.mediaType==="audio",z=e.mediaType==="reading"?"reading":"audio",a=le[e.playbackMode],o=we[e.playbackMode],r=n.useMemo(()=>ut(e.effectivePlaybackRate,z),[e.effectivePlaybackRate,z]),j=_e(e.effectivePlaybackRate),H=`${e.mediaType==="reading"?"语音速度":"播放速度"} ${j}`,te={"--canvas-audio-progress":`${d}%`},Pe=n.useCallback(()=>{w(l=>{const A=l==="horizontal"?"vertical":"horizontal";try{localStorage.setItem(ie.AUDIO_PLAYER_LAYOUT,A)}catch{}return A})},[]),je=n.useCallback(async()=>{try{e.playing?e.pausePlayback():await e.resumePlayback()}catch{}},[e]);if(n.useEffect(()=>{if(!B){c(!1),m(null);return}let l=0;const A=()=>{const ce=document.querySelector(".ai-input-bar__container");if(!(ce instanceof HTMLElement)){m(null);return}const se=ce.getBoundingClientRect(),G={left:Math.round(se.left),width:Math.round(se.width),bottom:Math.max(0,Math.round(window.innerHeight-se.top))};m(Q=>Q&&Q.left===G.left&&Q.width===G.width&&Q.bottom===G.bottom?Q:G)},N=()=>{window.cancelAnimationFrame(l),l=window.requestAnimationFrame(A)},ae=document.querySelector(".ai-input-bar__container"),ne=document.querySelector(".ai-input-bar"),O=typeof ResizeObserver<"u"?new ResizeObserver(()=>N()):null;return O&&ae instanceof HTMLElement&&O.observe(ae),O&&ne instanceof HTMLElement&&ne!==ae&&O.observe(ne),N(),window.addEventListener("resize",N),window.addEventListener("orientationchange",N),()=>{window.cancelAnimationFrame(l),window.removeEventListener("resize",N),window.removeEventListener("orientationchange",N),O==null||O.disconnect()}},[B]),n.useEffect(()=>{if(!s)return;const l=A=>{var N;(N=i.current)!=null&&N.contains(A.target)||c(!1)};return document.addEventListener("pointerdown",l,!0),()=>document.removeEventListener("pointerdown",l,!0)},[s]),n.useEffect(()=>{M.current=i.current}),n.useEffect(()=>{const l=oe.observeToolStates().subscribe(()=>{const A=oe.getToolState(pe);v((A==null?void 0:A.status)==="open")});return()=>l.unsubscribe()},[]),!B||f)return null;const Ie=p&&!y?{left:p.x,top:p.y}:{},re={...P?{"--canvas-audio-mobile-left":`${P.left}px`,"--canvas-audio-mobile-width":`${P.width}px`,"--canvas-audio-mobile-offset":`${P.bottom}px`}:{},...Ie};return t.jsxs("div",{ref:i,className:he("canvas-audio-player",{"canvas-audio-player--playlist-open":s,"canvas-audio-player--positioned":!!p,"canvas-audio-player--dragging":u,"canvas-audio-player--vertical":_==="vertical"}),style:Object.keys(re).length>0?re:void 0,children:[t.jsxs("button",{type:"button",className:"canvas-audio-player__queue-trigger",onPointerDown:S,onClick:()=>{g.current||c(l=>!l)},"aria-expanded":s,"aria-label":"切换播放列表",children:[t.jsx("div",{className:"canvas-audio-player__cover",children:t.jsx(De,{src:W,alt:$||"Audio cover",fallbackClassName:"canvas-audio-player__cover-fallback",iconSize:16})}),t.jsxs("div",{className:"canvas-audio-player__meta",children:[t.jsx("div",{className:"canvas-audio-player__title",children:$||"未命名音频"}),t.jsxs("div",{className:"canvas-audio-player__subtitle",children:[t.jsx("span",{className:"canvas-audio-player__subtitle-text canvas-audio-player__subtitle-text--desktop",children:L}),t.jsx("span",{className:"canvas-audio-player__subtitle-text canvas-audio-player__subtitle-text--mobile",children:ee})]})]}),t.jsx("span",{className:"canvas-audio-player__queue-indicator","aria-hidden":"true",children:t.jsx($e,{size:14})})]}),t.jsxs("div",{className:"canvas-audio-player__controls",children:[t.jsx(C,{content:"上一首",children:t.jsx("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--previous",onClick:()=>void e.playPrevious(),disabled:!X,children:t.jsx(ze,{size:14})})}),t.jsx(C,{content:e.playing?"暂停":"播放",children:t.jsx("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--primary",onClick:()=>void je(),children:e.playing?t.jsx(Oe,{size:14}):t.jsx(Ue,{size:14})})}),t.jsx(C,{content:"下一首",children:t.jsx("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--next",onClick:()=>void e.playNext(),disabled:!Y,children:t.jsx(Fe,{size:14})})})]}),t.jsxs("div",{className:"canvas-audio-player__progress",children:[t.jsx("span",{className:"canvas-audio-player__time",children:E}),t.jsx("input",{type:"range",min:0,max:k||0,step:.1,value:Math.min(x,k||x),onChange:l=>{D&&e.seekTo(Number(l.target.value))},className:"canvas-audio-player__slider canvas-audio-player__slider--progress",style:te,"aria-label":D?"Audio progress":"Reading progress",disabled:!D}),t.jsx("span",{className:"canvas-audio-player__time",children:F})]}),t.jsx(ot,{volume:e.volume,onVolumeChange:e.setVolume}),t.jsx(fe,{options:r,trigger:"click",placement:"bottom",minColumnWidth:112,onClick:l=>e.setPlaybackRate(Number(l.value)),children:t.jsx(C,{content:H,children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__speed-toggle","aria-label":`切换播放速度,当前${j}`,children:t.jsx(Ye,{size:14})})})}),t.jsx(fe,{options:ct,trigger:"click",placement:"bottom",minColumnWidth:132,onClick:l=>e.setPlaybackMode(l.value),children:t.jsx(C,{content:a,children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__mode-toggle","aria-label":`切换播放模式,当前${a}`,children:o})})}),t.jsx(C,{content:"打开播放器工具",children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__player-switch canvas-audio-player__switch-toggle",onClick:()=>{ke(async()=>{const{openMusicPlayerTool:l}=await import("./startup-app-BmKsISci.js").then(A=>A.mL);return{openMusicPlayerTool:l}},__vite__mapDeps([0]),import.meta.url).then(({openMusicPlayerTool:l})=>{l()})},"aria-label":"打开播放器工具",children:t.jsx(qe,{size:14})})}),t.jsx(C,{content:_==="horizontal"?"切换为垂直布局":"切换为水平布局",children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__layout-toggle",onClick:Pe,style:{display:h<=768?"none":""},children:_==="horizontal"?t.jsx(Ve,{size:14}):t.jsx(Be,{size:14})})}),t.jsx(C,{content:"关闭播放器",children:t.jsx("button",{type:"button",className:"canvas-audio-player__close",onClick:e.stopPlayback,children:t.jsx(He,{size:14})})}),s?t.jsx(rt,{queue:e.queue,activeQueueIndex:e.activeQueueIndex,queueSource:e.queueSource,activePlaylistId:e.activePlaylistId,playing:e.playing,activeReadingSourceId:e.activeReadingSourceId,onSelect:l=>{U(l)?e.toggleReadingPlayback(l):e.togglePlayback(l),c(!1)}}):null]})};export{vt as CanvasAudioPlayer};
|
|
2
|
+
import{_ as ke}from"./startup-runtime-DTmhLESk.js";import{r as n,j as t,da as he,B as C,jg as Ae,fZ as Se,dS as Te,dT as Le,de as ue,dc as J,eE as U,eu as Ee,o as de,cg as Ne,c0 as Ce,dV as Me,ey as Re,eG as oe,eH as pe,$ as ie,ez as _e,A as De,ax as $e,eI as ze,ex as Oe,m as Ue,eJ as Fe,eK as fe,eL as qe,eF as le,jh as Ye,ji as Ve,jj as Be,X as He,eN as Qe,eO as We,eP as Xe,eQ as Ke,eR as Ge}from"./startup-app-BLmT3dT4.js";import{u as Je,a as Ze,b as me,d as Z,e as et}from"./tool-windows-DAY2gDTq.js";import{b as tt}from"./ai-chat-CsfpjH1l.js";const ye=5;function ve(e,i,s){const c=Math.max(0,window.innerWidth-i),f=Math.max(0,window.innerHeight-s);return{x:Math.max(0,Math.min(e.x,c)),y:Math.max(0,Math.min(e.y,f))}}function at(e){try{const i=localStorage.getItem(e);if(!i)return null;const s=JSON.parse(i);if(typeof s.x=="number"&&typeof s.y=="number")return s}catch{}return null}function nt(e,i){try{localStorage.setItem(e,JSON.stringify(i))}catch{}}function st(e){const{storageKey:i,enabled:s=!0}=e,[c,f]=n.useState(()=>s?at(i):null),[v,b]=n.useState(!1),w=n.useRef(!1),h=n.useRef(null),I=n.useRef(null),_=n.useCallback(m=>{if(!s||m.button!==0)return;const y=I.current;if(!y)return;const p=y.getBoundingClientRect();h.current={startPointerX:m.clientX,startPointerY:m.clientY,startElX:p.left,startElY:p.top,activated:!1,frameId:0}},[s]);n.useEffect(()=>{if(!s)return;const m=p=>{const u=h.current;if(!u)return;const g=p.clientX-u.startPointerX,M=p.clientY-u.startPointerY;if(!u.activated){if(Math.abs(g)<ye&&Math.abs(M)<ye)return;u.activated=!0,b(!0)}cancelAnimationFrame(u.frameId),u.frameId=requestAnimationFrame(()=>{const S=I.current;if(!S)return;const d=ve({x:u.startElX+g,y:u.startElY+M},S.offsetWidth,S.offsetHeight);f(d)})},y=()=>{const p=h.current;if(!p)return;cancelAnimationFrame(p.frameId);const u=p.activated;h.current=null,b(!1),u&&(w.current=!0,requestAnimationFrame(()=>{w.current=!1}),f(g=>(g&&nt(i,g),g)))};return window.addEventListener("pointermove",m),window.addEventListener("pointerup",y),()=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",y)}},[s,i]),n.useEffect(()=>{if(!s||!c)return;const m=()=>{const y=I.current;y&&f(p=>p&&ve(p,y.offsetWidth,y.offsetHeight))};return window.addEventListener("resize",m),()=>window.removeEventListener("resize",m)},[s,!!c]);const P=n.useCallback(()=>{f(null);try{localStorage.removeItem(i)}catch{}},[i]);return{position:c,isDragging:v,wasDraggedRef:w,elementRef:I,handlePointerDown:_,resetPosition:P}}const ot=({volume:e,onVolumeChange:i})=>{const s=n.useRef(null),c=n.useRef(null),f=n.useRef(!1),v=n.useRef(!1),b=n.useRef(!1),[w,h]=n.useState(!1),[I,_]=n.useState(!1),[P,m]=n.useState(!1),y=Math.round(e*100),p={"--canvas-audio-progress":`${e*100}%`},u=()=>{c.current!==null&&(window.clearTimeout(c.current),c.current=null)},g=()=>{u(),h(!0)},M=()=>{u(),h(d=>!d)},S=()=>{u(),!(v.current||b.current)&&(c.current=window.setTimeout(()=>{h(!1)},180))};return n.useEffect(()=>{v.current=I},[I]),n.useEffect(()=>{b.current=P},[P]),n.useEffect(()=>()=>u(),[]),n.useEffect(()=>{if(!w)return;const d=x=>{var k;(k=s.current)!=null&&k.contains(x.target)||(u(),h(!1),m(!1),_(!1),f.current=!1)};return document.addEventListener("pointerdown",d,!0),()=>document.removeEventListener("pointerdown",d,!0)},[w]),n.useEffect(()=>{if(!P)return;const d=()=>{b.current=!1,m(!1),v.current||(u(),c.current=window.setTimeout(()=>{h(!1)},180))};return window.addEventListener("pointerup",d),()=>window.removeEventListener("pointerup",d)},[P]),t.jsx("div",{ref:s,className:he("canvas-audio-player__volume",{"canvas-audio-player__volume--expanded":w}),onPointerDown:d=>d.stopPropagation(),onMouseEnter:()=>{v.current=!0,_(!0),u()},onMouseLeave:()=>{v.current=!1,_(!1),S()},onBlur:d=>{var k;const x=d.relatedTarget;x&&((k=s.current)!=null&&k.contains(x))||S()},children:t.jsxs("div",{className:"canvas-audio-player__volume-shell",children:[t.jsx("div",{className:"canvas-audio-player__volume-slider-wrap",children:t.jsx("input",{type:"range",min:0,max:1,step:.01,value:e,onFocus:g,onPointerDown:d=>{d.stopPropagation(),b.current=!0,m(!0),g()},onChange:d=>i(Number(d.target.value)),className:"canvas-audio-player__slider canvas-audio-player__slider--volume",style:p,"aria-label":"Playback volume","aria-valuetext":`${y}%`})}),t.jsxs("span",{className:"canvas-audio-player__volume-value",children:[y,"%"]}),t.jsx(C,{content:"音量",children:t.jsx("button",{type:"button",className:"canvas-audio-player__volume-toggle",onPointerDown:d=>{d.stopPropagation(),f.current=!0},onClick:()=>{f.current=!1,M()},onFocus:()=>{f.current||g()},onBlur:()=>{f.current=!1},"aria-label":"Volume controls","aria-expanded":w,children:e<=.01?t.jsx(Ae,{size:16}):t.jsx(Se,{size:16})})})]})})},ge="asset:";function it(e){var i;return(i=e==null?void 0:e.elementId)!=null&&i.startsWith(ge)?e.elementId.slice(ge.length):null}function xe(e){if(typeof e!="number"||!Number.isFinite(e)||e<=0)return"--:--";const i=Math.floor(e),s=Math.floor(i/60),c=i%60;return`${s}:${String(c).padStart(2,"0")}`}function lt(e){var s;const i=((s=e.segments[e.segments.length-1])==null?void 0:s.endMs)||0;return xe(i/1e3)}const rt=({queue:e,activeQueueIndex:i,queueSource:s,activePlaylistId:c,playing:f=!1,activeReadingSourceId:v,onSelect:b,onPlayAllTracksItem:w})=>{const{assets:h}=Te(),{playlists:I,playlistItems:_,favoriteAssetIds:P,createPlaylist:m,addAssetToPlaylist:y,removeAssetFromPlaylist:p,toggleFavorite:u}=Le(),{contextMenu:g,openAt:M,close:S}=tt(),[d,x]=n.useState(!1),[k,E]=n.useState(""),[F,T]=n.useState(null),{noteMetas:$,loadReadingSource:W,buildReadingQueue:X}=Je(),[q,Y]=n.useState(s==="reading"?ue:J),V=q===ue,R=s==="playlist"&&c?c:J,L=e.filter(a=>!U(a)),ee=Ze(L),K=a=>{const o=it(a);if(o)return o;if(!(a!=null&&a.audioUrl))return null;const r=h.find(j=>j.type===Me.AUDIO&&j.url===a.audioUrl);return(r==null?void 0:r.id)||null},B=n.useMemo(()=>new Set(R!==J?(_[R]||[]).map(a=>a.assetId?Ee({kind:"asset",assetId:a.assetId}):null).filter(a=>!!a):[]),[_,R]),D=n.useCallback(async a=>{if(w){w(a);return}const o=await W(a);o&&(await X(a),b(o))},[w,W,X,b]),z=n.useMemo(()=>$.map(a=>({id:a.id,title:a.title||"未命名笔记",subtitle:new Date(a.updatedAt).toLocaleDateString("zh-CN"),canFavorite:!1,isActive:(v==null?void 0:v.includes(a.id))===!0,isPlaying:f&&(v==null?void 0:v.includes(a.id))===!0})),[$,v,f]);return s==="reading"?t.jsxs("div",{className:"canvas-audio-player__playlist",children:[t.jsx(me,{className:"canvas-audio-player__playlist-tabs",selectedPlaylistId:q,allCount:L.length,allTracksCount:$.length,playlists:I,playlistItems:_,onSelect:Y,onCreate:()=>{E(""),x(!0)}}),V?z.length===0?t.jsxs("div",{className:"canvas-audio-player__playlist-empty",children:[t.jsx(de,{size:16}),t.jsx("span",{children:"知识库还没有笔记"})]}):t.jsx(Z,{className:"canvas-audio-player__playlist-list",items:z,onSelect:a=>void D(a.id),onTogglePlayback:a=>void D(a.id),showPlaybackIndicator:!0}):t.jsx(Z,{className:"canvas-audio-player__playlist-list audio-track-list--queue",items:e.map((a,o)=>{const r=a;return{id:r.readingSourceId,title:r.title||"朗读轨道",subtitle:lt(r),previewImageUrl:r.previewImageUrl,isActive:o===i,isPlaying:o===i,canFavorite:!1}}),onSelect:a=>{const o=e.find(r=>U(r)&&r.readingSourceId===a.id);o&&b(o)},onTogglePlayback:a=>{const o=e.find(r=>U(r)&&r.readingSourceId===a.id);o&&b(o)},showPlaybackIndicator:!0})]}):t.jsxs("div",{className:"canvas-audio-player__playlist",children:[t.jsx(me,{className:"canvas-audio-player__playlist-tabs",selectedPlaylistId:q,allCount:L.length,allTracksCount:$.length,playlists:I,playlistItems:_,onSelect:Y,onCreate:()=>{E(""),x(!0)}}),V?z.length===0?t.jsxs("div",{className:"canvas-audio-player__playlist-empty",children:[t.jsx(de,{size:16}),t.jsx("span",{children:"知识库还没有笔记"})]}):t.jsx(Z,{className:"canvas-audio-player__playlist-list",items:z,onSelect:a=>void D(a.id),onTogglePlayback:a=>void D(a.id),showPlaybackIndicator:!0}):t.jsx(Z,{className:"canvas-audio-player__playlist-list audio-track-list--queue",items:L.map((a,o)=>{const r=K(a);return{id:`${a.audioUrl}-${o}`,title:a.title||"未命名音频",subtitle:xe(ee.get(a.audioUrl)??a.duration),previewImageUrl:a.previewImageUrl,isActive:o===i,isPlaying:o===i,isFavorite:r?P.has(r):!1,canFavorite:!!r}}),onSelect:a=>{const o=L.find((r,j)=>`${r.audioUrl}-${j}`===a.id);o&&b(o)},onContextMenu:(a,o)=>{const r=L.find((H,te)=>`${H.audioUrl}-${te}`===a.id),j=K(r);j&&(o.preventDefault(),o.stopPropagation(),M(o.clientX,o.clientY,{kind:"asset",assetId:j}))},onToggleFavorite:a=>{const o=L.find((j,H)=>`${j.audioUrl}-${H}`===a.id),r=K(o);r&&u(r)},onTogglePlayback:a=>{const o=L.find((r,j)=>`${r.audioUrl}-${j}`===a.id);o&&b(o)},showFavoriteButton:!0,showPlaybackIndicator:!0}),t.jsx(et,{contextMenu:g?{x:g.x,y:g.y,item:g.payload}:null,playlists:I,playlistItems:_,favoriteAssetIds:P,selectedPlaylistId:R===J?null:R,currentPlaylistItemKeys:B,onClose:S,onToggleFavorite:a=>void u(a),onAddToPlaylist:(a,o)=>{a.kind==="asset"&&y(a.assetId,o)},onRemoveFromPlaylist:(a,o)=>{a.kind==="asset"&&p(a.assetId,o)},onCreatePlaylistAndAdd:a=>{a.kind==="asset"&&(T(a.assetId),E(""),x(!0))}}),t.jsx(Ne,{visible:d,header:"新建播放列表",onClose:()=>x(!1),onConfirm:async()=>{const a=await m(k);F&&await y(F,a.id),x(!1),E(""),T(null)},onCancel:()=>{x(!1),T(null)},confirmBtn:"确定",cancelBtn:"取消",children:t.jsx(Ce,{value:k,onChange:a=>E(String(a)),placeholder:"请输入播放列表名称"})})]})},we={sequential:t.jsx(Ge,{size:14}),"list-loop":t.jsx(Ke,{size:14}),"single-loop":t.jsx(Xe,{size:14}),shuffle:t.jsx(We,{size:14})},ct=Object.keys(le).map(e=>({value:e,content:le[e],prefixIcon:we[e]}));function ut(e,i){return Qe(i).map(s=>{const c=_e(s),f=Math.abs(s-e)<.001;return{value:s,content:f?`✓ ${c}`:c}})}function be(e){if(typeof e!="number"||!Number.isFinite(e)||e<=0)return"--:--";const i=Math.floor(e),s=Math.floor(i/60),c=i%60;return`${s}:${String(c).padStart(2,"0")}`}const vt=()=>{const e=Re(),i=n.useRef(null),[s,c]=n.useState(!1),[f,v]=n.useState(()=>{const l=oe.getToolState(pe);return(l==null?void 0:l.status)==="open"}),[b,w]=n.useState(()=>{try{return localStorage.getItem(ie.AUDIO_PLAYER_LAYOUT)==="vertical"?"vertical":"horizontal"}catch{return"horizontal"}}),[h,I]=n.useState(()=>typeof window<"u"?window.innerWidth:1024);n.useEffect(()=>{const l=()=>I(window.innerWidth);return window.addEventListener("resize",l),window.addEventListener("orientationchange",l),()=>{window.removeEventListener("resize",l),window.removeEventListener("orientationchange",l)}},[]);const _=h<=768?"vertical":b,[P,m]=n.useState(null),y=h<=768,{position:p,isDragging:u,wasDraggedRef:g,elementRef:M,handlePointerDown:S}=st({storageKey:ie.AUDIO_PLAYER_POSITION,enabled:!y}),d=n.useMemo(()=>!e.duration||e.duration<=0?0:Math.max(0,Math.min(100,e.currentTime/e.duration*100)),[e.currentTime,e.duration]),x=Number.isFinite(e.currentTime)?e.currentTime:0,k=Number.isFinite(e.duration)?e.duration:0,E=be(x),F=be(k),T=e.activeQueueIndex>=0?e.queue[e.activeQueueIndex]:null,$=e.activeTitle||(U(T)?T.title:void 0),W=e.activePreviewImageUrl||(U(T)?T.previewImageUrl:void 0),X=e.activeQueueIndex>0,q=e.activeQueueIndex>=0&&e.activeQueueIndex<e.queue.length-1,Y=e.queue.length>1&&e.activeQueueIndex>=0,V=Y?`${e.activeQueueIndex+1}/${e.queue.length}`:null,R=e.queueSource==="playlist"?e.activePlaylistName||"播放列表":e.activePlaylistName||(e.queueSource==="reading"?"朗读轨道":"画布音频"),L=Y?`${R} ${e.activeQueueIndex+1} / ${e.queue.length}`:R,ee=V?`${V} · ${E} / ${F}`:`${E} / ${F}`,B=e.queueSource==="reading"&&(!!e.activeReadingSourceId||T!==null&&U(T))||!!e.activeAudioUrl,D=e.mediaType==="audio",z=e.mediaType==="reading"?"reading":"audio",a=le[e.playbackMode],o=we[e.playbackMode],r=n.useMemo(()=>ut(e.effectivePlaybackRate,z),[e.effectivePlaybackRate,z]),j=_e(e.effectivePlaybackRate),H=`${e.mediaType==="reading"?"语音速度":"播放速度"} ${j}`,te={"--canvas-audio-progress":`${d}%`},Pe=n.useCallback(()=>{w(l=>{const A=l==="horizontal"?"vertical":"horizontal";try{localStorage.setItem(ie.AUDIO_PLAYER_LAYOUT,A)}catch{}return A})},[]),je=n.useCallback(async()=>{try{e.playing?e.pausePlayback():await e.resumePlayback()}catch{}},[e]);if(n.useEffect(()=>{if(!B){c(!1),m(null);return}let l=0;const A=()=>{const ce=document.querySelector(".ai-input-bar__container");if(!(ce instanceof HTMLElement)){m(null);return}const se=ce.getBoundingClientRect(),G={left:Math.round(se.left),width:Math.round(se.width),bottom:Math.max(0,Math.round(window.innerHeight-se.top))};m(Q=>Q&&Q.left===G.left&&Q.width===G.width&&Q.bottom===G.bottom?Q:G)},N=()=>{window.cancelAnimationFrame(l),l=window.requestAnimationFrame(A)},ae=document.querySelector(".ai-input-bar__container"),ne=document.querySelector(".ai-input-bar"),O=typeof ResizeObserver<"u"?new ResizeObserver(()=>N()):null;return O&&ae instanceof HTMLElement&&O.observe(ae),O&&ne instanceof HTMLElement&&ne!==ae&&O.observe(ne),N(),window.addEventListener("resize",N),window.addEventListener("orientationchange",N),()=>{window.cancelAnimationFrame(l),window.removeEventListener("resize",N),window.removeEventListener("orientationchange",N),O==null||O.disconnect()}},[B]),n.useEffect(()=>{if(!s)return;const l=A=>{var N;(N=i.current)!=null&&N.contains(A.target)||c(!1)};return document.addEventListener("pointerdown",l,!0),()=>document.removeEventListener("pointerdown",l,!0)},[s]),n.useEffect(()=>{M.current=i.current}),n.useEffect(()=>{const l=oe.observeToolStates().subscribe(()=>{const A=oe.getToolState(pe);v((A==null?void 0:A.status)==="open")});return()=>l.unsubscribe()},[]),!B||f)return null;const Ie=p&&!y?{left:p.x,top:p.y}:{},re={...P?{"--canvas-audio-mobile-left":`${P.left}px`,"--canvas-audio-mobile-width":`${P.width}px`,"--canvas-audio-mobile-offset":`${P.bottom}px`}:{},...Ie};return t.jsxs("div",{ref:i,className:he("canvas-audio-player",{"canvas-audio-player--playlist-open":s,"canvas-audio-player--positioned":!!p,"canvas-audio-player--dragging":u,"canvas-audio-player--vertical":_==="vertical"}),style:Object.keys(re).length>0?re:void 0,children:[t.jsxs("button",{type:"button",className:"canvas-audio-player__queue-trigger",onPointerDown:S,onClick:()=>{g.current||c(l=>!l)},"aria-expanded":s,"aria-label":"切换播放列表",children:[t.jsx("div",{className:"canvas-audio-player__cover",children:t.jsx(De,{src:W,alt:$||"Audio cover",fallbackClassName:"canvas-audio-player__cover-fallback",iconSize:16})}),t.jsxs("div",{className:"canvas-audio-player__meta",children:[t.jsx("div",{className:"canvas-audio-player__title",children:$||"未命名音频"}),t.jsxs("div",{className:"canvas-audio-player__subtitle",children:[t.jsx("span",{className:"canvas-audio-player__subtitle-text canvas-audio-player__subtitle-text--desktop",children:L}),t.jsx("span",{className:"canvas-audio-player__subtitle-text canvas-audio-player__subtitle-text--mobile",children:ee})]})]}),t.jsx("span",{className:"canvas-audio-player__queue-indicator","aria-hidden":"true",children:t.jsx($e,{size:14})})]}),t.jsxs("div",{className:"canvas-audio-player__controls",children:[t.jsx(C,{content:"上一首",children:t.jsx("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--previous",onClick:()=>void e.playPrevious(),disabled:!X,children:t.jsx(ze,{size:14})})}),t.jsx(C,{content:e.playing?"暂停":"播放",children:t.jsx("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--primary",onClick:()=>void je(),children:e.playing?t.jsx(Oe,{size:14}):t.jsx(Ue,{size:14})})}),t.jsx(C,{content:"下一首",children:t.jsx("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--next",onClick:()=>void e.playNext(),disabled:!q,children:t.jsx(Fe,{size:14})})})]}),t.jsxs("div",{className:"canvas-audio-player__progress",children:[t.jsx("span",{className:"canvas-audio-player__time",children:E}),t.jsx("input",{type:"range",min:0,max:k||0,step:.1,value:Math.min(x,k||x),onChange:l=>{D&&e.seekTo(Number(l.target.value))},className:"canvas-audio-player__slider canvas-audio-player__slider--progress",style:te,"aria-label":D?"Audio progress":"Reading progress",disabled:!D}),t.jsx("span",{className:"canvas-audio-player__time",children:F})]}),t.jsx(ot,{volume:e.volume,onVolumeChange:e.setVolume}),t.jsx(fe,{options:r,trigger:"click",placement:"bottom",minColumnWidth:112,onClick:l=>e.setPlaybackRate(Number(l.value)),children:t.jsx(C,{content:H,children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__speed-toggle","aria-label":`切换播放速度,当前${j}`,children:t.jsx(qe,{size:14})})})}),t.jsx(fe,{options:ct,trigger:"click",placement:"bottom",minColumnWidth:132,onClick:l=>e.setPlaybackMode(l.value),children:t.jsx(C,{content:a,children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__mode-toggle","aria-label":`切换播放模式,当前${a}`,children:o})})}),t.jsx(C,{content:"打开播放器工具",children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__player-switch canvas-audio-player__switch-toggle",onClick:()=>{ke(async()=>{const{openMusicPlayerTool:l}=await import("./startup-app-BLmT3dT4.js").then(A=>A.mM);return{openMusicPlayerTool:l}},__vite__mapDeps([0]),import.meta.url).then(({openMusicPlayerTool:l})=>{l()})},"aria-label":"打开播放器工具",children:t.jsx(Ye,{size:14})})}),t.jsx(C,{content:_==="horizontal"?"切换为垂直布局":"切换为水平布局",children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__layout-toggle",onClick:Pe,style:{display:h<=768?"none":""},children:_==="horizontal"?t.jsx(Ve,{size:14}):t.jsx(Be,{size:14})})}),t.jsx(C,{content:"关闭播放器",children:t.jsx("button",{type:"button",className:"canvas-audio-player__close",onClick:e.stopPlayback,children:t.jsx(He,{size:14})})}),s?t.jsx(rt,{queue:e.queue,activeQueueIndex:e.activeQueueIndex,queueSource:e.queueSource,activePlaylistId:e.activePlaylistId,playing:e.playing,activeReadingSourceId:e.activeReadingSourceId,onSelect:l=>{U(l)?e.toggleReadingPlayback(l):e.togglePlayback(l),c(!1)}}):null]})};export{vt as CanvasAudioPlayer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.comic-creator .comic-page{gap:12px}.comic-creator .comic-story-input{min-height:190px;line-height:1.58}.comic-creator .comic-plan-card{gap:14px}.comic-creator .comic-common-prompt{min-height:120px}.comic-creator .comic-reference-card{align-items:flex-start}.comic-creator .comic-reference-card .reference-image-upload{width:min(100%,280px);max-width:280px}.comic-creator .comic-small-textarea{min-height:72px}.comic-creator .comic-prompt-textarea{min-height:96px}.comic-creator .comic-config-grid,.comic-creator .comic-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) minmax(96px,160px);gap:10px;align-items:end}.comic-creator .comic-toolbar{grid-template-columns:minmax(220px,1fr) auto auto;align-items:center;padding:10px;border-radius:8px;background:#fafafa;border:1px solid rgba(0,0,0,.05)}.comic-creator .comic-field{display:flex;flex-direction:column;gap:6px;min-width:0}.comic-creator .comic-field>span{font-size:12px;font-weight:600;color:#666}.comic-creator .comic-field--model,.comic-creator .comic-field--scenario{min-width:220px}.comic-creator .comic-header-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.comic-creator .comic-link-btn,.comic-creator .comic-primary-btn,.comic-creator .comic-batch-bar button,.comic-creator .comic-plan-actions button,.comic-creator .comic-pdf-upload-btn,.comic-creator .comic-icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px}.comic-creator .comic-link-btn svg,.comic-creator .comic-primary-btn svg,.comic-creator .comic-batch-bar button svg,.comic-creator .comic-plan-actions button svg,.comic-creator .comic-pdf-upload-btn svg,.comic-creator .comic-icon-btn svg{flex:0 0 auto}.comic-creator .comic-link-btn{border:none;background:transparent;color:#c97d0a;cursor:pointer;font-size:12px}.comic-creator .comic-scenario-note{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:34px;padding:8px 10px;border-radius:8px;background:#f39c120f;color:#8a5a12;font-size:12px;line-height:1.45}.comic-creator .comic-scenario-note strong{flex:0 0 auto;color:#c97d0a}.comic-creator .comic-scenario-note span{min-width:0;text-align:right}.comic-creator .comic-pdf-row{display:flex;align-items:center;gap:8px;min-height:34px}.comic-creator .comic-pdf-upload-btn{flex:0 0 auto;min-height:32px;padding:7px 10px;border:1px solid rgba(201,125,10,.22);border-radius:8px;background:#f39c1214;color:#9a6108;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer}.comic-creator .comic-pdf-upload-btn:disabled{cursor:not-allowed;opacity:.55}.comic-creator .comic-pdf-file{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:100%;padding:6px 8px;border-radius:8px;background:#f7f7f7;color:#555;font-size:12px}.comic-creator .comic-pdf-file span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.comic-creator .comic-pdf-hint{color:#999;font-size:12px}.comic-creator .comic-icon-btn{width:22px;height:22px;padding:0;border:none;border-radius:6px;background:transparent;color:#888;cursor:pointer}.comic-creator .comic-icon-btn:hover{background:#0000000f;color:#c97d0a}.comic-creator .comic-prompt-optimize-btn{flex:0 0 auto}.comic-creator .comic-prompt-optimize-btn:disabled{cursor:not-allowed;opacity:.55}.comic-creator .comic-primary-btn{border:none;border-radius:8px;padding:8px 12px;background:#f39c12;color:#fff;cursor:pointer;font-weight:600}.comic-creator .comic-outline-preview{display:grid;gap:12px;max-height:min(58vh,720px);min-height:0;overflow:auto;padding-right:4px}.comic-creator .comic-outline-preview strong{display:block;margin-bottom:6px;color:#333;font-size:14px;line-height:1.45}.comic-creator .comic-outline-preview__item{min-width:0;padding:10px 12px;border:1px solid rgba(0,0,0,.06);border-radius:8px;background:#fff}.comic-creator .comic-outline-preview__item--common{background:#f39c120d;border-color:#f39c1229}.comic-creator .comic-outline-preview__content{margin:0;max-width:100%;overflow:auto;color:#666;font-family:inherit;font-size:13px;line-height:1.62;white-space:pre-wrap;overflow-wrap:anywhere}.comic-creator .comic-outline-preview__content--json{padding:10px;border-radius:7px;background:#f8f8f8;color:#3f3f3f;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px;line-height:1.55;white-space:pre}.comic-creator .comic-segmented{display:inline-flex;padding:3px;border-radius:8px;background:#f0f0f0}.comic-creator .comic-segmented button{min-width:52px;border:none;border-radius:6px;padding:6px 10px;background:transparent;color:#666;cursor:pointer}.comic-creator .comic-segmented button.active{background:#fff;color:#c97d0a;font-weight:600;box-shadow:0 1px 3px #00000014}.comic-creator .comic-segmented button:disabled{cursor:not-allowed;opacity:.55}.comic-creator .comic-segmented--mode{background:#f5f1eb}.comic-creator .comic-segmented--mode button{min-width:108px;padding:7px 12px;font-size:12px}.comic-creator .comic-plan-control-row{display:grid;grid-template-columns:minmax(300px,auto) minmax(240px,1fr);align-items:center;gap:12px;min-height:38px;padding:8px 10px;border-radius:8px;background:#fff;border:1px solid rgba(0,0,0,.06)}.comic-creator .comic-mode-control{display:flex;align-items:center;gap:10px;min-width:0}.comic-creator .comic-mode-control>span{flex:0 0 auto;font-size:12px;font-weight:600;color:#555}.comic-creator .comic-field--inline-model{width:min(100%,520px);justify-self:end}.comic-creator .comic-plan-progress{margin:0;padding:9px 12px}.comic-creator .comic-plan-actions{padding-top:0;gap:12px}.comic-creator .comic-plan-actions button{min-height:42px;font-size:12px;font-weight:600;white-space:nowrap}.comic-creator .comic-batch-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px;border-radius:8px;background:#fafafa;border:1px solid rgba(0,0,0,.05)}.comic-creator .comic-batch-bar button{border:none;border-radius:8px;padding:8px 12px;background:#f4f4f4;color:#555;cursor:pointer}.comic-creator .comic-batch-bar button:hover{background:#f39c121a}.comic-creator .comic-batch-bar--generation{display:flex;flex-wrap:nowrap;align-items:center;gap:10px;margin-top:2px}.comic-creator .comic-batch-bar--generation .comic-selection-check{min-height:36px;margin-right:auto}.comic-creator .comic-batch-bar--generation button{min-height:36px;white-space:nowrap;flex:0 0 auto}.comic-creator .comic-batch-bar--generation>.comic-primary-btn{min-width:112px;background:#f39c12;color:#fff;font-weight:600}.comic-creator .comic-batch-bar--generation>.comic-primary-btn:hover{background:#e58d05}.comic-creator .comic-generation-model{display:inline-flex;flex:0 0 auto;min-width:0}.comic-creator .comic-generation-model .model-dropdown__trigger--minimal{min-height:36px;padding:6px 10px;border-radius:8px;background:#f4f4f4}.comic-creator .comic-generation-model .model-dropdown__trigger--minimal:hover{background:#f39c121a}.comic-creator .comic-generation-params{display:inline-flex;flex:0 1 auto;min-width:0;max-width:180px}.comic-creator .comic-generation-mode-check{min-height:36px;display:inline-flex;flex:0 0 auto;align-items:center;gap:6px;padding:0 10px;border-radius:8px;background:#f4f4f4;color:#555;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer}.comic-creator .comic-generation-mode-check input{cursor:pointer}.comic-creator .comic-generation-mode-check input:disabled{cursor:not-allowed}.comic-creator .comic-generation-mode-check:hover{background:#f39c121a}.comic-creator .comic-generation-mode-check.is-disabled{cursor:not-allowed;opacity:.55}.comic-creator .comic-generation-count{min-height:36px;display:inline-flex;flex:0 0 auto;align-items:center;gap:6px;padding:0 8px;border-radius:8px;background:#f4f4f4;color:#666;font-size:12px;white-space:nowrap}.comic-creator .comic-generation-count:hover{background:#f39c121a}.comic-creator .comic-generation-count-select{min-width:58px;border:none;background:transparent;color:#333;font:inherit;font-weight:600;outline:none;cursor:pointer}.comic-creator .comic-generation-count-select:disabled{cursor:not-allowed;opacity:.55}.comic-creator .comic-check{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#666;white-space:nowrap}.comic-creator .comic-check input[type=checkbox],.comic-creator .comic-generation-mode-check input[type=checkbox]{position:relative;flex:0 0 16px;width:16px;height:16px;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1.5px solid rgba(15,23,42,.24);border-radius:4px;background:#fff;cursor:pointer;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.comic-creator .comic-check input[type=checkbox]:after,.comic-creator .comic-generation-mode-check input[type=checkbox]:after{content:"";position:absolute;left:5px;top:2px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;opacity:0;transform:rotate(45deg)}.comic-creator .comic-check input[type=checkbox]:checked,.comic-creator .comic-generation-mode-check input[type=checkbox]:checked{border-color:#f39c12;background:#f39c12;box-shadow:0 2px 6px #f39c1238}.comic-creator .comic-check input[type=checkbox]:checked:after,.comic-creator .comic-generation-mode-check input[type=checkbox]:checked:after{opacity:1}.comic-creator .comic-check input[type=checkbox]:focus-visible,.comic-creator .comic-generation-mode-check input[type=checkbox]:focus-visible{outline:2px solid rgba(243,156,18,.28);outline-offset:2px}.comic-creator .comic-check input[type=checkbox]:disabled,.comic-creator .comic-generation-mode-check input[type=checkbox]:disabled{cursor:not-allowed;opacity:.55}.comic-creator .comic-page-list,.comic-creator .comic-history-list{display:flex;flex-direction:column;gap:10px}.comic-creator .comic-page-card{border-radius:8px;background:#fff;border:1px solid rgba(0,0,0,.07);overflow:hidden}.comic-creator .comic-page-card__head{display:flex;align-items:center;gap:6px;padding:8px 10px;background:#fafafa;border-bottom:1px solid rgba(0,0,0,.05)}.comic-creator .comic-page-title-row{display:inline-flex;align-items:center;gap:6px;min-width:0;margin-right:auto}.comic-creator .comic-page-title-row .comic-check{flex:0 0 auto;font-weight:600;color:#333}.comic-creator .comic-page-title-label{min-width:0;overflow:hidden;color:#555;font-size:12px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.comic-creator .comic-page-add-btn{flex:0 0 auto}.comic-creator .comic-page-card__body{display:grid;grid-template-columns:minmax(140px,32%) 1fr;gap:10px;padding:10px}.comic-creator .comic-page-preview-pane{display:flex;min-width:0;flex-direction:column;gap:8px}.comic-creator .comic-page-preview{position:relative;min-height:120px;aspect-ratio:16/9;border-radius:8px;overflow:hidden;background:#f4f4f4}.comic-creator .comic-page-preview img{width:100%;height:100%;display:block;-o-object-fit:contain;object-fit:contain;background:#111}.comic-creator .comic-page-preview-image-btn{width:100%;height:100%;display:block;padding:0;border:none;background:transparent;cursor:zoom-in}.comic-creator .comic-page-preview-image-btn:focus-visible{outline:2px solid rgba(243,156,18,.75);outline-offset:-2px}.comic-creator .comic-page-preview-action{position:absolute;right:8px;bottom:8px;z-index:1;display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:32px;padding:6px 10px;border:none;border-radius:8px;background:#ffffffeb;color:#c97d0a;cursor:pointer;font-size:12px;font-weight:600;box-shadow:0 4px 14px #00000024}.comic-creator .comic-page-preview-action svg{flex:0 0 auto}.comic-creator .comic-page-preview-action:hover:not(:disabled){background:#fff7ec;color:#b56f05}.comic-creator .comic-page-preview-action:disabled{cursor:not-allowed;opacity:.55}.comic-creator .comic-page-variant-strip{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.comic-creator .comic-page-library-fallback{display:flex;justify-content:flex-end;min-height:36px}.comic-creator .comic-page-library-btn{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid rgba(243,156,18,.22);border-radius:8px;background:#fff;color:#c97d0a;cursor:pointer;box-shadow:0 2px 8px #0000000f}.comic-creator .comic-page-library-btn svg{flex:0 0 auto}.comic-creator .comic-page-library-btn:hover{border-color:#f39c1275;background:#fff7ec;color:#b56f05}.comic-creator .comic-page-library-btn:focus-visible{outline:2px solid rgba(243,156,18,.65);outline-offset:2px}.comic-creator .comic-page-variant-thumb{position:relative;width:54px;height:34px;flex:0 0 auto;overflow:hidden;padding:0;border:2px solid transparent;border-radius:6px;background:#eee;cursor:pointer}.comic-creator .comic-page-variant-thumb img{width:100%;height:100%;display:block;-o-object-fit:cover;object-fit:cover}.comic-creator .comic-page-variant-thumb span{position:absolute;right:3px;bottom:2px;min-width:14px;padding:1px 4px;border-radius:999px;background:#0009;color:#fff;font-size:10px;line-height:1.2}.comic-creator .comic-page-variant-thumb:hover:not(:disabled){border-color:#f39c1273}.comic-creator .comic-page-variant-thumb:disabled{cursor:not-allowed;opacity:.6}.comic-creator .comic-page-variant-thumb--active{border-color:#f39c12}.comic-creator .comic-page-placeholder{width:100%;height:100%;min-height:100px;display:flex;align-items:center;justify-content:center;color:#aaa;background:repeating-linear-gradient(45deg,#f6f6f6,#f6f6f6 8px,#efefef 8px,#efefef 16px)}.comic-creator .comic-page-editor{display:flex;min-width:0;flex-direction:column;gap:8px}.comic-creator .comic-page-unified-prompt{min-height:182px;line-height:1.55}.comic-creator .comic-status{padding:3px 7px;border-radius:999px;font-size:11px;color:#777;background:#eee}.comic-creator .comic-status--running,.comic-creator .comic-status--queued{color:#c97d0a;background:#f39c121f}.comic-creator .comic-status--succeeded{color:#16825d;background:#16825d1f}.comic-creator .comic-status--failed,.comic-creator .comic-status--cancelled{color:#c0392b;background:#e74c3c1a}.comic-creator .comic-export-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.comic-creator .comic-export-card{min-height:92px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:1px solid rgba(0,0,0,.06);border-radius:8px;background:#fff;color:#555;cursor:pointer}.comic-creator .comic-export-card:hover:not(:disabled){border-color:#f39c1259;color:#c97d0a}.comic-creator .comic-export-card:disabled{cursor:not-allowed;opacity:.55}.comic-creator .comic-history-filters{display:grid;grid-template-columns:1fr 120px;gap:8px}.comic-creator .comic-history-empty{min-height:180px}.comic-creator .comic-history-item{display:grid;grid-template-columns:1fr auto;gap:8px;padding:10px;border-radius:8px;background:#fafafa;border:1px solid rgba(0,0,0,.05)}.comic-creator .comic-history-main{min-width:0;border:none;background:transparent;text-align:left;cursor:pointer}.comic-creator .comic-history-main strong,.comic-creator .comic-history-main span,.comic-creator .comic-history-main p{display:block}.comic-creator .comic-history-main strong{color:#333;margin-bottom:4px}.comic-creator .comic-history-main span{color:#999;font-size:12px;margin-bottom:4px}.comic-creator .comic-history-main p{margin:0;color:#666;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.comic-creator .comic-history-actions{display:flex;gap:4px}.comic-creator .comic-history-actions button{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(0,0,0,.06);border-radius:6px;background:#fff;color:#888;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease}.comic-creator .comic-history-actions button:hover{border-color:#f39c1259;background:#f39c1214;color:#c97d0a;transform:translateY(-1px)}.comic-creator .comic-history-actions .comic-history-star.is-starred{border-color:#f39c1252;background:#f39c121a;color:#d98200}.comic-creator .comic-history-actions .comic-history-delete:hover{border-color:#e34d5952;background:#e34d5914;color:var(--td-error-color, #e34d59)}@media(max-width:640px){.comic-creator .comic-config-grid,.comic-creator .comic-toolbar,.comic-creator .comic-page-card__body,.comic-creator .comic-plan-control-row,.comic-creator .comic-history-filters{grid-template-columns:1fr}.comic-creator .comic-plan-control-row,.comic-creator .comic-mode-control,.comic-creator .comic-batch-bar--generation,.comic-creator .comic-pdf-row,.comic-creator .comic-scenario-note{align-items:stretch;flex-direction:column}.comic-creator .comic-batch-bar--generation{flex-wrap:wrap}.comic-creator .comic-batch-bar--generation .comic-generation-model,.comic-creator .comic-batch-bar--generation .comic-generation-params,.comic-creator .comic-batch-bar--generation .comic-generation-count,.comic-creator .comic-batch-bar--generation .comic-generation-mode-check,.comic-creator .comic-batch-bar--generation .comic-segmented,.comic-creator .comic-batch-bar--generation button{width:100%}.comic-creator .comic-batch-bar--generation .comic-selection-check{margin-right:0}.comic-creator .comic-batch-bar--generation .comic-generation-params{max-width:none}.comic-creator .comic-scenario-note span{text-align:left}.comic-creator .comic-export-grid{grid-template-columns:1fr}.comic-creator .comic-field--inline-model{width:100%;justify-self:stretch}}
|