@ifc-lite/viewer 1.26.0 → 1.27.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 (89) hide show
  1. package/.turbo/turbo-build.log +38 -31
  2. package/CHANGELOG.md +29 -0
  3. package/dist/assets/{basketViewActivator-ZpTYWE3K.js → basketViewActivator-B3CdrLsb.js} +7 -7
  4. package/dist/assets/{bcf-Ctcu_Sc2.js → bcf-QeHK_Aud.js} +1 -1
  5. package/dist/assets/{browser-DXS29_v9.js → browser-BIoDDfBW.js} +1 -1
  6. package/dist/assets/{cesium-BoVuJvTC.js → cesium-CzZn5yVA.js} +319 -319
  7. package/dist/assets/{deflate-Cnx0il6E.js → deflate-B-d0SYQM.js} +1 -1
  8. package/dist/assets/exceljs.min-DsuzKYnj.js +29 -0
  9. package/dist/assets/{exporters-DSq76AVM.js → exporters-B4LbZFeT.js} +1422 -1194
  10. package/dist/assets/geometry.worker-BdH-E6NB.js +1 -0
  11. package/dist/assets/{geotiff-A5UjhI6L.js → geotiff-CrVtDRFq.js} +10 -10
  12. package/dist/assets/html2canvas.esm-Ge7aVWlp.js +5 -0
  13. package/dist/assets/{ids-DiLcGTer.js → ids-DjsGFN10.js} +4 -4
  14. package/dist/assets/ifc-lite_bg-DsYUIHm3.wasm +0 -0
  15. package/dist/assets/{index-BAH8IJVR.js → index-COYokSKc.js} +38319 -35469
  16. package/dist/assets/index-ajK6D32J.css +1 -0
  17. package/dist/assets/index.es-CY202jA3.js +6866 -0
  18. package/dist/assets/{jpeg-BzSkwo5D.js → jpeg-D4wOkf5h.js} +1 -1
  19. package/dist/assets/jspdf.es.min-DIGb9BHN.js +19571 -0
  20. package/dist/assets/jspdf.plugin.autotable-BBLUVd7n.js +2 -0
  21. package/dist/assets/{lerc-Cg2Rz-D5.js → lerc-DmW0_tgf.js} +1 -1
  22. package/dist/assets/{lzw-BBPPLW-0.js → lzw-oWetY-d6.js} +1 -1
  23. package/dist/assets/{maplibre-gl-Do6O5tDc.js → maplibre-gl-BF3Z0idw.js} +1 -1
  24. package/dist/assets/{native-bridge-CPojOeGE.js → native-bridge-BX8_tHXE.js} +1 -1
  25. package/dist/assets/{packbits-yLSpjW-V.js → packbits-F8Nkp4NY.js} +1 -1
  26. package/dist/assets/{pako.esm-Cram60i4.js → pako.esm-n3Pgozwg.js} +1 -1
  27. package/dist/assets/{parser.worker-8md211IW.js → parser.worker-D591Zu_-.js} +3 -3
  28. package/dist/assets/pdf-Dsh3HPZB.js +135 -0
  29. package/dist/assets/raw-D9iw0tmc.js +1 -0
  30. package/dist/assets/{sandbox-CsRXlgCO.js → sandbox-BAC3a-eN.js} +1735 -1660
  31. package/dist/assets/server-client-Cjwnm7il.js +706 -0
  32. package/dist/assets/{webimage-YafxjjGr.js → webimage-BLV1dgmd.js} +1 -1
  33. package/dist/assets/xlsx-Bc2HTrjC.js +142 -0
  34. package/dist/assets/{zip-BJqVbRkU.js → zip-DFgP-l20.js} +1 -1
  35. package/dist/assets/{zstd-CkSLOiuu.js → zstd-C_1HxVrA.js} +1 -1
  36. package/dist/index.html +8 -8
  37. package/package.json +10 -7
  38. package/src/components/mcp/PlaygroundChat.tsx +1 -0
  39. package/src/components/mcp/data.ts +6 -0
  40. package/src/components/mcp/playground-dispatcher.ts +277 -0
  41. package/src/components/mcp/types.ts +2 -1
  42. package/src/components/ui/combo-input.tsx +163 -0
  43. package/src/components/ui/tabs.tsx +1 -1
  44. package/src/components/viewer/PropertiesPanel.tsx +13 -6
  45. package/src/components/viewer/SearchInline.tsx +62 -2
  46. package/src/components/viewer/SearchModal.filter.builder.tsx +24 -393
  47. package/src/components/viewer/SearchModal.filter.editors.tsx +503 -0
  48. package/src/components/viewer/SearchModal.filter.tsx +64 -1
  49. package/src/components/viewer/SearchModal.tsx +19 -6
  50. package/src/components/viewer/Viewport.tsx +15 -0
  51. package/src/components/viewer/lists/ColumnHeaderMenu.tsx +84 -0
  52. package/src/components/viewer/lists/ListBuilder.tsx +789 -280
  53. package/src/components/viewer/lists/ListGroupingBar.tsx +72 -0
  54. package/src/components/viewer/lists/ListPanel.tsx +49 -5
  55. package/src/components/viewer/lists/ListResultsTable.tsx +270 -176
  56. package/src/components/viewer/lists/list-table-utils.ts +123 -0
  57. package/src/generated/mcp-catalog.json +4 -0
  58. package/src/hooks/source-key.ts +35 -0
  59. package/src/hooks/useAlignmentLines3D.ts +1 -26
  60. package/src/hooks/useGridLines3D.ts +140 -0
  61. package/src/lib/length-unit-scale.ts +41 -0
  62. package/src/lib/lists/adapter.ts +136 -11
  63. package/src/lib/lists/export/csv.ts +47 -0
  64. package/src/lib/lists/export/index.ts +49 -0
  65. package/src/lib/lists/export/model.ts +111 -0
  66. package/src/lib/lists/export/pdf.ts +67 -0
  67. package/src/lib/lists/export/xlsx.ts +83 -0
  68. package/src/lib/lists/index.ts +2 -0
  69. package/src/lib/search/filter-evaluate.test.ts +81 -0
  70. package/src/lib/search/filter-evaluate.ts +59 -87
  71. package/src/lib/search/filter-match.ts +167 -0
  72. package/src/lib/search/filter-rules.test.ts +25 -0
  73. package/src/lib/search/filter-rules.ts +75 -2
  74. package/src/lib/search/filter-schema.ts +0 -0
  75. package/src/lib/slab-edit.test.ts +72 -0
  76. package/src/lib/slab-edit.ts +159 -19
  77. package/src/sdk/adapters/export-adapter.ts +3 -3
  78. package/src/sdk/adapters/query-adapter.ts +3 -3
  79. package/src/store/slices/listSlice.ts +6 -0
  80. package/src/store/slices/mutationSlice.ts +14 -6
  81. package/src/store/slices/searchSlice.ts +29 -3
  82. package/src/utils/nativeSpatialDataStore.ts +6 -0
  83. package/src/utils/serverDataModel.test.ts +6 -0
  84. package/src/utils/serverDataModel.ts +7 -0
  85. package/dist/assets/geometry.worker-0Q9qEa6p.js +0 -1
  86. package/dist/assets/ifc-lite_bg-CEZnhM2e.wasm +0 -0
  87. package/dist/assets/index-B9Ug2EqU.css +0 -1
  88. package/dist/assets/raw-BQrAgxwT.js +0 -1
  89. package/dist/assets/server-client-Bk4c1CPO.js +0 -626
@@ -1 +1 @@
1
- import{B as ie}from"./geotiff-A5UjhI6L.js";import"./sandbox-CsRXlgCO.js";import"./lens-PYsLu_MA.js";import"./__vite-browser-external-B1O5LaIO.js";const O=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),Y=4017,Z=799,$=3406,Q=2276,W=1567,_=3784,B=5793,K=2896;function te(T,a){let o=0;const d=[];let y=16;for(;y>0&&!T[y-1];)--y;d.push({children:[],index:0});let C=d[0],E;for(let t=0;t<y;t++){for(let u=0;u<T[t];u++){if(C=d.pop(),!C)throw new Error("buildHuffmanTable: codeLength mismatch");for(C.children[C.index]=a[o];C.index>0;)if(C=d.pop(),!C)throw new Error("buildHuffmanTable: codeLength mismatch");for(C.index++,d.push(C);d.length<=t;)d.push(E={children:[],index:0}),C.children[C.index]=E.children,C=E;o++}t+1<y&&(d.push(E={children:[],index:0}),C.children[C.index]=E.children,C=E)}return d[0].children}function ce(T,a,o,d,y,C,E,t,u){const{mcusPerLine:b,progressive:s}=o;if(d.length>1&&(b===void 0||o.mcusPerColumn===void 0))throw new Error("Missing MCU dimensions");if(d.length===1&&(d[0].blocksPerLine===void 0||d[0].blocksPerColumn===void 0))throw new Error("Missing block dimensions");const l=a;let i=a,c=0,m=0;function h(){if(m>0)return m--,c>>m&1;if(c=T[i++],c===255){const f=T[i++];if(f)throw new Error(`unexpected marker: ${(c<<8|f).toString(16)}`)}return m=7,c>>>7}function p(f){if(!f)throw new Error("Huffman table not found");let w=f,x;for(;(x=h())!==null;){const D=w[x];if(typeof D=="number")return D;if(typeof D!="object")throw new Error("invalid huffman sequence");w=D}return null}function g(f){let w=f,x=0;for(;w>0;){const D=h();if(D===null)return;x=x<<1|D,--w}return x}function k(f){const w=g(f);if(w!==void 0)return w>=1<<f-1?w:w+(-1<<f)+1}function v(f,w){const x=p(f.huffmanTableDC);if(x===null)throw new Error("Huffman error");const D=x===0?0:k(x);if(D===void 0)throw new Error("Unexpected end of stream");f.pred===void 0&&(f.pred=0),f.pred+=D,w[0]=f.pred;let A=1;for(;A<64;){const L=p(f.huffmanTableAC);if(L===null)throw new Error("Unexpected end of data in AC coefficient decoding");const U=L&15,P=L>>4;if(U===0){if(P<15)break;A+=16}else{A+=P;const q=O[A],S=k(U);if(S===void 0)throw new Error("Unexpected end of stream");w[q]=S,A++}}}function r(f,w){const x=p(f.huffmanTableDC);if(x===null)throw new Error("Huffman error");const D=k(x);if(D===void 0)throw new Error("Unexpected end of data in DC coefficient decoding");const A=x===0?0:D<<u;f.pred===void 0&&(f.pred=0),f.pred+=A,w[0]=f.pred}function e(f,w){const x=h();if(x===null)throw new Error("Unexpected end of data in DC coefficient decoding");w[0]|=x<<u}let F=0;function n(f,w){if(F>0){F--;return}let x=C;const D=E;for(;x<=D;){const A=p(f.huffmanTableAC);if(A===null)throw new Error("Unexpected end of data in AC coefficient decoding");const L=A&15,U=A>>4;if(L===0){if(U<15){const P=g(U);if(P===void 0)throw new Error("Unexpected end of data in AC coefficient decoding");F=P+(1<<U)-1;break}x+=16}else{x+=U;const P=O[x],q=k(L);if(q===void 0)throw new Error("Unexpected end of data in AC coefficient decoding");w[P]=q*(1<<u),x++}}}let I=0,ee;function oe(f,w){let x=C;const D=E;let A=0;for(;x<=D;){const L=O[x],U=w[L]<0?-1:1;switch(I){case 0:{const P=p(f.huffmanTableAC);if(P===null)throw new Error("Unexpected end of data in AC coefficient decoding");const q=P&15;if(A=P>>4,q===0)if(A<15){const S=g(A);if(S===void 0)throw new Error("Unexpected end of data in AC coefficient decoding");F=S+(1<<A),I=4}else A=16,I=1;else{if(q!==1)throw new Error("invalid ACn encoding");const S=k(q);if(S===void 0)throw new Error("Unexpected end of data in AC coefficient decoding");ee=S,I=A?2:3}continue}case 1:case 2:if(w[L]){const P=h();if(P===null)throw new Error("Unexpected end of data in AC coefficient decoding");w[L]+=(P<<u)*U}else A--,A===0&&(I=I===2?3:0);break;case 3:if(w[L]){const P=h();if(P===null)throw new Error("Unexpected end of data in AC coefficient decoding");w[L]+=(P<<u)*U}else w[L]=ee<<u,I=0;break;case 4:if(w[L]){const P=h();if(P===null)throw new Error("Unexpected end of data in AC coefficient decoding");w[L]+=(P<<u)*U}break}x++}I===4&&(F--,F===0&&(I=0))}function re(f,w,x,D,A){const L=x/b|0,U=x%b,P=L*f.v+D,q=U*f.h+A;if(!f.blocks)throw new Error("Missing blocks");w(f,f.blocks[P][q])}function se(f,w,x){const D=x/f.blocksPerLine|0,A=x%f.blocksPerLine;if(!f.blocks)throw new Error("Missing blocks");w(f,f.blocks[D][A])}const z=d.length;let R,M,G,X,j,V;s?C===0?V=t===0?r:e:V=t===0?n:oe:V=v;let H=0,N,J;z===1?J=d[0].blocksPerLine*d[0].blocksPerColumn:J=b*o.mcusPerColumn;const ne=y||J;for(;H<J;){for(M=0;M<z;M++)d[M].pred=0;if(F=0,z===1)for(R=d[0],j=0;j<ne;j++)se(R,V,H),H++;else for(j=0;j<ne;j++){for(M=0;M<z;M++){R=d[M];const{h:f,v:w}=R;for(G=0;G<w;G++)for(X=0;X<f;X++)re(R,V,H,G,X)}if(H++,H===J)break}if(m=0,N=T[i]<<8|T[i+1],N<65280)throw new Error("marker was not found");if(N>=65488&&N<=65495)i+=2;else break}return i-l}function le(T){const a=[],{blocksPerLine:o,blocksPerColumn:d}=T;if(!o||!d||!T.blocks)throw new Error("Missing component data");const y=o<<3,C=new Int32Array(64),E=new Uint8Array(64);function t(u,b,s){const l=T.quantizationTable;if(!l)throw new Error("No quantization table found");let i,c,m,h,p,g,k,v,r;const e=s;let F;for(F=0;F<64;F++)e[F]=u[F]*l[F];for(F=0;F<8;++F){const n=8*F;if(e[1+n]===0&&e[2+n]===0&&e[3+n]===0&&e[4+n]===0&&e[5+n]===0&&e[6+n]===0&&e[7+n]===0){r=B*e[0+n]+512>>10,e[0+n]=r,e[1+n]=r,e[2+n]=r,e[3+n]=r,e[4+n]=r,e[5+n]=r,e[6+n]=r,e[7+n]=r;continue}i=B*e[0+n]+128>>8,c=B*e[4+n]+128>>8,m=e[2+n],h=e[6+n],p=K*(e[1+n]-e[7+n])+128>>8,v=K*(e[1+n]+e[7+n])+128>>8,g=e[3+n]<<4,k=e[5+n]<<4,r=i-c+1>>1,i=i+c+1>>1,c=r,r=m*_+h*W+128>>8,m=m*W-h*_+128>>8,h=r,r=p-k+1>>1,p=p+k+1>>1,k=r,r=v+g+1>>1,g=v-g+1>>1,v=r,r=i-h+1>>1,i=i+h+1>>1,h=r,r=c-m+1>>1,c=c+m+1>>1,m=r,r=p*Q+v*$+2048>>12,p=p*$-v*Q+2048>>12,v=r,r=g*Z+k*Y+2048>>12,g=g*Y-k*Z+2048>>12,k=r,e[0+n]=i+v,e[7+n]=i-v,e[1+n]=c+k,e[6+n]=c-k,e[2+n]=m+g,e[5+n]=m-g,e[3+n]=h+p,e[4+n]=h-p}for(F=0;F<8;++F){const n=F;if(e[8+n]===0&&e[16+n]===0&&e[24+n]===0&&e[32+n]===0&&e[40+n]===0&&e[48+n]===0&&e[56+n]===0){r=B*s[F+0]+8192>>14,e[0+n]=r,e[8+n]=r,e[16+n]=r,e[24+n]=r,e[32+n]=r,e[40+n]=r,e[48+n]=r,e[56+n]=r;continue}i=B*e[0+n]+2048>>12,c=B*e[32+n]+2048>>12,m=e[16+n],h=e[48+n],p=K*(e[8+n]-e[56+n])+2048>>12,v=K*(e[8+n]+e[56+n])+2048>>12,g=e[24+n],k=e[40+n],r=i-c+1>>1,i=i+c+1>>1,c=r,r=m*_+h*W+2048>>12,m=m*W-h*_+2048>>12,h=r,r=p-k+1>>1,p=p+k+1>>1,k=r,r=v+g+1>>1,g=v-g+1>>1,v=r,r=i-h+1>>1,i=i+h+1>>1,h=r,r=c-m+1>>1,c=c+m+1>>1,m=r,r=p*Q+v*$+2048>>12,p=p*$-v*Q+2048>>12,v=r,r=g*Z+k*Y+2048>>12,g=g*Y-k*Z+2048>>12,k=r,e[0+n]=i+v,e[56+n]=i-v,e[8+n]=c+k,e[48+n]=c-k,e[16+n]=m+g,e[40+n]=m-g,e[24+n]=h+p,e[32+n]=h-p}for(F=0;F<64;++F){const n=128+(e[F]+8>>4);n<0?b[F]=0:n>255?b[F]=255:b[F]=n}}for(let u=0;u<d;u++){const b=u<<3;for(let s=0;s<8;s++)a.push(new Uint8Array(y));for(let s=0;s<o;s++){t(T.blocks[u][s],E,C);let l=0;const i=s<<3;for(let c=0;c<8;c++){const m=a[b+c];for(let h=0;h<8;h++)m[i+h]=E[l++]}}}return a}class fe{constructor(){this.jfif=null,this.adobe=null,this.resetInterval=0,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.frames=[]}resetFrames(){this.frames=[]}parse(a){let o=0;function d(){const t=a[o]<<8|a[o+1];return o+=2,t}function y(){const t=d(),u=a.subarray(o,o+t-2);return o+=u.length,u}function C(t){let u=0,b=0,s,l;for(l in t.components)t.components.hasOwnProperty(l)&&(s=t.components[l],u<s.h&&(u=s.h),b<s.v&&(b=s.v));const i=Math.ceil(t.samplesPerLine/8/u),c=Math.ceil(t.scanLines/8/b);for(l in t.components)if(t.components.hasOwnProperty(l)){s=t.components[l];const m=Math.ceil(Math.ceil(t.samplesPerLine/8)*s.h/u),h=Math.ceil(Math.ceil(t.scanLines/8)*s.v/b),p=i*s.h,g=c*s.v,k=[];for(let v=0;v<g;v++){const r=[];for(let e=0;e<p;e++)r.push(new Int32Array(64));k.push(r)}s.blocksPerLine=m,s.blocksPerColumn=h,s.blocks=k}t.maxH=u,t.maxV=b,t.mcusPerLine=i,t.mcusPerColumn=c}let E=d();if(E!==65496)throw new Error("SOI not found");for(E=d();E!==65497;){switch(E){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:{const t=y();E===65504&&t[0]===74&&t[1]===70&&t[2]===73&&t[3]===70&&t[4]===0&&(this.jfif={version:{major:t[5],minor:t[6]},densityUnits:t[7],xDensity:t[8]<<8|t[9],yDensity:t[10]<<8|t[11],thumbWidth:t[12],thumbHeight:t[13],thumbData:t.subarray(14,14+3*t[12]*t[13])}),E===65518&&t[0]===65&&t[1]===100&&t[2]===111&&t[3]===98&&t[4]===101&&t[5]===0&&(this.adobe={version:t[6],flags0:t[7]<<8|t[8],flags1:t[9]<<8|t[10],transformCode:t[11]});break}case 65499:{const u=d()+o-2;for(;o<u;){const b=a[o++],s=new Int32Array(64);if(b>>4===0)for(let l=0;l<64;l++){const i=O[l];s[i]=a[o++]}else if(b>>4===1)for(let l=0;l<64;l++){const i=O[l];s[i]=d()}else throw new Error("DQT: invalid table spec");this.quantizationTables[b&15]=s}break}case 65472:case 65473:case 65474:{d();const t={extended:E===65473,progressive:E===65474,precision:a[o++],scanLines:d(),samplesPerLine:d(),components:{},componentsOrder:[],maxH:0,maxV:0,mcusPerLine:0,mcusPerColumn:0},u=a[o++];let b;for(let s=0;s<u;s++){b=a[o];const l=a[o+1]>>4,i=a[o+1]&15,c=a[o+2];t.componentsOrder.push(b),t.components[b]={h:l,v:i,quantizationIdx:c,blocksPerLine:0,blocksPerColumn:0,blocks:[]},o+=3}C(t),this.frames.push(t);break}case 65476:{const t=d();for(let u=2;u<t;){const b=a[o++],s=new Uint8Array(16);let l=0;for(let c=0;c<16;c++,o++)s[c]=a[o],l+=s[c];const i=new Uint8Array(l);for(let c=0;c<l;c++,o++)i[c]=a[o];u+=17+l,b>>4===0?this.huffmanTablesDC[b&15]=te(s,i):this.huffmanTablesAC[b&15]=te(s,i)}break}case 65501:d(),this.resetInterval=d();break;case 65498:{d();const t=a[o++],u=[],b=this.frames[0];for(let m=0;m<t;m++){const h=b.components[a[o++]],p=a[o++];h.huffmanTableDC=this.huffmanTablesDC[p>>4],h.huffmanTableAC=this.huffmanTablesAC[p&15],u.push(h)}const s=a[o++],l=a[o++],i=a[o++],c=ce(a,o,b,u,this.resetInterval,s,l,i>>4,i&15);o+=c;break}case 65535:a[o]!==255&&o--;break;default:if(a[o-3]===255&&a[o-2]>=192&&a[o-2]<=254){o-=3;break}throw new Error(`unknown JPEG marker ${E.toString(16)}`)}E=d()}}getResult(){const{frames:a}=this;if(this.frames.length===0)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let s=0;s<this.frames.length;s++){const l=this.frames[s].components;for(const i of Object.keys(l)){const c=l[i].quantizationIdx;typeof c=="number"&&(l[i].quantizationTable=this.quantizationTables[c],delete l[i].quantizationIdx)}}const o=a[0];if(!o.maxH||!o.maxV)throw new Error("Invalid frame dimensions");const{components:d,componentsOrder:y}=o,C=[],E=o.samplesPerLine,t=o.scanLines;for(let s=0;s<y.length;s++){const l=d[y[s]];C.push({lines:le(l),scaleX:l.h/o.maxH,scaleY:l.v/o.maxV})}const u=new Uint8Array(E*t*C.length);let b=0;for(let s=0;s<t;++s)for(let l=0;l<E;++l)for(let i=0;i<C.length;++i){const c=C[i];u[b]=c.lines[0|s*c.scaleY][0|l*c.scaleX],++b}return u}}class be extends ie{constructor(a){super(a),this.reader=new fe,a.JPEGTables&&this.reader.parse(a.JPEGTables)}decodeBlock(a){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(a)),this.reader.getResult().buffer}}export{be as default};
1
+ import{B as ie}from"./geotiff-CrVtDRFq.js";import"./sandbox-BAC3a-eN.js";import"./lens-PYsLu_MA.js";import"./__vite-browser-external-B1O5LaIO.js";const O=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),Y=4017,Z=799,$=3406,Q=2276,W=1567,_=3784,B=5793,K=2896;function te(T,a){let o=0;const d=[];let y=16;for(;y>0&&!T[y-1];)--y;d.push({children:[],index:0});let C=d[0],E;for(let t=0;t<y;t++){for(let u=0;u<T[t];u++){if(C=d.pop(),!C)throw new Error("buildHuffmanTable: codeLength mismatch");for(C.children[C.index]=a[o];C.index>0;)if(C=d.pop(),!C)throw new Error("buildHuffmanTable: codeLength mismatch");for(C.index++,d.push(C);d.length<=t;)d.push(E={children:[],index:0}),C.children[C.index]=E.children,C=E;o++}t+1<y&&(d.push(E={children:[],index:0}),C.children[C.index]=E.children,C=E)}return d[0].children}function ce(T,a,o,d,y,C,E,t,u){const{mcusPerLine:b,progressive:s}=o;if(d.length>1&&(b===void 0||o.mcusPerColumn===void 0))throw new Error("Missing MCU dimensions");if(d.length===1&&(d[0].blocksPerLine===void 0||d[0].blocksPerColumn===void 0))throw new Error("Missing block dimensions");const l=a;let i=a,c=0,m=0;function h(){if(m>0)return m--,c>>m&1;if(c=T[i++],c===255){const f=T[i++];if(f)throw new Error(`unexpected marker: ${(c<<8|f).toString(16)}`)}return m=7,c>>>7}function p(f){if(!f)throw new Error("Huffman table not found");let w=f,x;for(;(x=h())!==null;){const D=w[x];if(typeof D=="number")return D;if(typeof D!="object")throw new Error("invalid huffman sequence");w=D}return null}function g(f){let w=f,x=0;for(;w>0;){const D=h();if(D===null)return;x=x<<1|D,--w}return x}function k(f){const w=g(f);if(w!==void 0)return w>=1<<f-1?w:w+(-1<<f)+1}function v(f,w){const x=p(f.huffmanTableDC);if(x===null)throw new Error("Huffman error");const D=x===0?0:k(x);if(D===void 0)throw new Error("Unexpected end of stream");f.pred===void 0&&(f.pred=0),f.pred+=D,w[0]=f.pred;let A=1;for(;A<64;){const L=p(f.huffmanTableAC);if(L===null)throw new Error("Unexpected end of data in AC coefficient decoding");const U=L&15,P=L>>4;if(U===0){if(P<15)break;A+=16}else{A+=P;const q=O[A],S=k(U);if(S===void 0)throw new Error("Unexpected end of stream");w[q]=S,A++}}}function r(f,w){const x=p(f.huffmanTableDC);if(x===null)throw new Error("Huffman error");const D=k(x);if(D===void 0)throw new Error("Unexpected end of data in DC coefficient decoding");const A=x===0?0:D<<u;f.pred===void 0&&(f.pred=0),f.pred+=A,w[0]=f.pred}function e(f,w){const x=h();if(x===null)throw new Error("Unexpected end of data in DC coefficient decoding");w[0]|=x<<u}let F=0;function n(f,w){if(F>0){F--;return}let x=C;const D=E;for(;x<=D;){const A=p(f.huffmanTableAC);if(A===null)throw new Error("Unexpected end of data in AC coefficient decoding");const L=A&15,U=A>>4;if(L===0){if(U<15){const P=g(U);if(P===void 0)throw new Error("Unexpected end of data in AC coefficient decoding");F=P+(1<<U)-1;break}x+=16}else{x+=U;const P=O[x],q=k(L);if(q===void 0)throw new Error("Unexpected end of data in AC coefficient decoding");w[P]=q*(1<<u),x++}}}let I=0,ee;function oe(f,w){let x=C;const D=E;let A=0;for(;x<=D;){const L=O[x],U=w[L]<0?-1:1;switch(I){case 0:{const P=p(f.huffmanTableAC);if(P===null)throw new Error("Unexpected end of data in AC coefficient decoding");const q=P&15;if(A=P>>4,q===0)if(A<15){const S=g(A);if(S===void 0)throw new Error("Unexpected end of data in AC coefficient decoding");F=S+(1<<A),I=4}else A=16,I=1;else{if(q!==1)throw new Error("invalid ACn encoding");const S=k(q);if(S===void 0)throw new Error("Unexpected end of data in AC coefficient decoding");ee=S,I=A?2:3}continue}case 1:case 2:if(w[L]){const P=h();if(P===null)throw new Error("Unexpected end of data in AC coefficient decoding");w[L]+=(P<<u)*U}else A--,A===0&&(I=I===2?3:0);break;case 3:if(w[L]){const P=h();if(P===null)throw new Error("Unexpected end of data in AC coefficient decoding");w[L]+=(P<<u)*U}else w[L]=ee<<u,I=0;break;case 4:if(w[L]){const P=h();if(P===null)throw new Error("Unexpected end of data in AC coefficient decoding");w[L]+=(P<<u)*U}break}x++}I===4&&(F--,F===0&&(I=0))}function re(f,w,x,D,A){const L=x/b|0,U=x%b,P=L*f.v+D,q=U*f.h+A;if(!f.blocks)throw new Error("Missing blocks");w(f,f.blocks[P][q])}function se(f,w,x){const D=x/f.blocksPerLine|0,A=x%f.blocksPerLine;if(!f.blocks)throw new Error("Missing blocks");w(f,f.blocks[D][A])}const z=d.length;let R,M,G,X,j,V;s?C===0?V=t===0?r:e:V=t===0?n:oe:V=v;let H=0,N,J;z===1?J=d[0].blocksPerLine*d[0].blocksPerColumn:J=b*o.mcusPerColumn;const ne=y||J;for(;H<J;){for(M=0;M<z;M++)d[M].pred=0;if(F=0,z===1)for(R=d[0],j=0;j<ne;j++)se(R,V,H),H++;else for(j=0;j<ne;j++){for(M=0;M<z;M++){R=d[M];const{h:f,v:w}=R;for(G=0;G<w;G++)for(X=0;X<f;X++)re(R,V,H,G,X)}if(H++,H===J)break}if(m=0,N=T[i]<<8|T[i+1],N<65280)throw new Error("marker was not found");if(N>=65488&&N<=65495)i+=2;else break}return i-l}function le(T){const a=[],{blocksPerLine:o,blocksPerColumn:d}=T;if(!o||!d||!T.blocks)throw new Error("Missing component data");const y=o<<3,C=new Int32Array(64),E=new Uint8Array(64);function t(u,b,s){const l=T.quantizationTable;if(!l)throw new Error("No quantization table found");let i,c,m,h,p,g,k,v,r;const e=s;let F;for(F=0;F<64;F++)e[F]=u[F]*l[F];for(F=0;F<8;++F){const n=8*F;if(e[1+n]===0&&e[2+n]===0&&e[3+n]===0&&e[4+n]===0&&e[5+n]===0&&e[6+n]===0&&e[7+n]===0){r=B*e[0+n]+512>>10,e[0+n]=r,e[1+n]=r,e[2+n]=r,e[3+n]=r,e[4+n]=r,e[5+n]=r,e[6+n]=r,e[7+n]=r;continue}i=B*e[0+n]+128>>8,c=B*e[4+n]+128>>8,m=e[2+n],h=e[6+n],p=K*(e[1+n]-e[7+n])+128>>8,v=K*(e[1+n]+e[7+n])+128>>8,g=e[3+n]<<4,k=e[5+n]<<4,r=i-c+1>>1,i=i+c+1>>1,c=r,r=m*_+h*W+128>>8,m=m*W-h*_+128>>8,h=r,r=p-k+1>>1,p=p+k+1>>1,k=r,r=v+g+1>>1,g=v-g+1>>1,v=r,r=i-h+1>>1,i=i+h+1>>1,h=r,r=c-m+1>>1,c=c+m+1>>1,m=r,r=p*Q+v*$+2048>>12,p=p*$-v*Q+2048>>12,v=r,r=g*Z+k*Y+2048>>12,g=g*Y-k*Z+2048>>12,k=r,e[0+n]=i+v,e[7+n]=i-v,e[1+n]=c+k,e[6+n]=c-k,e[2+n]=m+g,e[5+n]=m-g,e[3+n]=h+p,e[4+n]=h-p}for(F=0;F<8;++F){const n=F;if(e[8+n]===0&&e[16+n]===0&&e[24+n]===0&&e[32+n]===0&&e[40+n]===0&&e[48+n]===0&&e[56+n]===0){r=B*s[F+0]+8192>>14,e[0+n]=r,e[8+n]=r,e[16+n]=r,e[24+n]=r,e[32+n]=r,e[40+n]=r,e[48+n]=r,e[56+n]=r;continue}i=B*e[0+n]+2048>>12,c=B*e[32+n]+2048>>12,m=e[16+n],h=e[48+n],p=K*(e[8+n]-e[56+n])+2048>>12,v=K*(e[8+n]+e[56+n])+2048>>12,g=e[24+n],k=e[40+n],r=i-c+1>>1,i=i+c+1>>1,c=r,r=m*_+h*W+2048>>12,m=m*W-h*_+2048>>12,h=r,r=p-k+1>>1,p=p+k+1>>1,k=r,r=v+g+1>>1,g=v-g+1>>1,v=r,r=i-h+1>>1,i=i+h+1>>1,h=r,r=c-m+1>>1,c=c+m+1>>1,m=r,r=p*Q+v*$+2048>>12,p=p*$-v*Q+2048>>12,v=r,r=g*Z+k*Y+2048>>12,g=g*Y-k*Z+2048>>12,k=r,e[0+n]=i+v,e[56+n]=i-v,e[8+n]=c+k,e[48+n]=c-k,e[16+n]=m+g,e[40+n]=m-g,e[24+n]=h+p,e[32+n]=h-p}for(F=0;F<64;++F){const n=128+(e[F]+8>>4);n<0?b[F]=0:n>255?b[F]=255:b[F]=n}}for(let u=0;u<d;u++){const b=u<<3;for(let s=0;s<8;s++)a.push(new Uint8Array(y));for(let s=0;s<o;s++){t(T.blocks[u][s],E,C);let l=0;const i=s<<3;for(let c=0;c<8;c++){const m=a[b+c];for(let h=0;h<8;h++)m[i+h]=E[l++]}}}return a}class fe{constructor(){this.jfif=null,this.adobe=null,this.resetInterval=0,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.frames=[]}resetFrames(){this.frames=[]}parse(a){let o=0;function d(){const t=a[o]<<8|a[o+1];return o+=2,t}function y(){const t=d(),u=a.subarray(o,o+t-2);return o+=u.length,u}function C(t){let u=0,b=0,s,l;for(l in t.components)t.components.hasOwnProperty(l)&&(s=t.components[l],u<s.h&&(u=s.h),b<s.v&&(b=s.v));const i=Math.ceil(t.samplesPerLine/8/u),c=Math.ceil(t.scanLines/8/b);for(l in t.components)if(t.components.hasOwnProperty(l)){s=t.components[l];const m=Math.ceil(Math.ceil(t.samplesPerLine/8)*s.h/u),h=Math.ceil(Math.ceil(t.scanLines/8)*s.v/b),p=i*s.h,g=c*s.v,k=[];for(let v=0;v<g;v++){const r=[];for(let e=0;e<p;e++)r.push(new Int32Array(64));k.push(r)}s.blocksPerLine=m,s.blocksPerColumn=h,s.blocks=k}t.maxH=u,t.maxV=b,t.mcusPerLine=i,t.mcusPerColumn=c}let E=d();if(E!==65496)throw new Error("SOI not found");for(E=d();E!==65497;){switch(E){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:{const t=y();E===65504&&t[0]===74&&t[1]===70&&t[2]===73&&t[3]===70&&t[4]===0&&(this.jfif={version:{major:t[5],minor:t[6]},densityUnits:t[7],xDensity:t[8]<<8|t[9],yDensity:t[10]<<8|t[11],thumbWidth:t[12],thumbHeight:t[13],thumbData:t.subarray(14,14+3*t[12]*t[13])}),E===65518&&t[0]===65&&t[1]===100&&t[2]===111&&t[3]===98&&t[4]===101&&t[5]===0&&(this.adobe={version:t[6],flags0:t[7]<<8|t[8],flags1:t[9]<<8|t[10],transformCode:t[11]});break}case 65499:{const u=d()+o-2;for(;o<u;){const b=a[o++],s=new Int32Array(64);if(b>>4===0)for(let l=0;l<64;l++){const i=O[l];s[i]=a[o++]}else if(b>>4===1)for(let l=0;l<64;l++){const i=O[l];s[i]=d()}else throw new Error("DQT: invalid table spec");this.quantizationTables[b&15]=s}break}case 65472:case 65473:case 65474:{d();const t={extended:E===65473,progressive:E===65474,precision:a[o++],scanLines:d(),samplesPerLine:d(),components:{},componentsOrder:[],maxH:0,maxV:0,mcusPerLine:0,mcusPerColumn:0},u=a[o++];let b;for(let s=0;s<u;s++){b=a[o];const l=a[o+1]>>4,i=a[o+1]&15,c=a[o+2];t.componentsOrder.push(b),t.components[b]={h:l,v:i,quantizationIdx:c,blocksPerLine:0,blocksPerColumn:0,blocks:[]},o+=3}C(t),this.frames.push(t);break}case 65476:{const t=d();for(let u=2;u<t;){const b=a[o++],s=new Uint8Array(16);let l=0;for(let c=0;c<16;c++,o++)s[c]=a[o],l+=s[c];const i=new Uint8Array(l);for(let c=0;c<l;c++,o++)i[c]=a[o];u+=17+l,b>>4===0?this.huffmanTablesDC[b&15]=te(s,i):this.huffmanTablesAC[b&15]=te(s,i)}break}case 65501:d(),this.resetInterval=d();break;case 65498:{d();const t=a[o++],u=[],b=this.frames[0];for(let m=0;m<t;m++){const h=b.components[a[o++]],p=a[o++];h.huffmanTableDC=this.huffmanTablesDC[p>>4],h.huffmanTableAC=this.huffmanTablesAC[p&15],u.push(h)}const s=a[o++],l=a[o++],i=a[o++],c=ce(a,o,b,u,this.resetInterval,s,l,i>>4,i&15);o+=c;break}case 65535:a[o]!==255&&o--;break;default:if(a[o-3]===255&&a[o-2]>=192&&a[o-2]<=254){o-=3;break}throw new Error(`unknown JPEG marker ${E.toString(16)}`)}E=d()}}getResult(){const{frames:a}=this;if(this.frames.length===0)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let s=0;s<this.frames.length;s++){const l=this.frames[s].components;for(const i of Object.keys(l)){const c=l[i].quantizationIdx;typeof c=="number"&&(l[i].quantizationTable=this.quantizationTables[c],delete l[i].quantizationIdx)}}const o=a[0];if(!o.maxH||!o.maxV)throw new Error("Invalid frame dimensions");const{components:d,componentsOrder:y}=o,C=[],E=o.samplesPerLine,t=o.scanLines;for(let s=0;s<y.length;s++){const l=d[y[s]];C.push({lines:le(l),scaleX:l.h/o.maxH,scaleY:l.v/o.maxV})}const u=new Uint8Array(E*t*C.length);let b=0;for(let s=0;s<t;++s)for(let l=0;l<E;++l)for(let i=0;i<C.length;++i){const c=C[i];u[b]=c.lines[0|s*c.scaleY][0|l*c.scaleX],++b}return u}}class be extends ie{constructor(a){super(a),this.reader=new fe,a.JPEGTables&&this.reader.parse(a.JPEGTables)}decodeBlock(a){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(a)),this.reader.getResult().buffer}}export{be as default};