zhytech-ui-mobile 1.0.16 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/dist/static/file-viewer/favicon.ico +0 -0
- package/dist/static/file-viewer/index.html +8 -0
- package/dist/static/file-viewer/static/cmaps/78-EUC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/78-EUC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/78-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/78-RKSJ-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/78-RKSJ-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/78-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/78ms-RKSJ-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/78ms-RKSJ-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/83pv-RKSJ-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/90ms-RKSJ-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/90ms-RKSJ-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/90msp-RKSJ-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/90msp-RKSJ-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/90pv-RKSJ-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/90pv-RKSJ-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Add-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Add-RKSJ-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Add-RKSJ-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Add-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-CNS1-0.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-CNS1-1.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-CNS1-2.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-CNS1-3.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-CNS1-4.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-CNS1-5.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-CNS1-6.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-GB1-0.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-GB1-1.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-GB1-2.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-GB1-3.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-GB1-4.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-GB1-5.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Japan1-0.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Japan1-1.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Japan1-2.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Japan1-3.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Japan1-4.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Japan1-5.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Japan1-6.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Korea1-0.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Korea1-1.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Korea1-2.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/B5-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/B5-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/B5pc-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/B5pc-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/CNS-EUC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/CNS-EUC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/CNS1-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/CNS1-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/CNS2-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/CNS2-V.bcmap +3 -0
- package/dist/static/file-viewer/static/cmaps/ETHK-B5-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/ETHK-B5-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/ETen-B5-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/ETen-B5-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/ETenms-B5-H.bcmap +3 -0
- package/dist/static/file-viewer/static/cmaps/ETenms-B5-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/EUC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/EUC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Ext-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Ext-RKSJ-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Ext-RKSJ-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Ext-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GB-EUC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GB-EUC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GB-H.bcmap +4 -0
- package/dist/static/file-viewer/static/cmaps/GB-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBK-EUC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBK-EUC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBK2K-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBK2K-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBKp-EUC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBKp-EUC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBT-EUC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBT-EUC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBT-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBT-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBTpc-EUC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBTpc-EUC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBpc-EUC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/GBpc-EUC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKdla-B5-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKdla-B5-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKdlb-B5-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKdlb-B5-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKgccs-B5-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKgccs-B5-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKm314-B5-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKm314-B5-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKm471-B5-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKm471-B5-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKscs-B5-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/HKscs-B5-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Hankaku.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Hiragana.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSC-EUC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSC-EUC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSC-Johab-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSC-Johab-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSCms-UHC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSCms-UHC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSCpc-EUC-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/KSCpc-EUC-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Katakana.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/LICENSE +36 -0
- package/dist/static/file-viewer/static/cmaps/NWP-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/NWP-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/RKSJ-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/RKSJ-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/Roman.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniCNS-UCS2-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniCNS-UCS2-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniCNS-UTF16-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniCNS-UTF16-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniCNS-UTF32-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniCNS-UTF32-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniCNS-UTF8-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniCNS-UTF8-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniGB-UCS2-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniGB-UCS2-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniGB-UTF16-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniGB-UTF16-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniGB-UTF32-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniGB-UTF32-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniGB-UTF8-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniGB-UTF8-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS-UCS2-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS-UCS2-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS-UTF16-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS-UTF16-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS-UTF32-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS-UTF32-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS-UTF8-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS-UTF8-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniKS-UCS2-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniKS-UCS2-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniKS-UTF16-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniKS-UTF16-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniKS-UTF32-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniKS-UTF32-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniKS-UTF8-H.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/UniKS-UTF8-V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/V.bcmap +0 -0
- package/dist/static/file-viewer/static/cmaps/WP-Symbol.bcmap +0 -0
- package/dist/static/file-viewer/static/css/chunk-vendors.053867c8.css +56 -0
- package/dist/static/file-viewer/static/css/index.0c25f33c.css +1 -0
- package/dist/static/file-viewer/static/js/chunk-vendors.6bb4c871.js +414 -0
- package/dist/static/file-viewer/static/js/chunk-vendors.6bb4c871.js.map +1 -0
- package/dist/static/file-viewer/static/js/index.a3ae5baa.js +2 -0
- package/dist/static/file-viewer/static/js/index.a3ae5baa.js.map +1 -0
- package/dist/static/file-viewer/static/js/pdf.worker.min.7bcf53ad.js +22 -0
- package/dist/static/file-viewer/static/js/pptx.worker.3c5d3299.worker.js +11 -0
- package/dist/static/file-viewer/static/js/pptx.worker.3c5d3299.worker.js.map +1 -0
- package/dist/static/iconfont/iconfont.css +19 -3
- package/dist/static/iconfont/iconfont.ttf +0 -0
- package/dist/static/iconfont/iconfont.woff +0 -0
- package/dist/static/iconfont/iconfont.woff2 +0 -0
- package/dist/static/scss/checkbox.scss +12 -14
- package/dist/static/scss/index.scss +0 -1
- package/dist/static/scss/picker.scss +0 -16
- package/dist/static/scss/radio.scss +12 -14
- package/dist/static/scss/tabs.scss +11 -11
- package/dist/style.css +1 -1
- package/dist/types/components/filePreview/index.d.ts +5 -0
- package/dist/types/components/filePreview/types/filePreviewType.d.ts +18 -0
- package/dist/types/components/puzzleVCode/index.d.ts +5 -0
- package/dist/types/components/puzzleVCode/types/configOptionView.d.ts +53 -0
- package/dist/types/index.d.ts +4 -2
- package/dist/zhytech-ui-mobile.es.js +949 -253
- package/dist/zhytech-ui-mobile.umd.js +2 -2
- package/package.json +2 -1
- package/dist/static/scss/datetime.scss +0 -35
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(e){function t(t){for(var n,i,r=t[0],l=t[1],c=t[2],f=0,p=[];f<r.length;f++)i=r[f],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);d&&d(t);while(p.length)p.shift()();return a.push.apply(a,c||[]),s()}function s(){for(var e,t=0;t<a.length;t++){for(var s=a[t],n=!0,r=1;r<s.length;r++){var l=s[r];0!==o[l]&&(n=!1)}n&&(a.splice(t--,1),e=i(i.s=s[0]))}return e}var n={},o={index:0},a=[];function i(t){if(n[t])return n[t].exports;var s=n[t]={i:t,l:!1,exports:{}};return e[t].call(s.exports,s,s.exports,i),s.l=!0,s.exports}i.m=e,i.c=n,i.d=function(e,t,s){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(i.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(s,n,function(t){return e[t]}.bind(null,n));return s},i.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="";var r=window["webpackJsonp"]=window["webpackJsonp"]||[],l=r.push.bind(r);r.push=t,r=r.slice();for(var c=0;c<r.length;c++)t(r[c]);var d=l;a.push([1,"chunk-vendors"]),s()})({0:function(e,t){},1:function(e,t,s){e.exports=s("c31f")},1587:function(e,t,s){},2:function(e,t){},"20e9":function(e,t,s){},3:function(e,t){},"38c1":function(e,t,s){},4:function(e,t){},4678:function(e,t,s){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf75","./tlh.js":"cf75","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function o(e){var t=a(e);return s(t)}function a(e){if(!s.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}o.keys=function(){return Object.keys(n)},o.resolve=a,e.exports=o,o.id="4678"},"4a2f":function(e,t,s){"use strict";s("8e03")},5:function(e,t){},6:function(e,t){},6687:function(e,t,s){},7:function(e,t){},"70f1":function(e,t,s){"use strict";s("20e9")},"82cf":function(e,t,s){},"8b09":function(e,t,s){"use strict";s("38c1")},"8e03":function(e,t,s){},"8f29":function(e,t,s){},"903f":function(e,t,s){"use strict";s("9aee")},"9aee":function(e,t,s){},"9fc6":function(e,t,s){"use strict";s("8f29")},b15b:function(e,t,s){"use strict";s("6687")},b17a:function(e,t,s){},c31f:function(e,t,s){"use strict";s.r(t);var n=s("2b0e"),o=function(){var e=this,t=e._self._c;return t("div",[t("vue-file-viewer",{attrs:{shoHead:""}})],1)},a=[],i=function(){var e=this,t=e._self._c;return t("div",{staticClass:"vue-file-viewer",attrs:{id:"vue-file-viewer"}},[e.options.shoHead?t("div",{staticClass:"banner"},[t("div",{staticClass:"file-select"},[t("button",{staticStyle:{"margin-right":"20px"},attrs:{type:"button"},on:{click:function(t){t.stopPropagation(),e.isUrl=!e.isUrl}}},[e._v(" 【点击切换】"+e._s(e.isUrl?"上传预览":"输入网址")+" ")]),t("div",{staticClass:"overlay"},[e.isUrl?t("span",{staticStyle:{"white-space":"pre"}},[t("div",{staticStyle:{"margin-bottom":"10px"}},[t("select",{directives:[{name:"model",rawName:"v-model",value:e.selectedFileType,expression:"selectedFileType"}],staticStyle:{height:"30px","border-radius":"6px","margin-right":"10px",padding:"0 5px"},on:{change:[function(t){var s=Array.prototype.filter.call(t.target.options,(function(e){return e.selected})).map((function(e){var t="_value"in e?e._value:e.value;return t}));e.selectedFileType=t.target.multiple?s:s[0]},e.handleFileTypeChange]}},[t("option",{attrs:{value:""}},[e._v("请选择文件类型")]),t("option",{attrs:{value:"docx"}},[e._v("Word文档")]),t("option",{attrs:{value:"pptx"}},[e._v("PPT文档")]),t("option",{attrs:{value:"pdf"}},[e._v("PDF文档")]),t("option",{attrs:{value:"png"}},[e._v("PNG图片")]),t("option",{attrs:{value:"mp4"}},[e._v("MP4视频")]),t("option",{attrs:{value:"mp3"}},[e._v("MP3音频")])])]),t("input",{directives:[{name:"model",rawName:"v-model",value:e.inputUrl,expression:"inputUrl"}],attrs:{type:"text",placeholder:"请输入浏览文件地址"},domProps:{value:e.inputUrl},on:{input:function(t){t.target.composing||(e.inputUrl=t.target.value)}}}),t("button",{attrs:{type:"button"},on:{click:function(t){return t.stopPropagation(),e.loadFromUrl(e.inputUrl,{shoHead:!0})}}},[e._v(" 预览 ")]),t("button",{staticStyle:{background:"#f5f5f5",color:"#333","margin-left":"5px"},attrs:{type:"button"},on:{click:function(t){return t.stopPropagation(),e.clearSelection.apply(null,arguments)}}},[e._v(" 清除 ")])]):t("span",[t("input",{attrs:{type:"file"},on:{change:e.handleChange}})])])])]):e._e(),!e.loading&&e.options.showCtrolBtn?t("div",{staticClass:"ctrol_btn"},[t("span",{directives:[{name:"show",rawName:"v-show",value:e.options.showScaleBtn,expression:"options.showScaleBtn"}]},[t("span",{staticClass:"scale_add",on:{click:function(t){return e.scaleBtn("add")}}}),t("span",{staticClass:"scale_reduce",on:{click:function(t){return e.scaleBtn("reduce")}}})]),t("span",{directives:[{name:"show",rawName:"v-show",value:e.options.showDownLoadBtn,expression:"options.showDownLoadBtn"}]},[t("span",{directives:[{name:"show",rawName:"v-show",value:e.options.showScaleBtn,expression:"options.showScaleBtn"}],staticStyle:{padding:"0 15px",color:"rgba(255,255,255,0.3)"}},[e._v(" | ")]),t("span",{staticClass:"download",on:{click:function(t){return e.fileDownload(e.inputUrl||e.iframeFile,e.uploadFileName)}}},[e._v(" 下载 ")])])]):e._e(),t("div",{staticStyle:{height:"100%",width:"100%"}},[t("div",{directives:[{name:"show",rawName:"v-show",value:e.loading,expression:"loading"}],staticClass:"loading"},[e._v("正在加载中,请耐心等待...")]),t("div",{directives:[{name:"show",rawName:"v-show",value:!e.loading,expression:"!loading"}],ref:"output",staticClass:"output",staticStyle:{height:"100%",width:"100%",overflow:"auto","transform-origin":"top left"},style:{transform:`scale(${e.clientZoom})`,height:1/e.clientZoom*100+"%",width:1/e.clientZoom*100+"%"}})])])},r=[],l=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function c(e){var t,s,n,o,a,i,r;i=e.length,a=0,r="";while(a<i){do{t=l[255&e.charCodeAt(a++)]}while(a<i&&-1==t);if(-1==t)break;do{s=l[255&e.charCodeAt(a++)]}while(a<i&&-1==s);if(-1==s)break;r+=String.fromCharCode(t<<2|(48&s)>>4);do{if(n=255&e.charCodeAt(a++),61==n)return r;n=l[n]}while(a<i&&-1==n);if(-1==n)break;r+=String.fromCharCode((15&s)<<4|(60&n)>>2);do{if(o=255&e.charCodeAt(a++),61==o)return r;o=l[o]}while(a<i&&-1==o);if(-1==o)break;r+=String.fromCharCode((3&n)<<6|o)}return r}var d=s("376d"),f=new n["default"],p=function(){var e=this,t=e._self._c;return t("div",{ref:"wrapper",staticClass:"pptx-wrapper"})},u=[],h=s("1157"),m=s.n(h);const b=()=>({slidesScale:"",slideMode:!1,slideType:"divs2slidesjs",revealjsPath:"",keyBoardShortCut:!1,mediaProcess:!0,jsZipV2:!1,themeProcess:!0,incSlide:{width:0,height:0},slideModeConfig:{first:1,nav:!0,navTxtColor:"black",keyBoardShortCut:!0,showSlideNum:!0,showTotalSlideNum:!0,autoSlide:!0,randomAutoSlide:!1,loop:!1,background:!1,transition:"default",transitionTime:1},revealjsConfig:{}});function g(){return new Worker(s.p+"static/js/pptx.worker.3c5d3299.worker.js")}s("cef8");var w={name:"pptx",props:{data:ArrayBuffer,options:{type:Object,default:b,description:"默认配置,支持扩展"}},data(){return{isDone:!1,thumbElement:null,worker:null}},mounted(){this.startWorker()},methods:{startWorker(){this.worker&&this.worker.terminate(),this.worker=new g,this.worker.addEventListener("message",e=>this.processMessage(e.data),!1),this.timer=setInterval(this.stopWorker,500),this.worker.postMessage({type:"processPPTX",data:this.data,IE11:!!window.MSInputMethodContext&&!!document.documentMode,options:this.options})},stopWorker(){this.isDone&&(this.worker.terminate(),console.log("worker terminated"),clearInterval(this.timer))},resize(){const e=m()(this.$refs.wrapper),t=Math.max(...Array.from(e.children("section")).map(e=>e.offsetWidth)),s=e[0].offsetWidth;e.css({transform:`scale(${s/t})`,"transform-origin":"top left"})},processMessage(e){if(this.isDone)return;const t=m()(this.$refs.wrapper),{thumbElement:s}=this;switch(e.type){case"slide":console.log("正在处理:",e.slide_num),t.append(e.data);break;case"pptx-thumb":s&&m()(s).attr("src","data:image/jpeg;base64,"+e.data);break;case"slideSize":break;case"globalCSS":t.append(`<style>${e.data}</style>`);break;case"Done":case"ExecutionTime":this.isDone=!0,f.$emit("fileLoaded",{fileType:"ppt",success:!0});break;case"WARN":console.warn("PPTX processing warning: ",e.data);break;case"ERROR":this.isDone=!0,console.error("PPTX processing error: ",e.data);break;case"DEBUG":console.debug("Worker: ",e.data);break;case"INFO":default:console.info("Worker: ",e.data)}}}},y=w,v=(s("d0ac"),s("2877")),j=Object(v["a"])(y,p,u,!1,null,"8d0788d2",null),F=j.exports;async function x(e,t){return new n["default"]({render:t=>t(F,{props:{data:e}})}).$mount(t)}var C=s("e8ae"),k=s.n(C),T=function(){var e=this,t=e._self._c;return t("div",[t("div",[t("hot-table",{ref:"table",attrs:{settings:e.hotSettings}})],1),t("div",{staticClass:"btn-group"},e._l(e.sheets,(function(s){return t("button",{key:s.id,staticStyle:{padding:"0 30px"},attrs:{type:e.sheetIndex===s.id?"primary":"default"},on:{click:function(t){return e.handleSheet(s.id)}}},[e._v(" "+e._s(s.name)+" ")])})),0)])},S=[],O=s("c24d"),_=s("e437"),B=s("e30f"),$=s("13e2");const U=["000000","FFFFFF","FF0000","00FF00","0000FF","FFFF00","FF00FF","00FFFF","000000","FFFFFF","FF0000","00FF00","0000FF","FFFF00","FF00FF","00FFFF","800000","008000","000080","808000","800080","008080","C0C0C0","808080","9999FF","993366","FFFFCC","CCFFFF","660066","FF8080","0066CC","CCCCFF","000080","FF00FF","FFFF00","00FFFF","800080","800000","008080","0000FF","00CCFF","CCFFFF","CCFFCC","FFFF99","99CCFF","FF99CC","CC99FF","FFCC99","3366FF","33CCCC","99CC00","FFCC00","FF9900","FF6600","666699","969696","003366","339966","003300","333300","993300","993366","333399","333333","b7e0ff","00CCFF"];function L(e,t){for(const s of e)for(let e=0;e<t;e++)s[e]||(s[e]="");return e}function E(e){return`${e.charAt(0).toUpperCase()}${e.slice(1)}`}function P(e){return e.split("-").map((e,t)=>0!==t?E(e):e).join("")}Object(B["g"])($["a"]);const M=["left","right","top","bottom"];var N={name:"HelloWorld",props:{msg:String,workbook:Object},components:{HotTable:O["a"]},data(){return{sheetIndex:0,selection:{style:{},ranges:[]}}},created(){_["a"].renderers.registerRenderer("styleRender",(e,t,s,n,o,a,i)=>{if(_["a"].renderers.getRenderer("text")(e,t,s,n,o,a,i),this.ws&&i.style){const{style:{alignment:{wrapText:e}={},border:s,fill:n,font:o}}=i,a=t.style;if(o&&(o.bold&&(a.fontWeight="bold"),o.size&&(a.fontSize=o.size+"px")),n){if(n.bgColor){const{argb:e,indexed:t}=n.bgColor;a.backgroundColor="#"+(e||U[t])}if(n.fgColor){const{theme:e,indexed:t}=n.fgColor;if(e&&this.themeColors){const t=this.themeColors[e+1];t&&(a.color="#"+t)}t&&(a.color="#"+U[t])}}s&&M.map(e=>({key:e,value:s[e]})).filter(e=>e.value).forEach(e=>{const{key:t,value:{style:s}}=e,n="border"+E(t);a[n+"Width"]="thin"===s?"1px":"2px",a[n+"Style"]="solid",a[n+"Color"]="#000"})}if(i.css){const e=t.style,{css:s}=i;Object.keys(s).forEach(t=>{const n=P(t);e[n]=s[t]})}})},watch:{workbook(){this.parseTheme(),this.updateTable()}},computed:{hotSettings(){return{language:"zh-CN",readOnly:!0,data:this.data,cell:this.cell,mergeCells:this.merge,colHeaders:!0,rowHeaders:!0,height:"calc(100vh - 107px)",outsideClickDeselects:!1,licenseKey:"non-commercial-and-evaluation"}},ws(){const{workbook:{getWorksheet:e}={}}=this;if(e){const e=this.sheetIndex||this.sheets[0].id;return this.workbook.getWorksheet(e)}return null},sheets(){return this.workbook.worksheets?this.workbook.worksheets.filter(e=>e._rows.length):[]},merge(){const{ws:{_merges:e={}}={}}=this;return Object.values(e).map(({left:e,top:t,right:s,bottom:n})=>({row:t-1,col:e-1,rowspan:n-t+1,colspan:s-e+1}))},data(){return L(this.ws.getRows(1,this.ws.actualRowCount).map(e=>e._cells.map(e=>{const t=e.model.value;if(t){if(t.richText){let e=t.richText.text;return Array.isArray(t.richText)&&(e=t.richText.reduce((e,t)=>e+t.text,"")),e}return t}return""})),this.cols.length)},cols(){return this.ws.columns.map(e=>e.letter)},columns(){return this.ws.columns.map(e=>({...e.width?{width:e.width<100?100:e.width}:{width:100},className:this.alignToClass(e.alignment||{}),renderer:"styleRender"}))},cell(){return this.ws.getRows(1,this.ws.actualRowCount).flatMap((e,t)=>e._cells.map((e,s)=>{if(e.style)return{row:t,col:s,...e.alignment?{className:this.alignToClass(e.alignment)}:{},style:e.style}}).filter(e=>e))},border(){return this.ws.getRows(1,this.ws.actualRowCount).flatMap((e,t)=>e._cells.map((e,s)=>{if(e.style&&e.style.border){const n=e.style.border,o=Object.keys(n);if(o.length)return{row:t,col:s,...o.reduce((e,t)=>(e[t]={width:1,color:"#"+(n.color&&U[n.color.indexed]||n.argb||"000000")},e),{})}}}).filter(e=>e))}},methods:{hotTable(){return this.$refs.table.hotInstance},updateTable(){this.hotTable().updateSettings({mergeCells:this.merge,data:this.data,colHeaders:this.cols,columns:this.columns,cell:this.cell})},alignToClass({horizontal:e,vertical:t}){return[e,t].filter(e=>e).map(e=>`ht${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(" ")},parseTheme(){const e=this.workbook._themes.theme1,t=new DOMParser;if(e){const s=t.parseFromString(e,"text/xml"),[{children:n=[]}={}]=s.getElementsByTagName("a:clrScheme");this.themeColors=[...n].flatMap(e=>[...e.getElementsByTagName("a:srgbClr")]).map(e=>e.getAttribute("val")).filter(e=>e)}},handleSheet(e){this.sheetIndex!==e&&(this.sheetIndex=e,this.$nextTick(()=>{this.updateTable()}))},handleStyle(e,{type:t,key:s}){this.selection.style=e;const n=this.hotTable();n.suspendRender(),this.selection.ranges.forEach(({r:o,c:a})=>{const{css:i={}}=n.getCellMeta(o,a),r={...i};"remove"===t?delete r[s]:"add"===t&&(r[s]=e[s]),n.setCellMetaObject(o,a,{css:r})}),n.render(),n.resumeRender()},afterSelectionEnd(e,t,s,n,o){const a=[];for(let r=e;r<=s;r++)for(let e=t;e<=n;e++)a.push({r:r,c:e});const{css:i={}}=this.hotTable().getCellMeta(e,t);this.selection.style=i,this.selection.ranges=a}}},z=N,D=(s("9fc6"),s("70f1"),Object(v["a"])(z,T,S,!1,null,"667f75f6",null)),R=D.exports;s("5198");async function A(e,t){const s=await(new k.a.Workbook).xlsx.load(e);return new n["default"]({render:e=>e(R,{props:{workbook:s}})}).$mount(t).$nextTick(()=>{f.$emit("fileLoaded",{fileType:"excel",success:!0})})}var W=function(){var e=this,t=e._self._c;return t("div",[t("div",{ref:"container",staticClass:"container"},[t("div",{staticClass:"pdfViewer",attrs:{id:"viewer"}})])])},I=[],H=s("f9cb"),Z=s("e22a"),V=(s("d16f"),{name:"PdfView",props:{data:ArrayBuffer},data(){return{search:""}},created(){if("undefined"!==typeof window&&!H["GlobalWorkerOptions"].workerSrc){const e=s("c293");H["GlobalWorkerOptions"].workerSrc=e.default||e}},mounted(){this.loadFile()},methods:{async loadFile(){const e=this.$refs.container,t=new Z["EventBus"],s=new Z["PDFLinkService"]({eventBus:t}),n=new Z["PDFFindController"]({eventBus:t,linkService:s}),o=new Z["PDFViewer"]({container:e,eventBus:t,linkService:s,findController:n,enableScripting:!0});s.setViewer(o),t.on("pagesinit",()=>{f.$emit("fileLoaded",{fileType:"pdf",success:!0}),o.currentScaleValue=1,this.search&&t.dispatch("find",{type:"",query:this.search})});const a=Object(H["getDocument"])({data:this.data,cMapUrl:"static/cmaps/",cMapPacked:!0,enableXfa:!0}),i=await a.promise;o.setDocument(i),s.setDocument(i,null),this.viewer=o}}}),G=V,X=(s("4a2f"),Object(v["a"])(G,W,I,!1,null,"45eb45f4",null)),q=X.exports;async function J(e,t){return new n["default"]({render:t=>t(q,{props:{data:e}})}).$mount(t)}var Q=function(){var e=this,t=e._self._c;return t("viewer",{staticClass:"image-container",attrs:{images:e.images}},e._l(e.images,(function(s){return t("img",{key:s.index,staticClass:"image",attrs:{alt:"图片",src:s.src},on:{load:e.onImageLoad}})})),0)},K=[],Y=s("6944"),ee=s.n(Y);s("0808");n["default"].use(ee.a);var te={name:"ImageViewer",props:{image:String},computed:{images(){return this.image?[{src:this.image}]:[]}},methods:{onImageLoad(){f.$emit("fileLoaded",{fileType:"image",success:!0})}}},se=te,ne=(s("dc9d"),Object(v["a"])(se,Q,K,!1,null,"5753c112",null)),oe=ne.exports;async function ae(e,t){const s=await Pe(e);return new n["default"]({render:e=>e(oe,{props:{image:s}})}).$mount(t)}var ie=function(){var e=this,t=e._self._c;return t("pre",{staticClass:"code-area"},[e._v(" "+e._s(e.value)+"\n")])},re=[],le={name:"CodeEditor",props:{value:{type:String,description:"值"}}},ce=le,de=(s("b15b"),Object(v["a"])(ce,ie,re,!1,null,"34f067cc",null)),fe=de.exports;async function pe(e,t){const s=await Me(e);return new n["default"]({render:e=>e(fe,{props:{value:s}})}).$mount(t).$nextTick(()=>{f.$emit("fileLoaded",{fileType:"text",success:!0})})}var ue=function(e,t){const s=document.createElement("video");s.controls=!0,s.style.width="100%",s.style.height="100%",s.style.display="table",s.style.margin="auto",s.style.objectFit="contain";const n=document.createElement("source");n.src=URL.createObjectURL(new Blob([e])),s.appendChild(n),s.addEventListener("loadeddata",(function(){f.$emit("fileLoaded",{fileType:"video",success:!0})})),t.appendChild(s)},he=function(e,t){const s=document.createElement("audio");s.controls=!0,s.style.width="100%",s.style.margin="auto",t.style.display="flex",t.style.alignItems="center",t.style.justifyContent="center",t.style.height="100%";const n=document.createElement("source");n.src=URL.createObjectURL(new Blob([e])),s.appendChild(n),s.addEventListener("loadeddata",(function(){f.$emit("fileLoaded",{fileType:"audio",success:!0})})),t.appendChild(s)},me=function(e,t){const s=`${e.indexOf("https")>-1?"https":"http"}://view.officeapps.live.com/op/view.aspx?src=${encodeURIComponent(e)}`,n=/phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone/i.test(navigator.userAgent);if(n){const n=document.createElement("span"),o=e.substr(e.lastIndexOf("/")+1);n.innerHTML=`请点击查看 ${o} 文件`,n.style="\n font-size: 4rem;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n line-height: 100%;\n color: skyblue;\n text-decoration: underline;\n cursor: pointer;\n ",n.onclick=function(){window.top.location.href=s},t.appendChild(n)}else{const e=document.createElement("iframe");e.src=s,e.style="border:0;height: 100%;width:100%",e.sandbox="allow-scripts allow-same-origin allow-forms allow-modals",e.onload=function(){f.$emit("fileLoaded",{fileType:"office",success:!0})},t.appendChild(e)}},be=function(){var e=this,t=e._self._c;return t("div",{staticClass:"error"},[t("div",{staticStyle:{"margin-top":"50vh"}},[e._v(" 不支持 "),t("span",{staticStyle:{color:"skyblue"}},[e._v("."+e._s(e.fileType))]),e._v(" 格式的在线预览,请下载后预览或转换为支持的格式 "),t("br"),e._v(" 支持pptx,docx,xlsx,pdf,视频,音频,纯文本和图片的在线预览 ")]),t("button",{staticClass:"download",on:{click:function(t){return e.fileDownload(e.url,e.fileName)}}},[e._v(" 下载"+e._s(e.fileName)+" ")])])},ge=[],we={name:"error",props:{fileName:{type:String,default:""},fileType:{type:String,default:""},url:{type:String,default:""}},methods:{fileDownload:ze}},ye=we,ve=(s("903f"),Object(v["a"])(ye,be,ge,!1,null,"7b15065c",null)),je=ve.exports;async function Fe(e,t,s,o){const a=await Pe(e);return new n["default"]({render:e=>e(je,{props:{fileType:s,fileName:o,url:a}})}).$mount(t)}var xe=function(){var e=this,t=e._self._c;return t("div",{staticClass:"notFind"},[t("div",{staticStyle:{"margin-top":"50vh"}},[e._v(" "+e._s(e.fileName)+"文件不存在,请检查地址是否存在此文件: "),t("a",{attrs:{target:"_blank",href:e.url}},[e._v(e._s(e.url))])])])},Ce=[],ke={name:"notFind",props:{fileName:{type:String,default:""},fileType:{type:String,default:""},url:{type:String,default:""}}},Te=ke,Se=(s("8b09"),Object(v["a"])(Te,xe,Ce,!1,null,"ccce1976",null)),Oe=Se.exports;async function _e(e,t,s,o){return new n["default"]({render:t=>t(Oe,{props:{fileType:s,fileName:o,url:e}})}).$mount(t)}const Be=e=>({$el:e}),$e=[{parentType:"office",accepts:["docx"],handler:async(e,t)=>{const s=Object.assign(d["defaultOptions"],{debug:!0,experimental:!0});return await Object(d["renderAsync"])(e,t,null,s),f.$emit("fileLoaded",{fileType:"doc",success:!0}),Be(t)}},{parentType:"office",accepts:["pptx"],handler:async(e,t)=>(await x(e,t,null),window.dispatchEvent(new Event("resize")),Be(t))},{parentType:"office",accepts:["xlsx"],handler:async(e,t)=>A(e,t)},{parentType:"pdf",accepts:["pdf"],handler:async(e,t)=>J(e,t)},{parentType:"image",accepts:["gif","jpg","jpeg","bmp","tiff","tif","png","svg"],handler:async(e,t)=>ae(e,t)},{parentType:"text",accepts:["txt","json","js","css","java","py","html","jsx","ts","tsx","xml","md","log"],handler:async(e,t)=>pe(e,t)},{parentType:"video",accepts:["mp4","webm","ogv"],handler:async(e,t)=>(ue(e,t),Be(t))},{parentType:"audio",accepts:["mp3","wav","ogg"],handler:async(e,t)=>(he(e,t),Be(t))},{parentType:"officeOnline",accepts:["officeOnline"],handler:async(e,t,s,n)=>(me(e,t,s,n),Be(t))},{parentType:"error",accepts:["error"],handler:async(e,t,s,n)=>(Fe(e,t,s,n),Be(t))},{parentType:"notFind",accepts:["notFind"],handler:async(e,t,s,n)=>(_e(e,t,s,n),Be(t))}],Ue=$e.reduce((e,{parentType:t,accepts:s})=>{const n=e[t]||[];return e[t]=[...n,...s],e},{});var Le=$e.reduce((e,{accepts:t,handler:s})=>(t.forEach(t=>e[t]=s),e),{});async function Ee(e){return new Promise((t,s)=>{const n=new FileReader;n.onload=e=>t(e.target.result),n.onerror=e=>s(e),n.readAsArrayBuffer(e)})}async function Pe(e){return new Promise((t,s)=>{const n=new FileReader;n.onload=e=>t(e.target.result),n.onerror=e=>s(e),n.readAsDataURL(new Blob([e]))})}async function Me(e){return new Promise((t,s)=>{const n=new FileReader;n.onload=e=>t(e.target.result),n.onerror=e=>s(e),n.readAsText(new Blob([e]),"utf-8")})}function Ne(e){const t=e.split("?")[0].split("#")[0],s=t.lastIndexOf(".");return-1===s?"":t.substring(s+1)}function ze(e,t){if(!e)throw new Error("文件不能为空");if("string"===typeof e&&e.indexOf("http")>-1){t=t||Re(e);const s=document.createElement("a");return s.style.display="none",s.href=e,s.target="_blank",s.setAttribute("download",t),document.body.appendChild(s),void s.click()}if(!t)throw new Error("文件名不能为空");if("string"===typeof e&&(e=De(e)),window.navigator.msSaveBlob)window.navigator.msSaveOrOpenBlob(e,t);else{const s=window.URL.createObjectURL(new Blob([e])),n=document.createElement("a");n.style.display="none",n.href=s,n.target="_blank",n.setAttribute("download",t),document.body.appendChild(n),n.click()}}function De(e){var t=e.split(","),s=t[0].match(/:(.*?);/)[1],n=c(t[1]),o=n.length,a=new Uint8Array(o);while(o--)a[o]=n.charCodeAt(o);return new Blob([a],{type:s})}function Re(e){if(!e)return"";const t=e.split("/");return t[t.length-1]||""}async function Ae(e,t,s,n){const o=Le[s];return o?o(...arguments):Le.error(...arguments)}function We(e){const t={"application/vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","application/vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","application/pdf":"pdf","image/gif":"gif","image/jpeg":"jpg","image/jpg":"jpg","image/png":"png","image/bmp":"bmp","image/tiff":"tiff","image/tif":"tif","image/svg+xml":"svg","text/plain":"txt","application/json":"json","text/javascript":"js","application/javascript":"js","text/css":"css","text/html":"html","text/markdown":"md","application/xml":"xml","text/xml":"xml","text/x-java-source":"java","text/x-python":"py","text/typescript":"ts","text/tsx":"tsx","text/jsx":"jsx","text/x-log":"log","video/mp4":"mp4","video/webm":"webm","video/ogg":"ogv","audio/mpeg":"mp3","audio/mp3":"mp3","audio/wav":"wav","audio/ogg":"ogg"},s=t[e.type];if(!s)throw new Error("不支持该类型的文件");const n=(new Date).toISOString().replace(/[-:T]/g,"").split(".")[0].replace("Z","");return`${n}.${s}`}var Ie=s("4328"),He=s("cee4"),Ze={name:"VueFileViewer",props:{fileUrl:{type:[String,Object,Blob],default:""},shoHead:{type:Boolean,default:!1},showCtrolBtn:{type:Boolean,default:!0},showScaleBtn:{type:Boolean,default:!0},showDownLoadBtn:{type:Boolean,default:!0},useOfficeMicroOnline:{type:Boolean,default:!1}},data(){return{isUrl:!0,inputUrl:"",extend:"",uploadFileName:"",iframeFile:"",loading:!1,options:{shoHead:!1,showCtrolBtn:!0,showScaleBtn:!0,showDownLoadBtn:!0,useOfficeMicroOnline:!1},safeWith:1400,clientZoom:1,selectedFileType:"",fileTypeExamples:{mp3:window.location.origin+"/fileTest/mp3.mp3",mp4:window.location.origin+"/fileTest/mp4.mp4",pdf:window.location.origin+"/fileTest/pdf.pdf",png:window.location.origin+"/fileTest/pic.png",pptx:window.location.origin+"/fileTest/ppt.pptx",docx:window.location.origin+"/fileTest/word.docx"}}},mounted(){const{from:e,name:t,fileUrl:s,shoHead:n,useOfficeMicroOnline:o,showCtrolBtn:a,showScaleBtn:i,showDownLoadBtn:r}=Object(Ie["parse"])(location.search.substring(1)),l={shoHead:"true"===n,useOfficeMicroOnline:"true"===o,showCtrolBtn:"false"!==a,showScaleBtn:"false"!==i,showDownLoadBtn:"false"!==r};if(e&&window.addEventListener("message",s=>{const{origin:n,data:o}=s;if(n===e&&o instanceof Blob){const e=new File([o],t,{});this.iframeFile=e,this.loadFromBlob(e,l)}}),s){const e=s.startsWith("http")?s:window.location.origin+s;this.iframeFile=e,this.loadFromUrl(e,l)}else{const e={shoHead:this.shoHead,useOfficeMicroOnline:this.useOfficeMicroOnline,showCtrolBtn:this.showCtrolBtn,showScaleBtn:this.showScaleBtn,showDownLoadBtn:this.showDownLoadBtn};"string"===typeof this.fileUrl?this.loadFromUrl(this.fileUrl,e):this.loadFromBlob(this.fileUrl,e)}window.onload=window.onresize=()=>{this.bodyScale()},f.$on("fileLoaded",e=>{this.$emit("fileLoaded",e),window.parent.postMessage({type:"fileLoaded",data:e},"*")})},methods:{fileDownload:ze,scaleBtn(e){this.clientZoom<=.1&&"add"!==e||("add"===e?this.clientZoom+=.1:this.clientZoom-=.1)},bodyScale(){const e=document.getElementById("vue-file-viewer").clientWidth,t=e/this.safeWith;this.clientZoom=t},loadFromUrl(e,t={}){if(this.options=Object.assign(this.options,t),!e)return;this.loading=!0,this.inputUrl=e,this.uploadFileName=e.substr(e.lastIndexOf("/")+1).split("?")[0];const s=Ne(this.uploadFileName).toLowerCase(),n=Ue.office.find(e=>e.indexOf(s)>-1);t.useOfficeMicroOnline&&n?Le["officeOnline"](e,this.$refs.output,"officeOnline",this.uploadFileName).finally(()=>{this.loading=!1}):Object(He["a"])({url:e,method:"get",responseType:"blob"}).then(({data:e})=>{const t=new File([e],this.uploadFileName,{type:e.type||""});this.handleChange({target:{files:[t]}})}).finally(()=>{this.loading=!1}).catch(()=>{console.error("文件下载失败"),Le["notFind"](e,this.$refs.output,s,this.uploadFileName)})},loadFromBlob(e,t={}){this.options=Object.assign(this.options,t),e.name&&(this.uploadFileName=e.name,this.inputUrl=e.name),this.handleChange({target:{files:[e]}})},async handleChange(e){this.loading=!0;try{const[t]=e.target.files,s=await Ee(t);this.loading=!1,await this.displayResult(s,t)}catch(e){console.error(e)}finally{this.loading=!1}},displayResult(e,t){const{name:s,type:n}=t;let o=s,a="";s?(o=s,a=Ne(s).toLowerCase()):this.uploadFileName?(o=this.uploadFileName,a=Ne(this.uploadFileName).toLowerCase()):(o=We(t),a=Ne(o).toLowerCase()),!a&&n&&(a=n.split("/")[1]||""),this.uploadFileName=o;const i=document.createElement("div");this.$refs.output.innerHTML="";const r=this.$refs.output.appendChild(i);return new Promise((t,s)=>Ae(e,r,a,o).then(()=>{this.$nextTick(()=>{const e=Ue.audio&&Ue.audio.includes(a),t=Ue.video&&Ue.video.includes(a),s=Ue.image&&Ue.image.includes(a);e||t?this.clientZoom=1:s?this.clientZoom=.7:this.bodyScale()}),t()}).catch(s))},handleFileTypeChange(){this.selectedFileType&&this.fileTypeExamples[this.selectedFileType]?(this.inputUrl=this.fileTypeExamples[this.selectedFileType],this.loadFromUrl(this.inputUrl,{shoHead:!0})):this.inputUrl=""},clearSelection(){this.selectedFileType="",this.inputUrl="",this.$refs.output&&(this.$refs.output.innerHTML="")}}},Ve=Ze,Ge=(s("e771"),Object(v["a"])(Ve,i,r,!1,null,"42cfa904",null)),Xe=Ge.exports;Xe.install=e=>e.component(Xe.name,Xe);var qe={components:{VueFileViewer:Xe},data(){return{}},methods:{}},Je=qe,Qe=Object(v["a"])(Je,o,a,!1,null,null,null),Ke=Qe.exports;n["default"].config.productionTip=!1,new n["default"]({render:e=>e(Ke)}).$mount("#app")},d0ac:function(e,t,s){"use strict";s("1587")},d16f:function(e,t,s){},dc9d:function(e,t,s){"use strict";s("b17a")},e771:function(e,t,s){"use strict";s("82cf")}});
|
|
2
|
+
//# sourceMappingURL=index.a3ae5baa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./packages/vendors/pdf/PdfView.vue?d628","webpack:///./packages/vendors/xlsx/Table.vue?8f67","webpack:///./packages/vendors/notFind/notFind.vue?79ed","webpack:///./packages/vendors/error/error.vue?98b7","webpack:///./packages/vendors/xlsx/Table.vue?8bf7","webpack:///./packages/vendors/text/CodeViewer.vue?5716","webpack:///./examples/App.vue?a7dd","webpack:///./packages/index.vue?591b","webpack:///./packages/pollify.js","webpack:///./packages/util/EventBus.js","webpack:///./packages/vendors/pptx/pptx.vue?8bb5","webpack:///./packages/vendors/pptx/options.js","webpack:///./packages/vendors/pptx/worker/pptx.worker.js","webpack:///packages/vendors/pptx/pptx.vue","webpack:///./packages/vendors/pptx/pptx.vue?3176","webpack:///./packages/vendors/pptx/pptx.vue","webpack:///./packages/vendors/pptx/index.js","webpack:///./packages/vendors/xlsx/Table.vue?b631","webpack:///./packages/vendors/xlsx/color.js","webpack:///./packages/vendors/xlsx/util.js","webpack:///packages/vendors/xlsx/Table.vue","webpack:///./packages/vendors/xlsx/Table.vue?27fd","webpack:///./packages/vendors/xlsx/Table.vue","webpack:///./packages/vendors/xlsx/index.js","webpack:///./packages/vendors/pdf/PdfView.vue?6107","webpack:///packages/vendors/pdf/PdfView.vue","webpack:///./packages/vendors/pdf/PdfView.vue?a8c7","webpack:///./packages/vendors/pdf/PdfView.vue","webpack:///./packages/vendors/pdf/index.js","webpack:///./packages/vendors/image/ImageViewer.vue?d2b3","webpack:///packages/vendors/image/ImageViewer.vue","webpack:///./packages/vendors/image/ImageViewer.vue?11d3","webpack:///./packages/vendors/image/ImageViewer.vue","webpack:///./packages/vendors/image/index.js","webpack:///./packages/vendors/text/CodeViewer.vue?083b","webpack:///packages/vendors/text/CodeViewer.vue","webpack:///./packages/vendors/text/CodeViewer.vue?9074","webpack:///./packages/vendors/text/CodeViewer.vue","webpack:///./packages/vendors/text/index.js","webpack:///./packages/vendors/mp4/index.js","webpack:///./packages/vendors/audio/index.js","webpack:///./packages/vendors/officeOnline/index.js","webpack:///./packages/vendors/error/error.vue?819f","webpack:///packages/vendors/error/error.vue","webpack:///./packages/vendors/error/error.vue?7510","webpack:///./packages/vendors/error/error.vue","webpack:///./packages/vendors/error/index.js","webpack:///./packages/vendors/notFind/notFind.vue?4632","webpack:///packages/vendors/notFind/notFind.vue","webpack:///./packages/vendors/notFind/notFind.vue?2795","webpack:///./packages/vendors/notFind/notFind.vue","webpack:///./packages/vendors/notFind/index.js","webpack:///./packages/renders.js","webpack:///./packages/util.js","webpack:///packages/index.vue","webpack:///./packages/index.vue?4355","webpack:///./packages/index.vue","webpack:///./packages/index.js","webpack:///examples/App.vue","webpack:///./examples/App.vue?791f","webpack:///./examples/App.vue","webpack:///./examples/main.js","webpack:///./packages/vendors/pptx/pptx.vue?3ff4","webpack:///./packages/vendors/image/ImageViewer.vue?8a59","webpack:///./packages/index.scss?befb"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","render","_vm","this","_c","_self","attrs","staticRenderFns","staticClass","options","staticStyle","on","$event","stopPropagation","isUrl","_v","_s","directives","rawName","expression","$$selectedVal","Array","filter","target","selected","val","_value","selectedFileType","multiple","handleFileTypeChange","domProps","composing","inputUrl","loadFromUrl","shoHead","clearSelection","arguments","handleChange","_e","loading","showCtrolBtn","scaleBtn","fileDownload","iframeFile","uploadFileName","ref","style","transform","clientZoom","height","width","base64DecodeChars","atob","str","c1","c2","c3","c4","len","out","charCodeAt","String","fromCharCode","DefaultOptions","slidesScale","slideMode","slideType","revealjsPath","keyBoardShortCut","mediaProcess","jsZipV2","themeProcess","incSlide","slideModeConfig","first","nav","navTxtColor","showSlideNum","showTotalSlideNum","autoSlide","randomAutoSlide","loop","background","transition","transitionTime","revealjsConfig","Worker_fn","Worker","props","ArrayBuffer","type","default","description","isDone","thumbElement","worker","startWorker","methods","terminate","addEventListener","event","processMessage","timer","setInterval","stopWorker","postMessage","IE11","MSInputMethodContext","document","documentMode","console","log","clearInterval","$wrapper","$refs","wrapper","slidesWidth","Math","max","from","children","offsetWidth","wrapperWidth","css","msg","slide_num","append","attr","EventBus","$emit","fileType","success","warn","error","debug","info","component","async","renderPptx","buffer","h","$mount","hotSettings","_l","sheet","sheetIndex","handleSheet","indexedColors","fixMatrix","colLen","row","captain","charAt","toUpperCase","camelCase","split","part","index","join","borders","workbook","components","HotTable","selection","ranges","renderers","registerRenderer","hotInstance","TD","col","prop","cell","getRenderer","ws","alignment","wrapText","border","fill","font","bold","fontWeight","size","fontSize","bgColor","argb","indexed","backgroundColor","fgColor","theme","themeColors","color","v","forEach","borderStyle","prefix","k","watch","parseTheme","updateTable","computed","language","readOnly","mergeCells","merge","colHeaders","rowHeaders","outsideClickDeselects","licenseKey","getWorksheet","sheets","worksheets","_rows","_merges","merges","values","left","top","right","bottom","rowspan","colspan","getRows","actualRowCount","_cells","item","model","richText","text","isArray","reduce","prev","curr","cols","columns","letter","className","alignToClass","renderer","flatMap","ri","ci","table","hotTable","updateSettings","horizontal","vertical","_themes","theme1","parser","DOMParser","doc","parseFromString","getElementsByTagName","node","getAttribute","$nextTick","hot","suspendRender","getCellMeta","merged","setCellMetaObject","resumeRender","column","row2","column2","selectionLayerLevel","Workbook","xlsx","load","Table","search","workerSrc","workerModule","loadFile","container","eventBus","pdfLinkService","pdfFindController","linkService","pdfViewer","findController","enableScripting","setViewer","currentScaleValue","dispatch","query","loadingTask","cMapUrl","cMapPacked","enableXfa","pdfDocument","promise","setDocument","viewer","renderPdf","PdfView","images","src","onImageLoad","use","image","renderImage","url","readDataURL","ImageViewer","renderText","readText","CodeViewer","mp4","createElement","controls","display","margin","objectFit","source","URL","createObjectURL","Blob","appendChild","audio","alignItems","justifyContent","link","indexOf","encodeURIComponent","isMobile","test","navigator","userAgent","span","fileName","substr","lastIndexOf","innerHTML","onclick","location","href","iframe","sandbox","onload","renderError","renderNotFind","notFind","VueWrapper","el","$el","handlers","parentType","accepts","handler","docxOptions","assign","experimental","dispatchEvent","Event","typeInfo","types","readBuffer","file","Promise","reject","reader","FileReader","loadEvent","onerror","readAsArrayBuffer","readAsDataURL","readAsText","getExtend","cleanName","dot","substring","getUrlFileName","setAttribute","body","click","base64toBlob","msSaveBlob","msSaveOrOpenBlob","base64String","arr","mime","match","bstr","u8arr","Uint8Array","renders","generateFilenameFromBlob","blob","mimes","ext","timestamp","Date","toISOString","replace","fileUrl","Boolean","showScaleBtn","showDownLoadBtn","useOfficeMicroOnline","extend","safeWith","fileTypeExamples","mp3","origin","pdf","png","pptx","docx","opt1","File","loadFromBlob","fullUrl","startsWith","opt2","onresize","bodyScale","$on","parent","devicewidth","getElementById","clientWidth","scale","toLowerCase","isOffice","office","find","output","finally","axios","method","responseType","then","files","catch","arrayBuffer","displayResult","child","isAudio","includes","isVideo","video","isImage","install","Vue","VueFileViewer","config","productionTip","App"],"mappings":"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AAIqC,QAASpB,WAAW,aAAa0B,IAAI,SAASrC,YAAY,SAASE,YAAY,CAAC,OAAS,OAAO,MAAQ,OAAO,SAAW,OAAO,mBAAmB,YAAYoC,MAAM,CACtiHC,UAAW,SAAS7C,EAAI8C,cACxBC,OAAS,EAAI/C,EAAI8C,WAAc,IAAM,IACrCE,MAAQ,EAAIhD,EAAI8C,WAAc,IAAM,YAGxC,EAAkB,GCJlBG,EAAoB,IAAI9B,OACzB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,IACC,GACA,GACA,EACD,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACC,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACC,GACA,GACA,GACA,GACA,GACA,EACD,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACC,GACA,GACA,GACA,GACA,GAkCI,SAAS+B,EAAKC,GACnB,IAAIC,EAAIC,EAAIC,EAAIC,EACZzH,EAAG0H,EAAKC,EACZD,EAAML,EAAInH,OACVF,EAAI,EACJ2H,EAAM,GACN,MAAO3H,EAAI0H,EAAK,CACd,GACEJ,EAAKH,EAAwC,IAAtBE,EAAIO,WAAW5H,YAC/BA,EAAI0H,IAAc,GAAPJ,GACpB,IAAW,GAAPA,EAAU,MACd,GACEC,EAAKJ,EAAwC,IAAtBE,EAAIO,WAAW5H,YAC/BA,EAAI0H,IAAc,GAAPH,GACpB,IAAW,GAAPA,EAAU,MACdI,GAAOE,OAAOC,aAAcR,GAAM,GAAY,GAALC,IAAc,GACvD,EAAG,CAED,GADAC,EAA2B,IAAtBH,EAAIO,WAAW5H,KACV,IAANwH,EAAU,OAAOG,EACrBH,EAAKL,EAAkBK,SAChBxH,EAAI0H,IAAc,GAAPF,GACpB,IAAW,GAAPA,EAAU,MACdG,GAAOE,OAAOC,cAAoB,GAALP,IAAa,GAAY,GAALC,IAAc,GAC/D,EAAG,CAED,GADAC,EAA2B,IAAtBJ,EAAIO,WAAW5H,KACV,IAANyH,EAAU,OAAOE,EACrBF,EAAKN,EAAkBM,SAChBzH,EAAI0H,IAAc,GAAPD,GACpB,IAAW,GAAPA,EAAU,MACdE,GAAOE,OAAOC,cAAoB,EAALN,IAAc,EAAKC,GAElD,OAAOE,E,gBClMM,MAAI,aCDf,EAAS,WAAkB,IAAIzD,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACyC,IAAI,UAAUrC,YAAY,kBAEnG,EAAkB,G,qBCFf,MAAMuD,EAAiB,KAAM,CAIlCC,YAAa,GACbC,WAAW,EACXC,UAAW,gBACXC,aAAc,GACdC,kBAAkB,EAClBC,cAAc,EACdC,SAAS,EACTC,cAAc,EACdC,SAAS,CACPtB,MAAO,EACPD,OAAQ,GAEVwB,gBAAiB,CACfC,MAAO,EACPC,KAAK,EACLC,YAAa,QACbR,kBAAkB,EAClBS,cAAc,EACdC,mBAAmB,EACnBC,WAAW,EACXC,iBAAiB,EACjBC,MAAM,EACNC,YAAY,EACZC,WAAY,UACZC,eAAgB,GAElBC,eAAgB,KC9BH,SAASC,IACtB,OAAO,IAAIC,OAAO,IAA0B,4C,cCgB/B,GACbzH,KAAM,OACN0H,MAAO,CACL9J,KAAM+J,YACNhF,QAAS,CACPiF,KAAMvJ,OACNwJ,QAAS5B,EACT6B,YAAa,cAGjB,OACE,MAAO,CACLC,QAAQ,EACRC,aAAc,KACdC,OAAQ,OAGZ,UACE5F,KAAK6F,eAEPC,QAAS,CAEP,cAEM9F,KAAK4F,QACP5F,KAAK4F,OAAOG,YAGd/F,KAAK4F,OAAS,IAAI,EAClB5F,KAAK4F,OAAOI,iBACV,UACCC,GAAUjG,KAAKkG,eAAeD,EAAM1K,OACrC,GAGFyE,KAAKmG,MAAQC,YAAYpG,KAAKqG,WAAY,KAE1CrG,KAAK4F,OAAOU,YAAY,CACtBf,KAAM,cACNhK,KAAMyE,KAAKzE,KACXgL,OAAQtH,OAAOuH,wBAA0BC,SAASC,aAClDpG,QAASN,KAAKM,WAIlB,aACMN,KAAK0F,SACP1F,KAAK4F,OAAOG,YACZY,QAAQC,IAAI,qBACZC,cAAc7G,KAAKmG,SAIvB,SACE,MAAMW,EAAW,IAAE9G,KAAK+G,MAAMC,SACxBC,EAAcC,KAAKC,OACpBjG,MAAMkG,KAAKN,EAASO,SAAS,YAAYjI,IAAKjC,GAAMA,EAAEmK,cAErDC,EAAeT,EAAS,GAAGQ,YACjCR,EAASU,IAAI,CACX5E,UAAW,SAAS2E,EAAeN,KACnC,mBAAoB,cAIxB,eAAeQ,GACb,GAAIzH,KAAK0F,OAAQ,OACjB,MAAMoB,EAAW,IAAE9G,KAAK+G,MAAMC,UACxB,aAAErB,GAAiB3F,KACzB,OAAQyH,EAAIlC,MACV,IAAK,QACHoB,QAAQC,IAAI,QAASa,EAAIC,WACzBZ,EAASa,OAAOF,EAAIlM,MACpB,MACF,IAAK,aACCoK,GACF,IAAEA,GAAciC,KAAK,MAAO,0BAA0BH,EAAIlM,MAC5D,MACF,IAAK,YACH,MACF,IAAK,YACHuL,EAASa,OAAO,UAAUF,EAAIlM,gBAC9B,MACF,IAAK,OACL,IAAK,gBACHyE,KAAK0F,QAAS,EACdmC,EAASC,MAAM,aAAc,CAAEC,SAAU,MAAOC,SAAS,IACzD,MACF,IAAK,OACHrB,QAAQsB,KAAK,4BAA6BR,EAAIlM,MAC9C,MACF,IAAK,QACHyE,KAAK0F,QAAS,EACdiB,QAAQuB,MAAM,0BAA2BT,EAAIlM,MAC7C,MACF,IAAK,QACHoL,QAAQwB,MAAM,WAAYV,EAAIlM,MAC9B,MACF,IAAK,OACL,QACEoL,QAAQyB,KAAK,WAAYX,EAAIlM,UCrH4J,I,wBCQ/L8M,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,QCHAC,eAAeC,EAAWC,EAAQpH,GAC/C,OAAO,IAAI,aAAI,CACbtB,OAAS2I,GAAMA,EAAE,EAAM,CAAEpD,MAAO,CAAE9J,KAAMiN,OACvCE,OAAOtH,G,yBCnBR,EAAS,WAAkB,IAAIrB,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,MAAM,CAACA,EAAG,YAAY,CAACyC,IAAI,QAAQvC,MAAM,CAAC,SAAWJ,EAAI4I,gBAAgB,GAAG1I,EAAG,MAAM,CAACI,YAAY,aAAaN,EAAI6I,GAAI7I,EAAU,QAAE,SAAS8I,GAAO,OAAO5I,EAAG,SAAS,CAACvB,IAAImK,EAAMtJ,GAAGgB,YAAY,CAAC,QAAU,UAAUJ,MAAM,CAAC,KAAOJ,EAAI+I,aAAeD,EAAMtJ,GAAK,UAAY,WAAWiB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOV,EAAIgJ,YAAYF,EAAMtJ,OAAO,CAACQ,EAAIa,GAAG,IAAIb,EAAIc,GAAGgI,EAAMlL,MAAM,UAAS,MAE7c,EAAkB,G,gDCFf,MAAMqL,EAAgB,CAC3B,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UCrDK,SAASC,EAAU1N,EAAM2N,GAC9B,IAAK,MAAMC,KAAO5N,EAChB,IAAK,IAAIwB,EAAI,EAAGA,EAAImM,EAAQnM,IACrBoM,EAAIpM,KACPoM,EAAIpM,GAAK,IAIf,OAAOxB,EAIF,SAAS6N,EAAQlG,GACtB,MAAO,GAAGA,EAAImG,OAAO,GAAGC,gBAAgBpG,EAAI/D,MAAM,KAI7C,SAASoK,EAAUrG,GACxB,OAAOA,EACJsG,MAAM,KACNpK,IAAI,CAACqK,EAAMC,IACI,IAAVA,EACKN,EAAQK,GAERA,GAGVE,KAAK,ICbV,eAA2B,QAG3B,MAAMC,EAAU,CAAC,OAAQ,QAAS,MAAO,UAE1B,OACbjM,KAAM,aACN0H,MAAO,CACLoC,IAAK/D,OACLmG,SAAU7N,QAEZ8N,WAAY,CAAEC,SAAA,QACd,OACE,MAAO,CACLjB,WAAY,EACZkB,UAAW,CACTrH,MAAO,GACPsH,OAAQ,MAId,UAEE,OAAaC,UAAUC,iBACrB,cACA,CAACC,EAAaC,EAAIlB,EAAKmB,EAAKC,EAAMnM,EAAOoM,KAUvC,GATA,OAAaN,UAAUO,YAAY,OAAnC,CACEL,EACAC,EACAlB,EACAmB,EACAC,EACAnM,EACAoM,GAEExK,KAAK0K,IAAMF,EAAK7H,MAAO,CACzB,MACEA,OAASgI,WAAW,SAAEC,GAAa,GAAE,OAAEC,EAAM,KAAEC,EAAI,KAAEC,IACnDP,EACE7H,EAAQ0H,EAAG1H,MAKjB,GAJIoI,IACEA,EAAKC,OAAMrI,EAAMsI,WAAa,QAC9BF,EAAKG,OAAMvI,EAAMwI,SAAcJ,EAAKG,KAAR,OAE9BJ,EAAM,CACR,GAAIA,EAAKM,QAAS,CAChB,MAAM,KAAEC,EAAI,QAAEC,GAAYR,EAAKM,QAC/BzI,EAAM4I,gBAAkB,KAAIF,GAAQrC,EAAcsC,IAEpD,GAAIR,EAAKU,QAAS,CAChB,MAAM,MAAEC,EAAK,QAAEH,GAAYR,EAAKU,QAChC,GAAIC,GAASzL,KAAK0L,YAAa,CAC7B,MAAMC,EAAQ3L,KAAK0L,YAAYD,EAAQ,GACnCE,IACFhJ,EAAMgJ,MAAQ,IAAIA,GAGlBL,IACF3I,EAAMgJ,MAAQ,IAAI3C,EAAcsC,KAIlCT,GACFjB,EACGxK,IAAKV,IAAQ,CAAGA,MAAKN,MAAOyM,EAAOnM,MACnCyC,OAAQyK,GAAMA,EAAExN,OAChByN,QAASD,IACR,MAAM,IACJlN,EACAN,OAASuE,MAAOmJ,IACdF,EACEG,EAAS,SAAS3C,EAAQ1K,GAE9BiE,EAASoJ,EAAH,SADY,SAAhBD,EACwB,MAEA,MAE5BnJ,EAASoJ,EAAH,SAAoB,QAC1BpJ,EAASoJ,EAAH,SAAoB,SAKlC,GAAIvB,EAAKhD,IAAK,CACZ,MAAM7E,EAAQ0H,EAAG1H,OACX,IAAE6E,GAAQgD,EAChBxO,OAAO4D,KAAK4H,GAAKqE,QAASnN,IACxB,MAAMsN,EAAIzC,EAAU7K,GACpBiE,EAAMqJ,GAAKxE,EAAI9I,SAMzBuN,MAAO,CACL,WACEjM,KAAKkM,aACLlM,KAAKmM,gBAGTC,SAAU,CACR,cACE,MAAO,CACLC,SAAU,QACVC,UAAU,EACV/Q,KAAMyE,KAAKzE,KACXiP,KAAMxK,KAAKwK,KACX+B,WAAYvM,KAAKwM,MACjBC,YAAY,EACZC,YAAY,EACZ5J,OAAQ,sBAIR6J,uBAAuB,EAOvBC,WAAY,kCAGhB,KACE,MAAQ/C,UAAU,aAAEgD,GAAiB,IAAO7M,KAC5C,GAAI6M,EAAc,CAChB,MAAMnD,EAAQ1J,KAAK8I,YAAc9I,KAAK8M,OAAO,GAAGvN,GAChD,OAAOS,KAAK6J,SAASgD,aAAanD,GAEpC,OAAO,MAET,SACE,OAAI1J,KAAK6J,SAASkD,WACT/M,KAAK6J,SAASkD,WAAW5L,OAAQ0H,GAAUA,EAAMmE,MAAMjR,QAEzD,IAET,QACE,MAAQ2O,IAAMuC,QAASC,EAAS,IAAO,IAAOlN,KAC9C,OAAOhE,OAAOmR,OAAOD,GAAQ9N,IAAI,EAAGgO,OAAMC,MAAKC,QAAOC,aAE7C,CACLpE,IAAKkE,EAAM,EACX/C,IAAK8C,EAAO,EACZI,QAASD,EAASF,EAAM,EACxBI,QAASH,EAAQF,EAAO,MAI9B,OACE,OAAOnE,EACLjJ,KAAK0K,GAAGgD,QAAQ,EAAG1N,KAAK0K,GAAGiD,gBAAgBvO,IAAK+J,GAC9CA,EAAIyE,OAAOxO,IAAKyO,IACd,MAAMzP,EAAQyP,EAAKC,MAAM1P,MACzB,GAAIA,EAAO,CAET,GAAIA,EAAM2P,SAAU,CAClB,IAAIC,EAAO5P,EAAM2P,SAASC,KAO1B,OANI9M,MAAM+M,QAAQ7P,EAAM2P,YACtBC,EAAO5P,EAAM2P,SAASG,OACpB,CAACC,EAAMC,IAASD,EAAOC,EAAKJ,KAC5B,KAGGA,EAET,OAAO5P,EAET,MAAO,MAGX4B,KAAKqO,KAAKtS,SAGd,OACE,OAAOiE,KAAK0K,GAAG4D,QAAQlP,IAAKyO,GAASA,EAAKU,SAE5C,UACE,OAAOvO,KAAK0K,GAAG4D,QAAQlP,IAAKyO,IAAS,IAC/BA,EAAK9K,MACL,CAAEA,MAAO8K,EAAK9K,MAAQ,IAAM,IAAM8K,EAAK9K,OACvC,CAAEA,MAAO,KACbyL,UAAWxO,KAAKyO,aAAaZ,EAAKlD,WAAa,IAC/C+D,SAAU,kBAGd,OACE,OAAO1O,KAAK0K,GAAGgD,QAAQ,EAAG1N,KAAK0K,GAAGiD,gBAAgBgB,QAAQ,CAACxF,EAAKyF,IACvDzF,EAAIyE,OACRxO,IAAI,CAACoL,EAAMqE,KACV,GAAIrE,EAAK7H,MACP,MAAO,CACLwG,IAAKyF,EACLtE,IAAKuE,KACDrE,EAAKG,UACL,CAAE6D,UAAWxO,KAAKyO,aAAajE,EAAKG,YACpC,GACJhI,MAAO6H,EAAK7H,SAIjBxB,OAAQtF,GAAMA,KAGrB,SACE,OAAOmE,KAAK0K,GAAGgD,QAAQ,EAAG1N,KAAK0K,GAAGiD,gBAAgBgB,QAAQ,CAACxF,EAAKyF,IACvDzF,EAAIyE,OACRxO,IAAI,CAACoL,EAAMqE,KACV,GAAIrE,EAAK7H,OAAS6H,EAAK7H,MAAMkI,OAAQ,CACnC,MAAMA,EAASL,EAAK7H,MAAMkI,OACpBjL,EAAO5D,OAAO4D,KAAKiL,GACzB,GAAIjL,EAAK7D,OACP,MAAO,CACLoN,IAAKyF,EACLtE,IAAKuE,KACFjP,EAAKsO,OAAO,CAACtR,EAAQ8B,KACtB9B,EAAO8B,GAAO,CACZqE,MAAO,EACP4I,MAAO,KAAKd,EAAOc,OACjB3C,EAAc6B,EAAOc,MAAML,UAC3BT,EAAOQ,MACP,WAEGzO,GACN,QAKVuE,OAAQtF,GAAMA,MAIvBiK,QAAS,CACP,WACE,OAAO9F,KAAK+G,MAAM+H,MAAM1E,aAE1B,cACEpK,KAAK+O,WAAWC,eAAe,CAC7BzC,WAAYvM,KAAKwM,MACjBjR,KAAMyE,KAAKzE,KACXkR,WAAYzM,KAAKqO,KACjBC,QAAStO,KAAKsO,QACd9D,KAAMxK,KAAKwK,QAIf,cAAa,WAAEyE,EAAU,SAAEC,IACzB,MAAO,CAACD,EAAYC,GACjB/N,OAAQtF,GAAMA,GACduD,IAAKV,GAAQ,KAAKA,EAAI2K,OAAO,GAAGC,gBAAgB5K,EAAIS,MAAM,MAC1DwK,KAAK,MAEV,aACE,MAAM8B,EAAQzL,KAAK6J,SAASsF,QAAQC,OAC9BC,EAAS,IAAIC,UACnB,GAAI7D,EAAO,CACT,MAAM8D,EAAMF,EAAOG,gBAAgB/D,EAAO,cACnC,SAAEpE,EAAW,IAAO,IAAMkI,EAAIE,qBAAqB,eAC1DzP,KAAK0L,YAAc,IAAIrE,GACpBsH,QAASe,GAAS,IAAIA,EAAKD,qBAAqB,eAChDrQ,IAAKsQ,GAASA,EAAKC,aAAa,QAChCxO,OAAQtF,GAAMA,KAIrB,YAAY6N,GACN1J,KAAK8I,aAAeY,IACtB1J,KAAK8I,WAAaY,EAClB1J,KAAK4P,UAAU,KACb5P,KAAKmM,kBAKX,YAAYxJ,GAAO,KAAE4C,EAAI,IAAE7G,IACzBsB,KAAKgK,UAAUrH,MAAQA,EACvB,MAAMkN,EAAM7P,KAAK+O,WAEjBc,EAAIC,gBACJ9P,KAAKgK,UAAUC,OAAO4B,QAAQ,EAAG5N,IAAGR,QAClC,MAAM,IAAE+J,EAAM,IAAOqI,EAAIE,YAAY9R,EAAGR,GAClCuS,EAAS,IAAKxI,GAEP,WAATjC,SACKyK,EAAOtR,GACI,QAAT6G,IACTyK,EAAOtR,GAAOiE,EAAMjE,IAEtBmR,EAAII,kBAAkBhS,EAAGR,EAAG,CAC1B+J,IAAKwI,MAITH,EAAI/P,SAEJ+P,EAAIK,gBAGN,kBAAkB/G,EAAKgH,EAAQC,EAAMC,EAASC,GAC5C,MAAMrG,EAAS,GACf,IAAK,IAAIhM,EAAIkL,EAAKlL,GAAKmS,EAAMnS,IAC3B,IAAK,IAAIR,EAAI0S,EAAQ1S,GAAK4S,EAAS5S,IACjCwM,EAAO5N,KAAK,CAAE4B,IAAGR,MAIrB,MAAM,IAAE+J,EAAM,IAAOxH,KAAK+O,WAAWgB,YAAY5G,EAAKgH,GACtDnQ,KAAKgK,UAAUrH,MAAQ6E,EACvBxH,KAAKgK,UAAUC,OAASA,KCjVsK,ICShM,G,oBAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,kBCXA3B,eAAe,EAAOE,EAAQpH,GAC3C,MAAMyI,QAAiB,IAAI,IAAQ0G,UAAWC,KAAKC,KAAKjI,GACxD,OAAO,IAAI,aAAI,CACb1I,OAAS2I,GACPA,EAAEiI,EAAO,CACPrL,MAAO,CACLwE,gBAGLnB,OAAOtH,GAAQwO,UAAU,KAC1B/H,EAASC,MAAM,aAAc,CAAEC,SAAU,QAASC,SAAS,MCnB/D,IAAI,EAAS,WAAkB,IAAIjI,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyC,IAAI,YAAYrC,YAAY,aAAa,CAACJ,EAAG,MAAM,CAACI,YAAY,YAAYF,MAAM,CAAC,GAAK,iBAE3K,EAAkB,G,wBCiBP,G,UAAA,CACbxC,KAAM,UACN0H,MAAO,CACL9J,KAAM+J,aAER,OACE,MAAO,CACLqL,OAAQ,KAGZ,UACE,GAAsB,qBAAX1R,SAA2B,yBAAoB2R,UAAW,CAGnE,MAAMC,EAAe,EAAQ,QAE7B,yBAAoBD,UAAYC,EAAarL,SAAWqL,IAM5D,UACE7Q,KAAK8Q,YAEPhL,QAAS,CACP,iBACE,MAAMiL,EAAY/Q,KAAK+G,MAAMgK,UAEvBC,EAAW,IAAI,cAGfC,EAAiB,IAAI,oBAAe,CACxCD,aAIIE,EAAoB,IAAI,uBAAkB,CAC9CF,WACAG,YAAaF,IAGTG,EAAY,IAAI,eAAU,CAC9BL,YACAC,WACAG,YAAaF,EACbI,eAAgBH,EAChBI,iBAAiB,IAEnBL,EAAeM,UAAUH,GAEzBJ,EAASxQ,GAAG,YAAa,KAEvB,EAAWsH,MAAM,aAAc,CAAEC,SAAU,MAAOC,SAAS,IAG3DoJ,EAAUI,kBAAoB,EAG1BxR,KAAK2Q,QACPK,EAASS,SAAS,OAAQ,CAAElM,KAAM,GAAImM,MAAO1R,KAAK2Q,WAItD,MAAMgB,EAAc,yBAAY,CAC9BpW,KAAMyE,KAAKzE,KAGXqW,QAAgC,gBAChCC,YAAY,EACZC,WAAW,IAMPC,QAAoBJ,EAAYK,QAGtCZ,EAAUa,YAAYF,GACtBd,EAAegB,YAAYF,EAAa,MACxC/R,KAAKkS,OAASd,MCpGkL,ICQlM,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCTA9I,eAAe6J,EAAU3J,EAAQpH,GAC9C,OAAO,IAAI,aAAI,CACbtB,OAAS2I,GAAMA,EAAE2J,EAAS,CAAE/M,MAAO,CAAE9J,KAAMiN,OAC1CE,OAAOtH,GCbZ,IAAI,EAAS,WAAkB,IAAIrB,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,SAAS,CAACI,YAAY,kBAAkBF,MAAM,CAAC,OAASJ,EAAIsS,SAAStS,EAAI6I,GAAI7I,EAAU,QAAE,SAAS8N,GAAM,OAAO5N,EAAG,MAAM,CAACvB,IAAImP,EAAKnE,MAAMrJ,YAAY,QAAQF,MAAM,CAAC,IAAM,KAAK,IAAM0N,EAAKyE,KAAK9R,GAAG,CAAC,KAAOT,EAAIwS,kBAAiB,IAEhS,EAAkB,G,gCCuBtB,aAAIC,IAAI,MAEO,QACb7U,KAAM,cACN0H,MAAO,CACLoN,MAAO/O,QAET0I,SAAU,CACR,SACE,OAAOpM,KAAKyS,MAAQ,CAAC,CAAEH,IAAKtS,KAAKyS,QAAW,KAGhD3M,QAAS,CACP,cAEE+B,EAASC,MAAM,aAAc,CAAEC,SAAU,QAASC,SAAS,OCxCyI,MCQtM,I,UAAY,eACd,GACA,EACA,GACA,EACA,KACA,WACA,OAIa,M,QCLAM,eAAeoK,GAAYlK,EAAQpH,GAChD,MAAMuR,QAAYC,GAAYpK,GAC9B,OAAO,IAAI,aAAI,CACb1I,OAAS2I,GAAMA,EAAEoK,GAAa,CAAExN,MAAO,CAAEoN,MAAOE,OAC/CjK,OAAOtH,GClBZ,IAAI,GAAS,WAAkB,IAAIrB,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACI,YAAY,aAAa,CAACN,EAAIa,GAAG,KAAKb,EAAIc,GAAGd,EAAI3B,OAAO,SAEjI,GAAkB,GCKP,IACbT,KAAM,aACN0H,MAAO,CACLjH,MAAO,CACLmH,KAAM7B,OACN+B,YAAa,OCZsL,MCQrM,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCTA6C,eAAewK,GAAWtK,EAAQpH,GAC/C,MAAM4M,QAAa+E,GAASvK,GAC5B,OAAO,IAAI,aAAI,CACb1I,OAAS2I,GAAMA,EAAEuK,GAAY,CAAE3N,MAAO,CAAEjH,MAAO4P,OAC9CtF,OAAOtH,GAAQwO,UAAU,KAC1B/H,EAASC,MAAM,aAAc,CAAEC,SAAU,OAAQC,SAAS,MCF/C,qBACb,MAAMiL,EAAMxM,SAASyM,cAAc,SACnCD,EAAIE,UAAW,EACfF,EAAItQ,MAAMI,MAAQ,OAClBkQ,EAAItQ,MAAMG,OAAS,OACnBmQ,EAAItQ,MAAMyQ,QAAU,QACpBH,EAAItQ,MAAM0Q,OAAS,OACnBJ,EAAItQ,MAAM2Q,UAAY,UACtB,MAAMC,EAAS9M,SAASyM,cAAc,UACtCK,EAAOjB,IAAMkB,IAAIC,gBAAgB,IAAIC,KAAK,CAAClL,KAC3CyK,EAAIU,YAAYJ,GAChBN,EAAIjN,iBAAiB,cAAc,WAEjC6B,EAASC,MAAM,aAAc,CAAEC,SAAU,QAASC,SAAS,OAE7D5G,EAAOuS,YAAYV,ICfN,iBACb,MAAMW,EAAQnN,SAASyM,cAAc,SACrCU,EAAMT,UAAW,EACjBS,EAAMjR,MAAMI,MAAQ,OACpB6Q,EAAMjR,MAAM0Q,OAAS,OACrBjS,EAAOuB,MAAMyQ,QAAU,OACvBhS,EAAOuB,MAAMkR,WAAa,SAC1BzS,EAAOuB,MAAMmR,eAAiB,SAC9B1S,EAAOuB,MAAMG,OAAS,OACtB,MAAMyQ,EAAS9M,SAASyM,cAAc,UACtCK,EAAOjB,IAAMkB,IAAIC,gBAAgB,IAAIC,KAAK,CAAClL,KAC3CoL,EAAMD,YAAYJ,GAClBK,EAAM5N,iBAAiB,cAAc,WAEnC6B,EAASC,MAAM,aAAc,CAAEC,SAAU,QAASC,SAAS,OAE7D5G,EAAOuS,YAAYC,IClBN,iBAEb,MAAMG,EAAO,GACXpB,EAAIqB,QAAQ,UAAY,EAAI,QAAU,sDACQC,mBAAmBtB,KAE7DuB,EAAW,gJAAgJC,KAC/JC,UAAUC,WAGZ,GAAIH,EAAU,CACZ,MAAMI,EAAO7N,SAASyM,cAAc,QAC9BqB,EAAW5B,EAAI6B,OAAO7B,EAAI8B,YAAY,KAAO,GACnDH,EAAKI,UAAY,SAASH,OAC1BD,EAAK3R,MAAQ,oPAWb2R,EAAKK,QAAU,WACb1V,OAAOoO,IAAIuH,SAASC,KAAOd,GAE7B3S,EAAOuS,YAAYW,OACd,CACL,MAAMQ,EAASrO,SAASyM,cAAc,UACtC4B,EAAOxC,IAAMyB,EACbe,EAAOnS,MAAQ,mCAEfmS,EAAOC,QAAU,2DAEjBD,EAAOE,OAAS,WAEdnN,EAASC,MAAM,aAAc,CAAEC,SAAU,SAAUC,SAAS,KAE9D5G,EAAOuS,YAAYmB,KCnDnB,GAAS,WAAkB,IAAI/U,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACI,YAAY,SAAS,CAACJ,EAAG,MAAM,CAACM,YAAY,CAAC,aAAa,SAAS,CAACR,EAAIa,GAAG,SAASX,EAAG,OAAO,CAACM,YAAY,CAAC,MAAQ,YAAY,CAACR,EAAIa,GAAG,IAAIb,EAAIc,GAAGd,EAAIgI,aAAahI,EAAIa,GAAG,6BAA6BX,EAAG,MAAMF,EAAIa,GAAG,8CAA8CX,EAAG,SAAS,CAACI,YAAY,WAAWG,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOV,EAAIwC,aAAaxC,EAAI4S,IAAK5S,EAAIwU,aAAa,CAACxU,EAAIa,GAAG,MAAMb,EAAIc,GAAGd,EAAIwU,UAAU,UAEre,GAAkB,GCsBP,IACb5W,KAAM,QACN0H,MAAO,CAELkP,SAAU,CACRhP,KAAM7B,OACN8B,QAAS,IAGXuC,SAAU,CACRxC,KAAM7B,OACN8B,QAAS,IAEXmN,IAAK,CACHpN,KAAM7B,OACN8B,QAAS,KAGbM,QAAS,CACPvD,kBC3CgM,MCQhM,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCLA+F,eAAe2M,GAAYzM,EAAQpH,EAAQ2G,EAAUwM,GAClE,MAAM5B,QAAYC,GAAYpK,GAC9B,OAAO,IAAI,aAAI,CACb1I,OAAS2I,GAAMA,EAAEP,GAAO,CAAE7C,MAAO,CAAE0C,WAAUwM,WAAU5B,WACtDjK,OAAOtH,GClBZ,IAAI,GAAS,WAAkB,IAAIrB,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACI,YAAY,WAAW,CAACJ,EAAG,MAAM,CAACM,YAAY,CAAC,aAAa,SAAS,CAACR,EAAIa,GAAG,IAAIb,EAAIc,GAAGd,EAAIwU,UAAU,wBAAwBtU,EAAG,IAAI,CAACE,MAAM,CAAC,OAAS,SAAS,KAAOJ,EAAI4S,MAAM,CAAC5S,EAAIa,GAAGb,EAAIc,GAAGd,EAAI4S,aAE5Q,GAAkB,GCeP,IACbhV,KAAM,UACN0H,MAAO,CAELkP,SAAU,CACRhP,KAAM7B,OACN8B,QAAS,IAGXuC,SAAU,CACRxC,KAAM7B,OACN8B,QAAS,IAEXmN,IAAK,CACHpN,KAAM7B,OACN8B,QAAS,MChCuL,MCQlM,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCNA8C,eAAe4M,GAAcvC,EAAKvR,EAAQ2G,EAAUwM,GACjE,OAAO,IAAI,aAAI,CACbzU,OAAS2I,GAAMA,EAAE0M,GAAS,CAAE9P,MAAO,CAAE0C,WAAUwM,WAAU5B,WACxDjK,OAAOtH,GCFZ,MAAMgU,GAAcC,IAAO,CACzBC,IAAKD,IAGDE,GAAW,CAEf,CACEC,WAAY,SACZC,QAAS,CAAC,QACVC,QAASpN,MAAOE,EAAQpH,KACtB,MAAMuU,EAAc3Z,OAAO4Z,OAAO,oBAAgB,CAChDzN,OAAO,EACP0N,cAAc,IAIhB,aAFM,yBAAYrN,EAAQpH,EAAQ,KAAMuU,GACxC9N,EAASC,MAAM,aAAc,CAAEC,SAAU,MAAOC,SAAS,IAClDoN,GAAWhU,KAItB,CACEoU,WAAY,SACZC,QAAS,CAAC,QACVC,QAASpN,MAAOE,EAAQpH,WAChBmH,EAAWC,EAAQpH,EAAQ,MACjCnC,OAAO6W,cAAc,IAAIC,MAAM,WACxBX,GAAWhU,KAItB,CACEoU,WAAY,SACZC,QAAS,CAAC,QACVC,QAASpN,MAAOE,EAAQpH,IACf,EAAYoH,EAAQpH,IAI/B,CACEoU,WAAY,MACZC,QAAS,CAAC,OACVC,QAASpN,MAAOE,EAAQpH,IACf+Q,EAAU3J,EAAQpH,IAI7B,CACEoU,WAAY,QACZC,QAAS,CAAC,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,OAC7DC,QAASpN,MAAOE,EAAQpH,IACfsR,GAAYlK,EAAQpH,IAI/B,CACEoU,WAAY,OACZC,QAAS,CACP,MACA,OACA,KACA,MACA,OACA,KACA,OACA,MACA,KACA,MACA,MACA,KACA,OAEFC,QAASpN,MAAOE,EAAQpH,IACf0R,GAAWtK,EAAQpH,IAI9B,CACEoU,WAAY,QACZC,QAAS,CAAC,MAAO,OAAQ,OACzBC,QAASpN,MAAOE,EAAQpH,KACtB,GAAUoH,EAAQpH,GACXgU,GAAWhU,KAItB,CACEoU,WAAY,QACZC,QAAS,CAAC,MAAO,MAAO,OACxBC,QAASpN,MAAOE,EAAQpH,KACtB,GAAYoH,EAAQpH,GACbgU,GAAWhU,KAGtB,CACEoU,WAAY,eACZC,QAAS,CAAC,gBACVC,QAASpN,MAAOqK,EAAKvR,EAAQmE,EAAM5H,KACjC,GAAmBgV,EAAKvR,EAAQmE,EAAM5H,GAC/ByX,GAAWhU,KAItB,CACEoU,WAAY,QACZC,QAAS,CAAC,SACVC,QAASpN,MAAOE,EAAQpH,EAAQmE,EAAM5H,KACpCsX,GAAYzM,EAAQpH,EAAQmE,EAAM5H,GAC3ByX,GAAWhU,KAItB,CACEoU,WAAY,UACZC,QAAS,CAAC,WACVC,QAASpN,MAAOqK,EAAKvR,EAAQmE,EAAM5H,KACjCuX,GAAcvC,EAAKvR,EAAQmE,EAAM5H,GAC1ByX,GAAWhU,MAMX4U,GAAWT,GAASrH,OAAO,CAACtR,GAAU4Y,aAAYC,cAC7D,MAAMQ,EAAQrZ,EAAO4Y,IAAe,GAEpC,OADA5Y,EAAO4Y,GAAc,IAAIS,KAAUR,GAC5B7Y,GACN,IAGY,OAAA2Y,GAAA,WAA2BE,UAASC,cACjDD,EAAQ5J,QAAStG,GAAU3I,EAAO2I,GAAQmQ,GACnC9Y,GACN,ICpII0L,eAAe4N,GAAWC,GAC/B,OAAO,IAAIC,QAAQ,CAACvW,EAASwW,KAC3B,MAAMC,EAAS,IAAIC,WACnBD,EAAOtB,OAAUwB,GAAc3W,EAAQ2W,EAAUpV,OAAOxE,QACxD0Z,EAAOG,QAAWhX,GAAM4W,EAAO5W,GAC/B6W,EAAOI,kBAAkBP,KAQtB7N,eAAesK,GAAYpK,GAChC,OAAO,IAAI4N,QAAQ,CAACvW,EAASwW,KAC3B,MAAMC,EAAS,IAAIC,WACnBD,EAAOtB,OAAUwB,GAAc3W,EAAQ2W,EAAUpV,OAAOxE,QACxD0Z,EAAOG,QAAWhX,GAAM4W,EAAO5W,GAC/B6W,EAAOK,cAAc,IAAIjD,KAAK,CAAClL,OAQ5BF,eAAeyK,GAASvK,GAC7B,OAAO,IAAI4N,QAAQ,CAACvW,EAASwW,KAC3B,MAAMC,EAAS,IAAIC,WACnBD,EAAOtB,OAAUwB,GAAc3W,EAAQ2W,EAAUpV,OAAOxE,QACxD0Z,EAAOG,QAAWhX,GAAM4W,EAAO5W,GAC/B6W,EAAOM,WAAW,IAAIlD,KAAK,CAAClL,IAAU,WAQnC,SAASqO,GAAUlZ,GAExB,MAAMmZ,EAAYnZ,EAAK6L,MAAM,KAAK,GAAGA,MAAM,KAAK,GAC1CuN,EAAMD,EAAUrC,YAAY,KAClC,OAAgB,IAATsC,EAAa,GAAKD,EAAUE,UAAUD,EAAM,GAQ9C,SAASxU,GAAa4T,EAAMxY,GACjC,IAAKwY,EACH,MAAM,IAAIzW,MAAM,UAIlB,GAAoB,kBAATyW,GAAqBA,EAAKnC,QAAQ,SAAW,EAAG,CACzDrW,EAAOA,GAAcsZ,GAAed,GACpC,MAAMpC,EAAOtN,SAASyM,cAAc,KAOpC,OANAa,EAAKpR,MAAMyQ,QAAU,OACrBW,EAAKc,KAAOsB,EACZpC,EAAK3S,OAAS,SACd2S,EAAKmD,aAAa,WAAYvZ,GAC9B8I,SAAS0Q,KAAKxD,YAAYI,QAC1BA,EAAKqD,QAIP,IAAKzZ,EACH,MAAM,IAAI+B,MAAM,WASlB,GALoB,kBAATyW,IACTA,EAAOkB,GAAalB,IAIlBlX,OAAOmV,UAAUkD,WACnBrY,OAAOmV,UAAUmD,iBAAiBpB,EAAMxY,OACnC,CACL,MAAMgV,EAAM1T,OAAOuU,IAAIC,gBAAgB,IAAIC,KAAK,CAACyC,KAC3CpC,EAAOtN,SAASyM,cAAc,KACpCa,EAAKpR,MAAMyQ,QAAU,OACrBW,EAAKc,KAAOlC,EACZoB,EAAK3S,OAAS,SACd2S,EAAKmD,aAAa,WAAYvZ,GAC9B8I,SAAS0Q,KAAKxD,YAAYI,GAC1BA,EAAKqD,SAQF,SAASC,GAAaG,GAC3B,IAAIC,EAAMD,EAAahO,MAAM,KAC3BkO,EAAOD,EAAI,GAAGE,MAAM,WAAW,GAC/BC,EAAO3U,EAAKwU,EAAI,IAChB7Y,EAAIgZ,EAAK7b,OACT8b,EAAQ,IAAIC,WAAWlZ,GACzB,MAAOA,IACLiZ,EAAMjZ,GAAKgZ,EAAKnU,WAAW7E,GAE7B,OAAO,IAAI8U,KAAK,CAACmE,GAAQ,CACvBtS,KAAMmS,IAQH,SAAST,GAAetE,GAC7B,IAAKA,EAAK,MAAO,GACjB,MAAMwD,EAAOxD,EAAInJ,MAAM,KACvB,OAAO2M,EAAKA,EAAKpa,OAAS,IAAM,GAU3BuM,eAAe,GAAOE,EAAQpH,EAAQmE,EAAM5H,GACjD,MAAM+X,EAAUqC,GAAQxS,GACxB,OAAImQ,EACKA,KAAWzT,WAEb8V,GAAQ7P,SAASjG,WAOnB,SAAS+V,GAAyBC,GAEvC,MAAMC,EAAQ,CAEZ,0EAA2E,OAC3E,4EAA6E,OAC7E,oEAAqE,OACrE,kBAAmB,MAGnB,YAAa,MACb,aAAc,MACd,YAAa,MACb,YAAa,MACb,YAAa,MACb,aAAc,OACd,YAAa,MACb,gBAAiB,MAGjB,aAAc,MACd,mBAAoB,OACpB,kBAAmB,KACnB,yBAA0B,KAC1B,WAAY,MACZ,YAAa,OACb,gBAAiB,KACjB,kBAAmB,MACnB,WAAY,MACZ,qBAAsB,OACtB,gBAAiB,KACjB,kBAAmB,KACnB,WAAY,MACZ,WAAY,MACZ,aAAc,MAGd,YAAa,MACb,aAAc,OACd,YAAa,MAGb,aAAc,MACd,YAAa,MACb,YAAa,MACb,YAAa,OAITC,EAAMD,EAAMD,EAAK1S,MAEvB,IAAK4S,EACH,MAAM,IAAIzY,MAAM,aAIlB,MAAM0Y,GAAY,IAAIC,MAAOC,cAC1BC,QAAQ,SAAU,IAClB/O,MAAM,KAAK,GACX+O,QAAQ,IAAK,IAGhB,MAAO,GAAGH,KAAaD,I,8BCjHV,IACbxa,KAAM,gBACN0H,MAAO,CAELmT,QAAS,CACPjT,KAAM,CAAC7B,OAAQ1H,OAAQ0X,MACvBlO,QAAS,IAGXzD,QAAS,CACPwD,KAAMkT,QACNjT,SAAS,GAGXnD,aAAc,CACZkD,KAAMkT,QACNjT,SAAS,GAGXkT,aAAc,CACZnT,KAAMkT,QACNjT,SAAS,GAGXmT,gBAAiB,CACfpT,KAAMkT,QACNjT,SAAS,GAGXoT,qBAAsB,CACpBrT,KAAMkT,QACNjT,SAAS,IAGb,OACE,MAAO,CAEL7E,OAAO,EAEPkB,SAAU,GAEVgX,OAAQ,GAERpW,eAAgB,GAEhBD,WAAY,GAEZJ,SAAS,EACT9B,QAAS,CAEPyB,SAAS,EAETM,cAAc,EAEdqW,cAAc,EAEdC,iBAAiB,EAEjBC,sBAAsB,GAGxBE,SAAU,KAEVjW,WAAY,EAEZrB,iBAAkB,GAElBuX,iBAAkB,CAChBC,IAAK/Z,OAAO2V,SAASqE,OAAS,oBAC9BhG,IAAKhU,OAAO2V,SAASqE,OAAS,oBAC9BC,IAAKja,OAAO2V,SAASqE,OAAS,oBAC9BE,IAAKla,OAAO2V,SAASqE,OAAS,oBAC9BG,KAAMna,OAAO2V,SAASqE,OAAS,qBAC/BI,KAAMpa,OAAO2V,SAASqE,OAAS,yBAIrC,UAEE,MAAM,KACJ7R,EAAI,KACJzJ,EAAI,QACJ6a,EAAO,QACPzW,EAAO,qBACP6W,EAAoB,aACpBvW,EAAY,aACZqW,EAAY,gBACZC,GACE,oBAAM/D,SAASjE,OAAOqG,UAAU,IAE9BsC,EAAO,CACXvX,QAAqB,SAAZA,EACT6W,qBAA+C,SAAzBA,EACtBvW,aAA+B,UAAjBA,EACdqW,aAA+B,UAAjBA,EACdC,gBAAqC,UAApBA,GAgBnB,GAbIvR,GACFnI,OAAO+G,iBAAiB,UAAYC,IAClC,MAAM,OAAEgT,EAAQ1d,KAAM0c,GAAShS,EAC/B,GAAIgT,IAAW7R,GAAQ6Q,aAAgBvE,KAAM,CAE3C,MAAMyC,EAAO,IAAIoD,KAAK,CAACtB,GAAOta,EAAM,IACpCqC,KAAKwC,WAAa2T,EAClBnW,KAAKwZ,aAAarD,EAAMmD,MAM1Bd,EAAS,CAEX,MAAMiB,EAAUjB,EAAQkB,WAAW,QAC/BlB,EACAvZ,OAAO2V,SAASqE,OAAST,EAC7BxY,KAAKwC,WAAaiX,EAClBzZ,KAAK8B,YAAY2X,EAASH,OACrB,CACL,MAAMK,EAAO,CACX5X,QAAS/B,KAAK+B,QACd6W,qBAAsB5Y,KAAK4Y,qBAC3BvW,aAAcrC,KAAKqC,aACnBqW,aAAc1Y,KAAK0Y,aACnBC,gBAAiB3Y,KAAK2Y,iBAGA,kBAAjB3Y,KAAKwY,QACRxY,KAAK8B,YAAY9B,KAAKwY,QAASmB,GAC/B3Z,KAAKwZ,aAAaxZ,KAAKwY,QAASmB,GAItC1a,OAAO+V,OAAS/V,OAAO2a,SAAW,KAChC5Z,KAAK6Z,aAGPhS,EAASiS,IAAI,aAAe7T,IAC1BjG,KAAK8H,MAAM,aAAc7B,GAEzBhH,OAAO8a,OAAOzT,YAAY,CAAEf,KAAM,aAAchK,KAAM0K,GAAS,QAGnEH,QAAS,CACPvD,gBAEA,SAASgD,GACHvF,KAAK6C,YAAc,IAAgB,QAAT0C,IACrB,QAATA,EAAkBvF,KAAK6C,YAAc,GAAQ7C,KAAK6C,YAAc,KAGlE,YACE,MAAMmX,EAAcvT,SAASwT,eAAe,mBAAmBC,YACzDC,EAAQH,EAAcha,KAAK8Y,SACjC9Y,KAAK6C,WAAasX,GAGpB,YAAYxH,EAAKrS,EAAU,IAKzB,GAHAN,KAAKM,QAAUtE,OAAO4Z,OAAO5V,KAAKM,QAASA,IAGtCqS,EAAK,OAEV3S,KAAKoC,SAAU,EACfpC,KAAK6B,SAAW8Q,EAEhB3S,KAAKyC,eAAiBkQ,EAAI6B,OAAO7B,EAAI8B,YAAY,KAAO,GAAGjL,MAAM,KAAK,GAEtE,MAAMqP,EAAShC,GAAU7W,KAAKyC,gBAAgB2X,cAGxCC,EAAWrE,GAASsE,OAAOC,KAC9B1M,GAASA,EAAKmG,QAAQ6E,IAAW,GAGhCvY,EAAQsY,sBAAwByB,EAElCtC,GAAQ,gBACNpF,EACA3S,KAAK+G,MAAMyT,OACX,eACAxa,KAAKyC,gBACLgY,QAAQ,KACRza,KAAKoC,SAAU,IAMnB,OAAAsY,GAAA,MAAM,CACJ/H,MACAgI,OAAQ,MACRC,aAAc,SAEbC,KAAK,EAAGtf,WAEP,MAAM4a,EAAO,IAAIoD,KAAK,CAAChe,GAAOyE,KAAKyC,eAAgB,CACjD8C,KAAMhK,EAAKgK,MAAQ,KAErBvF,KAAKkC,aAAa,CAAEd,OAAQ,CAAE0Z,MAAO,CAAC3E,QAEvCsE,QAAQ,KACPza,KAAKoC,SAAU,IAEhB2Y,MAAM,KACLpU,QAAQuB,MAAM,UAEd6P,GAAQ,WACNpF,EACA3S,KAAK+G,MAAMyT,OACX3B,EACA7Y,KAAKyC,mBAKb,aAAa0T,EAAM7V,EAAU,IAE3BN,KAAKM,QAAUtE,OAAO4Z,OAAO5V,KAAKM,QAASA,GAGvC6V,EAAKxY,OACPqC,KAAKyC,eAAiB0T,EAAKxY,KAC3BqC,KAAK6B,SAAWsU,EAAKxY,MAGvBqC,KAAKkC,aAAa,CAAEd,OAAQ,CAAE0Z,MAAO,CAAC3E,OAGxC,mBAAmB1W,GACjBO,KAAKoC,SAAU,EACf,IACE,MAAO+T,GAAQ1W,EAAE2B,OAAO0Z,MAClBE,QAAoB9E,GAAWC,GACrCnW,KAAKoC,SAAU,QACTpC,KAAKib,cAAcD,EAAa7E,GACtC,MAAO1W,GACPkH,QAAQuB,MAAMzI,GACd,QACAO,KAAKoC,SAAU,IAInB,cAAcoG,EAAQ2N,GAEpB,MAAM,KAAExY,EAAI,KAAE4H,GAAS4Q,EACvB,IAAI5B,EAAW5W,EACXkb,EAAS,GAGTlb,GACF4W,EAAW5W,EACXkb,EAAShC,GAAUlZ,GAAMyc,eAGlBpa,KAAKyC,gBACZ8R,EAAWvU,KAAKyC,eAChBoW,EAAShC,GAAU7W,KAAKyC,gBAAgB2X,gBAIxC7F,EAAWyD,GAAyB7B,GACpC0C,EAAShC,GAAUtC,GAAU6F,gBAI1BvB,GAAUtT,IACbsT,EAAStT,EAAKiE,MAAM,KAAK,IAAM,IAIjCxJ,KAAKyC,eAAiB8R,EAGtB,MAAM7E,EAAOjJ,SAASyM,cAAc,OAEpClT,KAAK+G,MAAMyT,OAAO9F,UAAY,GAE9B,MAAMwG,EAAQlb,KAAK+G,MAAMyT,OAAO7G,YAAYjE,GAG5C,OAAO,IAAI0G,QAAQ,CAACvW,EAASwW,IAC3B,GAAO7N,EAAQ0S,EAAOrC,EAAQtE,GAC3BsG,KAAK,KAEJ7a,KAAK4P,UAAU,KAEb,MAAMuL,EAAUnF,GAASpC,OAASoC,GAASpC,MAAMwH,SAASvC,GACpDwC,EAAUrF,GAASsF,OAAStF,GAASsF,MAAMF,SAASvC,GACpD0C,EAAUvF,GAASvD,OAASuD,GAASvD,MAAM2I,SAASvC,GAEtDsC,GAAWE,EAEbrb,KAAK6C,WAAa,EACT0Y,EAETvb,KAAK6C,WAAa,GAGlB7C,KAAK6Z,cAGTha,MAEDkb,MAAM1E,KAIb,uBAEIrW,KAAKwB,kBACLxB,KAAK+Y,iBAAiB/Y,KAAKwB,mBAG3BxB,KAAK6B,SAAW7B,KAAK+Y,iBAAiB/Y,KAAKwB,kBAG3CxB,KAAK8B,YAAY9B,KAAK6B,SAAU,CAAEE,SAAS,KAG3C/B,KAAK6B,SAAW,IAKpB,iBACE7B,KAAKwB,iBAAmB,GACxBxB,KAAK6B,SAAW,GAEZ7B,KAAK+G,MAAMyT,SACbxa,KAAK+G,MAAMyT,OAAO9F,UAAY,OClbkJ,MCQpL,I,UAAY,eACd,GACA,EACA,GACA,EACA,KACA,WACA,OAIa,M,QCVf,GAAc8G,QAAWC,GACvBA,EAAIpT,UAAU,GAAc1K,KAAM,IAGrB,ICEA,IACbmM,WAAY,CACV4R,cAAA,IAEF,OACE,MAAO,IAET5V,QAAS,ICtB2K,MCOlL,GAAY,eACd,GACAhG,EACAM,GACA,EACA,KACA,KACA,MAIa,M,QCJf,aAAIub,OAAOC,eAAgB,EAE3B,IAAI,aAAI,CACN9b,OAAS2I,GAAMA,EAAEoT,MAChBnT,OAAO,S,kCClBV,W,yDCAA,W,kCCAA","file":"static/js/index.a3ae5baa.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PdfView.vue?vue&type=style&index=0&id=45eb45f4&prod&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Table.vue?vue&type=style&index=1&id=667f75f6&prod&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./notFind.vue?vue&type=style&index=0&id=ccce1976&prod&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error.vue?vue&type=style&index=0&id=7b15065c&prod&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Table.vue?vue&type=style&index=0&id=667f75f6&prod&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeViewer.vue?vue&type=style&index=0&id=34f067cc&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('vue-file-viewer',{attrs:{\"shoHead\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"vue-file-viewer\",attrs:{\"id\":\"vue-file-viewer\"}},[(_vm.options.shoHead)?_c('div',{staticClass:\"banner\"},[_c('div',{staticClass:\"file-select\"},[_c('button',{staticStyle:{\"margin-right\":\"20px\"},attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.stopPropagation();_vm.isUrl = !_vm.isUrl}}},[_vm._v(\" 【点击切换】\"+_vm._s(_vm.isUrl ? '上传预览' : '输入网址')+\" \")]),_c('div',{staticClass:\"overlay\"},[(_vm.isUrl)?_c('span',{staticStyle:{\"white-space\":\"pre\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"10px\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedFileType),expression:\"selectedFileType\"}],staticStyle:{\"height\":\"30px\",\"border-radius\":\"6px\",\"margin-right\":\"10px\",\"padding\":\"0 5px\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedFileType=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.handleFileTypeChange]}},[_c('option',{attrs:{\"value\":\"\"}},[_vm._v(\"请选择文件类型\")]),_c('option',{attrs:{\"value\":\"docx\"}},[_vm._v(\"Word文档\")]),_c('option',{attrs:{\"value\":\"pptx\"}},[_vm._v(\"PPT文档\")]),_c('option',{attrs:{\"value\":\"pdf\"}},[_vm._v(\"PDF文档\")]),_c('option',{attrs:{\"value\":\"png\"}},[_vm._v(\"PNG图片\")]),_c('option',{attrs:{\"value\":\"mp4\"}},[_vm._v(\"MP4视频\")]),_c('option',{attrs:{\"value\":\"mp3\"}},[_vm._v(\"MP3音频\")])])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputUrl),expression:\"inputUrl\"}],attrs:{\"type\":\"text\",\"placeholder\":\"请输入浏览文件地址\"},domProps:{\"value\":(_vm.inputUrl)},on:{\"input\":function($event){if($event.target.composing)return;_vm.inputUrl=$event.target.value}}}),_c('button',{attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.loadFromUrl(_vm.inputUrl, { shoHead: true })}}},[_vm._v(\" 预览 \")]),_c('button',{staticStyle:{\"background\":\"#f5f5f5\",\"color\":\"#333\",\"margin-left\":\"5px\"},attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.clearSelection.apply(null, arguments)}}},[_vm._v(\" 清除 \")])]):_c('span',[_c('input',{attrs:{\"type\":\"file\"},on:{\"change\":_vm.handleChange}})])])])]):_vm._e(),(!_vm.loading && _vm.options.showCtrolBtn)?_c('div',{staticClass:\"ctrol_btn\"},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.options.showScaleBtn),expression:\"options.showScaleBtn\"}]},[_c('span',{staticClass:\"scale_add\",on:{\"click\":function($event){return _vm.scaleBtn('add')}}}),_c('span',{staticClass:\"scale_reduce\",on:{\"click\":function($event){return _vm.scaleBtn('reduce')}}})]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.options.showDownLoadBtn),expression:\"options.showDownLoadBtn\"}]},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.options.showScaleBtn),expression:\"options.showScaleBtn\"}],staticStyle:{\"padding\":\"0 15px\",\"color\":\"rgba(255,255,255,0.3)\"}},[_vm._v(\" | \")]),_c('span',{staticClass:\"download\",on:{\"click\":function($event){return _vm.fileDownload(_vm.inputUrl || _vm.iframeFile, _vm.uploadFileName)}}},[_vm._v(\" 下载 \")])])]):_vm._e(),_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"loading\"},[_vm._v(\"正在加载中,请耐心等待...\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],ref:\"output\",staticClass:\"output\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\",\"overflow\":\"auto\",\"transform-origin\":\"top left\"},style:({\n transform: `scale(${_vm.clientZoom})`,\n height: (1 / _vm.clientZoom) * 100 + '%',\n width: (1 / _vm.clientZoom) * 100 + '%'\n })})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var base64EncodeChars =\r\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\r\nvar base64DecodeChars = new Array(\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n 62,\r\n -1,\r\n -1,\r\n -1,\r\n 63,\r\n 52,\r\n 53,\r\n 54,\r\n 55,\r\n 56,\r\n 57,\r\n 58,\r\n 59,\r\n 60,\r\n 61,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n 0,\r\n 1,\r\n 2,\r\n 3,\r\n 4,\r\n 5,\r\n 6,\r\n 7,\r\n 8,\r\n 9,\r\n 10,\r\n 11,\r\n 12,\r\n 13,\r\n 14,\r\n 15,\r\n 16,\r\n 17,\r\n 18,\r\n 19,\r\n 20,\r\n 21,\r\n 22,\r\n 23,\r\n 24,\r\n 25,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n 26,\r\n 27,\r\n 28,\r\n 29,\r\n 30,\r\n 31,\r\n 32,\r\n 33,\r\n 34,\r\n 35,\r\n 36,\r\n 37,\r\n 38,\r\n 39,\r\n 40,\r\n 41,\r\n 42,\r\n 43,\r\n 44,\r\n 45,\r\n 46,\r\n 47,\r\n 48,\r\n 49,\r\n 50,\r\n 51,\r\n -1,\r\n -1,\r\n -1,\r\n -1,\r\n -1\r\n)\r\n\r\nexport function btoa(str) {\r\n var out, i, len\r\n var c1, c2, c3\r\n len = str.length\r\n i = 0\r\n out = ''\r\n while (i < len) {\r\n c1 = str.charCodeAt(i++) & 0xff\r\n if (i == len) {\r\n out += base64EncodeChars.charAt(c1 >> 2)\r\n out += base64EncodeChars.charAt((c1 & 0x3) << 4)\r\n out += '=='\r\n break\r\n }\r\n c2 = str.charCodeAt(i++)\r\n if (i == len) {\r\n out += base64EncodeChars.charAt(c1 >> 2)\r\n out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4))\r\n out += base64EncodeChars.charAt((c2 & 0xf) << 2)\r\n out += '='\r\n break\r\n }\r\n c3 = str.charCodeAt(i++)\r\n out += base64EncodeChars.charAt(c1 >> 2)\r\n out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4))\r\n out += base64EncodeChars.charAt(((c2 & 0xf) << 2) | ((c3 & 0xc0) >> 6))\r\n out += base64EncodeChars.charAt(c3 & 0x3f)\r\n }\r\n return out\r\n}\r\n\r\nexport function atob(str) {\r\n var c1, c2, c3, c4\r\n var i, len, out\r\n len = str.length\r\n i = 0\r\n out = ''\r\n while (i < len) {\r\n do {\r\n c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff]\r\n } while (i < len && c1 == -1)\r\n if (c1 == -1) break\r\n do {\r\n c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff]\r\n } while (i < len && c2 == -1)\r\n if (c2 == -1) break\r\n out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4))\r\n do {\r\n c3 = str.charCodeAt(i++) & 0xff\r\n if (c3 == 61) return out\r\n c3 = base64DecodeChars[c3]\r\n } while (i < len && c3 == -1)\r\n if (c3 == -1) break\r\n out += String.fromCharCode(((c2 & 0xf) << 4) | ((c3 & 0x3c) >> 2))\r\n do {\r\n c4 = str.charCodeAt(i++) & 0xff\r\n if (c4 == 61) return out\r\n c4 = base64DecodeChars[c4]\r\n } while (i < len && c4 == -1)\r\n if (c4 == -1) break\r\n out += String.fromCharCode(((c3 & 0x03) << 6) | c4)\r\n }\r\n return out\r\n}\r\n","import Vue from 'vue'\r\nexport default new Vue()\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"wrapper\",staticClass:\"pptx-wrapper\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const DefaultOptions = () => ({\r\n // These are the defaults.\r\n // pptxFileUrl: \"\",\r\n // fileInputId: \"\",\r\n slidesScale: '', //Change Slides scale by percent\r\n slideMode: false, /** true,false*/\r\n slideType: 'divs2slidesjs', /*'divs2slidesjs' (default) , 'revealjs'(https://revealjs.com) -TODO*/\r\n revealjsPath: '', /*path to js file of revealjs - TODO*/\r\n keyBoardShortCut: false, /** true,false ,condition: slideMode: true XXXXX - need to remove - this is doublcated*/\r\n mediaProcess: true, /** true,false: if true then process video and audio files */\r\n jsZipV2: false,\r\n themeProcess: true, /*true (default) , false, \"colorsAndImageOnly\"*/\r\n incSlide:{\r\n width: 0,\r\n height: 0\r\n },\r\n slideModeConfig: {\r\n first: 1,\r\n nav: true, /** true,false : show or not nav buttons*/\r\n navTxtColor: 'black', /** color */\r\n keyBoardShortCut: true, /** true,false ,condition: */\r\n showSlideNum: true, /** true,false */\r\n showTotalSlideNum: true, /** true,false */\r\n autoSlide: true, /** false or seconds , F8 to active ,keyBoardShortCut: true */\r\n randomAutoSlide: false, /** true,false ,autoSlide:true */\r\n loop: false, /** true,false */\r\n background: false, /** false or color*/\r\n transition: 'default', /** transition type: \"slid\",\"fade\",\"default\",\"random\" , to show transition efects :transitionTime > 0.5 */\r\n transitionTime: 1 /** transition time between slides in seconds */\r\n },\r\n revealjsConfig: {}\r\n})\r\n","export default function Worker_fn() {\n return new Worker(__webpack_public_path__ + \"static/js/pptx.worker.3c5d3299.worker.js\");\n}\n","<template>\r\n <div class=\"pptx-wrapper\" ref=\"wrapper\" />\r\n</template>\r\n\r\n<script>\r\nimport EventBus from '../../util/EventBus'\r\nimport $ from 'jquery'\r\nimport { DefaultOptions } from './options'\r\nimport Worker from './worker/pptx.worker'\r\nimport 'nvd3/build/nv.d3.min.css'\r\n\r\n/**\r\n * pptx预览组件\r\n * 支持类型为\r\n * application/vnd.openxmlformats-officedocument.presentationml.presentation\r\n * 的文件\r\n */\r\nexport default {\r\n name: 'pptx',\r\n props: {\r\n data: ArrayBuffer,\r\n options: {\r\n type: Object,\r\n default: DefaultOptions,\r\n description: '默认配置,支持扩展'\r\n }\r\n },\r\n data() {\r\n return {\r\n isDone: false,\r\n thumbElement: null,\r\n worker: null\r\n }\r\n },\r\n mounted() {\r\n this.startWorker()\r\n },\r\n methods: {\r\n // 启动worker逻辑\r\n startWorker() {\r\n // Actual Web Worker - If you want to use this, switching worker's url to Blob is probably better\r\n if (this.worker) {\r\n this.worker.terminate()\r\n }\r\n\r\n this.worker = new Worker()\r\n this.worker.addEventListener(\r\n 'message',\r\n (event) => this.processMessage(event.data),\r\n false\r\n )\r\n // 定时检测执行情况,发现完成则及时关闭\r\n this.timer = setInterval(this.stopWorker, 500)\r\n // 通知worker开始工作\r\n this.worker.postMessage({\r\n type: 'processPPTX',\r\n data: this.data,\r\n IE11: !!window.MSInputMethodContext && !!document.documentMode,\r\n options: this.options\r\n })\r\n },\r\n // 停止worker逻辑\r\n stopWorker() {\r\n if (this.isDone) {\r\n this.worker.terminate()\r\n console.log('worker terminated')\r\n clearInterval(this.timer)\r\n }\r\n },\r\n // 窗口拖动大小,自动调整位置\r\n resize() {\r\n const $wrapper = $(this.$refs.wrapper)\r\n const slidesWidth = Math.max(\r\n ...Array.from($wrapper.children('section')).map((s) => s.offsetWidth)\r\n )\r\n const wrapperWidth = $wrapper[0].offsetWidth\r\n $wrapper.css({\r\n transform: `scale(${wrapperWidth / slidesWidth})`,\r\n 'transform-origin': 'top left'\r\n })\r\n },\r\n // 核心处理逻辑\r\n processMessage(msg) {\r\n if (this.isDone) return\r\n const $wrapper = $(this.$refs.wrapper)\r\n const { thumbElement } = this\r\n switch (msg.type) {\r\n case 'slide':\r\n console.log('正在处理:', msg.slide_num)\r\n $wrapper.append(msg.data)\r\n break\r\n case 'pptx-thumb':\r\n if (thumbElement)\r\n $(thumbElement).attr('src', `data:image/jpeg;base64,${msg.data}`)\r\n break\r\n case 'slideSize':\r\n break\r\n case 'globalCSS':\r\n $wrapper.append(`<style>${msg.data}</style>`)\r\n break\r\n case 'Done':\r\n case 'ExecutionTime':\r\n this.isDone = true\r\n EventBus.$emit('fileLoaded', { fileType: 'ppt', success: true })\r\n break\r\n case 'WARN':\r\n console.warn('PPTX processing warning: ', msg.data)\r\n break\r\n case 'ERROR':\r\n this.isDone = true\r\n console.error('PPTX processing error: ', msg.data)\r\n break\r\n case 'DEBUG':\r\n console.debug('Worker: ', msg.data)\r\n break\r\n case 'INFO':\r\n default:\r\n console.info('Worker: ', msg.data)\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n@import 'styles/pptxjs.css';\r\n\r\n.pptx-wrapper {\r\n margin: 0 auto;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pptx.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pptx.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pptx.vue?vue&type=template&id=8d0788d2&scoped=true&\"\nimport script from \"./pptx.vue?vue&type=script&lang=js&\"\nexport * from \"./pptx.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pptx.vue?vue&type=style&index=0&id=8d0788d2&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8d0788d2\",\n null\n \n)\n\nexport default component.exports","/*\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 15:04:10\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-09 16:36:35\r\n * @Descripttion: pptx渲染\r\n */\r\n\r\nimport Vue from 'vue'\r\nimport Pptx from './pptx.vue'\r\n\r\n/**\r\n * pptx渲染逻辑,使用vue组件,重构自pptxjs,感谢大神让我站在巨人的肩膀上\r\n * @param buffer 二进制数据\r\n * @param target 目标\r\n */\r\nexport default async function renderPptx(buffer, target) {\r\n return new Vue({\r\n render: (h) => h(Pptx, { props: { data: buffer } }),\r\n }).$mount(target)\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',[_c('hot-table',{ref:\"table\",attrs:{\"settings\":_vm.hotSettings}})],1),_c('div',{staticClass:\"btn-group\"},_vm._l((_vm.sheets),function(sheet){return _c('button',{key:sheet.id,staticStyle:{\"padding\":\"0 30px\"},attrs:{\"type\":_vm.sheetIndex === sheet.id ? 'primary' : 'default'},on:{\"click\":function($event){return _vm.handleSheet(sheet.id)}}},[_vm._v(\" \"+_vm._s(sheet.name)+\" \")])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const indexedColors = [\r\n '000000',\r\n 'FFFFFF',\r\n 'FF0000',\r\n '00FF00',\r\n '0000FF',\r\n 'FFFF00',\r\n 'FF00FF',\r\n '00FFFF',\r\n '000000',\r\n 'FFFFFF',\r\n 'FF0000',\r\n '00FF00',\r\n '0000FF',\r\n 'FFFF00',\r\n 'FF00FF',\r\n '00FFFF',\r\n '800000',\r\n '008000',\r\n '000080',\r\n '808000',\r\n '800080',\r\n '008080',\r\n 'C0C0C0',\r\n '808080',\r\n '9999FF',\r\n '993366',\r\n 'FFFFCC',\r\n 'CCFFFF',\r\n '660066',\r\n 'FF8080',\r\n '0066CC',\r\n 'CCCCFF',\r\n '000080',\r\n 'FF00FF',\r\n 'FFFF00',\r\n '00FFFF',\r\n '800080',\r\n '800000',\r\n '008080',\r\n '0000FF',\r\n '00CCFF',\r\n 'CCFFFF',\r\n 'CCFFCC',\r\n 'FFFF99',\r\n '99CCFF',\r\n 'FF99CC',\r\n 'CC99FF',\r\n 'FFCC99',\r\n '3366FF',\r\n '33CCCC',\r\n '99CC00',\r\n 'FFCC00',\r\n 'FF9900',\r\n 'FF6600',\r\n '666699',\r\n '969696',\r\n '003366',\r\n '339966',\r\n '003300',\r\n '333300',\r\n '993300',\r\n '993366',\r\n '333399',\r\n '333333',\r\n 'b7e0ff',\r\n '00CCFF'\r\n]\r\n","// 深度扁平化routes\r\nexport function flatten(routes) {\r\n return routes.flatMap((route) =>\r\n route.children ? [route, ...flatten(route.children)] : [route]\r\n )\r\n}\r\n\r\n// 转化style对象为style字符串\r\nexport function toStyleString(style) {\r\n return [...style].map((key) => `${key}: ${style[key]}`).join(';')\r\n}\r\n\r\n// 修复矩阵的宽度\r\nexport function fixMatrix(data, colLen) {\r\n for (const row of data) {\r\n for (let j = 0; j < colLen; j++) {\r\n if (!row[j]) {\r\n row[j] = ''\r\n }\r\n }\r\n }\r\n return data\r\n}\r\n\r\n// 首字母大写\r\nexport function captain(str) {\r\n return `${str.charAt(0).toUpperCase()}${str.slice(1)}`\r\n}\r\n\r\n// 连字符转驼峰\r\nexport function camelCase(str) {\r\n return str\r\n .split('-')\r\n .map((part, index) => {\r\n if (index !== 0) {\r\n return captain(part)\r\n } else {\r\n return part\r\n }\r\n })\r\n .join('')\r\n}\r\n","<template>\r\n <div>\r\n <div>\r\n <hot-table ref=\"table\" :settings=\"hotSettings\"></hot-table>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n v-for=\"sheet in sheets\"\r\n :key=\"sheet.id\"\r\n style=\"padding: 0 30px\"\r\n :type=\"sheetIndex === sheet.id ? 'primary' : 'default'\"\r\n @click=\"handleSheet(sheet.id)\"\r\n >\r\n {{ sheet.name }}\r\n </button>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { HotTable } from '@handsontable/vue'\r\nimport Handsontable from 'handsontable'\r\nimport { registerLanguageDictionary, zhCN } from 'handsontable/i18n'\r\nimport { indexedColors } from './color'\r\nimport { camelCase, captain, fixMatrix } from './util'\r\n\r\n// 注册中文\r\nregisterLanguageDictionary(zhCN)\r\n\r\n// 边框类型\r\nconst borders = ['left', 'right', 'top', 'bottom']\r\n\r\nexport default {\r\n name: 'HelloWorld',\r\n props: {\r\n msg: String,\r\n workbook: Object\r\n },\r\n components: { HotTable },\r\n data() {\r\n return {\r\n sheetIndex: 0,\r\n selection: {\r\n style: {},\r\n ranges: []\r\n }\r\n }\r\n },\r\n created() {\r\n // 注册自定义渲染\r\n Handsontable.renderers.registerRenderer(\r\n 'styleRender',\r\n (hotInstance, TD, row, col, prop, value, cell) => {\r\n Handsontable.renderers.getRenderer('text')(\r\n hotInstance,\r\n TD,\r\n row,\r\n col,\r\n prop,\r\n value,\r\n cell\r\n )\r\n if (this.ws && cell.style) {\r\n const {\r\n style: { alignment: { wrapText } = {}, border, fill, font }\r\n } = cell\r\n const style = TD.style\r\n if (font) {\r\n if (font.bold) style.fontWeight = 'bold'\r\n if (font.size) style.fontSize = `${font.size}px`\r\n }\r\n if (fill) {\r\n if (fill.bgColor) {\r\n const { argb, indexed } = fill.bgColor\r\n style.backgroundColor = `#${argb || indexedColors[indexed]}`\r\n }\r\n if (fill.fgColor) {\r\n const { theme, indexed } = fill.fgColor\r\n if (theme && this.themeColors) {\r\n const color = this.themeColors[theme + 1]\r\n if (color) {\r\n style.color = `#${color}`\r\n }\r\n }\r\n if (indexed) {\r\n style.color = `#${indexedColors[indexed]}`\r\n }\r\n }\r\n }\r\n if (border) {\r\n borders\r\n .map((key) => ({ key, value: border[key] }))\r\n .filter((v) => v.value)\r\n .forEach((v) => {\r\n const {\r\n key,\r\n value: { style: borderStyle }\r\n } = v\r\n const prefix = `border${captain(key)}`\r\n if (borderStyle === 'thin') {\r\n style[`${prefix}Width`] = '1px'\r\n } else {\r\n style[`${prefix}Width`] = '2px'\r\n }\r\n style[`${prefix}Style`] = 'solid'\r\n style[`${prefix}Color`] = '#000'\r\n })\r\n }\r\n }\r\n // 启用了内联css,直接赋值\r\n if (cell.css) {\r\n const style = TD.style\r\n const { css } = cell\r\n Object.keys(css).forEach((key) => {\r\n const k = camelCase(key)\r\n style[k] = css[key]\r\n })\r\n }\r\n }\r\n )\r\n },\r\n watch: {\r\n workbook() {\r\n this.parseTheme()\r\n this.updateTable()\r\n }\r\n },\r\n computed: {\r\n hotSettings() {\r\n return {\r\n language: 'zh-CN',\r\n readOnly: true,\r\n data: this.data,\r\n cell: this.cell,\r\n mergeCells: this.merge,\r\n colHeaders: true,\r\n rowHeaders: true,\r\n height: 'calc(100vh - 107px)',\r\n // contextMenu: true,\r\n // manualRowMove: true,\r\n // 关闭外部点击取消选中时间的行为\r\n outsideClickDeselects: false,\r\n // fillHandle: {\r\n // direction: 'vertical',\r\n // autoInsertRow: true\r\n // },\r\n // afterSelectionEnd: this.afterSelectionEnd,\r\n // bindRowsWithHeaders: 'strict',\r\n licenseKey: 'non-commercial-and-evaluation'\r\n }\r\n },\r\n ws() {\r\n const { workbook: { getWorksheet } = {} } = this\r\n if (getWorksheet) {\r\n const index = this.sheetIndex || this.sheets[0].id\r\n return this.workbook.getWorksheet(index)\r\n }\r\n return null\r\n },\r\n sheets() {\r\n if (this.workbook.worksheets) {\r\n return this.workbook.worksheets.filter((sheet) => sheet._rows.length)\r\n }\r\n return []\r\n },\r\n merge() {\r\n const { ws: { _merges: merges = {} } = {} } = this\r\n return Object.values(merges).map(({ left, top, right, bottom }) => {\r\n // 构建区域\r\n return {\r\n row: top - 1,\r\n col: left - 1,\r\n rowspan: bottom - top + 1,\r\n colspan: right - left + 1\r\n }\r\n })\r\n },\r\n data() {\r\n return fixMatrix(\r\n this.ws.getRows(1, this.ws.actualRowCount).map((row) =>\r\n row._cells.map((item) => {\r\n const value = item.model.value\r\n if (value) {\r\n // 处理单元格内原始数据\r\n if (value.richText) {\r\n let text = value.richText.text\r\n if (Array.isArray(value.richText)) {\r\n text = value.richText.reduce(\r\n (prev, curr) => prev + curr.text,\r\n ''\r\n )\r\n }\r\n return text\r\n }\r\n return value\r\n }\r\n return ''\r\n })\r\n ),\r\n this.cols.length\r\n )\r\n },\r\n cols() {\r\n return this.ws.columns.map((item) => item.letter)\r\n },\r\n columns() {\r\n return this.ws.columns.map((item) => ({\r\n ...(item.width\r\n ? { width: item.width < 100 ? 100 : item.width }\r\n : { width: 100 }),\r\n className: this.alignToClass(item.alignment || {}),\r\n renderer: 'styleRender'\r\n }))\r\n },\r\n cell() {\r\n return this.ws.getRows(1, this.ws.actualRowCount).flatMap((row, ri) => {\r\n return row._cells\r\n .map((cell, ci) => {\r\n if (cell.style) {\r\n return {\r\n row: ri,\r\n col: ci,\r\n ...(cell.alignment\r\n ? { className: this.alignToClass(cell.alignment) }\r\n : {}),\r\n style: cell.style\r\n }\r\n }\r\n })\r\n .filter((i) => i)\r\n })\r\n },\r\n border() {\r\n return this.ws.getRows(1, this.ws.actualRowCount).flatMap((row, ri) => {\r\n return row._cells\r\n .map((cell, ci) => {\r\n if (cell.style && cell.style.border) {\r\n const border = cell.style.border\r\n const keys = Object.keys(border)\r\n if (keys.length) {\r\n return {\r\n row: ri,\r\n col: ci,\r\n ...keys.reduce((result, key) => {\r\n result[key] = {\r\n width: 1,\r\n color: `#${(border.color &&\r\n indexedColors[border.color.indexed]) ||\r\n border.argb ||\r\n '000000'}`\r\n }\r\n return result\r\n }, {})\r\n }\r\n }\r\n }\r\n })\r\n .filter((i) => i)\r\n })\r\n }\r\n },\r\n methods: {\r\n hotTable() {\r\n return this.$refs.table.hotInstance\r\n },\r\n updateTable() {\r\n this.hotTable().updateSettings({\r\n mergeCells: this.merge,\r\n data: this.data,\r\n colHeaders: this.cols,\r\n columns: this.columns,\r\n cell: this.cell\r\n // customBorders: this.border,\r\n })\r\n },\r\n alignToClass({ horizontal, vertical }) {\r\n return [horizontal, vertical]\r\n .filter((i) => i)\r\n .map((key) => `ht${key.charAt(0).toUpperCase()}${key.slice(1)}`)\r\n .join(' ')\r\n },\r\n parseTheme() {\r\n const theme = this.workbook._themes.theme1\r\n const parser = new DOMParser()\r\n if (theme) {\r\n const doc = parser.parseFromString(theme, 'text/xml')\r\n const [{ children = [] } = {}] = doc.getElementsByTagName('a:clrScheme')\r\n this.themeColors = [...children]\r\n .flatMap((node) => [...node.getElementsByTagName('a:srgbClr')])\r\n .map((node) => node.getAttribute('val'))\r\n .filter((i) => i)\r\n }\r\n },\r\n // 切换sheet\r\n handleSheet(index) {\r\n if (this.sheetIndex !== index) {\r\n this.sheetIndex = index\r\n this.$nextTick(() => {\r\n this.updateTable()\r\n })\r\n }\r\n },\r\n // 处理样式\r\n handleStyle(style, { type, key }) {\r\n this.selection.style = style\r\n const hot = this.hotTable()\r\n // 暂停自定义渲染逻辑\r\n hot.suspendRender()\r\n this.selection.ranges.forEach(({ r, c }) => {\r\n const { css = {} } = hot.getCellMeta(r, c)\r\n const merged = { ...css }\r\n // 差量赋值,按照excel标准\r\n if (type === 'remove') {\r\n delete merged[key]\r\n } else if (type === 'add') {\r\n merged[key] = style[key]\r\n }\r\n hot.setCellMetaObject(r, c, {\r\n css: merged\r\n })\r\n })\r\n // 手动渲染\r\n hot.render()\r\n // 恢复自动渲染逻辑\r\n hot.resumeRender()\r\n },\r\n // 选中区域回调\r\n afterSelectionEnd(row, column, row2, column2, selectionLayerLevel) {\r\n const ranges = []\r\n for (let r = row; r <= row2; r++) {\r\n for (let c = column; c <= column2; c++) {\r\n ranges.push({ r, c })\r\n }\r\n }\r\n // 获得左上角的元数据,初始化一些状态\r\n const { css = {} } = this.hotTable().getCellMeta(row, column)\r\n this.selection.style = css\r\n this.selection.ranges = ranges\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style>\r\n.handsontable {\r\n font-size: 13px;\r\n color: #222;\r\n}\r\n</style>\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.sheet-btn.active {\r\n background-color: aquamarine;\r\n}\r\n\r\n.btn-group {\r\n margin-top: 5px;\r\n display: block;\r\n border-bottom: 1px solid grey;\r\n background-color: lightblue;\r\n}\r\n\r\n.table-tool {\r\n padding: 8px 0;\r\n border-top: 1px solid black;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Table.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Table.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Table.vue?vue&type=template&id=667f75f6&scoped=true&\"\nimport script from \"./Table.vue?vue&type=script&lang=js&\"\nexport * from \"./Table.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Table.vue?vue&type=style&index=0&id=667f75f6&prod&lang=css&\"\nimport style1 from \"./Table.vue?vue&type=style&index=1&id=667f75f6&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"667f75f6\",\n null\n \n)\n\nexport default component.exports","import ExcelJS from 'exceljs'\r\nimport Vue from 'vue'\r\nimport EventBus from '../../util/EventBus'\r\nimport Table from './Table'\r\nimport 'handsontable/dist/handsontable.full.min.css'\r\n\r\n/**\r\n * 渲染excel\r\n */\r\nexport default async function render(buffer, target) {\r\n const workbook = await new ExcelJS.Workbook().xlsx.load(buffer)\r\n return new Vue({\r\n render: (h) =>\r\n h(Table, {\r\n props: {\r\n workbook\r\n }\r\n })\r\n }).$mount(target).$nextTick(() => {\r\n EventBus.$emit('fileLoaded', { fileType: 'excel', success: true });\r\n })\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{ref:\"container\",staticClass:\"container\"},[_c('div',{staticClass:\"pdfViewer\",attrs:{\"id\":\"viewer\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div>\n <div ref=\"container\" class=\"container\">\n <div id=\"viewer\" class=\"pdfViewer\" />\n </div>\n </div>\n</template>\n\n<script>\nimport myEventBus from '../../util/EventBus'\nimport { getDocument, GlobalWorkerOptions } from 'pdfjs-dist/legacy/build/pdf'\nimport {\n EventBus,\n PDFViewer,\n PDFLinkService,\n PDFFindController\n} from 'pdfjs-dist/legacy/web/pdf_viewer'\nimport './pdf.css'\n\nexport default {\n name: 'PdfView',\n props: {\n data: ArrayBuffer\n },\n data() {\n return {\n search: ''\n }\n },\n created() {\n if (typeof window !== 'undefined' && !GlobalWorkerOptions.workerSrc) {\n // 使用 file-loader 打包本地文件(离线可用,适合内网环境)\n // 指定输出到 static/js/ 目录,文件名保持原样\n const workerModule = require('!!file-loader?name=static/js/[name].[contenthash:8].js!pdfjs-dist/legacy/build/pdf.worker.min.js')\n // file-loader 可能返回模块对象,需要取 .default 属性\n GlobalWorkerOptions.workerSrc = workerModule.default || workerModule\n \n // 使用 CDN Worker 文件(备选方案,需要外网)\n // GlobalWorkerOptions.workerSrc = `https://cdn.jsdelivr.net/npm/pdfjs-dist@2.16.105/legacy/build/pdf.worker.min.js`\n }\n },\n mounted() {\n this.loadFile()\n },\n methods: {\n async loadFile() {\n const container = this.$refs.container\n // 初始化viewer\n const eventBus = new EventBus()\n\n // (Optionally) enable hyperlinks within PDF files.\n const pdfLinkService = new PDFLinkService({\n eventBus\n })\n\n // (Optionally) enable find controller.\n const pdfFindController = new PDFFindController({\n eventBus,\n linkService: pdfLinkService\n })\n\n const pdfViewer = new PDFViewer({\n container,\n eventBus,\n linkService: pdfLinkService,\n findController: pdfFindController,\n enableScripting: true // Only necessary in PDF.js version 2.10.377 and below.\n })\n pdfLinkService.setViewer(pdfViewer)\n\n eventBus.on('pagesinit', () => {\n // Emit custom event when PDF is fully loaded\n myEventBus.$emit('fileLoaded', { fileType: 'pdf', success: true })\n\n // We can use pdfViewer now, e.g. let's change default scale.\n pdfViewer.currentScaleValue = 1\n\n // We can try searching for things.\n if (this.search) {\n eventBus.dispatch('find', { type: '', query: this.search })\n }\n })\n // Loading document.\n const loadingTask = getDocument({\n data: this.data,\n // 影响中文区发票预览,pdf文件的编码规则WinAnsiEncoding下的BaseFont为['Courier'] or 编码规则UniGB-UCS2-H下的BaseFont为['KaiTi_GB2312', 'SimSun', 'STSong-Light', 'STSong-Light-UniGB-UCS2-H']任意一个情形,可能会导致无法实现正常渲染,因此建议使用目前最新的编码规则\n // 使用本地 cmaps 文件(离线可用,适合内网环境)\n cMapUrl: process.env.BASE_URL + 'static/cmaps/',\n cMapPacked: true,\n enableXfa: true\n \n // 使用 CDN cmaps 文件(备选方案,需要外网)\n // cMapUrl: 'https://cdn.jsdelivr.net/npm/pdfjs-dist@2.16.105/cmaps/',\n })\n // 得到文档\n const pdfDocument = await loadingTask.promise\n // Document loaded, specifying document for the viewer and\n // the (optional) linkService.\n pdfViewer.setDocument(pdfDocument)\n pdfLinkService.setDocument(pdfDocument, null)\n this.viewer = pdfViewer\n }\n }\n}\n</script>\n\n<style scoped>\n.container {\n position: absolute;\n width: 100%;\n height: 100%;\n overflow: auto;\n}\n.pdfViewer {\n margin: 0 auto;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PdfView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PdfView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PdfView.vue?vue&type=template&id=45eb45f4&scoped=true&\"\nimport script from \"./PdfView.vue?vue&type=script&lang=js&\"\nexport * from \"./PdfView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PdfView.vue?vue&type=style&index=0&id=45eb45f4&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"45eb45f4\",\n null\n \n)\n\nexport default component.exports","/*\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 15:04:10\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-09 16:36:08\r\n * @Descripttion:\r\n */\r\nimport Vue from 'vue'\r\nimport PdfView from './PdfView.vue'\r\n\r\nexport default async function renderPdf(buffer, target) {\r\n return new Vue({\r\n render: (h) => h(PdfView, { props: { data: buffer } }),\r\n }).$mount(target)\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('viewer',{staticClass:\"image-container\",attrs:{\"images\":_vm.images}},_vm._l((_vm.images),function(item){return _c('img',{key:item.index,staticClass:\"image\",attrs:{\"alt\":\"图片\",\"src\":item.src},on:{\"load\":_vm.onImageLoad}})}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 15:04:10\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-11 19:01:17\r\n * @Descripttion: 渲染图片的容器\r\n-->\r\n<template>\r\n <viewer :images=\"images\" class=\"image-container\">\r\n <img\r\n v-for=\"item in images\"\r\n alt=\"图片\"\r\n :src=\"item.src\"\r\n :key=\"item.index\"\r\n class=\"image\"\r\n @load=\"onImageLoad\"\r\n />\r\n </viewer>\r\n</template>\r\n\r\n<script>\r\nimport EventBus from '../../util/EventBus'\r\nimport Vue from 'vue'\r\nimport viewer from 'v-viewer'\r\nimport 'viewerjs/dist/viewer.css'\r\nVue.use(viewer)\r\n\r\nexport default {\r\n name: 'ImageViewer',\r\n props: {\r\n image: String\r\n },\r\n computed: {\r\n images() {\r\n return this.image ? [{ src: this.image }] : []\r\n },\r\n },\r\n methods: {\r\n onImageLoad() {\r\n // Emit custom event when image is fully loaded\r\n EventBus.$emit('fileLoaded', { fileType: 'image', success: true });\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.image-container {\r\n position: relative;\r\n width: 100%;\r\n height: 100vh;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.image {\r\n display: block;\r\n width: auto;\r\n height: auto;\r\n margin: auto;\r\n max-width: 100%;\r\n max-height: 100vh;\r\n object-fit: contain;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageViewer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageViewer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageViewer.vue?vue&type=template&id=5753c112&scoped=true&\"\nimport script from \"./ImageViewer.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageViewer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageViewer.vue?vue&type=style&index=0&id=5753c112&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5753c112\",\n null\n \n)\n\nexport default component.exports","/*\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 21:21:33\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-09 21:27:28\r\n * @Descripttion: 图片渲染\r\n */\r\nimport Vue from 'vue'\r\nimport ImageViewer from './ImageViewer'\r\nimport { readDataURL } from '../../util'\r\n\r\n/**\r\n * 图片渲染\r\n */\r\nexport default async function renderImage(buffer, target) {\r\n const url = await readDataURL(buffer)\r\n return new Vue({\r\n render: (h) => h(ImageViewer, { props: { image: url } })\r\n }).$mount(target)\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('pre',{staticClass:\"code-area\"},[_vm._v(\" \"+_vm._s(_vm.value)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <pre class=\"code-area\">\r\n {{ value }}\r\n </pre>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: 'CodeEditor',\r\n props: {\r\n value: {\r\n type: String,\r\n description: '值'\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.code-area {\r\n display: block;\r\n margin: 0 auto;\r\n font-size: 12px;\r\n width: 1000px;\r\n min-height: 500px;\r\n background: #1f1f1f;\r\n word-break: break-word;\r\n white-space: break-spaces;\r\n color: #5af117;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeViewer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeViewer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CodeViewer.vue?vue&type=template&id=34f067cc&scoped=true&\"\nimport script from \"./CodeViewer.vue?vue&type=script&lang=js&\"\nexport * from \"./CodeViewer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CodeViewer.vue?vue&type=style&index=0&id=34f067cc&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"34f067cc\",\n null\n \n)\n\nexport default component.exports","import { readText } from '../../util'\r\nimport EventBus from '../../util/EventBus'\r\nimport Vue from 'vue'\r\nimport CodeViewer from './CodeViewer'\r\n\r\n/**\r\n * 渲染文本\r\n * @param buffer 文本二进制内容\r\n * @param target 目标\r\n */\r\nexport default async function renderText(buffer, target) {\r\n const text = await readText(buffer)\r\n return new Vue({\r\n render: (h) => h(CodeViewer, { props: { value: text } })\r\n }).$mount(target).$nextTick(() => {\r\n EventBus.$emit('fileLoaded', { fileType: 'text', success: true });\r\n })\r\n}\r\n","/*\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 21:21:33\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-13 11:11:21\r\n * @Descripttion: 渲染mp4\r\n */\r\n\r\nimport EventBus from '../../util/EventBus';\r\n\r\n/**\r\n * 渲染mp4\r\n */\r\nexport default function(buffer, target) {\r\n const mp4 = document.createElement('video')\r\n mp4.controls = true\r\n mp4.style.width = '100%'\r\n mp4.style.height = '100%'\r\n mp4.style.display = 'table'\r\n mp4.style.margin = 'auto'\r\n mp4.style.objectFit = 'contain'\r\n const source = document.createElement('source')\r\n source.src = URL.createObjectURL(new Blob([buffer]))\r\n mp4.appendChild(source)\r\n mp4.addEventListener('loadeddata', function() {\r\n // Emit custom event when MP4 is fully loaded\r\n EventBus.$emit('fileLoaded', { fileType: 'video', success: true });\r\n });\r\n target.appendChild(mp4)\r\n}\r\n","/*\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 21:21:33\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-13 11:11:21\r\n * @Descripttion: 渲染音频\r\n */\r\n\r\nimport EventBus from '../../util/EventBus';\r\n\r\n/**\r\n * 渲染音频\r\n */\r\nexport default function(buffer, target) {\r\n const audio = document.createElement('audio')\r\n audio.controls = true\r\n audio.style.width = '100%';\r\n audio.style.margin = 'auto';\r\n target.style.display = 'flex';\r\n target.style.alignItems = 'center';\r\n target.style.justifyContent = 'center';\r\n target.style.height = '100%';\r\n const source = document.createElement('source')\r\n source.src = URL.createObjectURL(new Blob([buffer]))\r\n audio.appendChild(source)\r\n audio.addEventListener('loadeddata', function() {\r\n // Emit custom event when Audio is fully loaded\r\n EventBus.$emit('fileLoaded', { fileType: 'audio', success: true });\r\n });\r\n target.appendChild(audio)\r\n}\r\n","/*\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 21:21:33\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-15 23:44:23\r\n * @Descripttion: 渲染微软在线office浏览容器\r\n */\r\nimport EventBus from '../../util/EventBus'\r\n/**\r\n * 渲染微软在线office浏览容器\r\n */\r\nexport default function(url, target) {\r\n // 跟随文件的协议访问\r\n const link = `${\r\n url.indexOf('https') > -1 ? 'https' : 'http'\r\n }://view.officeapps.live.com/op/view.aspx?src=${encodeURIComponent(url)}`\r\n // 判断是否为手机\r\n const isMobile = /phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone/i.test(\r\n navigator.userAgent\r\n )\r\n // 手机端会被重定向将整个页面刷新,暂时采用a标签跳转的方案\r\n if (isMobile) {\r\n const span = document.createElement('span')\r\n const fileName = url.substr(url.lastIndexOf('/') + 1)\r\n span.innerHTML = `请点击查看 ${fileName} 文件`\r\n span.style = `\r\n font-size: 4rem;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100%;\r\n line-height: 100%;\r\n color: skyblue;\r\n text-decoration: underline;\r\n cursor: pointer;\r\n `\r\n span.onclick = function() {\r\n window.top.location.href = link\r\n }\r\n target.appendChild(span)\r\n } else {\r\n const iframe = document.createElement('iframe')\r\n iframe.src = link\r\n iframe.style = 'border:0;height: 100%;width:100%'\r\n // 允许执行脚本;允许同域请求;允许进行提交表单;允许模态框\r\n iframe.sandbox = 'allow-scripts allow-same-origin allow-forms allow-modals'\r\n\r\n iframe.onload = function() {\r\n // Emit custom event when Office document is fully loaded\r\n EventBus.$emit('fileLoaded', { fileType: 'office', success: true })\r\n }\r\n target.appendChild(iframe)\r\n }\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"error\"},[_c('div',{staticStyle:{\"margin-top\":\"50vh\"}},[_vm._v(\" 不支持 \"),_c('span',{staticStyle:{\"color\":\"skyblue\"}},[_vm._v(\".\"+_vm._s(_vm.fileType))]),_vm._v(\" 格式的在线预览,请下载后预览或转换为支持的格式 \"),_c('br'),_vm._v(\" 支持pptx,docx,xlsx,pdf,视频,音频,纯文本和图片的在线预览 \")]),_c('button',{staticClass:\"download\",on:{\"click\":function($event){return _vm.fileDownload(_vm.url, _vm.fileName)}}},[_vm._v(\" 下载\"+_vm._s(_vm.fileName)+\" \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 15:04:10\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-12 14:28:23\r\n * @Descripttion: 渲染不支持格式的容器\r\n-->\r\n<template>\r\n <div class=\"error\">\r\n <div style=\"margin-top: 50vh\">\r\n 不支持\r\n <span style=\"color:skyblue\">.{{ fileType }}</span>\r\n 格式的在线预览,请下载后预览或转换为支持的格式\r\n <br />\r\n 支持pptx,docx,xlsx,pdf,视频,音频,纯文本和图片的在线预览\r\n </div>\r\n <button class=\"download\" @click=\"fileDownload(url, fileName)\">\r\n 下载{{ fileName }}\r\n </button>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { fileDownload } from '../../util'\r\nexport default {\r\n name: 'error',\r\n props: {\r\n // 文件名称\r\n fileName: {\r\n type: String,\r\n default: ''\r\n },\r\n // 文件后缀类型\r\n fileType: {\r\n type: String,\r\n default: ''\r\n },\r\n url: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n methods: {\r\n fileDownload\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.error {\r\n text-align: center;\r\n font-size: 1.5rem;\r\n line-height: 2.2rem;\r\n padding: 10px;\r\n}\r\n\r\n.download {\r\n outline: none;\r\n border-radius: 20px;\r\n border: 1px solid #e3e3e3;\r\n font-size: 1.5rem;\r\n padding: 20px;\r\n cursor: pointer;\r\n background: #fafafa;\r\n margin-top: 25px;\r\n}\r\n\r\n@media (max-width: 992px) {\r\n .error {\r\n font-size: 2rem;\r\n line-height: 2.5rem;\r\n }\r\n .download {\r\n font-size: 2rem;\r\n }\r\n}\r\n\r\n@media (max-width: 768px) {\r\n .error {\r\n font-size: 3rem;\r\n line-height: 4rem;\r\n }\r\n .download {\r\n font-size: 4rem;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./error.vue?vue&type=template&id=7b15065c&scoped=true&\"\nimport script from \"./error.vue?vue&type=script&lang=js&\"\nexport * from \"./error.vue?vue&type=script&lang=js&\"\nimport style0 from \"./error.vue?vue&type=style&index=0&id=7b15065c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b15065c\",\n null\n \n)\n\nexport default component.exports","/*\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 21:21:33\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-12 14:31:37\r\n * @Descripttion: 错误渲染\r\n */\r\nimport Vue from 'vue'\r\nimport error from './error'\r\nimport { readDataURL } from '../../util'\r\n\r\n/**\r\n * 错误渲染\r\n */\r\nexport default async function renderError(buffer, target, fileType, fileName) {\r\n const url = await readDataURL(buffer)\r\n return new Vue({\r\n render: (h) => h(error, { props: { fileType, fileName, url } })\r\n }).$mount(target)\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"notFind\"},[_c('div',{staticStyle:{\"margin-top\":\"50vh\"}},[_vm._v(\" \"+_vm._s(_vm.fileName)+\"文件不存在,请检查地址是否存在此文件: \"),_c('a',{attrs:{\"target\":\"_blank\",\"href\":_vm.url}},[_vm._v(_vm._s(_vm.url))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 15:04:10\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-12 14:43:21\r\n * @Descripttion: 渲染文件不存在的容器\r\n-->\r\n<template>\r\n <div class=\"notFind\">\r\n <div style=\"margin-top: 50vh\">\r\n {{ fileName }}文件不存在,请检查地址是否存在此文件:\r\n <a target=\"_blank\" :href=\"url\">{{ url }}</a>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: 'notFind',\r\n props: {\r\n // 文件名称\r\n fileName: {\r\n type: String,\r\n default: ''\r\n },\r\n // 文件后缀类型\r\n fileType: {\r\n type: String,\r\n default: ''\r\n },\r\n url: {\r\n type: String,\r\n default: ''\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.notFind {\r\n text-align: center;\r\n font-size: 1.5rem;\r\n line-height: 2.2rem;\r\n padding: 10px;\r\n}\r\n\r\n@media (max-width: 992px) {\r\n .notFind {\r\n font-size: 2rem;\r\n line-height: 2.5rem;\r\n }\r\n}\r\n\r\n@media (max-width: 768px) {\r\n .notFind {\r\n font-size: 3rem;\r\n line-height: 4rem;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./notFind.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./notFind.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./notFind.vue?vue&type=template&id=ccce1976&scoped=true&\"\nimport script from \"./notFind.vue?vue&type=script&lang=js&\"\nexport * from \"./notFind.vue?vue&type=script&lang=js&\"\nimport style0 from \"./notFind.vue?vue&type=style&index=0&id=ccce1976&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ccce1976\",\n null\n \n)\n\nexport default component.exports","/*\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 21:21:33\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-12 14:31:25\r\n * @Descripttion: 错误渲染\r\n */\r\nimport Vue from 'vue'\r\nimport notFind from './notFind'\r\n\r\n/**\r\n * 错误渲染\r\n */\r\nexport default async function renderNotFind(url, target, fileType, fileName) {\r\n return new Vue({\r\n render: (h) => h(notFind, { props: { fileType, fileName, url } })\r\n }).$mount(target)\r\n}\r\n","import { defaultOptions, renderAsync } from 'docx-preview'\r\nimport EventBus from './util/EventBus'\r\nimport renderPptx from './vendors/pptx'\r\nimport renderSheet from './vendors/xlsx'\r\nimport renderPdf from './vendors/pdf'\r\nimport renderImage from './vendors/image'\r\nimport renderText from './vendors/text'\r\nimport renderMp4 from './vendors/mp4'\r\nimport renderMusic from './vendors/audio'\r\nimport renderOfficeOnline from './vendors/officeOnline'\r\nimport renderError from './vendors/error'\r\nimport renderNotFind from './vendors/notFind'\r\n\r\n// 假装构造一个vue的渲染容器\r\nconst VueWrapper = (el) => ({\r\n $el: el\r\n})\r\n\r\nconst handlers = [\r\n // 使用docxjs支持,目前效果最好的渲染器\r\n {\r\n parentType: 'office',\r\n accepts: ['docx'],\r\n handler: async (buffer, target) => {\r\n const docxOptions = Object.assign(defaultOptions, {\r\n debug: true,\r\n experimental: true\r\n })\r\n await renderAsync(buffer, target, null, docxOptions)\r\n EventBus.$emit('fileLoaded', { fileType: 'doc', success: true })\r\n return VueWrapper(target)\r\n }\r\n },\r\n // 使用pptx2html,已通过默认值更替\r\n {\r\n parentType: 'office',\r\n accepts: ['pptx'],\r\n handler: async (buffer, target) => {\r\n await renderPptx(buffer, target, null)\r\n window.dispatchEvent(new Event('resize'))\r\n return VueWrapper(target)\r\n }\r\n },\r\n // 使用sheetjs + handsontable,无样式\r\n {\r\n parentType: 'office',\r\n accepts: ['xlsx'],\r\n handler: async (buffer, target) => {\r\n return renderSheet(buffer, target)\r\n }\r\n },\r\n // 使用pdfjs,渲染pdf,效果最好\r\n {\r\n parentType: 'pdf',\r\n accepts: ['pdf'],\r\n handler: async (buffer, target) => {\r\n return renderPdf(buffer, target)\r\n }\r\n },\r\n // 图片过滤器\r\n {\r\n parentType: 'image',\r\n accepts: ['gif', 'jpg', 'jpeg', 'bmp', 'tiff', 'tif', 'png', 'svg'],\r\n handler: async (buffer, target) => {\r\n return renderImage(buffer, target)\r\n }\r\n },\r\n // 纯文本预览\r\n {\r\n parentType: 'text',\r\n accepts: [\r\n 'txt',\r\n 'json',\r\n 'js',\r\n 'css',\r\n 'java',\r\n 'py',\r\n 'html',\r\n 'jsx',\r\n 'ts',\r\n 'tsx',\r\n 'xml',\r\n 'md',\r\n 'log'\r\n ],\r\n handler: async (buffer, target) => {\r\n return renderText(buffer, target)\r\n }\r\n },\r\n // 视频预览,仅支持MP4\r\n {\r\n parentType: 'video',\r\n accepts: ['mp4', 'webm', 'ogv'],\r\n handler: async (buffer, target) => {\r\n renderMp4(buffer, target)\r\n return VueWrapper(target)\r\n }\r\n },\r\n // 音频预览,仅支持MP3, WAV, OGG\r\n {\r\n parentType: 'audio',\r\n accepts: ['mp3', 'wav', 'ogg'],\r\n handler: async (buffer, target) => {\r\n renderMusic(buffer, target)\r\n return VueWrapper(target)\r\n }\r\n },\r\n {\r\n parentType: 'officeOnline',\r\n accepts: ['officeOnline'],\r\n handler: async (url, target, type, name) => {\r\n renderOfficeOnline(url, target, type, name)\r\n return VueWrapper(target)\r\n }\r\n },\r\n // 不支持格式处理\r\n {\r\n parentType: 'error',\r\n accepts: ['error'],\r\n handler: async (buffer, target, type, name) => {\r\n renderError(buffer, target, type, name)\r\n return VueWrapper(target)\r\n }\r\n },\r\n // 找不到文件处理\r\n {\r\n parentType: 'notFind',\r\n accepts: ['notFind'],\r\n handler: async (url, target, type, name) => {\r\n renderNotFind(url, target, type, name)\r\n return VueWrapper(target)\r\n }\r\n }\r\n]\r\n\r\n// 获取类型从属关联关系集合\r\nexport const typeInfo = handlers.reduce((result, { parentType, accepts }) => {\r\n const types = result[parentType] || []\r\n result[parentType] = [...types, ...accepts]\r\n return result\r\n}, {})\r\n\r\n// 提取处理方法为对象键值对\r\nexport default handlers.reduce((result, { accepts, handler }) => {\r\n accepts.forEach((type) => (result[type] = handler))\r\n return result\r\n}, {})\r\n","/*\r\n * @Author: zhanghan\r\n * @Date: 2023-01-09 21:22:17\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-13 11:59:23\r\n * @Descripttion:\r\n */\r\nimport { atob } from './pollify'\r\nimport renders from './renders'\r\n\r\n/**\r\n * 文件对象转文件流\r\n * @param {object} file 文件对象\r\n */\r\nexport async function readBuffer(file) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n reader.onload = (loadEvent) => resolve(loadEvent.target.result)\r\n reader.onerror = (e) => reject(e)\r\n reader.readAsArrayBuffer(file)\r\n })\r\n}\r\n\r\n/**\r\n * 文件流转base64\r\n * @param {object} buffer 文件流\r\n */\r\nexport async function readDataURL(buffer) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n reader.onload = (loadEvent) => resolve(loadEvent.target.result)\r\n reader.onerror = (e) => reject(e)\r\n reader.readAsDataURL(new Blob([buffer]))\r\n })\r\n}\r\n\r\n/**\r\n * 文件流转utf8文本\r\n * @param {object} buffer 文件流\r\n */\r\nexport async function readText(buffer) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n reader.onload = (loadEvent) => resolve(loadEvent.target.result)\r\n reader.onerror = (e) => reject(e)\r\n reader.readAsText(new Blob([buffer]), 'utf-8')\r\n })\r\n}\r\n\r\n/**\r\n * 获取文件后缀\r\n * @param {string} name 文件名\r\n */\r\nexport function getExtend(name) {\r\n // 移除 URL 参数和哈希片段\r\n const cleanName = name.split('?')[0].split('#')[0]\r\n const dot = cleanName.lastIndexOf('.')\r\n return dot === -1 ? '' : cleanName.substring(dot + 1)\r\n}\r\n\r\n/**\r\n * 文件下载函数\r\n * @param {string | blob} file 文件,支持传入url/blob/base64格式\r\n * @param {string} name 文件名称,需要带后缀如:abc.jpg(为url可不传入,会自动获取文件名)\r\n */\r\nexport function fileDownload(file, name) {\r\n if (!file) {\r\n throw new Error('文件不能为空')\r\n }\r\n\r\n // file是url\r\n if (typeof file === 'string' && file.indexOf('http') > -1) {\r\n name = name ? name : getUrlFileName(file)\r\n const link = document.createElement('a')\r\n link.style.display = 'none'\r\n link.href = file\r\n link.target = '_blank'\r\n link.setAttribute('download', name) // 自定义下载文件名(如exemple.txt)\r\n document.body.appendChild(link)\r\n link.click()\r\n return\r\n }\r\n\r\n if (!name) {\r\n throw new Error('文件名不能为空')\r\n }\r\n\r\n // file是base64先转blob\r\n if (typeof file === 'string') {\r\n file = base64toBlob(file)\r\n }\r\n\r\n // file是blob\r\n if (window.navigator.msSaveBlob) {\r\n window.navigator.msSaveOrOpenBlob(file, name)\r\n } else {\r\n const url = window.URL.createObjectURL(new Blob([file]))\r\n const link = document.createElement('a')\r\n link.style.display = 'none'\r\n link.href = url\r\n link.target = '_blank'\r\n link.setAttribute('download', name) // 自定义下载文件名(如exemple.txt)\r\n document.body.appendChild(link)\r\n link.click()\r\n }\r\n}\r\n\r\n/**\r\n * Base64 转 Blob\r\n * @param {string} base64String Blob格式数据\r\n */\r\nexport function base64toBlob(base64String) {\r\n var arr = base64String.split(','),\r\n mime = arr[0].match(/:(.*?);/)[1],\r\n bstr = atob(arr[1]),\r\n n = bstr.length,\r\n u8arr = new Uint8Array(n)\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n)\r\n }\r\n return new Blob([u8arr], {\r\n type: mime\r\n })\r\n}\r\n\r\n/**\r\n * 获取链接文件名+后缀\r\n * @param {string} url 文件地址\r\n */\r\nexport function getUrlFileName(url) {\r\n if (!url) return ''\r\n const file = url.split('/')\r\n return file[file.length - 1] || ''\r\n}\r\n\r\n/**\r\n * 根据文件类型渲染对应容器\r\n * @param {buffer} buffer 文件流\r\n * @param {buffer} target 渲染目标元素\r\n * @param {buffer} type 文件类型\r\n * @param {buffer} name 文件名称\r\n **/\r\nexport async function render(buffer, target, type, name) {\r\n const handler = renders[type]\r\n if (handler) {\r\n return handler(...arguments)\r\n }\r\n return renders.error(...arguments)\r\n}\r\n\r\n/**\r\n * 使用时间戳为Blob文件生成文件名\r\n * @param {Blob} blob 文件\r\n **/\r\nexport function generateFilenameFromBlob(blob) {\r\n // MIME类型与扩展名映射表\r\n const mimes = {\r\n // 富文本文档\r\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx',\r\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'pptx',\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',\r\n 'application/pdf': 'pdf',\r\n\r\n // 图片\r\n 'image/gif': 'gif',\r\n 'image/jpeg': 'jpg',\r\n 'image/jpg': 'jpg',\r\n 'image/png': 'png',\r\n 'image/bmp': 'bmp',\r\n 'image/tiff': 'tiff',\r\n 'image/tif': 'tif',\r\n 'image/svg+xml': 'svg',\r\n\r\n // 文本与代码\r\n 'text/plain': 'txt',\r\n 'application/json': 'json',\r\n 'text/javascript': 'js',\r\n 'application/javascript': 'js',\r\n 'text/css': 'css',\r\n 'text/html': 'html',\r\n 'text/markdown': 'md',\r\n 'application/xml': 'xml',\r\n 'text/xml': 'xml',\r\n 'text/x-java-source': 'java',\r\n 'text/x-python': 'py',\r\n 'text/typescript': 'ts',\r\n 'text/tsx': 'tsx',\r\n 'text/jsx': 'jsx',\r\n 'text/x-log': 'log',\r\n\r\n // 视频\r\n 'video/mp4': 'mp4',\r\n 'video/webm': 'webm',\r\n 'video/ogg': 'ogv',\r\n\r\n // 音频\r\n 'audio/mpeg': 'mp3',\r\n 'audio/mp3': 'mp3',\r\n 'audio/wav': 'wav',\r\n 'audio/ogg': 'ogg',\r\n }\r\n\r\n // 取出扩展名,如果找不到则用 bin 作为默认\r\n const ext = mimes[blob.type]\r\n\r\n if (!ext) {\r\n throw new Error('不支持该类型的文件')\r\n }\r\n\r\n // 格式化时间戳(YYYYMMDD_HHmmss)\r\n const timestamp = new Date().toISOString()\r\n .replace(/[-:T]/g, '') // 去掉 - : T\r\n .split('.')[0] // 去掉毫秒\r\n .replace('Z', '')\r\n\r\n // 拼出文件名\r\n return `${timestamp}.${ext}`\r\n}\r\n","<template>\r\n <div class=\"vue-file-viewer\" id=\"vue-file-viewer\">\r\n <div class=\"banner\" v-if=\"options.shoHead\">\r\n <div class=\"file-select\">\r\n <button\r\n type=\"button\"\r\n style=\"margin-right: 20px\"\r\n @click.stop=\"isUrl = !isUrl\"\r\n >\r\n 【点击切换】{{ isUrl ? '上传预览' : '输入网址' }}\r\n </button>\r\n <div class=\"overlay\">\r\n <span v-if=\"isUrl\" style=\"white-space: pre;\">\r\n <div style=\"margin-bottom: 10px;\">\r\n <select\r\n v-model=\"selectedFileType\"\r\n @change=\"handleFileTypeChange\"\r\n style=\"height: 30px; border-radius: 6px; margin-right: 10px; padding: 0 5px;\"\r\n >\r\n <option value=\"\">请选择文件类型</option>\r\n <option value=\"docx\">Word文档</option>\r\n <option value=\"pptx\">PPT文档</option>\r\n <option value=\"pdf\">PDF文档</option>\r\n <option value=\"png\">PNG图片</option>\r\n <option value=\"mp4\">MP4视频</option>\r\n <option value=\"mp3\">MP3音频</option>\r\n </select>\r\n </div>\r\n <input\r\n type=\"text\"\r\n v-model=\"inputUrl\"\r\n placeholder=\"请输入浏览文件地址\"\r\n />\r\n <button\r\n type=\"button\"\r\n @click.stop=\"loadFromUrl(inputUrl, { shoHead: true })\"\r\n >\r\n 预览\r\n </button>\r\n <button\r\n type=\"button\"\r\n @click.stop=\"clearSelection\"\r\n style=\"background: #f5f5f5; color: #333; margin-left: 5px;\"\r\n >\r\n 清除\r\n </button>\r\n </span>\r\n <span v-else>\r\n <input type=\"file\" @change=\"handleChange\" />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ctrol_btn\" v-if=\"!loading && options.showCtrolBtn\">\r\n <span v-show=\"options.showScaleBtn\">\r\n <span class=\"scale_add\" @click=\"scaleBtn('add')\"></span>\r\n <span class=\"scale_reduce\" @click=\"scaleBtn('reduce')\"></span>\r\n </span>\r\n <span v-show=\"options.showDownLoadBtn\">\r\n <span\r\n v-show=\"options.showScaleBtn\"\r\n style=\"padding:0 15px;color:rgba(255,255,255,0.3)\"\r\n >\r\n |\r\n </span>\r\n <span\r\n class=\"download\"\r\n @click=\"fileDownload(inputUrl || iframeFile, uploadFileName)\"\r\n >\r\n 下载\r\n </span>\r\n </span>\r\n </div>\r\n <div style=\"height: 100%;width: 100%;\">\r\n <div v-show=\"loading\" class=\"loading\">正在加载中,请耐心等待...</div>\r\n <div\r\n v-show=\"!loading\"\r\n ref=\"output\"\r\n class=\"output\"\r\n style=\"height: 100%;width: 100%;overflow: auto;transform-origin: top left;\"\r\n :style=\"{\r\n transform: `scale(${clientZoom})`,\r\n height: (1 / clientZoom) * 100 + '%',\r\n width: (1 / clientZoom) * 100 + '%'\r\n }\"\r\n ></div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { getExtend, readBuffer, render, fileDownload, generateFilenameFromBlob } from './util'\r\nimport EventBus from './util/EventBus'\r\nimport { typeInfo } from './renders'\r\nimport renders from './renders'\r\nimport { parse } from 'qs'\r\nimport axios from 'axios'\r\n\r\n/**\r\n * 支持嵌入式显示,基于postMessage支持跨域\r\n * 示例代码:\r\n *\r\n */\r\nexport default {\r\n name: 'VueFileViewer',\r\n props: {\r\n // 上传的地址\r\n fileUrl: {\r\n type: [String, Object, Blob],\r\n default: ''\r\n },\r\n // 是否显示头部\r\n shoHead: {\r\n type: Boolean,\r\n default: false\r\n },\r\n // 是否显示控制按钮\r\n showCtrolBtn: {\r\n type: Boolean,\r\n default: true\r\n },\r\n // 是否显示放大缩小按钮\r\n showScaleBtn: {\r\n type: Boolean,\r\n default: true\r\n },\r\n // 是否显示下载按钮\r\n showDownLoadBtn: {\r\n type: Boolean,\r\n default: true\r\n },\r\n // 是否开启使用内置的微软文档在线访问接口\r\n useOfficeMicroOnline: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data() {\r\n return {\r\n // 是否默认为输入网址\r\n isUrl: true,\r\n // input输入的url\r\n inputUrl: '',\r\n // 当前浏览的文件拓展名\r\n extend: '',\r\n // 上传文件名\r\n uploadFileName: '',\r\n // 通过iframe传入的文件\r\n iframeFile: '',\r\n // 加载状态跟踪\r\n loading: false,\r\n options: {\r\n // 是否显示头部,当基于消息机制渲染,将隐藏\r\n shoHead: false,\r\n // 是否显示控制按钮\r\n showCtrolBtn: true,\r\n // 是否显示放大缩小按钮\r\n showScaleBtn: true,\r\n // 是否显示下载按钮\r\n showDownLoadBtn: true,\r\n // 是否开启使用内置的微软文档在线访问接口\r\n useOfficeMicroOnline: false\r\n },\r\n // 安全宽度(低于此内容无法展示全)\r\n safeWith: 1400,\r\n // 当前文档的缩放比例\r\n clientZoom: 1,\r\n // 用于存储选择的文件类型\r\n selectedFileType: '',\r\n // 文件类型示例URL配置\r\n fileTypeExamples: {\r\n mp3: window.location.origin + '/fileTest/mp3.mp3',\r\n mp4: window.location.origin + '/fileTest/mp4.mp4',\r\n pdf: window.location.origin + '/fileTest/pdf.pdf',\r\n png: window.location.origin + '/fileTest/pic.png',\r\n pptx: window.location.origin + '/fileTest/ppt.pptx',\r\n docx: window.location.origin + '/fileTest/word.docx'\r\n }\r\n }\r\n },\r\n mounted() {\r\n // 作为iframe使用时,允许使用预留的消息机制发送二进制数据,必须在url后添加?name=xxx.xxx&from=xxx\r\n const {\r\n from,\r\n name,\r\n fileUrl,\r\n shoHead,\r\n useOfficeMicroOnline,\r\n showCtrolBtn,\r\n showScaleBtn,\r\n showDownLoadBtn\r\n } = parse(location.search.substring(1))\r\n\r\n const opt1 = {\r\n shoHead: shoHead === 'true' ? true : false,\r\n useOfficeMicroOnline: useOfficeMicroOnline === 'true' ? true : false,\r\n showCtrolBtn: showCtrolBtn === 'false' ? false : true,\r\n showScaleBtn: showScaleBtn === 'false' ? false : true,\r\n showDownLoadBtn: showDownLoadBtn === 'false' ? false : true\r\n }\r\n\r\n if (from) {\r\n window.addEventListener('message', (event) => {\r\n const { origin, data: blob } = event\r\n if (origin === from && blob instanceof Blob) {\r\n // 构造响应,自动渲染\r\n const file = new File([blob], name, {})\r\n this.iframeFile = file\r\n this.loadFromBlob(file, opt1)\r\n }\r\n })\r\n }\r\n\r\n // 作为iframe使用时,允许通过链接传参获取文件链接数据\r\n if (fileUrl) {\r\n // 如果 fileUrl 是相对路径,转换为完整 URL\r\n const fullUrl = fileUrl.startsWith('http') \r\n ? fileUrl \r\n : window.location.origin + fileUrl\r\n this.iframeFile = fullUrl\r\n this.loadFromUrl(fullUrl, opt1)\r\n } else {\r\n const opt2 = {\r\n shoHead: this.shoHead,\r\n useOfficeMicroOnline: this.useOfficeMicroOnline,\r\n showCtrolBtn: this.showCtrolBtn,\r\n showScaleBtn: this.showScaleBtn,\r\n showDownLoadBtn: this.showDownLoadBtn\r\n }\r\n // 作为组件使用时,允许接收不同格式的文件数据(链接 or file)\r\n typeof this.fileUrl === 'string'\r\n ? this.loadFromUrl(this.fileUrl, opt2)\r\n : this.loadFromBlob(this.fileUrl, opt2)\r\n }\r\n\r\n // 窗体大小改变时自动计算缩放比例\r\n window.onload = window.onresize = () => {\r\n this.bodyScale()\r\n }\r\n\r\n EventBus.$on('fileLoaded', (event) => {\r\n this.$emit('fileLoaded', event)\r\n // Using postMessage to notify parent window\r\n window.parent.postMessage({ type: 'fileLoaded', data: event }, '*')\r\n })\r\n },\r\n methods: {\r\n fileDownload,\r\n // 设置缩放比例\r\n scaleBtn(type) {\r\n if (this.clientZoom <= 0.1 && type !== 'add') return\r\n type === 'add' ? (this.clientZoom += 0.1) : (this.clientZoom -= 0.1)\r\n },\r\n // 自动缩放比例\r\n bodyScale() {\r\n const devicewidth = document.getElementById('vue-file-viewer').clientWidth\r\n const scale = devicewidth / this.safeWith // 分母——设计稿的尺寸\r\n this.clientZoom = scale\r\n },\r\n // 从url加载\r\n loadFromUrl(url, options = {}) {\r\n // 保存配置项\r\n this.options = Object.assign(this.options, options)\r\n\r\n // 校验链接是否合法\r\n if (!url) return\r\n\r\n this.loading = true\r\n this.inputUrl = url\r\n // 从 URL 提取文件名\r\n this.uploadFileName = url.substr(url.lastIndexOf('/') + 1).split('?')[0]\r\n // 提取扩展名(仅用于判断是否为 Office 文件)\r\n const extend = getExtend(this.uploadFileName).toLowerCase()\r\n \r\n // 判断是否为office文件\r\n const isOffice = typeInfo.office.find(\r\n (item) => item.indexOf(extend) > -1\r\n )\r\n // 判断是否需要使用外部微软第三方office在线浏览的方式\r\n if (options.useOfficeMicroOnline && isOffice) {\r\n // 展示微软第三方office在线浏览\r\n renders['officeOnline'](\r\n url,\r\n this.$refs.output,\r\n 'officeOnline',\r\n this.uploadFileName\r\n ).finally(() => {\r\n this.loading = false\r\n })\r\n return\r\n }\r\n // 内部渲染的方式\r\n // 下载文件并转为 File 对象\r\n axios({\r\n url,\r\n method: 'get',\r\n responseType: 'blob'\r\n })\r\n .then(({ data }) => {\r\n // 创建 File 对象,使用从 URL 提取的文件名\r\n const file = new File([data], this.uploadFileName, {\r\n type: data.type || ''\r\n })\r\n this.handleChange({ target: { files: [file] } })\r\n })\r\n .finally(() => {\r\n this.loading = false\r\n })\r\n .catch(() => {\r\n console.error('文件下载失败')\r\n // 展示文件不存在\r\n renders['notFind'](\r\n url,\r\n this.$refs.output,\r\n extend,\r\n this.uploadFileName\r\n )\r\n })\r\n },\r\n // 从file文件流加载\r\n loadFromBlob(file, options = {}) {\r\n // 保存配置项\r\n this.options = Object.assign(this.options, options)\r\n \r\n // 如果 file 是 File 对象,保存文件名用于显示\r\n if (file.name) {\r\n this.uploadFileName = file.name\r\n this.inputUrl = file.name\r\n }\r\n\r\n this.handleChange({ target: { files: [file] } })\r\n },\r\n // 监听上传事件获取文件信息,并处理文件\r\n async handleChange(e) {\r\n this.loading = true\r\n try {\r\n const [file] = e.target.files\r\n const arrayBuffer = await readBuffer(file)\r\n this.loading = false\r\n await this.displayResult(arrayBuffer, file)\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n this.loading = false\r\n }\r\n },\r\n // 文件信息处理,对应文件渲染方法\r\n displayResult(buffer, file) {\r\n // 优先使用 File 对象的 name 属性\r\n const { name, type } = file\r\n let fileName = name\r\n let extend = ''\r\n \r\n // 1. 如果 File 对象有 name 属性,直接使用\r\n if (name) {\r\n fileName = name\r\n extend = getExtend(name).toLowerCase()\r\n } \r\n // 2. 否则使用已有的 uploadFileName\r\n else if (this.uploadFileName) {\r\n fileName = this.uploadFileName\r\n extend = getExtend(this.uploadFileName).toLowerCase()\r\n }\r\n // 3. 如果都没有,从 Blob 的 type 生成文件名\r\n else {\r\n fileName = generateFilenameFromBlob(file)\r\n extend = getExtend(fileName).toLowerCase()\r\n }\r\n \r\n // 4. 如果还是没有扩展名,尝试从 MIME type 获取\r\n if (!extend && type) {\r\n extend = type.split('/')[1] || ''\r\n }\r\n \r\n // 保存文件名\r\n this.uploadFileName = fileName\r\n \r\n // 生成新的dom\r\n const node = document.createElement('div')\r\n // 清空容器里的元素\r\n this.$refs.output.innerHTML = ''\r\n // 容器追加新的子元素\r\n const child = this.$refs.output.appendChild(node)\r\n \r\n // 调用对应渲染方法进行渲染\r\n return new Promise((resolve, reject) =>\r\n render(buffer, child, extend, fileName)\r\n .then(() => {\r\n // 渲染结束调整缩放比例\r\n this.$nextTick(() => {\r\n // 对音频、视频和图片类型特殊处理缩放比例\r\n const isAudio = typeInfo.audio && typeInfo.audio.includes(extend)\r\n const isVideo = typeInfo.video && typeInfo.video.includes(extend)\r\n const isImage = typeInfo.image && typeInfo.image.includes(extend)\r\n\r\n if (isAudio || isVideo) {\r\n // 对于音频、视频,固定缩放比例为1,不根据屏幕宽度自动缩放\r\n this.clientZoom = 1\r\n } else if (isImage) {\r\n //对于图片类型,固定缩放比例为0.7,不根据屏幕宽度自动缩放\r\n this.clientZoom = 0.7\r\n } else {\r\n // 其他类型使用正常的缩放计算\r\n this.bodyScale()\r\n }\r\n })\r\n resolve()\r\n })\r\n .catch(reject)\r\n )\r\n },\r\n // 处理文件类型选择的逻辑\r\n handleFileTypeChange() {\r\n if (\r\n this.selectedFileType &&\r\n this.fileTypeExamples[this.selectedFileType]\r\n ) {\r\n // 根据选择的文件类型填充对应的示例URL\r\n this.inputUrl = this.fileTypeExamples[this.selectedFileType]\r\n\r\n // 直接自动触发预览\r\n this.loadFromUrl(this.inputUrl, { shoHead: true })\r\n } else {\r\n // 如果没有选择文件类型或没有对应的示例URL,清空输入框\r\n this.inputUrl = ''\r\n }\r\n },\r\n\r\n // 清除选择和输入框\r\n clearSelection() {\r\n this.selectedFileType = ''\r\n this.inputUrl = ''\r\n // 清空输出区域\r\n if (this.$refs.output) {\r\n this.$refs.output.innerHTML = ''\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" src=\"./index.scss\" scoped></style>\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=42cfa904&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.scss?vue&type=style&index=0&id=42cfa904&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42cfa904\",\n null\n \n)\n\nexport default component.exports","/*\r\n * @Author: zhanghan\r\n * @Date: 2023-01-04 13:49:25\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-13 13:15:34\r\n * @Descripttion: 注册组件\r\n */\r\nimport VueFileViewer from './index.vue'\r\n\r\nVueFileViewer.install = (Vue) =>\r\n Vue.component(VueFileViewer.name, VueFileViewer)\r\n\r\nexport { VueFileViewer }\r\nexport default VueFileViewer\r\n","<!--\r\n * @Author: zhanghan\r\n * @Date: 2022-11-24 00:16:12\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-13 13:13:16\r\n * @Descripttion: APP主入口文件\r\n-->\r\n<template>\r\n <div>\r\n <vue-file-viewer shoHead/>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { VueFileViewer } from '../packages'\r\nexport default {\r\n components: {\r\n VueFileViewer\r\n },\r\n data() {\r\n return {}\r\n },\r\n methods: {}\r\n}\r\n</script>\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=01d9b639&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*\r\n * @Author: zhanghan\r\n * @Date: 2022-11-27 19:21:21\r\n * @LastEditors: zhanghan\r\n * @LastEditTime: 2023-01-13 13:13:14\r\n * @Descripttion: 主入口文件\r\n */\r\n\r\nimport Vue from 'vue'\r\nimport App from './App.vue'\r\n\r\n// import VueFileViewer from '../packages'\r\n// Vue.use(VueFileViewer)\r\n\r\nVue.config.productionTip = false\r\n\r\nnew Vue({\r\n render: (h) => h(App)\r\n}).$mount('#app')\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pptx.vue?vue&type=style&index=0&id=8d0788d2&prod&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageViewer.vue?vue&type=style&index=0&id=5753c112&prod&scoped=true&lang=css&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./index.scss?vue&type=style&index=0&id=42cfa904&prod&lang=scss&scoped=true&\""],"sourceRoot":""}
|