@robot-admin/naive-ui-components 0.17.1 → 0.17.2

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 (131) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/C_AntV.css +105 -105
  3. package/dist/C_AntV2.cjs +3 -3
  4. package/dist/C_AntV2.js +3 -3
  5. package/dist/C_AudioPlayer.css +53 -53
  6. package/dist/C_AudioPlayer2.cjs +1 -1
  7. package/dist/C_AudioPlayer2.js +1 -1
  8. package/dist/C_FilePreview.css +38 -38
  9. package/dist/C_FilePreview2.cjs +1 -1
  10. package/dist/C_FilePreview2.js +1 -1
  11. package/dist/C_FullCalendar.css +10 -11
  12. package/dist/C_FullCalendar2.cjs +1 -1
  13. package/dist/C_FullCalendar2.js +1 -1
  14. package/dist/C_Table.base.css +109 -109
  15. package/dist/C_Table.css +109 -109
  16. package/dist/C_Tabs.css +18 -18
  17. package/dist/C_TagsView.css +51 -51
  18. package/dist/C_TagsView2.cjs +1 -1
  19. package/dist/C_TagsView2.js +1 -1
  20. package/dist/C_VideoPlayer.css +20 -20
  21. package/dist/C_VideoPlayer2.cjs +2 -2
  22. package/dist/C_VideoPlayer2.js +3 -3
  23. package/dist/C_VtableGantt.css +44 -29
  24. package/dist/C_VtableGantt2.cjs +1 -1
  25. package/dist/C_VtableGantt2.js +1 -1
  26. package/dist/C_WorkFlow.css +111 -111
  27. package/dist/C_WorkFlow2.cjs +1 -1
  28. package/dist/C_WorkFlow2.js +1 -1
  29. package/dist/constants.d.cts +2 -2
  30. package/dist/constants.d.ts +2 -2
  31. package/dist/constants2.d.cts +2 -2
  32. package/dist/constants2.d.ts +2 -2
  33. package/dist/constants4.d.cts +5 -5
  34. package/dist/constants4.d.ts +5 -5
  35. package/dist/constants5.d.cts +11 -10
  36. package/dist/constants5.d.ts +11 -10
  37. package/dist/data.d.cts +12 -12
  38. package/dist/data.d.ts +12 -12
  39. package/dist/data2.cjs +1 -1
  40. package/dist/data2.js +1 -1
  41. package/dist/index.vue.d.cts +6 -6
  42. package/dist/index.vue.d.ts +6 -6
  43. package/dist/index10.vue.d.cts +1 -1
  44. package/dist/index10.vue.d.ts +4 -4
  45. package/dist/index11.vue.d.cts +4 -4
  46. package/dist/index11.vue.d.ts +5 -5
  47. package/dist/index12.vue.d.cts +5 -5
  48. package/dist/index12.vue.d.ts +2 -2
  49. package/dist/index13.vue.d.cts +2 -2
  50. package/dist/index13.vue.d.ts +5 -5
  51. package/dist/index14.vue.d.cts +5 -5
  52. package/dist/index14.vue.d.ts +5 -5
  53. package/dist/index15.vue.d.cts +5 -5
  54. package/dist/index15.vue.d.ts +2 -2
  55. package/dist/index16.vue.d.cts +2 -2
  56. package/dist/index16.vue.d.ts +1 -1
  57. package/dist/index17.vue.d.cts +1 -1
  58. package/dist/index17.vue.d.ts +1 -1
  59. package/dist/index18.vue.d.cts +1 -1
  60. package/dist/index18.vue.d.ts +6 -6
  61. package/dist/index19.vue.d.cts +6 -6
  62. package/dist/index19.vue.d.ts +5 -5
  63. package/dist/index2.vue.d.cts +3 -3
  64. package/dist/index2.vue.d.ts +3 -3
  65. package/dist/index20.vue.d.cts +2 -2
  66. package/dist/index20.vue.d.ts +2 -2
  67. package/dist/index22.vue.d.cts +2 -2
  68. package/dist/index22.vue.d.ts +2 -2
  69. package/dist/index23.vue.d.cts +2 -2
  70. package/dist/index23.vue.d.ts +2 -2
  71. package/dist/index25.vue.d.cts +9 -4
  72. package/dist/index25.vue.d.ts +9 -4
  73. package/dist/index27.vue.d.cts +1 -1
  74. package/dist/index27.vue.d.ts +1 -1
  75. package/dist/index28.vue.d.cts +3 -3
  76. package/dist/index28.vue.d.ts +3 -3
  77. package/dist/index3.vue.d.cts +3 -3
  78. package/dist/index3.vue.d.ts +3 -3
  79. package/dist/index4.vue.d.cts +5 -5
  80. package/dist/index5.vue.d.ts +2 -2
  81. package/dist/index6.vue.d.cts +2 -2
  82. package/dist/index6.vue.d.ts +4 -4
  83. package/dist/index7.vue.d.cts +4 -4
  84. package/dist/index7.vue.d.ts +2 -2
  85. package/dist/index8.vue.d.cts +2 -2
  86. package/dist/index8.vue.d.ts +5 -5
  87. package/dist/index9.vue.d.cts +5 -5
  88. package/dist/index9.vue.d.ts +1 -1
  89. package/dist/mapUtils.d.cts +1 -1
  90. package/dist/mapUtils.d.ts +1 -1
  91. package/dist/presets.d.cts +1 -1
  92. package/dist/presets.d.ts +1 -1
  93. package/dist/style.css +559 -545
  94. package/dist/useCalendarEvents.d.cts +11 -1
  95. package/dist/useCalendarEvents.d.ts +11 -1
  96. package/dist/useCollapsePanel.d.cts +3 -3
  97. package/dist/useCollapsePanel.d.ts +3 -3
  98. package/dist/useCropperCore.d.cts +7 -7
  99. package/dist/useCropperCore.d.ts +7 -7
  100. package/dist/useDraggableLayout.d.cts +10 -10
  101. package/dist/useDraggableLayout.d.ts +10 -10
  102. package/dist/useDynamicFormState.d.cts +2 -2
  103. package/dist/useDynamicFormState.d.ts +2 -2
  104. package/dist/useEdgeInteraction.d.cts +4 -2
  105. package/dist/useEdgeInteraction.d.ts +4 -2
  106. package/dist/useFullscreen.d.cts +3 -1
  107. package/dist/useFullscreen.d.ts +3 -1
  108. package/dist/useInfiniteScroll.d.cts +2 -2
  109. package/dist/useInfiniteScroll.d.ts +2 -2
  110. package/dist/useQRCode.d.cts +3 -3
  111. package/dist/useQRCode.d.ts +3 -3
  112. package/dist/useSearchState.d.cts +5 -5
  113. package/dist/useSearchState.d.ts +5 -5
  114. package/dist/useSignatureHistory.d.cts +6 -6
  115. package/dist/useSignatureHistory.d.ts +6 -6
  116. package/dist/useSplitResize.d.cts +9 -9
  117. package/dist/useSplitResize.d.ts +9 -9
  118. package/dist/useTableQuery.cjs +3 -3
  119. package/dist/useTableQuery.d.cts +9 -9
  120. package/dist/useTableQuery.d.ts +9 -9
  121. package/dist/useTableQuery.js +3 -3
  122. package/dist/useTimeSelection.d.cts +3 -3
  123. package/dist/useTimeSelection.d.ts +3 -3
  124. package/dist/useWorkflowValidation.d.cts +10 -5
  125. package/dist/useWorkflowValidation.d.ts +10 -5
  126. package/dist/verification.d.cts +5 -5
  127. package/dist/verification.d.ts +5 -5
  128. package/docs/components.en.md +4 -0
  129. package/docs/components.md +4 -0
  130. package/docs/guides/table-density.md +6 -0
  131. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import{t as e}from"./export-helper.js";import{i as t,t as n}from"./storage.js";import{Fragment as r,Transition as i,computed as a,createBlock as o,createCommentVNode as s,createElementBlock as c,createElementVNode as l,createTextVNode as u,createVNode as d,defineComponent as f,mergeModels as p,nextTick as m,normalizeClass as h,normalizeStyle as g,onBeforeUnmount as _,onMounted as v,openBlock as y,ref as b,renderList as x,renderSlot as S,resolveComponent as C,shallowRef as w,toDisplayString as T,toRef as E,unref as D,useModel as O,watch as k,withCtx as A}from"vue";import{NBadge as j,NButton as M,NCheckbox as N,NCheckboxGroup as P,NPopover as F,NRadio as I,NRadioGroup as L}from"naive-ui";const R=[.5,.75,1,1.25,1.5,2,3],z=1,B=.75,V=3e4,H=5e3,ee={"360p":`流畅 360P`,"480p":`标清 480P`,"720p":`高清 720P`,"1080p":`超清 1080P`,"1440p":`2K 1440P`,"4K":`4K 超高清`},U={".mp4":`mp4`,".m3u8":`hls`,".mpd":`dash`,".flv":`flv`},W={SPACE:`播放/暂停`,ARROW_LEFT:`快退 5 秒`,ARROW_RIGHT:`快进 5 秒`,ARROW_UP:`音量增加 10%`,ARROW_DOWN:`音量减少 10%`,F:`全屏/退出全屏`,M:`静音/取消静音`,ESC:`退出全屏`},te=5,G=.1,K=`c_video_player_`,q={VOLUME:`${K}volume`,PLAYBACK_RATE:`${K}playback_rate`,PROGRESS:`${K}progress_`,BOOKMARKS:`${K}bookmarks_`},J={READY:`ready`,PLAY:`play`,PAUSE:`pause`,ENDED:`ended`,ERROR:`error`,SEEKING:`seeking`,SEEKED:`seeked`,TIME_UPDATE:`timeupdate`,WAITING:`waiting`,DURATION_CHANGE:`durationchange`,RATE_CHANGE:`ratechange`,FULLSCREEN_CHANGE:`fullscreen_change`,DEFINITION_CHANGE:`definition_change`,BEFORE_DEFINITION_CHANGE:`before_definition_change`,AFTER_DEFINITION_CHANGE:`after_definition_change`},Y={fontSize:14,color:`rgba(150, 150, 150, 0.15)`,rotate:-25,gap:120};function ne(e){try{let{pathname:t}=new URL(e,location.href);return U[t.slice(t.lastIndexOf(`.`)).toLowerCase()]??`mp4`}catch{return`mp4`}}function re(e){let t=b(null),n=w(null),r=b(`idle`),i=b(0),a=b(0),o=b(!1),s=0,c=!1;function l(){return{el:t.value,url:e.url,width:e.width??`100%`,height:e.height??`100%`,fluid:e.fluid!==!1,fitVideoSize:`fixWidth`,poster:e.poster??``,playsinline:!0,videoAttributes:{crossOrigin:`anonymous`},lang:e.lang??`zh-cn`,inactive:3e3}}function u(){return{autoplay:e.autoplay??!1,autoplayMuted:e.autoplayMuted??!1,loop:e.loop??!1,volume:e.volume??B,startTime:e.startTime??0,defaultPlaybackRate:e.defaultPlaybackRate??1,playbackRate:e.playbackRates?{list:e.playbackRates.map(e=>e)}:!0}}function d(){return{pip:e.pip!==!1,screenShot:e.screenshot??!1,mini:e.miniPlayer??!1,fullscreen:e.fullscreen!==!1,cssFullscreen:e.cssFullscreen!==!1,keyShortcut:!1}}function f(t){e.thumbnail&&(t.thumbnail={urls:e.thumbnail.urls,pic_num:e.thumbnail.picNum,col:e.thumbnail.col,row:e.thumbnail.row,width:e.thumbnail.width,height:e.thumbnail.height}),e.qualityList?.length&&(t.definition={list:e.qualityList.map(e=>({url:e.url,definition:e.label,text:{zh:e.label,en:e.label},bitrate:e.bitrate})),defaultDefinition:e.defaultQuality??e.qualityList[0].label}),e.playerOptions&&Object.assign(t,e.playerOptions)}function p(){let t=e.sourceType??ne(e.url),n={...l(),...u(),...d()};return f(n),n.__sourceType=t,n}async function m(){if(c||!t.value)return;let e=++s;r.value=`loading`;let l=p(),u=l.__sourceType;delete l.__sourceType;let d;try{if(u===`hls`){let{default:e}=await import(`xgplayer-hls`);d=e}else{let{default:e}=await import(`xgplayer`);d=e}if(c||e!==s||!t.value)return;n.value=new d(l)}catch(t){if(c||e!==s)return;throw r.value=`error`,t}let f=n.value;f.on(J.READY,()=>{r.value=`ready`}),f.on(J.PLAY,()=>{r.value=`playing`}),f.on(J.PAUSE,()=>{r.value=`paused`}),f.on(J.ENDED,()=>{r.value=`ended`}),f.on(J.ERROR,()=>{r.value=`error`}),f.on(J.TIME_UPDATE,()=>{i.value=f.currentTime??0,a.value=f.duration??0}),f.on(J.DURATION_CHANGE,()=>{a.value=f.duration??0}),f.on(J.FULLSCREEN_CHANGE,e=>{o.value=e})}function h(){s++;let e=n.value;e&&(e.destroy(),n.value=null),r.value=`idle`,i.value=0,a.value=0,o.value=!1}return _(()=>{c=!0,h()}),{containerRef:t,playerRef:n,playerState:r,currentTime:i,duration:a,isFullscreen:o,initPlayer:m,destroyPlayer:h}}function X(e){let n=b(ie()),r=b(ae()),i=b(!1);function a(){e.value?.play()}function o(){e.value?.pause()}function s(){let t=e.value;t&&(t.paused?t.play():t.pause())}function c(t){let n=e.value;n&&(n.currentTime=Math.max(0,Math.min(t,n.duration??0)))}function l(r){let a=e.value;if(!a)return;let o=Math.max(0,Math.min(1,r));a.volume=o,n.value=o,i.value=o===0,t(q.VOLUME,o)}function u(){let t=e.value;t&&(i.value?l(n.value>0?n.value:.5):(t.volume=0,i.value=!0))}function d(n){let i=e.value;i&&(i.playbackRate=n,r.value=n,t(q.PLAYBACK_RATE,n))}function f(){let t=e.value;t&&(t.volume=n.value,t.playbackRate=r.value,i.value=n.value===0)}return k(e,e=>{e&&f()}),{volume:n,playbackRate:r,isMuted:i,play:a,pause:o,togglePlay:s,seek:c,setVolume:l,toggleMute:u,setPlaybackRate:d}}function ie(){let e=Number(n(q.VOLUME));return Number.isFinite(e)&&e>=0&&e<=1?e:.75}function ae(){let e=Number(n(q.PLAYBACK_RATE));return Number.isFinite(e)&&e>0?e:1}function Z(e,r,i,a,o,s){let c=b(0),l=b(0),u=0,d=!1,f=null,p=null;function m(){return q.PROGRESS+encodeURIComponent(a.value)}function h(){let e=n(m());return!e||typeof e!=`object`?0:(c.value=Q(e.watchedDuration),l.value=Math.min(100,Q(e.completionPercent)),Q(e.currentTime))}function g(){return{currentTime:r.value,duration:i.value,watchedDuration:c.value,completionPercent:l.value,updatedAt:Date.now()}}function v(){t(m(),g())}function y(e,t){if(e)try{Promise.resolve(e(t)).catch(()=>void 0)}catch{}}function x(){y(o,g()),v()}function S(){if(!d)return;let e=performance.now();if(u>0){let t=(e-u)/1e3;t>0&&t<5&&(c.value+=t)}u=e,i.value>0&&(l.value=Math.min(100,Math.round(c.value/i.value*100)))}function C(){let e=s?.heartbeatInterval??V;!Number.isFinite(e)||e<=0||(f=setInterval(()=>{d&&y(s?.onHeartbeat,g())},e))}function w(){p=setInterval(()=>{d&&x()},H)}function T(){let e=g();v(),y(o,e)}function E(){if(document.hidden)S(),x(),d=!1;else{let t=e.value;t&&!t.paused&&(d=!0,u=performance.now())}}function D(){A(),C(),w(),window.addEventListener(`beforeunload`,T),document.addEventListener(`visibilitychange`,E)}function O(){d=!1,A(),v()}function A(){f&&=(clearInterval(f),null),p&&=(clearInterval(p),null),window.removeEventListener(`beforeunload`,T),document.removeEventListener(`visibilitychange`,E)}function j(){d=!0,u=performance.now()}function M(){S(),d=!1,u=0,v()}function N(){S()}return k(e,e=>{e?D():A()}),_(()=>{O()}),{watchedDuration:c,completionPercent:l,getProgressData:g,restoreProgress:h,saveProgress:v,startTracking:D,stopTracking:O,onPlay:j,onPause:M,onTimeUpdate:N}}function Q(e){let t=Number(e);return Number.isFinite(t)&&t>=0?t:0}function oe(e,t=[]){let n=b(null),r=b(!1);function i(e){e.on(J.AFTER_DEFINITION_CHANGE,e=>{n.value=e.to,r.value=!1}),e.on(J.BEFORE_DEFINITION_CHANGE,()=>{r.value=!0})}function a(n){let i=e.value;if(!i||!t.length)return;let a=t.find(e=>e.label===n);if(!a){console.warn(`[C_VideoPlayer] 未找到清晰度: ${n}`);return}r.value=!0,i.changeDefinition?.({url:a.url,definition:a.label,text:{zh:a.label,en:a.label},bitrate:a.bitrate})}return{currentQuality:n,isSwitching:r,switchQuality:a,bindEvents:i}}function $(e,t,n,r){let i=a(()=>{if(!e.value.length)return null;let n=t.value;return e.value.find(e=>n>=e.startTime&&n<e.endTime)??null}),o=a(()=>i.value?e.value.findIndex(e=>e.id===i.value.id):-1),s=a(()=>!n.value||!e.value.length?[]:e.value.map(e=>({...e,startPercent:e.startTime/n.value*100,endPercent:e.endTime/n.value*100,widthPercent:(e.endTime-e.startTime)/n.value*100})));function c(t){let n=e.value.find(e=>e.id===t);n&&r(n.startTime)}function l(){let t=o.value;t>0&&r(e.value[t-1].startTime)}function u(){let t=o.value;t>=0&&t<e.value.length-1&&r(e.value[t+1].startTime)}return{currentChapter:i,currentChapterIndex:o,chapterMarkers:s,goToChapter:c,prevChapter:l,nextChapter:u}}function se(e,r,i,a=[]){let o=b([...a]);function s(){return q.BOOKMARKS+encodeURIComponent(e.value)}function c(){let e=n(s());Array.isArray(e)&&(o.value=e.filter(e=>typeof e==`object`&&!!e&&typeof e.id==`string`&&typeof e.time==`number`&&Number.isFinite(e.time)&&typeof e.note==`string`&&typeof e.createdAt==`number`),u())}function l(){t(s(),o.value)}function u(){o.value.sort((e,t)=>e.time-t.time)}function d(e=``){let t={id:typeof crypto<`u`&&`randomUUID`in crypto?`bm_${crypto.randomUUID()}`:`bm_${Date.now()}_${o.value.length}`,time:r.value,note:e,createdAt:Date.now()};return o.value.push(t),u(),l(),t}function f(e){let t=o.value.findIndex(t=>t.id===e);t!==-1&&(o.value.splice(t,1),l())}function p(e,t){let n=o.value.find(t=>t.id===e);n&&(n.note=t,l())}function m(e){let t=o.value.find(t=>t.id===e);t&&i(t.time)}function h(){o.value=[],l()}return a.length||c(),{bookmarks:o,addBookmark:d,removeBookmark:f,updateBookmark:p,goToBookmark:m,clearBookmarks:h}}function ce(e,t,n){let r=b(0),i=b(!0),a=b(!1),o=b(n?.watermark??!1),s=b(n?.watermarkText??``);function c(e){e>r.value&&(r.value=e)}function l(e){!n?.preventSeekOnFirstWatch||!i.value||(e.currentTime??0)>r.value+2&&(e.currentTime=r.value)}function u(){if(!n?.focusDetection)return;let t=e.value;t&&(document.hidden?(a.value=!0,t.paused||t.pause()):a.value=!1)}function d(e){n?.preventSeekOnFirstWatch&&e.on(J.SEEKING,()=>l(e)),e.on(J.TIME_UPDATE,()=>{c(t.value)}),n?.focusDetection&&document.addEventListener(`visibilitychange`,u)}function f(){i.value=!1}function p(e){s.value=e}return _(()=>{document.removeEventListener(`visibilitychange`,u)}),{maxWatchedTime:r,isFirstWatch:i,isBlurred:a,showWatermark:o,watermarkText:s,bindEvents:d,markAsWatched:f,setWatermarkText:p}}function le(e){let t=[];e.forEach((e,n)=>{!Number.isFinite(e.start)||!Number.isFinite(e.end)||e.end<=e.start||t.push({time:e.start,index:n,active:!0},{time:e.end,index:n,active:!1})}),t.sort((e,t)=>e.time-t.time);let n=new Uint8Array(e.length),r=[],i=[],a=e=>{let t=r.length;for(r.push(e);t>0;){let n=t-1>>>1;if(r[n]<=e)break;r[t]=r[n],t=n}r[t]=e},o=()=>{for(;r.length&&!n[r[0]];){let e=r.pop();if(!r.length)break;let t=0;for(;t*2+1<r.length;){let n=t*2+1;if(n+1<r.length&&r[n+1]<r[n]&&n++,r[n]>=e)break;r[t]=r[n],t=n}r[t]=e}},s=0;for(;s<t.length;){let c=t[s].time;for(;s<t.length&&t[s].time===c;){let e=t[s++];n[e.index]=Number(e.active),e.active&&a(e.index)}if(o(),!r.length||s===t.length)continue;let l=t[s].time,{text:u}=e[r[0]],d=i[i.length-1];d?.end===c&&d.text===u?d.end=l:i.push({start:c,end:l,text:u})}return i}function ue(e,t){if(!Number.isFinite(t))return``;let n=0,r=e.length;for(;n<r;){let i=n+r>>>1;e[i].start<=t?n=i+1:r=i}let i=e[n-1];return i&&t<i.end?i.text:``}function de(e){let t=e.trim().match(/^(?:(\d{2,}):)?(\d{2}):(\d{2})\.(\d{3})$/);if(!t)return NaN;let[,n=`0`,r,i,a]=t;return Number(r)>59||Number(i)>59?NaN:Number(n)*3600+Number(r)*60+Number(i)+Number(a)/1e3}function fe(e){let t=[],n=e.replace(/\r\n?/g,`
1
+ import{t as e}from"./export-helper.js";import{i as t,t as n}from"./storage.js";import{Fragment as r,Transition as i,computed as a,createBlock as o,createCommentVNode as s,createElementBlock as c,createElementVNode as l,createTextVNode as u,createVNode as d,defineComponent as f,mergeModels as p,mergeProps as m,nextTick as h,normalizeClass as g,normalizeStyle as _,onBeforeUnmount as v,onMounted as y,onUnmounted as b,openBlock as x,ref as S,renderList as C,renderSlot as w,resolveComponent as T,shallowRef as E,toDisplayString as D,toRef as O,toValue as k,unref as A,useModel as j,watch as M,withCtx as N}from"vue";import{NBadge as P,NButton as F,NCheckbox as I,NCheckboxGroup as L,NPopover as R,NRadio as z,NRadioGroup as B}from"naive-ui";const V=[.5,.75,1,1.25,1.5,2,3],H=1,U=.75,W=3e4,G=5e3,ee={"360p":`流畅 360P`,"480p":`标清 480P`,"720p":`高清 720P`,"1080p":`超清 1080P`,"1440p":`2K 1440P`,"4K":`4K 超高清`},te={".mp4":`mp4`,".m3u8":`hls`,".mpd":`dash`,".flv":`flv`},ne={SPACE:`播放/暂停`,ARROW_LEFT:`快退 5 秒`,ARROW_RIGHT:`快进 5 秒`,ARROW_UP:`音量增加 10%`,ARROW_DOWN:`音量减少 10%`,F:`全屏/退出全屏`,M:`静音/取消静音`,ESC:`退出全屏`},re=5,K=.1,q=`c_video_player_`,J={VOLUME:`${q}volume`,PLAYBACK_RATE:`${q}playback_rate`,PROGRESS:`${q}progress_`,BOOKMARKS:`${q}bookmarks_`},Y={READY:`ready`,PLAY:`play`,PAUSE:`pause`,ENDED:`ended`,ERROR:`error`,SEEKING:`seeking`,SEEKED:`seeked`,TIME_UPDATE:`timeupdate`,WAITING:`waiting`,DURATION_CHANGE:`durationchange`,RATE_CHANGE:`ratechange`,FULLSCREEN_CHANGE:`fullscreen_change`,DEFINITION_CHANGE:`definition_change`,BEFORE_DEFINITION_CHANGE:`before_definition_change`,AFTER_DEFINITION_CHANGE:`after_definition_change`},X={fontSize:14,color:`rgba(150, 150, 150, 0.15)`,rotate:-25,gap:120};function ie(e){try{let{pathname:t}=new URL(e,location.href);return te[t.slice(t.lastIndexOf(`.`)).toLowerCase()]??`mp4`}catch{return`mp4`}}function ae(e){let t=S(null),n=E(null),r=S(`idle`),i=S(0),a=S(0),o=S(!1),s=0,c=!1;function l(){return{el:t.value,url:e.url,width:e.width??`100%`,height:e.height??`100%`,fluid:e.fluid!==!1,fitVideoSize:`fixWidth`,poster:e.poster??``,playsinline:!0,videoAttributes:{crossOrigin:`anonymous`},lang:e.lang??`zh-cn`,inactive:3e3}}function u(){return{autoplay:e.autoplay??!1,autoplayMuted:e.autoplayMuted??!1,loop:e.loop??!1,volume:e.volume??U,startTime:e.startTime??0,defaultPlaybackRate:e.defaultPlaybackRate??1,playbackRate:e.playbackRates?{list:e.playbackRates.map(e=>e)}:!0}}function d(){return{pip:e.pip!==!1,screenShot:e.screenshot??!1,mini:e.miniPlayer??!1,fullscreen:e.fullscreen!==!1,cssFullscreen:e.cssFullscreen!==!1,keyShortcut:!1}}function f(t){e.thumbnail&&(t.thumbnail={urls:e.thumbnail.urls,pic_num:e.thumbnail.picNum,col:e.thumbnail.col,row:e.thumbnail.row,width:e.thumbnail.width,height:e.thumbnail.height}),e.qualityList?.length&&(t.definition={list:e.qualityList.map(e=>({url:e.url,definition:e.label,text:{zh:e.label,en:e.label},bitrate:e.bitrate})),defaultDefinition:e.defaultQuality??e.qualityList[0].label}),e.playerOptions&&Object.assign(t,e.playerOptions)}function p(){let t=e.sourceType??ie(e.url),n={...l(),...u(),...d()};return f(n),n.__sourceType=t,n}async function m(){if(c||!t.value)return;h();let e=++s;r.value=`loading`;let l=p(),u=l.__sourceType;delete l.__sourceType;let d;try{if(u===`hls`){let{default:e}=await import(`xgplayer-hls`);d=e}else{let{default:e}=await import(`xgplayer`);d=e}if(c||e!==s||!t.value)return;n.value=new d(l)}catch(t){if(c||e!==s)return;throw r.value=`error`,t}let f=n.value,m=()=>!c&&e===s&&n.value===f;f.on(Y.READY,()=>{m()&&(r.value=`ready`)}),f.on(Y.PLAY,()=>{m()&&(r.value=`playing`)}),f.on(Y.PAUSE,()=>{m()&&(r.value=`paused`)}),f.on(Y.ENDED,()=>{m()&&(r.value=`ended`)}),f.on(Y.ERROR,()=>{m()&&(r.value=`error`)}),f.on(Y.TIME_UPDATE,()=>{m()&&(i.value=f.currentTime??0,a.value=f.duration??0)}),f.on(Y.DURATION_CHANGE,()=>{m()&&(a.value=f.duration??0)}),f.on(Y.FULLSCREEN_CHANGE,e=>{m()&&(o.value=e)})}function h(){s++;let e=n.value;e&&(n.value=null,e.destroy()),r.value=`idle`,i.value=0,a.value=0,o.value=!1}return v(()=>{c=!0}),b(()=>{c=!0,h()}),{containerRef:t,playerRef:n,playerState:r,currentTime:i,duration:a,isFullscreen:o,initPlayer:m,destroyPlayer:h}}function oe(e){let n=S(se()),r=S(ce()),i=S(!1);function a(){e.value?.play()}function o(){e.value?.pause()}function s(){let t=e.value;t&&(t.paused?t.play():t.pause())}function c(t){let n=e.value;n&&(n.currentTime=Math.max(0,Math.min(t,n.duration??0)))}function l(r){let a=e.value;if(!a)return;let o=Math.max(0,Math.min(1,r));a.volume=o,n.value=o,i.value=o===0,t(J.VOLUME,o)}function u(){let t=e.value;t&&(i.value?l(n.value>0?n.value:.5):(t.volume=0,i.value=!0))}function d(n){let i=e.value;i&&(i.playbackRate=n,r.value=n,t(J.PLAYBACK_RATE,n))}function f(){let t=e.value;t&&(t.volume=n.value,t.playbackRate=r.value,i.value=n.value===0)}return M(e,e=>{e&&f()}),{volume:n,playbackRate:r,isMuted:i,play:a,pause:o,togglePlay:s,seek:c,setVolume:l,toggleMute:u,setPlaybackRate:d}}function se(){let e=Number(n(J.VOLUME));return Number.isFinite(e)&&e>=0&&e<=1?e:.75}function ce(){let e=Number(n(J.PLAYBACK_RATE));return Number.isFinite(e)&&e>0?e:1}function Z(e,r,i,a,o,s){let c=S(0),l=S(0),u=0,d=!1,f=!1,p=null,m=null,h=a.value;function g(){return J.PROGRESS+encodeURIComponent(h)}function _(){let e=n(g());return!e||typeof e!=`object`?0:(c.value=Q(e.watchedDuration),l.value=Math.min(100,Q(e.completionPercent)),Q(e.currentTime))}function y(){return{currentTime:r.value,duration:i.value,watchedDuration:c.value,completionPercent:l.value,updatedAt:Date.now()}}function b(){h&&t(g(),y())}function x(e,t){if(e)try{Promise.resolve(e(t)).catch(()=>void 0)}catch{}}function C(){x(o,y()),b()}function w(){if(!d)return;let e=performance.now();if(u>0){let t=(e-u)/1e3;t>0&&t<5&&(c.value+=t)}u=e,i.value>0&&(l.value=Math.min(100,Math.round(c.value/i.value*100)))}function T(){let e=s?.heartbeatInterval??W;!Number.isFinite(e)||e<=0||(p=setInterval(()=>{d&&x(s?.onHeartbeat,y())},e))}function E(){m=setInterval(()=>{d&&C()},G)}function D(){let e=y();b(),x(o,e)}function O(){if(document.hidden)w(),C(),d=!1;else{let t=e.value;t&&!t.paused&&(d=!0,u=performance.now())}}function k(){j(),f=!0,T(),E(),window.addEventListener(`beforeunload`,D),document.addEventListener(`visibilitychange`,O)}function A(){let e=f;w(),d=!1,f=!1,j(),e&&b()}function j(){p&&=(clearInterval(p),null),m&&=(clearInterval(m),null),window.removeEventListener(`beforeunload`,D),document.removeEventListener(`visibilitychange`,O)}function N(){f||k(),d=!0,u=performance.now()}function P(){w(),d=!1,u=0,b()}function F(){w()}return M(a,e=>{A(),h=e,c.value=0,l.value=0,u=0,r.value=0,i.value=0},{flush:`sync`}),M(e,e=>{e?k():j()}),v(()=>{A()}),{watchedDuration:c,completionPercent:l,getProgressData:y,restoreProgress:_,saveProgress:b,startTracking:k,stopTracking:A,onPlay:N,onPause:P,onTimeUpdate:F}}function Q(e){let t=Number(e);return Number.isFinite(t)&&t>=0?t:0}function le(e,t){let n=S(null),r=S(!1),i=()=>k(t)??[],a=e=>({url:e.url,definition:e.label,text:{zh:e.label,en:e.label},bitrate:e.bitrate});function o(){let i=k(t);if(i===void 0)return;let o=i,s=e.value;s&&(s.definitionList=o.map(a)),o.some(e=>e.label===n.value)||(n.value=null,r.value=!1)}M([e,()=>k(t)],o,{deep:!0});function s(a){a.on(Y.AFTER_DEFINITION_CHANGE,o=>{if(e.value!==a)return;let s=typeof o.to==`string`?o.to:o.to.definition;k(t)!==void 0&&!i().some(e=>e.label===s)||(n.value=s,r.value=!1)}),a.on(Y.BEFORE_DEFINITION_CHANGE,()=>{e.value===a&&(r.value=!0)})}function c(t){let n=e.value,o=i().find(e=>e.label===t);!n||!o||(r.value=!0,n.changeDefinition(a(o)))}return{currentQuality:n,isSwitching:r,switchQuality:c,bindEvents:s}}function ue(e,t,n,r){let i=a(()=>{if(!e.value.length)return null;let n=t.value;return e.value.find(e=>n>=e.startTime&&n<e.endTime)??null}),o=a(()=>i.value?e.value.findIndex(e=>e.id===i.value.id):-1),s=a(()=>!n.value||!e.value.length?[]:e.value.map(e=>({...e,startPercent:e.startTime/n.value*100,endPercent:e.endTime/n.value*100,widthPercent:(e.endTime-e.startTime)/n.value*100})));function c(t){let n=e.value.find(e=>e.id===t);n&&r(n.startTime)}function l(){let t=o.value;t>0&&r(e.value[t-1].startTime)}function u(){let t=o.value;t>=0&&t<e.value.length-1&&r(e.value[t+1].startTime)}return{currentChapter:i,currentChapterIndex:o,chapterMarkers:s,goToChapter:c,prevChapter:l,nextChapter:u}}function de(e,r,i,a=[]){let o=S([]);function s(){return J.BOOKMARKS+encodeURIComponent(e.value)}function c(){let e=n(s());Array.isArray(e)&&(o.value=e.filter(e=>typeof e==`object`&&!!e&&typeof e.id==`string`&&typeof e.time==`number`&&Number.isFinite(e.time)&&typeof e.note==`string`&&typeof e.createdAt==`number`),u())}function l(){t(s(),o.value)}function u(){o.value.sort((e,t)=>e.time-t.time)}function d(e=``){let t={id:typeof crypto<`u`&&`randomUUID`in crypto?`bm_${crypto.randomUUID()}`:`bm_${Date.now()}_${o.value.length}`,time:r.value,note:e,createdAt:Date.now()};return o.value.push(t),u(),l(),t}function f(e){let t=o.value.findIndex(t=>t.id===e);t!==-1&&(o.value.splice(t,1),l())}function p(e,t){let n=o.value.find(t=>t.id===e);n&&(n.note=t,l())}function m(e){let t=o.value.find(t=>t.id===e);t&&i(t.time)}function h(){o.value=[],l()}return M([e,()=>k(a)],()=>{let e=k(a)??[];o.value=e.map(e=>({...e})),e.length||c()},{immediate:!0,deep:!0,flush:`sync`}),{bookmarks:o,addBookmark:d,removeBookmark:f,updateBookmark:p,goToBookmark:m,clearBookmarks:h}}function fe(e,t,n){let r=a(()=>k(n)),i=S(0),o=S(!0),s=S(!1),c=a(()=>r.value?.watermark??!1),l=S(r.value?.watermarkText??``);function u(e){e>i.value&&(i.value=e)}function d(e){!r.value?.preventSeekOnFirstWatch||!o.value||(e.currentTime??0)>i.value+2&&(e.currentTime=i.value)}function f(){if(!r.value?.focusDetection)return;let t=e.value;t&&(document.hidden?(s.value=!0,t.paused||t.pause()):s.value=!1)}function p(n){n.on(Y.SEEKING,()=>{e.value===n&&d(n)}),n.on(Y.TIME_UPDATE,()=>{e.value===n&&u(t.value)}),document.addEventListener(`visibilitychange`,f)}function m(){o.value=!1}function h(e){l.value=e}return M(()=>r.value?.watermarkText,e=>{l.value=e??``}),v(()=>{document.removeEventListener(`visibilitychange`,f)}),{maxWatchedTime:i,isFirstWatch:o,isBlurred:s,showWatermark:c,watermarkText:l,bindEvents:p,markAsWatched:m,setWatermarkText:h}}function pe(e){let t=[];e.forEach((e,n)=>{!Number.isFinite(e.start)||!Number.isFinite(e.end)||e.end<=e.start||t.push({time:e.start,index:n,active:!0},{time:e.end,index:n,active:!1})}),t.sort((e,t)=>e.time-t.time);let n=new Uint8Array(e.length),r=[],i=[],a=e=>{let t=r.length;for(r.push(e);t>0;){let n=t-1>>>1;if(r[n]<=e)break;r[t]=r[n],t=n}r[t]=e},o=()=>{for(;r.length&&!n[r[0]];){let e=r.pop();if(!r.length)break;let t=0;for(;t*2+1<r.length;){let n=t*2+1;if(n+1<r.length&&r[n+1]<r[n]&&n++,r[n]>=e)break;r[t]=r[n],t=n}r[t]=e}},s=0;for(;s<t.length;){let c=t[s].time;for(;s<t.length&&t[s].time===c;){let e=t[s++];n[e.index]=Number(e.active),e.active&&a(e.index)}if(o(),!r.length||s===t.length)continue;let l=t[s].time,{text:u}=e[r[0]],d=i[i.length-1];d?.end===c&&d.text===u?d.end=l:i.push({start:c,end:l,text:u})}return i}function me(e,t){if(!Number.isFinite(t))return``;let n=0,r=e.length;for(;n<r;){let i=n+r>>>1;e[i].start<=t?n=i+1:r=i}let i=e[n-1];return i&&t<i.end?i.text:``}function he(e){let t=e.trim().match(/^(?:(\d{2,}):)?(\d{2}):(\d{2})\.(\d{3})$/);if(!t)return NaN;let[,n=`0`,r,i,a]=t;return Number(r)>59||Number(i)>59?NaN:Number(n)*3600+Number(r)*60+Number(i)+Number(a)/1e3}function ge(e){let t=[],n=e.replace(/\r\n?/g,`
2
2
  `).trim().split(/\n\s*\n/);for(let e of n){let n=e.trim().split(`
3
- `);if(/^(?:NOTE|STYLE|REGION)(?:\s|$)/.test(n[0]))continue;let r=n.findIndex(e=>e.includes(`-->`));if(r===-1)continue;let[i,a]=n[r].split(`-->`);if(!i||!a)continue;let o=de(i),s=de(a.trim().split(/\s+/)[0]);if(!Number.isFinite(o)||!Number.isFinite(s)||s<=o)continue;let c=n.slice(r+1).join(`
4
- `).replace(/<[^>]+>/g,``).trim();c&&t.push({start:o,end:s,text:c})}return t}function pe(e,t=[],n=b(0)){let r=b(null),i=b([...t]),o=w({}),s=b(!1),c=new Map,l=0,u=!1,d=a(()=>{if(!r.value)return``;let e=o.value[r.value];return e?ue(e.timeline,n.value):``}),f=a(()=>i.value.length>0);function p(e){if(u)return Promise.resolve([]);if(Object.prototype.hasOwnProperty.call(o.value,e))return Promise.resolve(o.value[e].cues);let t=c.get(e);if(t)return t.promise;let n=i.value.find(t=>t.language===e);if(!n)return Promise.resolve([]);let r=new AbortController;s.value=!0;let a=Promise.resolve().then(async()=>{let t=await fetch(n.src,{signal:r.signal});if(!t.ok)throw Error(`字幕加载失败: ${n.src} (${t.status})`);let i=await t.text();if(u||r.signal.aborted)return[];let a=fe(i);return o.value={...o.value,[e]:{cues:a,timeline:le(a)}},a}).catch(e=>(!u&&!r.signal.aborted&&console.warn(`[C_VideoPlayer] 字幕加载异常:`,e),[])).finally(()=>{c.delete(e),u||(s.value=c.size>0)});return c.set(e,{controller:r,promise:a}),a}async function m(e){if(u)return;if(!i.value.find(t=>t.language===e)){console.warn(`[C_VideoPlayer] 未找到字幕轨道: ${e}`);return}let t=++l;await p(e),!u&&t===l&&(r.value=e)}async function h(){let e=i.value.find(e=>e.default)??i.value[0];e&&await m(e.language)}function g(){l++,r.value=null}function v(){r.value?g():h()}return _(()=>{u=!0,l++,c.forEach(({controller:e})=>e.abort()),c.clear(),s.value=!1}),{activeLanguage:r,subtitleList:i,currentText:d,hasSubtitles:f,isLoading:s,initSubtitles:h,switchSubtitle:m,closeSubtitle:g,toggleSubtitle:v}}function me(e,t,n){let r=b(null),i=b(new Set),a=b(``),o=b(!1),s=b(!1);function c(){if(r.value||!n.value.length)return;let e=t.value,a=n.value.find(t=>!i.value.has(t.id)&&Math.abs(e-t.triggerTime)<1);a&&l(a)}function l(t){r.value=t,a.value=t.type===`multiple`?[]:``,o.value=!1,s.value=!1,e.value?.pause()}function u(){if(!r.value)return!1;let e=r.value,t=p(e,a.value);return s.value=t,o.value=!0,(t||!e.required)&&i.value.add(e.id),t}function d(){if(!r.value)return;let t=r.value;t.required&&!i.value.has(t.id)||(r.value=null,o.value=!1,a.value=``,e.value?.play())}function f(){r.value&&(a.value=r.value.type===`multiple`?[]:``,o.value=!1,s.value=!1)}function p(e,t){if(e.type===`multiple`){let n=Array.isArray(t)?[...t].sort():[t],r=Array.isArray(e.answer)?[...e.answer].sort():[e.answer];return n.length===r.length&&n.every((e,t)=>e===r[t])}return t===e.answer}return k(t,()=>{c()}),{activeQuiz:r,completedQuizIds:i,selectedAnswer:a,showResult:o,lastAnswerCorrect:s,submitAnswer:u,closeQuiz:d,retryQuiz:f}}function he(e,t){let n=b(!1),r=null;function i(){!e.value||!t.value||(r=new IntersectionObserver(([e])=>{n.value=!e.isIntersecting},{threshold:.3}),r.observe(e.value))}function a(){r&&=(r.disconnect(),null),n.value=!1}function o(){e.value?.scrollIntoView({behavior:`smooth`,block:`center`})}function s(){n.value=!1,a()}return _(()=>{a()}),{isMiniMode:n,initObserver:i,destroyObserver:a,scrollToPlayer:o,closeMiniPlayer:s}}function ge(e,t,n={}){let{enabled:r=!0,onToggleFullscreen:i}=n,a={" ":(e,t)=>{e.preventDefault(),t.paused?t.play():t.pause()},ArrowLeft:(e,t)=>{e.preventDefault(),t.currentTime=Math.max(0,(t.currentTime??0)-5)},ArrowRight:(e,t)=>{e.preventDefault(),t.currentTime=Math.min(t.duration??0,(t.currentTime??0)+5)},ArrowUp:(e,t)=>{e.preventDefault(),t.volume=Math.min(1,(t.volume??0)+G)},ArrowDown:(e,t)=>{e.preventDefault(),t.volume=Math.max(0,(t.volume??0)-G)},f:e=>{e.preventDefault(),i?.()},F:e=>{e.preventDefault(),i?.()},m:(e,t)=>{e.preventDefault(),t.volume=t.volume>0?0:.75},M:(e,t)=>{e.preventDefault(),t.volume=t.volume>0?0:.75}};function o(t){if(!r)return;let n=e.value;if(!n)return;let i=t.target;if(i.tagName===`INPUT`||i.tagName===`TEXTAREA`||i.isContentEditable)return;let o=a[t.key];o?.(t,n)}function s(){r&&t.value?.addEventListener(`keydown`,o)}function c(){t.value?.removeEventListener(`keydown`,o)}return _(()=>{c()}),{startListening:s,stopListening:c}}function _e(e,t){function n(t,n){return{type:t,currentTime:e.currentTime??0,timestamp:Date.now(),payload:n}}function r(e,r){t(n(e,r))}let i=()=>r(`play`),a=()=>r(`pause`),o=()=>r(`ended`),s=()=>r(`seek`),c=()=>r(`error`),l=()=>r(`buffer`),u=e=>{r(`fullscreen`,{isFullscreen:e})},d=e=>{r(`quality_change`,e)},f=()=>{r(`speed_change`,{rate:e.playbackRate})};e.on(J.PLAY,i),e.on(J.PAUSE,a),e.on(J.ENDED,o),e.on(J.SEEKED,s),e.on(J.ERROR,c),e.on(J.WAITING,l),e.on(J.FULLSCREEN_CHANGE,u),e.on(J.DEFINITION_CHANGE,d),e.on(J.RATE_CHANGE,f);function p(){e.off(J.PLAY,i),e.off(J.PAUSE,a),e.off(J.ENDED,o),e.off(J.SEEKED,s),e.off(J.ERROR,c),e.off(J.WAITING,l),e.off(J.FULLSCREEN_CHANGE,u),e.off(J.DEFINITION_CHANGE,d),e.off(J.RATE_CHANGE,f)}return{report:r,destroy:p}}const ve={key:0,class:`vp-control-bar`},ye={class:`vp-control-bar__left`},be={class:`vp-control-bar__center`},xe={class:`vp-control-bar__right`};var Se=e(f({__name:`ControlBar`,props:{visible:{type:Boolean,default:!0}},setup(e){return(t,n)=>e.visible?(y(),c(`div`,ve,[l(`div`,ye,[S(t.$slots,`left`,{},void 0,!0)]),l(`div`,be,[S(t.$slots,`center`,{},void 0,!0)]),l(`div`,xe,[S(t.$slots,`right`,{},void 0,!0)])])):s(`v-if`,!0)}}),[[`__scopeId`,`data-v-e8b787cf`]]);const Ce={key:0,class:`vp-subtitle-overlay`},we={class:`vp-subtitle-text`},Te={key:0,class:`vp-subtitle-toggle`},Ee={class:`vp-subtitle-menu`},De=[`onClick`];var Oe=e(f({__name:`SubtitleOverlay`,props:{text:{},tracks:{},activeLanguage:{}},emits:[`switch`,`close`],setup(e){return(t,n)=>{let a=M,o=F;return y(),c(r,null,[s(` 字幕文本 `),d(i,{name:`vp-subtitle-fade`},{default:A(()=>[e.text?(y(),c(`div`,Ce,[l(`span`,we,T(e.text),1)])):s(`v-if`,!0)]),_:1}),s(` 字幕切换按钮(叠加在播放器控制栏上方) `),e.tracks.length?(y(),c(`div`,Te,[d(o,{trigger:`click`,placement:`top`,"show-arrow":!1},{trigger:A(()=>[d(a,{quaternary:``,size:`small`,class:h([`vp-subtitle-btn`,{"is-active":!!e.activeLanguage}])},{default:A(()=>[...n[1]||=[u(` 字幕 `,-1)]]),_:1},8,[`class`])]),default:A(()=>[l(`div`,Ee,[l(`div`,{class:h([`vp-subtitle-menu__item`,{"is-active":!e.activeLanguage}]),onClick:n[0]||=e=>t.$emit(`close`)},` 关闭字幕 `,2),(y(!0),c(r,null,x(e.tracks,n=>(y(),c(`div`,{key:n.language,class:h([`vp-subtitle-menu__item`,{"is-active":e.activeLanguage===n.language}]),onClick:e=>t.$emit(`switch`,n.language)},T(n.label),11,De))),128))])]),_:1})])):s(`v-if`,!0)],64)}}}),[[`__scopeId`,`data-v-20ac6438`]]);const ke={key:0,class:`vp-chapter-markers`},Ae={key:0,class:`vp-chapter-current`},je={class:`vp-chapter-index`},Me={class:`vp-chapter-title`},Ne={class:`vp-chapter-list`},Pe=[`onClick`],Fe={class:`vp-chapter-item-index`},Ie={class:`vp-chapter-item-title`},Le={class:`vp-chapter-item-time`};var Re=e(f({__name:`ChapterMarkers`,props:{chapters:{},currentChapter:{},currentIndex:{}},emits:[`goTo`],setup(e){function t(e){let t=Math.floor(e/60),n=Math.floor(e%60);return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}`}return(n,i)=>{let a=M,o=F;return e.chapters.length?(y(),c(`div`,ke,[s(` 当前章节信息 `),e.currentChapter?(y(),c(`div`,Ae,[l(`span`,je,T(e.currentIndex+1)+`/`+T(e.chapters.length),1),l(`span`,Me,T(e.currentChapter.title),1)])):s(`v-if`,!0),s(` 章节列表面板 `),d(o,{trigger:`click`,placement:`top-start`,"show-arrow":!1,style:{"max-height":`300px`,"overflow-y":`auto`}},{trigger:A(()=>[d(a,{quaternary:``,size:`small`,class:`vp-chapter-trigger`},{icon:A(()=>[...i[0]||=[l(`span`,{class:`vp-chapter-icon`},`☰`,-1)]]),default:A(()=>[i[1]||=u(` 章节 `,-1)]),_:1})]),default:A(()=>[l(`div`,Ne,[(y(!0),c(r,null,x(e.chapters,(r,i)=>(y(),c(`div`,{key:r.id,class:h([`vp-chapter-item`,{"is-active":r.id===e.currentChapter?.id}]),onClick:e=>n.$emit(`goTo`,r.id)},[l(`span`,Fe,T(i+1),1),l(`span`,Ie,T(r.title),1),l(`span`,Le,T(t(r.startTime)),1)],10,Pe))),128))])]),_:1})])):s(`v-if`,!0)}}}),[[`__scopeId`,`data-v-8828163e`]]);const ze={class:`vp-bookmark-panel`},Be={class:`vp-bookmark-list`},Ve=[`aria-label`,`onClick`],He={class:`vp-bookmark-note`};var Ue=e(f({__name:`BookmarkPanel`,props:{bookmarks:{}},emits:[`add`,`remove`,`goTo`],setup(e,{emit:t}){let n=t;function i(){n(`add`,``)}function a(e){let t=Math.floor(e/60),n=Math.floor(e%60);return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}`}return(t,n)=>{let f=M,p=j,m=F;return y(),c(`div`,ze,[s(` 添加书签按钮 `),d(f,{quaternary:``,size:`small`,class:`vp-bookmark-add-btn`,onClick:i},{icon:A(()=>[...n[0]||=[l(`span`,null,`🔖`,-1)]]),default:A(()=>[n[1]||=u(` 书签 `,-1)]),_:1}),s(` 书签列表弹窗 `),e.bookmarks.length?(y(),o(m,{key:0,trigger:`click`,placement:`top-start`,"show-arrow":!1,style:{"max-height":`300px`,"overflow-y":`auto`}},{trigger:A(()=>[d(p,{value:e.bookmarks.length,max:99,type:`info`},{default:A(()=>[d(f,{quaternary:``,size:`small`,class:`vp-bookmark-list-btn`},{default:A(()=>[...n[2]||=[u(` 列表 `,-1)]]),_:1})]),_:1},8,[`value`])]),default:A(()=>[l(`div`,Be,[(y(!0),c(r,null,x(e.bookmarks,e=>(y(),c(`div`,{key:e.id,class:`vp-bookmark-item`},[l(`button`,{type:`button`,class:`vp-bookmark-time`,"aria-label":`跳转到 ${a(e.time)}`,onClick:n=>t.$emit(`goTo`,e.id)},T(a(e.time)),9,Ve),l(`span`,He,T(e.note||`无备注`),1),d(f,{quaternary:``,size:`tiny`,type:`error`,onClick:n=>t.$emit(`remove`,e.id)},{default:A(()=>[...n[3]||=[u(` ✕ `,-1)]]),_:1},8,[`onClick`])]))),128))])]),_:1})):s(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-29942590`]]);const We={key:0,class:`vp-quiz-overlay`},Ge={class:`vp-quiz-card`},Ke={class:`vp-quiz-header`},qe={class:`vp-quiz-type-tag`},Je={class:`vp-quiz-title`},Ye={class:`vp-quiz-options`},Xe={class:`vp-quiz-actions`};var Ze=e(f({__name:`QuizOverlay`,props:p({quiz:{},showResult:{type:Boolean,default:!1},isCorrect:{type:Boolean,default:!1}},{answer:{default:``},answerModifiers:{}}),emits:p([`submit`,`retry`,`close`],[`update:answer`]),setup(e){let t=e,n=b(``),f=b([]),p=O(e,`answer`),m=a(()=>({single:`单选题`,multiple:`多选题`,judge:`判断题`})[t.quiz?.type??`single`]??`单选题`),g=a(()=>t.quiz?.type===`multiple`?f.value.length>0:n.value!==``);return k(n,e=>{t.quiz?.type!==`multiple`&&(p.value=e)}),k(f,e=>{t.quiz?.type===`multiple`&&(p.value=[...e])}),k(()=>t.quiz?.id,()=>{n.value=``,f.value=[]}),(t,a)=>{let p=N,_=P,v=I,b=L,S=M;return y(),o(i,{name:`vp-quiz-fade`},{default:A(()=>[e.quiz?(y(),c(`div`,We,[l(`div`,Ge,[s(` 标题 `),l(`div`,Ke,[l(`span`,qe,T(m.value),1),l(`h3`,Je,T(e.quiz.title),1)]),s(` 选项 `),l(`div`,Ye,[e.quiz.type===`multiple`?(y(),o(_,{key:0,value:f.value,"onUpdate:value":a[0]||=e=>f.value=e,disabled:e.showResult},{default:A(()=>[(y(!0),c(r,null,x(e.quiz.options,e=>(y(),c(`div`,{key:e.key,class:`vp-quiz-option`},[d(p,{value:e.key,label:`${e.key}. ${e.label}`},null,8,[`value`,`label`])]))),128))]),_:1},8,[`value`,`disabled`])):(y(),o(b,{key:1,value:n.value,"onUpdate:value":a[1]||=e=>n.value=e,disabled:e.showResult},{default:A(()=>[(y(!0),c(r,null,x(e.quiz.options,e=>(y(),c(`div`,{key:e.key,class:`vp-quiz-option`},[d(v,{value:e.key,label:`${e.key}. ${e.label}`},null,8,[`value`,`label`])]))),128))]),_:1},8,[`value`,`disabled`]))]),s(` 结果反馈 `),e.showResult?(y(),c(`div`,{key:0,class:h([`vp-quiz-result`,e.isCorrect?`is-correct`:`is-wrong`])},T(e.isCorrect?`✓ 回答正确!`:`✗ 回答错误,请重试`),3)):s(`v-if`,!0),s(` 操作按钮 `),l(`div`,Xe,[e.showResult?(y(),c(r,{key:1},[!e.isCorrect&&e.quiz.required?(y(),o(S,{key:0,type:`warning`,onClick:a[3]||=e=>t.$emit(`retry`)},{default:A(()=>[...a[6]||=[u(` 重新作答 `,-1)]]),_:1})):s(`v-if`,!0),e.isCorrect||!e.quiz.required?(y(),o(S,{key:1,type:`primary`,onClick:a[4]||=e=>t.$emit(`close`)},{default:A(()=>[...a[7]||=[u(` 继续学习 `,-1)]]),_:1})):s(`v-if`,!0)],64)):(y(),o(S,{key:0,type:`primary`,disabled:!g.value,onClick:a[2]||=e=>t.$emit(`submit`)},{default:A(()=>[...a[5]||=[u(` 提交答案 `,-1)]]),_:1},8,[`disabled`]))])])])):s(`v-if`,!0)]),_:1})}}}),[[`__scopeId`,`data-v-1132a37b`]]),Qe=e(f({__name:`WatermarkOverlay`,props:{visible:{type:Boolean,default:!0},text:{default:``},fontSize:{default:Y.fontSize},color:{default:Y.color},rotate:{default:Y.rotate},gap:{default:Y.gap}},setup(e){let t=e,n=a(()=>{let e=t.gap*t.gap;return Math.ceil(2073600/e)}),i=a(()=>({position:`absolute`,inset:0,overflow:`hidden`,pointerEvents:`none`,zIndex:50,display:`flex`,flexWrap:`wrap`,alignContent:`flex-start`,gap:`${t.gap}px`,padding:`${t.gap/2}px`})),o=a(()=>({fontSize:`${t.fontSize}px`,color:t.color,transform:`rotate(${t.rotate}deg)`,userSelect:`none`,whiteSpace:`nowrap`,lineHeight:1}));return(t,a)=>e.visible&&e.text?(y(),c(`div`,{key:0,class:`vp-watermark`,style:g(i.value)},[(y(!0),c(r,null,x(n.value,t=>(y(),c(`span`,{key:t,class:`vp-watermark-item`,style:g(o.value)},T(e.text),5))),128))],4)):s(`v-if`,!0)}}),[[`__scopeId`,`data-v-9a051cb4`]]),$e=e(f({name:`C_VideoPlayer`,__name:`index`,props:{url:{},sourceType:{},width:{},height:{},poster:{},fluid:{type:Boolean},autoplay:{type:Boolean},autoplayMuted:{type:Boolean},loop:{type:Boolean},volume:{},startTime:{},playbackRates:{},defaultPlaybackRate:{},pip:{type:Boolean},fullscreen:{type:Boolean},cssFullscreen:{type:Boolean},miniPlayer:{type:Boolean},screenshot:{type:Boolean},keyboard:{type:Boolean},lang:{},qualityList:{},defaultQuality:{},chapters:{},subtitles:{},quizzes:{},bookmarks:{},thumbnail:{},onProgress:{type:Function},antiCheat:{},onAnalytics:{type:Function},playerOptions:{}},emits:[`ready`,`stateChange`,`timeUpdate`,`ended`,`error`,`qualityChange`,`rateChange`,`fullscreenChange`,`bookmarkChange`,`quizAnswer`,`chapterChange`,`progressUpdate`],setup(e,{expose:t,emit:n}){let r=e,i=n,u=re(r),{containerRef:f,playerRef:p,playerState:g,currentTime:x,duration:S,isFullscreen:C}=u,w=b(null),T=X(p),O=E(r,`url`),j=Z(p,x,S,O,r.onProgress,r.antiCheat),M=oe(p,r.qualityList),N=a(()=>r.chapters??[]),P=$(N,x,S,T.seek),F=se(O,x,T.seek,r.bookmarks),I=ce(p,x,r.antiCheat),L=pe(p,r.subtitles,x),R=me(p,x,a(()=>r.quizzes??[])),z=he(w,a(()=>r.miniPlayer??!1)),B=ge(p,w,{enabled:r.keyboard!==!1,onToggleFullscreen:()=>{p.value?.getFullscreen?.()}}),V=null,H=!1;function ee(e){F.addBookmark(e),i(`bookmarkChange`,F.bookmarks.value)}function U(){let e=R.submitAnswer(),t=R.activeQuiz.value;t&&i(`quizAnswer`,t.id,R.selectedAnswer.value,e)}function W(){R.closeQuiz()}return k(g,e=>{i(`stateChange`,e)}),k(C,e=>{i(`fullscreenChange`,e)}),k(()=>P.currentChapter.value,e=>{e&&i(`chapterChange`,e)}),v(async()=>{if(u.containerRef.value=f.value,await m(),H)return;try{await u.initPlayer()}catch(e){H||i(`error`,e instanceof Error?e:Error(String(e)));return}if(H)return;let e=p.value;if(!e)return;M.bindEvents(e),I.bindEvents(e),L.initSubtitles(),B.startListening(),z.initObserver();let t=j.restoreProgress();t>0&&r.startTime===void 0&&(e.currentTime=t),e.on(J.PLAY,()=>{j.onPlay()}),e.on(J.PAUSE,()=>{j.onPause()}),e.on(J.TIME_UPDATE,()=>{j.onTimeUpdate(),i(`timeUpdate`,x.value,S.value),i(`progressUpdate`,j.getProgressData())}),e.on(J.ENDED,()=>{i(`ended`),I.markAsWatched()}),e.on(J.ERROR,()=>{i(`error`,Error(`播放器错误`))}),e.on(J.READY,()=>{i(`ready`)}),e.on(J.AFTER_DEFINITION_CHANGE,e=>{i(`qualityChange`,e.to)}),e.on(J.RATE_CHANGE,e=>{i(`rateChange`,e)}),r.onAnalytics&&(V=_e(e,r.onAnalytics).destroy)}),_(()=>{H=!0,V?.(),B.stopListening(),z.destroyObserver()}),t({play:T.play,pause:T.pause,seek:T.seek,setPlaybackRate:T.setPlaybackRate,setVolume:T.setVolume,switchQuality:M.switchQuality,getProgressData:j.getProgressData,destroy:u.destroyPlayer,getPlayerInstance:()=>p.value}),(e,t)=>(y(),c(`div`,{ref_key:`wrapperRef`,ref:w,class:h([`c-video-player`,{"is-mini":D(z).isMiniMode.value,"is-fullscreen":D(C)}]),tabindex:`0`},[s(` 播放器容器 `),l(`div`,{ref_key:`containerRef`,ref:f,class:`c-video-player__container`},null,512),s(` 动态水印 `),d(Qe,{visible:D(I).showWatermark.value,text:D(I).watermarkText.value},null,8,[`visible`,`text`]),s(` 字幕渲染层 `),d(Oe,{text:D(L).currentText.value,tracks:D(L).subtitleList.value,"active-language":D(L).activeLanguage.value,onSwitch:D(L).switchSubtitle,onClose:D(L).closeSubtitle},null,8,[`text`,`tracks`,`active-language`,`onSwitch`,`onClose`]),s(` 测验弹窗 `),r.quizzes?.length?(y(),o(Ze,{key:0,answer:D(R).selectedAnswer.value,"onUpdate:answer":t[0]||=e=>D(R).selectedAnswer.value=e,quiz:D(R).activeQuiz.value,"show-result":D(R).showResult.value,"is-correct":D(R).lastAnswerCorrect.value,onSubmit:U,onRetry:t[1]||=e=>D(R).retryQuiz(),onClose:W},null,8,[`answer`,`quiz`,`show-result`,`is-correct`])):s(`v-if`,!0),s(` 扩展控制栏(xgplayer 自带控制栏外的扩展) `),d(Se,{visible:!0},{left:A(()=>[s(` 章节标记 `),r.chapters?.length?(y(),o(Re,{key:0,chapters:N.value,"current-chapter":D(P).currentChapter.value,"current-index":D(P).currentChapterIndex.value,onGoTo:D(P).goToChapter},null,8,[`chapters`,`current-chapter`,`current-index`,`onGoTo`])):s(`v-if`,!0)]),right:A(()=>[s(` 书签面板 `),d(Ue,{bookmarks:D(F).bookmarks.value,onAdd:ee,onRemove:D(F).removeBookmark,onGoTo:D(F).goToBookmark},null,8,[`bookmarks`,`onRemove`,`onGoTo`])]),_:1}),s(` 小窗关闭按钮 `),D(z).isMiniMode.value?(y(),c(`button`,{key:1,type:`button`,class:`c-video-player__mini-close`,"aria-label":`关闭小窗播放`,onClick:t[2]||=e=>D(z).closeMiniPlayer()},` ✕ `)):s(`v-if`,!0),s(` 小窗点击回原位 `),D(z).isMiniMode.value?(y(),c(`button`,{key:2,type:`button`,class:`c-video-player__mini-back`,onClick:t[3]||=e=>D(z).scrollToPlayer()},` 回到原位 `)):s(`v-if`,!0)],2))}}),[[`__scopeId`,`data-v-e6dc58ed`]]);export{q as _,Z as a,Y as b,V as c,B as d,W as f,U as g,te as h,$ as i,z as l,ee as m,pe as n,X as o,H as p,se as r,re as s,$e as t,R as u,K as v,J as x,G as y};
3
+ `);if(/^(?:NOTE|STYLE|REGION)(?:\s|$)/.test(n[0]))continue;let r=n.findIndex(e=>e.includes(`-->`));if(r===-1)continue;let[i,a]=n[r].split(`-->`);if(!i||!a)continue;let o=he(i),s=he(a.trim().split(/\s+/)[0]);if(!Number.isFinite(o)||!Number.isFinite(s)||s<=o)continue;let c=n.slice(r+1).join(`
4
+ `).replace(/<[^>]+>/g,``).trim();c&&t.push({start:o,end:s,text:c})}return t}function $(e,t=[],n=S(0)){let r=S(null),i=S((k(t)??[]).map(e=>({...e}))),o=E({}),s=S(!1),c=new Map,l=0,u=!1,d=a(()=>{if(!r.value)return``;let e=o.value[r.value];return e?me(e.timeline,n.value):``}),f=a(()=>i.value.length>0);function p(e){if(u)return Promise.resolve([]);if(Object.prototype.hasOwnProperty.call(o.value,e))return Promise.resolve(o.value[e].cues);let t=c.get(e);if(t)return t.promise;let n=i.value.find(t=>t.language===e);if(!n)return Promise.resolve([]);let r=new AbortController;s.value=!0;let a=Promise.resolve().then(async()=>{let t=await fetch(n.src,{signal:r.signal});if(!t.ok)throw Error(`字幕加载失败: ${n.src} (${t.status})`);let i=await t.text();if(u||r.signal.aborted||c.get(e)?.controller!==r)return[];let a=ge(i);return o.value={...o.value,[e]:{cues:a,timeline:pe(a)}},a}).catch(e=>(!u&&!r.signal.aborted&&console.warn(`[C_VideoPlayer] 字幕加载异常:`,e),[])).finally(()=>{c.get(e)?.controller===r&&(c.delete(e),u||(s.value=c.size>0))});return c.set(e,{controller:r,promise:a}),a}async function m(e){if(u)return;if(!i.value.find(t=>t.language===e)){console.warn(`[C_VideoPlayer] 未找到字幕轨道: ${e}`);return}let t=++l;await p(e),!u&&t===l&&(r.value=e)}async function h(){let e=i.value.find(e=>e.default)??i.value[0];e&&await m(e.language)}function g(){l++,r.value=null}function _(){r.value?g():h()}function y(){l++,c.forEach(({controller:e})=>e.abort()),c.clear(),o.value={},r.value=null,s.value=!1}return M(()=>k(t),e=>{y(),i.value=(e??[]).map(e=>({...e})),h()},{deep:!0}),v(()=>{u=!0,y()}),{activeLanguage:r,subtitleList:i,currentText:d,hasSubtitles:f,isLoading:s,initSubtitles:h,resetSubtitles:y,switchSubtitle:m,closeSubtitle:g,toggleSubtitle:_}}function _e(e,t,n){let r=S(null),i=S(new Set),a=S(``),o=S(!1),s=S(!1);function c(){if(r.value||!n.value.length)return;let e=t.value,a=n.value.find(t=>!i.value.has(t.id)&&Math.abs(e-t.triggerTime)<1);a&&l(a)}function l(t){r.value=t,a.value=t.type===`multiple`?[]:``,o.value=!1,s.value=!1,e.value?.pause()}function u(){if(!r.value)return!1;let e=r.value,t=p(e,a.value);return s.value=t,o.value=!0,(t||!e.required)&&i.value.add(e.id),t}function d(){if(!r.value)return;let t=r.value;t.required&&!i.value.has(t.id)||(r.value=null,o.value=!1,a.value=``,e.value?.play())}function f(){r.value&&(a.value=r.value.type===`multiple`?[]:``,o.value=!1,s.value=!1)}function p(e,t){if(e.type===`multiple`){let n=Array.isArray(t)?[...t].sort():[t],r=Array.isArray(e.answer)?[...e.answer].sort():[e.answer];return n.length===r.length&&n.every((e,t)=>e===r[t])}return t===e.answer}return M(t,()=>{c()}),{activeQuiz:r,completedQuizIds:i,selectedAnswer:a,showResult:o,lastAnswerCorrect:s,submitAnswer:u,closeQuiz:d,retryQuiz:f}}function ve(e,t){let n=S(!1),r=null;function i(){!e.value||!t.value||(r=new IntersectionObserver(([e])=>{n.value=!e.isIntersecting},{threshold:.3}),r.observe(e.value))}function a(){r&&=(r.disconnect(),null),n.value=!1}function o(){e.value?.scrollIntoView({behavior:`smooth`,block:`center`})}function s(){n.value=!1,a()}return v(()=>{a()}),{isMiniMode:n,initObserver:i,destroyObserver:a,scrollToPlayer:o,closeMiniPlayer:s}}function ye(e,t,n={}){let{onToggleFullscreen:r}=n,i={" ":(e,t)=>{e.preventDefault(),t.paused?t.play():t.pause()},ArrowLeft:(e,t)=>{e.preventDefault(),t.currentTime=Math.max(0,(t.currentTime??0)-5)},ArrowRight:(e,t)=>{e.preventDefault(),t.currentTime=Math.min(t.duration??0,(t.currentTime??0)+5)},ArrowUp:(e,t)=>{e.preventDefault(),t.volume=Math.min(1,(t.volume??0)+K)},ArrowDown:(e,t)=>{e.preventDefault(),t.volume=Math.max(0,(t.volume??0)-K)},f:e=>{e.preventDefault(),r?.()},F:e=>{e.preventDefault(),r?.()},m:(e,t)=>{e.preventDefault(),t.volume=t.volume>0?0:.75},M:(e,t)=>{e.preventDefault(),t.volume=t.volume>0?0:.75}};function a(t){if(n.enabled===!1)return;let r=e.value;if(!r)return;let a=t.target;if(a.tagName===`INPUT`||a.tagName===`TEXTAREA`||a.isContentEditable)return;let o=i[t.key];o?.(t,r)}function o(){t.value?.addEventListener(`keydown`,a)}function s(){t.value?.removeEventListener(`keydown`,a)}return v(()=>{s()}),{startListening:o,stopListening:s}}function be(e,t){let n=!0;function r(t,n){return{type:t,currentTime:e.currentTime??0,timestamp:Date.now(),payload:n}}function i(e,i){if(!n)return;let a=r(e,i);try{Promise.resolve(t(a)).catch(()=>void 0)}catch{}}let a=()=>i(`play`),o=()=>i(`pause`),s=()=>i(`ended`),c=()=>i(`seek`),l=()=>i(`error`),u=()=>i(`buffer`),d=e=>{i(`fullscreen`,{isFullscreen:e})},f=e=>{i(`quality_change`,e)},p=()=>{i(`speed_change`,{rate:e.playbackRate})};e.on(Y.PLAY,a),e.on(Y.PAUSE,o),e.on(Y.ENDED,s),e.on(Y.SEEKED,c),e.on(Y.ERROR,l),e.on(Y.WAITING,u),e.on(Y.FULLSCREEN_CHANGE,d),e.on(Y.DEFINITION_CHANGE,f),e.on(Y.RATE_CHANGE,p);function m(){n=!1,e.off(Y.PLAY,a),e.off(Y.PAUSE,o),e.off(Y.ENDED,s),e.off(Y.SEEKED,c),e.off(Y.ERROR,l),e.off(Y.WAITING,u),e.off(Y.FULLSCREEN_CHANGE,d),e.off(Y.DEFINITION_CHANGE,f),e.off(Y.RATE_CHANGE,p)}return{report:i,destroy:m}}const xe={key:0,class:`vp-control-bar`},Se={class:`vp-control-bar__left`},Ce={class:`vp-control-bar__center`},we={class:`vp-control-bar__right`};var Te=e(f({__name:`ControlBar`,props:{visible:{type:Boolean,default:!0}},setup(e){return(t,n)=>e.visible?(x(),c(`div`,xe,[l(`div`,Se,[w(t.$slots,`left`,{},void 0,!0)]),l(`div`,Ce,[w(t.$slots,`center`,{},void 0,!0)]),l(`div`,we,[w(t.$slots,`right`,{},void 0,!0)])])):s(`v-if`,!0)}}),[[`__scopeId`,`data-v-e8b787cf`]]);const Ee={key:0,class:`vp-subtitle-overlay`},De={class:`vp-subtitle-text`},Oe={key:0,class:`vp-subtitle-toggle`},ke={class:`vp-subtitle-menu`},Ae=[`onClick`];var je=e(f({__name:`SubtitleOverlay`,props:{text:{},tracks:{},activeLanguage:{}},emits:[`switch`,`close`],setup(e){return(t,n)=>{let a=F,o=R;return x(),c(r,null,[s(` 字幕文本 `),d(i,{name:`vp-subtitle-fade`},{default:N(()=>[e.text?(x(),c(`div`,Ee,[l(`span`,De,D(e.text),1)])):s(`v-if`,!0)]),_:1}),s(` 字幕切换按钮(叠加在播放器控制栏上方) `),e.tracks.length?(x(),c(`div`,Oe,[d(o,{trigger:`click`,placement:`top`,"show-arrow":!1},{trigger:N(()=>[d(a,{quaternary:``,size:`small`,class:g([`vp-subtitle-btn`,{"is-active":!!e.activeLanguage}])},{default:N(()=>[...n[1]||=[u(` 字幕 `,-1)]]),_:1},8,[`class`])]),default:N(()=>[l(`div`,ke,[l(`div`,{class:g([`vp-subtitle-menu__item`,{"is-active":!e.activeLanguage}]),onClick:n[0]||=e=>t.$emit(`close`)},` 关闭字幕 `,2),(x(!0),c(r,null,C(e.tracks,n=>(x(),c(`div`,{key:n.language,class:g([`vp-subtitle-menu__item`,{"is-active":e.activeLanguage===n.language}]),onClick:e=>t.$emit(`switch`,n.language)},D(n.label),11,Ae))),128))])]),_:1})])):s(`v-if`,!0)],64)}}}),[[`__scopeId`,`data-v-20ac6438`]]);const Me={key:0,class:`vp-chapter-markers`},Ne={key:0,class:`vp-chapter-current`},Pe={class:`vp-chapter-index`},Fe={class:`vp-chapter-title`},Ie={class:`vp-chapter-list`},Le=[`onClick`],Re={class:`vp-chapter-item-index`},ze={class:`vp-chapter-item-title`},Be={class:`vp-chapter-item-time`};var Ve=e(f({__name:`ChapterMarkers`,props:{chapters:{},currentChapter:{},currentIndex:{}},emits:[`goTo`],setup(e){function t(e){let t=Math.floor(e/60),n=Math.floor(e%60);return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}`}return(n,i)=>{let a=F,o=R;return e.chapters.length?(x(),c(`div`,Me,[s(` 当前章节信息 `),e.currentChapter?(x(),c(`div`,Ne,[l(`span`,Pe,D(e.currentIndex+1)+`/`+D(e.chapters.length),1),l(`span`,Fe,D(e.currentChapter.title),1)])):s(`v-if`,!0),s(` 章节列表面板 `),d(o,{trigger:`click`,placement:`top-start`,"show-arrow":!1,style:{"max-height":`300px`,"overflow-y":`auto`}},{trigger:N(()=>[d(a,{quaternary:``,size:`small`,class:`vp-chapter-trigger`},{icon:N(()=>[...i[0]||=[l(`span`,{class:`vp-chapter-icon`},`☰`,-1)]]),default:N(()=>[i[1]||=u(` 章节 `,-1)]),_:1})]),default:N(()=>[l(`div`,Ie,[(x(!0),c(r,null,C(e.chapters,(r,i)=>(x(),c(`div`,{key:r.id,class:g([`vp-chapter-item`,{"is-active":r.id===e.currentChapter?.id}]),onClick:e=>n.$emit(`goTo`,r.id)},[l(`span`,Re,D(i+1),1),l(`span`,ze,D(r.title),1),l(`span`,Be,D(t(r.startTime)),1)],10,Le))),128))])]),_:1})])):s(`v-if`,!0)}}}),[[`__scopeId`,`data-v-8828163e`]]);const He={class:`vp-bookmark-panel`},Ue={class:`vp-bookmark-list`},We=[`aria-label`,`onClick`],Ge={class:`vp-bookmark-note`};var Ke=e(f({__name:`BookmarkPanel`,props:{bookmarks:{}},emits:[`add`,`remove`,`goTo`],setup(e,{emit:t}){let n=t;function i(){n(`add`,``)}function a(e){let t=Math.floor(e/60),n=Math.floor(e%60);return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}`}return(t,n)=>{let f=F,p=P,m=R;return x(),c(`div`,He,[s(` 添加书签按钮 `),d(f,{quaternary:``,size:`small`,class:`vp-bookmark-add-btn`,onClick:i},{icon:N(()=>[...n[0]||=[l(`span`,null,`🔖`,-1)]]),default:N(()=>[n[1]||=u(` 书签 `,-1)]),_:1}),s(` 书签列表弹窗 `),e.bookmarks.length?(x(),o(m,{key:0,trigger:`click`,placement:`top-start`,"show-arrow":!1,style:{"max-height":`300px`,"overflow-y":`auto`}},{trigger:N(()=>[d(p,{value:e.bookmarks.length,max:99,type:`info`},{default:N(()=>[d(f,{quaternary:``,size:`small`,class:`vp-bookmark-list-btn`},{default:N(()=>[...n[2]||=[u(` 列表 `,-1)]]),_:1})]),_:1},8,[`value`])]),default:N(()=>[l(`div`,Ue,[(x(!0),c(r,null,C(e.bookmarks,e=>(x(),c(`div`,{key:e.id,class:`vp-bookmark-item`},[l(`button`,{type:`button`,class:`vp-bookmark-time`,"aria-label":`跳转到 ${a(e.time)}`,onClick:n=>t.$emit(`goTo`,e.id)},D(a(e.time)),9,We),l(`span`,Ge,D(e.note||`无备注`),1),d(f,{quaternary:``,size:`tiny`,type:`error`,onClick:n=>t.$emit(`remove`,e.id)},{default:N(()=>[...n[3]||=[u(` ✕ `,-1)]]),_:1},8,[`onClick`])]))),128))])]),_:1})):s(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-29942590`]]);const qe={key:0,class:`vp-quiz-overlay`},Je={class:`vp-quiz-card`},Ye={class:`vp-quiz-header`},Xe={class:`vp-quiz-type-tag`},Ze={class:`vp-quiz-title`},Qe={class:`vp-quiz-options`},$e={class:`vp-quiz-actions`};var et=e(f({__name:`QuizOverlay`,props:p({quiz:{},showResult:{type:Boolean,default:!1},isCorrect:{type:Boolean,default:!1}},{answer:{default:``},answerModifiers:{}}),emits:p([`submit`,`retry`,`close`],[`update:answer`]),setup(e){let t=e,n=S(``),f=S([]),p=j(e,`answer`),m=a(()=>({single:`单选题`,multiple:`多选题`,judge:`判断题`})[t.quiz?.type??`single`]??`单选题`),h=a(()=>t.quiz?.type===`multiple`?f.value.length>0:n.value!==``);return M(n,e=>{t.quiz?.type!==`multiple`&&(p.value=e)}),M(f,e=>{t.quiz?.type===`multiple`&&(p.value=[...e])}),M(()=>t.quiz?.id,()=>{n.value=``,f.value=[]}),(t,a)=>{let p=I,_=L,v=z,y=B,b=F;return x(),o(i,{name:`vp-quiz-fade`},{default:N(()=>[e.quiz?(x(),c(`div`,qe,[l(`div`,Je,[s(` 标题 `),l(`div`,Ye,[l(`span`,Xe,D(m.value),1),l(`h3`,Ze,D(e.quiz.title),1)]),s(` 选项 `),l(`div`,Qe,[e.quiz.type===`multiple`?(x(),o(_,{key:0,value:f.value,"onUpdate:value":a[0]||=e=>f.value=e,disabled:e.showResult},{default:N(()=>[(x(!0),c(r,null,C(e.quiz.options,e=>(x(),c(`div`,{key:e.key,class:`vp-quiz-option`},[d(p,{value:e.key,label:`${e.key}. ${e.label}`},null,8,[`value`,`label`])]))),128))]),_:1},8,[`value`,`disabled`])):(x(),o(y,{key:1,value:n.value,"onUpdate:value":a[1]||=e=>n.value=e,disabled:e.showResult},{default:N(()=>[(x(!0),c(r,null,C(e.quiz.options,e=>(x(),c(`div`,{key:e.key,class:`vp-quiz-option`},[d(v,{value:e.key,label:`${e.key}. ${e.label}`},null,8,[`value`,`label`])]))),128))]),_:1},8,[`value`,`disabled`]))]),s(` 结果反馈 `),e.showResult?(x(),c(`div`,{key:0,class:g([`vp-quiz-result`,e.isCorrect?`is-correct`:`is-wrong`])},D(e.isCorrect?`✓ 回答正确!`:`✗ 回答错误,请重试`),3)):s(`v-if`,!0),s(` 操作按钮 `),l(`div`,$e,[e.showResult?(x(),c(r,{key:1},[!e.isCorrect&&e.quiz.required?(x(),o(b,{key:0,type:`warning`,onClick:a[3]||=e=>t.$emit(`retry`)},{default:N(()=>[...a[6]||=[u(` 重新作答 `,-1)]]),_:1})):s(`v-if`,!0),e.isCorrect||!e.quiz.required?(x(),o(b,{key:1,type:`primary`,onClick:a[4]||=e=>t.$emit(`close`)},{default:N(()=>[...a[7]||=[u(` 继续学习 `,-1)]]),_:1})):s(`v-if`,!0)],64)):(x(),o(b,{key:0,type:`primary`,disabled:!h.value,onClick:a[2]||=e=>t.$emit(`submit`)},{default:N(()=>[...a[5]||=[u(` 提交答案 `,-1)]]),_:1},8,[`disabled`]))])])])):s(`v-if`,!0)]),_:1})}}}),[[`__scopeId`,`data-v-1132a37b`]]),tt=e(f({__name:`WatermarkOverlay`,props:{visible:{type:Boolean,default:!0},text:{default:``},fontSize:{default:X.fontSize},color:{default:X.color},rotate:{default:X.rotate},gap:{default:X.gap}},setup(e){let t=e,n=a(()=>{let e=t.gap*t.gap;return Math.ceil(2073600/e)}),i=a(()=>({position:`absolute`,inset:0,overflow:`hidden`,pointerEvents:`none`,zIndex:50,display:`flex`,flexWrap:`wrap`,alignContent:`flex-start`,gap:`${t.gap}px`,padding:`${t.gap/2}px`})),o=a(()=>({fontSize:`${t.fontSize}px`,color:t.color,transform:`rotate(${t.rotate}deg)`,userSelect:`none`,whiteSpace:`nowrap`,lineHeight:1}));return(t,a)=>e.visible&&e.text?(x(),c(`div`,{key:0,class:`vp-watermark`,style:_(i.value)},[(x(!0),c(r,null,C(n.value,t=>(x(),c(`span`,{key:t,class:`vp-watermark-item`,style:_(o.value)},D(e.text),5))),128))],4)):s(`v-if`,!0)}}),[[`__scopeId`,`data-v-9a051cb4`]]),nt=e(f({name:`VideoPlayerRuntime`,__name:`VideoPlayerRuntime`,props:{url:{},sourceType:{},width:{},height:{},poster:{},fluid:{type:Boolean},autoplay:{type:Boolean},autoplayMuted:{type:Boolean},loop:{type:Boolean},volume:{},startTime:{},playbackRates:{},defaultPlaybackRate:{},pip:{type:Boolean},fullscreen:{type:Boolean},cssFullscreen:{type:Boolean},miniPlayer:{type:Boolean},screenshot:{type:Boolean},keyboard:{type:Boolean},lang:{},qualityList:{},defaultQuality:{},chapters:{},subtitles:{},quizzes:{},bookmarks:{},thumbnail:{},onProgress:{type:Function},antiCheat:{},onAnalytics:{type:Function},playerOptions:{}},emits:[`ready`,`stateChange`,`timeUpdate`,`ended`,`error`,`qualityChange`,`rateChange`,`fullscreenChange`,`bookmarkChange`,`quizAnswer`,`chapterChange`,`progressUpdate`],setup(e,{expose:t,emit:n}){let r=e,i=n,u=ae(r),{containerRef:f,playerRef:p,playerState:m,currentTime:_,duration:b,isFullscreen:C}=u,w=S(null),T=oe(p),E=O(r,`url`),D=Z(p,_,b,E,e=>r.onProgress?.(e),{get heartbeatInterval(){return r.antiCheat?.heartbeatInterval},get onHeartbeat(){return r.antiCheat?.onHeartbeat}}),k=le(p,()=>r.qualityList),j=a(()=>r.chapters??[]),P=ue(j,_,b,T.seek),F=de(E,_,T.seek,()=>r.bookmarks),I=fe(p,_,()=>r.antiCheat),L=$(p,()=>r.subtitles,_),R=_e(p,_,a(()=>r.quizzes??[])),z=ve(w,a(()=>r.miniPlayer??!1)),B=ye(p,w,{get enabled(){return r.keyboard!==!1},onToggleFullscreen:()=>{p.value?.getFullscreen?.()}}),V=null,H=!1;M([p,()=>r.onAnalytics],([e,t])=>{V?.(),V=null,!(H||!e||!t)&&(V=be(e,e=>r.onAnalytics?.(e)).destroy)},{flush:`post`});function U(e){F.addBookmark(e),i(`bookmarkChange`,F.bookmarks.value)}function W(){let e=R.submitAnswer(),t=R.activeQuiz.value;t&&i(`quizAnswer`,t.id,R.selectedAnswer.value,e)}function G(){R.closeQuiz()}return M(m,e=>{i(`stateChange`,e)}),M(C,e=>{i(`fullscreenChange`,e)}),M(()=>P.currentChapter.value,e=>{e&&i(`chapterChange`,e)}),y(async()=>{if(u.containerRef.value=f.value,await h(),H)return;try{await u.initPlayer()}catch(e){H||i(`error`,e instanceof Error?e:Error(String(e)));return}if(H)return;let e=p.value;if(!e)return;k.bindEvents(e),I.bindEvents(e),L.initSubtitles(),B.startListening(),z.initObserver();let t=D.restoreProgress();t>0&&r.startTime===void 0&&(e.currentTime=t,_.value=t);let n=()=>!H&&p.value===e;e.on(Y.PLAY,()=>{n()&&D.onPlay()}),e.on(Y.PAUSE,()=>{n()&&D.onPause()}),e.on(Y.TIME_UPDATE,()=>{n()&&(D.onTimeUpdate(),i(`timeUpdate`,_.value,b.value),i(`progressUpdate`,D.getProgressData()))}),e.on(Y.ENDED,()=>{n()&&(i(`ended`),I.markAsWatched())}),e.on(Y.ERROR,()=>{n()&&i(`error`,Error(`播放器错误`))}),e.on(Y.READY,()=>{n()&&i(`ready`)}),e.on(Y.AFTER_DEFINITION_CHANGE,e=>{n()&&i(`qualityChange`,typeof e.to==`string`?e.to:e.to.definition)}),e.on(Y.RATE_CHANGE,()=>{n()&&i(`rateChange`,e.playbackRate)})}),v(()=>{H=!0,V?.(),B.stopListening(),z.destroyObserver()}),t({play:T.play,pause:T.pause,seek:T.seek,setPlaybackRate:T.setPlaybackRate,setVolume:T.setVolume,switchQuality:k.switchQuality,getProgressData:D.getProgressData,destroy:()=>{D.stopTracking(),L.resetSubtitles(),V?.(),V=null,B.stopListening(),z.destroyObserver(),u.destroyPlayer()},getPlayerInstance:()=>p.value}),(e,t)=>(x(),c(`div`,{ref_key:`wrapperRef`,ref:w,class:g([`c-video-player`,{"is-mini":A(z).isMiniMode.value,"is-fullscreen":A(C)}]),tabindex:`0`},[s(` 播放器容器 `),l(`div`,{ref_key:`containerRef`,ref:f,class:`c-video-player__container`},null,512),s(` 动态水印 `),d(tt,{visible:A(I).showWatermark.value,text:A(I).watermarkText.value},null,8,[`visible`,`text`]),s(` 字幕渲染层 `),d(je,{text:A(L).currentText.value,tracks:A(L).subtitleList.value,"active-language":A(L).activeLanguage.value,onSwitch:A(L).switchSubtitle,onClose:A(L).closeSubtitle},null,8,[`text`,`tracks`,`active-language`,`onSwitch`,`onClose`]),s(` 测验弹窗 `),r.quizzes?.length?(x(),o(et,{key:0,answer:A(R).selectedAnswer.value,"onUpdate:answer":t[0]||=e=>A(R).selectedAnswer.value=e,quiz:A(R).activeQuiz.value,"show-result":A(R).showResult.value,"is-correct":A(R).lastAnswerCorrect.value,onSubmit:W,onRetry:t[1]||=e=>A(R).retryQuiz(),onClose:G},null,8,[`answer`,`quiz`,`show-result`,`is-correct`])):s(`v-if`,!0),s(` 扩展控制栏(xgplayer 自带控制栏外的扩展) `),d(Te,{visible:!0},{left:N(()=>[s(` 章节标记 `),r.chapters?.length?(x(),o(Ve,{key:0,chapters:j.value,"current-chapter":A(P).currentChapter.value,"current-index":A(P).currentChapterIndex.value,onGoTo:A(P).goToChapter},null,8,[`chapters`,`current-chapter`,`current-index`,`onGoTo`])):s(`v-if`,!0)]),right:N(()=>[s(` 书签面板 `),d(Ke,{bookmarks:A(F).bookmarks.value,onAdd:U,onRemove:A(F).removeBookmark,onGoTo:A(F).goToBookmark},null,8,[`bookmarks`,`onRemove`,`onGoTo`])]),_:1}),s(` 小窗关闭按钮 `),A(z).isMiniMode.value?(x(),c(`button`,{key:1,type:`button`,class:`c-video-player__mini-close`,"aria-label":`关闭小窗播放`,onClick:t[2]||=e=>A(z).closeMiniPlayer()},` ✕ `)):s(`v-if`,!0),s(` 小窗点击回原位 `),A(z).isMiniMode.value?(x(),c(`button`,{key:2,type:`button`,class:`c-video-player__mini-back`,onClick:t[3]||=e=>A(z).scrollToPlayer()},` 回到原位 `)):s(`v-if`,!0)],2))}}),[[`__scopeId`,`data-v-11b6a582`]]);const rt=f({name:`C_VideoPlayer`,__name:`index`,props:{url:{},sourceType:{},width:{},height:{},poster:{},fluid:{type:Boolean},autoplay:{type:Boolean},autoplayMuted:{type:Boolean},loop:{type:Boolean},volume:{},startTime:{},playbackRates:{},defaultPlaybackRate:{},pip:{type:Boolean},fullscreen:{type:Boolean},cssFullscreen:{type:Boolean},miniPlayer:{type:Boolean},screenshot:{type:Boolean},keyboard:{type:Boolean},lang:{},qualityList:{},defaultQuality:{},chapters:{},subtitles:{},quizzes:{},bookmarks:{},thumbnail:{},onProgress:{type:Function},antiCheat:{},onAnalytics:{type:Function},playerOptions:{}},emits:[`ready`,`stateChange`,`timeUpdate`,`ended`,`error`,`qualityChange`,`rateChange`,`fullscreenChange`,`bookmarkChange`,`quizAnswer`,`chapterChange`,`progressUpdate`],setup(e,{expose:t,emit:n}){let r=e,i=n,c=S(),l=S(!0),u=a(()=>JSON.stringify([r.url,r.sourceType]));return M(u,()=>{l.value=!0},{flush:`sync`}),t({play:()=>c.value?.play(),pause:()=>c.value?.pause(),seek:e=>c.value?.seek(e),setPlaybackRate:e=>c.value?.setPlaybackRate(e),setVolume:e=>c.value?.setVolume(e),switchQuality:e=>c.value?.switchQuality(e),getProgressData:()=>c.value?.getProgressData()??{currentTime:0,duration:0,watchedDuration:0,completionPercent:0,updatedAt:Date.now()},destroy:()=>{c.value?.destroy(),l.value=!1},getPlayerInstance:()=>c.value?.getPlayerInstance()??null}),(e,t)=>r.url&&l.value?(x(),o(nt,m({key:u.value,ref_key:`runtime`,ref:c},r,{onReady:t[0]||=e=>i(`ready`),onStateChange:t[1]||=e=>i(`stateChange`,e),onTimeUpdate:t[2]||=(e,t)=>i(`timeUpdate`,e,t),onEnded:t[3]||=e=>i(`ended`),onError:t[4]||=e=>i(`error`,e),onQualityChange:t[5]||=e=>i(`qualityChange`,e),onRateChange:t[6]||=e=>i(`rateChange`,e),onFullscreenChange:t[7]||=e=>i(`fullscreenChange`,e),onBookmarkChange:t[8]||=e=>i(`bookmarkChange`,e),onQuizAnswer:t[9]||=(e,t,n)=>i(`quizAnswer`,e,t,n),onChapterChange:t[10]||=e=>i(`chapterChange`,e),onProgressUpdate:t[11]||=e=>i(`progressUpdate`,e)}),null,16)):s(`v-if`,!0)}});export{J as _,Z as a,X as b,W as c,U as d,ne as f,te as g,re as h,ue as i,H as l,ee as m,$ as n,oe as o,G as p,de as r,ae as s,rt as t,V as u,q as v,Y as x,K as y};
@@ -1,7 +1,7 @@
1
1
  :root{--c-primary: var(--primary-color, #2080f0);--c-primary-hover: var(--primary-color-hover, #4098fc);--c-primary-pressed: var(--primary-color-pressed, #1060c9);--c-success: var(--success-color, #18a058);--c-warning: var(--warning-color, #f0a020);--c-error: var(--error-color, #d03050);--c-info: var(--info-color, #2080f0);--c-bg-body: var(--body-color, #ffffff);--c-bg-card: var(--card-color, #ffffff);--c-bg-surface: var(--popover-color, #ffffff);--c-text-1: var(--text-color-1, #262626);--c-text-2: var(--text-color-2, #525252);--c-text-3: var(--text-color-3, #a3a3a3);--c-text-4: var(--text-color-4, #c0c0c0);--c-border: var(--border-color, #e5e7eb);--c-radius-sm: var(--border-radius-small, 4px);--c-radius: var(--border-radius, 6px);--c-transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);--c-transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);--c-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);--c-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);--c-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1)}
2
2
 
3
3
  /* 甘特图组件样式 */
4
- .c-vtable-gantt-wrapper[data-v-d89b5f44] {
4
+ .c-vtable-gantt-wrapper[data-v-dbfd25e4] {
5
5
  display: flex;
6
6
  flex-direction: column;
7
7
  border: 1px solid var(--c-border, #e1e4e8);
@@ -10,7 +10,7 @@
10
10
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
11
11
  height: 100%;
12
12
  }
13
- .c-vtable-gantt-wrapper .gantt-toolbar[data-v-d89b5f44] {
13
+ .c-vtable-gantt-wrapper .gantt-toolbar[data-v-dbfd25e4] {
14
14
  display: flex;
15
15
  justify-content: space-between;
16
16
  align-items: center;
@@ -19,75 +19,90 @@
19
19
  min-height: 48px;
20
20
  flex-shrink: 0;
21
21
  }
22
- .c-vtable-gantt-wrapper .gantt-toolbar .toolbar-left .gantt-title[data-v-d89b5f44] {
22
+ .c-vtable-gantt-wrapper .gantt-toolbar .toolbar-left .gantt-title[data-v-dbfd25e4] {
23
23
  font-size: 16px;
24
24
  font-weight: 600;
25
25
  color: var(--c-text-1, #333);
26
26
  }
27
- .c-vtable-gantt-wrapper .gantt-toolbar .toolbar-right[data-v-d89b5f44] {
27
+ .c-vtable-gantt-wrapper .gantt-toolbar .toolbar-right[data-v-dbfd25e4] {
28
28
  display: flex;
29
29
  gap: 8px;
30
30
  align-items: center;
31
31
  }
32
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] {
32
+ .c-vtable-gantt-wrapper .gantt-body[data-v-dbfd25e4] {
33
+ position: relative;
34
+ display: flex;
35
+ flex-direction: column;
36
+ flex: 1;
37
+ min-height: 0;
38
+ }
39
+ .c-vtable-gantt-wrapper .gantt-error[data-v-dbfd25e4] {
40
+ position: absolute;
41
+ inset: 0;
42
+ display: flex;
43
+ flex-direction: column;
44
+ justify-content: center;
45
+ background: var(--c-bg-body, #fff);
46
+ }
47
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] {
33
48
  flex: 1;
34
49
  position: relative;
35
50
  min-height: 400px;
36
51
  overflow: hidden;
37
52
  /* 确保甘特图组件完全填充容器 */
38
53
  }
39
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] > * {
54
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] > * {
40
55
  width: 100%;
41
56
  height: 100%;
42
57
  }
43
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] {
58
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] {
44
59
  /* 确保甘特图内部组件正确填充 */
45
60
  }
46
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] .vtable-gantt {
61
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] .vtable-gantt {
47
62
  width: 100% !important;
48
63
  height: 100% !important;
49
64
  overflow: hidden;
50
65
  }
51
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] .vtable-gantt * {
66
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] .vtable-gantt * {
52
67
  backface-visibility: hidden;
53
68
  transform: translateZ(0);
54
69
  -webkit-font-smoothing: subpixel-antialiased;
55
70
  }
56
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] {
71
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] {
57
72
  /* 防止内部表格自动调整高度 */
58
73
  }
59
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] .vtable-gantt-table {
74
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] .vtable-gantt-table {
60
75
  height: 100% !important;
61
76
  box-sizing: border-box;
62
77
  }
63
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] {
78
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] {
64
79
  /* 防止拖动时底部色块闪烁 */
65
80
  }
66
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] .vtable-gantt-chart {
81
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] .vtable-gantt-chart {
67
82
  position: relative;
68
83
  overflow: hidden;
69
84
  will-change: transform;
70
85
  transform: translateZ(0);
71
86
  }
72
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] {
87
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] {
73
88
  /* 针对拖动元素的优化 */
74
89
  }
75
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] .vtable-gantt-task {
90
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] .vtable-gantt-task {
76
91
  backface-visibility: hidden;
77
92
  transform: translateZ(0);
78
93
  }
79
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] .vtable-gantt-task.dragging {
94
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] .vtable-gantt-task.dragging {
80
95
  z-index: 1000;
81
96
  pointer-events: none;
82
97
  }
83
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] {
98
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] {
84
99
  /* 防止拖动时底部区域的重绘闪烁 */
85
100
  }
86
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] .vtable-gantt-chart-container {
101
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] .vtable-gantt-chart-container {
87
102
  position: relative;
88
103
  overflow: hidden;
89
104
  }
90
- .c-vtable-gantt-wrapper .gantt-container[data-v-d89b5f44] .vtable-gantt-chart-container::after {
105
+ .c-vtable-gantt-wrapper .gantt-container[data-v-dbfd25e4] .vtable-gantt-chart-container::after {
91
106
  content: "";
92
107
  position: absolute;
93
108
  bottom: 0;
@@ -99,24 +114,24 @@
99
114
  }
100
115
 
101
116
  /* layer: shortcuts */
102
- .container[data-v-d89b5f44]{width:100%;}
117
+ .container[data-v-dbfd25e4]{width:100%;}
103
118
  @media (min-width: 640px){
104
- .container[data-v-d89b5f44]{max-width:640px;}
119
+ .container[data-v-dbfd25e4]{max-width:640px;}
105
120
  }
106
121
  @media (min-width: 768px){
107
- .container[data-v-d89b5f44]{max-width:768px;}
122
+ .container[data-v-dbfd25e4]{max-width:768px;}
108
123
  }
109
124
  @media (min-width: 1024px){
110
- .container[data-v-d89b5f44]{max-width:1024px;}
125
+ .container[data-v-dbfd25e4]{max-width:1024px;}
111
126
  }
112
127
  @media (min-width: 1280px){
113
- .container[data-v-d89b5f44]{max-width:1280px;}
128
+ .container[data-v-dbfd25e4]{max-width:1280px;}
114
129
  }
115
130
  @media (min-width: 1536px){
116
- .container[data-v-d89b5f44]{max-width:1536px;}
131
+ .container[data-v-dbfd25e4]{max-width:1536px;}
117
132
  }
118
133
  /* layer: default */
119
- .visible[data-v-d89b5f44]{visibility:visible;}
120
- .grid[data-v-d89b5f44]{display:grid;}
121
- .table[data-v-d89b5f44]{display:table;}
122
- .px[data-v-d89b5f44]{padding-left:1rem;padding-right:1rem;}
134
+ .visible[data-v-dbfd25e4]{visibility:visible;}
135
+ .grid[data-v-dbfd25e4]{display:grid;}
136
+ .table[data-v-dbfd25e4]{display:table;}
137
+ .px[data-v-dbfd25e4]{padding-left:1rem;padding-right:1rem;}
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:1,fontSize:14,fontWeight:`bold`},bodyStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:[1,0,1,0],fontSize:13}},a={basic:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:220,tree:!0},{field:`start`,title:`开始时间`,width:120},{field:`end`,title:`结束时间`,width:120},{field:`progress`,title:`进度`,width:80}],tableWidth:420,minTableWidth:300,theme:i},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`#e1e4e8`,cornerRadius:6},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:2}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:18,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:4,borderLineWidth:0},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:1,fillColor:`#ffd666`,width:12}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:12,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},project:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:200,tree:!0,editor:`input`},{field:`start`,title:`开始时间`,width:120,editor:`date-input`},{field:`end`,title:`结束时间`,width:120,editor:`date-input`},{field:`priority`,title:`优先级`,width:80,editor:`input`},{field:`progress`,title:`进度%`,width:80,editor:`input`}],tableWidth:480,minTableWidth:350,maxTableWidth:800,theme:i,hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(24, 144, 255, 0.3)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:12,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:6,borderLineWidth:0}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,startOfWeek:`monday`,format:e=>`第${e.dateIndex}周`,style:{fontSize:13,fontWeight:`bold`,textAlign:`center`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11,textAlign:`center`}}]},rowSeriesNumber:{title:`序号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},timeline:{overscrollBehavior:`none`,headerRowHeight:45,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`事件名称`,width:250,tree:!0},{field:`start`,title:`时间`,width:150}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...i.headerStyle},bodyStyle:i.bodyStyle}},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`rgba(128, 128, 128, 0.3)`,cornerRadius:4},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:22,barColor:`#722ed1`,completedBarColor:`#b37feb`,cornerRadius:8,borderLineWidth:0}},timelineHeader:{colWidth:60,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},milestone:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:38,taskListTable:{columns:[{field:`title`,title:`里程碑`,width:200,tree:!0},{field:`start`,title:`目标日期`,width:120},{field:`priority`,title:`重要性`,width:100}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...i.headerStyle,borderColor:`#ffa940`},bodyStyle:{...i.bodyStyle,borderColor:`#ffa940`}}},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#ffa940`,cornerRadius:6},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`},horizontalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`}},taskBar:{startDateField:`start`,endDateField:`start`,labelText:`{title}`,labelTextStyle:{fontSize:12,fontWeight:`bold`},barStyle:{width:0,barColor:`transparent`},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:2,fillColor:`#ffd666`,width:16}},timelineHeader:{colWidth:80,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},official:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`title`,width:180,sort:!0,tree:!0,editor:`input`},{field:`start`,title:`start`,width:120,sort:!0,editor:`date-input`},{field:`end`,title:`end`,width:120,sort:!0,editor:`date-input`},{field:`priority`,title:`priority`,width:80,sort:!0,editor:`input`},{field:`progress`,title:`progress`,width:80,sort:!0,editor:`input`}],tableWidth:460,minTableWidth:350,maxTableWidth:800,theme:{headerStyle:{...i.headerStyle,fontSize:18,color:`red`},bodyStyle:{...i.bodyStyle,fontSize:16,color:`#4D4D4D`}},hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3},horizontalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(99, 144, 0, 0.4)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:16,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#ee8800`,completedBarColor:`#91e8e0`,cornerRadius:8,borderLineWidth:1,borderColor:`black`},milestoneStyle:{borderColor:`red`,borderLineWidth:1,fillColor:`green`,width:15}},timelineHeader:{backgroundColor:`#EEF1F5`,colWidth:60,horizontalLine:{lineWidth:1,lineColor:`#e1e4e8`},verticalLine:{lineWidth:1,lineColor:`#e1e4e8`},scales:[{unit:`week`,step:1,startOfWeek:`sunday`,format:e=>`Week ${e.dateIndex}`,style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`,textStick:!0}},{unit:`day`,step:1,format:e=>e.dateIndex.toString(),style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`}}]},markLine:[{date:`2024-07-28`,style:{lineWidth:1,lineColor:`blue`,lineDash:[8,4]}},{date:`2024-08-17`,style:{lineWidth:2,lineColor:`red`,lineDash:[8,4]}}],rowSeriesNumber:{title:`行号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}}},o=new Set([`__proto__`,`prototype`,`constructor`]),s=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null};function c(e,t){let n=new WeakMap,r=(e,t)=>{let i=n.get(t);if(i)return i;let a={...e};n.set(t,a);for(let[n,i]of Object.entries(t))o.has(n)||(a[n]=s(i)?r(s(e[n])?e[n]:{},i):i);return a};return r(e,t)}function l(e,t,n){e.on(`click_task_bar`,e=>{e.record&&t(e.record,e.event)}),e.on(`change_date_range`,e=>{if(e.record){let t={start:e.startDate,end:e.endDate};n({...e.record,...t},t)}}),e.on(`progress_update`,e=>{if(e.record){let t={progress:e.progress};n({...e.record,...t},t)}});let r=e.taskListTableInstance;r&&(r.on(`click_cell`,e=>{let n=r.getCellOriginRecord(e.col,e.row);n&&typeof n==`object`&&`id`in n&&t(n,e.event)}),r.on(`change_cell_value`,e=>{let t=r.getCellOriginRecord(e.col,e.row),i=r.getHeaderField(e.col,e.row);t&&typeof i==`string`&&n({...t,[i]:e.changedValue},{[i]:e.changedValue})}))}const u={class:`c-vtable-gantt-wrapper`},d={key:0,class:`gantt-toolbar`},f={class:`toolbar-left`},p={class:`gantt-title`},m={class:`toolbar-right`},h=(0,n.defineComponent)({name:`C_VtableGantt`,__name:`index`,props:{data:{default:()=>[]},options:{default:()=>({})},preset:{default:`basic`},height:{default:`600px`},title:{default:``},showToolbar:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},theme:{default:`light`}},emits:[`ganttCreated`,`taskClick`,`taskChange`],setup(t,{expose:i,emit:o}){let s=t,h=o,g=(0,n.ref)(),_=(0,n.shallowRef)(),v=(0,n.ref)(!1),y=0,b,x,S=!1,C=(0,n.computed)(()=>typeof s.height==`number`?`${s.height}px`:s.height),w=(e,t)=>!S&&e===y&&g.value===t,T=e=>e.map(e=>({...e,title:e.title||`任务${e.id}`,children:e.children?T(e.children):void 0})),E=e=>({underlayBackgroundColor:e?`#1e1e1e`:`#ffffff`,timelineHeaderBg:e?`#2d2d2d`:`#EEF1F5`,gridBg:e?`#1e1e1e`:`#ffffff`,lineColor:e?`rgba(255, 255, 255, 0.1)`:`rgba(128, 128, 128, 0.2)`,textColor:e?`#ffffff`:`#000000`}),D=(e,t)=>({...e,backgroundColor:t.timelineHeaderBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor},scales:e?.scales?.map(e=>({...e,style:{...e.style,color:t.textColor}}))}),O=(e,t)=>({...e,backgroundColor:t.gridBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor}}),k=(e,t,n,r)=>({...e,records:t,underlayBackgroundColor:r.underlayBackgroundColor,taskListTable:{...e.taskListTable,theme:n.extends(e.taskListTable?.theme??{})},timelineHeader:D(e.timelineHeader,r),grid:O(e.grid,r)}),A=async()=>{clearTimeout(b),b=void 0;let e=g.value;if(!e||S)return;let t=++y;try{let{Gantt:n}=await import(`@visactor/vtable-gantt`),{themes:r,register:i}=await import(`@visactor/vtable`),{InputEditor:o,DateInputEditor:u}=await import(`@visactor/vtable-editors`);if(!w(t,e))return;i.editor(`input`)||i.editor(`input`,new o),i.editor(`date-input`)||i.editor(`date-input`,new u);let d=s.theme===`dark`,f=c(a[s.preset]||a.basic,s.options),p=T(s.data||[]);_.value&&_.value.release();let m=new n(e,k(f,p,d?r.DARK:r.DEFAULT,E(d)));if(!w(t,e)){m.release();return}_.value=m,l(m,(e,t)=>h(`taskClick`,e,t),(e,t)=>h(`taskChange`,e,t)),h(`ganttCreated`,m)}catch(e){console.error(`甘特图初始化失败:`,e)}},j=()=>{x&&clearTimeout(x),x=setTimeout(()=>{x=void 0,S||_.value?.resize?.()},100)},M=async()=>{let e=g.value;if(e)try{document.fullscreenElement===e?await document.exitFullscreen():await e.requestFullscreen(),v.value=document.fullscreenElement===e,j()}catch(t){console.warn(`全屏切换失败:`,t),v.value=document.fullscreenElement===e}},N=()=>{v.value=document.fullscreenElement===g.value,j()},P=e=>{if(_.value&&e)try{_.value.setRecords(T(e))}catch(e){console.warn(`更新数据失败:`,e)}},F=e=>{if(_.value&&e)try{_.value.updateOption(e)}catch(e){console.warn(`更新配置失败:`,e)}},I=()=>{if(_.value)try{_.value.release()}catch(e){console.warn(`销毁甘特图失败:`,e)}finally{_.value=void 0}};return(0,n.watch)(()=>s.data,e=>{e&&_.value&&P(e)},{deep:!0}),(0,n.watch)(()=>[s.options,s.preset,s.theme],()=>void A(),{deep:!0,flush:`post`}),(0,n.onMounted)(()=>{S=!1,document.addEventListener(`fullscreenchange`,N),(0,n.nextTick)(()=>{S||y>0||(b=setTimeout(()=>A(),100))})}),(0,n.onUnmounted)(()=>{S=!0,y+=1,b&&clearTimeout(b),x&&clearTimeout(x),document.removeEventListener(`fullscreenchange`,N),I()}),i({ganttInstance:_,updateData:P,updateOptions:F,toggleFullscreen:M}),(i,a)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[t.showToolbar?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,d,[(0,n.createElementVNode)(`div`,f,[(0,n.createElementVNode)(`span`,p,(0,n.toDisplayString)(t.title||`甘特图`),1)]),(0,n.createElementVNode)(`div`,m,[t.showFullscreenButton?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NButton),{key:0,size:`small`,onClick:M},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:v.value?`carbon:minimize`:`carbon:maximize`,size:16,color:`currentColor`},null,8,[`name`])]),default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` `+(0,n.toDisplayString)(v.value?`退出全屏`:`全屏`),1)]),_:1})):(0,n.createCommentVNode)(`v-if`,!0)])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createElementVNode)(`div`,{ref_key:`ganttContainerRef`,ref:g,class:`gantt-container`,style:(0,n.normalizeStyle)({height:C.value})},null,4)]))}});var g=t.t(h,[[`__scopeId`,`data-v-d89b5f44`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return g}});
1
+ require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:1,fontSize:14,fontWeight:`bold`},bodyStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:[1,0,1,0],fontSize:13}},a={basic:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:220,tree:!0},{field:`start`,title:`开始时间`,width:120},{field:`end`,title:`结束时间`,width:120},{field:`progress`,title:`进度`,width:80}],tableWidth:420,minTableWidth:300,theme:i},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`#e1e4e8`,cornerRadius:6},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:2}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:18,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:4,borderLineWidth:0},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:1,fillColor:`#ffd666`,width:12}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:12,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},project:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:200,tree:!0,editor:`input`},{field:`start`,title:`开始时间`,width:120,editor:`date-input`},{field:`end`,title:`结束时间`,width:120,editor:`date-input`},{field:`priority`,title:`优先级`,width:80,editor:`input`},{field:`progress`,title:`进度%`,width:80,editor:`input`}],tableWidth:480,minTableWidth:350,maxTableWidth:800,theme:i,hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(24, 144, 255, 0.3)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:12,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:6,borderLineWidth:0}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,startOfWeek:`monday`,format:e=>`第${e.dateIndex}周`,style:{fontSize:13,fontWeight:`bold`,textAlign:`center`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11,textAlign:`center`}}]},rowSeriesNumber:{title:`序号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},timeline:{overscrollBehavior:`none`,headerRowHeight:45,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`事件名称`,width:250,tree:!0},{field:`start`,title:`时间`,width:150}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...i.headerStyle},bodyStyle:i.bodyStyle}},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`rgba(128, 128, 128, 0.3)`,cornerRadius:4},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:22,barColor:`#722ed1`,completedBarColor:`#b37feb`,cornerRadius:8,borderLineWidth:0}},timelineHeader:{colWidth:60,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},milestone:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:38,taskListTable:{columns:[{field:`title`,title:`里程碑`,width:200,tree:!0},{field:`start`,title:`目标日期`,width:120},{field:`priority`,title:`重要性`,width:100}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...i.headerStyle,borderColor:`#ffa940`},bodyStyle:{...i.bodyStyle,borderColor:`#ffa940`}}},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#ffa940`,cornerRadius:6},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`},horizontalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`}},taskBar:{startDateField:`start`,endDateField:`start`,labelText:`{title}`,labelTextStyle:{fontSize:12,fontWeight:`bold`},barStyle:{width:0,barColor:`transparent`},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:2,fillColor:`#ffd666`,width:16}},timelineHeader:{colWidth:80,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},official:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`title`,width:180,sort:!0,tree:!0,editor:`input`},{field:`start`,title:`start`,width:120,sort:!0,editor:`date-input`},{field:`end`,title:`end`,width:120,sort:!0,editor:`date-input`},{field:`priority`,title:`priority`,width:80,sort:!0,editor:`input`},{field:`progress`,title:`progress`,width:80,sort:!0,editor:`input`}],tableWidth:460,minTableWidth:350,maxTableWidth:800,theme:{headerStyle:{...i.headerStyle,fontSize:18,color:`red`},bodyStyle:{...i.bodyStyle,fontSize:16,color:`#4D4D4D`}},hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3},horizontalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(99, 144, 0, 0.4)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:16,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#ee8800`,completedBarColor:`#91e8e0`,cornerRadius:8,borderLineWidth:1,borderColor:`black`},milestoneStyle:{borderColor:`red`,borderLineWidth:1,fillColor:`green`,width:15}},timelineHeader:{backgroundColor:`#EEF1F5`,colWidth:60,horizontalLine:{lineWidth:1,lineColor:`#e1e4e8`},verticalLine:{lineWidth:1,lineColor:`#e1e4e8`},scales:[{unit:`week`,step:1,startOfWeek:`sunday`,format:e=>`Week ${e.dateIndex}`,style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`,textStick:!0}},{unit:`day`,step:1,format:e=>e.dateIndex.toString(),style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`}}]},markLine:[{date:`2024-07-28`,style:{lineWidth:1,lineColor:`blue`,lineDash:[8,4]}},{date:`2024-08-17`,style:{lineWidth:2,lineColor:`red`,lineDash:[8,4]}}],rowSeriesNumber:{title:`行号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}}},o=new Set([`__proto__`,`prototype`,`constructor`]),s=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null};function c(e,t){let n=new WeakMap,r=(e,t)=>{let i=n.get(t);if(i)return i;let a={...e};n.set(t,a);for(let[n,i]of Object.entries(t))o.has(n)||(a[n]=s(i)?r(s(e[n])?e[n]:{},i):i);return a};return r(e,t)}function l(e,t,n){e.on(`click_task_bar`,e=>{e.record&&t(e.record,e.event)}),e.on(`change_date_range`,e=>{if(e.record){let t={start:e.startDate,end:e.endDate};n({...e.record,...t},t)}}),e.on(`progress_update`,e=>{if(e.record){let t={progress:e.progress};n({...e.record,...t},t)}});let r=e.taskListTableInstance;r&&(r.on(`click_cell`,e=>{let n=r.getCellOriginRecord(e.col,e.row);n&&typeof n==`object`&&`id`in n&&t(n,e.event)}),r.on(`change_cell_value`,e=>{let t=r.getCellOriginRecord(e.col,e.row),i=r.getHeaderField(e.col,e.row);t&&typeof i==`string`&&n({...t,[i]:e.changedValue},{[i]:e.changedValue})}))}const u={class:`c-vtable-gantt-wrapper`},d={key:0,class:`gantt-toolbar`},f={class:`toolbar-left`},p={class:`gantt-title`},m={class:`toolbar-right`},h={class:`gantt-body`},g=(0,n.defineComponent)({name:`C_VtableGantt`,__name:`index`,props:{data:{default:()=>[]},options:{default:()=>({})},preset:{default:`basic`},height:{default:`600px`},title:{default:``},showToolbar:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},theme:{default:`light`}},emits:[`ganttCreated`,`taskClick`,`taskChange`,`error`],setup(t,{expose:i,emit:o}){let s=t,g=o,_=(0,n.ref)(),v=(0,n.shallowRef)(),y=(0,n.ref)(!1),b=(0,n.ref)(!1),x=(0,n.shallowRef)(),S=0,C,w,T=!1,E=(0,n.computed)(()=>typeof s.height==`number`?`${s.height}px`:s.height),D=(e,t)=>!T&&e===S&&_.value===t,O=e=>e.map(e=>({...e,title:e.title||`任务${e.id}`,children:e.children?O(e.children):void 0})),k=e=>({underlayBackgroundColor:e?`#1e1e1e`:`#ffffff`,timelineHeaderBg:e?`#2d2d2d`:`#EEF1F5`,gridBg:e?`#1e1e1e`:`#ffffff`,lineColor:e?`rgba(255, 255, 255, 0.1)`:`rgba(128, 128, 128, 0.2)`,textColor:e?`#ffffff`:`#000000`}),A=(e,t)=>({...e,backgroundColor:t.timelineHeaderBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor},scales:e?.scales?.map(e=>({...e,style:{...e.style,color:t.textColor}}))}),j=(e,t)=>({...e,backgroundColor:t.gridBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor}}),M=(e,t,n,r)=>({...e,records:t,underlayBackgroundColor:r.underlayBackgroundColor,taskListTable:{...e.taskListTable,theme:n.extends(e.taskListTable?.theme??{})},timelineHeader:A(e.timelineHeader,r),grid:j(e.grid,r)}),N=e=>{let t=s.theme===`dark`;return M(c(a[s.preset]||a.basic,s.options),O(s.data),t?e.DARK:e.DEFAULT,k(t))},P=e=>{if(e)try{e.release()}catch(e){console.warn(`销毁甘特图失败:`,e)}},F=(e,t,n)=>{e.editor(t)||e.editor(t,n())},I=async()=>{clearTimeout(C),C=void 0;let e=_.value;if(!e||T)return;let t=++S;b.value=!0,x.value=void 0;let n;try{let[{Gantt:r},{themes:i,register:a},{InputEditor:o,DateInputEditor:s}]=await Promise.all([import(`@visactor/vtable-gantt`),import(`@visactor/vtable`),import(`@visactor/vtable-editors`)]);if(!D(t,e))return;F(a,`input`,()=>new o),F(a,`date-input`,()=>new s);let c=N(i);H();let u=new r(e,c);if(n=u,!D(t,e)){u.release();return}l(u,(e,t)=>g(`taskClick`,e,t),(e,t)=>g(`taskChange`,e,t)),v.value=u,n=void 0,g(`ganttCreated`,u)}catch(r){if(P(n),!D(t,e))return;x.value=r instanceof Error?r:Error(String(r)),g(`error`,x.value)}finally{D(t,e)&&(b.value=!1)}},L=()=>{w&&clearTimeout(w),w=setTimeout(()=>{w=void 0,T||v.value?.resize?.()},100)},R=async()=>{let e=_.value;if(e)try{document.fullscreenElement===e?await document.exitFullscreen():await e.requestFullscreen(),y.value=document.fullscreenElement===e,L()}catch(t){console.warn(`全屏切换失败:`,t),y.value=document.fullscreenElement===e}},z=()=>{y.value=document.fullscreenElement===_.value,L()},B=e=>{if(v.value&&e)try{v.value.setRecords(O(e))}catch(e){console.warn(`更新数据失败:`,e)}},V=e=>{if(v.value&&e)try{v.value.updateOption(e)}catch(e){console.warn(`更新配置失败:`,e)}},H=()=>{let e=v.value;v.value=void 0,P(e)};return(0,n.watch)(()=>s.data,e=>{e&&v.value&&B(e)},{deep:!0}),(0,n.watch)(()=>[s.options,s.preset,s.theme],()=>void I(),{deep:!0,flush:`post`}),(0,n.onMounted)(()=>{T=!1,document.addEventListener(`fullscreenchange`,z),(0,n.nextTick)(()=>{T||S>0||(C=setTimeout(()=>I(),100))})}),(0,n.onUnmounted)(()=>{T=!0,b.value=!1,S+=1,C&&clearTimeout(C),w&&clearTimeout(w),document.removeEventListener(`fullscreenchange`,z),H()}),i({ganttInstance:v,loading:b,error:x,reload:I,updateData:B,updateOptions:V,toggleFullscreen:R}),(i,a)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[t.showToolbar?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,d,[(0,n.createElementVNode)(`div`,f,[(0,n.createElementVNode)(`span`,p,(0,n.toDisplayString)(t.title||`甘特图`),1)]),(0,n.createElementVNode)(`div`,m,[t.showFullscreenButton?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NButton),{key:0,size:`small`,onClick:R},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:y.value?`carbon:minimize`:`carbon:maximize`,size:16,color:`currentColor`},null,8,[`name`])]),default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` `+(0,n.toDisplayString)(y.value?`退出全屏`:`全屏`),1)]),_:1})):(0,n.createCommentVNode)(`v-if`,!0)])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createElementVNode)(`div`,h,[(0,n.createElementVNode)(`div`,{ref_key:`ganttContainerRef`,ref:_,class:`gantt-container`,style:(0,n.normalizeStyle)({height:E.value})},null,4),x.value?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NResult),{key:0,class:`gantt-error`,status:`error`,title:`甘特图加载失败`,description:x.value.message},{footer:(0,n.withCtx)(()=>[(0,n.createVNode)((0,n.unref)(r.NButton),{loading:b.value,onClick:I},{default:(0,n.withCtx)(()=>[...a[0]||=[(0,n.createTextVNode)(`重试`,-1)]]),_:1},8,[`loading`])]),_:1},8,[`description`])):(0,n.createCommentVNode)(`v-if`,!0)])]))}});var _=t.t(g,[[`__scopeId`,`data-v-dbfd25e4`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return _}});
@@ -1 +1 @@
1
- import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createTextVNode as s,createVNode as c,defineComponent as l,nextTick as u,normalizeStyle as d,onMounted as f,onUnmounted as p,openBlock as m,ref as h,shallowRef as g,toDisplayString as _,unref as v,watch as y,withCtx as b}from"vue";import{NButton as x}from"naive-ui";const S={headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:1,fontSize:14,fontWeight:`bold`},bodyStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:[1,0,1,0],fontSize:13}},C={basic:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:220,tree:!0},{field:`start`,title:`开始时间`,width:120},{field:`end`,title:`结束时间`,width:120},{field:`progress`,title:`进度`,width:80}],tableWidth:420,minTableWidth:300,theme:S},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`#e1e4e8`,cornerRadius:6},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:2}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:18,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:4,borderLineWidth:0},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:1,fillColor:`#ffd666`,width:12}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:12,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},project:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:200,tree:!0,editor:`input`},{field:`start`,title:`开始时间`,width:120,editor:`date-input`},{field:`end`,title:`结束时间`,width:120,editor:`date-input`},{field:`priority`,title:`优先级`,width:80,editor:`input`},{field:`progress`,title:`进度%`,width:80,editor:`input`}],tableWidth:480,minTableWidth:350,maxTableWidth:800,theme:S,hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(24, 144, 255, 0.3)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:12,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:6,borderLineWidth:0}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,startOfWeek:`monday`,format:e=>`第${e.dateIndex}周`,style:{fontSize:13,fontWeight:`bold`,textAlign:`center`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11,textAlign:`center`}}]},rowSeriesNumber:{title:`序号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},timeline:{overscrollBehavior:`none`,headerRowHeight:45,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`事件名称`,width:250,tree:!0},{field:`start`,title:`时间`,width:150}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...S.headerStyle},bodyStyle:S.bodyStyle}},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`rgba(128, 128, 128, 0.3)`,cornerRadius:4},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:22,barColor:`#722ed1`,completedBarColor:`#b37feb`,cornerRadius:8,borderLineWidth:0}},timelineHeader:{colWidth:60,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},milestone:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:38,taskListTable:{columns:[{field:`title`,title:`里程碑`,width:200,tree:!0},{field:`start`,title:`目标日期`,width:120},{field:`priority`,title:`重要性`,width:100}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...S.headerStyle,borderColor:`#ffa940`},bodyStyle:{...S.bodyStyle,borderColor:`#ffa940`}}},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#ffa940`,cornerRadius:6},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`},horizontalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`}},taskBar:{startDateField:`start`,endDateField:`start`,labelText:`{title}`,labelTextStyle:{fontSize:12,fontWeight:`bold`},barStyle:{width:0,barColor:`transparent`},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:2,fillColor:`#ffd666`,width:16}},timelineHeader:{colWidth:80,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},official:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`title`,width:180,sort:!0,tree:!0,editor:`input`},{field:`start`,title:`start`,width:120,sort:!0,editor:`date-input`},{field:`end`,title:`end`,width:120,sort:!0,editor:`date-input`},{field:`priority`,title:`priority`,width:80,sort:!0,editor:`input`},{field:`progress`,title:`progress`,width:80,sort:!0,editor:`input`}],tableWidth:460,minTableWidth:350,maxTableWidth:800,theme:{headerStyle:{...S.headerStyle,fontSize:18,color:`red`},bodyStyle:{...S.bodyStyle,fontSize:16,color:`#4D4D4D`}},hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3},horizontalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(99, 144, 0, 0.4)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:16,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#ee8800`,completedBarColor:`#91e8e0`,cornerRadius:8,borderLineWidth:1,borderColor:`black`},milestoneStyle:{borderColor:`red`,borderLineWidth:1,fillColor:`green`,width:15}},timelineHeader:{backgroundColor:`#EEF1F5`,colWidth:60,horizontalLine:{lineWidth:1,lineColor:`#e1e4e8`},verticalLine:{lineWidth:1,lineColor:`#e1e4e8`},scales:[{unit:`week`,step:1,startOfWeek:`sunday`,format:e=>`Week ${e.dateIndex}`,style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`,textStick:!0}},{unit:`day`,step:1,format:e=>e.dateIndex.toString(),style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`}}]},markLine:[{date:`2024-07-28`,style:{lineWidth:1,lineColor:`blue`,lineDash:[8,4]}},{date:`2024-08-17`,style:{lineWidth:2,lineColor:`red`,lineDash:[8,4]}}],rowSeriesNumber:{title:`行号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}}},w=new Set([`__proto__`,`prototype`,`constructor`]),T=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null};function E(e,t){let n=new WeakMap,r=(e,t)=>{let i=n.get(t);if(i)return i;let a={...e};n.set(t,a);for(let[n,i]of Object.entries(t))w.has(n)||(a[n]=T(i)?r(T(e[n])?e[n]:{},i):i);return a};return r(e,t)}function D(e,t,n){e.on(`click_task_bar`,e=>{e.record&&t(e.record,e.event)}),e.on(`change_date_range`,e=>{if(e.record){let t={start:e.startDate,end:e.endDate};n({...e.record,...t},t)}}),e.on(`progress_update`,e=>{if(e.record){let t={progress:e.progress};n({...e.record,...t},t)}});let r=e.taskListTableInstance;r&&(r.on(`click_cell`,e=>{let n=r.getCellOriginRecord(e.col,e.row);n&&typeof n==`object`&&`id`in n&&t(n,e.event)}),r.on(`change_cell_value`,e=>{let t=r.getCellOriginRecord(e.col,e.row),i=r.getHeaderField(e.col,e.row);t&&typeof i==`string`&&n({...t,[i]:e.changedValue},{[i]:e.changedValue})}))}const O={class:`c-vtable-gantt-wrapper`},k={key:0,class:`gantt-toolbar`},A={class:`toolbar-left`},j={class:`gantt-title`},M={class:`toolbar-right`};var N=t(l({name:`C_VtableGantt`,__name:`index`,props:{data:{default:()=>[]},options:{default:()=>({})},preset:{default:`basic`},height:{default:`600px`},title:{default:``},showToolbar:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},theme:{default:`light`}},emits:[`ganttCreated`,`taskClick`,`taskChange`],setup(t,{expose:l,emit:S}){let w=t,T=S,N=h(),P=g(),F=h(!1),I=0,L,R,z=!1,B=n(()=>typeof w.height==`number`?`${w.height}px`:w.height),V=(e,t)=>!z&&e===I&&N.value===t,H=e=>e.map(e=>({...e,title:e.title||`任务${e.id}`,children:e.children?H(e.children):void 0})),U=e=>({underlayBackgroundColor:e?`#1e1e1e`:`#ffffff`,timelineHeaderBg:e?`#2d2d2d`:`#EEF1F5`,gridBg:e?`#1e1e1e`:`#ffffff`,lineColor:e?`rgba(255, 255, 255, 0.1)`:`rgba(128, 128, 128, 0.2)`,textColor:e?`#ffffff`:`#000000`}),W=(e,t)=>({...e,backgroundColor:t.timelineHeaderBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor},scales:e?.scales?.map(e=>({...e,style:{...e.style,color:t.textColor}}))}),G=(e,t)=>({...e,backgroundColor:t.gridBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor}}),K=(e,t,n,r)=>({...e,records:t,underlayBackgroundColor:r.underlayBackgroundColor,taskListTable:{...e.taskListTable,theme:n.extends(e.taskListTable?.theme??{})},timelineHeader:W(e.timelineHeader,r),grid:G(e.grid,r)}),q=async()=>{clearTimeout(L),L=void 0;let e=N.value;if(!e||z)return;let t=++I;try{let{Gantt:n}=await import(`@visactor/vtable-gantt`),{themes:r,register:i}=await import(`@visactor/vtable`),{InputEditor:a,DateInputEditor:o}=await import(`@visactor/vtable-editors`);if(!V(t,e))return;i.editor(`input`)||i.editor(`input`,new a),i.editor(`date-input`)||i.editor(`date-input`,new o);let s=w.theme===`dark`,c=E(C[w.preset]||C.basic,w.options),l=H(w.data||[]);P.value&&P.value.release();let u=new n(e,K(c,l,s?r.DARK:r.DEFAULT,U(s)));if(!V(t,e)){u.release();return}P.value=u,D(u,(e,t)=>T(`taskClick`,e,t),(e,t)=>T(`taskChange`,e,t)),T(`ganttCreated`,u)}catch(e){console.error(`甘特图初始化失败:`,e)}},J=()=>{R&&clearTimeout(R),R=setTimeout(()=>{R=void 0,z||P.value?.resize?.()},100)},Y=async()=>{let e=N.value;if(e)try{document.fullscreenElement===e?await document.exitFullscreen():await e.requestFullscreen(),F.value=document.fullscreenElement===e,J()}catch(t){console.warn(`全屏切换失败:`,t),F.value=document.fullscreenElement===e}},X=()=>{F.value=document.fullscreenElement===N.value,J()},Z=e=>{if(P.value&&e)try{P.value.setRecords(H(e))}catch(e){console.warn(`更新数据失败:`,e)}},Q=e=>{if(P.value&&e)try{P.value.updateOption(e)}catch(e){console.warn(`更新配置失败:`,e)}},$=()=>{if(P.value)try{P.value.release()}catch(e){console.warn(`销毁甘特图失败:`,e)}finally{P.value=void 0}};return y(()=>w.data,e=>{e&&P.value&&Z(e)},{deep:!0}),y(()=>[w.options,w.preset,w.theme],()=>void q(),{deep:!0,flush:`post`}),f(()=>{z=!1,document.addEventListener(`fullscreenchange`,X),u(()=>{z||I>0||(L=setTimeout(()=>q(),100))})}),p(()=>{z=!0,I+=1,L&&clearTimeout(L),R&&clearTimeout(R),document.removeEventListener(`fullscreenchange`,X),$()}),l({ganttInstance:P,updateData:Z,updateOptions:Q,toggleFullscreen:Y}),(n,l)=>(m(),a(`div`,O,[t.showToolbar?(m(),a(`div`,k,[o(`div`,A,[o(`span`,j,_(t.title||`甘特图`),1)]),o(`div`,M,[t.showFullscreenButton?(m(),r(v(x),{key:0,size:`small`,onClick:Y},{icon:b(()=>[c(e,{name:F.value?`carbon:minimize`:`carbon:maximize`,size:16,color:`currentColor`},null,8,[`name`])]),default:b(()=>[s(` `+_(F.value?`退出全屏`:`全屏`),1)]),_:1})):i(`v-if`,!0)])])):i(`v-if`,!0),o(`div`,{ref_key:`ganttContainerRef`,ref:N,class:`gantt-container`,style:d({height:B.value})},null,4)]))}}),[[`__scopeId`,`data-v-d89b5f44`]]);export{C as n,N as t};
1
+ import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createTextVNode as s,createVNode as c,defineComponent as l,nextTick as ee,normalizeStyle as te,onMounted as ne,onUnmounted as re,openBlock as u,ref as d,shallowRef as f,toDisplayString as p,unref as m,watch as h,withCtx as g}from"vue";import{NButton as _,NResult as v}from"naive-ui";const y={headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:1,fontSize:14,fontWeight:`bold`},bodyStyle:{borderColor:`rgba(128, 128, 128, 0.2)`,borderLineWidth:[1,0,1,0],fontSize:13}},b={basic:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:220,tree:!0},{field:`start`,title:`开始时间`,width:120},{field:`end`,title:`结束时间`,width:120},{field:`progress`,title:`进度`,width:80}],tableWidth:420,minTableWidth:300,theme:y},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`#e1e4e8`,cornerRadius:6},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:2}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:18,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:4,borderLineWidth:0},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:1,fillColor:`#ffd666`,width:12}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:12,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},project:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`任务名称`,width:200,tree:!0,editor:`input`},{field:`start`,title:`开始时间`,width:120,editor:`date-input`},{field:`end`,title:`结束时间`,width:120,editor:`date-input`},{field:`priority`,title:`优先级`,width:80,editor:`input`},{field:`progress`,title:`进度%`,width:80,editor:`input`}],tableWidth:480,minTableWidth:350,maxTableWidth:800,theme:y,hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(24, 144, 255, 0.3)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:12,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#1890ff`,completedBarColor:`#52c41a`,cornerRadius:6,borderLineWidth:0}},timelineHeader:{colWidth:60,horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},scales:[{unit:`week`,step:1,startOfWeek:`monday`,format:e=>`第${e.dateIndex}周`,style:{fontSize:13,fontWeight:`bold`,textAlign:`center`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11,textAlign:`center`}}]},rowSeriesNumber:{title:`序号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},timeline:{overscrollBehavior:`none`,headerRowHeight:45,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`事件名称`,width:250,tree:!0},{field:`start`,title:`时间`,width:150}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...y.headerStyle},bodyStyle:y.bodyStyle}},frame:{outerFrameStyle:{borderLineWidth:1,borderColor:`rgba(128, 128, 128, 0.3)`,cornerRadius:4},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,labelText:`{title}`,labelTextStyle:{fontSize:12,textAlign:`left`},barStyle:{width:22,barColor:`#722ed1`,completedBarColor:`#b37feb`,cornerRadius:8,borderLineWidth:0}},timelineHeader:{colWidth:60,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`day`,step:1,format:e=>`${e.dateIndex}`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},milestone:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:38,taskListTable:{columns:[{field:`title`,title:`里程碑`,width:200,tree:!0},{field:`start`,title:`目标日期`,width:120},{field:`priority`,title:`重要性`,width:100}],tableWidth:400,minTableWidth:300,theme:{headerStyle:{...y.headerStyle,borderColor:`#ffa940`},bodyStyle:{...y.bodyStyle,borderColor:`#ffa940`}}},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#ffa940`,cornerRadius:6},verticalSplitLineMoveable:!0},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`},horizontalLine:{lineWidth:1,lineColor:`rgba(255, 168, 64, 0.3)`}},taskBar:{startDateField:`start`,endDateField:`start`,labelText:`{title}`,labelTextStyle:{fontSize:12,fontWeight:`bold`},barStyle:{width:0,barColor:`transparent`},milestoneStyle:{borderColor:`#fa8c16`,borderLineWidth:2,fillColor:`#ffd666`,width:16}},timelineHeader:{colWidth:80,scales:[{unit:`month`,step:1,format:e=>`${e.dateIndex}月`,style:{fontSize:13,fontWeight:`bold`}},{unit:`week`,step:1,format:e=>`第${e.dateIndex}周`,style:{fontSize:11}}]},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}},official:{overscrollBehavior:`none`,headerRowHeight:40,rowHeight:40,taskListTable:{columns:[{field:`title`,title:`title`,width:180,sort:!0,tree:!0,editor:`input`},{field:`start`,title:`start`,width:120,sort:!0,editor:`date-input`},{field:`end`,title:`end`,width:120,sort:!0,editor:`date-input`},{field:`priority`,title:`priority`,width:80,sort:!0,editor:`input`},{field:`progress`,title:`progress`,width:80,sort:!0,editor:`input`}],tableWidth:460,minTableWidth:350,maxTableWidth:800,theme:{headerStyle:{...y.headerStyle,fontSize:18,color:`red`},bodyStyle:{...y.bodyStyle,fontSize:16,color:`#4D4D4D`}},hierarchyExpandLevel:2},frame:{outerFrameStyle:{borderLineWidth:2,borderColor:`#e1e4e8`,cornerRadius:8},verticalSplitLineMoveable:!0,verticalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3},horizontalSplitLine:{lineColor:`#e1e4e8`,lineWidth:3}},grid:{verticalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`},horizontalLine:{lineWidth:1,lineColor:`rgba(128, 128, 128, 0.2)`}},taskBar:{startDateField:`start`,endDateField:`end`,progressField:`progress`,moveable:!0,resizable:!0,hoverBarStyle:{barOverlayColor:`rgba(99, 144, 0, 0.4)`},labelText:`{title} {progress}%`,labelTextStyle:{fontSize:16,textAlign:`left`,textOverflow:`ellipsis`},barStyle:{width:20,barColor:`#ee8800`,completedBarColor:`#91e8e0`,cornerRadius:8,borderLineWidth:1,borderColor:`black`},milestoneStyle:{borderColor:`red`,borderLineWidth:1,fillColor:`green`,width:15}},timelineHeader:{backgroundColor:`#EEF1F5`,colWidth:60,horizontalLine:{lineWidth:1,lineColor:`#e1e4e8`},verticalLine:{lineWidth:1,lineColor:`#e1e4e8`},scales:[{unit:`week`,step:1,startOfWeek:`sunday`,format:e=>`Week ${e.dateIndex}`,style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`,textStick:!0}},{unit:`day`,step:1,format:e=>e.dateIndex.toString(),style:{fontSize:20,fontWeight:`bold`,color:`white`,strokeColor:`black`,textAlign:`right`,textBaseline:`bottom`}}]},markLine:[{date:`2024-07-28`,style:{lineWidth:1,lineColor:`blue`,lineDash:[8,4]}},{date:`2024-08-17`,style:{lineWidth:2,lineColor:`red`,lineDash:[8,4]}}],rowSeriesNumber:{title:`行号`,dragOrder:!0,headerStyle:{borderColor:`rgba(128, 128, 128, 0.2)`},style:{borderColor:`rgba(128, 128, 128, 0.2)`}},scrollStyle:{scrollRailColor:`rgba(246,246,246,0.5)`,visible:`scrolling`,width:6,scrollSliderCornerRadius:2,scrollSliderColor:`#1890ff`}}},x=new Set([`__proto__`,`prototype`,`constructor`]),S=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null};function ie(e,t){let n=new WeakMap,r=(e,t)=>{let i=n.get(t);if(i)return i;let a={...e};n.set(t,a);for(let[n,i]of Object.entries(t))x.has(n)||(a[n]=S(i)?r(S(e[n])?e[n]:{},i):i);return a};return r(e,t)}function ae(e,t,n){e.on(`click_task_bar`,e=>{e.record&&t(e.record,e.event)}),e.on(`change_date_range`,e=>{if(e.record){let t={start:e.startDate,end:e.endDate};n({...e.record,...t},t)}}),e.on(`progress_update`,e=>{if(e.record){let t={progress:e.progress};n({...e.record,...t},t)}});let r=e.taskListTableInstance;r&&(r.on(`click_cell`,e=>{let n=r.getCellOriginRecord(e.col,e.row);n&&typeof n==`object`&&`id`in n&&t(n,e.event)}),r.on(`change_cell_value`,e=>{let t=r.getCellOriginRecord(e.col,e.row),i=r.getHeaderField(e.col,e.row);t&&typeof i==`string`&&n({...t,[i]:e.changedValue},{[i]:e.changedValue})}))}const C={class:`c-vtable-gantt-wrapper`},w={key:0,class:`gantt-toolbar`},T={class:`toolbar-left`},E={class:`gantt-title`},D={class:`toolbar-right`},O={class:`gantt-body`};var k=t(l({name:`C_VtableGantt`,__name:`index`,props:{data:{default:()=>[]},options:{default:()=>({})},preset:{default:`basic`},height:{default:`600px`},title:{default:``},showToolbar:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},theme:{default:`light`}},emits:[`ganttCreated`,`taskClick`,`taskChange`,`error`],setup(t,{expose:l,emit:y}){let x=t,S=y,k=d(),A=f(),j=d(!1),M=d(!1),N=f(),P=0,F,I,L=!1,R=n(()=>typeof x.height==`number`?`${x.height}px`:x.height),z=(e,t)=>!L&&e===P&&k.value===t,B=e=>e.map(e=>({...e,title:e.title||`任务${e.id}`,children:e.children?B(e.children):void 0})),V=e=>({underlayBackgroundColor:e?`#1e1e1e`:`#ffffff`,timelineHeaderBg:e?`#2d2d2d`:`#EEF1F5`,gridBg:e?`#1e1e1e`:`#ffffff`,lineColor:e?`rgba(255, 255, 255, 0.1)`:`rgba(128, 128, 128, 0.2)`,textColor:e?`#ffffff`:`#000000`}),H=(e,t)=>({...e,backgroundColor:t.timelineHeaderBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor},scales:e?.scales?.map(e=>({...e,style:{...e.style,color:t.textColor}}))}),U=(e,t)=>({...e,backgroundColor:t.gridBg,horizontalLine:{...e?.horizontalLine,lineColor:t.lineColor},verticalLine:{...e?.verticalLine,lineColor:t.lineColor}}),W=(e,t,n,r)=>({...e,records:t,underlayBackgroundColor:r.underlayBackgroundColor,taskListTable:{...e.taskListTable,theme:n.extends(e.taskListTable?.theme??{})},timelineHeader:H(e.timelineHeader,r),grid:U(e.grid,r)}),G=e=>{let t=x.theme===`dark`;return W(ie(b[x.preset]||b.basic,x.options),B(x.data),t?e.DARK:e.DEFAULT,V(t))},K=e=>{if(e)try{e.release()}catch(e){console.warn(`销毁甘特图失败:`,e)}},q=(e,t,n)=>{e.editor(t)||e.editor(t,n())},J=async()=>{clearTimeout(F),F=void 0;let e=k.value;if(!e||L)return;let t=++P;M.value=!0,N.value=void 0;let n;try{let[{Gantt:r},{themes:i,register:a},{InputEditor:o,DateInputEditor:s}]=await Promise.all([import(`@visactor/vtable-gantt`),import(`@visactor/vtable`),import(`@visactor/vtable-editors`)]);if(!z(t,e))return;q(a,`input`,()=>new o),q(a,`date-input`,()=>new s);let c=G(i);$();let l=new r(e,c);if(n=l,!z(t,e)){l.release();return}ae(l,(e,t)=>S(`taskClick`,e,t),(e,t)=>S(`taskChange`,e,t)),A.value=l,n=void 0,S(`ganttCreated`,l)}catch(r){if(K(n),!z(t,e))return;N.value=r instanceof Error?r:Error(String(r)),S(`error`,N.value)}finally{z(t,e)&&(M.value=!1)}},Y=()=>{I&&clearTimeout(I),I=setTimeout(()=>{I=void 0,L||A.value?.resize?.()},100)},X=async()=>{let e=k.value;if(e)try{document.fullscreenElement===e?await document.exitFullscreen():await e.requestFullscreen(),j.value=document.fullscreenElement===e,Y()}catch(t){console.warn(`全屏切换失败:`,t),j.value=document.fullscreenElement===e}},Z=()=>{j.value=document.fullscreenElement===k.value,Y()},Q=e=>{if(A.value&&e)try{A.value.setRecords(B(e))}catch(e){console.warn(`更新数据失败:`,e)}},oe=e=>{if(A.value&&e)try{A.value.updateOption(e)}catch(e){console.warn(`更新配置失败:`,e)}},$=()=>{let e=A.value;A.value=void 0,K(e)};return h(()=>x.data,e=>{e&&A.value&&Q(e)},{deep:!0}),h(()=>[x.options,x.preset,x.theme],()=>void J(),{deep:!0,flush:`post`}),ne(()=>{L=!1,document.addEventListener(`fullscreenchange`,Z),ee(()=>{L||P>0||(F=setTimeout(()=>J(),100))})}),re(()=>{L=!0,M.value=!1,P+=1,F&&clearTimeout(F),I&&clearTimeout(I),document.removeEventListener(`fullscreenchange`,Z),$()}),l({ganttInstance:A,loading:M,error:N,reload:J,updateData:Q,updateOptions:oe,toggleFullscreen:X}),(n,l)=>(u(),a(`div`,C,[t.showToolbar?(u(),a(`div`,w,[o(`div`,T,[o(`span`,E,p(t.title||`甘特图`),1)]),o(`div`,D,[t.showFullscreenButton?(u(),r(m(_),{key:0,size:`small`,onClick:X},{icon:g(()=>[c(e,{name:j.value?`carbon:minimize`:`carbon:maximize`,size:16,color:`currentColor`},null,8,[`name`])]),default:g(()=>[s(` `+p(j.value?`退出全屏`:`全屏`),1)]),_:1})):i(`v-if`,!0)])])):i(`v-if`,!0),o(`div`,O,[o(`div`,{ref_key:`ganttContainerRef`,ref:k,class:`gantt-container`,style:te({height:R.value})},null,4),N.value?(u(),r(m(v),{key:0,class:`gantt-error`,status:`error`,title:`甘特图加载失败`,description:N.value.message},{footer:g(()=>[c(m(_),{loading:M.value,onClick:J},{default:g(()=>[...l[0]||=[s(`重试`,-1)]]),_:1},8,[`loading`])]),_:1},8,[`description`])):i(`v-if`,!0)])]))}}),[[`__scopeId`,`data-v-dbfd25e4`]]);export{b as n,k as t};