filepond-plugin-pdf-preview-with-types
Version:
Pdf preview Plugin for FilePond
8 lines (7 loc) • 2.46 kB
JavaScript
/*!
* FilePondPluginPdfPreview 1.0.2
* Licensed under MIT, https://opensource.org/licenses/MIT/
* Please visit undefined for details.
*/
/* eslint-disable */
const isPreviewablePdf=e=>/pdf$/.test(e.type),createPdfView=e=>e.utils.createView({name:"pdf-preview",tag:"div",ignoreRect:!0,create:({root:e,props:t})=>{const i=e.query("GET_ITEM",{id:t.id});if(isPreviewablePdf(i.file)){const t=e.query("GET_PDF_PREVIEW_HEIGHT");e.ref.pdf=document.createElement("object"),e.ref.pdf.setAttribute("height",t),e.ref.pdf.setAttribute("width","100%"),e.ref.pdf.setAttribute("style","position:absolute;left:0;right:0;margin:auto;padding-top:unset;"+(t?"height:"+t+"px;":"")),e.element.appendChild(e.ref.pdf)}},write:e.utils.createRoute({DID_PDF_PREVIEW_LOAD:({root:e,props:t})=>{const{id:i}=t,r=e.query("GET_ITEM",{id:i});if(!r)return;let d=window.URL||window.webkitURL,o=new Blob([r.file],{type:r.file.type});if(e.ref.pdf.type=r.file.type,isPreviewablePdf(r.file)){const t=e.query("GET_PDF_COMPONENT_EXTRA_PARAMS");e.ref.pdf.data=d.createObjectURL(o)+(t?"#?"+t:"")}e.ref.pdf.addEventListener("load",()=>{isPreviewablePdf(r.file)&&e.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:i,height:e.ref.pdf.scrollHeight})},!1)}})}),createPdfWrapperView=e=>{return e.utils.createView({name:"pdf-preview-wrapper",create:({root:t,props:i})=>{const r=createPdfView(e);t.ref.pdf=t.appendChildView(t.createChildView(r,{id:i.id}))},write:e.utils.createRoute({DID_PDF_PREVIEW_CONTAINER_CREATE:({root:e,props:t})=>{const{id:i}=t;e.query("GET_ITEM",i)&&e.dispatch("DID_PDF_PREVIEW_LOAD",{id:i})}})})},plugin=e=>{const{addFilter:t,utils:i}=e,{Type:r,createRoute:d}=i,o=createPdfWrapperView(e);return t("CREATE_VIEW",e=>{const{is:t,view:i,query:r}=e;if(!t("file"))return;i.registerWriter(d({DID_LOAD_ITEM:({root:e,props:t})=>{const{id:d}=t,p=r("GET_ITEM",d);p&&!p.archived&&isPreviewablePdf(p.file)&&(e.ref.pdfPreview=i.appendChildView(i.createChildView(o,{id:d})),e.dispatch("DID_PDF_PREVIEW_CONTAINER_CREATE",{id:d}))}},({root:e,props:t})=>{const{id:i}=t,d=r("GET_ITEM",i);isPreviewablePdf(d.file)&&e.rect.element.hidden}))}),{options:{allowPdfPreview:[!0,r.BOOLEAN],pdfPreviewHeight:[320,r.INT],pdfComponentExtraParams:["toolbar=0&navpanes=0&scrollbar=0&statusbar=0&zoom=0&messages=0&view=fitH&page=1",r.STRING]}}},isBrowser="undefined"!=typeof window&&void 0!==window.document;isBrowser&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:plugin}));export default plugin;