pptx-vanilla-viewer 0.7.0 → 0.9.0
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/CHANGELOG.md +12 -0
- package/README.md +2 -2
- package/dist/chunk-WH3W63I6.js +369 -0
- package/dist/chunk-ZLIAFC5B.cjs +369 -0
- package/dist/dist-7XHS5FSO.cjs +1 -0
- package/dist/dist-WWKH7TVG.js +1 -0
- package/dist/index.cjs +358 -339
- package/dist/index.d.ts +1524 -173
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +358 -339
- package/dist/smartart-3d-2R6SFYL3.cjs +1 -0
- package/dist/smartart-3d-FTALYBDI.js +1 -0
- package/dist/styles.css +199 -0
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var three=require('three'),OrbitControls_js=require('three/examples/jsm/controls/OrbitControls.js');var M=4,P=.86;function Q(o,i,e){let t=i.split(/\s+/u).filter(Boolean);if(t.length===0)return [];let a=[],s=t[0];for(let r=1;r<t.length;r++){let c=`${s} ${t[r]}`;o.measureText(c).width<=e?s=c:(a.push(s),s=t[r]);}return a.push(s),a}function _(o,i,e,t,a){if(typeof document>"u"||!o.trim()||t<=0||a<=0)return null;let s=t*P,r=a*P,c=document.createElement("canvas");c.width=Math.max(8,Math.round(s*M)),c.height=Math.max(8,Math.round(r*M));let n=c.getContext("2d");if(!n)return null;let d="system-ui, -apple-system, Segoe UI, Roboto, sans-serif",p=c.width*.94,u=Math.max(6,e)*M,f=[];for(let l=0;l<12;l++){n.font=`600 ${u}px ${d}`,f=Q(n,o,p);let g=u*1.2;if(f.length*g<=c.height*.96||u<=6*M)break;u*=.88;}n.clearRect(0,0,c.width,c.height),n.fillStyle=i,n.textAlign="center",n.textBaseline="middle",n.font=`600 ${u}px ${d}`;let x=u*1.2,w=f.length*x,y=c.height/2-w/2+x/2;for(let l=0;l<f.length;l++)n.fillText(f[l],c.width/2,y+l*x);let h=new three.CanvasTexture(c);return h.colorSpace=three.SRGBColorSpace,h.minFilter=three.LinearFilter,h.magFilter=three.LinearFilter,h.flipY=false,h.premultiplyAlpha=false,h.wrapT=three.RepeatWrapping,h.repeat.set(1,-1),h.offset.set(0,1),h.needsUpdate=true,{texture:h,worldWidth:s,worldHeight:r}}function ee(o){let i=new three.Shape;o.outline.forEach((t,a)=>{a===0?i.moveTo(t.x,t.y):i.lineTo(t.x,t.y);}),i.closePath();let e=o.bevel>0;return new three.ExtrudeGeometry(i,{depth:o.depth,bevelEnabled:e,bevelThickness:o.bevel,bevelSize:o.bevel,bevelSegments:2,curveSegments:o.rounded?24:1,steps:1})}function te(o,i,e){let t=ee(e),a=new three.MeshStandardMaterial({color:new three.Color(e.fill),metalness:.12,roughness:.52,transparent:e.opacity<1,opacity:e.opacity}),s=new three.Mesh(t,a);if(s.position.set(e.position.x,e.position.y,e.position.z),s.rotation.set(e.rotation.x,e.rotation.y,e.rotation.z),o.add(s),i.push(t,a),e.strokeWidth>0){let r=new three.EdgesGeometry(t,30),c=new three.LineBasicMaterial({color:new three.Color(e.stroke)}),n=new three.LineSegments(r,c);n.position.copy(s.position),n.rotation.copy(s.rotation),o.add(n),i.push(r,c);}return t}function ne(o,i,e){if(!e.text)return;let t=_(e.text,e.textColor,e.fontSize,e.halfWidth*2,e.halfHeight*2);if(!t)return;let a=new three.PlaneGeometry(t.worldWidth,t.worldHeight),s=new three.MeshBasicMaterial({map:t.texture,transparent:true,depthWrite:false}),r=new three.Mesh(a,s),c=new three.Euler(e.rotation.x,e.rotation.y,e.rotation.z),n=new three.Vector3(0,0,e.depth+e.bevel+.4).applyEuler(c);r.position.set(e.position.x+n.x,e.position.y+n.y,e.position.z+n.z),r.rotation.copy(c),o.add(r),i.push(a,s,t.texture);}function oe(o,i,e){for(let t of e.connectors){if(t.points.length<2)continue;let a=new three.BufferGeometry().setFromPoints(t.points.map(r=>new three.Vector3(r.x,r.y,r.z))),s=new three.LineBasicMaterial({color:new three.Color(t.color),transparent:true,opacity:.7});o.add(new three.Line(a,s)),i.push(a,s);}}function ie(o){let i=new three.Group,e=[];for(let t of o.meshes)te(i,e,t),ne(i,e,t);return oe(i,e,o),{group:i,dispose(){for(let t of e)t.dispose();}}}var T=42;function ae(o){let i=1/0,e=1/0,t=1/0,a=-1/0,s=-1/0,r=-1/0,c=(n,d,p,u)=>{i=Math.min(i,n-u),e=Math.min(e,d-u),t=Math.min(t,p-u),a=Math.max(a,n+u),s=Math.max(s,d+u),r=Math.max(r,p+u);};for(let n of o.meshes){let d=Math.max(n.halfWidth,n.halfHeight)+n.depth+n.bevel;c(n.position.x,n.position.y,n.position.z,d);}for(let n of o.connectors)for(let d of n.points)c(d.x,d.y,d.z,1);return Number.isFinite(i)?{cx:(i+a)/2,cy:(e+s)/2,cz:(t+r)/2,radius:.5*Math.hypot(a-i,s-e,r-t)||1}:{cx:0,cy:0,cz:0,radius:Math.max(o.bounds.width,o.bounds.height)/2||1}}function se(o,i){let e=T*Math.PI/180,t=2*Math.atan(Math.tan(e/2)*i),a=Math.min(e,t);return o/Math.sin(a/2)*1.1}function le(o,i,e,t,a={}){let s=new three.WebGLRenderer({canvas:o,antialias:true,alpha:!a.background});s.setPixelRatio(Math.min(typeof window>"u"?1:window.devicePixelRatio||1,a.maxPixelRatio??2)),s.setSize(e,t,false);let r=new three.Scene;a.background&&(r.background=new three.Color(a.background));let{cx:c,cy:n,cz:d,radius:p}=ae(i),u=e/Math.max(1,t),f=se(p,u),x=new three.PerspectiveCamera(T,u,.1,f*8+p*4);x.position.set(c+p*.25,n+p*.3,d+f),x.lookAt(c,n,d),r.add(new three.AmbientLight(16777215,.62));let w=new three.DirectionalLight(16777215,.95);w.position.set(c+p,n+p*1.4,d+f),r.add(w);let y=new three.DirectionalLight(16777215,.3);y.position.set(c-p,n-p*.6,d+f*.6),r.add(y);let h=ie(i);r.add(h.group);let l=null,g=m=>{m&&!l?(l=new OrbitControls_js.OrbitControls(x,o),l.enablePan=false,l.target.set(c,n,d),l.minDistance=f*.4,l.maxDistance=f*3,l.update()):!m&&l&&(l.dispose(),l=null),l&&(l.autoRotate=!!a.autoRotate,l.autoRotateSpeed=1.2);};g(!!a.interactive);let v=0,S=false,k=()=>{S||(v=requestAnimationFrame(k),l?.update(),s.render(r,x));};return v=requestAnimationFrame(k),{resize(m,z){x.aspect=m/Math.max(1,z),x.updateProjectionMatrix(),s.setSize(m,z,false);},setInteractive(m){g(m);},dispose(){S=true,cancelAnimationFrame(v),l?.dispose(),h.dispose(),s.dispose();}}}exports.mountSmartArt3D=le;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {WebGLRenderer,Scene,Color,PerspectiveCamera,AmbientLight,DirectionalLight,Group,MeshStandardMaterial,Mesh,EdgesGeometry,LineBasicMaterial,LineSegments,PlaneGeometry,MeshBasicMaterial,Euler,Vector3,BufferGeometry,Line,Shape,ExtrudeGeometry,CanvasTexture,SRGBColorSpace,LinearFilter,RepeatWrapping}from'three';import {OrbitControls}from'three/examples/jsm/controls/OrbitControls.js';var M=4,P=.86;function Q(o,i,e){let t=i.split(/\s+/u).filter(Boolean);if(t.length===0)return [];let a=[],s=t[0];for(let r=1;r<t.length;r++){let c=`${s} ${t[r]}`;o.measureText(c).width<=e?s=c:(a.push(s),s=t[r]);}return a.push(s),a}function _(o,i,e,t,a){if(typeof document>"u"||!o.trim()||t<=0||a<=0)return null;let s=t*P,r=a*P,c=document.createElement("canvas");c.width=Math.max(8,Math.round(s*M)),c.height=Math.max(8,Math.round(r*M));let n=c.getContext("2d");if(!n)return null;let d="system-ui, -apple-system, Segoe UI, Roboto, sans-serif",p=c.width*.94,u=Math.max(6,e)*M,f=[];for(let l=0;l<12;l++){n.font=`600 ${u}px ${d}`,f=Q(n,o,p);let g=u*1.2;if(f.length*g<=c.height*.96||u<=6*M)break;u*=.88;}n.clearRect(0,0,c.width,c.height),n.fillStyle=i,n.textAlign="center",n.textBaseline="middle",n.font=`600 ${u}px ${d}`;let x=u*1.2,w=f.length*x,y=c.height/2-w/2+x/2;for(let l=0;l<f.length;l++)n.fillText(f[l],c.width/2,y+l*x);let h=new CanvasTexture(c);return h.colorSpace=SRGBColorSpace,h.minFilter=LinearFilter,h.magFilter=LinearFilter,h.flipY=false,h.premultiplyAlpha=false,h.wrapT=RepeatWrapping,h.repeat.set(1,-1),h.offset.set(0,1),h.needsUpdate=true,{texture:h,worldWidth:s,worldHeight:r}}function ee(o){let i=new Shape;o.outline.forEach((t,a)=>{a===0?i.moveTo(t.x,t.y):i.lineTo(t.x,t.y);}),i.closePath();let e=o.bevel>0;return new ExtrudeGeometry(i,{depth:o.depth,bevelEnabled:e,bevelThickness:o.bevel,bevelSize:o.bevel,bevelSegments:2,curveSegments:o.rounded?24:1,steps:1})}function te(o,i,e){let t=ee(e),a=new MeshStandardMaterial({color:new Color(e.fill),metalness:.12,roughness:.52,transparent:e.opacity<1,opacity:e.opacity}),s=new Mesh(t,a);if(s.position.set(e.position.x,e.position.y,e.position.z),s.rotation.set(e.rotation.x,e.rotation.y,e.rotation.z),o.add(s),i.push(t,a),e.strokeWidth>0){let r=new EdgesGeometry(t,30),c=new LineBasicMaterial({color:new Color(e.stroke)}),n=new LineSegments(r,c);n.position.copy(s.position),n.rotation.copy(s.rotation),o.add(n),i.push(r,c);}return t}function ne(o,i,e){if(!e.text)return;let t=_(e.text,e.textColor,e.fontSize,e.halfWidth*2,e.halfHeight*2);if(!t)return;let a=new PlaneGeometry(t.worldWidth,t.worldHeight),s=new MeshBasicMaterial({map:t.texture,transparent:true,depthWrite:false}),r=new Mesh(a,s),c=new Euler(e.rotation.x,e.rotation.y,e.rotation.z),n=new Vector3(0,0,e.depth+e.bevel+.4).applyEuler(c);r.position.set(e.position.x+n.x,e.position.y+n.y,e.position.z+n.z),r.rotation.copy(c),o.add(r),i.push(a,s,t.texture);}function oe(o,i,e){for(let t of e.connectors){if(t.points.length<2)continue;let a=new BufferGeometry().setFromPoints(t.points.map(r=>new Vector3(r.x,r.y,r.z))),s=new LineBasicMaterial({color:new Color(t.color),transparent:true,opacity:.7});o.add(new Line(a,s)),i.push(a,s);}}function ie(o){let i=new Group,e=[];for(let t of o.meshes)te(i,e,t),ne(i,e,t);return oe(i,e,o),{group:i,dispose(){for(let t of e)t.dispose();}}}var T=42;function ae(o){let i=1/0,e=1/0,t=1/0,a=-1/0,s=-1/0,r=-1/0,c=(n,d,p,u)=>{i=Math.min(i,n-u),e=Math.min(e,d-u),t=Math.min(t,p-u),a=Math.max(a,n+u),s=Math.max(s,d+u),r=Math.max(r,p+u);};for(let n of o.meshes){let d=Math.max(n.halfWidth,n.halfHeight)+n.depth+n.bevel;c(n.position.x,n.position.y,n.position.z,d);}for(let n of o.connectors)for(let d of n.points)c(d.x,d.y,d.z,1);return Number.isFinite(i)?{cx:(i+a)/2,cy:(e+s)/2,cz:(t+r)/2,radius:.5*Math.hypot(a-i,s-e,r-t)||1}:{cx:0,cy:0,cz:0,radius:Math.max(o.bounds.width,o.bounds.height)/2||1}}function se(o,i){let e=T*Math.PI/180,t=2*Math.atan(Math.tan(e/2)*i),a=Math.min(e,t);return o/Math.sin(a/2)*1.1}function le(o,i,e,t,a={}){let s=new WebGLRenderer({canvas:o,antialias:true,alpha:!a.background});s.setPixelRatio(Math.min(typeof window>"u"?1:window.devicePixelRatio||1,a.maxPixelRatio??2)),s.setSize(e,t,false);let r=new Scene;a.background&&(r.background=new Color(a.background));let{cx:c,cy:n,cz:d,radius:p}=ae(i),u=e/Math.max(1,t),f=se(p,u),x=new PerspectiveCamera(T,u,.1,f*8+p*4);x.position.set(c+p*.25,n+p*.3,d+f),x.lookAt(c,n,d),r.add(new AmbientLight(16777215,.62));let w=new DirectionalLight(16777215,.95);w.position.set(c+p,n+p*1.4,d+f),r.add(w);let y=new DirectionalLight(16777215,.3);y.position.set(c-p,n-p*.6,d+f*.6),r.add(y);let h=ie(i);r.add(h.group);let l=null,g=m=>{m&&!l?(l=new OrbitControls(x,o),l.enablePan=false,l.target.set(c,n,d),l.minDistance=f*.4,l.maxDistance=f*3,l.update()):!m&&l&&(l.dispose(),l=null),l&&(l.autoRotate=!!a.autoRotate,l.autoRotateSpeed=1.2);};g(!!a.interactive);let v=0,S=false,k=()=>{S||(v=requestAnimationFrame(k),l?.update(),s.render(r,x));};return v=requestAnimationFrame(k),{resize(m,z){x.aspect=m/Math.max(1,z),x.updateProjectionMatrix(),s.setSize(m,z,false);},setInteractive(m){g(m);},dispose(){S=true,cancelAnimationFrame(v),l?.dispose(),h.dispose(),s.dispose();}}}export{le as mountSmartArt3D};
|
package/dist/styles.css
CHANGED
|
@@ -37,6 +37,14 @@
|
|
|
37
37
|
.pptxv *, .pptxv *::before, .pptxv *::after { box-sizing: border-box; }
|
|
38
38
|
.pptxv:focus { outline: none; }
|
|
39
39
|
.pptxv:focus-visible { outline: 2px solid var(--pptx-ring); outline-offset: -2px; }
|
|
40
|
+
.pptxv :is(button, a, input, select, textarea, [tabindex]):focus-visible { outline: 2px solid var(--pptx-ring) !important; outline-offset: 2px; }
|
|
41
|
+
.pptxv :is(button, [role='button']) { min-width: 24px; min-height: 24px; touch-action: manipulation; }
|
|
42
|
+
@media (prefers-reduced-motion: reduce) {
|
|
43
|
+
.pptxv *, .pptxv *::before, .pptxv *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
|
|
44
|
+
}
|
|
45
|
+
@media (forced-colors: active) {
|
|
46
|
+
.pptxv :is(button, a, input, select, textarea, [tabindex]):focus-visible { outline-color: Highlight; }
|
|
47
|
+
}
|
|
40
48
|
|
|
41
49
|
/* Ribbon shell layout (primary row + nav row + tab bar + groups) lives in
|
|
42
50
|
* ribbon-css.ts; .pptxv-btn below is the shared icon-button primitive used by
|
|
@@ -176,6 +184,33 @@
|
|
|
176
184
|
}
|
|
177
185
|
.pptxv-thumb.is-active .pptxv-thumb-frame { border-color: var(--pptx-primary); }
|
|
178
186
|
.pptxv-thumb:focus-visible .pptxv-thumb-frame { outline: 2px solid var(--pptx-ring); }
|
|
187
|
+
.pptxv-thumb-section { display: flex; flex-direction: column; gap: 6px; }
|
|
188
|
+
.pptxv-thumb-section-header { display: flex; align-items: center; gap: 2px; min-width: 0; }
|
|
189
|
+
.pptxv-thumb-section-toggle {
|
|
190
|
+
min-width: 0;
|
|
191
|
+
flex: 1;
|
|
192
|
+
border: 0;
|
|
193
|
+
background: transparent;
|
|
194
|
+
color: var(--pptx-foreground);
|
|
195
|
+
font-size: 11px;
|
|
196
|
+
font-weight: 600;
|
|
197
|
+
text-align: left;
|
|
198
|
+
cursor: pointer;
|
|
199
|
+
}
|
|
200
|
+
.pptxv-thumb-section-actions { display: flex; gap: 1px; }
|
|
201
|
+
.pptxv-thumb-section-actions button {
|
|
202
|
+
width: 18px;
|
|
203
|
+
height: 18px;
|
|
204
|
+
padding: 0;
|
|
205
|
+
border: 0;
|
|
206
|
+
border-radius: 3px;
|
|
207
|
+
background: transparent;
|
|
208
|
+
color: var(--pptx-muted-foreground);
|
|
209
|
+
cursor: pointer;
|
|
210
|
+
}
|
|
211
|
+
.pptxv-thumb-section-actions button:hover { background: var(--pptx-accent); color: var(--pptx-accent-foreground); }
|
|
212
|
+
.pptxv-thumb-section-actions button:disabled { opacity: .35; cursor: default; }
|
|
213
|
+
.pptxv-thumb-section-slides { display: flex; flex-direction: column; gap: 8px; }
|
|
179
214
|
|
|
180
215
|
/* ── Viewport / stage ────────────────────────────────────────────────── */
|
|
181
216
|
.pptxv-viewport {
|
|
@@ -421,6 +456,11 @@
|
|
|
421
456
|
|
|
422
457
|
|
|
423
458
|
.pptxv-marquee { position: absolute; z-index: 4; border: 1px solid var(--pptx-primary); background: color-mix(in srgb, var(--pptx-primary) 14%, transparent); pointer-events: none; }
|
|
459
|
+
.pptxv.pptxv-showGrid .pptxv-stage { background-image: linear-gradient(#cbd5e155 1px, transparent 1px), linear-gradient(90deg, #cbd5e155 1px, transparent 1px); background-size: 10px 10px; }
|
|
460
|
+
.pptxv.pptxv-showRulers .pptxv-stage-wrap { border-top: 18px solid #e5e7eb; border-left: 18px solid #e5e7eb; }
|
|
461
|
+
.pptxv-alignment-guide { position: absolute; z-index: 6; pointer-events: none; background: #00a6ff; }
|
|
462
|
+
.pptxv-alignment-guide.is-h { left: 0; right: 0; height: 1px; }
|
|
463
|
+
.pptxv-alignment-guide.is-v { top: 0; bottom: 0; width: 1px; }
|
|
424
464
|
/* Colour swatch control (native <input type=color>, used by the inspector). */
|
|
425
465
|
.pptxv-color {
|
|
426
466
|
display: inline-flex;
|
|
@@ -686,6 +726,8 @@
|
|
|
686
726
|
padding: 6px 8px;
|
|
687
727
|
}
|
|
688
728
|
.pptxv-ribbon-tab-content[hidden] { display: none; }
|
|
729
|
+
.pptxv-record-dot { width: 12px; height: 12px; margin: 7px; border-radius: 50%; background: #ef4444; }
|
|
730
|
+
.pptxv-shortcut-help { align-self: center; padding: 5px 8px; color: var(--pptx-muted-foreground); font-size: 11px; }
|
|
689
731
|
.pptxv-ribbon-insert-content {
|
|
690
732
|
flex-wrap: nowrap;
|
|
691
733
|
overflow-x: auto;
|
|
@@ -851,6 +893,35 @@
|
|
|
851
893
|
}
|
|
852
894
|
.pptxv-findreplace-status { font-size: 11px; color: var(--pptx-muted-foreground); }
|
|
853
895
|
|
|
896
|
+
/* PowerPoint-style File backstage */
|
|
897
|
+
.pptxv-backstage{position:fixed;inset:0;z-index:200;display:flex!important;padding:0!important;background:var(--pptx-background,#fafafa);color:var(--pptx-foreground,#242424);font-family:Aptos,"Segoe UI",sans-serif}.pptxv-backstage>aside{width:148px;flex:none;display:flex;flex-direction:column;background:var(--pptx-secondary,#f5eee9);border-right:1px solid var(--pptx-border,#d7d7d7)}.pptxv-bs-back{height:48px;border:0;border-bottom:1px solid var(--pptx-border,#ddd);background:none;color:inherit;font-size:22px}.pptxv-bs-back:hover,.pptxv-backstage nav button:hover,.pptxv-bs-recent>button:hover{background:var(--pptx-accent,#eadfd8)}.pptxv-backstage nav{display:flex;min-height:0;flex:1;flex-direction:column;padding:8px 0}.pptxv-backstage nav i{flex:1}.pptxv-backstage nav button{min-height:40px;padding:0 16px;border:0;border-left:2px solid transparent;background:none;color:inherit;text-align:left;font:12px inherit;white-space:pre}.pptxv-backstage nav button.active{border-left-color:var(--pptx-primary,#c43e1c);background:var(--pptx-card,#fff);color:var(--pptx-primary,#c43e1c)}.pptxv-backstage main{flex:1;min-width:0;overflow:auto;padding:20px clamp(32px,4vw,72px)}.pptxv-backstage h1{margin:0;font-size:24px;font-weight:600}.pptxv-backstage h2{margin:28px 0 18px;font-size:17px}.pptxv-bs-templates{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:24px}.pptxv-bs-templates button{border:0;background:none;color:inherit;text-align:left}.pptxv-bs-templates button>b{display:block;aspect-ratio:16/9;border:1px solid var(--pptx-border,#ccc);box-shadow:0 1px 2px #0002;transition:.15s}.pptxv-bs-templates button:hover>b{transform:translateY(-2px);border-color:var(--pptx-primary,#c43e1c);box-shadow:0 7px 18px #0002}.pptxv-bs-templates strong,.pptxv-bs-templates small{display:block;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}.pptxv-bs-templates small{margin-top:2px;color:var(--pptx-muted-foreground,#777);font-size:10px}.pptxv-bs-search{display:block;width:min(540px,100%);height:40px;margin-top:32px;padding:0 14px;border:1px solid var(--pptx-input,#888);background:var(--pptx-card,#fff);color:var(--pptx-card-foreground,#242424)}.pptxv-bs-search:focus{border-color:var(--pptx-ring,#c43e1c);outline:none}.pptxv-bs-primary{margin-top:16px;padding:10px 20px;border:0;background:var(--pptx-primary,#c43e1c);color:var(--pptx-primary-foreground,#fff);font-weight:600}.pptxv-bs-recent{border-top:1px solid var(--pptx-border,#ddd)}.pptxv-bs-recent header,.pptxv-bs-recent>button{display:grid;grid-template-columns:1fr 120px 90px;align-items:center;padding:10px 12px}.pptxv-bs-recent header{font-size:11px;font-weight:600;color:var(--pptx-muted-foreground,#666)}.pptxv-bs-recent>button{width:100%;border:0;border-top:1px solid var(--pptx-border,#e5e5e5);background:none;color:inherit;text-align:left;font-size:11px}.pptxv-bs-recent .name{display:flex;min-width:0;align-items:center;gap:12px}.pptxv-bs-recent .name>b{display:grid;width:32px;height:32px;place-items:center;background:var(--pptx-primary,#d24726);color:var(--pptx-primary-foreground,#fff)}.pptxv-bs-recent .name strong,.pptxv-bs-recent .name small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:400}.pptxv-bs-recent .name small,.pptxv-bs-recent p{color:var(--pptx-muted-foreground,#666);font-size:11px}.pptxv-bs-recent p{text-align:center}.pptxv-bs-actions{display:grid;max-width:900px;grid-template-columns:1fr 1fr;gap:20px;margin-top:32px}.pptxv-bs-actions button{display:flex;min-height:112px;gap:16px;padding:20px;border:1px solid var(--pptx-border,#ddd);background:var(--pptx-card,#fff);color:var(--pptx-card-foreground,#242424);text-align:left}.pptxv-bs-actions button:hover{border-color:var(--pptx-primary,#c43e1c);box-shadow:0 5px 15px #0002}.pptxv-bs-actions button>b{display:grid;width:40px;height:40px;flex:none;place-items:center;background:var(--pptx-accent,#fbe9e3);color:var(--pptx-primary,#c43e1c)}.pptxv-bs-actions strong,.pptxv-bs-actions small{display:block;font-size:15px}.pptxv-bs-actions small{margin-top:7px;color:var(--pptx-muted-foreground,#666);font-size:12px;line-height:1.5}.pptxv-bs-card{max-width:760px;margin-top:32px;padding:28px;border:1px solid var(--pptx-border,#ddd);background:var(--pptx-card,#fff);color:var(--pptx-card-foreground,#242424)}.pptxv-bs-card>b{display:grid;width:56px;height:56px;place-items:center;border-radius:50%;background:var(--pptx-primary,#c43e1c);color:var(--pptx-primary-foreground,#fff);font-size:20px}.pptxv-bs-card p,.pptxv-backstage footer{color:var(--pptx-muted-foreground,#666)}.pptxv-bs-card p{line-height:1.6}.pptxv-backstage footer{margin-top:48px;font-size:11px}@media(max-width:700px){.pptxv-backstage>aside{width:112px}.pptxv-bs-actions{grid-template-columns:1fr}.pptxv-bs-recent header,.pptxv-bs-recent>button{grid-template-columns:1fr 90px}.pptxv-bs-recent header span:last-child,.pptxv-bs-recent>button>span:last-child{display:none}}
|
|
898
|
+
.pptxv-backstage nav button{display:flex;align-items:center;gap:12px;white-space:normal}.pptxv-backstage nav button>span:first-child{display:grid;width:17px;flex:none;place-items:center}
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
.pptxv-props-overlay { position:fixed; inset:0; z-index:210; display:grid; place-items:center; background:#0009; }
|
|
902
|
+
.pptxv-props-scrim { position:absolute; inset:0; width:100%; height:100%; border:0; background:transparent; }
|
|
903
|
+
.pptxv-props-dialog { position:relative; width:min(680px,calc(100vw - 32px)); max-height:calc(100vh - 40px); overflow:auto; border:1px solid var(--pptx-border); border-radius:10px; background:var(--pptx-card); color:var(--pptx-card-foreground); box-shadow:0 24px 80px #0008; }
|
|
904
|
+
.pptxv-props-dialog header,.pptxv-props-dialog footer { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:12px 16px; border-bottom:1px solid var(--pptx-border); }
|
|
905
|
+
.pptxv-props-dialog h2 { margin:0; font-size:16px; }
|
|
906
|
+
.pptxv-props-dialog button,.pptxv-props-dialog input,.pptxv-props-dialog select { border:1px solid var(--pptx-border); border-radius:5px; padding:6px 8px; background:var(--pptx-muted); color:inherit; }
|
|
907
|
+
.pptxv-props-tabs { display:flex; gap:4px; padding:8px 16px 0; }
|
|
908
|
+
.pptxv-props-tabs .is-active,.pptxv-props-dialog .is-primary { background:var(--pptx-primary); color:#fff; }
|
|
909
|
+
.pptxv-props-body { min-height:310px; padding:16px; }
|
|
910
|
+
.pptxv-props-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
|
|
911
|
+
.pptxv-props-grid label { display:grid; gap:4px; font-size:11px; color:var(--pptx-muted-foreground); }
|
|
912
|
+
.pptxv-props-grid input { color:var(--pptx-foreground); }
|
|
913
|
+
.pptxv-props-stats { display:grid; grid-template-columns:1fr auto; gap:8px 24px; margin:0; }
|
|
914
|
+
.pptxv-props-stats dt { color:var(--pptx-muted-foreground); }
|
|
915
|
+
.pptxv-props-stats dd { margin:0; }
|
|
916
|
+
.pptxv-props-custom { display:grid; gap:8px; }
|
|
917
|
+
.pptxv-props-custom-row { display:grid; grid-template-columns:1fr 1fr 100px 34px; gap:6px; }
|
|
918
|
+
.pptxv-props-dialog footer { justify-content:flex-end; border-top:1px solid var(--pptx-border); border-bottom:0; }
|
|
919
|
+
@media (max-width:600px) { .pptxv-props-grid,.pptxv-props-custom-row { grid-template-columns:1fr; } }
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
.pptxv-info-overlay{position:fixed;inset:0;z-index:220;display:grid;place-items:center;background:#0009}.pptxv-info-scrim{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent}.pptxv-info-dialog{position:relative;width:min(460px,calc(100vw - 32px));max-height:80vh;overflow:auto;border:1px solid var(--pptx-border);border-radius:12px;background:var(--pptx-card);color:var(--pptx-card-foreground);box-shadow:0 24px 80px #0008}.pptxv-info-dialog header,.pptxv-info-dialog footer{display:flex;align-items:center;gap:8px;padding:14px 18px;border-bottom:1px solid var(--pptx-border)}.pptxv-info-dialog header{justify-content:space-between}.pptxv-info-dialog h2,.pptxv-info-dialog h3,.pptxv-info-dialog p{margin:0}.pptxv-info-dialog h2{font-size:14px}.pptxv-info-dialog h3{font-size:12px}.pptxv-info-body{display:grid;gap:14px;padding:18px}.pptxv-info-dialog button,.pptxv-info-dialog input{border:1px solid var(--pptx-border);border-radius:6px;padding:7px 9px;background:var(--pptx-muted);color:inherit}.pptxv-info-dialog .is-primary{background:var(--pptx-primary);color:#fff}.pptxv-info-dialog .is-danger,.pptxv-info-error,.pptxv-info-row em.is-missing{color:#f87171}.pptxv-info-description,.pptxv-info-status,.pptxv-info-field span{color:var(--pptx-muted-foreground);font-size:12px}.pptxv-info-toggle{display:flex;align-items:center;gap:9px;font-size:12px}.pptxv-info-list{display:grid;gap:6px;max-height:280px;overflow:auto}.pptxv-info-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border-radius:8px;background:var(--pptx-muted);font-size:12px}.pptxv-info-badges{display:flex;align-items:center;gap:7px}.pptxv-info-badges b{padding:2px 5px;border-radius:4px;background:#16653455;color:#86efac;font-size:10px}.pptxv-info-badges em{color:#4ade80;font-style:normal}.pptxv-info-notice{display:flex;gap:10px;padding:12px;border:1px solid var(--pptx-border);border-radius:9px;background:var(--pptx-muted);font-size:12px}.pptxv-info-notice.is-signed,.pptxv-info-protected{border-color:#15803d66;background:#14532d33;color:#86efac}.pptxv-info-notice.is-warning{border-color:#b4530966;background:#78350f33;color:#fde68a}.pptxv-info-notice b{display:grid;width:20px;height:20px;flex:none;place-items:center;border:1px solid currentColor;border-radius:50%}.pptxv-info-protected{padding:9px;border:1px solid;border-radius:7px;font-size:12px}.pptxv-info-field{display:grid;gap:5px}.pptxv-info-strength{color:#eab308;letter-spacing:3px}.pptxv-info-error{min-height:14px;font-size:11px}.pptxv-info-spacer{flex:1}.pptxv-info-dialog footer{border-top:1px solid var(--pptx-border);border-bottom:0}
|
|
923
|
+
.pptxv-version-history{position:absolute;z-index:210;inset:0 0 0 auto;display:flex;width:min(320px,100%);flex-direction:column;border-left:1px solid var(--pptx-border);background:var(--pptx-background);color:var(--pptx-foreground);box-shadow:-18px 0 48px #0005}.pptxv-version-history>header{display:flex;min-height:48px;align-items:center;gap:9px;padding:0 12px;border-bottom:1px solid var(--pptx-border)}.pptxv-version-history h2{flex:1;margin:0;font-size:14px}.pptxv-version-history button{border:0;border-radius:6px;padding:6px 9px;background:transparent;color:inherit}.pptxv-version-history button:hover{background:var(--pptx-accent)}.pptxv-version-content{flex:1;overflow:auto;color:var(--pptx-muted-foreground);font-size:12px}.pptxv-version-empty{padding:32px 14px;text-align:center}.pptxv-version-content article{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:14px;border-bottom:1px solid var(--pptx-border)}.pptxv-version-content article strong{color:var(--pptx-foreground);font-weight:500}.pptxv-version-content article p{grid-column:1/-1;margin:0;font-size:10px}.pptxv-version-content article footer{grid-column:1/-1;display:flex;gap:6px;margin-top:8px}.pptxv-version-content .is-primary{background:color-mix(in srgb,var(--pptx-primary) 20%,transparent);color:var(--pptx-primary)}.pptxv-version-content .is-danger{color:#f87171}@media(max-width:600px){.pptxv-info-dialog{position:fixed;inset:auto 0 0;width:100%;max-height:88dvh;border-radius:16px 16px 0 0}.pptxv-version-history{position:fixed;top:auto;height:min(72dvh,560px);border-top:1px solid var(--pptx-border);border-left:0}}
|
|
924
|
+
|
|
854
925
|
|
|
855
926
|
.pptxv-smartart-dialog-layer {
|
|
856
927
|
position: fixed;
|
|
@@ -1015,6 +1086,7 @@
|
|
|
1015
1086
|
background: var(--pptx-card);
|
|
1016
1087
|
color: var(--pptx-card-foreground);
|
|
1017
1088
|
box-shadow: 0 12px 36px rgb(0 0 0 / 0.35);
|
|
1089
|
+
overscroll-behavior: contain;
|
|
1018
1090
|
}
|
|
1019
1091
|
.pptxv-modal-panel:focus { outline: none; }
|
|
1020
1092
|
.pptxv-modal-header {
|
|
@@ -1051,6 +1123,9 @@
|
|
|
1051
1123
|
}
|
|
1052
1124
|
.pptxv-modal-section { display: flex; flex-direction: column; gap: 12px; }
|
|
1053
1125
|
.pptxv-modal-section[hidden] { display: none; }
|
|
1126
|
+
.pptxv-share-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 4px; border-radius: 8px; background: var(--pptx-muted); }
|
|
1127
|
+
.pptxv-share-tabs button { border: 0; border-radius: 6px; background: transparent; color: var(--pptx-muted-foreground); padding: 6px 10px; font: 500 12px/1.2 inherit; cursor: pointer; }
|
|
1128
|
+
.pptxv-share-tabs button[aria-selected='true'] { background: var(--pptx-background); color: var(--pptx-foreground); box-shadow: 0 1px 2px rgb(0 0 0 / 0.18); }
|
|
1054
1129
|
.pptxv-modal-desc { margin: 0; font-size: 13px; line-height: 1.5; color: var(--pptx-muted-foreground); }
|
|
1055
1130
|
.pptxv-modal-hint { margin: 4px 0 0; font-size: 11px; color: var(--pptx-muted-foreground); }
|
|
1056
1131
|
.pptxv-modal-hint[hidden] { display: none; }
|
|
@@ -1294,3 +1369,127 @@
|
|
|
1294
1369
|
.pptxv.pptxv-presenting .pptxv-mobile-sheet-host { display: none; }
|
|
1295
1370
|
}
|
|
1296
1371
|
|
|
1372
|
+
|
|
1373
|
+
.pptxv-master-sidebar {
|
|
1374
|
+
display: flex;
|
|
1375
|
+
flex: none;
|
|
1376
|
+
flex-direction: column;
|
|
1377
|
+
width: 224px;
|
|
1378
|
+
min-height: 0;
|
|
1379
|
+
border-right: 1px solid var(--pptx-border);
|
|
1380
|
+
background: color-mix(in srgb, var(--pptx-card) 92%, transparent);
|
|
1381
|
+
}
|
|
1382
|
+
.pptxv-master-sidebar[hidden] { display: none; }
|
|
1383
|
+
.pptxv-master-header { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; }
|
|
1384
|
+
.pptxv-master-title { color: var(--pptx-muted-foreground); font-size: 10px; letter-spacing: 0.07em; text-transform: uppercase; }
|
|
1385
|
+
.pptxv-master-collapse { width: 24px; height: 24px; border: 0; border-radius: 4px; background: transparent; color: var(--pptx-muted-foreground); cursor: pointer; font-size: 20px; line-height: 1; }
|
|
1386
|
+
.pptxv-master-collapse:hover { background: var(--pptx-accent); color: var(--pptx-accent-foreground); }
|
|
1387
|
+
.pptxv-master-collapse:focus-visible, .pptxv-master-tab:focus-visible, .pptxv-master-count:focus-visible, .pptxv-master-thumb:focus-visible { outline: 2px solid var(--pptx-ring); outline-offset: -2px; }
|
|
1388
|
+
.pptxv-master-tabs { display: flex; padding: 0 4px; border-bottom: 1px solid var(--pptx-border); }
|
|
1389
|
+
.pptxv-master-tab { flex: 1; padding: 6px 2px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--pptx-muted-foreground); cursor: pointer; font: inherit; font-size: 10px; }
|
|
1390
|
+
.pptxv-master-tab.is-active { border-bottom-color: #f59e0b; color: #f59e0b; font-weight: 600; }
|
|
1391
|
+
.pptxv-master-body { display: flex; flex: 1; flex-direction: column; gap: 8px; min-height: 0; overflow-y: auto; padding: 6px; }
|
|
1392
|
+
.pptxv-master-thumb { display: flex; flex-direction: column; gap: 4px; padding: 5px; border: 1px solid transparent; border-radius: 5px; background: transparent; color: var(--pptx-foreground); cursor: pointer; text-align: left; }
|
|
1393
|
+
.pptxv-master-thumb.is-layout { margin-left: 14px; }
|
|
1394
|
+
.pptxv-master-thumb:hover { background: var(--pptx-accent); }
|
|
1395
|
+
.pptxv-master-thumb.is-active { border-color: var(--pptx-primary); background: color-mix(in srgb, var(--pptx-primary) 10%, transparent); }
|
|
1396
|
+
.pptxv-master-thumb-name { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
|
|
1397
|
+
.pptxv-master-thumb-frame { position: relative; display: block; overflow: hidden; border: 1px solid var(--pptx-border); border-radius: 3px; background: #fff; }
|
|
1398
|
+
.pptxv-master-card { padding: 8px; border: 1px solid var(--pptx-border); border-radius: 6px; background: color-mix(in srgb, var(--pptx-muted) 55%, transparent); }
|
|
1399
|
+
.pptxv-master-card-label { margin-bottom: 6px; color: var(--pptx-muted-foreground); font-size: 10px; }
|
|
1400
|
+
.pptxv-master-background { width: 100%; height: 32px; border: 1px solid var(--pptx-border); border-radius: 4px; }
|
|
1401
|
+
.pptxv-master-placeholder { display: flex; align-items: center; gap: 7px; margin-top: 4px; padding: 5px 6px; border-radius: 4px; background: color-mix(in srgb, var(--pptx-background) 65%, transparent); font-size: 10px; }
|
|
1402
|
+
.pptxv-master-dot { width: 8px; height: 8px; flex: none; border-radius: 50%; background: rgb(34 197 94 / 0.65); }
|
|
1403
|
+
.pptxv-master-dot.is-handout { background: rgb(168 85 247 / 0.65); }
|
|
1404
|
+
.pptxv-master-empty { padding: 16px 8px; color: var(--pptx-muted-foreground); font-size: 11px; text-align: center; }
|
|
1405
|
+
.pptxv-master-counts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
|
|
1406
|
+
.pptxv-master-count { padding: 6px; border: 0; border-radius: 4px; background: var(--pptx-accent); color: var(--pptx-muted-foreground); cursor: pointer; font: inherit; font-size: 11px; }
|
|
1407
|
+
.pptxv-master-count.is-active { background: var(--pptx-primary); color: var(--pptx-primary-foreground); }
|
|
1408
|
+
.pptxv-master-page { position: relative; overflow: hidden; border: 1px solid #d1d5db; border-radius: 4px; background: #fff; box-shadow: 0 8px 24px rgb(0 0 0 / 0.18); }
|
|
1409
|
+
.pptxv-master-canvas-empty { display: grid; width: 100%; height: 100%; place-items: center; color: var(--pptx-muted-foreground); }
|
|
1410
|
+
.pptxv-notes-region { position: absolute; display: flex; overflow: hidden; align-items: center; justify-content: center; border: 1px dashed rgb(156 163 175 / 0.45); color: rgb(107 114 128 / 0.8); font-size: 10px; text-align: center; }
|
|
1411
|
+
.pptxv-notes-region.is-sldImg { border-color: rgb(59 130 246 / 0.55); background: rgb(59 130 246 / 0.05); color: rgb(59 130 246 / 0.75); }
|
|
1412
|
+
.pptxv-notes-region.is-body { border-color: rgb(34 197 94 / 0.55); background: rgb(34 197 94 / 0.05); color: rgb(34 197 94 / 0.75); }
|
|
1413
|
+
.pptxv-handout-slot { position: absolute; display: flex; overflow: hidden; align-items: center; justify-content: center; border: 1px dashed rgb(96 165 250 / 0.55); background: rgb(239 246 255 / 0.35); color: rgb(96 165 250 / 0.7); font-size: 10px; font-weight: 500; }
|
|
1414
|
+
.pptxv-handout-corner { position: absolute; padding: 1px 4px; border-color: rgb(209 213 219 / 0.5); border-style: dashed; color: rgb(107 114 128 / 0.55); font-size: 8px; }
|
|
1415
|
+
.pptxv-handout-corner.is-top-left { top: 0; left: 0; border-right-width: 1px; border-bottom-width: 1px; }
|
|
1416
|
+
.pptxv-handout-corner.is-top-right { top: 0; right: 0; border-bottom-width: 1px; border-left-width: 1px; }
|
|
1417
|
+
.pptxv-handout-corner.is-bottom-left { bottom: 0; left: 0; border-top-width: 1px; border-right-width: 1px; }
|
|
1418
|
+
.pptxv-handout-corner.is-bottom-right { right: 0; bottom: 0; border-top-width: 1px; border-left-width: 1px; }
|
|
1419
|
+
@media (max-width: 767px), (max-width: 1023px) and (max-height: 520px) { .pptxv-master-sidebar { display: none; } }
|
|
1420
|
+
.pptxv.pptxv-presenting .pptxv-master-sidebar { display: none; }
|
|
1421
|
+
|
|
1422
|
+
|
|
1423
|
+
.pptxv-parity-backdrop { position: fixed; inset: 0; z-index: 1200; border: 0; background: rgb(0 0 0 / .55); }
|
|
1424
|
+
.pptxv-parity-dialog { position: fixed; z-index: 1201; top: 50%; left: 50%; display: flex; flex-direction: column; width: min(440px, calc(100vw - 32px)); max-height: 88vh; transform: translate(-50%, -50%); overflow: hidden; border: 1px solid var(--pptx-border); border-radius: 10px; background: var(--pptx-background); color: var(--pptx-foreground); box-shadow: 0 24px 70px rgb(0 0 0 / .34); }
|
|
1425
|
+
.pptxv-parity-header, .pptxv-parity-footer { display: flex; align-items: center; padding: 12px 16px; border-color: var(--pptx-border); }
|
|
1426
|
+
.pptxv-parity-header { justify-content: space-between; border-bottom: 1px solid var(--pptx-border); }
|
|
1427
|
+
.pptxv-parity-header h2 { margin: 0; font-size: 14px; }
|
|
1428
|
+
.pptxv-parity-header button { border: 0; background: transparent; color: inherit; font-size: 20px; cursor: pointer; }
|
|
1429
|
+
.pptxv-parity-body { display: flex; flex-direction: column; gap: 12px; overflow: auto; padding: 16px; font-size: 12px; }
|
|
1430
|
+
.pptxv-parity-body fieldset { display: flex; flex-direction: column; gap: 7px; margin: 0; padding: 10px 12px; border: 1px solid var(--pptx-border); border-radius: 6px; }
|
|
1431
|
+
.pptxv-parity-body legend { padding: 0 4px; color: var(--pptx-muted-foreground); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
|
|
1432
|
+
.pptxv-parity-body input[type='text'], .pptxv-parity-body input[type='number'] { min-width: 0; padding: 7px 8px; border: 1px solid var(--pptx-border); border-radius: 4px; background: var(--pptx-muted); color: inherit; }
|
|
1433
|
+
.pptxv-parity-check, .pptxv-parity-range { display: flex; align-items: center; gap: 8px; min-height: 28px; cursor: pointer; }
|
|
1434
|
+
.pptxv-parity-select { display: grid; grid-template-columns: 130px 1fr; align-items: center; gap: 10px; }
|
|
1435
|
+
.pptxv-parity-select select { padding: 7px 8px; border: 1px solid var(--pptx-border); border-radius: 4px; background: var(--pptx-muted); color: inherit; }
|
|
1436
|
+
.pptxv-parity-range input[type='number'] { width: 58px; }
|
|
1437
|
+
.pptxv-parity-footer { justify-content: flex-end; gap: 8px; border-top: 1px solid var(--pptx-border); }
|
|
1438
|
+
.pptxv-parity-footer button, .pptxv-parity-tabs button, .pptxv-compare-panel button { padding: 7px 11px; border: 1px solid var(--pptx-border); border-radius: 4px; background: var(--pptx-muted); color: inherit; cursor: pointer; }
|
|
1439
|
+
.pptxv-parity-footer .is-primary, .pptxv-parity-tabs .is-active, .pptxv-compare-actions button { border-color: var(--pptx-primary); background: var(--pptx-primary); color: #fff; }
|
|
1440
|
+
.pptxv-parity-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--pptx-border); }
|
|
1441
|
+
.pptxv-shortcut-list { display: flex; flex-direction: column; gap: 3px; }
|
|
1442
|
+
.pptxv-shortcut-list > div { display: flex; justify-content: space-between; gap: 14px; padding: 7px 8px; border-radius: 4px; background: var(--pptx-muted); }
|
|
1443
|
+
.pptxv-shortcut-list kbd { color: var(--pptx-muted-foreground); white-space: nowrap; }
|
|
1444
|
+
.pptxv-compare-panel { position: absolute; z-index: 45; inset: 0 0 0 auto; display: flex; flex-direction: column; width: min(440px, 100%); border-left: 1px solid var(--pptx-border); background: var(--pptx-card); color: var(--pptx-foreground); box-shadow: -16px 0 38px rgb(0 0 0 / .2); }
|
|
1445
|
+
.pptxv-compare-panel > header { display: flex; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid var(--pptx-border); }
|
|
1446
|
+
.pptxv-compare-panel h2, .pptxv-compare-panel p { margin: 0; } .pptxv-compare-panel header p { margin-top: 3px; color: var(--pptx-muted-foreground); font-size: 11px; }
|
|
1447
|
+
.pptxv-compare-actions { padding: 9px 16px; border-bottom: 1px solid var(--pptx-border); }
|
|
1448
|
+
.pptxv-compare-list { display: flex; flex-direction: column; gap: 8px; overflow: auto; padding: 12px; }
|
|
1449
|
+
.pptxv-compare-row { padding: 10px; border: 1px solid var(--pptx-border); border-radius: 6px; background: var(--pptx-muted); font-size: 11px; }
|
|
1450
|
+
.pptxv-compare-row p { margin: 6px 0; color: var(--pptx-muted-foreground); } .pptxv-compare-row div { display: flex; justify-content: flex-end; gap: 6px; } .pptxv-compare-row.is-resolved { opacity: .55; }
|
|
1451
|
+
.pptxv-rehearse { position: absolute; z-index: 130; top: 8px; left: 50%; display: flex; align-items: center; gap: 8px; padding: 8px 10px; transform: translateX(-50%); border: 1px solid #ffffff2b; border-radius: 7px; background: #020617ee; color: #f8fafc; box-shadow: 0 10px 28px rgb(0 0 0 / .35); font-size: 11px; }
|
|
1452
|
+
.pptxv-rehearse button { padding: 5px 8px; border: 0; border-radius: 4px; background: #ffffff16; color: inherit; cursor: pointer; }
|
|
1453
|
+
.pptxv-workspace-pane { position: absolute; z-index: 48; inset: 0 0 0 auto; display: flex; flex-direction: column; width: min(300px, 100%); border-left: 1px solid var(--pptx-border); background: var(--pptx-card); color: var(--pptx-foreground); box-shadow: -12px 0 30px rgb(0 0 0 / .18); }
|
|
1454
|
+
.pptxv-workspace-pane > header, .pptxv-slide-sorter > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 11px 13px; border-bottom: 1px solid var(--pptx-border); }
|
|
1455
|
+
.pptxv-workspace-pane h2, .pptxv-slide-sorter h2 { margin: 0; font-size: 13px; } .pptxv-workspace-pane header button, .pptxv-slide-sorter header button { border: 0; background: transparent; color: inherit; font-size: 18px; cursor: pointer; }
|
|
1456
|
+
.pptxv-workspace-list { display: flex; flex-direction: column; gap: 5px; overflow: auto; padding: 8px; }
|
|
1457
|
+
.pptxv-selection-row { display: grid; grid-template-columns: 18px 1fr 28px; align-items: center; border-radius: 4px; background: var(--pptx-muted); } .pptxv-selection-row.is-selected { color: var(--pptx-primary); box-shadow: inset 3px 0 var(--pptx-primary); } .pptxv-selection-row button { padding: 7px; border: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; }
|
|
1458
|
+
.pptxv-comment-card { display: flex; flex-direction: column; gap: 6px; padding: 8px; border: 1px solid var(--pptx-border); border-radius: 6px; } .pptxv-comment-card.is-resolved { opacity: .6; } .pptxv-comment-card textarea, .pptxv-workspace-list > textarea { min-height: 58px; padding: 6px; border: 1px solid var(--pptx-border); border-radius: 4px; background: var(--pptx-muted); color: inherit; resize: vertical; } .pptxv-comment-card div { display: flex; gap: 4px; }
|
|
1459
|
+
.pptxv-slide-sorter { position: absolute; z-index: 50; inset: 0; display: flex; flex-direction: column; background: color-mix(in srgb, var(--pptx-background) 96%, transparent); color: var(--pptx-foreground); }
|
|
1460
|
+
.pptxv-sorter-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; overflow: auto; padding: 18px; } .pptxv-sorter-card { overflow: hidden; border: 2px solid var(--pptx-border); border-radius: 7px; background: var(--pptx-card); } .pptxv-sorter-card.is-current { border-color: var(--pptx-primary); } .pptxv-sorter-card.is-hidden { opacity: .5; } .pptxv-sorter-card > button { display: grid; width: 100%; min-height: 90px; place-items: center; border: 0; background: var(--pptx-muted); color: inherit; font-size: 22px; cursor: pointer; } .pptxv-sorter-card div { display: flex; gap: 3px; padding: 5px; } .pptxv-sorter-card div button { flex: 1; padding: 4px; border: 0; background: transparent; color: inherit; font-size: 9px; cursor: pointer; }
|
|
1461
|
+
.pptxv-custom-shows article { display: grid; grid-template-columns: 1fr auto auto auto; gap: 6px; padding: 8px; border: 1px solid var(--pptx-border); border-radius: 6px; } .pptxv-custom-shows article > div { grid-column: 1 / -1; max-height: 140px; overflow: auto; }
|
|
1462
|
+
@media (max-width: 767px) { .pptxv-parity-dialog { top: auto; bottom: 0; width: 100%; max-height: 88dvh; transform: translateX(-50%); border-radius: 16px 16px 0 0; } }
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
.pptxv-animation-timeline {
|
|
1466
|
+
display: grid;
|
|
1467
|
+
gap: 6px;
|
|
1468
|
+
min-width: 220px;
|
|
1469
|
+
padding: 4px 8px;
|
|
1470
|
+
border-left: 1px solid var(--pptx-border);
|
|
1471
|
+
}
|
|
1472
|
+
.pptxv-animation-timeline-list { display: grid; gap: 2px; max-height: 112px; overflow: auto; }
|
|
1473
|
+
.pptxv-animation-timeline-row {
|
|
1474
|
+
display: grid;
|
|
1475
|
+
grid-template-columns: minmax(0, 1fr) 28px 28px;
|
|
1476
|
+
align-items: center;
|
|
1477
|
+
gap: 2px;
|
|
1478
|
+
padding: 2px 4px;
|
|
1479
|
+
border-radius: var(--pptx-radius);
|
|
1480
|
+
background: color-mix(in srgb, var(--pptx-muted) 65%, transparent);
|
|
1481
|
+
}
|
|
1482
|
+
.pptxv-animation-timeline-row.is-selected { outline: 1px solid var(--pptx-ring); }
|
|
1483
|
+
.pptxv-animation-timeline-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1484
|
+
.pptxv-animation-timing-controls { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 4px; }
|
|
1485
|
+
.pptxv-animation-timing-controls label { display: grid; gap: 2px; font-size: 11px; }
|
|
1486
|
+
.pptxv-animation-timing-controls :is(select, input) {
|
|
1487
|
+
min-width: 0;
|
|
1488
|
+
width: 100%;
|
|
1489
|
+
padding: 3px;
|
|
1490
|
+
border: 1px solid var(--pptx-border);
|
|
1491
|
+
border-radius: var(--pptx-radius);
|
|
1492
|
+
background: var(--pptx-background);
|
|
1493
|
+
color: var(--pptx-foreground);
|
|
1494
|
+
}
|
|
1495
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pptx-vanilla-viewer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Zero-framework PowerPoint viewer: render PPTX slides in the browser with plain DOM, no React/Vue/Angular required.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"javascript",
|
|
@@ -57,7 +57,8 @@
|
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"dompurify": "^3.4.12",
|
|
59
59
|
"html2canvas-pro": "^2.2.3",
|
|
60
|
-
"jspdf": "^4.2.1"
|
|
60
|
+
"jspdf": "^4.2.1",
|
|
61
|
+
"lucide": "^1.24.0"
|
|
61
62
|
},
|
|
62
63
|
"devDependencies": {
|
|
63
64
|
"@types/dompurify": "^3.2.0",
|