@betteroffice/docx 0.0.4 → 0.1.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.
Files changed (61) hide show
  1. package/README.md +2 -1
  2. package/dist/chunk-24DL53QL.mjs +1 -0
  3. package/dist/chunk-5F6DLQZP.mjs +1 -0
  4. package/dist/{chunk-YTILOUAA.mjs → chunk-BUZ2X5CT.mjs} +1 -1
  5. package/dist/{chunk-B4IR6YP4.mjs → chunk-GHEHBYQK.mjs} +1 -1
  6. package/dist/{chunk-NJHOPXZW.mjs → chunk-HLDJMU3R.mjs} +1 -1
  7. package/dist/{chunk-4V6MDZIK.mjs → chunk-HTDNSQ44.mjs} +1 -1
  8. package/dist/{chunk-NTSSE5QK.mjs → chunk-PI2I3TO5.mjs} +1 -1
  9. package/dist/{chunk-6KDV6AIL.mjs → chunk-TMHG7OAZ.mjs} +1 -1
  10. package/dist/{chunk-NBSLB77E.mjs → chunk-VRGUAKOC.mjs} +1 -1
  11. package/dist/collaboration/index.d.mts +6 -6
  12. package/dist/{content-C3sTRz-u.d.mts → content-DrqzbIr7.d.mts} +67 -18
  13. package/dist/core.d.mts +7 -7
  14. package/dist/core.mjs +1 -1
  15. package/dist/{displayListQueries-DLzpvJV6.d.mts → displayListQueries-DGDR-OWc.d.mts} +87 -50
  16. package/dist/docx/index.d.mts +5 -5
  17. package/dist/docx/index.mjs +1 -1
  18. package/dist/editor/index.d.mts +8 -8
  19. package/dist/{fontLoader-CMH3bZ2Z.d.mts → fontLoader-DnixuYST.d.mts} +1 -1
  20. package/dist/{formatting-BEkIBePP.d.mts → formatting-BqrFPeev.d.mts} +8 -0
  21. package/dist/{frameDelta-B2kC6XiP.d.mts → frameDelta-DMgR8n13.d.mts} +15 -10
  22. package/dist/generated/edit/docx_edit_bg.wasm +0 -0
  23. package/dist/generated/layout/docx_layout_bg.wasm +0 -0
  24. package/dist/generated/opc/ooxml_opc_bg.wasm +0 -0
  25. package/dist/generated/parse/docx_parse_bg.wasm +0 -0
  26. package/dist/{index-2piKi4gO.d.mts → index-ImoMd0Ju.d.mts} +32 -65
  27. package/dist/layout/index.d.mts +40 -13
  28. package/dist/layout/index.mjs +1 -1
  29. package/dist/layout/pagination/index.d.mts +4 -4
  30. package/dist/layout/render/index.d.mts +33 -77
  31. package/dist/layout/render/index.mjs +1 -1
  32. package/dist/plugin-api/RenderedDomContext.d.mts +7 -7
  33. package/dist/plugin-api/index.d.mts +3 -3
  34. package/dist/plugin-api/resolveItemPositions.d.mts +3 -3
  35. package/dist/{rustDisplayList-B0M2eBkU.d.mts → rustDisplayList-B9dQoLHI.d.mts} +74 -50
  36. package/dist/{rustMeasureSource-D1KsQvVC.d.mts → rustMeasureSource-C0EZB055.d.mts} +5 -2
  37. package/dist/{selectiveSave-CVoajSKE.d.mts → selectiveSave-CRh-_Y_C.d.mts} +3 -3
  38. package/dist/styles/index.d.mts +3 -3
  39. package/dist/{styles-BK3Jecxs.d.mts → styles-CMybYYHS.d.mts} +1 -1
  40. package/dist/types/content.d.mts +2 -2
  41. package/dist/types/document.d.mts +7 -7
  42. package/dist/{types-C1rv3KM-.d.mts → types-CXLxVF1t.d.mts} +27 -23
  43. package/dist/utils/comments.d.mts +2 -2
  44. package/dist/utils/index.d.mts +11 -13
  45. package/dist/utils/index.mjs +1 -1
  46. package/dist/utils/stylePreview.d.mts +2 -2
  47. package/dist/wasm-CJHQHBDE.mjs +1 -0
  48. package/dist/{wasm-JE7B3ROD.mjs → wasm-T2CRCO7S.mjs} +1 -1
  49. package/dist/wasm-edit.d.mts +505 -173
  50. package/dist/wasm-edit.mjs +1 -1
  51. package/dist/wasm-layout.d.mts +31 -28
  52. package/dist/wasm-layout.mjs +1 -1
  53. package/dist/wasm-opc.mjs +1 -1
  54. package/dist/wasm-parse.mjs +1 -1
  55. package/dist/yrs/index.d.mts +5 -5
  56. package/dist/yrs/index.mjs +1 -1
  57. package/dist/yrs/residentEngineWorker.mjs +1 -1
  58. package/package.json +19 -2
  59. package/dist/chunk-GGEGIQRK.mjs +0 -1
  60. package/dist/chunk-T4EZMUXM.mjs +0 -1
  61. package/dist/wasm-F2ETFAYL.mjs +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@betteroffice/docx",
3
- "version": "0.0.4",
3
+ "version": "0.1.0",
4
4
  "sideEffects": [
5
5
  "**/residentEngineWorker.*"
6
6
  ],
@@ -208,7 +208,16 @@
208
208
  "typecheck": "tsc --noEmit",
209
209
  "build:wasm": "bun ../../scripts/build-docx-wasm.ts"
210
210
  },
211
+ "peerDependencies": {
212
+ "@betteroffice/fonts": "^0"
213
+ },
214
+ "peerDependenciesMeta": {
215
+ "@betteroffice/fonts": {
216
+ "optional": true
217
+ }
218
+ },
211
219
  "devDependencies": {
220
+ "@betteroffice/fonts": "0.1.0",
212
221
  "tsup": "^8.0.1",
213
222
  "typescript": "^6.0.3",
214
223
  "@types/bun": "^1.0.0",
@@ -222,10 +231,18 @@
222
231
  "office",
223
232
  "editor",
224
233
  "viewer",
234
+ "docx-editor",
235
+ "docx-viewer",
236
+ "docx-parser",
237
+ "word-processor",
225
238
  "collaborative",
226
239
  "real-time",
240
+ "crdt",
241
+ "yjs",
227
242
  "ai-agent",
228
- "wasm"
243
+ "headless",
244
+ "wasm",
245
+ "rust"
229
246
  ],
230
247
  "author": "OpenOOXML",
231
248
  "license": "Apache-2.0",
@@ -1 +0,0 @@
1
- import {b}from'./chunk-TTRUPDAB.mjs';var ee=class{constructor(e){b(this,"provider");b(this,"maxEntries");b(this,"createPath");b(this,"entries",new Map);this.provider=e.provider,this.maxEntries=Math.max(1,e.maxEntries??4096),this.createPath=e.createPath??(()=>new Path2D);}get size(){return this.entries.size}get(e,n){let i=`${e}:${n}`,r=this.entries.get(i);if(r!==void 0)return this.entries.delete(i),this.entries.set(i,r),r;let o=this.build(e,n);if(this.entries.set(i,o),this.entries.size>this.maxEntries){let a=this.entries.keys().next().value;a!==void 0&&this.entries.delete(a);}return o}build(e,n){let{upem:i,cmds:r}=Ge(this.provider(e,n));return r.length===0?{path:null,upem:i}:{path:Be(r,this.createPath),upem:i}}};function Ge(t){let e=JSON.parse(t),n=typeof e.upem=="number"&&e.upem>0?e.upem:NaN;if(!Number.isFinite(n))throw new Error("glyph outline: missing or non-positive upem");let i=Array.isArray(e.cmds)?e.cmds:[];return {upem:n,cmds:i}}function Be(t,e){let n=e();for(let i of t)switch(i.t){case "M":n.moveTo(i.x,i.y);break;case "L":n.lineTo(i.x,i.y);break;case "Q":n.quadraticCurveTo(i.cx,i.cy,i.x,i.y);break;case "C":n.bezierCurveTo(i.c1x,i.c1y,i.c2x,i.c2y,i.x,i.y);break;case "Z":n.closePath();break}return n}function Ue(t){let e=/(\d+(?:\.\d+)?)px/.exec(t),n=e?Number(e[1]):NaN;return Number.isFinite(n)&&n>0?n:1056/72}function z(t){let e=Ue(t.font);return {x:t.x,y:t.baselineY-e*.8,w:t.width,h:e*1.2}}function V(t){let{glyphs:e,size:n}=t;if(e.length===0)return {x:0,y:0,w:0,h:n*1.2};let i=1/0,r=-1/0,o=-1/0,a=true;for(let c of e)c.x<i&&(i=c.x),c.x>r&&(r=c.x),c.advance===void 0?a=false:o=Math.max(o,c.x+c.advance);let s=a?Math.max(o-i,0):r-i+(e.length>1?(r-i)/(e.length-1):n*.6);return {x:i,y:e[0].y-n*.8,w:s,h:n*1.2}}function $e(t){let e=Math.min(t.x1,t.x2),n=Math.min(t.y1,t.y2),i=Math.abs(t.x2-t.x1),r=Math.abs(t.y2-t.y1),o=t.strokeWidth;return r===0?{x:e,y:n-o/2,w:i,h:o}:i===0?{x:e-o/2,y:n,w:o,h:r}:{x:e-o/2,y:n-o/2,w:i+o,h:r+o}}function jt(t){switch(t.kind){case "text":return z(t);case "glyphRun":return V(t);case "rect":case "image":case "shape":case "decoration":return {x:t.x,y:t.y,w:t.w,h:t.h};case "line":return $e(t)}}async function Qt(t,e,n={},i=1,r=1){let o=t.getContext("2d");if(!o)throw new Error("Canvas 2D context is unavailable");let a=i*r,s=e.width*a,c=e.height*a;return t.width!==s&&(t.width=s),t.height!==c&&(t.height=c),o.resetTransform(),o.scale(a,a),await ce(o,e,n),t}function en(t,e,n,i=1){t.width!==e.width&&(t.width=e.width),t.height!==e.height&&(t.height=e.height),typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement&&(t.style.width=`${n.width*i}px`,t.style.height=`${n.height*i}px`);let r=t.getContext("2d");if(!r)throw new Error("Canvas 2D context is unavailable");r.resetTransform(),r.globalCompositeOperation="copy",r.drawImage(e,0,0),r.globalCompositeOperation="source-over";}function tn(t,e){t.width!==e.width&&(t.width=e.width),t.height!==e.height&&(t.height=e.height);let n=t.getContext("bitmaprenderer");if(!n)throw new Error("Offscreen bitmap renderer is unavailable");n.transferFromImageBitmap(e.transferToImageBitmap());}function nn(t,e,n,i){n.width!==e.width&&(n.width=e.width),n.height!==e.height&&(n.height=e.height);let r=n.getContext("2d");if(!r)throw new Error("Caret stage 2D context is unavailable");r.resetTransform(),r.globalCompositeOperation="copy",r.drawImage(e,0,0),r.globalCompositeOperation="source-over",r.fillStyle=i.color,r.fillRect(i.x,i.y,i.width,i.height),t.width!==n.width&&(t.width=n.width),t.height!==n.height&&(t.height=n.height);let o=t.getContext("bitmaprenderer");if(!o)throw new Error("Offscreen bitmap renderer is unavailable");o.transferFromImageBitmap(n.transferToImageBitmap());}function Ve(t,e,n,i,r=1){let o=i*r;t.width=n.width*o,t.height=n.height*o,t.style.width=`${n.width*r}px`,t.style.height=`${n.height*r}px`,e.scale(o,o);}async function rn(t,e={},n=2){let i=[];for(let r of t.pages){let o=document.createElement("canvas"),a=o.getContext("2d");a&&(Ve(o,a,r,n),await ce(a,r,e),i.push(o));}return i}async function ce(t,e,n={}){t.clearRect(0,0,e.width,e.height),e.background&&(t.fillStyle=e.background,t.fillRect(0,0,e.width,e.height));for(let i of (e.pageBorders??[]).filter(r=>r.zOrder==="back"))se(t,i);for(let i of e.primitives)await X(t,i,n);for(let i of e.noteAreas??[]){for(let r of i.separatorPrimitives??[])await X(t,r,n);for(let r of i.primitives??[])await X(t,r,n);}for(let i of [e.header,e.footer])if(i)for(let r of i.primitives)await X(t,r,n);for(let i of (e.pageBorders??[]).filter(r=>r.zOrder!=="back"))se(t,i);}async function X(t,e,n={}){let i=e.clipGroup?.clip;if(i){t.save();let r=m(i.x,0),o=m(i.y,0),a=Math.max(0,m(i.w,0)),s=Math.max(0,m(i.h,0));t.beginPath(),t.rect(r,o,a,s),t.clip(),C(t,e.clipGroup?.opacity);}try{await We(t,e,n);}finally{i&&t.restore();}}async function We(t,e,n){switch(e.kind){case "text":ze(t,e);break;case "glyphRun":Ye(t,e,n.glyphCache);break;case "rect":Xe(t,e);break;case "line":je(t,e);break;case "shape":await Je(t,e,n.resolveImage);break;case "decoration":if(e.style&&e.style!=="solid"){J(t,e.x,e.y+e.h/2,e.x+e.w,e.y+e.h/2,Math.max(e.h,1),e.color,e.style);break}if(e.dashed||e.dotted){let i=Math.max(e.h,1),r=e.dotted?i:Math.max(Math.round(i*2),2),o=e.dotted?Math.max(Math.round(i*2),2):r;t.strokeStyle=e.color,t.lineWidth=i,t.setLineDash([r,o]);let a=e.y+e.h/2;t.beginPath(),t.moveTo(e.x,a),t.lineTo(e.x+e.w,a),t.stroke(),t.setLineDash([]);break}t.fillStyle=e.color,t.fillRect(e.x,e.y,e.w,e.h);break;case "image":await mt(t,e,n.resolveImage);break;default:throw Et(e)}}function ze(t,e){let n=ye(t,z(e),e.hidden&&e.opacity===void 0?.4:e.opacity,e.rotationDeg,e.horizontalScale);!n&&Se(e)&&(t.save(),n=true),t.font=ve(e.font,e.smallCaps),t.fillStyle=e.color,t.textAlign="left",t.textBaseline="alphabetic",t.direction=e.rtl?"rtl":"ltr","letterSpacing"in t&&(t.letterSpacing=`${e.letterSpacing??0}px`),"wordSpacing"in t&&(t.wordSpacing=`${e.wordSpacing??0}px`);let i=e.allCaps?e.text.toUpperCase():e.text;e.leaderGlyphs?.glyph&&(e.leaderGlyphs.count??0)>0?Pt(t,e):Ee(t,i,e.x,e.baselineY,e,z(e))||we(t,i,e.x,e.baselineY,e),It(t,i,e.x,e.baselineY,e.width,e),n&&t.restore();}function Xe(t,e){let n=e.opacity!==void 0;n&&(t.save(),C(t,e.opacity)),t.fillStyle=e.fill,t.fillRect(e.x,e.y,e.w,e.h),n&&t.restore();}var te=false;function He(t){te||(te=true,console.warn("[canvasBackend] glyph outlines unavailable; painting glyph runs with fillText",t));}function Ye(t,e,n){let i=ye(t,V(e),e.hidden&&e.opacity===void 0?.4:e.opacity,e.rotationDeg,e.horizontalScale);if(!i&&Se(e)&&(t.save(),i=true),n)try{let r=e.glyphs.map(d=>n.get(e.fontId,d.id)),o=e.modernEffects,a=V(e),s=Pe(t,o,a,e.color),c=()=>{for(let d=0;d<e.glyphs.length;d++){let{path:u,upem:h}=r[d];if(!u)continue;let g=e.glyphs[d],b=e.size/h;t.save(),t.translate(g.x,g.y),t.scale(b,-b);let y=o?.textOutline;if(e.textOutline||y){t.strokeStyle=y?.color??e.color;let P=y?.width??Math.max(.5,e.size/16);t.lineWidth=Math.max(.5,P)/b,t.stroke(u),y&&!e.textOutline&&o?.textFill?.kind!=="none"&&t.fill(u);}else o?.textFill?.kind!=="none"&&t.fill(u);t.restore();}},l=o?.reflection;if(l){t.save();let d=a.y+a.h;t.translate(0,2*d+m(l.distance,0)),t.scale(1,-1),C(t,v(m(l.startOpacity,.35),0,1)),t.fillStyle=s,c(),t.restore();}t.fillStyle=s,De(t,e.textShadow,e.size),Ie(t,o),c(),xe(t,e),i&&t.restore();return}catch(r){He(r);}qe(t,e),i&&t.restore();}function qe(t,e){let n=e.glyphs[0];if(!n)return;t.font=ve(e.fallbackFont??`${e.size}px sans-serif`,e.smallCaps),t.fillStyle=e.color,t.textAlign="left",t.textBaseline="alphabetic",t.direction=e.rtl?"rtl":"ltr";let i=e.allCaps?e.text.toUpperCase():e.text;Ee(t,i,n.x,n.y,e,V(e))||we(t,i,n.x,n.y,e),xe(t,e);}function je(t,e){let n=e.opacity!==void 0;n&&(t.save(),C(t,e.opacity)),J(t,e.x1,e.y1,e.x2,e.y2,e.strokeWidth,e.color,e.borderStyle??"solid",e.secondaryColor,e.dash),n&&t.restore();}async function Je(t,e,n){let i=e.fillPaint,r=e.strokePaint;if(!e.fill&&!e.stroke&&!i&&!r)return;t.save(),C(t,e.opacity),Ke(t,e);let o=Ze(e);o||(t.beginPath(),fe(t,e.geometryPath)),at(t,e);let a=i?.kind,s=a==="picture"?i?.pictureSrc??i?.pictureRelId:void 0;if(a==="picture"&&s&&n){let c=await n(s);if(c)et(t,e,o,c);else {let l=ie(t,e);l&&ne(t,o,l);}}else if(a==="pattern")it(t,e,o);else if(a!=="none"){let c=ie(t,e);c&&ne(t,o,c);}(e.stroke||r)&&st(t,e,o),t.restore();}function Ke(t,e){let n=e.transform;if(!n?.rotation&&!n?.flipH&&!n?.flipV)return;let i=e.x+e.w/2,r=e.y+e.h/2;t.translate(i,r),n.rotation&&t.rotate(n.rotation*Math.PI/180),(n.flipH||n.flipV)&&t.scale(n.flipH?-1:1,n.flipV?-1:1),t.translate(-i,-r);}function Ze(t){let e=typeof Path2D>"u"?void 0:Path2D;if(!e)return null;let n=new e;return fe(n,t.geometryPath),n}function fe(t,e){for(let n of e)switch(n.type){case "move":t.moveTo(n.x,n.y);break;case "line":t.lineTo(n.x,n.y);break;case "quad":t.quadraticCurveTo(n.cpx,n.cpy,n.x,n.y);break;case "cubic":t.bezierCurveTo(n.cp1x,n.cp1y,n.cp2x,n.cp2y,n.x,n.y);break;case "close":t.closePath();break}}function ne(t,e,n){t.fillStyle=n,e?t.fill(e):t.fill();}function ie(t,e){let n=e.fillPaint;if(!n||n.kind==="solid"||n.kind==="theme")return n?.color??e.fill??null;if(n.kind!=="gradient")return n.color??e.fill??null;let i=ue(n.stops,n.color??e.fill??"#000000"),r;if(n.gradientType==="radial"||n.gradientType==="rectangular"||n.gradientType==="path"){let o=e.x+e.w/2,a=e.y+e.h/2;r=t.createRadialGradient(o,a,0,o,a,Math.max(e.w,e.h)/2);}else {let{x1:o,y1:a,x2:s,y2:c}=he(e,n.angle??0);r=t.createLinearGradient(o,a,s,c);}for(let o of i)r.addColorStop(o.position,o.color);return r}function ue(t,e){let n=(t??[]).filter(i=>i!=null).map(i=>{let r=m(i.position,0);return {position:v(r>1?r/1e5:r,0,1),color:i.color??e}}).sort((i,r)=>i.position-r.position);return n.length===0?[{position:0,color:e},{position:1,color:e}]:n.length===1?[{position:0,color:n[0].color},{position:1,color:n[0].color}]:n}function he(t,e){let n=e*Math.PI/180,i=Math.cos(n),r=Math.sin(n),o=t.x+t.w/2,a=t.y+t.h/2,s=Math.abs(i)*t.w/2+Math.abs(r)*t.h/2;return {x1:o-i*s,y1:a-r*s,x2:o+i*s,y2:a+r*s}}function me(t,e){e?t.clip(e):t.clip();}var Qe=4096;function et(t,e,n,i){let r=e.fillPaint;if(t.save(),me(t,n),C(t,r?.pictureOpacity),r?.pictureFillMode==="tile"&&nt(t,e,i)){t.restore();return}let o=r?.pictureStretchRect,a=v(m(o?.left,0),-10,10),s=v(m(o?.top,0),-10,10),c=v(m(o?.right,0),-10,10),l=v(m(o?.bottom,0),-10,10),d={x:e.x+a*e.w,y:e.y+s*e.h,w:e.w*(1-a-c),h:e.h*(1-s-l)};d.w>0&&d.h>0&&ge(t,i,d,tt(r)),t.restore();}function tt(t){let e=t?.pictureSrcRect;if(e)return {top:m(e.top,0),right:m(e.right,0),bottom:m(e.bottom,0),left:m(e.left,0)}}function nt(t,e,n){let{width:i,height:r}=Ce(n);if(i<=0||r<=0||e.w<=0||e.h<=0)return false;let o=e.fillPaint?.pictureTile,a=Math.max(1,i*v(m(o?.scaleX,1),.01,100)),s=Math.max(1,r*v(m(o?.scaleY,1),.01,100)),c=Math.ceil(e.w/a)+1,l=Math.ceil(e.h/s)+1;if(c*l>Qe)return false;let d=o?.alignment??"tl",u=e.x;d==="t"||d==="ctr"||d==="b"?u=e.x+(e.w-a)/2:(d==="tr"||d==="r"||d==="br")&&(u=e.x+e.w-a);let h=e.y;d==="l"||d==="ctr"||d==="r"?h=e.y+(e.h-s)/2:(d==="bl"||d==="b"||d==="br")&&(h=e.y+e.h-s),u+=v(m(o?.offsetX,0),-1e5,1e5),h+=v(m(o?.offsetY,0),-1e5,1e5);let g=Math.ceil((u-e.x)/a),b=Math.ceil((h-e.y)/s),y=o?.flip??"none",P=y==="x"||y==="xy",O=y==="y"||y==="xy";for(let _=-b;;_++){let I=h+_*s;if(I>=e.y+e.h)break;for(let M=-g;;M++){let R=u+M*a;if(R>=e.x+e.w)break;let G=P&&Math.abs(M)%2===1,B=O&&Math.abs(_)%2===1;G||B?(t.save(),t.translate(G?2*R+a:0,B?2*I+s:0),t.scale(G?-1:1,B?-1:1),t.drawImage(n,R,I,a,s),t.restore()):t.drawImage(n,R,I,a,s);}}return true}function it(t,e,n){let i=e.fillPaint,r=i?.foregroundColor??i?.color??e.fill??"#000000",o=i?.backgroundColor??"#ffffff",a=i?.patternPreset??"pct50";t.save(),me(t,n),t.fillStyle=o,t.fillRect(e.x,e.y,e.w,e.h),t.strokeStyle=r,t.fillStyle=r,t.lineWidth=1,rt(t,e,a),t.restore();}function rt(t,e,n){let i=ot(n),r=e.x+e.w,o=e.y+e.h,a=/horz|horizontal|cross|grid|plaid|weave|trellis/i.test(n),s=/vert|vertical|cross|grid|plaid|weave|trellis/i.test(n),c=/dnDiag|downDiag|diagCross|trellis|weave/i.test(n),l=/upDiag|diagCross|trellis|weave|zigZag/i.test(n);if(/pct|dot|sphere|confetti/i.test(n)||!a&&!s&&!c&&!l){let u=/pct5|pct10|sm/i.test(n)?.5:1;for(let h=e.y;h<=o;h+=i)for(let g=e.x;g<=r;g+=i)t.beginPath(),t.arc(g,h,u,0,Math.PI*2),t.fill();}if(a)for(let u=e.y;u<=o;u+=i)A(t,e.x,u,r,u);if(s)for(let u=e.x;u<=r;u+=i)A(t,u,e.y,u,o);if(c)for(let u=-e.h;u<=e.w;u+=i)A(t,e.x+u,e.y,e.x+u+e.h,o);if(l)for(let u=0;u<=e.w+e.h;u+=i)A(t,e.x+u,o,e.x+u-e.h,e.y);}function ot(t){return /pct5|pct10|sm|lt/i.test(t)?8:/pct75|pct80|pct90|dk/i.test(t)?3:5}function at(t,e){let n=e.effects?.find(o=>o.kind==="shadow"||o.kind==="outerShadow"||o.kind==="glow");if(!n||(t.shadowColor=n.color??"#000000",t.shadowBlur=Math.max(0,n.blurRadius??n.size??0),n.kind==="glow"))return;let i=(n.direction??0)*Math.PI/180,r=n.distance??0;t.shadowOffsetX=Math.cos(i)*r,t.shadowOffsetY=Math.sin(i)*r;}function st(t,e,n){let i=e.strokePaint,r=e.stroke,o=i?.color??r?.color??"#000000",a=Math.max(0,i?.width??r?.width??1);if(a===0)return;t.strokeStyle=o,i?.cap&&(t.lineCap=i.cap==="flat"?"butt":i.cap),i?.join&&(t.lineJoin=i.join),i?.miterLimit!==void 0&&(t.miterLimit=Math.max(1,i.miterLimit));let s=i?.customDash?.length?i.customDash.map(d=>Math.max(0,d*a)):j(i?.dash??r?.dash,a);t.lineWidth=a,t.setLineDash(s);let c=i?.compound??"single";if(c==="single"){n?t.stroke(n):t.stroke(),re(t,e,i?.headEnd,i?.tailEnd,o,a);return}let l=lt(c,a);for(let d of l)t.lineWidth=d,n?t.stroke(n):t.stroke();re(t,e,i?.headEnd,i?.tailEnd,o,a);}function lt(t,e){switch(t){case "double":return [e,Math.max(.5,e/3)];case "triple":return [e,Math.max(.5,e*.6),Math.max(.5,e*.2)];case "thinThick":case "thickThin":return [e,Math.max(.5,e*.4)];default:return [e]}}function re(t,e,n,i,r,o){let a=dt(e.geometryPath);a&&(n?.type&&n.type!=="none"&&oe(t,a.start,a.next,n,r,o),i?.type&&i.type!=="none"&&oe(t,a.end,a.prev,i,r,o));}function dt(t){let e=[];for(let n of t)n.type==="move"||n.type==="line"?e.push({x:n.x,y:n.y}):n.type==="quad"?e.push({x:n.x,y:n.y}):n.type==="cubic"&&e.push({x:n.x,y:n.y});return e.length<2?null:{start:e[0],next:e[1],prev:e[e.length-2],end:e[e.length-1]}}function oe(t,e,n,i,r,o){let a=Math.atan2(n.y-e.y,n.x-e.x),s=o*ae(i.length,4),c=o*ae(i.width,2),l=e.x+Math.cos(a)*s,d=e.y+Math.sin(a)*s,u=-Math.sin(a)*c,h=Math.cos(a)*c;t.save(),t.fillStyle=r,t.strokeStyle=r,i.type==="oval"?(t.beginPath(),t.arc(e.x,e.y,c,0,Math.PI*2),t.fill()):i.type==="diamond"?(t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(l+u,d+h),t.lineTo(e.x+Math.cos(a)*s*2,e.y+Math.sin(a)*s*2),t.lineTo(l-u,d-h),t.closePath(),t.fill()):(t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(l+u,d+h),t.lineTo(l-u,d-h),t.closePath(),i.type==="arrow"?t.stroke():t.fill()),t.restore();}function ae(t,e){return t==="sm"?e*.75:t==="lg"?e*1.5:e}function j(t,e){switch(t){case "dot":case "dotted":case "sysDot":return [Math.max(1,e),Math.max(2,e*2)];case "dash":case "dashed":case "dashSmallGap":case "sysDash":return [Math.max(2,e*3),Math.max(2,e*2)];case "lgDash":case "dashLong":case "dashLongHeavy":return [Math.max(4,e*6),Math.max(2,e*2)];case "dashDot":case "lgDashDot":case "sysDashDot":case "dashDotHeavy":return [Math.max(2,e*3),Math.max(2,e*2),e,Math.max(2,e*2)];case "dashDotDot":case "lgDashDotDot":case "sysDashDotDot":case "dashDotDotHeavy":return [Math.max(2,e*3),Math.max(2,e*2),e,Math.max(2,e*2),e,Math.max(2,e*2)];default:return []}}function J(t,e,n,i,r,o,a,s,c,l){let d=Math.max(o,.5);if(s==="wave"||s==="doubleWave"){ut(t,e,n,i,r,d,a,s==="doubleWave");return}if(s==="double"||s==="triple"||s==="thinThick"||s==="thickThin"){ft(t,e,n,i,r,d,a,s);return}if(s==="groove"||s==="ridge"||s==="inset"||s==="outset"){ht(t,e,n,i,r,d,a,c,s);return}t.strokeStyle=a,t.lineWidth=d,t.setLineDash(l??ct(s,d)),A(t,e,n,i,r);}function ct(t,e){switch(t){case "dotted":return [Math.max(1,e),Math.max(1.5,e*1.5)];case "dashed":return [Math.max(2,e*4),Math.max(2,e*2)];case "dashDot":return [e*4,e*1.5,e,e*1.5];case "dashDotDot":return [e*4,e*1.5,e,e*1.5,e,e*1.5];default:return []}}function pe(t,e,n,i){let r=n-t,o=i-e,a=Math.hypot(r,o)||1;return {x:-o/a,y:r/a}}function ft(t,e,n,i,r,o,a,s){let c=pe(e,n,i,r),l=s==="triple"?[{offset:-o,width:Math.max(.5,o/3)},{offset:0,width:Math.max(.5,o/3)},{offset:o,width:Math.max(.5,o/3)}]:s==="thinThick"?[{offset:-o*.45,width:Math.max(.5,o*.25)},{offset:o*.3,width:Math.max(.75,o*.55)}]:s==="thickThin"?[{offset:-o*.3,width:Math.max(.75,o*.55)},{offset:o*.45,width:Math.max(.5,o*.25)}]:[{offset:-o/2,width:Math.max(.5,o/3)},{offset:o/2,width:Math.max(.5,o/3)}];t.strokeStyle=a,t.setLineDash([]);for(let d of l){t.lineWidth=d.width;let u=c.x*d.offset,h=c.y*d.offset;A(t,e+u,n+h,i+u,r+h);}}function ut(t,e,n,i,r,o,a,s){let c=i-e,l=r-n,d=Math.hypot(c,l);if(d===0)return;let u={x:c/d,y:l/d},h={x:-u.y,y:u.x},g=Math.max(4,o*4),b=Math.max(1,o),y=s?[-b,b]:[0];t.strokeStyle=a,t.lineWidth=Math.max(.5,o/(s?2:1)),t.setLineDash([]);for(let P of y){t.beginPath(),t.moveTo(e+h.x*P,n+h.y*P);let O=0,_=1;for(;O<d;){let I=Math.min(d,O+g/2),M=(O+I)/2;t.quadraticCurveTo(e+u.x*M+h.x*(P+b*_),n+u.y*M+h.y*(P+b*_),e+u.x*I+h.x*P,n+u.y*I+h.y*P),O=I,_*=-1;}t.stroke();}}function ht(t,e,n,i,r,o,a,s,c){let l=pe(e,n,i,r),d=s??le(a,"#ffffff",.55),u=le(a,"#000000",.45),h=c==="ridge"||c==="outset",g=h?d:u,b=h?u:d,y=o/4;t.setLineDash([]),t.lineWidth=Math.max(.5,o/2),t.strokeStyle=g,A(t,e-l.x*y,n-l.y*y,i-l.x*y,r-l.y*y),t.strokeStyle=b,A(t,e+l.x*y,n+l.y*y,i+l.x*y,r+l.y*y);}function se(t,e){let n=e.x,i=e.y,r=e.x+e.w,o=e.y+e.h;e.top&&H(t,n,i,r,i,e.top),e.right&&H(t,r,i,r,o,e.right),e.bottom&&H(t,n,o,r,o,e.bottom),e.left&&H(t,n,i,n,o,e.left);}function H(t,e,n,i,r,o,a){J(t,e,n,i,r,o.width,o.color,o.style),t.setLineDash([]);}function A(t,e,n,i,r){t.beginPath(),t.moveTo(e,n),t.lineTo(i,r),t.stroke();}async function mt(t,e,n){if(!n)return;let i=await n(e.relId);if(!i)return;let r=pt(e);t.save(),C(t,e.opacity);let o=gt(e);if(o&&"filter"in t&&(t.filter=o),e.rotationDeg||e.flipH||e.flipV){let a=r.x+r.w/2,s=r.y+r.h/2;t.translate(a,s),e.rotationDeg&&t.rotate(e.rotationDeg*Math.PI/180),(e.flipH||e.flipV)&&t.scale(e.flipH?-1:1,e.flipV?-1:1),t.translate(-a,-s);}ge(t,i,r,e.crop),bt(t,e,r),e.revision&&(t.strokeStyle=e.revision.kind==="ins"?"rgb(46, 125, 50)":"rgb(198, 40, 40)",t.lineWidth=2,t.setLineDash([]),t.strokeRect(r.x,r.y,r.w,r.h),e.revision.kind==="del"&&(t.beginPath(),t.moveTo(r.x,r.y+r.h),t.lineTo(r.x+r.w,r.y),t.stroke())),t.restore();}function pt(t){return {x:m(t.contentFrame?.x,t.x),y:m(t.contentFrame?.y,t.y),w:Math.max(0,m(t.contentFrame?.w,t.w)),h:Math.max(0,m(t.contentFrame?.h,t.h))}}function ge(t,e,n,i){if(!i){t.drawImage(e,n.x,n.y,n.w,n.h);return}let{width:r,height:o}=Ce(e);if(r<=0||o<=0||n.w<=0||n.h<=0)return;let a={x:i.left*r,y:i.top*o,w:r*(1-i.left-i.right),h:o*(1-i.top-i.bottom)};if(a.w<=0||a.h<=0)return;if(a.x>=0&&a.y>=0&&a.x+a.w<=r&&a.y+a.h<=o){t.drawImage(e,a.x,a.y,a.w,a.h,n.x,n.y,n.w,n.h);return}let s={x:v(a.x,0,r),y:v(a.y,0,o),right:v(a.x+a.w,0,r),bottom:v(a.y+a.h,0,o)},c=s.right-s.x,l=s.bottom-s.y;if(c<=0||l<=0)return;let d={x:n.x+(s.x-a.x)/a.w*n.w,y:n.y+(s.y-a.y)/a.h*n.h,w:c/a.w*n.w,h:l/a.h*n.h};t.drawImage(e,s.x,s.y,c,l,d.x,d.y,d.w,d.h);}function gt(t){let e=[],n=yt(t.filter);n&&e.push(n);for(let i of t.effects??[]){let r=m(i.amount,1);switch(i.kind){case "brightness":case "contrast":case "saturate":e.push(`${i.kind}(${Math.max(0,r)})`);break;case "saturation":e.push(`saturate(${Math.max(0,r)})`);break;case "grayscale":e.push(`grayscale(${v(r,0,1)})`);break;case "biLevel":e.push(`grayscale(1) contrast(${Math.max(1,r||4)})`);break;case "blur":e.push(`blur(${v(r,0,128)}px)`);break}}return e.length>0?e.join(" "):null}function yt(t){if(!t)return null;let e=/^(?:\s*(?:blur\(\d+(?:\.\d+)?px\)|brightness\(\d+(?:\.\d+)?\)|contrast\(\d+(?:\.\d+)?\)|grayscale\(\d+(?:\.\d+)?%?\)|hue-rotate\(-?\d+(?:\.\d+)?deg\)|invert\(\d+(?:\.\d+)?%?\)|opacity\(\d+(?:\.\d+)?%?\)|saturate\(\d+(?:\.\d+)?\)|sepia\(\d+(?:\.\d+)?%?\))\s*)+$/;return t.length<=512&&e.test(t)?t.trim():null}function bt(t,e,n){let i=e.border,r=m(i?.width,0);!i||r<=0||(t.strokeStyle=i.color??"#000000",t.lineWidth=r,t.setLineDash(i.dash??j(i.style,r)),t.strokeRect(n.x,n.y,n.w,n.h));}function ye(t,e,n,i,r){return n===void 0&&!i&&!be(r)?false:(t.save(),vt(t,e,n,i,r),true)}function vt(t,e,n,i,r){if(C(t,n),i){let o=e.x+e.w/2,a=e.y+e.h/2;t.translate(o,a),t.rotate(i*Math.PI/180),t.translate(-o,-a);}if(be(r)){let o=r/100,a=e.y+e.h/2;t.translate(e.x,a),t.scale(o,1),t.translate(-e.x,-a);}}function Pt(t,e){let n=e.leaderGlyphs;if(!n?.glyph)return;let i=Math.max(0,Math.floor(n.count??0)),r=m(n.advance,0);if(i===0||r<=0)return;let o=m(n.x,e.x),a=m(n.baselineY,e.baselineY);t.font=n.font??e.font,t.fillStyle=n.color??e.color;for(let s=0;s<i;s++){let c=n.rtl?i-1-s:s;t.fillText(n.glyph,o+c*r,a);}}function be(t){return t!==void 0&&t!==100}function ve(t,e){return !e||/\bsmall-caps\b/.test(t)?t:t.replace(/^(italic|oblique)\s+/,"$1 small-caps ").replace(/^((?!italic|oblique).*)$/,"small-caps $1")}function Pe(t,e,n,i){let r=e?.textFill;if(!r)return i;if(r.kind==="gradient"){let o=ue(r.stops,i),{x1:a,y1:s,x2:c,y2:l}=he({x:n.x,y:n.y,w:Math.max(n.w,1),h:Math.max(n.h,1)},m(r.angle,90)),d=t.createLinearGradient(a,s,c,l);for(let u of o)d.addColorStop(u.position,u.color);return d}return r.kind==="solid"&&r.color?r.color:i}function Ie(t,e){if(!e)return;if(e.glow){t.shadowColor=e.glow.color??"rgba(255, 192, 0, 0.75)",t.shadowBlur=Math.max(0,m(e.glow.radius,4)),t.shadowOffsetX=0,t.shadowOffsetY=0;return}let n=e.shadow;if(!n)return;t.shadowColor=n.color??"rgba(0, 0, 0, 0.4)",t.shadowBlur=Math.max(0,m(n.blurRadius,0));let i=m(n.direction,0)*Math.PI/180,r=m(n.distance,0);t.shadowOffsetX=Math.cos(i)*r,t.shadowOffsetY=Math.sin(i)*r;}function Ee(t,e,n,i,r,o){let a=r.modernEffects;if(!a)return false;let s=Pe(t,a,o,r.color),c=a.reflection;if(c){t.save();let d=o.y+o.h;t.translate(0,2*d+m(c.distance,0)),t.scale(1,-1),C(t,v(m(c.startOpacity,.35),0,1)),t.fillStyle=s,t.fillText(e,n,i),t.restore();}Ie(t,a),a.textFill?.kind!=="none"&&(t.fillStyle=s,t.fillText(e,n,i));let l=a.textOutline;if(l&&!l.noFill){let d=Math.max(.5,m(l.width,1));t.strokeStyle=l.color??r.color,t.lineWidth=d,t.setLineDash(j(l.dash,d)),t.strokeText(e,n,i),t.setLineDash([]);}return true}function we(t,e,n,i,r){if(!r.textShadow&&!r.textOutline){t.fillText(e,n,i);return}let o=r.size??Re(r.font),a=Math.max(.5,o/16);if(r.textShadow==="emboss"?(t.fillStyle="rgba(255,255,255,0.5)",t.fillText(e,n+a,i+a),t.fillStyle="rgba(0,0,0,0.3)",t.fillText(e,n-a,i-a)):r.textShadow==="imprint"?(t.fillStyle="rgba(255,255,255,0.5)",t.fillText(e,n-a,i-a),t.fillStyle="rgba(0,0,0,0.3)",t.fillText(e,n+a,i+a)):De(t,r.textShadow,o),t.fillStyle=r.color,r.textOutline){t.strokeStyle=r.color,t.lineWidth=a,t.strokeText(e,n,i);return}t.fillText(e,n,i);}function Se(t){return t.textShadow!==void 0||t.textOutline===true||t.modernEffects!=null}function De(t,e,n=16){e==="shadow"&&(t.shadowColor="rgba(0,0,0,0.3)",t.shadowBlur=Math.max(1,n/8),t.shadowOffsetX=Math.max(.5,n/16),t.shadowOffsetY=Math.max(.5,n/16));}function It(t,e,n,i,r,o){if(!o.emphasisMark)return;let a=[...e];if(a.length===0||r<=0)return;let s=Te(o.emphasisMark);if(!s)return;let c=o.size??Re(o.font),l=Math.max(4,c*.5),d=o.emphasisMark==="underDot"?i+c*.45:i-c*.85,u=r/a.length;t.save(),t.font=`${l}px sans-serif`,t.fillStyle=o.color,t.textAlign="center",t.textBaseline="middle";for(let h=0;h<a.length;h++)/\s/.test(a[h])||t.fillText(s,n+u*h+u/2,d);t.restore();}function xe(t,e){if(!e.emphasisMark||e.glyphs.length===0)return;let n=Te(e.emphasisMark);if(!n)return;let i=new Map;for(let s of e.glyphs){let c=i.get(s.cluster),l=s.x+Math.max(0,s.advance??0);c?(c.minX=Math.min(c.minX,s.x),c.maxX=Math.max(c.maxX,l),c.baselineY=Math.max(c.baselineY,s.y)):i.set(s.cluster,{minX:s.x,maxX:l,baselineY:s.y});}let r=[...i.keys()].sort((s,c)=>s-c),o=new TextEncoder().encode(e.text),a=Math.max(4,e.size*.5);t.save(),t.font=`${a}px sans-serif`,t.fillStyle=e.color,t.textAlign="center",t.textBaseline="middle";for(let s=0;s<r.length;s++){let c=r[s],l=r[s+1]??o.length,d=new TextDecoder().decode(o.slice(c,l));if(!d||/^\s+$/u.test(d))continue;let u=i.get(c);if(!u)continue;let h=e.size*.5,g=u.maxX>u.minX?u.maxX:u.minX+h,b=e.emphasisMark==="underDot"?u.baselineY+e.size*.45:u.baselineY-e.size*.85;t.fillText(n,(u.minX+g)/2,b);}t.restore();}function Te(t){switch(t){case "dot":case "underDot":return "\u2022";case "comma":return "\uFE45";case "circle":return "\u25CB";default:return null}}function Re(t){let e=t?.match(/(\d+(?:\.\d+)?)px\b/);return e?Number(e[1]):16}function Ce(t){let e=t;if(typeof e.naturalWidth=="number"&&typeof e.naturalHeight=="number")return {width:e.naturalWidth,height:e.naturalHeight};if(typeof e.videoWidth=="number"&&typeof e.videoHeight=="number")return {width:e.videoWidth,height:e.videoHeight};let n=typeof e.width=="number"?e.width:e.width?.baseVal.value??0,i=typeof e.height=="number"?e.height:e.height?.baseVal.value??0;return {width:n,height:i}}function C(t,e){if(e===void 0)return;let n=Number.isFinite(t.globalAlpha)?t.globalAlpha:1;t.globalAlpha=n*v(e,0,1);}function m(t,e){return typeof t=="number"&&Number.isFinite(t)?t:e}function v(t,e,n){return Math.min(n,Math.max(e,t))}function le(t,e,n){let i=de(t),r=de(e);if(!i||!r)return t;let o=(a,s)=>Math.round(a+(s-a)*v(n,0,1)).toString(16).padStart(2,"0");return `#${o(i.r,r.r)}${o(i.g,r.g)}${o(i.b,r.b)}`}function de(t){let e=t.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i);if(!e)return null;let n=e[1].length===3?[...e[1]].map(i=>i+i).join(""):e[1];return {r:Number.parseInt(n.slice(0,2),16),g:Number.parseInt(n.slice(2,4),16),b:Number.parseInt(n.slice(4,6),16)}}function Et(t){let e=t.kind;return new Error(`[canvasBackend] unsupported display primitive kind: ${String(e)}`)}var sn=1,ln=80,dn=48;var K=BigInt(Number.MAX_SAFE_INTEGER),Ae=BigInt(Number.MIN_SAFE_INTEGER),wt=0,St=1,Dt=2,xt=3,Tt=4,Rt=5,Ct=6,Ot=7,_t=8,Mt=9,Oe=1,_e=2,N=class extends Error{constructor(n,i){super(`FrameDelta: ${i}`);b(this,"code");this.name="FrameDeltaError",this.code=n;}};function cn(t){let e=t instanceof Uint8Array?t:new Uint8Array(t);e.byteOffset%8!==0&&(e=e.slice());let n=new Q(e);n.requireLength(80,"fixed header"),(n.u8(0)!==70||n.u8(1)!==68||n.u8(2)!==86||n.u8(3)!==49)&&f("bad magic");let i=n.u16(4);if(i!==1)throw new N("unsupported-version",`unsupported protocol version ${i}`);n.u16(6)!==80&&f("invalid v1 header length"),n.u32(8)!==e.byteLength&&f("declared total length does not match buffer");let r=n.u32(12);(r&-2)!==0&&f(`unknown frame flags 0x${r.toString(16)}`);let o=(r&1)!==0,a=n.safeU64(16,"document epoch"),s=n.safeU64(24,"layout epoch"),c=n.safeU64(32,"frame epoch"),l=n.safeU64(40,"base frame epoch");o&&l!==0&&f("full frame must have base epoch zero"),!o&&l===0&&f("delta frame requires a nonzero base epoch");let d=n.u32(48),u=n.u32(52),h=n.u32(56),g=n.u32(60),b=n.u32(64),y=n.u32(68),P=n.u32(72),O=P===0?void 0:P;n.u32(76)!==0&&f("reserved header bytes must be zero"),h!==80&&f("invalid operation table offset"),D(h,ke(u,48,"operation table"),"operation table")!==g&&f("operation table/string table are not contiguous");let I=D(g,b,"string table");(I>y||y>e.byteLength)&&f("string/data section bounds are invalid"),y%8!==0&&f("data section is not 8-byte aligned");let M=Lt(n,g,I),R=[],G=new Set;for(let p=0;p<u;p++){let E=h+p*48,w=n.u8(E);w!==1&&w!==2&&w!==3&&w!==4&&w!==5&&f(`unknown page opcode ${w}`);for(let x=1;x<4;x++)n.u8(E+x)!==0&&f("page operation reserved bytes are nonzero");for(let x=40;x<48;x++)n.u8(E+x)!==0&&f("page operation tail is nonzero");let U=n.u32(E+4),k=n.u64(E+8),W=n.u64(E+16),F=n.u32(E+24),T=n.u32(E+28),L=n.u32(E+32),$=n.u32(E+36);if(k===0n&&f("page id zero is reserved"),G.has(k)&&f(`duplicate page operation for id ${k}`),G.add(k),w===2||w===3)(F||T||L||$)&&f("remove/move operation carries an unexpected payload");else if(w===1){U>=d&&f("upsert page index exceeds final page count"),(T<y||T%8!==0)&&f("primitive id array has an invalid offset/alignment");let x=D(T,ke(F,8,"primitive id array"),"primitive id array"),Le=D(L,$,"page payload");(x>e.byteLength||L<x||Le>e.byteLength||$===0)&&f("page payload bounds are invalid");}else {U>=d&&f("position patch page index exceeds final page count");let x=D(L,$,"position patch payload");(F>1e7||T!==0||L<y||L%8!==0||$<8||x>e.byteLength)&&f("position patch payload bounds are invalid");}R.push({opcode:w,pageIndex:U,pageId:k,fingerprint:W,primitiveCount:F,primitiveIdsOffset:T,payloadOffset:L,payloadLength:$});}o&&R.some(p=>p.opcode!==1)&&f("full frame may contain only page upserts"),Gt(n,R,I,y);let B=R.map(p=>{if(p.opcode===2)return {kind:"remove",pageIndex:p.pageIndex,pageId:p.pageId};if(p.opcode===3)return p.pageIndex>=d&&f("move page index exceeds final page count"),{kind:"move",pageIndex:p.pageIndex,pageId:p.pageId,fingerprint:p.fingerprint};if(p.opcode===4)return {kind:"patch-positions",pageIndex:p.pageIndex,pageId:p.pageId,fingerprint:p.fingerprint,patches:Ut(n,p)};if(p.opcode===5)return {kind:"shift-positions",pageIndex:p.pageIndex,pageId:p.pageId,fingerprint:p.fingerprint,runs:Bt(n,p)};let E=p.payloadOffset+p.payloadLength,w=new Z(n,M,p.payloadOffset,E),U=w.value(0);w.offset!==E&&f("page payload has trailing bytes"),Xt(U,p.pageIndex,p.primitiveCount);let k=e.byteOffset+p.primitiveIdsOffset;k%8!==0&&f("primitive id array is not host-view aligned");let W=new BigUint64Array(e.buffer,k,p.primitiveCount),F=new Set;for(let T of W)(T===0n||F.has(T))&&f("primitive id array contains zero or duplicate ids"),F.add(T);return {kind:"upsert",pageIndex:p.pageIndex,pageId:p.pageId,fingerprint:p.fingerprint,primitiveIds:W,page:U}});return o&&B.length!==d&&f("full frame does not define every page"),{protocolVersion:1,full:o,docEpoch:a,layoutEpoch:s,frameEpoch:c,baseFrameEpoch:l,pageCount:d,contractVersion:O,operations:B,bytes:e}}function fn(t,e){return Ne(t,e,false)}function un(t,e){return Ne(t,e,true)}function Ne(t,e,n){if(t&&e.frameEpoch<=t.frameEpoch)throw new N("stale-frame",`frame ${e.frameEpoch} is not newer than applied frame ${t.frameEpoch}`);if(!e.full&&(!t||e.baseFrameEpoch!==t.frameEpoch))throw new N("base-mismatch",`delta base ${e.baseFrameEpoch} does not match applied frame ${t?.frameEpoch??0}`);if(t&&e.docEpoch<t.docEpoch)throw new N("stale-frame","document epoch moved backwards");if(t&&e.layoutEpoch<t.layoutEpoch)throw new N("stale-frame","layout epoch moved backwards");let i=new Map;if(!e.full&&t)for(let l of t.pages)i.set(l.pageId,l);let r=new Set,o=new Set;for(let l of e.operations){if(l.kind==="remove"){i.delete(l.pageId)||f(`remove references unknown page ${l.pageId}`),o.add(l.pageId);continue}if(l.kind==="move"){let d=i.get(l.pageId);d||f(`move references unknown page ${l.pageId}`),d.fingerprint!==l.fingerprint&&f(`move fingerprint differs for page ${l.pageId}`),i.set(l.pageId,{...d,pageIndex:l.pageIndex,page:d.page.pageIndex===l.pageIndex?d.page:{...d.page,pageIndex:l.pageIndex}});continue}if(l.kind==="patch-positions"){let d=i.get(l.pageId);d||f(`position patch references unknown page ${l.pageId}`),i.set(l.pageId,{...d,pageIndex:l.pageIndex,fingerprint:l.fingerprint,page:$t(d.page,d.primitiveIds,l.patches,l.pageIndex)});continue}if(l.kind==="shift-positions"){let d=i.get(l.pageId);d||f(`position shift references unknown page ${l.pageId}`),i.set(l.pageId,{...d,pageIndex:l.pageIndex,fingerprint:l.fingerprint,page:n?Nt(d.page,l.runs,l.pageIndex):Vt(d.page,l.runs,l.pageIndex)});continue}i.set(l.pageId,{pageIndex:l.pageIndex,pageId:l.pageId,fingerprint:l.fingerprint,primitiveIds:l.primitiveIds,page:l.page}),r.add(l.pageId);}if(e.full&&t)for(let l of t.pages)i.has(l.pageId)||o.add(l.pageId);i.size!==e.pageCount&&f("applied page count does not match frame header");let a=[...i.values()].sort((l,d)=>l.pageIndex-d.pageIndex),s=new Set;for(let l=0;l<a.length;l++){let d=a[l];(d.pageIndex!==l||d.page.pageIndex!==l)&&f("applied pages are not a contiguous zero-based sequence"),s.has(d.pageId)&&f(`duplicate retained page id ${d.pageId}`),s.add(d.pageId);}let c={...e.contractVersion===void 0?{}:{contractVersion:e.contractVersion},pages:a.map(l=>l.page)};return {protocolVersion:1,docEpoch:e.docEpoch,layoutEpoch:e.layoutEpoch,frameEpoch:e.frameEpoch,contractVersion:e.contractVersion,pages:a,damagedPageIds:r,removedPageIds:o,displayList:c}}var Fe="__betterofficePageRevision";function kt(t){return t[Fe]??0}function At(t){Object.defineProperty(t,Fe,{value:kt(t)+1,enumerable:false,configurable:true,writable:true});}function Nt(t,e,n){At(t);let i=0,r=0,o=a=>{for(let s of a){for(;r<e.length&&e[r].start+e[r].count<=i;)r+=1;let c=e[r];c&&i>=c.start&&i<c.start+c.count&&Ft(s,c.changedMask,c.delta),i+=1;}};o(t.primitives);for(let a of t.noteAreas??[])o(a.separatorPrimitives??[]),o(a.primitives??[]);return t.header&&o(t.header.primitives),t.footer&&o(t.footer.primitives),e.some(a=>a.start+a.count>i)&&f("position shift range exceeds retained primitive count"),t.pageIndex===n?t:{...t,pageIndex:n}}function Ft(t,e,n){let i=(r,o)=>{if((e&r)===0)return;let a=t[o];typeof a!="number"&&f(`position shift requires retained ${o}`);let s=a+n;Number.isSafeInteger(s)||f(`position shift overflows ${o}`),t[o]=s;};i(1,"docStart"),i(2,"docEnd"),i(4,"fragmentDocStart"),i(8,"fragmentDocEnd"),(e&16)!==0&&((!t.inlineSdtWidget||!Number.isSafeInteger(t.inlineSdtWidget.pos+n))&&f("position shift requires retained inline widget metadata"),t.inlineSdtWidget.pos+=n);}function Lt(t,e,n){let i=e;i+4>n&&f("truncated string table count");let r=t.u32(i);i+=4,r>1e7&&f("string table count exceeds decoder limit");let o=new TextDecoder("utf-8",{fatal:true}),a=[];for(let s=0;s<r;s++){i+4>n&&f("truncated string length");let c=t.u32(i);i+=4;let l=D(i,c,"string bytes");l>n&&f("string exceeds string table bounds");try{a.push(o.decode(t.bytes.subarray(i,l)));}catch{f("string table contains invalid UTF-8");}i=l;}return i!==n&&f("string table length/count mismatch"),a}function Gt(t,e,n,i){let r=[];for(let a of e)a.opcode===1?(a.primitiveCount>0&&r.push({start:a.primitiveIdsOffset,end:a.primitiveIdsOffset+a.primitiveCount*8}),r.push({start:a.payloadOffset,end:a.payloadOffset+a.payloadLength})):(a.opcode===4||a.opcode===5)&&r.push({start:a.payloadOffset,end:a.payloadOffset+a.payloadLength});r.sort((a,s)=>a.start-s.start||a.end-s.end),Me(t,n,i);let o=i;for(let a of r)a.start<o&&f("data regions overlap"),Me(t,o,a.start),o=a.end;o!==t.bytes.byteLength&&f("data section has trailing bytes");}function Bt(t,e){let n=e.payloadOffset,i=e.payloadOffset+e.payloadLength,r=(c,l)=>{let d=D(n,c,l);d>i&&f(`truncated ${l}`);let u=n;return n=d,u},o=t.u32(r(4,"position shift run count"));(o!==e.primitiveCount||o===0||o>1e7)&&f("position shift run count mismatch"),t.u32(r(4,"position shift reserved word"))!==0&&f("position shift reserved word is nonzero");let a=[],s=0;for(let c=0;c<o;c++){let l=t.u32(r(4,"position shift start")),d=t.u32(r(4,"position shift count")),u=t.u8(r(1,"position shift changed mask"));r(7,"position shift reserved bytes");for(let b=n-7;b<n;b++)t.u8(b)!==0&&f("position shift reserved bytes are nonzero");let h=t.safeI64(r(8,"position shift delta"),"position shift delta"),g=D(l,d,"position shift range");(d===0||l<s||u===0||(u&-32)!==0||h===0)&&f("position shift run is invalid"),s=g,a.push({start:l,count:d,changedMask:u,delta:h});}return n!==i&&f("position shift byte length/count mismatch"),a}function Me(t,e,n){for(let i=e;i<n;i++)t.u8(i)!==0&&f("alignment padding is nonzero");}function Ut(t,e){let n=e.payloadOffset,i=e.payloadOffset+e.payloadLength,r=(l,d)=>{let u=D(n,l,d);u>i&&f(`truncated ${d}`);let h=n;return n=u,h},o=t.u32(r(4,"position patch count"));o!==e.primitiveCount&&f("position patch count mismatch"),(o===0||o>1e7)&&f("invalid position patch count"),t.u32(r(4,"position patch reserved word"))!==0&&f("position patch reserved word is nonzero");let a=new Set,s=[],c=[[1,"docStart"],[2,"docEnd"],[4,"fragmentDocStart"],[8,"fragmentDocEnd"],[16,"inlineWidgetPos"]];for(let l=0;l<o;l++){let d=t.u64(r(8,"position patch primitive id"));(d===0n||a.has(d))&&f("position patch carries an invalid or duplicate primitive id"),a.add(d);let u=t.u8(r(1,"position patch changed mask")),h=t.u8(r(1,"position patch present mask"));(u===0||(u&-32)!==0)&&f("position patch changed mask is invalid"),(h&~u)!==0&&f("position patch present mask is not a subset of changed fields"),t.u16(r(2,"position patch reserved bytes"))!==0&&f("position patch reserved bytes are nonzero");let g={primitiveId:d};for(let[b,y]of c)(u&b)!==0&&(g[y]=(h&b)===0?null:t.safeI64(r(8,`position patch ${y}`),y));s.push(g);}return n!==i&&f("position patch byte length/count mismatch"),s}function $t(t,e,n,i){let r=new Map;for(let u of n)r.has(u.primitiveId)&&f(`duplicate position patch ${u.primitiveId}`),r.set(u.primitiveId,u);let o=0,a=u=>u.map(h=>{o>=e.length&&f("retained primitive id array is shorter than its page");let g=e[o++],b=r.get(g);return b?(r.delete(g),zt(h,b)):h}),s=a(t.primitives),c=t.noteAreas?.map(u=>({...u,...u.separatorPrimitives?{separatorPrimitives:a(u.separatorPrimitives)}:{},...u.primitives?{primitives:a(u.primitives)}:{}})),l=t.header?{...t.header,primitives:a(t.header.primitives)}:void 0,d=t.footer?{...t.footer,primitives:a(t.footer.primitives)}:void 0;return o!==e.length&&f("retained primitive id array is longer than its page"),r.size!==0&&f("position patch references an unknown primitive id"),{...t,pageIndex:i,primitives:s,...c?{noteAreas:c}:{},...l?{header:l}:{},...d?{footer:d}:{}}}function Vt(t,e,n){let i=0,r=0,o=d=>d.map(u=>{for(;r<e.length&&e[r].start+e[r].count<=i;)r+=1;let h=e[r],g=h&&i>=h.start&&i<h.start+h.count?Wt(u,h.changedMask,h.delta):u;return i+=1,g}),a=o(t.primitives),s=t.noteAreas?.map(d=>({...d,...d.separatorPrimitives?{separatorPrimitives:o(d.separatorPrimitives)}:{},...d.primitives?{primitives:o(d.primitives)}:{}})),c=t.header?{...t.header,primitives:o(t.header.primitives)}:void 0,l=t.footer?{...t.footer,primitives:o(t.footer.primitives)}:void 0;return e.some(d=>d.start+d.count>i)&&f("position shift range exceeds retained primitive count"),{...t,pageIndex:n,primitives:a,...s?{noteAreas:s}:{},...c?{header:c}:{},...l?{footer:l}:{}}}function Wt(t,e,n){let i={...t},r=(o,a)=>{if((e&o)===0)return;let s=i[a];typeof s!="number"&&f(`position shift requires retained ${a}`);let c=s+n;Number.isSafeInteger(c)||f(`position shift overflows ${a}`),i[a]=c;};return r(1,"docStart"),r(2,"docEnd"),r(4,"fragmentDocStart"),r(8,"fragmentDocEnd"),(e&16)!==0&&((!i.inlineSdtWidget||!Number.isSafeInteger(i.inlineSdtWidget.pos+n))&&f("position shift requires retained inline widget metadata"),i.inlineSdtWidget={...i.inlineSdtWidget,pos:i.inlineSdtWidget.pos+n}),i}function zt(t,e){let n={...t},i=(r,o)=>{o===null?delete n[r]:n[r]=o;};return e.docStart!==void 0&&i("docStart",e.docStart),e.docEnd!==void 0&&i("docEnd",e.docEnd),e.fragmentDocStart!==void 0&&i("fragmentDocStart",e.fragmentDocStart),e.fragmentDocEnd!==void 0&&i("fragmentDocEnd",e.fragmentDocEnd),e.inlineWidgetPos!==void 0&&((e.inlineWidgetPos===null||!n.inlineSdtWidget)&&f("inline widget position patch requires retained widget metadata"),n.inlineSdtWidget={...n.inlineSdtWidget,pos:e.inlineWidgetPos}),n}var Z=class{constructor(e,n,i,r){b(this,"reader",e);b(this,"strings",n);b(this,"end",r);b(this,"offset");this.offset=i;}value(e){e>64&&f("typed value nesting exceeds decoder limit");let n=this.readU8("value tag");switch(n){case wt:return null;case St:return false;case Dt:return true;case xt:return this.safeInteger(this.readI64("i64 value"),"signed value");case Tt:return this.safeInteger(this.readU64("u64 value"),"unsigned value");case Rt:{let i=this.readF64("f64 value");return Number.isFinite(i)||f("non-finite f64 value"),i}case Ct:return this.string(this.readU32("string id"));case Ot:{let i=this.readU32("array byte length"),r=this.readU32("array item count");r>1e7&&f("array item count exceeds decoder limit");let o=D(this.offset,i,"array payload");o>this.end&&f("array payload exceeds parent bounds");let a=[];for(let s=0;s<r;s++)a.push(this.value(e+1));return this.offset!==o&&f("array byte length/count mismatch"),a}case _t:{let i=this.readU32("object byte length"),r=this.readU32("object field count");r>1e7&&f("object field count exceeds decoder limit");let o=D(this.offset,i,"object payload");o>this.end&&f("object payload exceeds parent bounds");let a={};for(let s=0;s<r;s++){let c=this.string(this.readU32("object key id"));Object.prototype.hasOwnProperty.call(a,c)&&f(`duplicate object key ${c}`),Object.defineProperty(a,c,{value:this.value(e+1),enumerable:true,configurable:true,writable:true});}return this.offset!==o&&f("object byte length/count mismatch"),a}case Mt:{let i=this.readU32("glyph array byte length"),r=this.readU32("glyph array item count");r>1e7&&f("glyph array item count exceeds decoder limit");let o=D(this.offset,i,"glyph array payload");o>this.end&&f("glyph array payload exceeds parent bounds");let a=[];for(let s=0;s<r;s++){let c=this.readU32("glyph id"),l=this.finiteF64("glyph x"),d=this.finiteF64("glyph y"),u=this.readU32("glyph cluster"),h=this.finiteF64("glyph advance"),g=this.readU8("glyph flags");(g&-4)!==0&&f("glyph flags contain unknown bits");let b={id:c,x:l,y:d,cluster:u,advance:h};(g&Oe)!==0&&(b.logicalOrder=this.safeInteger(this.readU64("glyph logical order"),"glyph logical order")),(g&_e)!==0&&(b.bidiLevel=this.readU8("glyph bidi level")),a.push(b);}return this.offset!==o&&f("glyph array byte length/count mismatch"),a}default:f(`unknown typed value opcode ${n}`);}}string(e){let n=this.strings[e];return n===void 0&&f(`string id ${e} is out of bounds`),n}safeInteger(e,n){return (e<Ae||e>K)&&f(`${n} exceeds JavaScript safe-integer range`),Number(e)}require(e,n){let i=D(this.offset,e,n);i>this.end&&f(`truncated ${n}`);let r=this.offset;return this.offset=i,r}readU8(e){return this.reader.u8(this.require(1,e))}readU32(e){return this.reader.u32(this.require(4,e))}readU64(e){return this.reader.u64(this.require(8,e))}readI64(e){return this.reader.i64(this.require(8,e))}readF64(e){return this.reader.f64(this.require(8,e))}finiteF64(e){let n=this.readF64(e);return Number.isFinite(n)||f(`non-finite ${e}`),n}},Q=class{constructor(e){b(this,"bytes",e);b(this,"view");this.view=new DataView(e.buffer,e.byteOffset,e.byteLength);}requireLength(e,n){this.bytes.byteLength<e&&f(`truncated ${n}`);}u8(e){return this.bounds(e,1),this.view.getUint8(e)}u16(e){return this.bounds(e,2),this.view.getUint16(e,true)}u32(e){return this.bounds(e,4),this.view.getUint32(e,true)}u64(e){return this.bounds(e,8),this.view.getBigUint64(e,true)}i64(e){return this.bounds(e,8),this.view.getBigInt64(e,true)}f64(e){return this.bounds(e,8),this.view.getFloat64(e,true)}safeU64(e,n){let i=this.u64(e);return i>K&&f(`${n} exceeds JavaScript safe-integer range`),Number(i)}safeI64(e,n){let i=this.i64(e);return (i<Ae||i>K)&&f(`${n} exceeds JavaScript safe-integer range`),Number(i)}bounds(e,n){(e<0||e+n>this.bytes.byteLength)&&f("read exceeds frame bounds");}};function Xt(t,e,n){(!t||typeof t!="object"||Array.isArray(t))&&f("page payload is not an object"),t.pageIndex!==e&&f("page payload/index operation mismatch"),(!Number.isFinite(t.width)||t.width<0||!Number.isFinite(t.height)||t.height<0)&&f("page dimensions are invalid"),Array.isArray(t.primitives)||f("page primitives are not an array");let i=t.primitives.length;for(let r of t.noteAreas??[])(!Array.isArray(r.separatorPrimitives??[])||!Array.isArray(r.primitives??[]))&&f("note primitive collections are invalid"),i+=(r.separatorPrimitives?.length??0)+(r.primitives?.length??0);for(let r of [t.header,t.footer])r&&!Array.isArray(r.primitives)&&f("header/footer primitives are invalid"),i+=r?.primitives.length??0;i!==n&&f("primitive id count does not match decoded page");}function D(t,e,n){let i=t+e;return (!Number.isSafeInteger(i)||i<0)&&f(`${n} byte offset overflow`),i}function ke(t,e,n){let i=t*e;return (!Number.isSafeInteger(i)||i<0)&&f(`${n} byte length overflow`),i}function f(t){throw new N("invalid-frame",t)}export{ee as a,Ue as b,z as c,V as d,$e as e,jt as f,Qt as g,en as h,tn as i,nn as j,Ve as k,rn as l,ce as m,X as n,sn as o,ln as p,dn as q,N as r,cn as s,fn as t,un as u,kt as v};
@@ -1 +0,0 @@
1
- function s(e){let n=globalThis.process;if(typeof n?.getBuiltinModule=="function")try{return n.getBuiltinModule(e)}catch{return}}function u(e){if(e.protocol!=="file:")return;let n=s("node:fs"),t=s("node:url");if(!(!n||!t))try{return n.readFileSync(t.fileURLToPath(e))}catch{return}}function d(e){let n=false,t;return {preload(r){return n?Promise.resolve():t||(t=e.initAsync({module_or_path:r??e.assetUrl()}).then(()=>{n=true;},i=>{throw t=void 0,i instanceof Error?i:new Error(String(i))}),t)},ensure(){if(n)return;let r=u(e.assetUrl());if(r){e.initSync({module:r}),n=true;return}throw new Error(`${e.label} wasm is not initialized; await ${e.preloadName}() before first use (browser builds load the external wasm asset asynchronously)`)}}}export{d as a};
@@ -1 +0,0 @@
1
- import'./chunk-EUUIJVM6.mjs';export{b as createEditSession,a as preloadEditWasm}from'./chunk-4V6MDZIK.mjs';import'./chunk-T4EZMUXM.mjs';import'./chunk-TTRUPDAB.mjs';