import{At as e,B as t,G as n,H as r,K as i,Mt as a,Tt as o,W as s,Z as c,at as l,ct as u,g as d,it as f,k as p,kt as m,ot as h,p as g,ut as _}from"./vue-B11_pI9F.js";import{t as v}from"./_plugin-vue_export-helper-B67ILkmu.js";import{n as y}from"./index-jtNAhQeK.js";import{n as b}from"./yaml-Jsje7sNc.js";import{K as x,gt as S,ot as ee,t as C}from"./ThumbnailSlide-COLdjDXw.js";import{i as w,n as T,r as E,t as D}from"./folderEntryParser-DjmgZytL.js";var O={gif:`image/gif`,jpg:`image/jpeg`,jpeg:`image/jpeg`,png:`image/png`,svg:`image/svg+xml`,webp:`image/webp`},k=`[RawPreview]`,A={info:(...e)=>{console.info(k,...e)},warn:(...e)=>{console.warn(k,...e)},error:(...e)=>{console.error(k,...e)}},j=e=>typeof e==`object`&&!!e&&!Array.isArray(e),M=e=>j(e)?typeof e.path==`string`&&typeof e.content==`string`:!1,te=e=>j(e)?typeof e.path==`string`:!1,N=e=>/\.(png|jpe?g|webp|gif|svg)$/i.test(e),P=e=>/\.pptd$/i.test(e),F=e=>e?.replace(/^sandbox:\/+/,``),I=e=>(F(e)??e).replace(/^\/+/,``),ne=e=>{let t=F(e);if(!t)return;let n=t.lastIndexOf(`/`);return n>=0?t.substring(0,n+1):void 0},L=e=>{let t=e?I(e):``;return t?`${t.replace(/\/+$/,``)}/`:``},R=(e,t=`application/octet-stream`)=>{let n=e.split(`.`).pop()?.toLowerCase();return n?O[n]??t:t},z=e=>Array.isArray(e.files)?e.files.filter(M):[],re=e=>z(e).find(e=>P(e.path)),ie=e=>typeof e.pptdContent==`string`?e.pptdContent:typeof e.pptd==`string`?e.pptd:M(e.pptd)?e.pptd.content:re(e)?.content,ae=e=>typeof e.pptdPath==`string`?e.pptdPath:M(e.pptd)?e.pptd.path:re(e)?.path,oe=e=>{let t=new Map;return e.forEach(e=>{t.set(e.path,e)}),[...t.values()]},se=e=>({path:e.path,content:e.content,mimeType:R(e.path)}),ce=e=>{let t=z(e).filter(e=>N(e.path)).map(se),n=Array.isArray(e.images)?e.images.filter(te):[];return oe([...t,...n])},B=e=>{let t=Array.isArray(e.pages)?e.pages.filter(M):[];return M(e.page)&&t.push(e.page),oe([...t,...z(e)]).filter(e=>!P(e.path)&&!N(e.path))},le=e=>/^\s*(?:<\?xml[\s\S]*?)?]/i.test(e),V=(e,t)=>{try{return new Blob([he(t)],{type:R(e)})}catch(t){A.warn(`invalid image base64`,{path:e,error:t});return}},H=(e,t)=>{let n=R(e);if(n===`image/svg+xml`&&le(t))return new Blob([t],{type:n})},U=e=>{if(!j(e))return;let t=e,n=ie(t),r=B(t);if(!(!n||r.length===0))return{pptdContent:n,pptdPath:ae(t),pages:r,pageIds:Array.isArray(t.pageIds)?t.pageIds.filter(e=>typeof e==`string`):void 0,images:ce(t),imageReplacerMap:j(t.imageReplacerMap)?Object.fromEntries(Object.entries(t.imageReplacerMap).filter(e=>typeof e[1]==`string`)):void 0,lastModifiedTime:t.lastModifiedTime}},W=e=>{if(!j(e))return{dataType:typeof e};let t=e,n=B(t);return{keys:Object.keys(e),hasPptd:typeof t.pptd==`string`||M(t.pptd),hasPptdContent:typeof t.pptdContent==`string`,pptdPath:ae(t),filesCount:Array.isArray(t.files)?t.files.length:0,pagesCount:n.length,imagesCount:ce(t).length,imageReplacerCount:j(t.imageReplacerMap)?Object.keys(t.imageReplacerMap).length:0,pageIds:Array.isArray(t.pageIds)?t.pageIds:void 0}},G=e=>{if(!j(e))return`data is not object`;let t=e;if(!ie(t))return`missing pptdContent or pptd`;if(B(t).length===0)return`missing pages or page`},ue=e=>{let t={};return e.forEach(e=>{!j(e)||typeof e.elementType!=`string`||(t[e.elementType]=(t[e.elementType]??0)+1)}),t},de=e=>{if(e.elementType===`text`)return e.content.text.replace(/<[^>]+>/g,` `).replace(/\s+/g,` `).trim()},fe=e=>{let t=e.elements.filter(e=>e.elementType===`image`).map(e=>e.src).filter(Boolean).slice(0,12),n=e.elements.map(de).filter(e=>!!e).slice(0,6);return{pageId:e.pageId,pagePath:e.pagePath,typeCounts:ue(e.elements),imageSrcs:t,textSamples:n}},pe=e=>Object.entries(e).map(([e,t])=>{try{return fe({...b(t),pageId:e.replace(/\.page$/,``),pagePath:e})}catch(t){return{pagePath:e,error:t}}}),K=e=>/^data:/i.test(e),q=e=>/^blob:/i.test(e),J=e=>/^https?:\/\//i.test(e),me=e=>{let t=e.indexOf(`,`);return t>=0?e.slice(t+1):e},he=e=>{let t=atob(me(e)),n=new Uint8Array(t.length);for(let e=0;e{if(typeof Blob<`u`&&e instanceof Blob)return e;if(e instanceof ArrayBuffer)return new Blob([e],{type:t});if(ArrayBuffer.isView(e)){let n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=new Uint8Array(n);return new Blob([r],{type:t})}if(Array.isArray(e))return new Blob([new Uint8Array(e)],{type:t});if(j(e)&&Array.isArray(e.data))return new Blob([new Uint8Array(e.data)],{type:t})},_e=e=>e?{seconds:typeof e.seconds==`string`?BigInt(e.seconds):e.seconds,nanos:e.nanos}:null,Y=e=>{document.documentElement.dataset.rawPreviewStatus=e,A.info(`status`,e),window.dispatchEvent(new CustomEvent(`raw-preview:status`,{detail:{status:e}}))},X=(e,t)=>{e?.type===`image`&&e.src&&t.push(e.src)},ve=e=>{let t=[];for(let n of Object.values(e))try{let e=b(n);X(e.background,t);for(let n of e.elements)n.elementType===`image`&&t.push(n.src),`fill`in n&&X(n.fill,t),n.elementType===`table`&&(typeof n.style!=`string`&&X(n.style?.fill,t),n.rows.forEach(e=>{e.forEach(e=>{X(e?.fill,t)})}))}catch{}return[...new Set(t.filter(Boolean))]},Z=(e,t,n)=>{let r={...t},i=Object.entries(t).map(([e,t])=>[I(e),t]),a=L(n);for(let t of ve(e)){let e=I(t),n=a?I(`${a}${e}`):``,o=i.find(([t])=>t===e||t===n||t.endsWith(`/${e}`));o&&(r[t]=o[1])}return r},Q=(e,t)=>{let n=e.find(e=>e.path.endsWith(`.pptd`))??e[0];if(!n)throw Error(`Invalid fsjson`);return{pptdContent:n.content,pptdPath:t??n.path,pages:e.filter(e=>e!==n&&!N(e.path)).map(e=>({path:e.path,content:e.content})),images:e.filter(e=>e!==n&&N(e.path)).map(se)}},ye=(e={})=>{let{importFSJSON:t,pages:n,setLastModified:r}=ee(),{resolveValidImageUrl:i,setImageConfig:a}=x(),s=o(!0),c=o(!1),u=o(),d=!1,p,m=[],g=()=>{m.forEach(e=>URL.revokeObjectURL(e)),m=[]},_=e=>{let t=URL.createObjectURL(e);return m.push(t),t},v=e=>{let t=e.mimeType||R(e.path),n=e.content??e.data??e.base64;if(e.url&&(J(e.url)||K(e.url)||q(e.url)))return e.url;if(typeof n==`string`){if(J(n)||K(n)||q(n))return n;let t=H(e.path,n)??V(e.path,n);return t?_(t):void 0}if(n){let e=ge(n,t);return e?_(e):void 0}},b=(e,t)=>{g();let n={},r=L(t);for(let t of e.images??[]){let e=v(t);if(!e)continue;let i=I(t.path),a=r&&i.startsWith(r)?i.slice(r.length):i;n[t.path]=e,n[i]=e,n[a]=e}return n},C=e=>{if(e)return Object.fromEntries(Object.entries(e).map(([e,t])=>{if(J(t)||K(t)||q(t))return[e,t];let n=H(e,t)??V(e,t);return[e,n?_(n):t]}))},w=async()=>{await f(),await document.fonts?.ready.catch(()=>void 0),await new Promise(e=>requestAnimationFrame(()=>requestAnimationFrame(()=>e()))),await new Promise(e=>setTimeout(e,60))},T=async(o,l,f=`message`)=>{let m=U(o);if(!m){A.warn(`ignore loadMessageData`,{reason:G(o),summary:W(o)});return}if(!d){p={rawData:o,extraImageReplacerMap:l,source:f},A.info(`cache message before ready`,{source:f,summary:W(o)});return}s.value=!0,c.value=!1,Y(`loading`);try{let o=F(m.pptdPath)??`presentation.pptd`,c=ne(m.pptdPath),d=Object.fromEntries(m.pages.map(e=>[e.path,e.content]));A.info(`start import`,{source:f,pptdPath:o,basePath:c,pagesCount:m.pages.length,pageIds:m.pageIds,imagesCount:m.images?.length??0,extraImageReplacerCount:l?Object.keys(l).length:0}),A.info(`page yaml elements`,{pages:pe(d)});let p=[{path:o,content:m.pptdContent},...m.pages.map(e=>({path:e.path,content:e.content}))],h={...Z(d,b(m,c),c),...C(l),...C(m.imageReplacerMap)};A.info(`image config`,{imageReplacerCount:Object.keys(h).length,imageReplacerKeys:Object.keys(h).slice(0,20)}),a({basePath:c,imageReplacerMap:Object.keys(h).length?h:void 0}),r(_e(m.lastModifiedTime)),u.value=m.pageIds;let g=ve(d);A.info(`preload images`,{count:g.length}),await Promise.allSettled(g.map(e=>i(e))),A.info(`import fsjson`,{filesCount:p.length}),t(p),A.info(`store elements after import`,{pages:[...n.value.values()].map(fe)}),s.value=!1,await S(),await w(),await e.onLoaded?.(),Y(`loaded`),A.info(`loaded`,{source:f,pagesCount:m.pages.length}),window.dispatchEvent(new CustomEvent(`raw-preview:loaded`,{detail:{source:f}}))}catch(e){A.error(`load failed`,e),y(e),s.value=!1,c.value=!0,Y(`error`),window.dispatchEvent(new CustomEvent(`raw-preview:error`,{detail:{error:e,source:f}}))}},E=e=>T(e),D=(e,t)=>E(Q(e,t)),O=(e,t,n=window.location.origin)=>{window.postMessage(Q(e,t),n)},k=()=>{if(!p)return;let e=p;p=void 0,A.info(`consume cached message`,{source:e.source,summary:W(e.rawData)}),T(e.rawData,e.extraImageReplacerMap,e.source)},j=e=>{if(A.info(`message received`,{origin:e.origin,summary:W(e.data)}),!U(e.data)){A.warn(`message ignored`,{reason:G(e.data)});return}E(e.data)};return typeof window<`u`&&window.addEventListener(`message`,j),h(()=>{d=!0,Y(`idle`),window.rawPreview={fsjsonToMessage:Q,postFSJSON:O,loadFSJSON:D,loadMessage:E},A.info(`api ready`,{hasPendingMessage:!!p}),k()}),l(()=>{d=!1,p=void 0,g(),window.removeEventListener(`message`,j),window.rawPreview?.loadMessage===E&&(window.rawPreview=void 0)}),{isLoading:s,isError:c,messagePageIds:u,loadMessageData:T}},be=e=>/\.(png|jpe?g|webp|gif|svg)$/i.test(e),$=e=>{e.preventDefault(),e.stopPropagation()},xe=e=>{let t=new Map,n=()=>{t.forEach(e=>URL.revokeObjectURL(e)),t=new Map},r=async e=>{n();let r=(await T(e)).filter(e=>be(e.relativePath)),i=await Promise.all(r.map(async e=>{let t=await D(e.file);return[I(e.relativePath),URL.createObjectURL(t)]}));t=new Map(i)},i=async n=>{let i=await E(n);if(i.length===0)throw Error(`目录下未找到 .pptd 文件`);let a=i[0];await r(a.parentDir);let{metaYaml:o,pagesYamlMap:s}=await w(a.file,a.parentDir),c=a.displayPath.replace(/^\.\//,``)||a.file.name,l=[{path:c,content:o},...Object.entries(s).map(([e,t])=>({path:e,content:t}))];await e.loadMessageData(Q(l,c),Z(s,Object.fromEntries(t)),`drop`)},a=$,o=e=>{$(e),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`)},s=$;return l(()=>{n()}),{handleDragEnter:a,handleDragOver:o,handleDragLeave:s,handleDrop:async e=>{$(e);let t=e.dataTransfer?.items;if(!t||t.length===0)return;let n=Array.from(t).map(e=>e.webkitGetAsEntry?.()).filter(e=>!!e).find(e=>e.isDirectory);if(n)try{await i(n)}catch(e){y(e),window.dispatchEvent(new CustomEvent(`raw-preview:error`,{detail:{error:e,source:`drop`}}))}}}},Se={key:0,class:`raw-preview-pages`},Ce=v(c({__name:`Raw`,setup(c){let l=p(),{pages:f,pageOrder:v,pageSize:y}=ee(),b=o(),x=o(typeof window>`u`?0:window.innerWidth),S=()=>{x.value=b.value?.clientWidth??window.innerWidth},{isLoading:w,isError:T,loadMessageData:E}=ye({onLoaded:S}),{handleDragEnter:D,handleDragOver:O,handleDragLeave:k,handleDrop:A}=xe({loadMessageData:E}),j=r(()=>{let e=l.query.pageIds;return Array.isArray(e)?e[0]:e}),M=r(()=>l.query.pageIds!==void 0),te=r(()=>typeof j.value==`string`?j.value.split(`,`).map(e=>e.trim()).filter(Boolean):[]),N=r(()=>M.value?te.value:v.value),P=r(()=>Math.max(x.value,0)),F=r(()=>N.value.flatMap((e,t)=>{let n=f.value.get(e);return n?{key:`${t}:${e}`,pageId:e,slide:n}:[]}));return d(b,S),g(window,`resize`,S),g(window,`dragenter`,D),g(window,`dragover`,O),g(window,`dragleave`,k),g(window,`drop`,A),h(S),(r,o)=>(u(),i(`div`,{ref_key:`previewRef`,ref:b,class:e([`raw-preview`,{"is-loading":m(w),"is-error":m(T)}]),onDragenter:o[0]||(o[0]=(...e)=>m(D)&&m(D)(...e)),onDragover:o[1]||(o[1]=(...e)=>m(O)&&m(O)(...e)),onDragleave:o[2]||(o[2]=(...e)=>m(k)&&m(k)(...e)),onDrop:o[3]||(o[3]=(...e)=>m(A)&&m(A)(...e))},[!m(w)&&!m(T)?(u(),i(`div`,Se,[(u(!0),i(t,null,_(F.value,e=>(u(),s(C,{key:e.key,class:`thumbnail-page raw-preview-page`,"data-page-id":e.pageId,slide:e.slide,"page-width":m(y)[0],"page-height":m(y)[1],style:a({width:`${P.value}px`})},null,8,[`data-page-id`,`slide`,`page-width`,`page-height`,`style`]))),128))])):n(``,!0)],34))}}),[[`__scopeId`,`data-v-2545fa61`]]);export{Ce as default};