@mdgate/iwork-common 0.5.2 → 0.5.4

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.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { deref, derefAll, detectIWorkKind, getObject, type IWorkArchive, openIWork, } from './archive.js';
2
2
  export { bodyStorageFromPages, collectDrawableBlocks, collectDrawableObject, findDocumentObject, keynoteSlides, numbersSheets, slideToBlocks, } from './drawables.js';
3
3
  export { buildIwa, type IwaObject, parseIwa } from './iwa.js';
4
+ export { detectPreIwaKind, parsePreIwa } from './pre-iwa.js';
4
5
  export { decodeMessage, encodeBytesField, encodeMessageField, encodeStringField, encodeVarintField, fieldAllBytes, fieldBytes, fieldMessages, fieldString, fieldVarint, type ProtoField, readReference, readReferences, } from './protobuf.js';
5
6
  export { snappyDecode, snappyEncodeLiterals } from './snappy.js';
6
7
  export { shapeStorageBlocks, storageObjectToBlocks, storageToBlocks } from './storage.js';
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import{Package as XW}from"@mdgate/containers";import{ConvertError as x}from"@mdgate/core";import{warn as TW}from"@mdgate/utils";import{ConvertError as r}from"@mdgate/core";import{ConvertError as B}from"@mdgate/core";import{ConvertError as HW}from"@mdgate/core";function c(W,H=Number.MAX_SAFE_INTEGER){let q=0,[J,Q]=E(W,0);if(q=Q,J>H)throw HW.malformed(`snappy block declares ${J} decompressed bytes`);let _=new Uint8Array(J),X=0;while(q<W.length&&X<J){let $=W[q];q+=1;let G=$&3;if(G===0){let U=$>>2;if(U<60)U+=1;else{let F=U-59;U=0;for(let A=0;A<F;A+=1){if(q>=W.length)throw L("truncated snappy literal length");U|=W[q]<<8*A,q+=1}U+=1}if(q+U>W.length||X+U>_.length)throw L("truncated snappy literal");_.set(W.subarray(q,q+U),X),q+=U,X+=U;continue}let K,z;if(G===1){if(q>=W.length)throw L("truncated snappy copy");K=($>>2&7)+4,z=$>>5<<8|W[q],q+=1}else if(G===2){if(q+2>W.length)throw L("truncated snappy copy");K=($>>2)+1,z=W[q]|W[q+1]<<8,q+=2}else{if(q+4>W.length)throw L("truncated snappy copy");K=($>>2)+1,z=W[q]|W[q+1]<<8|W[q+2]<<16|W[q+3]<<24,q+=4}if(z===0||z>X||X+K>_.length)throw L("invalid snappy copy");for(let U=0;U<K;U+=1)_[X]=_[X-z],X+=1}if(X!==J)throw L("snappy length mismatch");return _}function f(W){let H=[];n(H,W.length);let q=0;while(q<W.length){let J=W.length-q,Q=Math.min(J,65536);RW(H,W.subarray(q,q+Q)),q+=Q}return Uint8Array.from(H)}function RW(W,H){let q=H.length;if(q<=60)W.push(q-1<<2|0);else if(q<=256)W.push(240,q-1);else if(q<=65536)W.push(244,q-1&255,q-1>>8&255);else throw Error("literal too large");for(let J=0;J<H.length;J+=1)W.push(H[J])}function E(W,H){let q=0,J=0,Q=H;while(Q<W.length&&J<=63){let _=W[Q];if(Q+=1,q+=(_&127)*2**J,(_&128)===0)return[q,Q];J+=7}throw L("truncated varint")}function n(W,H){let q=H>>>0;while(q>=128)W.push(q&127|128),q>>>=7;W.push(q)}function L(W){return HW.malformed(W)}function M(W){let H=[],q=0;while(q<W.length){let[J,Q]=E(W,q);q=Q;let _=J>>>3,X=J&7;if(_===0)break;if(X===0){let[$,G]=E(W,q);q=G,H.push({field:_,value:{kind:"varint",value:$}})}else if(X===1){if(q+8>W.length)throw B.malformed("truncated fixed64");let $=new DataView(W.buffer,W.byteOffset+q,8);H.push({field:_,value:{kind:"fixed64",value:$.getBigUint64(0,!0)}}),q+=8}else if(X===5){if(q+4>W.length)throw B.malformed("truncated fixed32");let $=new DataView(W.buffer,W.byteOffset+q,4);H.push({field:_,value:{kind:"fixed32",value:$.getUint32(0,!0)}}),q+=4}else if(X===2){let[$,G]=E(W,q);if(q=G,q+$>W.length)throw B.malformed("truncated length-delimited");H.push({field:_,value:{kind:"bytes",value:W.subarray(q,q+$)}}),q+=$}else throw B.malformed(`unsupported protobuf wire type ${X}`)}return H}function Z(W,H){for(let q of W)if(q.field===H&&q.value.kind==="bytes")return q.value.value;return}function D(W,H){for(let q of W)if(q.field===H&&q.value.kind==="varint")return q.value.value;return}function k(W,H){let q=Z(W,H);if(q===void 0)return;return new TextDecoder("utf-8").decode(q)}function S(W,H){let q=[];for(let J of W)if(J.field===H&&J.value.kind==="bytes")q.push(M(J.value.value));return q}function LW(W,H){let q=[];for(let J of W)if(J.field===H&&J.value.kind==="bytes")q.push(J.value.value);return q}function Y(W){if(W===void 0)return;return D(M(W),1)}function R(W,H){let q=[];for(let J of S(W,H)){let Q=D(J,1);if(Q!==void 0)q.push(Q)}return q}function EW(W,H){let q=[];return JW(q,W,0),l(q,H),q}function d(W,H){let q=[];JW(q,W,2),l(q,H.length);for(let J=0;J<H.length;J+=1)q.push(H[J]);return q}function IW(W,H){return d(W,new TextEncoder().encode(H))}function wW(W,H){return d(W,Uint8Array.from(H))}function JW(W,H,q){l(W,H<<3|q)}function l(W,H){let q=H>>>0;while(q>=128)W.push(q&127|128),q>>>=7;W.push(q)}function a(W){let H=[],q=[],J=0,Q=0;while(Q+4<=W.length){let $=W[Q],G=W[Q+1]|W[Q+2]<<8|W[Q+3]<<16;if(Q+=4,G===0)continue;if(Q+G>W.length)throw r.malformed("truncated IWA snappy chunk");let K=W.subarray(Q,Q+G);if(Q+=G,$!==0)continue;let z=c(K);J+=z.length,q.push(z)}if(q.length===0)return H;if(q.length===1)return QW(q[0],H),H;let _=new Uint8Array(J),X=0;for(let $ of q)_.set($,X),X+=$.length;return QW(_,H),H}function QW(W,H){let q=0;while(q<W.length){let[J,Q]=E(W,q);if(J===0)break;if(Q+J>W.length)throw r.malformed("truncated ArchiveInfo");let _=W.subarray(Q,Q+J);q=Q+J;let X=M(_),$=D(X,1)??0,G=S(X,2);for(let K of G){let z=D(K,1)??0,U=D(K,3)??0;if(q+U>W.length)throw r.malformed("truncated IWA payload");let F=W.subarray(q,q+U);q+=U,H.push({id:$,type:z,payload:F,fields:M(F)})}}}function BW(W){let H=[];for(let Q of W){let _=[...o(1,Q.type),...o(3,Q.payload.length)],X=[...o(1,Q.id),...kW(2,Uint8Array.from(_))];n(H,X.length);for(let $ of X)H.push($);for(let $=0;$<Q.payload.length;$+=1)H.push(Q.payload[$])}let q=f(Uint8Array.from(H)),J=new Uint8Array(4+q.length);return J[0]=0,J[1]=q.length&255,J[2]=q.length>>8&255,J[3]=q.length>>16&255,J.set(q,4),J}function o(W,H){let q=[];return T(q,W<<3|0),T(q,H),q}function kW(W,H){let q=[];T(q,W<<3|2),T(q,H.length);for(let J=0;J<H.length;J+=1)q.push(H[J]);return q}function T(W,H){let q=H>>>0;while(q>=128)W.push(q&127|128),q>>>=7;W.push(q)}var N={TP_DOCUMENT:1e4,TP_PLACEHOLDER:7,TN_DOCUMENT:1,TN_SHEET:2,KN_DOCUMENT:1,KN_SHOW:2,KN_SLIDE_NODE:4,KN_SLIDE:5,KN_SLIDE_ALT:6,KN_PLACEHOLDER:12,TSWP_STORAGE:2001,TSWP_STORAGE_ALT:2005,TSWP_SHAPE_INFO:2011,TSWP_CHARACTER_STYLE:2021,TSWP_PARAGRAPH_STYLE:2022,TSWP_LIST_STYLE:2023,TSWP_HYPERLINK:2032,TSWP_DRAWABLE_ATTACHMENT:2003,TSD_DRAWABLE:3002,TSD_SHAPE:3004,TSD_IMAGE:3005,TSD_GROUP:3008,TST_TABLE_INFO:6000,TST_TABLE_MODEL:6001,TST_TILE:6002,TST_TABLE_DATA_LIST:6005,TST_TABLE_DATA_LIST_ALT:6201,TST_RICH_TEXT_PAYLOAD:6218,TST_WP_TABLE_INFO:6007};function GW(W,H){if(!UW(W))throw x.malformed("not a readable iWork package");let q;try{q=XW.open(W)}catch(X){if(X instanceof x)throw X;throw x.malformed(`not a readable iWork package: ${X instanceof Error?X.message:String(X)}`)}if(gW(q))throw x.encrypted();let J=new Map;_W(q,J);let Q=q.optionalPart("Index.zip");if(Q!==void 0){let X;try{X=XW.open(Q)}catch($){throw x.malformed(`unreadable Index.zip: ${$ instanceof Error?$.message:String($)}`)}_W(X,J)}if(J.size===0)throw x.malformed("no IWA objects found");let _=jW(J)??H;if(_===void 0)throw x.malformed("unrecognized iWork document kind");if(H!==void 0&&_!==H)throw x.malformed(`expected ${H} document, found ${_}`);return{kind:_,objects:J}}function mW(W){if(!UW(W))return;try{return GW(W).kind}catch(H){if(H instanceof x&&H.code==="encrypted")return;return}}function O(W,H){if(H===void 0)return;return W.objects.get(H)}function V(W,H,q){let J=Y(Z(H,q));return O(W,J)}function m(W,H,q){let J=[];for(let Q of R(H,q)){let _=W.objects.get(Q);if(_!==void 0)J.push(_)}return J}function _W(W,H){for(let q of W.partNames()){if(!q.toLowerCase().endsWith(".iwa"))continue;let J=W.optionalPart(q);if(J===void 0)continue;let Q;try{Q=a(J)}catch(_){if(_ instanceof x&&(_.code==="encrypted"||_.isFatal()))throw _;TW(`skipping unreadable IWA ${q}: ${_ instanceof Error?_.message:String(_)}`);continue}for(let _ of Q)if(!H.has(_.id))H.set(_.id,_)}}function jW(W){for(let q of W.values())if(q.type===N.TP_DOCUMENT)return"pages";let H=W.get(1);if(H!==void 0&&H.type===1)return $W(H.fields);for(let q of W.values())if(q.type===1){let J=$W(q.fields);if(J!==void 0)return J}for(let q of W.values()){if(q.type===N.KN_SLIDE||q.type===N.KN_SLIDE_ALT||q.type===N.KN_SHOW)return"keynote";if(q.type===N.TN_SHEET)return"numbers"}return}function $W(W){let H=R(W,1),q=Y(Z(W,2)),J=Z(W,8)!==void 0,Q=Z(W,3)!==void 0&&!J;if(H.length>0||J)return"numbers";if(q!==void 0||Q)return"keynote";return}function gW(W){for(let H of W.partNames()){let q=H.toLowerCase();if(q.includes("encrypted")||q.endsWith(".iwae"))return!0}return!1}function UW(W){return W.length>=4&&W[0]===80&&W[1]===75&&W[2]===3&&W[3]===4}import{inlinesAreEmpty as KW,inlinesToPlainText as hW,PLAIN as j,plain as Oq}from"@mdgate/document";function I(W,H){let q=vW(H,3);if(q.length===0)return[];let Q=[...q.join("")],_=i(H,5),X=i(H,8),$=i(H,7),G=[];if(_.length===0){let K=ZW(W,Q,0,Q.length,X);if(!KW(K))G.push({type:"paragraph",inlines:K});return G}for(let K=0;K<_.length;K+=1){let z=_[K].index,U=K+1<_.length?_[K+1].index:Q.length;if(z>=U||z>=Q.length)continue;let F=O(W,_[K].objectId),{level:A,emphasis:C}=zW(W,F?.fields),P=ZW(W,Q,z,U,X,C);if(KW(P))continue;if(A!==void 0&&A>=1&&A<=6)G.push({type:"heading",level:A,anchor:hW(P),content:P});else G.push({type:"paragraph",inlines:P})}return G}function uW(W,H){let q=O(W,H);if(q===void 0)return[];if(q.type!==N.TSWP_STORAGE&&q.type!==N.TSWP_STORAGE_ALT);return I(W,q.fields)}function i(W,H){let q=Z(W,H);if(q===void 0)return[];let J=[];for(let Q of S(M(q),1)){let _=D(Q,1);if(_===void 0)continue;J.push({index:_,objectId:Y(Z(Q,2))})}return J}function vW(W,H){let q=[];for(let J of W){if(J.field!==H||J.value.kind!=="bytes")continue;q.push(new TextDecoder("utf-8").decode(J.value.value))}return q}function ZW(W,H,q,J,Q,_=j){let X=[],$=q,G=Q.filter((z)=>z.index>=q&&z.index<J),K=(z,U,F)=>{if(z>=U)return;let A=H.slice(z,U).join("");if(A.length===0)return;X.push({type:"text",text:A,style:F})};if(G.length===0)return K(q,Math.min(J,H.length),_),X;for(let z=0;z<G.length;z+=1){let U=G[z].index,F=z+1<G.length?G[z+1].index:J,A=Math.min(F,J);if(U>$)K($,Math.min(U,J),_),$=U;if(U>=J)break;let C=O(W,G[z].objectId),P=t(_,FW(W,C?.fields));K(U,A,P),$=A}if($<J)K($,Math.min(J,H.length),_);return pW(X)}function pW(W){let H=W.map((J)=>{if(J.type!=="text")return J;return{...J,text:J.text.replace(/\u2029/g,"").replace(/\u2028/g,`
2
- `)}}),q=H[H.length-1];if(q?.type==="text"&&q.text.endsWith(`
3
- `)){let J=q.text.replace(/\n+$/,"");if(J.length===0)return H.slice(0,-1);return[...H.slice(0,-1),{...q,text:J}]}return H}function zW(W,H){if(H===void 0)return{level:void 0,emphasis:j};let q=Z(H,12),J=Z(H,11),Q;if(q!==void 0)Q=D(M(q),27);let _=Z(H,1);if(_!==void 0){let X=Y(Z(M(_),3)),$=O(W,X);if($!==void 0){let G=zW(W,$.fields);if(Q===void 0)Q=G.level;return{level:Q,emphasis:t(G.emphasis,s(J))}}}return{level:Q,emphasis:s(J)}}function FW(W,H){if(H===void 0)return j;let q=Z(H,11),J=s(q),Q=Z(H,1);if(Q!==void 0){let _=Y(Z(M(Q),3)),X=O(W,_);if(X!==void 0)return t(FW(W,X.fields),J)}return J}function s(W){if(W===void 0)return j;let H=M(W),q=D(H,1)===1,J=D(H,2)===1,Q=(D(H,12)??0)>0;return{bold:q,italic:J,strike:Q,code:!1}}function t(W,H){return{bold:H.bold||W.bold,italic:H.italic||W.italic,strike:H.strike||W.strike,code:H.code||W.code}}function g(W,H){if(H.type===N.TSWP_SHAPE_INFO||H.type===N.TP_PLACEHOLDER||H.type===N.KN_PLACEHOLDER){let q=H.fields;if(H.type===N.TP_PLACEHOLDER||H.type===N.KN_PLACEHOLDER){let Q=V(W,q,1);if(Q!==void 0)q=Q.fields}let J=V(W,q,2);if(J!==void 0)return I(W,J.fields)}return[]}import{cellFromInlines as yW,emptyDocument as bW,heading as cW,plain as AW,tableFromRows as fW}from"@mdgate/document";function DW(W,H){let q=H,J=V(W,H,1),Q=V(W,q,2);if(Q===void 0&&J!==void 0)q=J.fields,Q=V(W,q,2);if(Q===void 0)return[];return nW(W,Q.fields)}function nW(W,H){let q=D(H,6)??0,J=D(H,7)??0;if(q===0||J===0)return[];let Q=Z(H,4);if(Q===void 0)return[];let _=M(Q),X=dW(W,Y(Z(_,4))),$=lW(W,Y(Z(_,17))),G=Array.from({length:q},()=>Array.from({length:J},()=>"")),K=Z(_,3);if(K===void 0)return G;let z=M(K);for(let U of S(z,1)){let F=O(W,Y(Z(U,2)));if(F===void 0)continue;let A=S(F.fields,5);for(let C of A){let P=D(C,1)??0,xW=Z(C,6)??Z(C,3)??new Uint8Array,p=Z(C,7)??Z(C,4)??new Uint8Array;if(p.length<2)continue;let y=new Uint8Array(p.byteLength);y.set(p);let WW=new Uint16Array(y.buffer,0,Math.floor(y.length/2));for(let w=0;w<WW.length&&w<J;w+=1){let qW=WW[w];if(qW===65535)continue;let b=P;if(b<0||b>=q)continue;G[b][w]=oW(xW,qW,X,$,W)}}}return aW(G)}function YW(W){let H=bW(),q=W.length>1;for(let J of W){if(J.rows.length===0)continue;if(q)H.blocks.push(cW(2,[AW(J.name)]));let Q=J.rows.map((X)=>X.map(($)=>yW([AW($)]))),_=J.rows.length>1?1:0;H.blocks.push({type:"table",table:fW(Q,_,"data")})}return H}function OW(W,H){let q=DW(W,H);if(q.length===0)return[];return YW([{name:"",rows:q}]).blocks}function dW(W,H){let q=new Map,J=O(W,H);if(J===void 0)return q;for(let Q of S(J.fields,3)){let _=D(Q,1),X=k(Q,3);if(_!==void 0&&X!==void 0)q.set(_,X)}return q}function lW(W,H){let q=new Map,J=O(W,H);if(J===void 0)return q;for(let Q of S(J.fields,3)){let _=D(Q,1),X=Y(Z(Q,9));if(_!==void 0&&X!==void 0)q.set(_,X)}return q}function oW(W,H,q,J,Q){if(H+8>W.length)return"";let _=W[H],X,$,G,K;if(_===5||W[H]>=5)return X=W[H+1],$=W[H+8]|W[H+9]<<8|W[H+10]<<16|W[H+11]<<24,G=4,K=H+12,rW(W,X,$,K,q,J,Q);if(W[H]===4)X=W[H+1],$=W[H+4]|W[H+5]<<8,G=2,K=H+8;else X=W[H+2],$=W[H+4]|W[H+5]<<8,G=2,K=H+8;let z=NW($&65535),U=K+z*4;if(U=K+NW($)*4,X===0)return"";if(X===2||X===5||X===6||X===7){if(U+8>W.length)return"";let F=h(W,U);if(X===6)return F!==0?"TRUE":"FALSE";if(X===5)return VW(F);return CW(F)}if(X===3||X===9){if(U+4>W.length)return"";let F=W[U]|W[U+1]<<8|W[U+2]<<16|W[U+3]<<24;if(X===3)return q.get(F>>>0)??"";let A=J.get(F>>>0);return MW(Q,A)}return""}function rW(W,H,q,J,Q,_,X){let $=J,G=(A,C)=>{if((q&A)===0)return;if($+C>W.length)return;let P=W.subarray($,$+C);return $+=C,P};G(1,16);let K=G(2,8),z=G(4,8),U=G(8,4),F=G(16,4);if(G(32,4),G(64,4),G(128,4),G(256,4),G(512,4),G(1024,4),G(2048,4),H===0)return"";if(H===2&&K!==void 0)return CW(h(K,0));if(H===5&&z!==void 0)return VW(h(z,0));if(H===6&&K!==void 0)return h(K,0)!==0?"TRUE":"FALSE";if(H===3&&U!==void 0){let A=U[0]|U[1]<<8|U[2]<<16|U[3]<<24;return Q.get(A>>>0)??""}if(H===9&&F!==void 0){let A=F[0]|F[1]<<8|F[2]<<16|F[3]<<24;return MW(X,_.get(A>>>0))}if(U!==void 0){let A=U[0]|U[1]<<8|U[2]<<16|U[3]<<24,C=Q.get(A>>>0);if(C!==void 0)return C}return""}function MW(W,H){let q=O(W,H);if(q===void 0)return"";let J=Y(Z(q.fields,1)),Q=O(W,J);if(Q===void 0)return"";return I(W,Q.fields).map((X)=>{if(X.type==="paragraph")return X.inlines.map(($)=>$.type==="text"?$.text:"").join("");if(X.type==="heading")return X.content.map(($)=>$.type==="text"?$.text:"").join("");return""}).filter(Boolean).join(" ")}function h(W,H){let q=new Uint8Array(8);return q.set(W.subarray(H,H+8)),new DataView(q.buffer).getFloat64(0,!0)}function aW(W){let H=-1,q=-1;for(let J=0;J<W.length;J+=1)for(let Q=0;Q<W[J].length;Q+=1)if(W[J][Q]!==""){if(J>H)H=J;if(Q>q)q=Q}if(H<0)return[];return W.slice(0,H+1).map((J)=>J.slice(0,q+1))}function NW(W){let H=W&65535,q=0;while(H)H&=H-1,q+=1;return q}function CW(W){if(!Number.isFinite(W))return"";if(Number.isInteger(W))return String(W);return String(Number(W.toPrecision(12)))}function VW(W){let H=(W+978307200)*1000,q=new Date(H);if(Number.isNaN(q.getTime()))return"";return q.toISOString().slice(0,10)}function SW(W,H){if(H.type===N.TST_TABLE_INFO||H.type===N.TST_WP_TABLE_INFO)return OW(W,H.fields);return[]}function u(W,H){let q=O(W,H);if(q===void 0)return[];return e(W,q)}function e(W,H){let q=SW(W,H);if(q.length>0)return q;let J=g(W,H);if(J.length>0)return J;if(H.type===N.TSD_GROUP){let Q=[];for(let _ of m(W,H.fields,2))Q.push(...e(W,_));return Q}if(H.type===N.TSWP_DRAWABLE_ATTACHMENT){let Q=Y(Z(H.fields,1));return u(W,Q)}return[]}function v(W,H){let q=W.objects.get(1);if(q!==void 0&&q.type===H)return q;for(let J of W.objects.values())if(J.type===H)return J;return}function iW(W){let H=v(W,N.TP_DOCUMENT);if(H===void 0)return;return V(W,H.fields,4)?.fields}function sW(W){let H=v(W,N.TN_DOCUMENT)??[...W.objects.values()].find((J)=>J.type===1&&R(J.fields,1).length>0);if(H===void 0)return[];let q=[];for(let J of m(W,H.fields,1)){let Q=Z(J.fields,1),_=Q!==void 0?new TextDecoder().decode(Q):"Sheet";q.push({name:_,drawables:R(J.fields,2)})}return q}function tW(W){let H=v(W,N.KN_DOCUMENT)??[...W.objects.values()].find((X)=>{if(X.type!==1)return!1;return Y(Z(X.fields,2))!==void 0});if(H===void 0)return[];let q=V(W,H.fields,2);if(q===void 0)return[];let J=Z(q.fields,3),Q;if(J!==void 0){let X=Y(J);if(X!==void 0&&O(W,X)?.type===N.KN_SLIDE_NODE)Q=X;else Q=Y(Z(M(J),1))??X}let _=[];return PW(W,Q,_),_}function PW(W,H,q){let J=O(W,H);if(J===void 0)return;let Q=Y(Z(J.fields,2));if(Q!==void 0){let _=O(W,Q);if(_!==void 0){let X=D(_.fields,19);if(X===void 0||X!==0)q.push(Q)}}for(let _ of R(J.fields,1))PW(W,_,q)}function eW(W,H){let q=O(W,H);if(q===void 0)return[];let J=[],Q=(X)=>{J.push(...u(W,Y(Z(q.fields,X))))};Q(5),Q(6),Q(30);for(let X of R(q.fields,7))J.push(...u(W,X));let _=V(W,q.fields,27);if(_!==void 0){let X=g(W,_);if(X.length>0)J.push({type:"blockQuote",blocks:X});else{let $=I(W,_.fields);if($.length>0)J.push({type:"blockQuote",blocks:$})}}return J}export{DW as tableInfoToRows,OW as tableBlocksFromInfo,I as storageToBlocks,uW as storageObjectToBlocks,f as snappyEncodeLiterals,c as snappyDecode,eW as slideToBlocks,YW as sheetsToDocument,g as shapeStorageBlocks,R as readReferences,Y as readReference,a as parseIwa,GW as openIWork,sW as numbersSheets,tW as keynoteSlides,O as getObject,v as findDocumentObject,D as fieldVarint,k as fieldString,S as fieldMessages,Z as fieldBytes,LW as fieldAllBytes,EW as encodeVarintField,IW as encodeStringField,wW as encodeMessageField,d as encodeBytesField,mW as detectIWorkKind,m as derefAll,V as deref,M as decodeMessage,e as collectDrawableObject,u as collectDrawableBlocks,BW as buildIwa,iW as bodyStorageFromPages,N as TYPE};
1
+ import{Package as xW}from"@mdgate/containers";import{ConvertError as k}from"@mdgate/core";import{warn as aW}from"@mdgate/utils";import{ConvertError as i}from"@mdgate/core";import{ConvertError as I}from"@mdgate/core";import{ConvertError as _W}from"@mdgate/core";function f(W,$=Number.MAX_SAFE_INTEGER){let X=0,[U,q]=R(W,0);if(X=q,U>$)throw _W.malformed(`snappy block declares ${U} decompressed bytes`);let K=new Uint8Array(U),_=0;while(X<W.length&&_<U){let H=W[X];X+=1;let J=H&3;if(J===0){let Q=H>>2;if(Q<60)Q+=1;else{let z=Q-59;Q=0;for(let F=0;F<z;F+=1){if(X>=W.length)throw L("truncated snappy literal length");Q|=W[X]<<8*F,X+=1}Q+=1}if(X+Q>W.length||_+Q>K.length)throw L("truncated snappy literal");K.set(W.subarray(X,X+Q),_),X+=Q,_+=Q;continue}let G,A;if(J===1){if(X>=W.length)throw L("truncated snappy copy");G=(H>>2&7)+4,A=H>>5<<8|W[X],X+=1}else if(J===2){if(X+2>W.length)throw L("truncated snappy copy");G=(H>>2)+1,A=W[X]|W[X+1]<<8,X+=2}else{if(X+4>W.length)throw L("truncated snappy copy");G=(H>>2)+1,A=W[X]|W[X+1]<<8|W[X+2]<<16|W[X+3]<<24,X+=4}if(A===0||A>_||_+G>K.length)throw L("invalid snappy copy");for(let Q=0;Q<G;Q+=1)K[_]=K[_-A],_+=1}if(_!==U)throw L("snappy length mismatch");return K}function d(W){let $=[];l($,W.length);let X=0;while(X<W.length){let U=W.length-X,q=Math.min(U,65536);gW($,W.subarray(X,X+q)),X+=q}return Uint8Array.from($)}function gW(W,$){let X=$.length;if(X<=60)W.push(X-1<<2|0);else if(X<=256)W.push(240,X-1);else if(X<=65536)W.push(244,X-1&255,X-1>>8&255);else throw Error("literal too large");for(let U=0;U<$.length;U+=1)W.push($[U])}function R(W,$){let X=0,U=0,q=$;while(q<W.length&&U<=63){let K=W[q];if(q+=1,X+=(K&127)*2**U,(K&128)===0)return[X,q];U+=7}throw L("truncated varint")}function l(W,$){let X=$>>>0;while(X>=128)W.push(X&127|128),X>>>=7;W.push(X)}function L(W){return _W.malformed(W)}function O(W){let $=[],X=0;while(X<W.length){let[U,q]=R(W,X);X=q;let K=U>>>3,_=U&7;if(K===0)break;if(_===0){let[H,J]=R(W,X);X=J,$.push({field:K,value:{kind:"varint",value:H}})}else if(_===1){if(X+8>W.length)throw I.malformed("truncated fixed64");let H=new DataView(W.buffer,W.byteOffset+X,8);$.push({field:K,value:{kind:"fixed64",value:H.getBigUint64(0,!0)}}),X+=8}else if(_===5){if(X+4>W.length)throw I.malformed("truncated fixed32");let H=new DataView(W.buffer,W.byteOffset+X,4);$.push({field:K,value:{kind:"fixed32",value:H.getUint32(0,!0)}}),X+=4}else if(_===2){let[H,J]=R(W,X);if(X=J,X+H>W.length)throw I.malformed("truncated length-delimited");$.push({field:K,value:{kind:"bytes",value:W.subarray(X,X+H)}}),X+=H}else if(_!==3&&_!==4)throw I.malformed(`unsupported protobuf wire type ${_}`)}return $}function Z(W,$){for(let X of W)if(X.field===$&&X.value.kind==="bytes")return X.value.value;return}function N(W,$){for(let X of W)if(X.field===$&&X.value.kind==="varint")return X.value.value;return}function T(W,$){let X=Z(W,$);if(X===void 0)return;return new TextDecoder("utf-8").decode(X)}function P(W,$){let X=[];for(let U of W)if(U.field===$&&U.value.kind==="bytes")X.push(O(U.value.value));return X}function pW(W,$){let X=[];for(let U of W)if(U.field===$&&U.value.kind==="bytes")X.push(U.value.value);return X}function x(W){if(W===void 0)return;return N(O(W),1)}function S(W,$){let X=[];for(let U of P(W,$)){let q=N(U,1);if(q!==void 0)X.push(q)}return X}function hW(W,$){let X=[];return HW(X,W,0),r(X,$),X}function o(W,$){let X=[];HW(X,W,2),r(X,$.length);for(let U=0;U<$.length;U+=1)X.push($[U]);return X}function yW(W,$){return o(W,new TextEncoder().encode($))}function nW(W,$){return o(W,Uint8Array.from($))}function HW(W,$,X){r(W,$<<3|X)}function r(W,$){let X=$>>>0;while(X>=128)W.push(X&127|128),X>>>=7;W.push(X)}function s(W){let $=[],X=[],U=0,q=0;while(q+4<=W.length){let H=W[q],J=W[q+1]|W[q+2]<<8|W[q+3]<<16;if(q+=4,J===0)continue;if(q+J>W.length)throw i.malformed("truncated IWA snappy chunk");let G=W.subarray(q,q+J);if(q+=J,H!==0)continue;let A=f(G);U+=A.length,X.push(A)}if(X.length===0)return $;if(X.length===1)return JW(X[0],$),$;let K=new Uint8Array(U),_=0;for(let H of X)K.set(H,_),_+=H.length;return JW(K,$),$}function JW(W,$){let X=0;while(X<W.length){let[U,q]=R(W,X);if(U===0)break;if(q+U>W.length)throw i.malformed("truncated ArchiveInfo");let K=W.subarray(q,q+U);X=q+U;let _=O(K),H=N(_,1)??0,J=P(_,2);for(let G of J){let A=N(G,1)??0,Q=N(G,3)??0;if(X+Q>W.length)throw i.malformed("truncated IWA payload");let z=W.subarray(X,X+Q);X+=Q,$.push({id:H,type:A,payload:z,fields:O(z)})}}}function vW(W){let $=[];for(let q of W){let K=[...a(1,q.type),...a(3,q.payload.length)],_=[...a(1,q.id),...bW(2,Uint8Array.from(K))];l($,_.length);for(let H of _)$.push(H);for(let H=0;H<q.payload.length;H+=1)$.push(q.payload[H])}let X=d(Uint8Array.from($)),U=new Uint8Array(4+X.length);return U[0]=0,U[1]=X.length&255,U[2]=X.length>>8&255,U[3]=X.length>>16&255,U.set(X,4),U}function a(W,$){let X=[];return B(X,W<<3|0),B(X,$),X}function bW(W,$){let X=[];B(X,W<<3|2),B(X,$.length);for(let U=0;U<$.length;U+=1)X.push($[U]);return X}function B(W,$){let X=$>>>0;while(X>=128)W.push(X&127|128),X>>>=7;W.push(X)}import{Package as ZW,parseXml as cW}from"@mdgate/containers";import{ConvertError as m}from"@mdgate/core";import{emptyDocument as fW,heading as dW,plain as t}from"@mdgate/document";import{trim as QW}from"@mdgate/utils";var lW=["index.xml","index.apxl","presentation.apxl"];function j(W){if(!NW(W))return;let $;try{$=ZW.open(W)}catch{return}if(DW($))return zW($)??"pages";return AW($)}function oW(W,$){if(!NW(W))throw m.malformed("not a readable iWork package");let X;try{X=ZW.open(W)}catch(H){if(H instanceof m)throw H;throw m.malformed(`not a readable iWork package: ${H instanceof Error?H.message:String(H)}`)}if(DW(X))throw m.encrypted();let U=AW(X)??$;if(U===void 0)throw m.malformed("unrecognized iWork document kind");if($!==void 0&&U!==$)throw m.malformed(`expected ${$} document, found ${U}`);let q=FW(X);if(q===void 0)throw m.malformed("no IWA objects found");let K=rW(q),_=fW();if(K.length===0)return _;if(U==="keynote"||U==="numbers"){_.blocks.push(dW(2,[t(K[0])]));for(let H of K.slice(1))_.blocks.push({type:"paragraph",inlines:[t(H)]});return _}for(let H of K)_.blocks.push({type:"paragraph",inlines:[t(H)]});return _}function AW(W){let $=[...W.partNames()].map((q)=>q.toLowerCase()),X=zW(W),U=FW(W);if(U!==void 0){let q=U.childElems()[0]??U,K=q.ns??"",_=q.local;if(K.includes("/ls")||_==="workbook")return"numbers";if(K.includes("/key")||_==="presentation"||_==="slideshow")return"keynote";if(K.includes("/sl")&&_==="presentation")return"keynote";if(K.includes("/pg")||K.includes("/sl")||_==="document")return X??"pages"}if(X!==void 0)return X;if($.some((q)=>q.endsWith("index.xml")||q.endsWith("index.apxl")))return"pages";return}function zW(W){let $=!1,X=!1,U=!1;for(let q of W.partNames()){let K=q.toLowerCase();if(K.endsWith("presentation.apxl")||K.includes("slide"))$=!0;if(K.includes("calculation")||K.includes("tables/"))X=!0;if(K.endsWith("index.xml")||K.endsWith("index.apxl"))U=!0}if($&&!X)return"keynote";if(X&&!$)return"numbers";if(U)return"pages";return}function FW(W){for(let $ of lW){let X=GW(W,$);if(X!==void 0)return X}for(let $ of W.partNames()){let X=$.toLowerCase();if(!(X.endsWith(".xml")||X.endsWith(".apxl")))continue;if(X.includes("preview")||X.includes("quicklook")||X.includes("thumbnail"))continue;if(X.includes("index")||X.includes("presentation")||X.includes("document")){let U=GW(W,$);if(U!==void 0)return U}}return}function GW(W,$){try{let X=W.optionalPart($);if(X===void 0)return;return cW(X)}catch{return}}function rW(W){let $=[],X=new Set;for(let q of W.descendantElems()){if(q.local!=="p"&&q.local!=="text")continue;let K=QW(q.text().replace(/\s+/g," "));if(K.length===0||X.has(K))continue;X.add(K),$.push(K)}if($.length>0)return $;let U=QW(W.text().replace(/\s+/g," "));return U.length===0?[]:[U]}function DW(W){for(let $ of W.partNames()){let X=$.toLowerCase();if(X.includes("encrypted")||X.endsWith(".iwae"))return!0}return!1}function NW(W){return W.length>=4&&W[0]===80&&W[1]===75&&W[2]===3&&W[3]===4}var D={TP_DOCUMENT:1e4,TP_PLACEHOLDER:7,TN_DOCUMENT:1,TN_SHEET:2,KN_DOCUMENT:1,KN_SHOW:2,KN_SLIDE_NODE:4,KN_SLIDE:5,KN_SLIDE_ALT:6,KN_PLACEHOLDER:12,TSWP_STORAGE:2001,TSWP_STORAGE_ALT:2005,TSWP_SHAPE_INFO:2011,TSWP_CHARACTER_STYLE:2021,TSWP_PARAGRAPH_STYLE:2022,TSWP_LIST_STYLE:2023,TSWP_HYPERLINK:2032,TSWP_DRAWABLE_ATTACHMENT:2003,TSD_DRAWABLE:3002,TSD_SHAPE:3004,TSD_IMAGE:3005,TSD_GROUP:3008,TST_TABLE_INFO:6000,TST_TABLE_MODEL:6001,TST_TILE:6002,TST_TABLE_DATA_LIST:6005,TST_TABLE_DATA_LIST_ALT:6201,TST_RICH_TEXT_PAYLOAD:6218,TST_WP_TABLE_INFO:6007};function CW(W,$){if(!MW(W))throw k.malformed("not a readable iWork package");let X;try{X=xW.open(W)}catch(_){if(_ instanceof k)throw _;throw k.malformed(`not a readable iWork package: ${_ instanceof Error?_.message:String(_)}`)}if(tW(X))throw k.encrypted();let U=new Map;YW(X,U);let q=X.optionalPart("Index.zip");if(q!==void 0){let _;try{_=xW.open(q)}catch(H){throw k.malformed(`unreadable Index.zip: ${H instanceof Error?H.message:String(H)}`)}YW(_,U)}if(U.size===0)throw k.malformed("no IWA objects found");let K=sW(U)??$;if(K===void 0)throw k.malformed("unrecognized iWork document kind");if($!==void 0&&K!==$)throw k.malformed(`expected ${$} document, found ${K}`);return{kind:K,objects:U}}function iW(W){if(!MW(W))return;try{return CW(W).kind}catch($){if($ instanceof k&&$.code==="encrypted")return j(W);return j(W)}}function Y(W,$){if($===void 0)return;return W.objects.get($)}function M(W,$,X){let U=x(Z($,X));return Y(W,U)}function u(W,$,X){let U=[];for(let q of S($,X)){let K=W.objects.get(q);if(K!==void 0)U.push(K)}return U}function YW(W,$){for(let X of W.partNames()){if(!X.toLowerCase().endsWith(".iwa"))continue;let U=W.optionalPart(X);if(U===void 0)continue;let q;try{q=s(U)}catch(K){if(K instanceof k&&(K.code==="encrypted"||K.isFatal()))throw K;aW(`skipping unreadable IWA ${X}: ${K instanceof Error?K.message:String(K)}`);continue}for(let K of q)if(!$.has(K.id))$.set(K.id,K)}}function sW(W){for(let X of W.values())if(X.type===D.TP_DOCUMENT)return"pages";let $=W.get(1);if($!==void 0&&$.type===1)return OW($.fields);for(let X of W.values())if(X.type===1){let U=OW(X.fields);if(U!==void 0)return U}for(let X of W.values()){if(X.type===D.KN_SLIDE||X.type===D.KN_SLIDE_ALT||X.type===D.KN_SHOW)return"keynote";if(X.type===D.TN_SHEET)return"numbers"}return}function OW(W){let $=S(W,1),X=x(Z(W,2)),U=Z(W,8)!==void 0,q=Z(W,3)!==void 0&&!U;if($.length>0||U)return"numbers";if(X!==void 0||q)return"keynote";return}function tW(W){for(let $ of W.partNames()){let X=$.toLowerCase();if(X.includes("encrypted")||X.endsWith(".iwae"))return!0}return!1}function MW(W){return W.length>=4&&W[0]===80&&W[1]===75&&W[2]===3&&W[3]===4}import{inlinesAreEmpty as PW,inlinesToPlainText as eW,PLAIN as g,plain as v0}from"@mdgate/document";function w(W,$){let X=X0($,3);if(X.length===0)return[];let q=[...X.join("")],K=e($,5),_=e($,8),H=e($,7),J=[];if(K.length===0){let G=VW(W,q,0,q.length,_);if(!PW(G))J.push({type:"paragraph",inlines:G});return J}for(let G=0;G<K.length;G+=1){let A=K[G].index,Q=G+1<K.length?K[G+1].index:q.length;if(A>=Q||A>=q.length)continue;let z=Y(W,K[G].objectId),{level:F,emphasis:C}=SW(W,z?.fields),V=VW(W,q,A,Q,_,C);if(PW(V))continue;if(F!==void 0&&F>=1&&F<=6)J.push({type:"heading",level:F,anchor:eW(V),content:V});else J.push({type:"paragraph",inlines:V})}return J}function W0(W,$){let X=Y(W,$);if(X===void 0)return[];if(X.type!==D.TSWP_STORAGE&&X.type!==D.TSWP_STORAGE_ALT);return w(W,X.fields)}function e(W,$){let X=Z(W,$);if(X===void 0)return[];let U=[];for(let q of P(O(X),1)){let K=N(q,1);if(K===void 0)continue;U.push({index:K,objectId:x(Z(q,2))})}return U}function X0(W,$){let X=[];for(let U of W){if(U.field!==$||U.value.kind!=="bytes")continue;X.push(new TextDecoder("utf-8").decode(U.value.value))}return X}function VW(W,$,X,U,q,K=g){let _=[],H=X,J=q.filter((A)=>A.index>=X&&A.index<U),G=(A,Q,z)=>{if(A>=Q)return;let F=$.slice(A,Q).join("");if(F.length===0)return;_.push({type:"text",text:F,style:z})};if(J.length===0)return G(X,Math.min(U,$.length),K),_;for(let A=0;A<J.length;A+=1){let Q=J[A].index,z=A+1<J.length?J[A+1].index:U,F=Math.min(z,U);if(Q>H)G(H,Math.min(Q,U),K),H=Q;if(Q>=U)break;let C=Y(W,J[A].objectId),V=XW(K,kW(W,C?.fields));G(Q,F,V),H=F}if(H<U)G(H,Math.min(U,$.length),K);return $0(_)}function $0(W){let $=W.map((U)=>{if(U.type!=="text")return U;return{...U,text:U.text.replace(/\u2029/g,"").replace(/\u2028/g,`
2
+ `)}}),X=$[$.length-1];if(X?.type==="text"&&X.text.endsWith(`
3
+ `)){let U=X.text.replace(/\n+$/,"");if(U.length===0)return $.slice(0,-1);return[...$.slice(0,-1),{...X,text:U}]}return $}function SW(W,$){if($===void 0)return{level:void 0,emphasis:g};let X=Z($,12),U=Z($,11),q;if(X!==void 0)q=N(O(X),27);let K=Z($,1);if(K!==void 0){let _=x(Z(O(K),3)),H=Y(W,_);if(H!==void 0){let J=SW(W,H.fields);if(q===void 0)q=J.level;return{level:q,emphasis:XW(J.emphasis,WW(U))}}}return{level:q,emphasis:WW(U)}}function kW(W,$){if($===void 0)return g;let X=Z($,11),U=WW(X),q=Z($,1);if(q!==void 0){let K=x(Z(O(q),3)),_=Y(W,K);if(_!==void 0)return XW(kW(W,_.fields),U)}return U}function WW(W){if(W===void 0)return g;let $=O(W),X=N($,1)===1,U=N($,2)===1,q=(N($,12)??0)>0;return{bold:X,italic:U,strike:q,code:!1}}function XW(W,$){return{bold:$.bold||W.bold,italic:$.italic||W.italic,strike:$.strike||W.strike,code:$.code||W.code}}function p(W,$){if($.type===D.TSWP_SHAPE_INFO||$.type===D.TP_PLACEHOLDER||$.type===D.KN_PLACEHOLDER){let X=$.fields;if($.type===D.TP_PLACEHOLDER||$.type===D.KN_PLACEHOLDER){let q=M(W,X,1);if(q!==void 0)X=q.fields}let U=M(W,X,2);if(U!==void 0)return w(W,U.fields)}return[]}import{cellFromInlines as U0,emptyDocument as q0,heading as K0,plain as LW,tableFromRows as _0}from"@mdgate/document";function mW(W,$){let X=$,U=M(W,$,1),q=M(W,X,2);if(q===void 0&&U!==void 0)X=U.fields,q=M(W,X,2);if(q===void 0)return[];return H0(W,q.fields)}function H0(W,$){let X=N($,6)??0,U=N($,7)??0;if(X===0||U===0)return[];let q=Z($,4);if(q===void 0)return[];let K=O(q),_=J0(W,x(Z(K,4))),H=Q0(W,x(Z(K,17))),J=Array.from({length:X},()=>Array.from({length:U},()=>"")),G=Z(K,3);if(G===void 0)return J;let A=O(G);for(let Q of P(A,1)){let z=Y(W,x(Z(Q,2)));if(z===void 0)continue;let F=P(z.fields,5);for(let C of F){let V=N(C,1)??0,uW=Z(C,6)??Z(C,3)??new Uint8Array,v=Z(C,7)??Z(C,4)??new Uint8Array;if(v.length<2)continue;let b=new Uint8Array(v.byteLength);b.set(v);let qW=new Uint16Array(b.buffer,0,Math.floor(b.length/2));for(let E=0;E<qW.length&&E<U;E+=1){let KW=qW[E];if(KW===65535)continue;let c=V;if(c<0||c>=X)continue;J[c][E]=G0(uW,KW,_,H,W)}}}return A0(J)}function wW(W){let $=q0(),X=W.length>1;for(let U of W){if(U.rows.length===0)continue;if(X)$.blocks.push(K0(2,[LW(U.name)]));let q=U.rows.map((_)=>_.map((H)=>U0([LW(H)]))),K=U.rows.length>1?1:0;$.blocks.push({type:"table",table:_0(q,K,"data")})}return $}function EW(W,$){let X=mW(W,$);if(X.length===0)return[];return wW([{name:"",rows:X}]).blocks}function J0(W,$){let X=new Map,U=Y(W,$);if(U===void 0)return X;for(let q of P(U.fields,3)){let K=N(q,1),_=T(q,3);if(K!==void 0&&_!==void 0)X.set(K,_)}return X}function Q0(W,$){let X=new Map,U=Y(W,$);if(U===void 0)return X;for(let q of P(U.fields,3)){let K=N(q,1),_=x(Z(q,9));if(K!==void 0&&_!==void 0)X.set(K,_)}return X}function G0(W,$,X,U,q){if($+8>W.length)return"";let K=W[$],_,H,J,G;if(K===5||W[$]>=5)return _=W[$+1],H=W[$+8]|W[$+9]<<8|W[$+10]<<16|W[$+11]<<24,J=4,G=$+12,Z0(W,_,H,G,X,U,q);if(W[$]===4)_=W[$+1],H=W[$+4]|W[$+5]<<8,J=2,G=$+8;else _=W[$+2],H=W[$+4]|W[$+5]<<8,J=2,G=$+8;let A=RW(H&65535),Q=G+A*4;if(Q=G+RW(H)*4,_===0)return"";if(_===2||_===5||_===6||_===7){if(Q+8>W.length)return"";let z=h(W,Q);if(_===6)return z!==0?"TRUE":"FALSE";if(_===5)return BW(z);return TW(z)}if(_===3||_===9){if(Q+4>W.length)return"";let z=W[Q]|W[Q+1]<<8|W[Q+2]<<16|W[Q+3]<<24;if(_===3)return X.get(z>>>0)??"";let F=U.get(z>>>0);return IW(q,F)}return""}function Z0(W,$,X,U,q,K,_){let H=U,J=(F,C)=>{if((X&F)===0)return;if(H+C>W.length)return;let V=W.subarray(H,H+C);return H+=C,V};J(1,16);let G=J(2,8),A=J(4,8),Q=J(8,4),z=J(16,4);if(J(32,4),J(64,4),J(128,4),J(256,4),J(512,4),J(1024,4),J(2048,4),$===0)return"";if($===2&&G!==void 0)return TW(h(G,0));if($===5&&A!==void 0)return BW(h(A,0));if($===6&&G!==void 0)return h(G,0)!==0?"TRUE":"FALSE";if($===3&&Q!==void 0){let F=Q[0]|Q[1]<<8|Q[2]<<16|Q[3]<<24;return q.get(F>>>0)??""}if($===9&&z!==void 0){let F=z[0]|z[1]<<8|z[2]<<16|z[3]<<24;return IW(_,K.get(F>>>0))}if(Q!==void 0){let F=Q[0]|Q[1]<<8|Q[2]<<16|Q[3]<<24,C=q.get(F>>>0);if(C!==void 0)return C}return""}function IW(W,$){let X=Y(W,$);if(X===void 0)return"";let U=x(Z(X.fields,1)),q=Y(W,U);if(q===void 0)return"";return w(W,q.fields).map((_)=>{if(_.type==="paragraph")return _.inlines.map((H)=>H.type==="text"?H.text:"").join("");if(_.type==="heading")return _.content.map((H)=>H.type==="text"?H.text:"").join("");return""}).filter(Boolean).join(" ")}function h(W,$){let X=new Uint8Array(8);return X.set(W.subarray($,$+8)),new DataView(X.buffer).getFloat64(0,!0)}function A0(W){let $=-1,X=-1;for(let U=0;U<W.length;U+=1)for(let q=0;q<W[U].length;q+=1)if(W[U][q]!==""){if(U>$)$=U;if(q>X)X=q}if($<0)return[];return W.slice(0,$+1).map((U)=>U.slice(0,X+1))}function RW(W){let $=W&65535,X=0;while($)$&=$-1,X+=1;return X}function TW(W){if(!Number.isFinite(W))return"";if(Number.isInteger(W))return String(W);return String(Number(W.toPrecision(12)))}function BW(W){let $=(W+978307200)*1000,X=new Date($);if(Number.isNaN(X.getTime()))return"";return X.toISOString().slice(0,10)}function jW(W,$){if($.type===D.TST_TABLE_INFO||$.type===D.TST_WP_TABLE_INFO)return EW(W,$.fields);return[]}function y(W,$){let X=Y(W,$);if(X===void 0)return[];return UW(W,X)}function UW(W,$){let X=jW(W,$);if(X.length>0)return X;let U=p(W,$);if(U.length>0)return U;if($.type===D.TSD_GROUP){let q=[];for(let K of u(W,$.fields,2))q.push(...UW(W,K));return q}if($.type===D.TSWP_DRAWABLE_ATTACHMENT){let q=x(Z($.fields,1));return y(W,q)}return[]}function n(W,$){let X=W.objects.get(1);if(X!==void 0&&X.type===$)return X;for(let U of W.objects.values())if(U.type===$)return U;return}function z0(W){let $=n(W,D.TP_DOCUMENT);if($===void 0)return;return M(W,$.fields,4)?.fields}function F0(W){let $=n(W,D.TN_DOCUMENT)??[...W.objects.values()].find((U)=>U.type===1&&S(U.fields,1).length>0);if($===void 0)return[];let X=[];for(let U of u(W,$.fields,1)){let q=Z(U.fields,1),K=q!==void 0?new TextDecoder().decode(q):"Sheet";X.push({name:K,drawables:S(U.fields,2)})}return X}function D0(W){let $=n(W,D.KN_DOCUMENT)??[...W.objects.values()].find((H)=>{if(H.type!==1)return!1;return x(Z(H.fields,2))!==void 0});if($===void 0)return[];let X=M(W,$.fields,2);if(X===void 0)return[];let U=Z(X.fields,3),q,K=[];if(U!==void 0){let H=x(U);if(H!==void 0&&Y(W,H)?.type===D.KN_SLIDE_NODE)q=H;else{let J=O(U);q=x(Z(J,1))??H,K=S(J,2)}}let _=[];if(K.length>0)for(let H of K)$W(W,H,_);else $W(W,q,_);return _}function $W(W,$,X){let U=Y(W,$);if(U===void 0)return;let q=x(Z(U.fields,2));if(q!==void 0){let K=Y(W,q);if(K!==void 0){let _=N(K.fields,19);if(_===void 0||_!==0)X.push(q)}}for(let K of S(U.fields,1))$W(W,K,X)}function N0(W,$){let X=Y(W,$);if(X===void 0)return[];let U=[],q=(_)=>{U.push(...y(W,x(Z(X.fields,_))))};q(5),q(6),q(30);for(let _ of S(X.fields,7))U.push(...y(W,_));let K=M(W,X.fields,27);if(K!==void 0){let _=p(W,K);if(_.length>0)U.push({type:"blockQuote",blocks:_});else{let H=w(W,K.fields);if(H.length>0)U.push({type:"blockQuote",blocks:H})}}return U}export{mW as tableInfoToRows,EW as tableBlocksFromInfo,w as storageToBlocks,W0 as storageObjectToBlocks,d as snappyEncodeLiterals,f as snappyDecode,N0 as slideToBlocks,wW as sheetsToDocument,p as shapeStorageBlocks,S as readReferences,x as readReference,oW as parsePreIwa,s as parseIwa,CW as openIWork,F0 as numbersSheets,D0 as keynoteSlides,Y as getObject,n as findDocumentObject,N as fieldVarint,T as fieldString,P as fieldMessages,Z as fieldBytes,pW as fieldAllBytes,hW as encodeVarintField,yW as encodeStringField,nW as encodeMessageField,o as encodeBytesField,j as detectPreIwaKind,iW as detectIWorkKind,u as derefAll,M as deref,O as decodeMessage,UW as collectDrawableObject,y as collectDrawableBlocks,vW as buildIwa,z0 as bodyStorageFromPages,D as TYPE};
@@ -0,0 +1,4 @@
1
+ import { type Document } from '@mdgate/document';
2
+ import type { IWorkKind } from './types.js';
3
+ export declare function detectPreIwaKind(bytes: Uint8Array): IWorkKind | undefined;
4
+ export declare function parsePreIwa(bytes: Uint8Array, expected?: IWorkKind): Document;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mdgate/iwork-common",
3
- "version": "0.5.2",
3
+ "version": "0.5.4",
4
4
  "description": "mdgate shared Apple iWork (Pages/Numbers/Keynote) IWA parsing",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -22,10 +22,10 @@
22
22
  "prepublishOnly": "bun run build"
23
23
  },
24
24
  "dependencies": {
25
- "@mdgate/containers": "0.5.2",
26
- "@mdgate/core": "0.5.2",
27
- "@mdgate/document": "0.5.2",
28
- "@mdgate/utils": "0.5.2"
25
+ "@mdgate/containers": "0.5.4",
26
+ "@mdgate/core": "0.5.4",
27
+ "@mdgate/document": "0.5.4",
28
+ "@mdgate/utils": "0.5.4"
29
29
  },
30
30
  "publishConfig": {
31
31
  "access": "public"