@work-zhanguo/light-file-preview 0.0.1
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/LICENSE +661 -0
- package/README.md +122 -0
- package/dist/DocxRenderer-B8Ed3qFw.js +42 -0
- package/dist/PdfRenderer-CYtwJLrP.js +57 -0
- package/dist/SheetRenderer-C9AKQiKN.js +77 -0
- package/dist/TextRenderer-W4uPsa5O.js +59 -0
- package/dist/UnsupportedRenderer-BpyBTIIE.js +32 -0
- package/dist/docx-preview-B2OPGnfm.js +5525 -0
- package/dist/index-BlBE9ZR-.js +304 -0
- package/dist/light-file-preview.js +7 -0
- package/dist/light-file-preview.umd.cjs +209 -0
- package/dist/marked.esm-toXckLRC.js +1577 -0
- package/dist/pdf-B2JYpzlX.js +14597 -0
- package/dist/purify.es-D5dazAgD.js +553 -0
- package/dist/standalone/light-file-preview.iife.js +236 -0
- package/dist/standalone/style.css +1 -0
- package/dist/style.css +1 -0
- package/dist/text-CcxmtFce.js +24 -0
- package/dist/types/App.vue.d.ts +2 -0
- package/dist/types/DocsApp.vue.d.ts +2 -0
- package/dist/types/components/FilePreview.vue.d.ts +34 -0
- package/dist/types/components/renderers/DocxRenderer.vue.d.ts +12 -0
- package/dist/types/components/renderers/PdfRenderer.vue.d.ts +13 -0
- package/dist/types/components/renderers/SheetRenderer.vue.d.ts +14 -0
- package/dist/types/components/renderers/TextRenderer.vue.d.ts +15 -0
- package/dist/types/components/renderers/UnsupportedRenderer.vue.d.ts +6 -0
- package/dist/types/constants/file.d.ts +12 -0
- package/dist/types/docs-main.d.ts +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/main.d.ts +1 -0
- package/dist/types/standalone-api.d.ts +17 -0
- package/dist/types/standalone.d.ts +6 -0
- package/dist/types/types.d.ts +17 -0
- package/dist/types/utils/download.d.ts +1 -0
- package/dist/types/utils/source.d.ts +9 -0
- package/dist/types/utils/text.d.ts +3 -0
- package/dist/types/vue2.d.ts +8 -0
- package/dist/vue2/DocxRenderer-IkLQeCjg.js +42 -0
- package/dist/vue2/PdfRenderer-DmgMRpqS.js +57 -0
- package/dist/vue2/SheetRenderer-CuAyFgj9.js +77 -0
- package/dist/vue2/TextRenderer-Bxqs7APd.js +59 -0
- package/dist/vue2/UnsupportedRenderer-Cs2uPl_6.js +31 -0
- package/dist/vue2/docx-preview-B2OPGnfm.js +5525 -0
- package/dist/vue2/light-file-preview-vue2.js +5 -0
- package/dist/vue2/light-file-preview-vue2.umd.cjs +236 -0
- package/dist/vue2/marked.esm-toXckLRC.js +1577 -0
- package/dist/vue2/pdf-B2JYpzlX.js +14597 -0
- package/dist/vue2/purify.es-D5dazAgD.js +553 -0
- package/dist/vue2/text-CcxmtFce.js +24 -0
- package/dist/vue2/vue2-CzAkhodr.js +6206 -0
- package/dist/vue2/xlsx-CZNBZqms.js +24774 -0
- package/dist/xlsx-CZNBZqms.js +24774 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--lfp-bg: #eef6ff;--lfp-panel: rgba(255, 255, 255, .84);--lfp-panel-solid: rgba(255, 255, 255, .96);--lfp-border: rgba(57, 84, 130, .16);--lfp-text: #10233d;--lfp-text-subtle: #59708c;--lfp-primary: #118ab2;--lfp-primary-strong: #2667ff;--lfp-accent: #36c9a7;--lfp-primary-soft: rgba(17, 138, 178, .12);--lfp-hero: linear-gradient(135deg, #2667ff 0%, #118ab2 52%, #36c9a7 100%);--lfp-hero-soft: linear-gradient(135deg, rgba(38, 103, 255, .14), rgba(17, 138, 178, .1) 48%, rgba(54, 201, 167, .14));--lfp-shadow: 0 28px 80px rgba(31, 64, 121, .16);--lfp-shadow-soft: 0 18px 44px rgba(31, 64, 121, .1)}*{box-sizing:border-box}body{margin:0;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:radial-gradient(circle at 12% 8%,rgba(38,103,255,.22),transparent 24%),radial-gradient(circle at 88% 14%,rgba(54,201,167,.2),transparent 22%),radial-gradient(circle at 50% 100%,rgba(17,138,178,.14),transparent 28%),linear-gradient(180deg,#f4f9ff,#edf7ff 44%,#f7fffd);color:var(--lfp-text)}button,input,textarea,select{font:inherit}.landing-shell{position:relative;min-height:100vh;padding:24px;overflow:hidden;background:radial-gradient(circle at 18% 0%,rgba(59,130,246,.32),transparent 30%),radial-gradient(circle at 84% 8%,rgba(125,211,252,.26),transparent 26%),linear-gradient(180deg,#07111f,#091423);color:#eef6ff;animation:landingBaseShift 12s ease-in-out infinite}.landing-shell:before,.landing-shell:after{content:"";position:absolute;inset:auto;border-radius:999px;pointer-events:none;filter:blur(34px);opacity:.78}.landing-shell:before{top:-2%;left:-14%;width:620px;height:620px;background:radial-gradient(circle,#3b82f67a,#3b82f62e 34%,#3b82f600 74%);animation:landingGlowFloat 8s ease-in-out infinite}.landing-shell:after{right:-10%;bottom:-4%;width:560px;height:560px;background:radial-gradient(circle,#67e8f96b,#67e8f924 34%,#67e8f900 76%);animation:landingGlowFloatAlt 9s ease-in-out infinite}.landing-topbar{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:16px;max-width:1280px;margin:0 auto}.brand-mark{display:inline-flex;align-items:center;gap:10px;padding:8px 12px;border-radius:999px;background:#ffffff08;border:1px solid rgba(125,211,252,.08);color:#eef6ffd1;font-size:13px}.brand-mark--link{text-decoration:none}.brand-mark__dot{width:10px;height:10px;border-radius:999px;background:linear-gradient(135deg,#56ccf2,#2f80ed);box-shadow:0 0 18px #56ccf2bf}.social-links{display:flex;gap:10px}.social-link{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:12px;background:#ffffff08;border:1px solid rgba(125,211,252,.08);color:#dcecffd1;transition:transform .2s ease,border-color .2s ease,background .2s ease}.social-link:hover{transform:translateY(-2px);border-color:#56ccf24d;background:#ffffff14}.social-link--text{width:auto;padding:0 14px;text-decoration:none;font-size:13px;font-weight:600}.social-link svg{width:18px;height:18px;fill:currentColor}.landing-main{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100vh - 90px);max-width:820px;margin:0 auto;text-align:center}.landing-main:before{content:"";position:absolute;top:-2%;left:50%;width:720px;height:280px;transform:translate(-50%);background:radial-gradient(circle,#7dd3fc42,#7dd3fc1f 34%,#7dd3fc00 76%);filter:blur(34px);pointer-events:none;animation:landingGlowPulse 5.5s ease-in-out infinite}.landing-main:after{content:none}.landing-title{margin:0;font-size:clamp(40px,7vw,68px);line-height:1;letter-spacing:-.04em;background:linear-gradient(90deg,#f8fbff,#7cecff 18%,#fff 34%,#4f8cff 52%,#fff,#7cecff,#f8fbff);background-size:260% auto;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 10px rgba(124,236,255,.18));animation:landingTitleShine 5.2s ease-in-out infinite}.landing-subtitle{max-width:420px;margin:12px auto 0;color:#dcecff9e;font-size:15px;line-height:1.6}.upload-panel{width:min(680px,100%);margin-top:24px;padding:30px 28px 24px;border-radius:24px;border:1px solid rgba(94,170,255,.22);background:linear-gradient(180deg,#101c2ef5,#0b1422f0),radial-gradient(circle at top,rgba(86,204,242,.12),transparent 38%);box-shadow:0 24px 70px #00000047,inset 0 1px #ffffff0d;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.upload-panel.is-dragging{transform:translateY(-1px);border-color:#56ccf26b;box-shadow:0 28px 76px #0000004d,0 0 0 1px #56ccf21f}.upload-panel__input{display:none}.upload-panel__icon{display:inline-flex;align-items:center;justify-content:center;width:58px;height:58px;border-radius:18px;margin:0 auto 16px;background:linear-gradient(135deg,#56ccf22e,#2f80ed2e);box-shadow:0 12px 30px #2f80ed29}.upload-panel__icon svg{width:24px;height:24px;fill:#8adfff}.upload-panel__title{margin:0;font-size:clamp(24px,4vw,32px);line-height:1.1}.upload-panel__desc{margin:10px 0 0;color:#dcecff8f;font-size:14px}.upload-panel__actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:20px}.landing-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:18px}.upload-panel__summary{margin:16px 0 0;color:#dcecffb8;font-size:13px}.tag-list{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;max-width:760px;margin:18px auto 0}.tag-item{padding:8px 12px;border-radius:999px;border:1px solid rgba(125,211,252,.12);background:#ffffff0a;color:#dcecffa3;font-size:12px}.tag-item.is-active{border-color:#56ccf257;background:linear-gradient(135deg,#56ccf22e,#2f80ed2e);color:#f4fbff}.upload-panel__tip{max-width:760px;margin:16px auto 0;color:#dcecff70;font-size:12px;line-height:1.6}.docs-shell{min-height:100vh;padding:24px 20px 64px;background:radial-gradient(circle at 14% 0%,rgba(59,130,246,.18),transparent 24%),linear-gradient(180deg,#08111d,#0b1524);color:#eef6ff}.docs-topbar{margin-bottom:28px}.docs-page{width:min(1240px,100%);margin:0 auto;display:grid;grid-template-columns:260px minmax(0,1fr);gap:28px}.docs-sidebar{position:sticky;top:24px;align-self:start;padding:22px 18px;border-radius:22px;border:1px solid rgba(125,211,252,.1);background:linear-gradient(180deg,#ffffff0d,#ffffff08),#ffffff05;box-shadow:0 18px 44px #00000029}.docs-page__kicker{margin:0;color:#67e8f9;font-size:12px;text-transform:uppercase;letter-spacing:.18em}.docs-page__title{margin:10px 0 0;color:#f8fbff;font-size:clamp(28px,4vw,42px);line-height:1.08}.docs-page__lead{max-width:220px;margin:14px 0 0;color:#c4daf4b3;line-height:1.8;font-size:14px}.docs-page__content{display:flex;flex-direction:column;gap:20px;width:min(980px,100%)}.docs-nav{display:flex;flex-direction:column;gap:8px;margin-top:22px}.docs-nav a{padding:10px 12px;border-radius:12px;color:#c4daf4db;text-decoration:none;transition:background .2s ease,color .2s ease,transform .2s ease}.docs-nav a:hover{background:#ffffff14;color:#fff;transform:translate(2px)}.docs-section{padding:26px;border-radius:22px;border:1px solid rgba(125,211,252,.1);background:linear-gradient(180deg,#ffffff0d,#ffffff08),#ffffff05;box-shadow:0 18px 44px #00000024}.docs-section__eyebrow{margin:0 0 10px;color:#7cecff;font-size:12px;letter-spacing:.16em;text-transform:uppercase}.docs-section h2{margin:0 0 14px;font-size:28px;color:#f8fbff;line-height:1.18}.docs-section p{margin:0;color:#bdd2ecd1;line-height:1.8}.docs-section__lead{max-width:760px;color:#d6e7fcf0!important;font-size:16px}.docs-section p+p{margin-top:10px}.docs-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px}.docs-grid--compact{grid-template-columns:repeat(2,minmax(0,1fr))}.docs-card{padding:18px;border-radius:18px;border:1px solid rgba(125,211,252,.1);background:#ffffff09;text-align:left}.docs-card h3{margin:0 0 8px;font-size:16px;color:#f7fbff}.docs-card p{margin:0;color:#b4cae6d1;line-height:1.65;font-size:14px}.docs-tag-group{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.docs-tag{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid rgba(124,236,255,.16);background:linear-gradient(135deg,#7cecff14,#3b82f614);color:#dff8ff;font-size:13px;font-weight:600}.docs-tag--active{border-color:#7cecff4d;background:linear-gradient(135deg,#7cecff2e,#3b82f62e);color:#f5fcff;box-shadow:0 10px 24px #3b82f629}.docs-code{margin-top:16px;overflow:hidden;border-radius:18px;border:1px solid rgba(125,211,252,.12);background:#060e1ab8}.docs-code__title{padding:12px 14px;border-bottom:1px solid rgba(125,211,252,.1);color:#aecaebd1;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.docs-code pre{margin:0;padding:16px;overflow:auto;color:#dbeafe;font-family:SFMono-Regular,JetBrains Mono,monospace;line-height:1.7;text-align:left}.docs-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.docs-feature-card{padding:16px;border-radius:16px;border:1px solid rgba(125,211,252,.08);background:#ffffff08}.docs-feature-card--accent{border-color:#67e8f938;background:linear-gradient(135deg,#67e8f914,#3b82f60f),#ffffff08}.docs-feature-card h3{margin:0 0 8px;color:#f8fbff;font-size:15px}.docs-feature-card p{margin:0;font-size:14px;line-height:1.65;color:#b4cae6d6}.docs-open-source{margin-top:20px}.docs-open-source h3{margin:0 0 12px;color:#f7fbff;font-size:16px}.docs-open-source__links{display:flex;flex-wrap:wrap;gap:10px}.docs-open-source__links a{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border-radius:999px;text-decoration:none;color:#7cecff;border:1px solid rgba(124,236,255,.16);background:#ffffff08;transition:transform .2s ease,border-color .2s ease,color .2s ease,background .2s ease}.docs-open-source__links a:hover{transform:translateY(-1px);border-color:#7cecff47;color:#f3fcff;background:#ffffff0d}.docs-list{margin:0;padding-left:18px;color:#c6dbf3db;line-height:1.8}.docs-list li+li{margin-top:6px}.upload-button{border:1px solid transparent;border-radius:999px;min-width:132px;padding:11px 16px;background:linear-gradient(135deg,#56ccf2,#2f80ed);color:#07111f;font-weight:600;cursor:pointer;border-color:transparent;box-shadow:0 12px 28px #2f80ed38;transition:transform .2s ease,box-shadow .2s ease,background .2s ease,opacity .2s ease}.upload-button:hover{transform:translateY(-1px);box-shadow:0 16px 34px #2f80ed47}.upload-button.is-secondary{background:linear-gradient(135deg,#67e8f9,#3b82f6);color:#07111f;border-color:transparent;box-shadow:0 14px 34px #3b82f63d}.upload-button.is-accent{background:linear-gradient(135deg,#7c3aed,#2563eb);color:#f8fbff;border-color:transparent;box-shadow:0 16px 38px #6366f147}.upload-button.is-muted{background:#ffffff0f;color:#eef6ff;border-color:#7dd3fc1f;box-shadow:none}.upload-button:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.preview-page{min-height:100vh;padding:0;background:#fff}.preview-page__header{display:flex;align-items:center;justify-content:flex-start;padding:16px 20px;border-bottom:1px solid rgba(57,84,130,.08);background:#fff}.preview-page__body{padding:18px}.docs-section code{padding:2px 6px;border-radius:8px;background:#ffffff0f;color:#7cecff;font-family:SFMono-Regular,JetBrains Mono,monospace}.lfp-button,.lfp-sheet__tab{border:1px solid rgba(81,114,170,.12);border-radius:999px;background:linear-gradient(180deg,#fffffffa,#f0f8fff2);color:var(--lfp-text);cursor:pointer;box-shadow:0 10px 24px #32579714;transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease,color .2s ease}.lfp-button{padding:10px 15px}.lfp-icon-button{width:40px;height:40px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:12px}.lfp-icon-button svg{width:18px;height:18px;fill:currentColor}.lfp-button:hover,.lfp-sheet__tab:hover{transform:translateY(-2px);border-color:#118ab242;box-shadow:0 14px 30px #2756a424}.lfp-button{border-color:transparent;background:var(--lfp-hero);color:#fff}.lfp-button:disabled{opacity:.45;cursor:not-allowed;transform:none}.lfp-wrapper{position:relative}.lfp-wrapper.is-dialog{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999999;display:flex;align-items:center;justify-content:center;padding:24px}.lfp-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:radial-gradient(circle at top,rgba(38,103,255,.16),transparent 30%),#0a162d70}.lfp-panel{position:relative;display:flex;flex-direction:column;min-height:420px;width:100%;background:linear-gradient(180deg,#ffffffe6,#f4fbffe0),var(--lfp-hero-soft);border:1px solid var(--lfp-border);border-radius:24px;overflow:hidden;box-shadow:var(--lfp-shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.lfp-wrapper.is-dialog .lfp-panel{max-width:min(1280px,100%);max-height:min(88vh,100%)}.lfp-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:18px 20px;border-bottom:1px solid var(--lfp-border);background:linear-gradient(180deg,#ffffffe0,#f1f9ffd1)}.lfp-toolbar__meta,.lfp-toolbar__actions{display:flex;gap:12px;align-items:center}.lfp-title{max-width:min(60vw,720px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-badge{padding:4px 10px;border-radius:999px;background:linear-gradient(135deg,#2667ff1f,#36c9a724);color:var(--lfp-primary-strong);font-size:12px;text-transform:uppercase}.lfp-button.is-ghost{background:linear-gradient(180deg,#ffffffe6,#f2f8ffdb);color:var(--lfp-text);border-color:var(--lfp-border)}.lfp-content{position:relative;flex:1;min-height:360px;padding:16px;overflow:auto}.lfp-loading,.lfp-error,.lfp-empty{display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;min-height:280px;text-align:center}@media(max-width:1024px){.docs-page{grid-template-columns:1fr}.docs-sidebar{position:static}.docs-page__lead{max-width:none}}@media(max-width:720px){.docs-shell,.landing-shell{padding:20px 16px 40px}.landing-topbar{align-items:flex-start;flex-direction:column}.docs-grid,.docs-feature-grid{grid-template-columns:1fr}.docs-section{padding:22px 18px}.docs-section h2{font-size:24px}}@keyframes landingTitleShine{0%{background-position:0% 50%;filter:drop-shadow(0 0 8px rgba(124,236,255,.14))}50%{background-position:100% 50%;filter:drop-shadow(0 0 16px rgba(124,236,255,.28)) drop-shadow(0 0 28px rgba(79,140,255,.22))}to{background-position:0% 50%;filter:drop-shadow(0 0 8px rgba(124,236,255,.14))}}.lfp-spinner{width:28px;height:28px;border:3px solid rgba(17,138,178,.16);border-top-color:var(--lfp-primary-strong);border-radius:50%;animation:lfp-spin .8s linear infinite}.lfp-document{background:linear-gradient(180deg,#fffffff0,#f5fbffe6),var(--lfp-hero-soft);border-radius:18px;border:1px solid rgba(57,84,130,.08);padding:16px;box-shadow:inset 0 1px #ffffffb8}.lfp-image,.lfp-media{display:block;max-width:100%;margin:0 auto;border-radius:18px;background:#ffffffb8}.lfp-image{object-fit:contain}.lfp-media{width:100%}.lfp-audio{width:100%;margin-top:32px}.lfp-code{margin:0;padding:20px;overflow:auto;background:linear-gradient(180deg,#0a1429fa,#0b1c36f5),linear-gradient(135deg,#2667ff29,#118ab214);color:#dbeafe;border-radius:16px;font-family:SFMono-Regular,JetBrains Mono,monospace;line-height:1.6;white-space:pre-wrap;word-break:break-word}.lfp-markdown{padding:12px;line-height:1.8}.lfp-markdown img{max-width:100%}.lfp-hint{margin:0 0 12px;color:var(--lfp-text-subtle);font-size:13px}.lfp-pdf{display:flex;flex-direction:column;gap:18px}.lfp-pdf-page{display:flex;justify-content:center}.lfp-pdf-page canvas{max-width:100%;height:auto;border-radius:12px;box-shadow:0 18px 40px #1f40791f;background:#fff}.lfp-docx{overflow:auto}.lfp-docx .docx-wrapper{background:transparent;padding:0}.lfp-sheet{display:flex;flex-direction:column;gap:12px}.lfp-sheet__tabs{display:flex;gap:8px;flex-wrap:wrap}.lfp-sheet__tab{padding:8px 14px}.lfp-sheet__tab.is-active{background:linear-gradient(135deg,#2667ff1f,#36c9a724);color:var(--lfp-primary-strong);border-color:#118ab22e}.lfp-sheet__table-wrap{overflow:auto;border-radius:12px;border:1px solid rgba(28,39,58,.08)}.lfp-sheet__table{width:100%;border-collapse:collapse;font-size:14px}.lfp-sheet__table td{min-width:120px;padding:10px 12px;border:1px solid rgba(28,39,58,.08);vertical-align:top}.lfp-fade-enter-active,.lfp-fade-leave-active{transition:opacity .2s ease}.lfp-fade-enter-from,.lfp-fade-leave-to{opacity:0}@keyframes lfp-spin{to{transform:rotate(360deg)}}@keyframes landingGlowFloat{0%,to{transform:translateZ(0) scale(1);opacity:.48}50%{transform:translate3d(110px,58px,0) scale(1.28);opacity:1}}@keyframes landingGlowFloatAlt{0%,to{transform:translateZ(0) scale(1);opacity:.38}50%{transform:translate3d(-108px,-64px,0) scale(1.32);opacity:.96}}@keyframes landingGlowPulse{0%,to{opacity:.38;transform:translate(-50%) scale(.94)}50%{opacity:.88;transform:translate(-50%) scale(1.14)}}@keyframes landingBeamSweep{0%{transform:translate3d(-34%,0,0) rotate(12deg);opacity:0}12%{opacity:.24}50%{transform:translate3d(102%,0,0) rotate(12deg);opacity:.78}88%{opacity:.18}to{transform:translate3d(136%,0,0) rotate(12deg);opacity:0}}@keyframes landingBaseShift{0%,to{background-position:0% 0%,100% 0%,0% 0%}50%{background-position:6% 2%,94% 6%,0% 0%}}@media(max-width:768px){.landing-shell,.preview-page{padding:16px 12px 24px}.preview-page{padding:0}.landing-topbar{align-items:flex-start}.landing-main{min-height:auto;padding-top:52px}.landing-title{font-size:48px}.landing-subtitle{font-size:15px}.landing-shell:before{width:420px;height:420px;left:-20%}.landing-shell:after{width:340px;height:340px;right:-18%}.landing-main:before{width:420px;height:180px}.landing-main:after{width:88%;left:-46%}.upload-panel{padding:24px 16px 20px}.landing-actions{gap:10px}.docs-page{grid-template-columns:1fr;padding:20px 12px 40px}.docs-sidebar{position:static}.docs-grid,.docs-feature-grid{grid-template-columns:1fr}.lfp-wrapper.is-dialog,.lfp-content{padding:12px}}
|
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--lfp-bg: #eef6ff;--lfp-panel: rgba(255, 255, 255, .84);--lfp-panel-solid: rgba(255, 255, 255, .96);--lfp-border: rgba(57, 84, 130, .16);--lfp-text: #10233d;--lfp-text-subtle: #59708c;--lfp-primary: #118ab2;--lfp-primary-strong: #2667ff;--lfp-accent: #36c9a7;--lfp-primary-soft: rgba(17, 138, 178, .12);--lfp-hero: linear-gradient(135deg, #2667ff 0%, #118ab2 52%, #36c9a7 100%);--lfp-hero-soft: linear-gradient(135deg, rgba(38, 103, 255, .14), rgba(17, 138, 178, .1) 48%, rgba(54, 201, 167, .14));--lfp-shadow: 0 28px 80px rgba(31, 64, 121, .16);--lfp-shadow-soft: 0 18px 44px rgba(31, 64, 121, .1)}*{box-sizing:border-box}body{margin:0;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:radial-gradient(circle at 12% 8%,rgba(38,103,255,.22),transparent 24%),radial-gradient(circle at 88% 14%,rgba(54,201,167,.2),transparent 22%),radial-gradient(circle at 50% 100%,rgba(17,138,178,.14),transparent 28%),linear-gradient(180deg,#f4f9ff,#edf7ff 44%,#f7fffd);color:var(--lfp-text)}button,input,textarea,select{font:inherit}.landing-shell{position:relative;min-height:100vh;padding:24px;overflow:hidden;background:radial-gradient(circle at 18% 0%,rgba(59,130,246,.32),transparent 30%),radial-gradient(circle at 84% 8%,rgba(125,211,252,.26),transparent 26%),linear-gradient(180deg,#07111f,#091423);color:#eef6ff;animation:landingBaseShift 12s ease-in-out infinite}.landing-shell:before,.landing-shell:after{content:"";position:absolute;inset:auto;border-radius:999px;pointer-events:none;filter:blur(34px);opacity:.78}.landing-shell:before{top:-2%;left:-14%;width:620px;height:620px;background:radial-gradient(circle,#3b82f67a,#3b82f62e 34%,#3b82f600 74%);animation:landingGlowFloat 8s ease-in-out infinite}.landing-shell:after{right:-10%;bottom:-4%;width:560px;height:560px;background:radial-gradient(circle,#67e8f96b,#67e8f924 34%,#67e8f900 76%);animation:landingGlowFloatAlt 9s ease-in-out infinite}.landing-topbar{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:16px;max-width:1280px;margin:0 auto}.brand-mark{display:inline-flex;align-items:center;gap:10px;padding:8px 12px;border-radius:999px;background:#ffffff08;border:1px solid rgba(125,211,252,.08);color:#eef6ffd1;font-size:13px}.brand-mark--link{text-decoration:none}.brand-mark__dot{width:10px;height:10px;border-radius:999px;background:linear-gradient(135deg,#56ccf2,#2f80ed);box-shadow:0 0 18px #56ccf2bf}.social-links{display:flex;gap:10px}.social-link{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:12px;background:#ffffff08;border:1px solid rgba(125,211,252,.08);color:#dcecffd1;transition:transform .2s ease,border-color .2s ease,background .2s ease}.social-link:hover{transform:translateY(-2px);border-color:#56ccf24d;background:#ffffff14}.social-link--text{width:auto;padding:0 14px;text-decoration:none;font-size:13px;font-weight:600}.social-link svg{width:18px;height:18px;fill:currentColor}.landing-main{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100vh - 90px);max-width:820px;margin:0 auto;text-align:center}.landing-main:before{content:"";position:absolute;top:-2%;left:50%;width:720px;height:280px;transform:translate(-50%);background:radial-gradient(circle,#7dd3fc42,#7dd3fc1f 34%,#7dd3fc00 76%);filter:blur(34px);pointer-events:none;animation:landingGlowPulse 5.5s ease-in-out infinite}.landing-main:after{content:none}.landing-title{margin:0;font-size:clamp(40px,7vw,68px);line-height:1;letter-spacing:-.04em;background:linear-gradient(90deg,#f8fbff,#7cecff 18%,#fff 34%,#4f8cff 52%,#fff,#7cecff,#f8fbff);background-size:260% auto;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 10px rgba(124,236,255,.18));animation:landingTitleShine 5.2s ease-in-out infinite}.landing-subtitle{max-width:420px;margin:12px auto 0;color:#dcecff9e;font-size:15px;line-height:1.6}.upload-panel{width:min(680px,100%);margin-top:24px;padding:30px 28px 24px;border-radius:24px;border:1px solid rgba(94,170,255,.22);background:linear-gradient(180deg,#101c2ef5,#0b1422f0),radial-gradient(circle at top,rgba(86,204,242,.12),transparent 38%);box-shadow:0 24px 70px #00000047,inset 0 1px #ffffff0d;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.upload-panel.is-dragging{transform:translateY(-1px);border-color:#56ccf26b;box-shadow:0 28px 76px #0000004d,0 0 0 1px #56ccf21f}.upload-panel__input{display:none}.upload-panel__icon{display:inline-flex;align-items:center;justify-content:center;width:58px;height:58px;border-radius:18px;margin:0 auto 16px;background:linear-gradient(135deg,#56ccf22e,#2f80ed2e);box-shadow:0 12px 30px #2f80ed29}.upload-panel__icon svg{width:24px;height:24px;fill:#8adfff}.upload-panel__title{margin:0;font-size:clamp(24px,4vw,32px);line-height:1.1}.upload-panel__desc{margin:10px 0 0;color:#dcecff8f;font-size:14px}.upload-panel__actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:20px}.landing-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:18px}.upload-panel__summary{margin:16px 0 0;color:#dcecffb8;font-size:13px}.tag-list{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;max-width:760px;margin:18px auto 0}.tag-item{padding:8px 12px;border-radius:999px;border:1px solid rgba(125,211,252,.12);background:#ffffff0a;color:#dcecffa3;font-size:12px}.tag-item.is-active{border-color:#56ccf257;background:linear-gradient(135deg,#56ccf22e,#2f80ed2e);color:#f4fbff}.upload-panel__tip{max-width:760px;margin:16px auto 0;color:#dcecff70;font-size:12px;line-height:1.6}.docs-shell{min-height:100vh;padding:24px 20px 64px;background:radial-gradient(circle at 14% 0%,rgba(59,130,246,.18),transparent 24%),linear-gradient(180deg,#08111d,#0b1524);color:#eef6ff}.docs-topbar{margin-bottom:28px}.docs-page{width:min(1240px,100%);margin:0 auto;display:grid;grid-template-columns:260px minmax(0,1fr);gap:28px}.docs-sidebar{position:sticky;top:24px;align-self:start;padding:22px 18px;border-radius:22px;border:1px solid rgba(125,211,252,.1);background:linear-gradient(180deg,#ffffff0d,#ffffff08),#ffffff05;box-shadow:0 18px 44px #00000029}.docs-page__kicker{margin:0;color:#67e8f9;font-size:12px;text-transform:uppercase;letter-spacing:.18em}.docs-page__title{margin:10px 0 0;color:#f8fbff;font-size:clamp(28px,4vw,42px);line-height:1.08}.docs-page__lead{max-width:220px;margin:14px 0 0;color:#c4daf4b3;line-height:1.8;font-size:14px}.docs-page__content{display:flex;flex-direction:column;gap:20px;width:min(980px,100%)}.docs-nav{display:flex;flex-direction:column;gap:8px;margin-top:22px}.docs-nav a{padding:10px 12px;border-radius:12px;color:#c4daf4db;text-decoration:none;transition:background .2s ease,color .2s ease,transform .2s ease}.docs-nav a:hover{background:#ffffff14;color:#fff;transform:translate(2px)}.docs-section{padding:26px;border-radius:22px;border:1px solid rgba(125,211,252,.1);background:linear-gradient(180deg,#ffffff0d,#ffffff08),#ffffff05;box-shadow:0 18px 44px #00000024}.docs-section__eyebrow{margin:0 0 10px;color:#7cecff;font-size:12px;letter-spacing:.16em;text-transform:uppercase}.docs-section h2{margin:0 0 14px;font-size:28px;color:#f8fbff;line-height:1.18}.docs-section p{margin:0;color:#bdd2ecd1;line-height:1.8}.docs-section__lead{max-width:760px;color:#d6e7fcf0!important;font-size:16px}.docs-section p+p{margin-top:10px}.docs-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px}.docs-grid--compact{grid-template-columns:repeat(2,minmax(0,1fr))}.docs-card{padding:18px;border-radius:18px;border:1px solid rgba(125,211,252,.1);background:#ffffff09;text-align:left}.docs-card h3{margin:0 0 8px;font-size:16px;color:#f7fbff}.docs-card p{margin:0;color:#b4cae6d1;line-height:1.65;font-size:14px}.docs-tag-group{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.docs-tag{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid rgba(124,236,255,.16);background:linear-gradient(135deg,#7cecff14,#3b82f614);color:#dff8ff;font-size:13px;font-weight:600}.docs-tag--active{border-color:#7cecff4d;background:linear-gradient(135deg,#7cecff2e,#3b82f62e);color:#f5fcff;box-shadow:0 10px 24px #3b82f629}.docs-code{margin-top:16px;overflow:hidden;border-radius:18px;border:1px solid rgba(125,211,252,.12);background:#060e1ab8}.docs-code__title{padding:12px 14px;border-bottom:1px solid rgba(125,211,252,.1);color:#aecaebd1;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.docs-code pre{margin:0;padding:16px;overflow:auto;color:#dbeafe;font-family:SFMono-Regular,JetBrains Mono,monospace;line-height:1.7;text-align:left}.docs-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.docs-feature-card{padding:16px;border-radius:16px;border:1px solid rgba(125,211,252,.08);background:#ffffff08}.docs-feature-card--accent{border-color:#67e8f938;background:linear-gradient(135deg,#67e8f914,#3b82f60f),#ffffff08}.docs-feature-card h3{margin:0 0 8px;color:#f8fbff;font-size:15px}.docs-feature-card p{margin:0;font-size:14px;line-height:1.65;color:#b4cae6d6}.docs-open-source{margin-top:20px}.docs-open-source h3{margin:0 0 12px;color:#f7fbff;font-size:16px}.docs-open-source__links{display:flex;flex-wrap:wrap;gap:10px}.docs-open-source__links a{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border-radius:999px;text-decoration:none;color:#7cecff;border:1px solid rgba(124,236,255,.16);background:#ffffff08;transition:transform .2s ease,border-color .2s ease,color .2s ease,background .2s ease}.docs-open-source__links a:hover{transform:translateY(-1px);border-color:#7cecff47;color:#f3fcff;background:#ffffff0d}.docs-list{margin:0;padding-left:18px;color:#c6dbf3db;line-height:1.8}.docs-list li+li{margin-top:6px}.upload-button{border:1px solid transparent;border-radius:999px;min-width:132px;padding:11px 16px;background:linear-gradient(135deg,#56ccf2,#2f80ed);color:#07111f;font-weight:600;cursor:pointer;border-color:transparent;box-shadow:0 12px 28px #2f80ed38;transition:transform .2s ease,box-shadow .2s ease,background .2s ease,opacity .2s ease}.upload-button:hover{transform:translateY(-1px);box-shadow:0 16px 34px #2f80ed47}.upload-button.is-secondary{background:linear-gradient(135deg,#67e8f9,#3b82f6);color:#07111f;border-color:transparent;box-shadow:0 14px 34px #3b82f63d}.upload-button.is-accent{background:linear-gradient(135deg,#7c3aed,#2563eb);color:#f8fbff;border-color:transparent;box-shadow:0 16px 38px #6366f147}.upload-button.is-muted{background:#ffffff0f;color:#eef6ff;border-color:#7dd3fc1f;box-shadow:none}.upload-button:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.preview-page{min-height:100vh;padding:0;background:#fff}.preview-page__header{display:flex;align-items:center;justify-content:flex-start;padding:16px 20px;border-bottom:1px solid rgba(57,84,130,.08);background:#fff}.preview-page__body{padding:18px}.docs-section code{padding:2px 6px;border-radius:8px;background:#ffffff0f;color:#7cecff;font-family:SFMono-Regular,JetBrains Mono,monospace}.lfp-button,.lfp-sheet__tab{border:1px solid rgba(81,114,170,.12);border-radius:999px;background:linear-gradient(180deg,#fffffffa,#f0f8fff2);color:var(--lfp-text);cursor:pointer;box-shadow:0 10px 24px #32579714;transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease,color .2s ease}.lfp-button{padding:10px 15px}.lfp-icon-button{width:40px;height:40px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:12px}.lfp-icon-button svg{width:18px;height:18px;fill:currentColor}.lfp-button:hover,.lfp-sheet__tab:hover{transform:translateY(-2px);border-color:#118ab242;box-shadow:0 14px 30px #2756a424}.lfp-button{border-color:transparent;background:var(--lfp-hero);color:#fff}.lfp-button:disabled{opacity:.45;cursor:not-allowed;transform:none}.lfp-wrapper{position:relative}.lfp-wrapper.is-dialog{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999999;display:flex;align-items:center;justify-content:center;padding:24px}.lfp-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:radial-gradient(circle at top,rgba(38,103,255,.16),transparent 30%),#0a162d70}.lfp-panel{position:relative;display:flex;flex-direction:column;min-height:420px;width:100%;background:linear-gradient(180deg,#ffffffe6,#f4fbffe0),var(--lfp-hero-soft);border:1px solid var(--lfp-border);border-radius:24px;overflow:hidden;box-shadow:var(--lfp-shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.lfp-wrapper.is-dialog .lfp-panel{max-width:min(1280px,100%);max-height:min(88vh,100%)}.lfp-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:18px 20px;border-bottom:1px solid var(--lfp-border);background:linear-gradient(180deg,#ffffffe0,#f1f9ffd1)}.lfp-toolbar__meta,.lfp-toolbar__actions{display:flex;gap:12px;align-items:center}.lfp-title{max-width:min(60vw,720px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-badge{padding:4px 10px;border-radius:999px;background:linear-gradient(135deg,#2667ff1f,#36c9a724);color:var(--lfp-primary-strong);font-size:12px;text-transform:uppercase}.lfp-button.is-ghost{background:linear-gradient(180deg,#ffffffe6,#f2f8ffdb);color:var(--lfp-text);border-color:var(--lfp-border)}.lfp-content{position:relative;flex:1;min-height:360px;padding:16px;overflow:auto}.lfp-loading,.lfp-error,.lfp-empty{display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;min-height:280px;text-align:center}@media(max-width:1024px){.docs-page{grid-template-columns:1fr}.docs-sidebar{position:static}.docs-page__lead{max-width:none}}@media(max-width:720px){.docs-shell,.landing-shell{padding:20px 16px 40px}.landing-topbar{align-items:flex-start;flex-direction:column}.docs-grid,.docs-feature-grid{grid-template-columns:1fr}.docs-section{padding:22px 18px}.docs-section h2{font-size:24px}}@keyframes landingTitleShine{0%{background-position:0% 50%;filter:drop-shadow(0 0 8px rgba(124,236,255,.14))}50%{background-position:100% 50%;filter:drop-shadow(0 0 16px rgba(124,236,255,.28)) drop-shadow(0 0 28px rgba(79,140,255,.22))}to{background-position:0% 50%;filter:drop-shadow(0 0 8px rgba(124,236,255,.14))}}.lfp-spinner{width:28px;height:28px;border:3px solid rgba(17,138,178,.16);border-top-color:var(--lfp-primary-strong);border-radius:50%;animation:lfp-spin .8s linear infinite}.lfp-document{background:linear-gradient(180deg,#fffffff0,#f5fbffe6),var(--lfp-hero-soft);border-radius:18px;border:1px solid rgba(57,84,130,.08);padding:16px;box-shadow:inset 0 1px #ffffffb8}.lfp-image,.lfp-media{display:block;max-width:100%;margin:0 auto;border-radius:18px;background:#ffffffb8}.lfp-image{object-fit:contain}.lfp-media{width:100%}.lfp-audio{width:100%;margin-top:32px}.lfp-code{margin:0;padding:20px;overflow:auto;background:linear-gradient(180deg,#0a1429fa,#0b1c36f5),linear-gradient(135deg,#2667ff29,#118ab214);color:#dbeafe;border-radius:16px;font-family:SFMono-Regular,JetBrains Mono,monospace;line-height:1.6;white-space:pre-wrap;word-break:break-word}.lfp-markdown{padding:12px;line-height:1.8}.lfp-markdown img{max-width:100%}.lfp-hint{margin:0 0 12px;color:var(--lfp-text-subtle);font-size:13px}.lfp-pdf{display:flex;flex-direction:column;gap:18px}.lfp-pdf-page{display:flex;justify-content:center}.lfp-pdf-page canvas{max-width:100%;height:auto;border-radius:12px;box-shadow:0 18px 40px #1f40791f;background:#fff}.lfp-docx{overflow:auto}.lfp-docx .docx-wrapper{background:transparent;padding:0}.lfp-sheet{display:flex;flex-direction:column;gap:12px}.lfp-sheet__tabs{display:flex;gap:8px;flex-wrap:wrap}.lfp-sheet__tab{padding:8px 14px}.lfp-sheet__tab.is-active{background:linear-gradient(135deg,#2667ff1f,#36c9a724);color:var(--lfp-primary-strong);border-color:#118ab22e}.lfp-sheet__table-wrap{overflow:auto;border-radius:12px;border:1px solid rgba(28,39,58,.08)}.lfp-sheet__table{width:100%;border-collapse:collapse;font-size:14px}.lfp-sheet__table td{min-width:120px;padding:10px 12px;border:1px solid rgba(28,39,58,.08);vertical-align:top}.lfp-fade-enter-active,.lfp-fade-leave-active{transition:opacity .2s ease}.lfp-fade-enter-from,.lfp-fade-leave-to{opacity:0}@keyframes lfp-spin{to{transform:rotate(360deg)}}@keyframes landingGlowFloat{0%,to{transform:translateZ(0) scale(1);opacity:.48}50%{transform:translate3d(110px,58px,0) scale(1.28);opacity:1}}@keyframes landingGlowFloatAlt{0%,to{transform:translateZ(0) scale(1);opacity:.38}50%{transform:translate3d(-108px,-64px,0) scale(1.32);opacity:.96}}@keyframes landingGlowPulse{0%,to{opacity:.38;transform:translate(-50%) scale(.94)}50%{opacity:.88;transform:translate(-50%) scale(1.14)}}@keyframes landingBeamSweep{0%{transform:translate3d(-34%,0,0) rotate(12deg);opacity:0}12%{opacity:.24}50%{transform:translate3d(102%,0,0) rotate(12deg);opacity:.78}88%{opacity:.18}to{transform:translate3d(136%,0,0) rotate(12deg);opacity:0}}@keyframes landingBaseShift{0%,to{background-position:0% 0%,100% 0%,0% 0%}50%{background-position:6% 2%,94% 6%,0% 0%}}@media(max-width:768px){.landing-shell,.preview-page{padding:16px 12px 24px}.preview-page{padding:0}.landing-topbar{align-items:flex-start}.landing-main{min-height:auto;padding-top:52px}.landing-title{font-size:48px}.landing-subtitle{font-size:15px}.landing-shell:before{width:420px;height:420px;left:-20%}.landing-shell:after{width:340px;height:340px;right:-18%}.landing-main:before{width:420px;height:180px}.landing-main:after{width:88%;left:-46%}.upload-panel{padding:24px 16px 20px}.landing-actions{gap:10px}.docs-page{grid-template-columns:1fr;padding:20px 12px 40px}.docs-sidebar{position:static}.docs-grid,.docs-feature-grid{grid-template-columns:1fr}.lfp-wrapper.is-dialog,.lfp-content{padding:12px}}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
async function f(e, r) {
|
|
2
|
+
if (typeof e == "string") {
|
|
3
|
+
const t = await fetch(e, { signal: r });
|
|
4
|
+
if (!t.ok)
|
|
5
|
+
throw new Error(`文件读取失败,HTTP 状态码:${t.status}`);
|
|
6
|
+
return t.arrayBuffer();
|
|
7
|
+
}
|
|
8
|
+
return e.arrayBuffer();
|
|
9
|
+
}
|
|
10
|
+
async function c(e, r, t, o) {
|
|
11
|
+
const n = await f(e, o), a = n.byteLength > t ? n.slice(0, t) : n;
|
|
12
|
+
try {
|
|
13
|
+
return new TextDecoder(r, { fatal: !0 }).decode(a);
|
|
14
|
+
} catch {
|
|
15
|
+
return new TextDecoder("utf-8").decode(a);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async function u(e, r) {
|
|
19
|
+
return f(e, r);
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
c as a,
|
|
23
|
+
u as r
|
|
24
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { FilePreviewMode, PreviewSource } from '../types';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
source: PreviewSource;
|
|
4
|
+
fileName?: string;
|
|
5
|
+
mode?: FilePreviewMode;
|
|
6
|
+
visible?: boolean;
|
|
7
|
+
loadingText?: string;
|
|
8
|
+
textEncoding?: string;
|
|
9
|
+
maxTextBytes?: number;
|
|
10
|
+
maxSheetRows?: number;
|
|
11
|
+
maxSheetCols?: number;
|
|
12
|
+
pdfScale?: number;
|
|
13
|
+
showToolbar?: boolean;
|
|
14
|
+
dialogTitle?: string;
|
|
15
|
+
};
|
|
16
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
17
|
+
error: (error: Error) => any;
|
|
18
|
+
"update:visible": (value: boolean) => any;
|
|
19
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
20
|
+
onError?: ((error: Error) => any) | undefined;
|
|
21
|
+
"onUpdate:visible"?: ((value: boolean) => any) | undefined;
|
|
22
|
+
}>, {
|
|
23
|
+
mode: FilePreviewMode;
|
|
24
|
+
visible: boolean;
|
|
25
|
+
loadingText: string;
|
|
26
|
+
textEncoding: string;
|
|
27
|
+
maxTextBytes: number;
|
|
28
|
+
maxSheetRows: number;
|
|
29
|
+
maxSheetCols: number;
|
|
30
|
+
pdfScale: number;
|
|
31
|
+
showToolbar: boolean;
|
|
32
|
+
dialogTitle: string;
|
|
33
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
34
|
+
export default _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PreviewSource } from '../../types';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
source: PreviewSource;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
6
|
+
error: (error: Error) => any;
|
|
7
|
+
loading: (value: boolean) => any;
|
|
8
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
9
|
+
onError?: ((error: Error) => any) | undefined;
|
|
10
|
+
onLoading?: ((value: boolean) => any) | undefined;
|
|
11
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PreviewSource } from '../../types';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
source: PreviewSource;
|
|
4
|
+
scale: number;
|
|
5
|
+
};
|
|
6
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
7
|
+
error: (error: Error) => any;
|
|
8
|
+
loading: (value: boolean) => any;
|
|
9
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
10
|
+
onError?: ((error: Error) => any) | undefined;
|
|
11
|
+
onLoading?: ((value: boolean) => any) | undefined;
|
|
12
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PreviewSource } from '../../types';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
source: PreviewSource;
|
|
4
|
+
maxRows: number;
|
|
5
|
+
maxCols: number;
|
|
6
|
+
};
|
|
7
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
8
|
+
error: (error: Error) => any;
|
|
9
|
+
loading: (value: boolean) => any;
|
|
10
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
11
|
+
onError?: ((error: Error) => any) | undefined;
|
|
12
|
+
onLoading?: ((value: boolean) => any) | undefined;
|
|
13
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PreviewSource } from '../../types';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
source: PreviewSource;
|
|
4
|
+
encoding: string;
|
|
5
|
+
extension: string;
|
|
6
|
+
maxBytes: number;
|
|
7
|
+
};
|
|
8
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
9
|
+
error: (error: Error) => any;
|
|
10
|
+
loading: (value: boolean) => any;
|
|
11
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
12
|
+
onError?: ((error: Error) => any) | undefined;
|
|
13
|
+
onLoading?: ((value: boolean) => any) | undefined;
|
|
14
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
|
+
export default _default;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
fileName: string;
|
|
3
|
+
src: string;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PreviewKind } from '../types';
|
|
2
|
+
export declare const FILE_KIND_MAP: {
|
|
3
|
+
readonly image: readonly ["png", "jpg", "jpeg", "gif", "webp", "bmp", "svg"];
|
|
4
|
+
readonly pdf: readonly ["pdf"];
|
|
5
|
+
readonly text: readonly ["txt", "json", "js", "ts", "jsx", "tsx", "html", "css", "md", "csv"];
|
|
6
|
+
readonly docx: readonly ["docx"];
|
|
7
|
+
readonly sheet: readonly ["xls", "xlsx", "csv"];
|
|
8
|
+
readonly video: readonly ["mp4", "webm"];
|
|
9
|
+
readonly audio: readonly ["mp3", "wav"];
|
|
10
|
+
};
|
|
11
|
+
export declare function getExtension(input?: string): string;
|
|
12
|
+
export declare function resolvePreviewKind(fileName: string): PreviewKind;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './styles/index.css';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { App } from 'vue';
|
|
2
|
+
import FilePreview from './components/FilePreview.vue';
|
|
3
|
+
import './styles/index.css';
|
|
4
|
+
export type { FilePreviewMode, FilePreviewProps, PreviewKind, PreviewSource } from './types';
|
|
5
|
+
export { openFilePreviewDialog, registerStandaloneApi } from './standalone-api';
|
|
6
|
+
export { FilePreview };
|
|
7
|
+
declare const _default: {
|
|
8
|
+
install(app: App): void;
|
|
9
|
+
};
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './styles/index.css';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { FilePreviewProps } from './types';
|
|
2
|
+
type MountTarget = string | HTMLElement;
|
|
3
|
+
export type StandaloneFilePreviewProps = FilePreviewProps & {
|
|
4
|
+
'onUpdate:visible'?: (value: boolean) => void;
|
|
5
|
+
onError?: (error: Error) => void;
|
|
6
|
+
};
|
|
7
|
+
export interface StandaloneMountInstance {
|
|
8
|
+
update: (nextProps: Partial<StandaloneFilePreviewProps>) => void;
|
|
9
|
+
unmount: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function mountFilePreview(target: MountTarget, props: StandaloneFilePreviewProps): StandaloneMountInstance;
|
|
12
|
+
export declare function openFilePreviewDialog(props: StandaloneFilePreviewProps): StandaloneMountInstance;
|
|
13
|
+
export declare function registerStandaloneApi(): {
|
|
14
|
+
mount: typeof mountFilePreview;
|
|
15
|
+
openDialog: typeof openFilePreviewDialog;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type PreviewSource = string | File | Blob;
|
|
2
|
+
export type PreviewKind = 'image' | 'pdf' | 'text' | 'docx' | 'sheet' | 'video' | 'audio' | 'unsupported';
|
|
3
|
+
export type FilePreviewMode = 'inline' | 'dialog';
|
|
4
|
+
export interface FilePreviewProps {
|
|
5
|
+
source: PreviewSource;
|
|
6
|
+
fileName?: string;
|
|
7
|
+
mode?: FilePreviewMode;
|
|
8
|
+
visible?: boolean;
|
|
9
|
+
loadingText?: string;
|
|
10
|
+
textEncoding?: string;
|
|
11
|
+
maxTextBytes?: number;
|
|
12
|
+
maxSheetRows?: number;
|
|
13
|
+
maxSheetCols?: number;
|
|
14
|
+
pdfScale?: number;
|
|
15
|
+
showToolbar?: boolean;
|
|
16
|
+
dialogTitle?: string;
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function downloadFile(src: string, fileName: string): void;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PreviewSource } from '../types';
|
|
2
|
+
export interface ResolvedSource {
|
|
3
|
+
source: PreviewSource;
|
|
4
|
+
src: string;
|
|
5
|
+
name: string;
|
|
6
|
+
extension: string;
|
|
7
|
+
cleanup?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function resolveSource(source: PreviewSource, preferredName?: string): ResolvedSource;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { PreviewSource } from '../types';
|
|
2
|
+
export declare function readTextContent(source: PreviewSource, encoding: string, maxBytes: number, signal?: AbortSignal): Promise<string>;
|
|
3
|
+
export declare function readBinaryContent(source: PreviewSource, signal?: AbortSignal): Promise<ArrayBuffer>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { d as l, o as f, a as u, b as d, c as m, r as p } from "./vue2-CzAkhodr.js";
|
|
2
|
+
import { r as v } from "./text-CcxmtFce.js";
|
|
3
|
+
const x = /* @__PURE__ */ l({
|
|
4
|
+
__name: "DocxRenderer",
|
|
5
|
+
props: {
|
|
6
|
+
source: {}
|
|
7
|
+
},
|
|
8
|
+
emits: ["loading", "error"],
|
|
9
|
+
setup(a, { emit: s }) {
|
|
10
|
+
const c = a, n = s, e = p(null), o = new AbortController();
|
|
11
|
+
async function i() {
|
|
12
|
+
n("loading", !0);
|
|
13
|
+
try {
|
|
14
|
+
const r = await v(c.source, o.signal), { renderAsync: t } = await import("./docx-preview-B2OPGnfm.js");
|
|
15
|
+
if (!e.value)
|
|
16
|
+
return;
|
|
17
|
+
e.value.innerHTML = "", await t(r, e.value, void 0, {
|
|
18
|
+
className: "lfp-docx-content",
|
|
19
|
+
ignoreWidth: !1,
|
|
20
|
+
ignoreHeight: !1,
|
|
21
|
+
useBase64URL: !0
|
|
22
|
+
});
|
|
23
|
+
} catch (r) {
|
|
24
|
+
n("error", r instanceof Error ? r : new Error("DOCX 预览失败"));
|
|
25
|
+
} finally {
|
|
26
|
+
n("loading", !1);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return f(() => {
|
|
30
|
+
i();
|
|
31
|
+
}), u(() => {
|
|
32
|
+
o.abort(), e.value && (e.value.innerHTML = "");
|
|
33
|
+
}), (r, t) => (d(), m("div", {
|
|
34
|
+
ref_key: "containerRef",
|
|
35
|
+
ref: e,
|
|
36
|
+
class: "lfp-document lfp-docx"
|
|
37
|
+
}, null, 512));
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
export {
|
|
41
|
+
x as default
|
|
42
|
+
};
|