@mdgate/pptx 0.6.11 → 0.6.13
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/dist/index.js +3 -3
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{detectZipDoc as
|
|
1
|
+
import{detectZipDoc as ZZ}from"@mdgate/containers";import{documentToMarkdown as qZ}from"@mdgate/document";import{fileExtension as HZ}from"@mdgate/utils";import{ns as Q,Package as B8,parseXml as $8,probeOle as I8,readRels as u,relsPartFor as v,relTargetBytes as E8,relType as w8,resolve as X8}from"@mdgate/containers";import{ConvertError as p}from"@mdgate/core";import{cellSpanning as L8,emptyDocument as f8,GridBuilder as S8,inlinesAreEmpty as a,inlinesToPlainText as R8,resolveHeaderRows as T8}from"@mdgate/document";import{AssetSink as g8,alternateBranch as u8,applyDelta as P8,chartBlocks as v8,classifyRelTarget as m8,diagramBlocks as k8,flushList as c,rebaseEmphasis as y8,relImageSource as b8,resolveDelta as Y8}from"@mdgate/office-common";import{cleanText as j8,warn as k}from"@mdgate/utils";import{ns as _}from"@mdgate/containers";import{markerOrdinal as d}from"@mdgate/document";import{emptyDelta as J8,mergeDelta as M8}from"@mdgate/office-common";//! PresentationML text-property cascade: run properties resolve through
|
|
2
2
|
//! paragraph `pPr` -> shape `lstStyle` -> layout placeholder -> master
|
|
3
3
|
//! placeholder / `txStyles` -> presentation `defaultTextStyle`, with
|
|
4
4
|
//! explicit-off states honored at every layer.
|
|
5
|
-
var T=9;function K8(q,Z,J){switch(q){case"period":return;case"parenR":return`${
|
|
5
|
+
var T=9;function K8(q,Z,J){switch(q){case"period":return;case"parenR":return`${d(Z,J)})`;case"parenBoth":return`(${d(Z,J)})`;case"plain":return d(Z,J)}}function A8(){return{delta:J8(),bullet:{kind:"inherit"}}}function f(q,Z){return{delta:M8(q.delta,Z.delta),bullet:Z.bullet.kind==="inherit"?q.bullet:Z.bullet}}class Q8{levels;constructor(q){this.levels=q??Array.from({length:T},()=>A8())}level(q){return this.levels[Math.min(Math.max(q,0),T-1)]}}function B(q){let Z=new Q8;if(q===void 0)return Z;for(let J=0;J<Z.levels.length;J+=1){let K=`lvl${J+1}pPr`,H=q.childElems().find(($)=>$.is(_.A,K));if(H!==void 0)Z.levels[J]=P(H)}return Z}function P(q){let Z;if(q.find(_.A,"buNone")!==void 0)Z={kind:"none"};else{let H=q.find(_.A,"buAutoNum");if(H!==void 0){let $=H.attr(_.A,"type")??"",X;if($.startsWith("alphaLc"))X="lowerAlpha";else if($.startsWith("alphaUc"))X="upperAlpha";else if($.startsWith("romanLc"))X="lowerRoman";else if($.startsWith("romanUc"))X="upperRoman";else X="decimal";let j;if($.endsWith("ParenBoth"))j="parenBoth";else if($.endsWith("ParenR"))j="parenR";else if($.endsWith("Plain"))j="plain";else j="period";let N=H.attr(_.A,"startAt"),W=N!==void 0?D8(N):void 0,G=W!==void 0?O8(W,1,32767):1;Z={kind:"autoNum",marker:X,start:G,wrap:j}}else if(q.find(_.A,"buChar")!==void 0)Z={kind:"char"};else Z={kind:"inherit"}}let J=q.find(_.A,"defRPr");return{delta:J!==void 0?h(J):J8(),bullet:Z}}function h(q){let Z=(K)=>{let H=q.attr(_.A,K);if(H===void 0)return;return H==="1"||H==="true"||H==="on"},J=q.attr(_.A,"strike");return{bold:Z("b"),italic:Z("i"),strike:J===void 0?void 0:J==="sngStrike"||J==="dblStrike",code:void 0}}function i(q){let Z=[];for(let J of q.descendants(_.P,"sp")){let K=J.firstDescendant(_.P,"ph");if(K===void 0)continue;let H=J.find(_.P,"txBody"),$=B(H!==void 0?H.find(_.A,"lstStyle"):void 0);Z.push({phType:K.attr(_.P,"type")??"body",idx:K.attr(_.P,"idx"),styles:$})}return Z}function o(q,Z,J){if(J!==void 0){let H=q.find(($)=>$.idx===J);if(H!==void 0)return H}let K=R(Z);return q.find((H)=>{return R(H.phType)===K&&(K==="title"||H.phType===Z)})??q.find((H)=>R(H.phType)===K)}function R(q){return q==="title"||q==="ctrTitle"?"title":"body"}function D8(q){if(!/^[+-]?\d+$/.test(q))return;let Z=Number(q);if(!Number.isSafeInteger(Z))return;return Z}function O8(q,Z,J){return Math.min(J,Math.max(Z,q))}//! OOXML PresentationML (.pptx / .pptm / .ppsx): slides in `sldIdLst` order,
|
|
6
6
|
//! with the full text cascade - slide -> layout -> master placeholder /
|
|
7
7
|
//! `txStyles` -> presentation defaults. Speaker notes are included (fixed
|
|
8
8
|
//! policy), rendered as a quote after each slide's content.
|
|
9
|
-
var
|
|
9
|
+
var x8="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout",d8="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster",h8="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide",i8="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide",o8=[Q.P,Q.A,Q.R,Q.MC];function z8(q){let Z;try{Z=B8.open(q)}catch(z){throw I8(q)??z}let K=u(Z,"_rels/.rels").firstOfType(w8.OFFICE_DOCUMENT),H="ppt/presentation.xml";if(K!==void 0){let z=m("",K.target);if(z!==void 0)H=z}let $=Z.requiredXmlPart(H),X=u(Z,v(H)),j=B($.firstDescendant(Q.P,"defaultTextStyle")),N=$.firstDescendant(Q.P,"sldIdLst"),W=[];if(N!==void 0)for(let z of N.findAll(Q.P,"sldId")){let M=z.attrQualified(Q.R,"id");if(M===void 0)continue;let w=X.internalTarget(M);if(w===void 0)continue;let E=m(H,w);if(E!==void 0)W.push(E)}if(W.length===0)return f8();let G=new g8,U=new Map,Y=new Map,C=[],D=0,I={n:0},V=new Map;for(let z=0;z<W.length;z+=1)V.set(W[z],`slide-${z+1}`);let A=[];for(let z of W)A.push(u(Z,v(z)));let O=new Set;for(let z=0;z<W.length;z+=1){let M=W[z],w=A[z];for(let[,E]of w.entries()){if(E.relType!==i8||E.mode!=="internal")continue;let L=m(M,E.target);if(L!==void 0&&V.has(L))O.add(L)}}for(let z=0;z<W.length;z+=1){let M=W[z],w=Z.optionalXmlPart(M);if(w===void 0){k(`skipping unusable slide ${M}`),D+=1;continue}let E=w.find(Q.P,"sld")?.find(Q.P,"cSld")?.find(Q.P,"spTree");if(E===void 0){k(`skipping slide ${M}: no shape tree`),D+=1;continue}let L=A[z],S=r(L,M,x8);if(S!==void 0&&!U.has(S)){let F=c8(Z,S);if(F.masterPath!==void 0&&!Y.has(F.masterPath))Y.set(F.masterPath,n8(Z,F.masterPath));U.set(S,F)}let y=S!==void 0?U.get(S):void 0,C8=y?.masterPath!==void 0?Y.get(y.masterPath):void 0,e={pkg:Z,rels:L,basePart:M,assets:G,defaultText:j,layout:y,master:C8,instanceCounter:I,slideAnchors:V};if(O.has(M)){let F=V.get(M);if(F!==void 0)C.push({type:"paragraph",inlines:[{type:"anchor",id:F}]})}t(E,e,C);let b=r(L,M,h8),Z8=b!==void 0?(()=>{let F=Z.optionalXmlPart(b);return F!==void 0?[b,F]:void 0})():void 0;if(Z8!==void 0){let[F,V8]=Z8,_8=u(Z,v(F)),F8={...e,rels:_8,basePart:F,layout:void 0,master:void 0},x=[];for(let q8 of V8.descendants(Q.P,"sp")){let g=a8(q8);if(g==="sldImg"||g==="sldNum"||g==="hdr"||g==="ftr"||g==="dt")continue;let H8=q8.find(Q.P,"txBody");if(H8!==void 0)l(H8,F8,void 0,x)}if(x.length>0)C.push({type:"blockQuote",blocks:x})}}if(D===W.length)throw p.malformed("no slide in the presentation could be read");return{blocks:C,notes:[],assets:G.assets}}function r(q,Z,J){let K=q.firstOfType(J);if(K===void 0)return;return m(Z,K.target)}function c8(q,Z){let J=q.optionalXmlPart(Z),K=J!==void 0?(()=>{let X=J.firstDescendant(Q.P,"spTree");return X!==void 0?i(X):[]})():[],H=u(q,v(Z)),$=r(H,Z,d8);return{placeholders:K,masterPath:$}}function n8(q,Z){let J={title:B(void 0),body:B(void 0),other:B(void 0),placeholders:[]},K=q.optionalXmlPart(Z);if(K!==void 0){let H=K.firstDescendant(Q.P,"txStyles");if(H!==void 0)J.title=B(H.find(Q.P,"titleStyle")),J.body=B(H.find(Q.P,"bodyStyle")),J.other=B(H.find(Q.P,"otherStyle"));let $=K.firstDescendant(Q.P,"spTree");if($!==void 0)J.placeholders=i($)}return J}function p8(q,Z){if(Z.mode==="internal")try{let J=X8(q.basePart,Z.target),K=q.slideAnchors.get(J.path);if(K!==void 0)return{type:"anchor",id:K}}catch{}return m8(Z.mode==="external",Z.target)}function G8(q,Z,J,K){let H=q.defaultText.level(K);if(q.master!==void 0){let $=Z===void 0?q.master.other:R(Z.phType)==="title"?q.master.title:q.master.body;if(H=f(H,$.level(K)),Z!==void 0){let X=o(q.master.placeholders,Z.phType,Z.idx);if(X!==void 0)H=f(H,X.styles.level(K))}}if(q.layout!==void 0&&Z!==void 0){let $=o(q.layout.placeholders,Z.phType,Z.idx);if($!==void 0)H=f(H,$.styles.level(K))}return f(H,J.level(K))}function n(q,Z){return E8(q.pkg,q.rels,q.basePart,Z)}function a8(q){let Z=q.firstDescendant(Q.P,"ph");return Z!==void 0?Z.attr(Q.P,"type")??"body":void 0}function t(q,Z,J){for(let K of q.childElems()){if(K.is(Q.MC,"AlternateContent")){let H=u8(K,o8);if(H!==void 0)t(H,Z,J);continue}if(K.ns!==Q.P)continue;switch(K.local){case"sp":case"cxnSp":r8(K,Z,J);break;case"grpSp":t(K,Z,J);break;case"graphicFrame":l8(K,Z,J);break;case"pic":{let $=K.firstDescendant(Q.P,"cNvPr")?.attr(Q.P,"descr"),X=$!==void 0?j8($):"",j=K.firstDescendant(Q.A,"blip"),N=j!==void 0?j.attrQualified(Q.R,"embed")??j.attrQualified(Q.R,"link"):void 0,W=N!==void 0?b8(Z.pkg,Z.rels,Z.basePart,Z.assets,N):void 0;if(W!==void 0||X.trim().length>0)J.push({type:"paragraph",inlines:[{type:"image",alt:X,source:W??{type:"unavailable"}}]});break}default:break}}}function r8(q,Z,J){let K=q.firstDescendant(Q.P,"ph"),H=K!==void 0?{phType:K.attr(Q.P,"type")??"body",idx:K.attr(Q.P,"idx")}:void 0;if(H!==void 0&&(H.phType==="sldNum"||H.phType==="dt"||H.phType==="ftr"))return;let $=q.find(Q.P,"txBody");if($===void 0)return;if(H!==void 0&&R(H.phType)==="title")t8($,Z,H,J);else l($,Z,H,J)}function t8(q,Z,J,K){let H=B(q.find(Q.A,"lstStyle")),$=[];for(let X of q.findAll(Q.A,"p")){let j=X.find(Q.A,"pPr"),N=j?.attr(Q.A,"lvl"),W=N!==void 0?U8(N)??0:0,G=G8(Z,J,H,W);if(j!==void 0)G=f(G,P(j));let U=Y8(G.delta),Y=N8(X,Z,U);if(a(Y))continue;if(y8(Y,U),$.length>0)$.push({type:"lineBreak"});$.push(...Y)}if(!a($))K.push({type:"heading",level:2,anchor:R8($),content:$})}function l(q,Z,J,K){let H=B(q.find(Q.A,"lstStyle"));Z.instanceCounter.n+=1;let $=Z.instanceCounter.n,X=Array(T).fill(0),j=Array(T).fill(!1),N=[];for(let W of q.findAll(Q.A,"p")){let G=W.find(Q.A,"pPr"),U=G?.attr(Q.A,"lvl"),Y=U!==void 0?U8(U)??0:0,C=G8(Z,J,H,Y);if(G!==void 0)C=f(C,P(G));let D=Y8(C.delta),I=N8(W,Z,D);if(a(I)){c(K,N);continue}let V=C.bullet;if(V.kind==="autoNum"){let A=Math.min(Y,T-1),O;if(j[A])O=e8(X[A],1);else j[A]=!0,O=V.start;X[A]=O;for(let z=A+1;z<j.length;z+=1)j[z]=!1;N.push({level:Y,key:{instance:$,marker:V.marker},number:O,label:K8(V.wrap,V.marker,O),blocks:[{type:"paragraph",inlines:I}]})}else if(V.kind==="char")N.push({level:Y,key:{instance:$,marker:"bullet"},number:0,label:void 0,blocks:[{type:"paragraph",inlines:I}]});else c(K,N),K.push({type:"paragraph",inlines:I})}c(K,N)}function N8(q,Z,J){let K=[];for(let H of q.childElems()){if(H.ns!==Q.A)continue;switch(H.local){case"r":case"fld":{let $=H.find(Q.A,"rPr"),X=H.find(Q.A,"t"),j=j8(X!==void 0?X.text():"");if(j.length===0)continue;let N=$!==void 0?P8(h($),J):J,W={type:"text",text:j,style:N},G=$?.find(Q.A,"hlinkClick")?.attrQualified(Q.R,"id"),U=G!==void 0?Z.rels.get(G):void 0,Y=U!==void 0?p8(Z,U):void 0;if(Y!==void 0)K.push({type:"link",content:[W],target:Y});else K.push(W);break}case"br":K.push({type:"lineBreak"});break;default:break}}return K}function l8(q,Z,J){let K=q.firstDescendant(Q.A,"tbl");if(K!==void 0){s8(K,Z,J);return}let H=q.firstDescendant(Q.P,"oleObj");if(H!==void 0){let W=H.attr(Q.P,"progId")??"object",G=(H.attr(Q.P,"name")??"").trim(),U=G.length===0?`Embedded object: ${W}`:G,Y=H.attrQualified(Q.R,"id"),C;if(Y!==void 0){let D=n(Z,Y);if(D!==void 0){let[I,V]=D;C={type:"asset",id:Z.assets.add("application/vnd.ms-ole-object",I,V)}}}J.push({type:"paragraph",inlines:[{type:"image",alt:U,source:C??{type:"unavailable"}}]});return}let X=q.firstDescendant(Q.CHART,"chart")?.attrQualified(Q.R,"id");if(X!==void 0){let W=n(Z,X);if(W!==void 0){let[G,U]=W;try{J.push(...v8($8(U)))}catch(Y){if(Y instanceof p&&Y.isFatal())throw Y;k(`skipping corrupt chart part ${G}: ${Y instanceof Error?Y.message:String(Y)}`)}return}}let N=q.firstDescendant(Q.DGM,"relIds")?.attrQualified(Q.R,"dm");if(N!==void 0){let W=n(Z,N);if(W!==void 0){let[G,U]=W;try{J.push(...k8($8(U)))}catch(Y){if(Y instanceof p&&Y.isFatal())throw Y;k(`skipping corrupt diagram part ${G}: ${Y instanceof Error?Y.message:String(Y)}`)}}}}function s8(q,Z,J){let H=q.find(Q.A,"tblPr")?.attr(Q.A,"firstRow"),$=H==="1"||H==="true"?1:0,X=new S8;for(let N of q.findAll(Q.A,"tr")){X.nextRow();for(let W of N.findAll(Q.A,"tc")){let G=W.attr(Q.A,"hMerge"),U=W.attr(Q.A,"vMerge");if(G==="1"||G==="true"||U==="1"||U==="true"){X.covered();continue}let C=W.attr(Q.A,"gridSpan"),D=W.attr(Q.A,"rowSpan"),I=Math.max(C!==void 0?W8(C)??1:1,1),V=Math.max(D!==void 0?W8(D)??1:1,1),A=[],O=W.find(Q.A,"txBody");if(O!==void 0)l(O,Z,void 0,A);X.place(L8(A,I,V))}}let j=X.finish("data");if(j.grid.length===0)return;j.headerRows=T8(j,$),J.push({type:"table",table:j})}function m(q,Z){try{return X8(q,Z).path}catch{return}}function U8(q){if(!/^\d+$/.test(q))return;let Z=Number(q);if(!Number.isSafeInteger(Z))return;return Z}function W8(q){if(!/^\d+$/.test(q))return;let Z=Number(q);if(!Number.isInteger(Z)||Z<0||Z>4294967295)return;return Z}function e8(q,Z){let J=q+Z;return J>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:J}var JZ=new Set(["pptx","pptm","ppsx","ppsm","potx","potm"]);function s(){return{id:"pptx",sniff(q,Z){if(ZZ(q)==="pptx")return 2;if(Z?.path!==void 0&&JZ.has(HZ(Z.path)??""))return 1;return 0},convert(q){return{markdown:qZ(z8(q))}}}}import{create as KZ}from"@mdgate/core";var QZ=KZ([s()]);function $Z(q,Z){return QZ(q,Z)}export{$Z as toMarkdown,s as pptx};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mdgate/pptx",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.13",
|
|
4
4
|
"description": "mdgate PowerPoint converter (pptx/pptm/ppsx/ppsm)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
"prepublishOnly": "bun run build"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@mdgate/containers": "0.6.
|
|
32
|
-
"@mdgate/core": "0.6.
|
|
33
|
-
"@mdgate/document": "0.6.
|
|
34
|
-
"@mdgate/office-common": "0.6.
|
|
35
|
-
"@mdgate/utils": "0.6.
|
|
31
|
+
"@mdgate/containers": "0.6.13",
|
|
32
|
+
"@mdgate/core": "0.6.13",
|
|
33
|
+
"@mdgate/document": "0.6.13",
|
|
34
|
+
"@mdgate/office-common": "0.6.13",
|
|
35
|
+
"@mdgate/utils": "0.6.13"
|
|
36
36
|
},
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public"
|