@remotion/gif 3.3.62 → 3.3.63

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 (86) hide show
  1. package/dist/cjs/Gif.d.ts +7 -0
  2. package/dist/cjs/Gif.js +19 -0
  3. package/dist/cjs/GifForDevelopment.d.ts +3 -0
  4. package/dist/cjs/GifForDevelopment.js +81 -0
  5. package/dist/cjs/GifForRendering.d.ts +3 -0
  6. package/dist/cjs/GifForRendering.js +80 -0
  7. package/dist/cjs/canvas.d.ts +13 -0
  8. package/dist/cjs/canvas.js +96 -0
  9. package/dist/cjs/get-gif-duration-in-seconds.d.ts +5 -0
  10. package/dist/cjs/get-gif-duration-in-seconds.js +34 -0
  11. package/dist/cjs/gif-cache.d.ts +4 -0
  12. package/dist/cjs/gif-cache.js +6 -0
  13. package/dist/cjs/gifuct/deinterlace.d.ts +4 -0
  14. package/dist/cjs/gifuct/deinterlace.js +26 -0
  15. package/dist/cjs/gifuct/index.d.ts +4 -0
  16. package/dist/cjs/gifuct/index.js +54 -0
  17. package/dist/cjs/gifuct/lzw.d.ts +5 -0
  18. package/dist/cjs/gifuct/lzw.js +119 -0
  19. package/dist/cjs/gifuct/types.d.ts +96 -0
  20. package/dist/cjs/gifuct/types.js +2 -0
  21. package/dist/cjs/index.d.ts +4 -0
  22. package/dist/cjs/index.js +9 -0
  23. package/dist/cjs/is-cors-error.d.ts +1 -0
  24. package/dist/cjs/is-cors-error.js +13 -0
  25. package/dist/cjs/js-binary-schema-parser/gif.d.ts +51 -0
  26. package/dist/cjs/js-binary-schema-parser/gif.js +158 -0
  27. package/dist/cjs/js-binary-schema-parser/parser.d.ts +9 -0
  28. package/dist/cjs/js-binary-schema-parser/parser.js +54 -0
  29. package/dist/cjs/js-binary-schema-parser/uint8-parser.d.ts +17 -0
  30. package/dist/cjs/js-binary-schema-parser/uint8-parser.js +79 -0
  31. package/dist/cjs/lru/index.d.ts +101 -0
  32. package/dist/cjs/lru/index.js +258 -0
  33. package/dist/cjs/parse-generate.d.ts +18 -0
  34. package/dist/cjs/parse-generate.js +96 -0
  35. package/dist/cjs/parser/decompress-frames.d.ts +2 -0
  36. package/dist/cjs/parser/decompress-frames.js +19 -0
  37. package/dist/cjs/preload-gif.d.ts +8 -0
  38. package/dist/cjs/preload-gif.js +41 -0
  39. package/dist/cjs/props.d.ts +24 -0
  40. package/dist/cjs/props.js +2 -0
  41. package/dist/cjs/react-tools.d.ts +9 -0
  42. package/dist/cjs/react-tools.js +40 -0
  43. package/dist/cjs/resolve-gif-source.d.ts +1 -0
  44. package/dist/cjs/resolve-gif-source.js +7 -0
  45. package/dist/cjs/use-element-size.d.ts +6 -0
  46. package/dist/cjs/use-element-size.js +73 -0
  47. package/dist/cjs/useCurrentGifIndex.d.ts +2 -0
  48. package/dist/cjs/useCurrentGifIndex.js +35 -0
  49. package/dist/cjs/worker/index.d.ts +1 -0
  50. package/dist/cjs/worker/index.js +12 -0
  51. package/dist/cjs/worker/source.d.ts +1 -0
  52. package/dist/cjs/worker/source.js +7 -0
  53. package/dist/cjs/worker/worker.d.ts +1 -0
  54. package/dist/cjs/worker/worker.js +39 -0
  55. package/dist/esm/Gif.d.ts +7 -0
  56. package/dist/esm/GifForDevelopment.d.ts +3 -0
  57. package/dist/esm/GifForRendering.d.ts +3 -0
  58. package/dist/esm/canvas.d.ts +13 -0
  59. package/dist/esm/get-gif-duration-in-seconds.d.ts +5 -0
  60. package/dist/esm/gif-cache.d.ts +4 -0
  61. package/dist/esm/gifuct/deinterlace.d.ts +4 -0
  62. package/dist/esm/gifuct/index.d.ts +4 -0
  63. package/dist/esm/gifuct/lzw.d.ts +5 -0
  64. package/dist/esm/gifuct/types.d.ts +96 -0
  65. package/dist/esm/index.d.ts +4 -0
  66. package/dist/esm/index.mjs +1276 -0
  67. package/dist/esm/is-cors-error.d.ts +1 -0
  68. package/dist/esm/js-binary-schema-parser/gif.d.ts +51 -0
  69. package/dist/esm/js-binary-schema-parser/parser.d.ts +9 -0
  70. package/dist/esm/js-binary-schema-parser/uint8-parser.d.ts +17 -0
  71. package/dist/esm/lru/index.d.ts +101 -0
  72. package/dist/esm/parse-generate.d.ts +18 -0
  73. package/dist/esm/parser/decompress-frames.d.ts +2 -0
  74. package/dist/esm/preload-gif.d.ts +8 -0
  75. package/dist/esm/props.d.ts +24 -0
  76. package/dist/esm/react-tools.d.ts +9 -0
  77. package/dist/esm/resolve-gif-source.d.ts +1 -0
  78. package/dist/esm/use-element-size.d.ts +6 -0
  79. package/dist/esm/useCurrentGifIndex.d.ts +2 -0
  80. package/dist/esm/worker/index.d.ts +1 -0
  81. package/dist/esm/worker/source.d.ts +1 -0
  82. package/dist/esm/worker/worker.d.ts +1 -0
  83. package/dist/react-tools.js +0 -1
  84. package/dist/tsconfig-esm.tsbuildinfo +1 -0
  85. package/dist/tsconfig.tsbuildinfo +1 -0
  86. package/package.json +19 -8
@@ -0,0 +1 @@
1
+ export declare const src = "\"use strict\";(()=>{var P=(t,r,e={},n=e)=>{if(Array.isArray(r))r.forEach(o=>P(t,o,e,n));else if(typeof r==\"function\")r(t,e,n,P);else{let o=Object.keys(r)[0];Array.isArray(r[o])?(n[o]={},P(t,r[o],e,n[o])):n[o]=r[o](t,e,n,P)}return e},M=(t,r)=>function(e,n,o,c){let s=[],a=e.pos;for(;r(e,n,o);){let i={};if(c(e,t,n,i),e.pos===a)break;a=e.pos,s.push(i)}return s},g=(t,r)=>(e,n,o,c)=>{r(e,n,o)&&c(e,t,n,o)};var W=t=>({data:t,pos:0}),m=()=>t=>t.data[t.pos++],U=(t=0)=>r=>r.data[r.pos+t],f=t=>r=>r.data.subarray(r.pos,r.pos+=t),k=t=>r=>r.data.subarray(r.pos,r.pos+t),v=t=>r=>Array.from(f(t)(r)).map(e=>String.fromCharCode(e)).join(\"\"),b=t=>r=>{let e=f(2)(r);return t?(e[1]<<8)+e[0]:(e[0]<<8)+e[1]},E=(t,r)=>(e,n,o)=>{let c=typeof r==\"function\"?r(e,n,o):r,s=f(t),a=new Array(c);for(let i=0;i<c;i++)a[i]=s(e);return a},$=(t,r,e)=>{let n=0;for(let o=0;o<e;o++)n+=Number(t[r+o]&&2**(e-o-1));return n},I=t=>r=>{let e=m()(r),n=new Array(8);for(let o=0;o<8;o++)n[7-o]=Boolean(e&1<<o);return Object.keys(t).reduce((o,c)=>{let s=t[c];return s.length?o[c]=$(n,s.index,s.length):o[c]=n[s.index],o},{})};var z={blocks:t=>{let e=[],n=t.data.length,o=0;for(let a=m()(t);a!==0&&a;a=m()(t)){if(t.pos+a>=n){let i=n-t.pos;e.push(f(i)(t)),o+=i;break}e.push(f(a)(t)),o+=a}let c=new Uint8Array(o),s=0;for(let a=0;a<e.length;a++)c.set(e[a],s),s+=e[a].length;return c}},q=g({gce:[{codes:f(2)},{byteSize:m()},{extras:I({future:{index:0,length:3},disposal:{index:3,length:3},userInput:{index:6},transparentColorGiven:{index:7}})},{delay:b(!0)},{transparentColorIndex:m()},{terminator:m()}]},t=>{let r=k(2)(t);return r[0]===33&&r[1]===249}),H=g({image:[{code:m()},{descriptor:[{left:b(!0)},{top:b(!0)},{width:b(!0)},{height:b(!0)},{lct:I({exists:{index:0},interlaced:{index:1},sort:{index:2},future:{index:3,length:2},size:{index:5,length:3}})}]},g({lct:E(3,(t,r,e)=>2**(e.descriptor.lct.size+1))},(t,r,e)=>e.descriptor.lct.exists),{data:[{minCodeSize:m()},z]}]},t=>U()(t)===44),J=g({text:[{codes:f(2)},{blockSize:m()},{preData:(t,r,e)=>f(e.text.blockSize)(t)},z]},t=>{let r=k(2)(t);return r[0]===33&&r[1]===1}),Q=g({application:[{codes:f(2)},{blockSize:m()},{id:(t,r,e)=>v(e.blockSize)(t)},z]},t=>{let r=k(2)(t);return r[0]===33&&r[1]===255}),V=g({comment:[{codes:f(2)},z]},t=>{let r=k(2)(t);return r[0]===33&&r[1]===254}),K=[{header:[{signature:v(3)},{version:v(3)}]},{lsd:[{width:b(!0)},{height:b(!0)},{gct:I({exists:{index:0},resolution:{index:1,length:3},sort:{index:4},size:{index:5,length:3}})},{backgroundColorIndex:m()},{pixelAspectRatio:m()}]},g({gct:E(3,(t,r)=>2**(r.lsd.gct.size+1))},(t,r)=>r.lsd.gct.exists),{frames:M([q,Q,V,H,J],t=>{let r=U()(t);return r===33||r===44})}];var X=(t,r)=>{let e=new Array(t.length),n=t.length/r,o=function(i,d){let u=t.slice(d*r,(d+1)*r);e.splice(...[i*r,r].concat(u))},c=[0,4,2,1],s=[8,8,4,2],a=0;for(let i=0;i<4;i++)for(let d=c[i];d<n;d+=s[i])o(d,a),a++;return e};var Z=(t,r,e)=>{let c=e,s,a,i,d,u;var w;let l,p;var C,S,h,_,G;let x=new Array(e),B=new Array(4096),T=new Array(4096),F=new Array(4096+1),R=t,y=1<<R,O=y+1;for(s=y+2,u=-1,i=R+1,a=(1<<i)-1,l=0;l<y;l++)B[l]=0,T[l]=l;var C,w,S,h,G,_;for(C=w=S=h=G=_=0,p=0;p<c;){if(h===0){if(w<i){C+=r[_]<<w,w+=8,_++;continue}if(l=C&a,C>>=i,w-=i,l>s||l===O)break;if(l===y){i=R+1,a=(1<<i)-1,s=y+2,u=-1;continue}if(u===-1){F[h++]=T[l],u=l,S=l;continue}for(d=l,l===s&&(F[h++]=S,l=u);l>y;)F[h++]=T[l],l=B[l];S=T[l]&255,F[h++]=S,s<4096&&(B[s]=u,T[s]=S,s++,!(s&a)&&s<4096&&(i++,a+=s)),u=d}h--,x[G++]=F[h],p++}for(p=G;p<c;p++)x[p]=0;return x};var j=t=>{let r=new Uint8Array(t);return P(W(r),K)},D=(t,r)=>{var s,a;if(!t.image){console.warn(\"gif frame does not have associated image.\");return}let{image:e}=t,n=e.descriptor.width*e.descriptor.height,o=Z(e.data.minCodeSize,e.data.blocks,n);return(s=e.descriptor.lct)!=null&&s.interlaced&&(o=X(o,e.descriptor.width)),{pixels:o,dims:{top:t.image.descriptor.top,left:t.image.descriptor.left,width:t.image.descriptor.width,height:t.image.descriptor.height},colorTable:(a=e.descriptor.lct)!=null&&a.exists?e.lct:r,delay:(t.gce.delay||10)*10,disposalType:t.gce.extras.disposal,transparentIndex:t.gce.extras.transparentColorGiven?t.gce.transparentColorIndex:-1}};var L=t=>t.frames.filter(r=>!(\"application\"in r)).map(r=>r.image?D(r,t.gct):null).filter(Boolean).map(r=>r);var Y=t=>{let r=null;for(let e of t.frames)r=e.gce?e.gce:r,\"image\"in e&&!(\"gce\"in e)&&r!==null&&(e.gce=r)},N=(t,{signal:r})=>fetch(t,{signal:r}).then(e=>{var n;if(!((n=e.headers.get(\"Content-Type\"))!=null&&n.includes(\"image/gif\")))throw Error(`Wrong content type: \"${e.headers.get(\"Content-Type\")}\"`);return e.arrayBuffer()}).then(e=>j(e)).then(e=>(Y(e),e)).then(e=>Promise.all([L(e),{width:e.lsd.width,height:e.lsd.height}])).then(([e,n])=>{let o=[],c=n.width*n.height*4,s=new Uint8ClampedArray(c);for(let a=0;a<e.length;++a){let i=e[a],d=e[a].disposalType===3?s.slice():null;if(o.push(ee(s,i,n)),e[a].disposalType===2)s=new Uint8ClampedArray(c);else if(e[a].disposalType===3){if(!d)throw Error(\"Disposal type 3 without previous frame\");s=d}else s=o[a].slice()}return{...n,loaded:!0,delays:e.map(a=>a.delay),frames:o}}),ee=(t,r,e)=>{let{width:n,height:o,top:c,left:s}=r.dims,a=c*e.width+s;for(let i=0;i<o;i++)for(let d=0;d<n;d++){let u=i*n+d,l=r.pixels[u];if(l!==r.transparentIndex){let p=a+i*e.width+d,x=r.colorTable[l];t[p*4]=x[0],t[p*4+1]=x[1],t[p*4+2]=x[2],t[p*4+3]=l===r.transparentIndex?0:255}}return t};var A=new Map;self.addEventListener(\"message\",t=>{let{type:r,src:e}=t.data||t;switch(r){case\"parse\":{if(!A.has(e)){let n=new AbortController,o={signal:n.signal};A.set(e,n),N(e,o).then(c=>{self.postMessage(Object.assign(c,{src:e}),c.frames.map(s=>s.buffer))}).catch(c=>{self.postMessage({src:e,error:c,loaded:!0})}).finally(()=>{A.delete(e)})}break}case\"cancel\":{A.has(e)&&(A.get(e).abort(),A.delete(e));break}default:break}});})();\n";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.src = void 0;
4
+ // Auto-generated by build.mjs
5
+ exports.src =
6
+ // eslint-disable-next-line no-template-curly-in-string
7
+ "\"use strict\";(()=>{var P=(t,r,e={},n=e)=>{if(Array.isArray(r))r.forEach(o=>P(t,o,e,n));else if(typeof r==\"function\")r(t,e,n,P);else{let o=Object.keys(r)[0];Array.isArray(r[o])?(n[o]={},P(t,r[o],e,n[o])):n[o]=r[o](t,e,n,P)}return e},M=(t,r)=>function(e,n,o,c){let s=[],a=e.pos;for(;r(e,n,o);){let i={};if(c(e,t,n,i),e.pos===a)break;a=e.pos,s.push(i)}return s},g=(t,r)=>(e,n,o,c)=>{r(e,n,o)&&c(e,t,n,o)};var W=t=>({data:t,pos:0}),m=()=>t=>t.data[t.pos++],U=(t=0)=>r=>r.data[r.pos+t],f=t=>r=>r.data.subarray(r.pos,r.pos+=t),k=t=>r=>r.data.subarray(r.pos,r.pos+t),v=t=>r=>Array.from(f(t)(r)).map(e=>String.fromCharCode(e)).join(\"\"),b=t=>r=>{let e=f(2)(r);return t?(e[1]<<8)+e[0]:(e[0]<<8)+e[1]},E=(t,r)=>(e,n,o)=>{let c=typeof r==\"function\"?r(e,n,o):r,s=f(t),a=new Array(c);for(let i=0;i<c;i++)a[i]=s(e);return a},$=(t,r,e)=>{let n=0;for(let o=0;o<e;o++)n+=Number(t[r+o]&&2**(e-o-1));return n},I=t=>r=>{let e=m()(r),n=new Array(8);for(let o=0;o<8;o++)n[7-o]=Boolean(e&1<<o);return Object.keys(t).reduce((o,c)=>{let s=t[c];return s.length?o[c]=$(n,s.index,s.length):o[c]=n[s.index],o},{})};var z={blocks:t=>{let e=[],n=t.data.length,o=0;for(let a=m()(t);a!==0&&a;a=m()(t)){if(t.pos+a>=n){let i=n-t.pos;e.push(f(i)(t)),o+=i;break}e.push(f(a)(t)),o+=a}let c=new Uint8Array(o),s=0;for(let a=0;a<e.length;a++)c.set(e[a],s),s+=e[a].length;return c}},q=g({gce:[{codes:f(2)},{byteSize:m()},{extras:I({future:{index:0,length:3},disposal:{index:3,length:3},userInput:{index:6},transparentColorGiven:{index:7}})},{delay:b(!0)},{transparentColorIndex:m()},{terminator:m()}]},t=>{let r=k(2)(t);return r[0]===33&&r[1]===249}),H=g({image:[{code:m()},{descriptor:[{left:b(!0)},{top:b(!0)},{width:b(!0)},{height:b(!0)},{lct:I({exists:{index:0},interlaced:{index:1},sort:{index:2},future:{index:3,length:2},size:{index:5,length:3}})}]},g({lct:E(3,(t,r,e)=>2**(e.descriptor.lct.size+1))},(t,r,e)=>e.descriptor.lct.exists),{data:[{minCodeSize:m()},z]}]},t=>U()(t)===44),J=g({text:[{codes:f(2)},{blockSize:m()},{preData:(t,r,e)=>f(e.text.blockSize)(t)},z]},t=>{let r=k(2)(t);return r[0]===33&&r[1]===1}),Q=g({application:[{codes:f(2)},{blockSize:m()},{id:(t,r,e)=>v(e.blockSize)(t)},z]},t=>{let r=k(2)(t);return r[0]===33&&r[1]===255}),V=g({comment:[{codes:f(2)},z]},t=>{let r=k(2)(t);return r[0]===33&&r[1]===254}),K=[{header:[{signature:v(3)},{version:v(3)}]},{lsd:[{width:b(!0)},{height:b(!0)},{gct:I({exists:{index:0},resolution:{index:1,length:3},sort:{index:4},size:{index:5,length:3}})},{backgroundColorIndex:m()},{pixelAspectRatio:m()}]},g({gct:E(3,(t,r)=>2**(r.lsd.gct.size+1))},(t,r)=>r.lsd.gct.exists),{frames:M([q,Q,V,H,J],t=>{let r=U()(t);return r===33||r===44})}];var X=(t,r)=>{let e=new Array(t.length),n=t.length/r,o=function(i,d){let u=t.slice(d*r,(d+1)*r);e.splice(...[i*r,r].concat(u))},c=[0,4,2,1],s=[8,8,4,2],a=0;for(let i=0;i<4;i++)for(let d=c[i];d<n;d+=s[i])o(d,a),a++;return e};var Z=(t,r,e)=>{let c=e,s,a,i,d,u;var w;let l,p;var C,S,h,_,G;let x=new Array(e),B=new Array(4096),T=new Array(4096),F=new Array(4096+1),R=t,y=1<<R,O=y+1;for(s=y+2,u=-1,i=R+1,a=(1<<i)-1,l=0;l<y;l++)B[l]=0,T[l]=l;var C,w,S,h,G,_;for(C=w=S=h=G=_=0,p=0;p<c;){if(h===0){if(w<i){C+=r[_]<<w,w+=8,_++;continue}if(l=C&a,C>>=i,w-=i,l>s||l===O)break;if(l===y){i=R+1,a=(1<<i)-1,s=y+2,u=-1;continue}if(u===-1){F[h++]=T[l],u=l,S=l;continue}for(d=l,l===s&&(F[h++]=S,l=u);l>y;)F[h++]=T[l],l=B[l];S=T[l]&255,F[h++]=S,s<4096&&(B[s]=u,T[s]=S,s++,!(s&a)&&s<4096&&(i++,a+=s)),u=d}h--,x[G++]=F[h],p++}for(p=G;p<c;p++)x[p]=0;return x};var j=t=>{let r=new Uint8Array(t);return P(W(r),K)},D=(t,r)=>{var s,a;if(!t.image){console.warn(\"gif frame does not have associated image.\");return}let{image:e}=t,n=e.descriptor.width*e.descriptor.height,o=Z(e.data.minCodeSize,e.data.blocks,n);return(s=e.descriptor.lct)!=null&&s.interlaced&&(o=X(o,e.descriptor.width)),{pixels:o,dims:{top:t.image.descriptor.top,left:t.image.descriptor.left,width:t.image.descriptor.width,height:t.image.descriptor.height},colorTable:(a=e.descriptor.lct)!=null&&a.exists?e.lct:r,delay:(t.gce.delay||10)*10,disposalType:t.gce.extras.disposal,transparentIndex:t.gce.extras.transparentColorGiven?t.gce.transparentColorIndex:-1}};var L=t=>t.frames.filter(r=>!(\"application\"in r)).map(r=>r.image?D(r,t.gct):null).filter(Boolean).map(r=>r);var Y=t=>{let r=null;for(let e of t.frames)r=e.gce?e.gce:r,\"image\"in e&&!(\"gce\"in e)&&r!==null&&(e.gce=r)},N=(t,{signal:r})=>fetch(t,{signal:r}).then(e=>{var n;if(!((n=e.headers.get(\"Content-Type\"))!=null&&n.includes(\"image/gif\")))throw Error(`Wrong content type: \"${e.headers.get(\"Content-Type\")}\"`);return e.arrayBuffer()}).then(e=>j(e)).then(e=>(Y(e),e)).then(e=>Promise.all([L(e),{width:e.lsd.width,height:e.lsd.height}])).then(([e,n])=>{let o=[],c=n.width*n.height*4,s=new Uint8ClampedArray(c);for(let a=0;a<e.length;++a){let i=e[a],d=e[a].disposalType===3?s.slice():null;if(o.push(ee(s,i,n)),e[a].disposalType===2)s=new Uint8ClampedArray(c);else if(e[a].disposalType===3){if(!d)throw Error(\"Disposal type 3 without previous frame\");s=d}else s=o[a].slice()}return{...n,loaded:!0,delays:e.map(a=>a.delay),frames:o}}),ee=(t,r,e)=>{let{width:n,height:o,top:c,left:s}=r.dims,a=c*e.width+s;for(let i=0;i<o;i++)for(let d=0;d<n;d++){let u=i*n+d,l=r.pixels[u];if(l!==r.transparentIndex){let p=a+i*e.width+d,x=r.colorTable[l];t[p*4]=x[0],t[p*4+1]=x[1],t[p*4+2]=x[2],t[p*4+3]=l===r.transparentIndex?0:255}}return t};var A=new Map;self.addEventListener(\"message\",t=>{let{type:r,src:e}=t.data||t;switch(r){case\"parse\":{if(!A.has(e)){let n=new AbortController,o={signal:n.signal};A.set(e,n),N(e,o).then(c=>{self.postMessage(Object.assign(c,{src:e}),c.frames.map(s=>s.buffer))}).catch(c=>{self.postMessage({src:e,error:c,loaded:!0})}).finally(()=>{A.delete(e)})}break}case\"cancel\":{A.has(e)&&(A.get(e).abort(),A.delete(e));break}default:break}});})();\n";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const parse_generate_1 = require("../parse-generate");
4
+ const abortMap = new Map();
5
+ self.addEventListener('message', (e) => {
6
+ const { type, src } = e.data || e;
7
+ switch (type) {
8
+ case 'parse': {
9
+ if (!abortMap.has(src)) {
10
+ const controller = new AbortController();
11
+ const signal = { signal: controller.signal };
12
+ abortMap.set(src, controller);
13
+ (0, parse_generate_1.parse)(src, signal)
14
+ .then((result) => {
15
+ self.postMessage(Object.assign(result, { src }),
16
+ // @ts-expect-error
17
+ result.frames.map((frame) => frame.buffer));
18
+ })
19
+ .catch((error) => {
20
+ self.postMessage({ src, error, loaded: true });
21
+ })
22
+ .finally(() => {
23
+ abortMap.delete(src);
24
+ });
25
+ }
26
+ break;
27
+ }
28
+ case 'cancel': {
29
+ if (abortMap.has(src)) {
30
+ const controller = abortMap.get(src);
31
+ controller.abort();
32
+ abortMap.delete(src);
33
+ }
34
+ break;
35
+ }
36
+ default:
37
+ break;
38
+ }
39
+ });
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import type { RemotionGifProps } from './props';
3
+ /**
4
+ * @description Displays a GIF that synchronizes with Remotions useCurrentFrame().
5
+ * @see [Documentation](https://www.remotion.dev/docs/gif/gif)
6
+ */
7
+ export declare const Gif: (props: RemotionGifProps) => JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { RemotionGifProps } from './props';
3
+ export declare const GifForDevelopment: import("react").ForwardRefExoticComponent<RemotionGifProps & import("react").RefAttributes<HTMLCanvasElement>>;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { RemotionGifProps } from './props';
3
+ export declare const GifForRendering: import("react").ForwardRefExoticComponent<RemotionGifProps & import("react").RefAttributes<HTMLCanvasElement>>;
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import type { GifFillMode } from './props';
3
+ declare type Props = {
4
+ index: number;
5
+ frames: ImageData[];
6
+ width?: number;
7
+ height?: number;
8
+ fit: GifFillMode;
9
+ className?: string;
10
+ style?: React.CSSProperties;
11
+ };
12
+ export declare const Canvas: import("react").ForwardRefExoticComponent<Props & import("react").RefAttributes<unknown>>;
13
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @description Gets the duration in seconds of a GIF
3
+ * @see [Documentation](https://www.remotion.dev/docs/gif/get-gif-duration-in-seconds)
4
+ */
5
+ export declare const getGifDurationInSeconds: (src: string) => Promise<number>;
@@ -0,0 +1,4 @@
1
+ import { QuickLRU } from './lru/index';
2
+ import type { GifState } from './props';
3
+ export declare const volatileGifCache: QuickLRU<string, GifState>;
4
+ export declare const manuallyManagedGifCache: Map<string, GifState>;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Deinterlace function from https://github.com/shachaf/jsgif
3
+ */
4
+ export declare const deinterlace: (pixels: number[], width: number) => any[];
@@ -0,0 +1,4 @@
1
+ import type { Frame, ParsedFrameWithoutPatch, ParsedGif } from './types';
2
+ export declare const parseGIF: (arrayBuffer: ArrayBuffer) => ParsedGif;
3
+ export declare const decompressFrame: (frame: Frame, gct: [number, number, number][]) => ParsedFrameWithoutPatch | undefined;
4
+ export declare const decompressFrames: (parsedGif: ParsedGif) => (ParsedFrameWithoutPatch | undefined)[];
@@ -0,0 +1,5 @@
1
+ /**
2
+ * javascript port of java LZW decompression
3
+ * Original java author url: https://gist.github.com/devunwired/4479231
4
+ */
5
+ export declare const lzw: (minCodeSize: number, data: number[], pixelCount: number) => any[];
@@ -0,0 +1,96 @@
1
+ declare type Dimensions = {
2
+ top: number;
3
+ left: number;
4
+ width: number;
5
+ height: number;
6
+ };
7
+ export declare type Application = {
8
+ application: {
9
+ blockSize: number;
10
+ blocks: number[];
11
+ codes: number[];
12
+ id: string;
13
+ };
14
+ };
15
+ declare type Lct = {
16
+ exists: boolean;
17
+ future: number;
18
+ interlaced: boolean;
19
+ size: number;
20
+ sort: boolean;
21
+ };
22
+ export declare type Frame = {
23
+ gce: {
24
+ byteSize: number;
25
+ codes: number[];
26
+ delay: number;
27
+ terminator: number;
28
+ transparentColorIndex: number;
29
+ extras: {
30
+ userInput: boolean;
31
+ transparentColorGiven: boolean;
32
+ future: number;
33
+ disposal: number;
34
+ };
35
+ };
36
+ image: {
37
+ code: number;
38
+ data: {
39
+ minCodeSize: number;
40
+ blocks: number[];
41
+ };
42
+ descriptor: {
43
+ top: number;
44
+ left: number;
45
+ width: number;
46
+ height: number;
47
+ lct: Lct;
48
+ };
49
+ lct: [number, number, number][] | undefined;
50
+ };
51
+ };
52
+ export declare type ParsedFrame = {
53
+ dims: {
54
+ width: number;
55
+ height: number;
56
+ top: number;
57
+ left: number;
58
+ };
59
+ colorTable: [number, number, number][];
60
+ delay: number;
61
+ disposalType: number;
62
+ patch: Uint8ClampedArray;
63
+ pixels: number[];
64
+ transparentIndex: number;
65
+ };
66
+ export declare type ParsedFrameWithoutPatch = Omit<ParsedFrame, 'patch'>;
67
+ export declare type ParsedGif = {
68
+ frames: (Application | Frame)[];
69
+ gct: [number, number, number][];
70
+ header: {
71
+ signature: string;
72
+ version: string;
73
+ };
74
+ lsd: {
75
+ backgroundColorIndex: number;
76
+ gct: {
77
+ exists: boolean;
78
+ resolution: number;
79
+ size: number;
80
+ sort: boolean;
81
+ };
82
+ height: number;
83
+ width: number;
84
+ pixelAspectRatio: number;
85
+ };
86
+ };
87
+ export declare type Image = {
88
+ pixels: number[];
89
+ dims: Dimensions;
90
+ delay?: number;
91
+ transparentIndex?: number;
92
+ colorTable?: [number, number, number][] | Lct;
93
+ disposalType?: unknown;
94
+ patch?: Uint8ClampedArray;
95
+ };
96
+ export {};
@@ -0,0 +1,4 @@
1
+ export { getGifDurationInSeconds } from './get-gif-duration-in-seconds';
2
+ export { Gif } from './Gif';
3
+ export { preloadGif } from './preload-gif';
4
+ export { GifFillMode, RemotionGifProps } from './props';