@vouchfor/embeds 4.3.2 → 4.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/es/embeds.js CHANGED
@@ -196,7 +196,7 @@ class FetcherController {
196
196
  }
197
197
  }
198
198
  const name = "@vouchfor/embeds";
199
- const version = "4.3.2";
199
+ const version = "4.3.3";
200
200
  const license = "MIT";
201
201
  const author = "Aaron Williams";
202
202
  const main = "dist/es/embeds.js";
@@ -239,8 +239,8 @@ const scripts = {
239
239
  const dependencies = {
240
240
  "@a11y/focus-trap": "^1.0.5",
241
241
  "@lit/task": "^1.0.0",
242
- "@vouchfor/canvas-video": "^9.3.2",
243
- "@vouchfor/media-player": "^5.3.2",
242
+ "@vouchfor/canvas-video": "^9.3.3",
243
+ "@vouchfor/media-player": "^5.3.3",
244
244
  uuid: "^9.0.1"
245
245
  };
246
246
  const peerDependencies = {
@@ -259,7 +259,7 @@ const devDependencies = {
259
259
  "@types/mocha": "^10.0.6",
260
260
  "@vouchfor/eslint-config": "^1.0.1",
261
261
  "@vouchfor/prettier-config": "^1.0.1",
262
- "@vouchfor/video-utils": "^2.3.2",
262
+ "@vouchfor/video-utils": "^2.3.3",
263
263
  "@web/dev-server-esbuild": "^1.0.2",
264
264
  "@web/test-runner": "^0.18.1",
265
265
  "@web/test-runner-browserstack": "^0.7.1",
@@ -2451,7 +2451,7 @@ vec4 transition(vec2 uv) {
2451
2451
  return mix(a, b, step(0.0+p.y,progress));
2452
2452
  }
2453
2453
  `,author:"Jake Nelson",license:"MIT",createdAt:"Wed, 1 Nov 2017 15:24:36 -0500",updatedAt:"Thu, 2 Nov 2017 18:37:42 -0500"}];const du=Ho(sE);var fu;function oE(r){if(typeof r=="string"){const[e,t]=r.split(":");return Math.min(parseFloat(e),parseFloat(t))}return r}function aE(r){if(typeof r=="string"){const[e,t]=r.split(":"),n=parseFloat(e),i=parseFloat(t);return n/i}return r}function wa({resolution:r,aspectRatio:e}){const t=oE(r),n=aE(e),i=n>=1,s=Math.min(i?t*n:t/n,t),o=Math.max(i?t*n:t/n,t);return{resolution:t,aspectRatio:n,height:i?s:o,width:i?o:s}}function lE({source:r,sx:e,sy:t,sw:n,sh:i,dx:s,dy:o,dw:a,dh:l}){const A=(r==null?void 0:r.naturalWidth)??(r==null?void 0:r.videoWidth)??(r==null?void 0:r.width),c=(r==null?void 0:r.naturalHeight)??(r==null?void 0:r.videoHeight)??(r==null?void 0:r.height);e=e??0,t=t??0,n=n??A,i=i??c,n<0&&(e+=n,n=Math.abs(n)),i<0&&(t+=i,i=Math.abs(i)),a<0&&(s+=a,a=Math.abs(a)),l<0&&(o+=l,l=Math.abs(l));const u=Math.max(e,0),h=Math.min(e+n,A),d=Math.max(t,0),f=Math.min(t+i,c),g=a/n,p=l/i;return[r,u,d,h-u,f-d,e<0?s-e*g:s,t<0?o-t*p:o,(h-u)*g,(f-d)*p]}function AE({context:r,source:e,crop:t,format:n="letterbox",posX:i,posY:s,drawAreaWidth:o,drawAreaHeight:a,sourceWidth:l,sourceHeight:A,cropCanvas:c}){const{x:u,y:h,width:d,height:f}=t??{},g=l*(u??0),p=A*(h??0),I=l*Math.min(1-(u??0),d??1),T=A*Math.min(1-(h??0),f??1);let Q=g,C=p,x=I,S=T,D=I,P=T;if(c.width=I,c.height=T,n==="crop"){const O=o/a,q=I/T,re=q>O?I-T*O:0,ee=q<O?T-I/O:0;c.width=I+re,c.height=T+ee,Q+=re/2,C+=ee/2,x-=re,S-=ee,D+=re,P+=ee}const K=c.getContext("2d");if(K){const O=lE({source:e,sx:Q,sy:C,sw:x,sh:S,dx:0,dy:0,dw:D,dh:P});K.drawImage(...O)}r.drawImage(c,i,s,o,a)}let Ds;const cE=new Uint8Array(16);function uE(){if(!Ds&&(Ds=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ds))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ds(cE)}const xt=[];for(let r=0;r<256;++r)xt.push((r+256).toString(16).slice(1));function hE(r,e=0){return xt[r[e+0]]+xt[r[e+1]]+xt[r[e+2]]+xt[r[e+3]]+"-"+xt[r[e+4]]+xt[r[e+5]]+"-"+xt[r[e+6]]+xt[r[e+7]]+"-"+xt[r[e+8]]+xt[r[e+9]]+"-"+xt[r[e+10]]+xt[r[e+11]]+xt[r[e+12]]+xt[r[e+13]]+xt[r[e+14]]+xt[r[e+15]]}const gu={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function dE(r,e,t){if(gu.randomUUID&&!e&&!r)return gu.randomUUID();r=r||{};const n=r.random||(r.rng||uE)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){t=t||0;for(let i=0;i<16;++i)e[t+i]=n[i];return e}return hE(n)}function fE(r){return typeof r=="number"?{topLeft:r,topRight:r,bottomRight:r,bottomLeft:r}:{topLeft:(r==null?void 0:r.topLeft)??0,topRight:(r==null?void 0:r.topRight)??0,bottomRight:(r==null?void 0:r.bottomRight)??0,bottomLeft:(r==null?void 0:r.bottomLeft)??0}}function gE(r,e){return typeof r=="number"?{top:r*e,right:r*e,bottom:r*e,left:r*e}:typeof r=="string"?{top:r,right:r,bottom:r,left:r}:{top:typeof r.top=="number"?r.top*e:r.top,right:typeof r.right=="number"?r.right*e:r.right,bottom:typeof r.bottom=="number"?r.bottom*e:r.bottom,left:typeof r.left=="number"?r.left*e:r.left}}function pE(r,e){return typeof r=="number"?{top:r*e,right:r*e,bottom:r*e,left:r*e}:typeof r=="string"?{top:r,right:r,bottom:r,left:r}:{top:(typeof r.top=="number"?r.top*e:r.top)??0,right:(typeof r.right=="number"?r.right*e:r.right)??0,bottom:(typeof r.bottom=="number"?r.bottom*e:r.bottom)??0,left:(typeof r.left=="number"?r.left*e:r.left)??0}}function mE(r,e){return typeof r=="number"?{top:r*e,right:r*e,bottom:r*e,left:r*e}:typeof r=="string"?{top:r,right:r,bottom:r,left:r}:{top:(typeof r.top=="number"?r.top*e:r.top)??0,right:(typeof r.right=="number"?r.right*e:r.right)??0,bottom:(typeof r.bottom=="number"?r.bottom*e:r.bottom)??0,left:(typeof r.left=="number"?r.left*e:r.left)??0}}function EE(r){if(r===null||typeof r!="object")return!1;if(Object.getPrototypeOf(r)===null)return!0;let e=r;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(r)===e}function IE(r){return r.replace(/\\/g,"\\\\").replace(/\//g,"\\/").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\f/g,"\\f").replace(/"/g,'\\"')}const CE=Hr(()=>lr.loadYoga());function pu(r,e,{layout:t,scale:n=1}){const{position:i="relative",inset:s,width:o,height:a,minWidth:l,minHeight:A,maxWidth:c,maxHeight:u,flex:h,gap:d,margin:f,padding:g,direction:p="column",align:I="start",alignSelf:T,justify:Q="start"}=t??{},C={static:r.POSITION_TYPE_STATIC,relative:r.POSITION_TYPE_RELATIVE,absolute:r.POSITION_TYPE_ABSOLUTE};if(e.setPositionType(C[i]),s){const{top:P,right:K,bottom:O,left:q}=gE(s,n);typeof P<"u"&&e.setPosition(r.EDGE_TOP,P),typeof K<"u"&&e.setPosition(r.EDGE_RIGHT,K),typeof O<"u"&&e.setPosition(r.EDGE_BOTTOM,O),typeof q<"u"&&e.setPosition(r.EDGE_LEFT,q)}const x={row:r.FLEX_DIRECTION_ROW,column:r.FLEX_DIRECTION_COLUMN,"row-reverse":r.FLEX_DIRECTION_ROW_REVERSE,"column-reverse":r.FLEX_DIRECTION_COLUMN_REVERSE};e.setFlexDirection(x[p]);const S={start:r.ALIGN_FLEX_START,end:r.ALIGN_FLEX_END,center:r.ALIGN_CENTER,stretch:r.ALIGN_STRETCH};e.setAlignItems(S[I]),T&&e.setAlignSelf(S[T]);const D={start:r.JUSTIFY_FLEX_START,end:r.JUSTIFY_FLEX_END,center:r.JUSTIFY_CENTER,"space-between":r.JUSTIFY_SPACE_BETWEEN,"space-around":r.JUSTIFY_SPACE_AROUND,"space-evenly":r.JUSTIFY_SPACE_EVENLY};if(e.setJustifyContent(D[Q]),f){const{top:P,right:K,bottom:O,left:q}=pE(f,n);e.setMargin(r.EDGE_TOP,P),e.setMargin(r.EDGE_RIGHT,K),e.setMargin(r.EDGE_BOTTOM,O),e.setMargin(r.EDGE_LEFT,q)}if(g){const{top:P,right:K,bottom:O,left:q}=mE(g,n);e.setPadding(r.EDGE_TOP,P),e.setPadding(r.EDGE_RIGHT,K),e.setPadding(r.EDGE_BOTTOM,O),e.setPadding(r.EDGE_LEFT,q)}typeof h<"u"&&e.setFlex(h),e.setGap(r.GUTTER_ALL,(d??0)*n),typeof o<"u"&&e.setWidth(typeof o=="number"?o*n:o),typeof a<"u"&&(typeof a=="function"?e.setHeight("100%"):e.setHeight(typeof a=="number"?a*n:a)),typeof l<"u"&&e.setMinWidth(typeof l=="number"?l*n:l),typeof A<"u"&&e.setMinHeight(typeof A=="number"?A*n:A),typeof c<"u"&&e.setMaxWidth(typeof c=="number"?c*n:c),typeof u<"u"&&e.setMaxHeight(typeof u=="number"?u*n:u)}async function mu({id:r,yoga:e,index:t,parent:n,element:i,resolvers:s}){var o,a,l;const{layout:A={},config:c={},options:u={},renderer:h}=i,d=e.Node.create();pu(e,d,{layout:A}),n.insertChild(d,t);let f=null;s&&((h==null?void 0:h.type)==="text"||(h==null?void 0:h.type)==="caption"||(h==null?void 0:h.type)==="image"||(h==null?void 0:h.type)==="video")&&((h==null?void 0:h.type)==="caption"?f=await((o=s.text)==null?void 0:o.call(s,{id:r,config:c,options:u}))??null:f=await((a=s[h.type])==null?void 0:a.call(s,{id:r,config:c,options:u}))??null);const g=[];for await(const[p,I]of((l=i.children)==null?void 0:l.entries())??[])g.push(await mu({id:r,yoga:e,index:p,parent:d,element:I,resolvers:s}));return{node:d,radius:fE(A.radius),element:i,renderer:h,config:c,options:u,dependencies:f,childNodes:g}}function Eu(r,e,t=0,n=0){const{top:i,left:s}=r.getComputedLayout(),{top:o,left:a,width:l,height:A}=e.node.getComputedLayout(),c=t+a,u=n+o,h=e.childNodes.map(d=>Eu(r,d,c,u));return{...e,x:s+c,y:i+u,width:l,height:A,childNodes:h}}async function Iu(r,e,t){for await(const{node:n,options:i,dependencies:s,renderer:o,childNodes:a}of e){if(o){const{width:l,height:A}=o;if(l&&t){r.calculateLayout();const c=await l({node:n,options:i,dependencies:s,measureCanvas:t});n.setWidth(c)}if(A&&t){r.calculateLayout();const c=await A({node:n,options:i,dependencies:s,measureCanvas:t});n.setHeight(c)}}r.calculateLayout(),await Iu(r,a,t)}}async function Cu({id:r,root:e,resolvers:t,measureCanvas:n}){const i=await CE(),s=i.Node.create();pu(i,s,{layout:e.layout});const o=await mu({id:r,yoga:i,index:0,parent:s,element:e.element,resolvers:t});await Iu(s,[o],n);const{top:a,left:l,width:A,height:c}=s.getComputedLayout(),u={root:{x:l,y:a,width:A,height:c},node:Eu(s,o)};return s.freeRecursive(),u}const vE={type:"audio",options:{speed:{type:"slider",name:"speed",label:"Speed",min:.5,max:2,step:.01},volume:{type:"slider",name:"volume",label:"Volume",min:0,max:2,step:.01}},transform:{values:r=>({speed:[r.speed??1],volume:[r.volume??1]}),options:r=>({speed:r.speed[0],volume:r.volume[0]/2})}},Rr=1.8;function yE({context:r,x:e,y:t,width:n,height:i,radii:s}){let o,a,l,A;typeof s=="number"?o=a=l=A=s:[o,a,l,A]=s,r.beginPath(),r.moveTo(e+Math.min(i/Rr,o),t),r.lineTo(e+n-Math.min(i/Rr,a),t),r.quadraticCurveTo(e+n,t,e+n,t+Math.min(i/Rr,a)),r.lineTo(e+n,t+i-Math.min(i/Rr,l)),r.quadraticCurveTo(e+n,t+i,e+n-Math.min(i/Rr,l),t+i),r.lineTo(e+Math.min(i/Rr,A),t+i),r.quadraticCurveTo(e,t+i,e,t+i-Math.min(i/Rr,A)),r.lineTo(e,t+Math.min(i/Rr,o)),r.quadraticCurveTo(e,t,e+Math.min(i/Rr,o),t),r.closePath()}function _s({context:r,x:e,y:t,width:n,height:i,radii:s,clip:o=!1,debug:a=!1}){yE({context:r,x:e,y:t,width:n,height:i,radii:s}),a&&(r.strokeStyle="blue",r.stroke()),o&&r.clip()}const An=/(?<value>\d+\.?\d*)(?=px)/;function BE(r,{gap:e=.5,threshold:t=.3,minShowTime:n=.5}={}){if(r.length===0)return[];const s=[...r].sort((o,a)=>typeof o.start=="number"&&typeof a.start=="number"?o.start-a.start:0).reduce((o,a,l)=>{if(l===0)return o.push({start:a.start,end:a.end,groups:[[a]]}),o;const A=o[o.length-1],c=A.groups[A.groups.length-1],u=c[c.length-1];if(typeof a.start=="number"&&typeof u.end=="number"&&a.start-u.end>e)return o.push({start:a.start,end:a.end,groups:[[a]]}),o;const h=c[0];return typeof a.end=="number"&&typeof h.start=="number"&&a.end-h.start<t?c.push(a):A.groups.push([a]),typeof a.end=="number"&&typeof A.end=="number"&&(A.end=Math.max(A.end,a.end)),o},[]);return s.map((o,a)=>{const l=s[a+1],A=o.groups.map((h,d)=>{const f=o.groups[d+1];return h.map((g,p)=>{var I;if(typeof g.start!="number"||typeof g.end!="number")return g;const T=h[p+1],Q=g.end-g.start;let C=g.end;const x=g.start+n;if(T?typeof T.start=="number"&&(C=Math.min(x,T.start)):f&&f[0]&&typeof f[0].start=="number"?C=Math.min(x,f[0].start):l&&typeof l.start=="number"&&(C=Math.min(x,l.start)),C>x||Q>=n)return{...g,end:C};{const S=(T==null?void 0:T.start)??((I=f==null?void 0:f[0])==null?void 0:I.start)??(l==null?void 0:l.start)??1/0;return typeof S=="number"&&x<S?{...g,end:x}:typeof S=="number"?{...g,end:S}:{...g,end:C}}})}),c=A[A.length-1],u=c[c.length-1];return{...o,groups:A,end:typeof u.end=="number"?u.end:o.end}})}const Sa={WORD_GAP:.5,WORD_THRESHOLD:5,MIN_SHOW_TIME:.5};function ur({words:r,options:e,sceneTime:t}){if(!r.length)return null;let n=[...r];e!=null&&e.uppercase&&(n=r.map(a=>({...a,text:a.text.toUpperCase()})));const i=BE(n,{gap:(e==null?void 0:e.gap)??Sa.WORD_GAP,threshold:(e==null?void 0:e.threshold)??Sa.WORD_THRESHOLD,minShowTime:(e==null?void 0:e.minShowTime)??Sa.MIN_SHOW_TIME});if(typeof t!="number")return{wordGroups:i};const s=i.find(({start:a,end:l})=>a<=t&&l>t);if(!s)return{wordGroups:i};const o=s.groups.find(a=>a[0].start<=t&&a[a.length-1].end>t);return{wordGroups:i,activeGroup:s,activeSubGroup:o}}function Ra({words:r,spaceMetrics:e,strokeWidth:t=0}){return r.reduce((n,i,s)=>{const o=i.metrics.width+t,a=s<r.length-1?e.width:0;return n+o+a},0)}const hr=ds(({context:r,font:e,fontSizes:t,words:n,maxW:i=1/0,strokeWidth:s=0,letterSpacing:o=0})=>{try{r.save(),r.letterSpacing=`${o}px`,r.font=e.replace(An,t[0].toString());const a=r.measureText("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");if(n.length<=0)return[];const l=r.measureText(n[0].text);return n.slice(1).reduce((A,c)=>{const u=A[A.length-1],h=r.measureText(c.text),d={...c,metrics:h},f=[...u.words,d],g=Ra({strokeWidth:s,words:f,spaceMetrics:u.spaceMetrics});if(g>i){const p=t[A.length%t.length];r.font=e.replace(An,p.toString());const I=r.measureText(" "),T=r.measureText(c.text),Q=[{...c,metrics:T}],C=r.measureText("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");A=[...A,{allMetrics:C,spaceMetrics:I,lineWidth:Ra({strokeWidth:s,spaceMetrics:I,words:Q}),font:r.font,words:Q,lineHeight:C.actualBoundingBoxAscent+C.actualBoundingBoxDescent+s}]}else A[A.length-1]={...u,lineWidth:g,words:f};return A},[{allMetrics:a,lineWidth:Ra({strokeWidth:s,words:[{...n[0],metrics:l}],spaceMetrics:r.measureText(" ")}),lineHeight:a.actualBoundingBoxAscent+a.actualBoundingBoxDescent+s,font:r.font,words:[{...n[0],metrics:l}],spaceMetrics:r.measureText(" ")}])}finally{r.restore()}},{cacheKey:([{font:r,fontSizes:e,words:t,maxW:n,strokeWidth:i,letterSpacing:s}])=>`${r}_${JSON.stringify(e)}_${JSON.stringify(t)}_${n}_${i}_${s}`});function Dn({lines:r,spacingFactor:e=.1}){var t;const n=e*(((t=r[0])==null?void 0:t.lineHeight)??0);return r.reduce((i,{lineHeight:s})=>i+s,0)+n*(r.length-1)}function Bi({dx:r,dy:e,dw:t,lines:n,align:i="left",strokeWidth:s=0,spacingFactor:o=.15}){const a=[];for(let l=0;l<n.length;l++){const{words:A,font:c,lineHeight:u,lineWidth:h,allMetrics:d,spaceMetrics:f}=n[l],g=n.slice(0,l).reduce((Q,{lineHeight:C})=>Q+C,0),p=o*n[0].lineHeight;let I=0;switch(i){case"center":I=(t-h)/2;break;case"right":I=t-h;break;default:I=0}let T=r+I+s/2;for(const[Q,C]of A.entries()){const x=C.metrics.width+s,S=T+(Q>0?f.width:0),D=e+d.actualBoundingBoxAscent+g+p*l+s/2;a.push({word:C,font:c,textPosX:S,textPosY:D,lineIndex:l,lineHeight:u,wordWidth:x}),T=S+x}}return a}function Ti({context:r,wordPos:e,color:t,shadow:n,stroke:i,letterSpacing:s,alpha:o=r.globalAlpha}){r.save(),r.globalAlpha=o,r.font=e.font,r.letterSpacing=`${s}px`,r.shadowColor=(n==null?void 0:n.color)??"transparent",r.shadowOffsetX=(n==null?void 0:n.x)??0,r.shadowOffsetY=(n==null?void 0:n.y)??0,r.shadowBlur=(n==null?void 0:n.blur)??0,i&&(r.strokeStyle=(i==null?void 0:i.color)??"black",r.strokeText(e.word.text,e.textPosX,e.textPosY),r.shadowColor="transparent",r.shadowOffsetX=0,r.shadowOffsetY=0,r.shadowBlur=0),r.fillStyle=t??"black",r.fillText(e.word.text,e.textPosX,e.textPosY),r.restore()}function vu(r,e){let t=255,n=255,i=255;try{if(r.startsWith("#"))r.length===4?(t=parseInt(r[1]+r[1],16),n=parseInt(r[2]+r[2],16),i=parseInt(r[3]+r[3],16)):(t=parseInt(r.slice(1,3),16),n=parseInt(r.slice(3,5),16),i=parseInt(r.slice(5,7),16));else if(r.startsWith("rgb")){const l=r.match(/(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);l&&(t=parseInt(l[1],10),n=parseInt(l[2],10),i=parseInt(l[3],10))}}catch(l){console.warn("Failed to parse color",r,l)}t=Math.max(0,Math.min(255,t+e)),n=Math.max(0,Math.min(255,n+e)),i=Math.max(0,Math.min(255,i+e));const s=Math.round(t).toString(16).padStart(2,"0"),o=Math.round(n).toString(16).padStart(2,"0"),a=Math.round(i).toString(16).padStart(2,"0");return`#${s}${o}${a}`}const yu=.45,TE=.15,bE=.1;function QE({node:r}){return r.getComputedWidth()}function xE({node:r,context:e,options:t,dependencies:n}){var i;const s=t.words??[];if(!s.length)return 0;const o=r.getComputedWidth(),a=((i=t==null?void 0:t.stroke)==null?void 0:i.width)||0;let l=0;const{wordGroups:A}=ur({words:s})||{wordGroups:[]};for(const c of A)for(const u of c.groups){const h=hr({context:e,font:e.font,strokeWidth:a,words:u,maxW:o,fontSizes:[n.font.size],letterSpacing:t.spacing}),d=Dn({lines:h,spacingFactor:yu});l=Math.max(l,d)}return l}function wE({context:r,dx:e,dy:t,dw:n,sceneTime:i,options:s,dependencies:o}){var a;const l=s.words??[],{activeSubGroup:A}=ur({words:l,sceneTime:i})||{activeSubGroup:void 0};if(!A)return;const c=((a=s==null?void 0:s.stroke)==null?void 0:a.width)||0,u=hr({context:r,font:r.font,strokeWidth:c,maxW:n,fontSizes:[o.font.size],words:A,letterSpacing:s.spacing}),h=Bi({dx:e,dy:t,dw:n,lines:u,strokeWidth:c,align:s.align,spacingFactor:yu}),d=Math.max(...h.map(g=>g.word.metrics.actualBoundingBoxAscent));let f=-1;for(const g of h){const p=TE*g.lineHeight;if(g.lineIndex!==f){const I=u[g.lineIndex];f=g.lineIndex,r.save(),r.globalAlpha=.8*r.globalAlpha,r.fillStyle=s.highlightColor??"#000000",r.beginPath(),_s({context:r,x:g.textPosX-c/2-p,y:g.textPosY-d-c/2-p,width:I.lineWidth+p*2,height:g.lineHeight+p*2,radii:bE*g.lineHeight}),r.fill(),r.closePath(),r.restore()}}for(const g of h)Ti({context:r,wordPos:g,color:s.color??"#FFFFFF",shadow:s.shadow,stroke:s.stroke,letterSpacing:s.spacing})}const bi={linear:L0,easeIn:ta,easeInOut:k0,easeOut:F0,circIn:hc,circInOut:M0,circOut:dc,backIn:ra,backInOut:P0,backOut:N0,anticipate:O0,bounceIn:$0,bounceInOut:Y0,bounceOut:Es},Da=ds((r,e,{clamp:t=!0,ease:n="easeIn",...i}={})=>x0(r,e,{...i,clamp:t,ease:bi[n]}),{cacheKey:([r,e,t])=>JSON.stringify({from:r,to:e,options:t})}),SE=.4,RE=1,DE=.05,_E=.3,_a=.3,LE=.7,FE=.4,kE=2.5,Bu=.15,Ls=.08;function ME({node:r}){return r.getComputedWidth()}function NE({node:r,context:e,options:t,dependencies:n}){var i;const s=t.words??[];if(!s.length)return 0;const o=r.getComputedWidth();let a=0;const{wordGroups:l}=ur({words:s})||{wordGroups:[]};for(const A of l)for(const c of A.groups){const u=hr({context:e,font:e.font,words:c,maxW:o,fontSizes:[n.font.size],letterSpacing:t.spacing,strokeWidth:(i=t.stroke)==null?void 0:i.width}),h=Dn({lines:u});a=Math.max(a,h)}return a}function PE({context:r,dx:e,dy:t,dw:n,sceneTime:i,options:s,dependencies:o}){var a,l,A;const c=s.words??[],{activeSubGroup:u}=ur({words:c,sceneTime:i})||{activeSubGroup:void 0};if(!u)return;const h=r.measureText("M"),d=h.fontBoundingBoxAscent+h.fontBoundingBoxDescent,f=((a=s==null?void 0:s.stroke)==null?void 0:a.width)||0,g=s.highlightColor||"#FF5722",p=((l=s.ball)==null?void 0:l.size)??SE,I=((A=s.ball)==null?void 0:A.bounceHeight)??RE,T=d*p,Q=[...u].reverse().find(se=>i>=se.start);if(!Q)return;const C=[...u].sort((se,fe)=>se.start-fe.start),x=C.findIndex(se=>se.start===Q.start),S=x+1,D=u[x],P=x>0?u[x-1]:null,K=S<C.length?C[S]:null,O=hr({context:r,font:r.font,maxW:n,strokeWidth:f,fontSizes:[o.font.size],words:u,letterSpacing:s.spacing}),q=Bi({dx:e,dy:t,dw:n,lines:O,strokeWidth:f,align:s.align});for(const se of q){const{word:fe}=se,ge=fe.start===D.start;Ti({context:r,wordPos:se,color:ge?s.highlightColor:s.color,shadow:s.shadow,stroke:s.stroke,letterSpacing:s.spacing})}const re=q.find(se=>se.word.start===D.start);if(!re)return;const ee=P?q.find(se=>se.word.start===P.start):null,ce=se=>se.textPosY-T-d*LE,_=ce(re),U=K?q.find(se=>se.word.start===K.start):null,z=(se,fe,ge)=>{const Ie=se.end-se.start;let Te=kE;Ie>.3&&(Te=Math.min(2.5,Math.max(.8,1.5)));const De=se.start*Te,de=(ge*Te+De)%1,Qe=Math.pow(Math.abs(Math.sin(de*Math.PI)),.6),Fe=-d*FE*Qe;return{x:fe.textPosX+fe.wordWidth/2,y:ce(fe)+Fe,phase:de,offset:Fe,distanceFromNeutral:Math.abs(Qe),frequency:Te,timeToNeutral:(1-(de<.5?de:1-de))/Te}},L=K?K.start-Bu:1/0,R=K&&i>L&&i<K.start,F=re.textPosX+re.wordWidth/2;let J=F,$=_;if(R&&U){const se=U.textPosX+U.wordWidth/2,fe=(i-L)/Bu;if(fe<.3){const ge=z(D,re,i),Ie=fe/.3;J=F,$=ge.y*(1-Ie)+_*Ie}else{const ge=(fe-.3)/.7,Ie=bi.easeOut(Math.min(1,Math.max(0,ge)));J=F+(se-F)*Ie;const Te=Math.abs(se-F),De=Math.min(1,Te/(d*10)),Qe=d*I*(.5+De*.7),Fe=.35,_e=ge-Fe,Ue=-Qe*(1-_e*_e/((1-Fe)*(1-Fe))),ve=ce(U);if($=_+(ve-_)*Ie+Ue,ge>.9){const Ve=(ge-.9)/.1;$=$*(1-Ve)+ve*Ve}}}else if(D&&re){const se=i-D.start,fe=P?i-P.end:1/0;if(se>=0&&se<Ls){const Ie=z(D,re,i),Te=bi.easeIn(se/Ls),De=ce(re),de=Ie.y-De;J=F,$=De+de*Te}else if(se>=Ls&&se<Ls+.3){const Ie=z(D,re,i);J=Ie.x,$=Ie.y}else if(P&&ee&&fe<_a){const Ie=P.end<=D.start&&D.start-P.end<.1;if(!(fe>=0&&fe<_a&&(i<D.start||Ie&&se<_a*.5))){const De=z(D,re,i);J=De.x,$=De.y}}else{const Ie=z(D,re,i);J=Ie.x,$=Ie.y}}r.save(),r.beginPath();const ie=r.createRadialGradient(J-T/2*.3,$-T/2*.3,0,J,$,T);ie.addColorStop(0,vu(g,30)),ie.addColorStop(.8,g),ie.addColorStop(1,vu(g,-20)),r.fillStyle=ie,r.shadowColor=`rgba(0, 0, 0, ${_E})`,r.shadowBlur=5,r.shadowOffsetX=0,r.shadowOffsetY=d*DE,r.arc(J,$,T/2,0,Math.PI*2),r.fill(),r.strokeStyle="rgba(0, 0, 0, 0.6)",r.lineWidth=Math.max(1,d*.03),r.stroke(),r.shadowColor="transparent",r.beginPath(),r.fillStyle="rgba(255, 255, 255, 0.3)",r.arc(J-T/2*.2,$-T/2*.2,T/2*.4,0,Math.PI*2),r.fill(),r.restore()}const Tu=.15,OE=5,UE=.15,bu=.3;function GE({node:r}){return r.getComputedWidth()}function HE({context:r,node:e,options:t,dependencies:n}){var i;const s=t.words??[];if(!s.length)return 0;const o=e.getComputedWidth();let a=0;const{wordGroups:l}=ur({words:s})||{wordGroups:[]};for(const A of l)for(const c of A.groups){const u=hr({context:r,font:r.font,words:c,maxW:o,fontSizes:[n.font.size],letterSpacing:t.spacing,strokeWidth:(i=t.stroke)==null?void 0:i.width}),h=Dn({lines:u,spacingFactor:bu});a=Math.max(a,h)}return a}function $E({context:r,dx:e,dy:t,dw:n,sceneTime:i,options:s,dependencies:o}){var a;const l=s.words??[],{activeSubGroup:A}=ur({words:l,sceneTime:i})||{activeSubGroup:void 0};if(!A)return;const c=[...A].reverse().find(S=>i>=S.start);if(!c)return;const u=[...A].sort((S,D)=>S.start-D.start),d=u.findIndex(S=>S.start===c.start)+1,f=d<u.length?u[d]:null,g=((a=s==null?void 0:s.stroke)==null?void 0:a.width)??0,p=hr({context:r,font:r.font,strokeWidth:g,maxW:n,fontSizes:[o.font.size],words:A,letterSpacing:s.spacing}),I=Bi({dx:e,dy:t,dw:n,lines:p,strokeWidth:g,align:s.align,spacingFactor:bu});let T=null,Q=null;const C=Math.max(...I.map(S=>S.word.metrics.actualBoundingBoxAscent));for(const S of I){const D=S.lineHeight*UE;c.start===S.word.start&&(T={boxPosX:S.textPosX-D-g/2,boxPosY:S.textPosY-C-g/2-D,boxWidth:S.wordWidth+D*2,boxHeight:S.lineHeight+D*2}),f&&f.start===S.word.start&&(Q={boxPosX:S.textPosX-D-g/2,boxPosY:S.textPosY-C-g/2-D,boxWidth:S.wordWidth+D*2,boxHeight:S.lineHeight+D*2})}let x=T;if(T){const S=f?f.start-i:1/0;if(Q&&S<Tu&&S>0){const D=1-S/Tu,P=bi.easeInOut(D);x={boxPosX:T.boxPosX+(Q.boxPosX-T.boxPosX)*P,boxPosY:T.boxPosY+(Q.boxPosY-T.boxPosY)*P,boxWidth:T.boxWidth+(Q.boxWidth-T.boxWidth)*P,boxHeight:T.boxHeight+(Q.boxHeight-T.boxHeight)*P}}}x&&(r.fillStyle=s.highlightColor??"red",_s({context:r,x:x.boxPosX,y:x.boxPosY,width:x.boxWidth,height:x.boxHeight,radii:OE}),r.fill());for(const S of I)Ti({context:r,wordPos:S,color:s.color??"#FFFFFF",shadow:s.shadow,stroke:s.stroke,letterSpacing:s.spacing})}const YE=1/8,VE=.8,KE=1,WE="backOut";function JE({node:r}){return r.getComputedWidth()}function qE({node:r,context:e,options:t,dependencies:n}){var i;const s=t.words??[];if(!s.length)return 0;const o=r.getComputedWidth();let a=0;const{wordGroups:l}=ur({words:s,options:{gap:.5,threshold:.3,minShowTime:.5}})||{wordGroups:[]};for(const A of l)for(const c of A.groups){const u=hr({context:e,font:e.font,fontSizes:[n.font.size],words:c,maxW:o,letterSpacing:t.spacing,strokeWidth:(i=t.stroke)==null?void 0:i.width}),h=Dn({lines:u});a=Math.max(a,h)}return a}function XE({context:r,dx:e,dy:t,dw:n,sceneTime:i,options:s,dependencies:o}){var a,l,A,c,u;const h=s.words??[],{activeGroup:d,activeSubGroup:f}=ur({words:h,sceneTime:i,options:{gap:.5,threshold:.3,minShowTime:.5}})||{activeGroup:void 0,activeSubGroup:void 0};if(!d||!f)return;const g=((a=s==null?void 0:s.stroke)==null?void 0:a.width)||0,p=hr({context:r,font:r.font,strokeWidth:g,maxW:n,words:f,fontSizes:[o.font.size],letterSpacing:s.spacing}),I=Da([d.start,d.start+(((l=s==null?void 0:s.animation)==null?void 0:l.duration)??YE)],[((A=s==null?void 0:s.animation)==null?void 0:A.min)??VE,((c=s==null?void 0:s.animation)==null?void 0:c.max)??KE],{ease:((u=s==null?void 0:s.animation)==null?void 0:u.easing)??WE}),T=Bi({dx:e,dy:t,dw:n,lines:p,strokeWidth:g,align:s.align}),Q=Dn({lines:p}),{leftmostX:C,rightmostX:x}=T.reduce((K,O)=>{const q=O.word.metrics.width;return{leftmostX:Math.min(K.leftmostX,O.textPosX),rightmostX:Math.max(K.rightmostX,O.textPosX+q)}},{leftmostX:1/0,rightmostX:-1/0}),S=(C+x)/2,D=t+Q/2,P=I(i);r.translate(S,D),r.scale(P,P),r.translate(-S,-D);for(const K of T)Ti({context:r,wordPos:K,color:s.color??"#FFFFFF",shadow:s.shadow,stroke:s.stroke,letterSpacing:s.spacing});r.setTransform(1,0,0,1,0,0)}const jE=.8,zE=1,ZE=1.2,eI=5;function tI({node:r}){return r.getComputedWidth()}function Qu(r){return[r*zE,r*jE,r*ZE]}function rI({node:r,context:e,options:t,dependencies:n}){var i;const s=t.words??[];if(!s.length)return 0;const o=r.getComputedWidth();let a=0;const{wordGroups:l}=ur({words:s,options:{uppercase:!0}})||{wordGroups:[]},A=Qu(n.font.size);for(const c of l)for(const u of c.groups){const h=hr({context:e,font:e.font,fontSizes:A,words:u,maxW:o,letterSpacing:t.spacing,strokeWidth:(i=t.stroke)==null?void 0:i.width}),d=Dn({lines:h,spacingFactor:0});a=Math.max(a,d)}return a}function nI({context:r,dx:e,dy:t,dw:n,sceneTime:i,options:s,dependencies:o}){var a;const l=s.words??[],{activeSubGroup:A}=ur({words:l,sceneTime:i,options:{uppercase:!0}})||{activeSubGroup:void 0};if(!A)return;const c=Qu(o.font.size),u=((a=s==null?void 0:s.stroke)==null?void 0:a.width)||0;r.save();const h=hr({context:r,font:r.font,fontSizes:c,maxW:n,strokeWidth:u,words:A,letterSpacing:s.spacing}),d=Bi({dx:e,dy:t,dw:n,lines:h,strokeWidth:u,align:s.align||"left",spacingFactor:0});for(const f of d){const{word:g}=f;g.start!==void 0&&g.start<=i&&Ti({context:r,wordPos:f,alpha:Math.min(1,(i-g.start)*eI),color:s.color??"#FFFFFF",shadow:s.shadow,stroke:s.stroke,letterSpacing:s.spacing})}r.restore()}const xu=[{family:"Noto Arabic",regex:new RegExp("\\p{Script=Arabic}","u"),url:"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansArabic-VariableFont_wdth%2Cwght.woff2",style:"normal"},{family:"Noto Chinese",regex:new RegExp("\\p{Script=Han}","u"),url:"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansSC-VariableFont_wght.woff2",style:"normal"},{family:"Noto Hebrew",regex:new RegExp("\\p{Script=Hebrew}","u"),url:"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansHebrew-VariableFont_wdth%2Cwght.woff2",style:"normal"},{family:"Noto Hindi",regex:new RegExp("\\p{Script=Devanagari}","u"),url:"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansDevanagari-VariableFont_wdth%2Cwght.woff2",style:"normal"},{family:"Noto Japanese",regex:new RegExp("\\p{Script=Han}|\\p{Script=Katakana}|\\p{Script=Hiragana}","u"),url:"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansJP-VariableFont_wght.woff2",style:"normal"},{family:"Noto Korean",regex:new RegExp("\\p{Script=Hangul}","u"),url:"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansKR-VariableFont_wght.woff2",style:"normal"},{family:"Noto Color Emoji",regex:new RegExp("\\p{Extended_Pictographic}","u"),url:"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoColorEmoji-Regular.woff2",style:"normal"}];function cn({text:r,font:e}){let t=e;return xu.forEach(({family:n,regex:i})=>{i.exec(r)&&(t+=`, ${n}`)}),t}const iI="caption",wu=Object.keys(bi).map(r=>({label:r.charAt(0).toUpperCase()+r.slice(1),value:r,data:r})),sI={type:iI,options:{style:{type:"radio",name:"style",label:"Caption style",items:[{label:"Basic",value:"basic"},{label:"Stacked",value:"stacked"},{label:"Highlight",value:"highlight"},{label:"Pop",value:"pop"},{label:"Bounce",value:"bounce"}]},font:{type:"font",name:"font",label:"Font"},align:{type:"radio",name:"align",label:"Text alignment",items:[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}]},spacing:{type:"slider",name:"spacing",label:"Letter Spacing",min:-5,max:10,step:.5},color:{type:"color",name:"color",label:"Text color"},highlightColor:{type:"color",name:"highlightColor",label:"Highlight Color",visible:r=>["basic","highlight","bounce"].includes(r.style)},"shadow.color":{type:"color",name:"color",label:"Shadow Color"},"shadow.x":{type:"slider",name:"x",label:"Shadow X Offset",min:-20,max:20,step:.5},"shadow.y":{type:"slider",name:"y",label:"Shadow Y Offset",min:-20,max:20,step:.5},"shadow.blur":{type:"slider",name:"blur",label:"Shadow Blur",min:0,max:20,step:.5},"stroke.color":{type:"color",name:"color",label:"Stroke Color"},"stroke.width":{type:"slider",name:"width",label:"Stroke Width",min:0,max:20,step:.5},"stroke.miter":{type:"slider",name:"miter",label:"Stroke Miter",min:0,max:10,step:.5},"ball.size":{type:"slider",name:"ball.size",label:"Ball Size",min:0,max:1,step:.05,visible:r=>r.style==="bounce"},"ball.bounceHeight":{type:"slider",name:"ball.bounceHeight",label:"Bounce Height",min:.5,max:2,step:.1,visible:r=>r.style==="bounce"},"animation.duration":{type:"slider",name:"duration",label:"Animation Duration",min:.05,max:2,step:.05,visible:r=>r.style==="pop"},"animation.min":{type:"slider",name:"min",label:"Animation Start Scale",min:.1,max:1,step:.05,visible:r=>r.style==="pop"},"animation.max":{type:"slider",name:"max",label:"Animation End Scale",min:1,max:2,step:.05,visible:r=>r.style==="pop"},"animation.easing":{type:"select",name:"easing",label:"Animation Easing",options:wu,visible:r=>r.style==="pop"}},transform:{values:r=>{var e,t,n,i,s,o,a,l,A,c,u,h;return{words:r.words??[],style:r.style??"basic",font:r.font,align:r.align??"center",spacing:[r.spacing??0],color:r.color??"#FFFFFF",highlightColor:r.highlightColor??"#FF0000",shadow:{color:((e=r.shadow)==null?void 0:e.color)??"rgba(0,0,0,0.5)",x:[((t=r.shadow)==null?void 0:t.x)??0],y:[((n=r.shadow)==null?void 0:n.y)??0],blur:[((i=r.shadow)==null?void 0:i.blur)??0]},stroke:{color:((s=r.stroke)==null?void 0:s.color)??"black",width:[((o=r.stroke)==null?void 0:o.width)??10],miter:[((a=r.stroke)==null?void 0:a.miter)??8]},ball:{size:[((l=r.ball)==null?void 0:l.size)??.5],bounceHeight:[((A=r.ball)==null?void 0:A.bounceHeight)??1]},animation:{duration:[((c=r.animation)==null?void 0:c.duration)??.125],min:[((u=r.animation)==null?void 0:u.min)??.8],max:[((h=r.animation)==null?void 0:h.max)??1],easing:wu.find(d=>{var f;return d.value===((f=r.animation)==null?void 0:f.easing)})}}},options:r=>{var e,t,n,i,s,o,a,l,A,c,u,h,d,f,g,p,I,T,Q,C,x,S,D,P,K;return{words:r.words,style:r.style,font:r.font,align:r.align,spacing:(e=r.spacing)==null?void 0:e[0],color:r.color,highlightColor:r.highlightColor,shadow:{color:(t=r.shadow)==null?void 0:t.color,x:(i=(n=r.shadow)==null?void 0:n.x)==null?void 0:i[0],y:(o=(s=r.shadow)==null?void 0:s.y)==null?void 0:o[0],blur:(l=(a=r.shadow)==null?void 0:a.blur)==null?void 0:l[0]},stroke:{color:(A=r.stroke)==null?void 0:A.color,width:(u=(c=r.stroke)==null?void 0:c.width)==null?void 0:u[0],miter:(d=(h=r.stroke)==null?void 0:h.miter)==null?void 0:d[0]},ball:{size:(g=(f=r.ball)==null?void 0:f.size)==null?void 0:g[0],bounceHeight:(I=(p=r.ball)==null?void 0:p.bounceHeight)==null?void 0:I[0]},animation:{duration:(Q=(T=r.animation)==null?void 0:T.duration)==null?void 0:Q[0],min:(x=(C=r.animation)==null?void 0:C.min)==null?void 0:x[0],max:(D=(S=r.animation)==null?void 0:S.max)==null?void 0:D[0],easing:(K=(P=r.animation)==null?void 0:P.easing)==null?void 0:K.value}}}},width:r=>{var e,t,n,i;const{options:s,measureCanvas:o,dependencies:a}=r,l=s.style??"basic",A=o==null?void 0:o.getContext("2d");if(!A||!((e=s==null?void 0:s.words)!=null&&e.length)||!a)return 0;try{A.save();const c=a.font.size,u=`${a.font.weight} ${c}px ${a.font.family.name}`,h=cn({font:u,text:s.words.map(({text:d})=>d).join(" ")});switch(A.font=h,A.textBaseline="alphabetic",A.fillStyle=s.color??"#FFFFFF",s!=null&&s.spacing&&(A.letterSpacing=`${s.spacing}px`),s!=null&&s.stroke&&(A.miterLimit=((t=s==null?void 0:s.stroke)==null?void 0:t.miter)??0,A.lineWidth=((n=s==null?void 0:s.stroke)==null?void 0:n.width)??0,A.strokeStyle=((i=s==null?void 0:s.stroke)==null?void 0:i.color)??"black"),l){case"stacked":return tI({...r,context:A,dependencies:a});case"highlight":return GE({...r,context:A,dependencies:a});case"pop":return JE({...r,context:A,dependencies:a});case"bounce":return ME({...r,context:A,dependencies:a});case"basic":default:return QE({...r,context:A,dependencies:a})}}finally{A.restore()}},height:r=>{var e,t,n,i;const{options:s,measureCanvas:o,dependencies:a}=r,l=s.style??"basic",A=o==null?void 0:o.getContext("2d");if(!A||!((e=s==null?void 0:s.words)!=null&&e.length)||!a)return 0;try{A.save();const c=a.font.size,u=`${a.font.weight} ${c}px ${a.font.family.name}`,h=cn({font:u,text:s.words.map(({text:d})=>d).join(" ")});switch(A.font=h,A.textBaseline="alphabetic",A.fillStyle=s.color??"#FFFFFF",s!=null&&s.spacing&&(A.letterSpacing=`${s.spacing}px`),s!=null&&s.stroke&&(A.miterLimit=((t=s==null?void 0:s.stroke)==null?void 0:t.miter)??0,A.lineWidth=((n=s==null?void 0:s.stroke)==null?void 0:n.width)??0,A.strokeStyle=((i=s==null?void 0:s.stroke)==null?void 0:i.color)??"black"),l){case"stacked":return rI({...r,context:A,dependencies:a});case"highlight":return HE({...r,context:A,dependencies:a});case"pop":return qE({...r,context:A,dependencies:a});case"bounce":return NE({...r,context:A,dependencies:a});case"basic":default:return xE({...r,context:A,dependencies:a})}}finally{A.restore()}},render:r=>{var e,t,n,i;const{options:s,canvases:o,dependencies:a}=r,l=o.sceneCanvas.getContext("2d");if(!l||!((e=s==null?void 0:s.words)!=null&&e.length)||!a)return;l.save();const A=a.font.size,c=`${a.font.weight} ${A}px ${a.font.family.name}`,u=cn({font:c,text:s.words.map(({text:d})=>d).join(" ")});switch(l.font=u,l.textBaseline="alphabetic",l.fillStyle=s.color??"#FFFFFF",s!=null&&s.spacing&&(l.letterSpacing=`${s.spacing}px`),s!=null&&s.stroke&&(l.miterLimit=((t=s==null?void 0:s.stroke)==null?void 0:t.miter)??0,l.lineWidth=((n=s==null?void 0:s.stroke)==null?void 0:n.width)??0,l.strokeStyle=((i=s==null?void 0:s.stroke)==null?void 0:i.color)??"black"),s.style??"basic"){case"stacked":nI({...r,context:l,dependencies:a});break;case"highlight":$E({...r,context:l,dependencies:a});break;case"pop":XE({...r,context:l,dependencies:a});break;case"bounce":PE({...r,context:l,dependencies:a});break;case"basic":default:wE({...r,context:l,dependencies:a});break}l.restore()}},oI={type:"image",width:({node:r,options:e,dependencies:t})=>{var n,i,s,o;const{format:a}=e;if(!t)return 0;const l=((n=t.image)==null?void 0:n.naturalWidth)??((i=t.image)==null?void 0:i.width),A=((s=t.image)==null?void 0:s.naturalHeight)??((o=t.image)==null?void 0:o.height),c=l/A;if(a==="letterbox"){const h=r.getComputedWidth(),d=r.getComputedHeight(),f=h/d;return c>f?h:d*c}const u=r.getComputedHeight();return u?u*c:r.getComputedWidth()},height:({node:r,options:e,dependencies:t})=>{var n,i,s,o;const{format:a}=e;if(!t)return 0;const l=((n=t.image)==null?void 0:n.naturalWidth)??((i=t.image)==null?void 0:i.width),A=((s=t.image)==null?void 0:s.naturalHeight)??((o=t.image)==null?void 0:o.height),c=l/A;return r.getComputedWidth()/c},render:({dx:r,dy:e,dw:t,dh:n,radius:i,dependencies:s,canvases:o})=>{const a=o.sceneCanvas.getContext("2d");if(!(!a||!(s!=null&&s.image))){if(a.save(),i){const{topLeft:l,topRight:A,bottomLeft:c,bottomRight:u}=i;_s({context:a,x:r,y:e,width:t,height:n,radii:[l,A,u,c]}),a.clip()}a.drawImage(s.image,r,e,t,n),a.restore()}}};function Su({context:r,word:e,maxW:t=1/0}){const n=[],i=r.measureText(e);if(Math.floor(i.width)<=t)return[{text:e,metrics:i}];for(let s=0;s<e.length;s++){const o=n[n.length-1],a=((o==null?void 0:o.text)??"")+e[s],l=r.measureText(a);l.width<t?n[o?n.length-1:0]={text:a,metrics:l}:n.push({text:e[s],metrics:r.measureText(e[s])})}return n}const La=ds(({font:r,context:e,fontSizes:t,text:n,maxW:i=1/0,letterSpacing:s=0})=>{try{return e.save(),e.letterSpacing=`${s}px`,e.font=r.replace(An,t[0].toString()),n.split(`
2454
- `).flatMap(a=>{const l=a.split(" ").filter(Boolean);return l.length?l.slice(1).reduce((A,c,u)=>{const d=`${A[A.length-1].text} ${c}`.trim(),f=e.measureText(d);if(f.width>i)A=[...A,...Su({context:e,word:c,maxW:i})];else{const g=t[u%t.length];e.font=r.replace(An,g.toString()),A[A.length-1]={text:d,metrics:f}}return A},Su({context:e,word:l[0],maxW:i})):{text:"",metrics:e.measureText("")}})}finally{e.restore()}},{cacheKey:([{font:r,fontSizes:e,text:t,maxW:n,letterSpacing:i}])=>`${r}_${JSON.stringify(e)}_${t}_${n}_${i}`}),Ru=ds(({font:r,text:e,scale:t,context:n,maxW:i,maxH:s,minSize:o,maxSize:a,letterSpacing:l=0})=>{var A,c;let u=0;if(a){u=(o??0)*t;let d=0;for(;a*t>u+1;){u+=1;const f=La({font:r,context:n,fontSizes:[u],text:e,maxW:i,letterSpacing:l});if(d=f.reduce((g,p)=>(p.metrics.width>g&&(g=p.metrics.width),g),0),d>i||f.length*u>s){u-=1;break}}}else u=parseFloat(((c=(A=r.match(An))==null?void 0:A.groups)==null?void 0:c.value)??"0")*t;return u},{cacheKey:([{font:r,text:e,scale:t,maxW:n,maxH:i,minSize:s,maxSize:o,letterSpacing:a}])=>`${r}_${e}_${s}_${o}_${t}_${n}_${i}_${a}`}),aI={type:"text",options:{value:{type:"textarea",name:"value",label:"Text",rows:4},color:{type:"color",name:"color",label:"Text colour"},font:{type:"font",name:"font",label:"Font"},wrap:{type:"checkbox",name:"wrap",label:"Text wrap"},align:{type:"radio",name:"align",label:"Text align",items:[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],visible:r=>r.wrap},"fill.minSize":{type:"slider",name:"minSize",label:"Min font size",min:20,max:400,step:1,visible:r=>r.wrap},"fill.maxSize":{type:"slider",name:"maxSize",label:"Max font size",min:20,max:400,step:1,visible:r=>r.wrap}},transform:{values:r=>{var e,t;return{value:r.value,color:r.color??"#000000",font:r.font,wrap:r.wrap??!0,align:r.align??"left",fill:{minSize:[((e=r.fill)==null?void 0:e.minSize)??20],maxSize:[((t=r.fill)==null?void 0:t.maxSize)??400]}}},options:r=>({value:r.value,color:r.color,font:r.font,wrap:r.wrap,align:r.align,fill:{minSize:r.fill.minSize[0],maxSize:r.fill.maxSize[0]}})},width:({node:r,options:e,dependencies:t,measureCanvas:n})=>{const{value:i="",align:s="left",wrap:o=!1}=e,a=r.getParent(),l=n==null?void 0:n.getContext("2d");if(!t||!l||!a||!a.getParent())return r.getComputedWidth();const A=`${t.font.weight} ${t.font.size}px ${t.font.family.name}`,c=cn({font:A,text:i});if(l.font=c,l.textBaseline="alphabetic",l.textAlign=s,o){const u=r.getComputedMargin(lr.Edge.Left)+r.getComputedMargin(lr.Edge.Right)+((a==null?void 0:a.getComputedPadding(lr.Edge.Left))??0)+((a==null?void 0:a.getComputedPadding(lr.Edge.Right))??0);return Math.max(((a==null?void 0:a.getComputedWidth())??0)-u,r.getComputedWidth(),...i.split(" ").map(h=>l.measureText(h).width))}return l.measureText(i).width},height:({node:r,options:e,dependencies:t,measureCanvas:n})=>{var i,s;const{value:o="",fill:a,align:l="left",wrap:A=!1}=e,c=r.getParent(),u=n==null?void 0:n.getContext("2d");if(!t||!u||!c||!c.getParent())return r.getComputedHeight();const h=`${t.font.weight} ${t.font.size}px ${t.font.family.name}`,d=cn({font:h,text:o});if(u.font=d,u.textBaseline="alphabetic",u.textAlign=l,A){const f=r.getComputedMargin(lr.Edge.Top)+r.getComputedMargin(lr.Edge.Bottom)+((c==null?void 0:c.getComputedPadding(lr.Edge.Top))??0)+((c==null?void 0:c.getComputedPadding(lr.Edge.Bottom))??0),g=r.getComputedWidth(),p=Math.max(((c==null?void 0:c.getComputedHeight())??0)-f,r.getComputedHeight()),I=Ru({font:d,scale:1,context:u,maxW:g,maxH:p,text:o??"",minSize:a==null?void 0:a.minSize,maxSize:a==null?void 0:a.maxSize});return La({context:u,font:d,fontSizes:[I],text:o??"",maxW:g}).length*I}else return parseFloat(((s=(i=d.match(An))==null?void 0:i.groups)==null?void 0:s.value)??"0")},render:({dx:r,dy:e,dw:t,dh:n,options:i,dependencies:s,canvases:o})=>{const{value:a="",fill:l,color:A,align:c="left",wrap:u=!1}=i,h=o.sceneCanvas.getContext("2d");if(!s||!h)return;h.save();const d=`${s.font.weight} ${s.font.size}px ${s.font.family.name}`,f=cn({font:d,text:a});h.font=f,h.textBaseline="alphabetic",h.fillStyle=A,h.textAlign=c;const g={left:r,center:r+t/2,right:r+t};if(u){const p=Ru({font:f,scale:1,context:h,maxW:t,maxH:n,text:a??"",minSize:l==null?void 0:l.minSize,maxSize:l==null?void 0:l.maxSize});h.font=f.replace(An,p.toString()),La({font:f,context:h,fontSizes:[p],text:a,maxW:t}).forEach((T,Q)=>{h.fillText(T.text,g[c],e+T.metrics.actualBoundingBoxAscent+p*Q)})}else{const p=h.measureText(a);h.fillText(a,g[c],e+p.actualBoundingBoxAscent)}h.restore()}},lI={type:"video",options:{crop:{type:"crop",name:"crop",label:"Crop"},speed:{type:"slider",name:"speed",label:"Speed",min:.5,max:2,step:.01},volume:{type:"slider",name:"volume",label:"Volume",min:0,max:1,step:.01}},transform:{values:r=>({format:r.format??"letterbox",crop:r.crop??{x:0,y:0,width:1,height:1},speed:[r.speed??1],volume:[r.volume??1]}),options:r=>({format:r.format,crop:r.crop,speed:r.speed[0],volume:r.volume[0]})},width:({node:r,options:e,dependencies:t})=>{const{crop:n,format:i}=e;if(!t||i==="crop")return r.getComputedWidth();const s=t.aspectRatio*(((n==null?void 0:n.width)??1)/((n==null?void 0:n.height)??1)),o=r.getComputedWidth(),a=r.getComputedHeight(),l=o/a;return s>l?o:a*s},height:({node:r,options:e,dependencies:t})=>{const{crop:n,format:i}=e;if(!t||i==="crop")return r.getComputedHeight();const s=t.aspectRatio*(((n==null?void 0:n.width)??1)/((n==null?void 0:n.height)??1));return r.getComputedWidth()/s},render:async({dx:r,dy:e,dw:t,dh:n,radius:i,sceneTime:s,options:o,dependencies:a,canvases:l})=>{const{crop:A,format:c="letterbox",speed:u=1}=o,h=l.sceneCanvas.getContext("2d");if(!h||!(a!=null&&a.video))return;const d=await a.video(s*u),f=(d==null?void 0:d.videoWidth)??(d==null?void 0:d.naturalWidth)??(d==null?void 0:d.width),g=(d==null?void 0:d.videoHeight)??(d==null?void 0:d.naturalHeight)??(d==null?void 0:d.height);if(f&&g){h.save();const{topLeft:p,topRight:I,bottomLeft:T,bottomRight:Q}=i;_s({context:h,x:r,y:e,width:t,height:n,radii:[p,I,Q,T]}),h.clip(),AE({context:h,crop:A,format:c,sourceWidth:f,sourceHeight:g,source:d,posX:r,posY:e,drawAreaWidth:t,drawAreaHeight:n,cropCanvas:l.cropCanvas,letterboxCanvas:l.letterboxCanvas}),h.restore()}}};function Du(){return document.createElement("canvas")}function AI(r,e){return Object.keys(r).reduce((t,n)=>(e.includes(n)||(t[n]=r[n]),t),{})}function Vt(r){let e=0;for(const t of r)Array.isArray(t)?e+=Vt(t):e+=t;return e}function Fs(r){return r.map(({type:e,duration:t},n)=>{var i,s,o,a;if(e==="transition"){const l=((i=r[n-2])==null?void 0:i.type)==="transition"?r[n-2]:null,A=((s=r[n-1])==null?void 0:s.duration)??1/0,c=((o=r[n+1])==null?void 0:o.duration)??1/0,u=((a=r[n+2])==null?void 0:a.type)==="transition"?r[n+2]:null;return Math.min(l?A/2:A,t,u?c/2:c)*-1}return t})}function _u(r){var e;return{...r,children:((e=r.children)==null?void 0:e.map(t=>{if(!t.renderer)return _u(t)}).filter(Boolean))??[]}}function Lu(r){const e={box:0,image:0,video:0,text:0,audio:0,gradient:0,caption:0};r.renderer&&(e[r.renderer.type]+=1);for(const t of r.children??[]){const{box:n,image:i,video:s,text:o,audio:a,gradient:l,caption:A}=Lu(t);e.box+=n,e.image+=i,e.video+=s,e.text+=o,e.audio+=a,e.gradient+=l,e.caption+=A}return e}function cI(r){return r.video>0?lI.type:r.image>0?oI.type:r.audio>0?vE.type:r.caption>0?sI.type:aI.type}function Fu({node:r,duration:e,parentAnimations:t=[]}){const n=[],i=[...r.element.animations??[],...t];if(r.renderer){const s=_u({...r.element,animations:i,layout:{...r.element.layout?AI(r.element.layout,["maxWidth","maxHeight"]):{},width:"100%",height:"100%",margin:0}}),o=Lu(s);n.push({type:cI(o),id:dE(),x:r.x,y:r.y,width:r.width,height:r.height,duration:e,root:{element:s}})}for(const s of r.childNodes)n.push(...Fu({node:s,duration:e,parentAnimations:i}));return n}Gg.filters.define("parse",r=>typeof r>"u"?null:typeof r=="string"?`"${IE(r)}"`:EE(r)||Array.isArray(r)?JSON.stringify(r):r);const uI="3";async function hI({scene:r,start:e=0}){const{id:t,root:n,duration:i}=r,s=await Cu({id:t,root:n});return{type:r.type,start:e,duration:i,layout:s,id:r.id,config:r}}async function dI({track:r}){const e=Fs(r),t=await Promise.all(r.reduce((s,o,a)=>{if(o.type!=="audio")return s;const l=Vt(e.slice(0,a));return s.push(hI({scene:o,start:l})),s},[])),n=r.reduce((s,o,a)=>{if(o.type!=="gap")return s;const l=Vt(e.slice(0,a));return s.push({type:o.type,id:o.id,start:l,config:o,duration:o.duration}),s},[]),i=r.map(({id:s})=>t.find(({id:o})=>o===s)??n.find(({id:o})=>o===s)).filter(Boolean);return{type:"audio",scenes:t,gapScenes:n,mergedScenes:i,config:r,duration:Math.max(...i.map(({start:s,duration:o})=>s+o))}}function Fa(r){return r.type==="fade"}function ka(r){return r.type==="translate"}async function ku({node:r,canvases:e,sceneTime:t,parentOpacity:n=1,parentTransform:i}){var s,o,a;const l=e.sceneCanvas.getContext("2d");if(l){l.save(),l.setTransform(i);const c=(r.element.animations??[]).reduce((d,f)=>(d[f.type]||(d[f.type]=[]),d[f.type].push(f),d),{});let u=((s=r.element.layout)==null?void 0:s.opacity)??1,h={x:0,y:0};for(const d of Object.keys(c)){const f=c[d].reduce((I,T)=>(T.start<=t&&(I=T),I),null),g=f?c[d].indexOf(f):-1,p=c[d][g+1];f?(Fa(f)&&(u=f.to),ka(f)&&(h={x:f.to.x,y:f.to.y})):p&&(Fa(p)&&(u=p.from),ka(p)&&(h={x:p.from.x,y:p.from.y}));for(const I of c[d]){const{start:T,duration:Q}=I;if(t>=T&&t<T+Q){if(Fa(I)){const{from:C,to:x,easing:S}=I;u=Da([T,T+Q],[C,x],{ease:S})(t)}if(ka(I)){const{from:C,to:x,easing:S}=I;h=Da([T,T+Q],[C,x],{ease:S})(t)}}}}l.globalAlpha=u*n,l.translate(h.x,h.y),await((a=(o=r.renderer)==null?void 0:o.render)==null?void 0:a.call(o,{canvases:e,sceneTime:t,dx:r.x,dy:r.y,dw:r.width,dh:r.height,radius:r.radius,options:r.options,dependencies:r.dependencies}));for await(const d of r.childNodes)await ku({node:d,canvases:e,sceneTime:t,parentOpacity:l.globalAlpha,parentTransform:l.getTransform()});l.restore()}}async function fI({layout:r,canvases:e,sceneTime:t}){const{node:n}=r;await ku({node:n,canvases:e,sceneTime:t})}async function ks({scene:r,start:e=0,resolvers:t,rootWidth:n,rootHeight:i,canvasFactory:s=Du}){var o,a;const{id:l,x:A,y:c,width:u,height:h,root:d,duration:f}=r,g=s(),p=s(),I=s(),T=s(),Q=s(),C=await Cu({id:l,root:{...d,layout:{...d.layout,width:n,height:i},element:{...d.element,layout:{...d.element.layout,...typeof A=="number"&&typeof c=="number"?{position:"absolute",inset:{top:c,left:A}}:{},width:u??((o=d.element.layout)==null?void 0:o.width),height:h??((a=d.element.layout)==null?void 0:a.height)}}},resolvers:t,measureCanvas:Q}),x=async S=>{const D=Math.max(0,S-e);g.width=g.height=0,g.width=n,g.height=i,await fI({layout:C,sceneTime:D,canvases:{sceneCanvas:g,cropCanvas:p,letterboxCanvas:I,posterCanvas:T}})};return{id:l,type:r.type,start:e,duration:f,layout:C,sceneCanvas:g,draw:x,config:r,childScenes:Fu({node:C.node,duration:f})}}async function gI({track:r,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}){const s=Fs(r),o=await Promise.all(r.reduce((c,u,h)=>{const d=Vt(s.slice(0,h));return u.type==="caption"&&c.push(ks({scene:u,start:d,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i})),c},[])),a=r.reduce((c,u,h)=>{if(u.type!=="gap")return c;const d=Vt(s.slice(0,h));return c.push({type:u.type,id:u.id,start:d,config:u,duration:u.duration}),c},[]),l=r.reduce((c,u,h)=>{if(u.type!=="transition")return c;const d=u.duration,f=Vt(s.slice(0,h))-d;return c.push({type:u.type,id:u.id,name:u.name,start:f,duration:d,config:u,transitionCanvas:i(),to:o.find(({id:g})=>{var p;return g===((p=r[h+1])==null?void 0:p.id)}),from:o.find(({id:g})=>{var p;return g===((p=r[h-1])==null?void 0:p.id)})}),c},[]),A=r.map(({id:c})=>o.find(({id:u})=>u===c)??a.find(({id:u})=>u===c)??l.find(({id:u})=>u===c)).filter(Boolean);return{type:"caption",scenes:o,gapScenes:a,transitions:l,mergedScenes:A,duration:Math.max(...A.map(({start:c,duration:u})=>c+u)),trackCanvas:i()}}async function pI({track:r,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}){const s=Fs(r),o=await Promise.all(r.reduce((c,u,h)=>{const d=Vt(s.slice(0,h));return u.type==="video"&&c.push(ks({scene:u,start:d,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i})),u.type==="image"&&c.push(ks({scene:u,start:d,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i})),c},[])),a=r.reduce((c,u,h)=>{if(u.type!=="gap")return c;const d=Vt(s.slice(0,h));return c.push({type:u.type,id:u.id,start:d,config:u,duration:u.duration}),c},[]),l=r.reduce((c,u,h)=>{if(u.type!=="transition")return c;const d=u.duration,f=Vt(s.slice(0,h))-d;return c.push({type:u.type,id:u.id,name:u.name,start:f,duration:d,config:u,transitionCanvas:i(),to:o.find(({id:g})=>{var p;return g===((p=r[h+1])==null?void 0:p.id)}),from:o.find(({id:g})=>{var p;return g===((p=r[h-1])==null?void 0:p.id)})}),c},[]),A=r.map(({id:c})=>o.find(({id:u})=>u===c)??a.find(({id:u})=>u===c)??l.find(({id:u})=>u===c)).filter(Boolean);return{type:"picture",scenes:o,gapScenes:a,transitions:l,mergedScenes:A,duration:Math.max(0,...A.map(({start:c,duration:u})=>c+u)),trackCanvas:i()}}async function mI({track:r,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}){const s=Fs(r),o=await Promise.all(r.reduce((c,u,h)=>{const d=Vt(s.slice(0,h));return u.type==="text"&&c.push(ks({scene:u,start:d,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i})),c},[])),a=r.reduce((c,u,h)=>{if(u.type!=="gap")return c;const d=Vt(s.slice(0,h));return c.push({type:u.type,id:u.id,start:d,config:u,duration:u.duration}),c},[]),l=r.reduce((c,u,h)=>{if(u.type!=="transition")return c;const d=u.duration,f=Vt(s.slice(0,h))-d;return c.push({type:u.type,id:u.id,name:u.name,start:f,duration:d,config:u,transitionCanvas:i(),to:o.find(({id:g})=>{var p;return g===((p=r[h+1])==null?void 0:p.id)}),from:o.find(({id:g})=>{var p;return g===((p=r[h-1])==null?void 0:p.id)})}),c},[]),A=r.map(({id:c})=>o.find(({id:u})=>u===c)??a.find(({id:u})=>u===c)??l.find(({id:u})=>u===c)).filter(Boolean);return{type:"text",scenes:o,gapScenes:a,transitions:l,mergedScenes:A,duration:Math.max(...A.map(({start:c,duration:u})=>c+u)),trackCanvas:i()}}function EI(r){return r.some(({type:e})=>e==="text")}function II(r){return r.some(({type:e})=>e==="caption")}function CI(r){return r.some(({type:e})=>e==="audio")}function vI(r){return r.some(({type:e})=>e==="video"||e==="image")}function yI(r){return r.type==="audio"}const BI=(((fu=du)==null?void 0:fu.default)??du).reduce((r,e)=>(r[e.name]=e,r),{});function TI(r,e){return r.has(e)||r.set(e,{buffer:null,transitions:{},fromTexture:null,toTexture:null}),r.get(e)}function bI({name:r,to:e,from:t,progress:n,width:i,height:s,glContext:o,contextResources:a,returnPixels:l=!0}){var A,c,u;const h=TI(a,o);if(o.disable(o.DEPTH_TEST),h.buffer?o.bindBuffer(o.ARRAY_BUFFER,h.buffer):(h.buffer=o.createBuffer(),o.bindBuffer(o.ARRAY_BUFFER,h.buffer),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,-1,4,4,-1]),o.STATIC_DRAW)),o.viewport(0,0,i,s),h.fromTexture?h.fromTexture.setPixels(t):(h.fromTexture=(((A=xs)==null?void 0:A.default)??xs)(o,t),h.fromTexture.minFilter=o.LINEAR,h.fromTexture.magFilter=o.LINEAR),h.toTexture?h.toTexture.setPixels(e):(h.toTexture=(((c=xs)==null?void 0:c.default)??xs)(o,e),h.toTexture.minFilter=o.LINEAR,h.toTexture.magFilter=o.LINEAR),h.transitions[r]||(h.transitions[r]=(((u=hu)==null?void 0:u.default)??hu)(o,BI[r])),h.transitions[r].draw(n,h.fromTexture,h.toTexture,i,s),!l)return o.flush(),new Uint8Array(0);const f=new Uint8Array(i*s*4);return o.readPixels(0,0,i,s,o.RGBA,o.UNSIGNED_BYTE,f),o.flush(),f}function QI(r){for(const[e,t]of r.entries())t.buffer&&e.deleteBuffer(t.buffer),t.fromTexture&&t.fromTexture.dispose(),t.toTexture&&t.toTexture.dispose(),Object.values(t.transitions).forEach(n=>{n.dispose()}),r.delete(e)}function xI({name:r,to:e,from:t,progress:n,canvas:i,contextResources:s}){const o=i.getContext("webgl",{alpha:!0,depth:!1,antialias:!1,preserveDrawingBuffer:!1});o&&(o.pixelStorei(o.UNPACK_FLIP_Y_WEBGL,!0),bI({name:r,to:e,from:t,progress:n,width:i.width,height:i.height,glContext:o,contextResources:s,returnPixels:!1}))}async function Mu({config:r,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i=Du,drawTransition:s=xI}){const o=new Map,a=await Promise.all(r.tracks.map(async c=>{if(vI(c))return{...await pI({track:c,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}),config:c};if(EI(c))return{...await mI({track:c,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}),config:c};if(II(c))return{...await gI({track:c,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}),config:c};if(CI(c))return{...await dI({track:c}),config:c};throw new Error("Unknown track type")}));return{draw:async({canvas:c,currentTime:u})=>{const h=c.getContext("2d");if(h){h.globalAlpha=1,h.globalCompositeOperation="source-over",h.clearRect(0,0,c.width,c.height),h.save(),h.fillStyle="black",h.fillRect(0,0,c.width,c.height),h.restore();for await(const d of a){if(yI(d))continue;const{scenes:f,transitions:g,trackCanvas:p}=d;p.width=p.height=0,p.width=c.width,p.height=c.height;const I=p.getContext("2d"),T=f.filter(({start:C,duration:x})=>u>=C&&u<C+x);if(!I||T.length<=0)continue;const Q=g.find(({start:C,duration:x})=>u>=C&&u<C+x);for await(const{sceneCanvas:C,draw:x}of T)await(x==null?void 0:x(u)),(!Q||Q&&(!Q.to||!Q.from))&&I.drawImage(C,0,0,C.width,C.height);if(Q&&Q.to&&Q.from){const{name:C,to:x,from:S,duration:D,transitionCanvas:P}=Q;P.width=P.height=0,P.width=p.width,P.height=p.height;const K=Math.min(1,Math.max(0,(u-x.start)/D));await s({name:C,progress:K,contextResources:o,to:x.sceneCanvas,from:S.sceneCanvas,canvas:P}),I.globalCompositeOperation="lighter",I.drawImage(P,0,0,P.width,P.height)}h.drawImage(p,0,0,p.width,p.height)}}},cleanup:()=>{QI(o)},tracks:a,aspectRatio:r.aspectRatio,duration:Math.max(...a.map(({duration:c})=>c))}}const wI={name:"@vouchfor/embeds",version:"4.3.2",license:"MIT",author:"Aaron Williams",main:"dist/es/embeds.js",module:"dist/es/embeds.js",type:"module",types:"dist/es/src/index.d.ts",exports:{".":"./dist/es/embeds.js"},files:["dist","src"],publishConfig:{tag:"latest",access:"public"},engines:{node:">=18.18.0"},scripts:{build:"rm -rf dist && tsc && yarn build:self","build:deps":"yarn --cwd ../media-player build","build:self":"vite build --mode iife && vite build --mode es && node scripts/build.cjs","build:package":"yarn build","build:storybook":"yarn prebuild && storybook build","generate:manifest":"wca src --outFile custom-elements.json",lint:"eslint . --quiet","lint:fix":"eslint . --fix","lint:staged":"lint-staged",prepublishOnly:"yarn build",size:"size-limit",storybook:"yarn prebuild && storybook dev -p 6007",prebuild:"yarn build:deps && yarn generate:manifest",test:"rm -rf test/lib && yarn prebuild && vite build --mode test && web-test-runner","test:ci":"yarn test --config web-test-runner.ci.config.js","test:watch":"yarn test --watch",typecheck:"tsc --noEmit"},"lint-staged":{"**/*.{ts,tsx,js}":"eslint --fix --quiet","**/*.{md,json,yml}":"prettier --write"},dependencies:{"@a11y/focus-trap":"^1.0.5","@lit/task":"^1.0.0","@vouchfor/canvas-video":"^9.3.2","@vouchfor/media-player":"^5.3.2",uuid:"^9.0.1"},peerDependencies:{lit:"^3.1.2"},devDependencies:{"@esm-bundle/chai":"^4.3.4-fix.0","@open-wc/testing":"^4.0.0","@storybook/addon-essentials":"^8.5.8","@storybook/addon-links":"^8.5.8","@storybook/blocks":"^8.5.8","@storybook/web-components":"^8.5.8","@storybook/web-components-vite":"^8.5.8","@svgr/core":"^8.1.0","@types/flat":"^5.0.5","@types/mocha":"^10.0.6","@vouchfor/eslint-config":"^1.0.1","@vouchfor/prettier-config":"^1.0.1","@vouchfor/video-utils":"^2.3.2","@web/dev-server-esbuild":"^1.0.2","@web/test-runner":"^0.18.1","@web/test-runner-browserstack":"^0.7.1","@web/test-runner-mocha":"^0.9.0","@web/test-runner-playwright":"^0.11.0",glob:"^10.3.10","lint-staged":"^15.2.2",lit:"^3.1.2",lodash:"^4.17.21",react:"^18.2.0","react-dom":"^18.2.0","rollup-plugin-tla":"^0.0.2",sinon:"^17.0.1",storybook:"^8.5.8",svgson:"^5.3.1",typescript:"^5.4.3",vite:"^5.2.2","vite-plugin-commonjs":"^0.10.1","vite-plugin-dts":"^3.7.3","web-component-analyzer":"^2.0.0"}};function SI(r){const{publicApiUrl:e}=is(r),t=Gr();return navigator.sendBeacon(`${e}/api/visitor`,JSON.stringify({visitorId:t})),t}function RI(r){var s,o,a,l,A,c,u,h,d,f,g,p;if(typeof window>"u")return{client:null,tab:null,request:Gr()};let e=(o=(s=window.localStorage)==null?void 0:s.getItem)==null?void 0:o.call(s,"vouch-uid-visitor"),t=(l=(a=window.localStorage)==null?void 0:a.getItem)==null?void 0:l.call(a,"vouch-uid-client"),n=(c=(A=window.sessionStorage)==null?void 0:A.getItem)==null?void 0:c.call(A,"vouch-uid-tab");const i=Gr();return e||(e=SI(r),(h=(u=window.localStorage)==null?void 0:u.setItem)==null||h.call(u,"vouch-uid-visitor",e)),t||(t=Gr(),(f=(d=window.localStorage)==null?void 0:d.setItem)==null||f.call(d,"vouch-uid-client",t)),n||(n=Gr(),(p=(g=window.sessionStorage)==null?void 0:g.setItem)==null||p.call(g,"vouch-uid-tab",n)),{client:t,tab:n,request:i,visitor:e}}function DI(r,e){return r&&"vouchId"in r?r.vouchId:(e==null?void 0:e.id)??null}function _I(r="embedded_player"){var i,s;const[e,t]=((s=(i=Intl.DateTimeFormat().resolvedOptions().timeZone)==null?void 0:i.split)==null?void 0:s.call(i,"/"))??[],n={};return[...new URLSearchParams(location.search).entries()].forEach(([o,a])=>{if(/utm/.test(o)){const l=o.toLowerCase().replace(/[-_][a-z0-9]/g,A=>A.slice(-1).toUpperCase());n[l]=a}}),{source:r,time:new Date,region:t,country:e,screenHeight:window.screen.height,screenWidth:window.screen.width,referrer:document.referrer,currentUrl:location.href,embedType:"media-player-embed",embedVersion:wI.version,templateVersion:uI,...n}}const Nu=1;class LI{constructor(e){this._batchedEvents=[],this._hasPlayed=!1,this._hasLoaded={},this._answersViewed={},this._streamStartTime={},this._streamLatestTime={},this._currentlyPlayingVideo=null,this._createTrackingEvent=(t,n)=>{const i=DI(n,this.host.vouch);!i||this.host.disableTracking||this._batchedEvents.push({event:t,payload:{...n,vouchId:i,time:new Date().toISOString()}})},this._sendTrackingEvent=()=>{if(this._batchedEvents.length<=0)return;const{publicApiUrl:t}=is(this.host.env),{client:n,tab:i,request:s,visitor:o}=RI(this.host.env);navigator.sendBeacon(`${t}/api/batchevents`,JSON.stringify({payload:{events:this._batchedEvents},context:{"x-uid-client":n,"x-uid-tab":i,"x-uid-request":s,"x-uid-visitor":o,"x-reporting-metadata":_I(this.host.trackingSource)}})),this._batchedEvents=[]},this._streamEnded=()=>{if(this._currentlyPlayingVideo){const{id:t,key:n}=this._currentlyPlayingVideo;this._streamLatestTime[n]>this._streamStartTime[n]+Nu&&this._createTrackingEvent("VIDEO_STREAMED",{answerId:t,streamStart:this._streamStartTime[n],streamEnd:this._streamLatestTime[n]}),delete this._streamStartTime[n],delete this._streamLatestTime[n]}},this._handleVouchLoaded=({detail:t})=>{t&&(this._hasLoaded[t]||(this._createTrackingEvent("VOUCH_LOADED",{vouchId:t}),this._hasLoaded[t]=!0))},this._handlePlay=()=>{this._hasPlayed||(this._createTrackingEvent("VIDEO_PLAYED",{streamStart:this.host.currentTime}),this._hasPlayed=!0)},this._handleVideoPlay=({detail:{id:t,key:n}})=>{this._answersViewed[n]||(this._createTrackingEvent("VOUCH_RESPONSE_VIEWED",{answerId:t}),this._answersViewed[n]=!0)},this._handleVideoTimeUpdate=({detail:{id:t,key:n,node:i}})=>{this.host.paused||(this._currentlyPlayingVideo={id:t,key:n,node:i},this._streamLatestTime[n]=i.currentTime,this._streamStartTime[n]||(this._streamStartTime[n]=i.currentTime,this._streamLatestTime[n]=i.currentTime))},this._handleVideoPause=({detail:{id:t,key:n}})=>{this._streamLatestTime[n]>this._streamStartTime[n]+Nu&&this._createTrackingEvent("VIDEO_STREAMED",{answerId:t,streamStart:this._streamStartTime[n],streamEnd:this._streamLatestTime[n]}),delete this._streamStartTime[n],delete this._streamLatestTime[n]},this._pageUnloading=()=>{this._streamEnded(),this._sendTrackingEvent()},this._handleVisibilityChange=()=>{document.visibilityState==="hidden"&&this._pageUnloading()},this._handlePageHide=()=>{this._pageUnloading()},this.host=e,e.addController(this)}hostConnected(){requestAnimationFrame(()=>{var e,t,n,i;"onvisibilitychange"in document?document.addEventListener("visibilitychange",this._handleVisibilityChange):window.addEventListener("pagehide",this._handlePageHide),this.host.addEventListener("vouch:loaded",this._handleVouchLoaded),(e=this.host.mediaPlayer)==null||e.addEventListener("play",this._handlePlay),(t=this.host.mediaPlayer)==null||t.addEventListener("video:play",this._handleVideoPlay),(n=this.host.mediaPlayer)==null||n.addEventListener("video:pause",this._handleVideoPause),(i=this.host.mediaPlayer)==null||i.addEventListener("video:timeupdate",this._handleVideoTimeUpdate)})}hostDisconnected(){var e,t,n,i;this._pageUnloading(),"onvisibilitychange"in document?document.removeEventListener("visibilitychange",this._handleVisibilityChange):window.removeEventListener("pagehide",this._handlePageHide),this.host.removeEventListener("vouch:loaded",this._handleVouchLoaded),(e=this.host.mediaPlayer)==null||e.removeEventListener("play",this._handlePlay),(t=this.host.mediaPlayer)==null||t.removeEventListener("video:play",this._handleVideoPlay),(n=this.host.mediaPlayer)==null||n.removeEventListener("video:pause",this._handleVideoPause),(i=this.host.mediaPlayer)==null||i.removeEventListener("video:timeupdate",this._handleVideoTimeUpdate)}}var Ma={exports:{}};(function(r,e){var t=typeof globalThis<"u"&&globalThis||typeof self<"u"&&self||typeof wn<"u"&&wn,n=function(){function s(){this.fetch=!1,this.DOMException=t.DOMException}return s.prototype=t,new s}();(function(s){(function(o){var a=typeof s<"u"&&s||typeof self<"u"&&self||typeof a<"u"&&a,l={searchParams:"URLSearchParams"in a,iterable:"Symbol"in a&&"iterator"in Symbol,blob:"FileReader"in a&&"Blob"in a&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in a,arrayBuffer:"ArrayBuffer"in a};function A(_){return _&&DataView.prototype.isPrototypeOf(_)}if(l.arrayBuffer)var c=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(_){return _&&c.indexOf(Object.prototype.toString.call(_))>-1};function h(_){if(typeof _!="string"&&(_=String(_)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(_)||_==="")throw new TypeError('Invalid character in header field name: "'+_+'"');return _.toLowerCase()}function d(_){return typeof _!="string"&&(_=String(_)),_}function f(_){var U={next:function(){var z=_.shift();return{done:z===void 0,value:z}}};return l.iterable&&(U[Symbol.iterator]=function(){return U}),U}function g(_){this.map={},_ instanceof g?_.forEach(function(U,z){this.append(z,U)},this):Array.isArray(_)?_.forEach(function(U){this.append(U[0],U[1])},this):_&&Object.getOwnPropertyNames(_).forEach(function(U){this.append(U,_[U])},this)}g.prototype.append=function(_,U){_=h(_),U=d(U);var z=this.map[_];this.map[_]=z?z+", "+U:U},g.prototype.delete=function(_){delete this.map[h(_)]},g.prototype.get=function(_){return _=h(_),this.has(_)?this.map[_]:null},g.prototype.has=function(_){return this.map.hasOwnProperty(h(_))},g.prototype.set=function(_,U){this.map[h(_)]=d(U)},g.prototype.forEach=function(_,U){for(var z in this.map)this.map.hasOwnProperty(z)&&_.call(U,this.map[z],z,this)},g.prototype.keys=function(){var _=[];return this.forEach(function(U,z){_.push(z)}),f(_)},g.prototype.values=function(){var _=[];return this.forEach(function(U){_.push(U)}),f(_)},g.prototype.entries=function(){var _=[];return this.forEach(function(U,z){_.push([z,U])}),f(_)},l.iterable&&(g.prototype[Symbol.iterator]=g.prototype.entries);function p(_){if(_.bodyUsed)return Promise.reject(new TypeError("Already read"));_.bodyUsed=!0}function I(_){return new Promise(function(U,z){_.onload=function(){U(_.result)},_.onerror=function(){z(_.error)}})}function T(_){var U=new FileReader,z=I(U);return U.readAsArrayBuffer(_),z}function Q(_){var U=new FileReader,z=I(U);return U.readAsText(_),z}function C(_){for(var U=new Uint8Array(_),z=new Array(U.length),L=0;L<U.length;L++)z[L]=String.fromCharCode(U[L]);return z.join("")}function x(_){if(_.slice)return _.slice(0);var U=new Uint8Array(_.byteLength);return U.set(new Uint8Array(_)),U.buffer}function S(){return this.bodyUsed=!1,this._initBody=function(_){this.bodyUsed=this.bodyUsed,this._bodyInit=_,_?typeof _=="string"?this._bodyText=_:l.blob&&Blob.prototype.isPrototypeOf(_)?this._bodyBlob=_:l.formData&&FormData.prototype.isPrototypeOf(_)?this._bodyFormData=_:l.searchParams&&URLSearchParams.prototype.isPrototypeOf(_)?this._bodyText=_.toString():l.arrayBuffer&&l.blob&&A(_)?(this._bodyArrayBuffer=x(_.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):l.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(_)||u(_))?this._bodyArrayBuffer=x(_):this._bodyText=_=Object.prototype.toString.call(_):this._bodyText="",this.headers.get("content-type")||(typeof _=="string"?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):l.searchParams&&URLSearchParams.prototype.isPrototypeOf(_)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},l.blob&&(this.blob=function(){var _=p(this);if(_)return _;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){if(this._bodyArrayBuffer){var _=p(this);return _||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}else return this.blob().then(T)}),this.text=function(){var _=p(this);if(_)return _;if(this._bodyBlob)return Q(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(C(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},l.formData&&(this.formData=function(){return this.text().then(O)}),this.json=function(){return this.text().then(JSON.parse)},this}var D=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function P(_){var U=_.toUpperCase();return D.indexOf(U)>-1?U:_}function K(_,U){if(!(this instanceof K))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');U=U||{};var z=U.body;if(_ instanceof K){if(_.bodyUsed)throw new TypeError("Already read");this.url=_.url,this.credentials=_.credentials,U.headers||(this.headers=new g(_.headers)),this.method=_.method,this.mode=_.mode,this.signal=_.signal,!z&&_._bodyInit!=null&&(z=_._bodyInit,_.bodyUsed=!0)}else this.url=String(_);if(this.credentials=U.credentials||this.credentials||"same-origin",(U.headers||!this.headers)&&(this.headers=new g(U.headers)),this.method=P(U.method||this.method||"GET"),this.mode=U.mode||this.mode||null,this.signal=U.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&z)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(z),(this.method==="GET"||this.method==="HEAD")&&(U.cache==="no-store"||U.cache==="no-cache")){var L=/([?&])_=[^&]*/;if(L.test(this.url))this.url=this.url.replace(L,"$1_="+new Date().getTime());else{var R=/\?/;this.url+=(R.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}K.prototype.clone=function(){return new K(this,{body:this._bodyInit})};function O(_){var U=new FormData;return _.trim().split("&").forEach(function(z){if(z){var L=z.split("="),R=L.shift().replace(/\+/g," "),F=L.join("=").replace(/\+/g," ");U.append(decodeURIComponent(R),decodeURIComponent(F))}}),U}function q(_){var U=new g,z=_.replace(/\r?\n[\t ]+/g," ");return z.split("\r").map(function(L){return L.indexOf(`
2454
+ `).flatMap(a=>{const l=a.split(" ").filter(Boolean);return l.length?l.slice(1).reduce((A,c,u)=>{const d=`${A[A.length-1].text} ${c}`.trim(),f=e.measureText(d);if(f.width>i)A=[...A,...Su({context:e,word:c,maxW:i})];else{const g=t[u%t.length];e.font=r.replace(An,g.toString()),A[A.length-1]={text:d,metrics:f}}return A},Su({context:e,word:l[0],maxW:i})):{text:"",metrics:e.measureText("")}})}finally{e.restore()}},{cacheKey:([{font:r,fontSizes:e,text:t,maxW:n,letterSpacing:i}])=>`${r}_${JSON.stringify(e)}_${t}_${n}_${i}`}),Ru=ds(({font:r,text:e,scale:t,context:n,maxW:i,maxH:s,minSize:o,maxSize:a,letterSpacing:l=0})=>{var A,c;let u=0;if(a){u=(o??0)*t;let d=0;for(;a*t>u+1;){u+=1;const f=La({font:r,context:n,fontSizes:[u],text:e,maxW:i,letterSpacing:l});if(d=f.reduce((g,p)=>(p.metrics.width>g&&(g=p.metrics.width),g),0),d>i||f.length*u>s){u-=1;break}}}else u=parseFloat(((c=(A=r.match(An))==null?void 0:A.groups)==null?void 0:c.value)??"0")*t;return u},{cacheKey:([{font:r,text:e,scale:t,maxW:n,maxH:i,minSize:s,maxSize:o,letterSpacing:a}])=>`${r}_${e}_${s}_${o}_${t}_${n}_${i}_${a}`}),aI={type:"text",options:{value:{type:"textarea",name:"value",label:"Text",rows:4},color:{type:"color",name:"color",label:"Text colour"},font:{type:"font",name:"font",label:"Font"},wrap:{type:"checkbox",name:"wrap",label:"Text wrap"},align:{type:"radio",name:"align",label:"Text align",items:[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],visible:r=>r.wrap},"fill.minSize":{type:"slider",name:"minSize",label:"Min font size",min:20,max:400,step:1,visible:r=>r.wrap},"fill.maxSize":{type:"slider",name:"maxSize",label:"Max font size",min:20,max:400,step:1,visible:r=>r.wrap}},transform:{values:r=>{var e,t;return{value:r.value,color:r.color??"#000000",font:r.font,wrap:r.wrap??!0,align:r.align??"left",fill:{minSize:[((e=r.fill)==null?void 0:e.minSize)??20],maxSize:[((t=r.fill)==null?void 0:t.maxSize)??400]}}},options:r=>({value:r.value,color:r.color,font:r.font,wrap:r.wrap,align:r.align,fill:{minSize:r.fill.minSize[0],maxSize:r.fill.maxSize[0]}})},width:({node:r,options:e,dependencies:t,measureCanvas:n})=>{const{value:i="",align:s="left",wrap:o=!1}=e,a=r.getParent(),l=n==null?void 0:n.getContext("2d");if(!t||!l||!a||!a.getParent())return r.getComputedWidth();const A=`${t.font.weight} ${t.font.size}px ${t.font.family.name}`,c=cn({font:A,text:i});if(l.font=c,l.textBaseline="alphabetic",l.textAlign=s,o){const u=r.getComputedMargin(lr.Edge.Left)+r.getComputedMargin(lr.Edge.Right)+((a==null?void 0:a.getComputedPadding(lr.Edge.Left))??0)+((a==null?void 0:a.getComputedPadding(lr.Edge.Right))??0);return Math.max(((a==null?void 0:a.getComputedWidth())??0)-u,r.getComputedWidth(),...i.split(" ").map(h=>l.measureText(h).width))}return l.measureText(i).width},height:({node:r,options:e,dependencies:t,measureCanvas:n})=>{var i,s;const{value:o="",fill:a,align:l="left",wrap:A=!1}=e,c=r.getParent(),u=n==null?void 0:n.getContext("2d");if(!t||!u||!c||!c.getParent())return r.getComputedHeight();const h=`${t.font.weight} ${t.font.size}px ${t.font.family.name}`,d=cn({font:h,text:o});if(u.font=d,u.textBaseline="alphabetic",u.textAlign=l,A){const f=r.getComputedMargin(lr.Edge.Top)+r.getComputedMargin(lr.Edge.Bottom)+((c==null?void 0:c.getComputedPadding(lr.Edge.Top))??0)+((c==null?void 0:c.getComputedPadding(lr.Edge.Bottom))??0),g=r.getComputedWidth(),p=Math.max(((c==null?void 0:c.getComputedHeight())??0)-f,r.getComputedHeight()),I=Ru({font:d,scale:1,context:u,maxW:g,maxH:p,text:o??"",minSize:a==null?void 0:a.minSize,maxSize:a==null?void 0:a.maxSize});return La({context:u,font:d,fontSizes:[I],text:o??"",maxW:g}).length*I}else return parseFloat(((s=(i=d.match(An))==null?void 0:i.groups)==null?void 0:s.value)??"0")},render:({dx:r,dy:e,dw:t,dh:n,options:i,dependencies:s,canvases:o})=>{const{value:a="",fill:l,color:A,align:c="left",wrap:u=!1}=i,h=o.sceneCanvas.getContext("2d");if(!s||!h)return;h.save();const d=`${s.font.weight} ${s.font.size}px ${s.font.family.name}`,f=cn({font:d,text:a});h.font=f,h.textBaseline="alphabetic",h.fillStyle=A,h.textAlign=c;const g={left:r,center:r+t/2,right:r+t};if(u){const p=Ru({font:f,scale:1,context:h,maxW:t,maxH:n,text:a??"",minSize:l==null?void 0:l.minSize,maxSize:l==null?void 0:l.maxSize});h.font=f.replace(An,p.toString()),La({font:f,context:h,fontSizes:[p],text:a,maxW:t}).forEach((T,Q)=>{h.fillText(T.text,g[c],e+T.metrics.actualBoundingBoxAscent+p*Q)})}else{const p=h.measureText(a);h.fillText(a,g[c],e+p.actualBoundingBoxAscent)}h.restore()}},lI={type:"video",options:{crop:{type:"crop",name:"crop",label:"Crop"},speed:{type:"slider",name:"speed",label:"Speed",min:.5,max:2,step:.01},volume:{type:"slider",name:"volume",label:"Volume",min:0,max:1,step:.01}},transform:{values:r=>({format:r.format??"letterbox",crop:r.crop??{x:0,y:0,width:1,height:1},speed:[r.speed??1],volume:[r.volume??1]}),options:r=>({format:r.format,crop:r.crop,speed:r.speed[0],volume:r.volume[0]})},width:({node:r,options:e,dependencies:t})=>{const{crop:n,format:i}=e;if(!t||i==="crop")return r.getComputedWidth();const s=t.aspectRatio*(((n==null?void 0:n.width)??1)/((n==null?void 0:n.height)??1)),o=r.getComputedWidth(),a=r.getComputedHeight(),l=o/a;return s>l?o:a*s},height:({node:r,options:e,dependencies:t})=>{const{crop:n,format:i}=e;if(!t||i==="crop")return r.getComputedHeight();const s=t.aspectRatio*(((n==null?void 0:n.width)??1)/((n==null?void 0:n.height)??1));return r.getComputedWidth()/s},render:async({dx:r,dy:e,dw:t,dh:n,radius:i,sceneTime:s,options:o,dependencies:a,canvases:l})=>{const{crop:A,format:c="letterbox",speed:u=1}=o,h=l.sceneCanvas.getContext("2d");if(!h||!(a!=null&&a.video))return;const d=await a.video(s*u),f=(d==null?void 0:d.videoWidth)??(d==null?void 0:d.naturalWidth)??(d==null?void 0:d.width),g=(d==null?void 0:d.videoHeight)??(d==null?void 0:d.naturalHeight)??(d==null?void 0:d.height);if(f&&g){h.save();const{topLeft:p,topRight:I,bottomLeft:T,bottomRight:Q}=i;_s({context:h,x:r,y:e,width:t,height:n,radii:[p,I,Q,T]}),h.clip(),AE({context:h,crop:A,format:c,sourceWidth:f,sourceHeight:g,source:d,posX:r,posY:e,drawAreaWidth:t,drawAreaHeight:n,cropCanvas:l.cropCanvas,letterboxCanvas:l.letterboxCanvas}),h.restore()}}};function Du(){return document.createElement("canvas")}function AI(r,e){return Object.keys(r).reduce((t,n)=>(e.includes(n)||(t[n]=r[n]),t),{})}function Vt(r){let e=0;for(const t of r)Array.isArray(t)?e+=Vt(t):e+=t;return e}function Fs(r){return r.map(({type:e,duration:t},n)=>{var i,s,o,a;if(e==="transition"){const l=((i=r[n-2])==null?void 0:i.type)==="transition"?r[n-2]:null,A=((s=r[n-1])==null?void 0:s.duration)??1/0,c=((o=r[n+1])==null?void 0:o.duration)??1/0,u=((a=r[n+2])==null?void 0:a.type)==="transition"?r[n+2]:null;return Math.min(l?A/2:A,t,u?c/2:c)*-1}return t})}function _u(r){var e;return{...r,children:((e=r.children)==null?void 0:e.map(t=>{if(!t.renderer)return _u(t)}).filter(Boolean))??[]}}function Lu(r){const e={box:0,image:0,video:0,text:0,audio:0,gradient:0,caption:0};r.renderer&&(e[r.renderer.type]+=1);for(const t of r.children??[]){const{box:n,image:i,video:s,text:o,audio:a,gradient:l,caption:A}=Lu(t);e.box+=n,e.image+=i,e.video+=s,e.text+=o,e.audio+=a,e.gradient+=l,e.caption+=A}return e}function cI(r){return r.video>0?lI.type:r.image>0?oI.type:r.audio>0?vE.type:r.caption>0?sI.type:aI.type}function Fu({node:r,duration:e,parentAnimations:t=[]}){const n=[],i=[...r.element.animations??[],...t];if(r.renderer){const s=_u({...r.element,animations:i,layout:{...r.element.layout?AI(r.element.layout,["maxWidth","maxHeight"]):{},width:"100%",height:"100%",margin:0}}),o=Lu(s);n.push({type:cI(o),id:dE(),x:r.x,y:r.y,width:r.width,height:r.height,duration:e,root:{element:s}})}for(const s of r.childNodes)n.push(...Fu({node:s,duration:e,parentAnimations:i}));return n}Gg.filters.define("parse",r=>typeof r>"u"?null:typeof r=="string"?`"${IE(r)}"`:EE(r)||Array.isArray(r)?JSON.stringify(r):r);const uI="3";async function hI({scene:r,start:e=0}){const{id:t,root:n,duration:i}=r,s=await Cu({id:t,root:n});return{type:r.type,start:e,duration:i,layout:s,id:r.id,config:r}}async function dI({track:r}){const e=Fs(r),t=await Promise.all(r.reduce((s,o,a)=>{if(o.type!=="audio")return s;const l=Vt(e.slice(0,a));return s.push(hI({scene:o,start:l})),s},[])),n=r.reduce((s,o,a)=>{if(o.type!=="gap")return s;const l=Vt(e.slice(0,a));return s.push({type:o.type,id:o.id,start:l,config:o,duration:o.duration}),s},[]),i=r.map(({id:s})=>t.find(({id:o})=>o===s)??n.find(({id:o})=>o===s)).filter(Boolean);return{type:"audio",scenes:t,gapScenes:n,mergedScenes:i,config:r,duration:Math.max(...i.map(({start:s,duration:o})=>s+o))}}function Fa(r){return r.type==="fade"}function ka(r){return r.type==="translate"}async function ku({node:r,canvases:e,sceneTime:t,parentOpacity:n=1,parentTransform:i}){var s,o,a;const l=e.sceneCanvas.getContext("2d");if(l){l.save(),l.setTransform(i);const c=(r.element.animations??[]).reduce((d,f)=>(d[f.type]||(d[f.type]=[]),d[f.type].push(f),d),{});let u=((s=r.element.layout)==null?void 0:s.opacity)??1,h={x:0,y:0};for(const d of Object.keys(c)){const f=c[d].reduce((I,T)=>(T.start<=t&&(I=T),I),null),g=f?c[d].indexOf(f):-1,p=c[d][g+1];f?(Fa(f)&&(u=f.to),ka(f)&&(h={x:f.to.x,y:f.to.y})):p&&(Fa(p)&&(u=p.from),ka(p)&&(h={x:p.from.x,y:p.from.y}));for(const I of c[d]){const{start:T,duration:Q}=I;if(t>=T&&t<T+Q){if(Fa(I)){const{from:C,to:x,easing:S}=I;u=Da([T,T+Q],[C,x],{ease:S})(t)}if(ka(I)){const{from:C,to:x,easing:S}=I;h=Da([T,T+Q],[C,x],{ease:S})(t)}}}}l.globalAlpha=u*n,l.translate(h.x,h.y),await((a=(o=r.renderer)==null?void 0:o.render)==null?void 0:a.call(o,{canvases:e,sceneTime:t,dx:r.x,dy:r.y,dw:r.width,dh:r.height,radius:r.radius,options:r.options,dependencies:r.dependencies}));for await(const d of r.childNodes)await ku({node:d,canvases:e,sceneTime:t,parentOpacity:l.globalAlpha,parentTransform:l.getTransform()});l.restore()}}async function fI({layout:r,canvases:e,sceneTime:t}){const{node:n}=r;await ku({node:n,canvases:e,sceneTime:t})}async function ks({scene:r,start:e=0,resolvers:t,rootWidth:n,rootHeight:i,canvasFactory:s=Du}){var o,a;const{id:l,x:A,y:c,width:u,height:h,root:d,duration:f}=r,g=s(),p=s(),I=s(),T=s(),Q=s(),C=await Cu({id:l,root:{...d,layout:{...d.layout,width:n,height:i},element:{...d.element,layout:{...d.element.layout,...typeof A=="number"&&typeof c=="number"?{position:"absolute",inset:{top:c,left:A}}:{},width:u??((o=d.element.layout)==null?void 0:o.width),height:h??((a=d.element.layout)==null?void 0:a.height)}}},resolvers:t,measureCanvas:Q}),x=async S=>{const D=Math.max(0,S-e);g.width=g.height=0,g.width=n,g.height=i,await fI({layout:C,sceneTime:D,canvases:{sceneCanvas:g,cropCanvas:p,letterboxCanvas:I,posterCanvas:T}})};return{id:l,type:r.type,start:e,duration:f,layout:C,sceneCanvas:g,draw:x,config:r,childScenes:Fu({node:C.node,duration:f})}}async function gI({track:r,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}){const s=Fs(r),o=await Promise.all(r.reduce((c,u,h)=>{const d=Vt(s.slice(0,h));return u.type==="caption"&&c.push(ks({scene:u,start:d,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i})),c},[])),a=r.reduce((c,u,h)=>{if(u.type!=="gap")return c;const d=Vt(s.slice(0,h));return c.push({type:u.type,id:u.id,start:d,config:u,duration:u.duration}),c},[]),l=r.reduce((c,u,h)=>{if(u.type!=="transition")return c;const d=u.duration,f=Vt(s.slice(0,h))-d;return c.push({type:u.type,id:u.id,name:u.name,start:f,duration:d,config:u,transitionCanvas:i(),to:o.find(({id:g})=>{var p;return g===((p=r[h+1])==null?void 0:p.id)}),from:o.find(({id:g})=>{var p;return g===((p=r[h-1])==null?void 0:p.id)})}),c},[]),A=r.map(({id:c})=>o.find(({id:u})=>u===c)??a.find(({id:u})=>u===c)??l.find(({id:u})=>u===c)).filter(Boolean);return{type:"caption",scenes:o,gapScenes:a,transitions:l,mergedScenes:A,duration:Math.max(...A.map(({start:c,duration:u})=>c+u)),trackCanvas:i()}}async function pI({track:r,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}){const s=Fs(r),o=await Promise.all(r.reduce((c,u,h)=>{const d=Vt(s.slice(0,h));return u.type==="video"&&c.push(ks({scene:u,start:d,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i})),u.type==="image"&&c.push(ks({scene:u,start:d,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i})),c},[])),a=r.reduce((c,u,h)=>{if(u.type!=="gap")return c;const d=Vt(s.slice(0,h));return c.push({type:u.type,id:u.id,start:d,config:u,duration:u.duration}),c},[]),l=r.reduce((c,u,h)=>{if(u.type!=="transition")return c;const d=u.duration,f=Vt(s.slice(0,h))-d;return c.push({type:u.type,id:u.id,name:u.name,start:f,duration:d,config:u,transitionCanvas:i(),to:o.find(({id:g})=>{var p;return g===((p=r[h+1])==null?void 0:p.id)}),from:o.find(({id:g})=>{var p;return g===((p=r[h-1])==null?void 0:p.id)})}),c},[]),A=r.map(({id:c})=>o.find(({id:u})=>u===c)??a.find(({id:u})=>u===c)??l.find(({id:u})=>u===c)).filter(Boolean);return{type:"picture",scenes:o,gapScenes:a,transitions:l,mergedScenes:A,duration:Math.max(0,...A.map(({start:c,duration:u})=>c+u)),trackCanvas:i()}}async function mI({track:r,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}){const s=Fs(r),o=await Promise.all(r.reduce((c,u,h)=>{const d=Vt(s.slice(0,h));return u.type==="text"&&c.push(ks({scene:u,start:d,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i})),c},[])),a=r.reduce((c,u,h)=>{if(u.type!=="gap")return c;const d=Vt(s.slice(0,h));return c.push({type:u.type,id:u.id,start:d,config:u,duration:u.duration}),c},[]),l=r.reduce((c,u,h)=>{if(u.type!=="transition")return c;const d=u.duration,f=Vt(s.slice(0,h))-d;return c.push({type:u.type,id:u.id,name:u.name,start:f,duration:d,config:u,transitionCanvas:i(),to:o.find(({id:g})=>{var p;return g===((p=r[h+1])==null?void 0:p.id)}),from:o.find(({id:g})=>{var p;return g===((p=r[h-1])==null?void 0:p.id)})}),c},[]),A=r.map(({id:c})=>o.find(({id:u})=>u===c)??a.find(({id:u})=>u===c)??l.find(({id:u})=>u===c)).filter(Boolean);return{type:"text",scenes:o,gapScenes:a,transitions:l,mergedScenes:A,duration:Math.max(...A.map(({start:c,duration:u})=>c+u)),trackCanvas:i()}}function EI(r){return r.some(({type:e})=>e==="text")}function II(r){return r.some(({type:e})=>e==="caption")}function CI(r){return r.some(({type:e})=>e==="audio")}function vI(r){return r.some(({type:e})=>e==="video"||e==="image")}function yI(r){return r.type==="audio"}const BI=(((fu=du)==null?void 0:fu.default)??du).reduce((r,e)=>(r[e.name]=e,r),{});function TI(r,e){return r.has(e)||r.set(e,{buffer:null,transitions:{},fromTexture:null,toTexture:null}),r.get(e)}function bI({name:r,to:e,from:t,progress:n,width:i,height:s,glContext:o,contextResources:a,returnPixels:l=!0}){var A,c,u;const h=TI(a,o);if(o.disable(o.DEPTH_TEST),h.buffer?o.bindBuffer(o.ARRAY_BUFFER,h.buffer):(h.buffer=o.createBuffer(),o.bindBuffer(o.ARRAY_BUFFER,h.buffer),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,-1,4,4,-1]),o.STATIC_DRAW)),o.viewport(0,0,i,s),h.fromTexture?h.fromTexture.setPixels(t):(h.fromTexture=(((A=xs)==null?void 0:A.default)??xs)(o,t),h.fromTexture.minFilter=o.LINEAR,h.fromTexture.magFilter=o.LINEAR),h.toTexture?h.toTexture.setPixels(e):(h.toTexture=(((c=xs)==null?void 0:c.default)??xs)(o,e),h.toTexture.minFilter=o.LINEAR,h.toTexture.magFilter=o.LINEAR),h.transitions[r]||(h.transitions[r]=(((u=hu)==null?void 0:u.default)??hu)(o,BI[r])),h.transitions[r].draw(n,h.fromTexture,h.toTexture,i,s),!l)return o.flush(),new Uint8Array(0);const f=new Uint8Array(i*s*4);return o.readPixels(0,0,i,s,o.RGBA,o.UNSIGNED_BYTE,f),o.flush(),f}function QI(r){for(const[e,t]of r.entries())t.buffer&&e.deleteBuffer(t.buffer),t.fromTexture&&t.fromTexture.dispose(),t.toTexture&&t.toTexture.dispose(),Object.values(t.transitions).forEach(n=>{n.dispose()}),r.delete(e)}function xI({name:r,to:e,from:t,progress:n,canvas:i,contextResources:s}){const o=i.getContext("webgl",{alpha:!0,depth:!1,antialias:!1,preserveDrawingBuffer:!1});o&&(o.pixelStorei(o.UNPACK_FLIP_Y_WEBGL,!0),bI({name:r,to:e,from:t,progress:n,width:i.width,height:i.height,glContext:o,contextResources:s,returnPixels:!1}))}async function Mu({config:r,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i=Du,drawTransition:s=xI}){const o=new Map,a=await Promise.all(r.tracks.map(async c=>{if(vI(c))return{...await pI({track:c,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}),config:c};if(EI(c))return{...await mI({track:c,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}),config:c};if(II(c))return{...await gI({track:c,resolvers:e,rootWidth:t,rootHeight:n,canvasFactory:i}),config:c};if(CI(c))return{...await dI({track:c}),config:c};throw new Error("Unknown track type")}));return{draw:async({canvas:c,currentTime:u})=>{const h=c.getContext("2d");if(h){h.globalAlpha=1,h.globalCompositeOperation="source-over",h.clearRect(0,0,c.width,c.height),h.save(),h.fillStyle="black",h.fillRect(0,0,c.width,c.height),h.restore();for await(const d of a){if(yI(d))continue;const{scenes:f,transitions:g,trackCanvas:p}=d;p.width=p.height=0,p.width=c.width,p.height=c.height;const I=p.getContext("2d"),T=f.filter(({start:C,duration:x})=>u>=C&&u<C+x);if(!I||T.length<=0)continue;const Q=g.find(({start:C,duration:x})=>u>=C&&u<C+x);for await(const{sceneCanvas:C,draw:x}of T)await(x==null?void 0:x(u)),(!Q||Q&&(!Q.to||!Q.from))&&I.drawImage(C,0,0,C.width,C.height);if(Q&&Q.to&&Q.from){const{name:C,to:x,from:S,duration:D,transitionCanvas:P}=Q;P.width=P.height=0,P.width=p.width,P.height=p.height;const K=Math.min(1,Math.max(0,(u-x.start)/D));await s({name:C,progress:K,contextResources:o,to:x.sceneCanvas,from:S.sceneCanvas,canvas:P}),I.globalCompositeOperation="lighter",I.drawImage(P,0,0,P.width,P.height)}h.drawImage(p,0,0,p.width,p.height)}}},cleanup:()=>{QI(o)},tracks:a,aspectRatio:r.aspectRatio,duration:Math.max(...a.map(({duration:c})=>c))}}const wI={name:"@vouchfor/embeds",version:"4.3.3",license:"MIT",author:"Aaron Williams",main:"dist/es/embeds.js",module:"dist/es/embeds.js",type:"module",types:"dist/es/src/index.d.ts",exports:{".":"./dist/es/embeds.js"},files:["dist","src"],publishConfig:{tag:"latest",access:"public"},engines:{node:">=18.18.0"},scripts:{build:"rm -rf dist && tsc && yarn build:self","build:deps":"yarn --cwd ../media-player build","build:self":"vite build --mode iife && vite build --mode es && node scripts/build.cjs","build:package":"yarn build","build:storybook":"yarn prebuild && storybook build","generate:manifest":"wca src --outFile custom-elements.json",lint:"eslint . --quiet","lint:fix":"eslint . --fix","lint:staged":"lint-staged",prepublishOnly:"yarn build",size:"size-limit",storybook:"yarn prebuild && storybook dev -p 6007",prebuild:"yarn build:deps && yarn generate:manifest",test:"rm -rf test/lib && yarn prebuild && vite build --mode test && web-test-runner","test:ci":"yarn test --config web-test-runner.ci.config.js","test:watch":"yarn test --watch",typecheck:"tsc --noEmit"},"lint-staged":{"**/*.{ts,tsx,js}":"eslint --fix --quiet","**/*.{md,json,yml}":"prettier --write"},dependencies:{"@a11y/focus-trap":"^1.0.5","@lit/task":"^1.0.0","@vouchfor/canvas-video":"^9.3.3","@vouchfor/media-player":"^5.3.3",uuid:"^9.0.1"},peerDependencies:{lit:"^3.1.2"},devDependencies:{"@esm-bundle/chai":"^4.3.4-fix.0","@open-wc/testing":"^4.0.0","@storybook/addon-essentials":"^8.5.8","@storybook/addon-links":"^8.5.8","@storybook/blocks":"^8.5.8","@storybook/web-components":"^8.5.8","@storybook/web-components-vite":"^8.5.8","@svgr/core":"^8.1.0","@types/flat":"^5.0.5","@types/mocha":"^10.0.6","@vouchfor/eslint-config":"^1.0.1","@vouchfor/prettier-config":"^1.0.1","@vouchfor/video-utils":"^2.3.3","@web/dev-server-esbuild":"^1.0.2","@web/test-runner":"^0.18.1","@web/test-runner-browserstack":"^0.7.1","@web/test-runner-mocha":"^0.9.0","@web/test-runner-playwright":"^0.11.0",glob:"^10.3.10","lint-staged":"^15.2.2",lit:"^3.1.2",lodash:"^4.17.21",react:"^18.2.0","react-dom":"^18.2.0","rollup-plugin-tla":"^0.0.2",sinon:"^17.0.1",storybook:"^8.5.8",svgson:"^5.3.1",typescript:"^5.4.3",vite:"^5.2.2","vite-plugin-commonjs":"^0.10.1","vite-plugin-dts":"^3.7.3","web-component-analyzer":"^2.0.0"}};function SI(r){const{publicApiUrl:e}=is(r),t=Gr();return navigator.sendBeacon(`${e}/api/visitor`,JSON.stringify({visitorId:t})),t}function RI(r){var s,o,a,l,A,c,u,h,d,f,g,p;if(typeof window>"u")return{client:null,tab:null,request:Gr()};let e=(o=(s=window.localStorage)==null?void 0:s.getItem)==null?void 0:o.call(s,"vouch-uid-visitor"),t=(l=(a=window.localStorage)==null?void 0:a.getItem)==null?void 0:l.call(a,"vouch-uid-client"),n=(c=(A=window.sessionStorage)==null?void 0:A.getItem)==null?void 0:c.call(A,"vouch-uid-tab");const i=Gr();return e||(e=SI(r),(h=(u=window.localStorage)==null?void 0:u.setItem)==null||h.call(u,"vouch-uid-visitor",e)),t||(t=Gr(),(f=(d=window.localStorage)==null?void 0:d.setItem)==null||f.call(d,"vouch-uid-client",t)),n||(n=Gr(),(p=(g=window.sessionStorage)==null?void 0:g.setItem)==null||p.call(g,"vouch-uid-tab",n)),{client:t,tab:n,request:i,visitor:e}}function DI(r,e){return r&&"vouchId"in r?r.vouchId:(e==null?void 0:e.id)??null}function _I(r="embedded_player"){var i,s;const[e,t]=((s=(i=Intl.DateTimeFormat().resolvedOptions().timeZone)==null?void 0:i.split)==null?void 0:s.call(i,"/"))??[],n={};return[...new URLSearchParams(location.search).entries()].forEach(([o,a])=>{if(/utm/.test(o)){const l=o.toLowerCase().replace(/[-_][a-z0-9]/g,A=>A.slice(-1).toUpperCase());n[l]=a}}),{source:r,time:new Date,region:t,country:e,screenHeight:window.screen.height,screenWidth:window.screen.width,referrer:document.referrer,currentUrl:location.href,embedType:"media-player-embed",embedVersion:wI.version,templateVersion:uI,...n}}const Nu=1;class LI{constructor(e){this._batchedEvents=[],this._hasPlayed=!1,this._hasLoaded={},this._answersViewed={},this._streamStartTime={},this._streamLatestTime={},this._currentlyPlayingVideo=null,this._createTrackingEvent=(t,n)=>{const i=DI(n,this.host.vouch);!i||this.host.disableTracking||this._batchedEvents.push({event:t,payload:{...n,vouchId:i,time:new Date().toISOString()}})},this._sendTrackingEvent=()=>{if(this._batchedEvents.length<=0)return;const{publicApiUrl:t}=is(this.host.env),{client:n,tab:i,request:s,visitor:o}=RI(this.host.env);navigator.sendBeacon(`${t}/api/batchevents`,JSON.stringify({payload:{events:this._batchedEvents},context:{"x-uid-client":n,"x-uid-tab":i,"x-uid-request":s,"x-uid-visitor":o,"x-reporting-metadata":_I(this.host.trackingSource)}})),this._batchedEvents=[]},this._streamEnded=()=>{if(this._currentlyPlayingVideo){const{id:t,key:n}=this._currentlyPlayingVideo;this._streamLatestTime[n]>this._streamStartTime[n]+Nu&&this._createTrackingEvent("VIDEO_STREAMED",{answerId:t,streamStart:this._streamStartTime[n],streamEnd:this._streamLatestTime[n]}),delete this._streamStartTime[n],delete this._streamLatestTime[n]}},this._handleVouchLoaded=({detail:t})=>{t&&(this._hasLoaded[t]||(this._createTrackingEvent("VOUCH_LOADED",{vouchId:t}),this._hasLoaded[t]=!0))},this._handlePlay=()=>{this._hasPlayed||(this._createTrackingEvent("VIDEO_PLAYED",{streamStart:this.host.currentTime}),this._hasPlayed=!0)},this._handleVideoPlay=({detail:{id:t,key:n}})=>{this._answersViewed[n]||(this._createTrackingEvent("VOUCH_RESPONSE_VIEWED",{answerId:t}),this._answersViewed[n]=!0)},this._handleVideoTimeUpdate=({detail:{id:t,key:n,node:i}})=>{this.host.paused||(this._currentlyPlayingVideo={id:t,key:n,node:i},this._streamLatestTime[n]=i.currentTime,this._streamStartTime[n]||(this._streamStartTime[n]=i.currentTime,this._streamLatestTime[n]=i.currentTime))},this._handleVideoPause=({detail:{id:t,key:n}})=>{this._streamLatestTime[n]>this._streamStartTime[n]+Nu&&this._createTrackingEvent("VIDEO_STREAMED",{answerId:t,streamStart:this._streamStartTime[n],streamEnd:this._streamLatestTime[n]}),delete this._streamStartTime[n],delete this._streamLatestTime[n]},this._pageUnloading=()=>{this._streamEnded(),this._sendTrackingEvent()},this._handleVisibilityChange=()=>{document.visibilityState==="hidden"&&this._pageUnloading()},this._handlePageHide=()=>{this._pageUnloading()},this.host=e,e.addController(this)}hostConnected(){requestAnimationFrame(()=>{var e,t,n,i;"onvisibilitychange"in document?document.addEventListener("visibilitychange",this._handleVisibilityChange):window.addEventListener("pagehide",this._handlePageHide),this.host.addEventListener("vouch:loaded",this._handleVouchLoaded),(e=this.host.mediaPlayer)==null||e.addEventListener("play",this._handlePlay),(t=this.host.mediaPlayer)==null||t.addEventListener("video:play",this._handleVideoPlay),(n=this.host.mediaPlayer)==null||n.addEventListener("video:pause",this._handleVideoPause),(i=this.host.mediaPlayer)==null||i.addEventListener("video:timeupdate",this._handleVideoTimeUpdate)})}hostDisconnected(){var e,t,n,i;this._pageUnloading(),"onvisibilitychange"in document?document.removeEventListener("visibilitychange",this._handleVisibilityChange):window.removeEventListener("pagehide",this._handlePageHide),this.host.removeEventListener("vouch:loaded",this._handleVouchLoaded),(e=this.host.mediaPlayer)==null||e.removeEventListener("play",this._handlePlay),(t=this.host.mediaPlayer)==null||t.removeEventListener("video:play",this._handleVideoPlay),(n=this.host.mediaPlayer)==null||n.removeEventListener("video:pause",this._handleVideoPause),(i=this.host.mediaPlayer)==null||i.removeEventListener("video:timeupdate",this._handleVideoTimeUpdate)}}var Ma={exports:{}};(function(r,e){var t=typeof globalThis<"u"&&globalThis||typeof self<"u"&&self||typeof wn<"u"&&wn,n=function(){function s(){this.fetch=!1,this.DOMException=t.DOMException}return s.prototype=t,new s}();(function(s){(function(o){var a=typeof s<"u"&&s||typeof self<"u"&&self||typeof a<"u"&&a,l={searchParams:"URLSearchParams"in a,iterable:"Symbol"in a&&"iterator"in Symbol,blob:"FileReader"in a&&"Blob"in a&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in a,arrayBuffer:"ArrayBuffer"in a};function A(_){return _&&DataView.prototype.isPrototypeOf(_)}if(l.arrayBuffer)var c=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(_){return _&&c.indexOf(Object.prototype.toString.call(_))>-1};function h(_){if(typeof _!="string"&&(_=String(_)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(_)||_==="")throw new TypeError('Invalid character in header field name: "'+_+'"');return _.toLowerCase()}function d(_){return typeof _!="string"&&(_=String(_)),_}function f(_){var U={next:function(){var z=_.shift();return{done:z===void 0,value:z}}};return l.iterable&&(U[Symbol.iterator]=function(){return U}),U}function g(_){this.map={},_ instanceof g?_.forEach(function(U,z){this.append(z,U)},this):Array.isArray(_)?_.forEach(function(U){this.append(U[0],U[1])},this):_&&Object.getOwnPropertyNames(_).forEach(function(U){this.append(U,_[U])},this)}g.prototype.append=function(_,U){_=h(_),U=d(U);var z=this.map[_];this.map[_]=z?z+", "+U:U},g.prototype.delete=function(_){delete this.map[h(_)]},g.prototype.get=function(_){return _=h(_),this.has(_)?this.map[_]:null},g.prototype.has=function(_){return this.map.hasOwnProperty(h(_))},g.prototype.set=function(_,U){this.map[h(_)]=d(U)},g.prototype.forEach=function(_,U){for(var z in this.map)this.map.hasOwnProperty(z)&&_.call(U,this.map[z],z,this)},g.prototype.keys=function(){var _=[];return this.forEach(function(U,z){_.push(z)}),f(_)},g.prototype.values=function(){var _=[];return this.forEach(function(U){_.push(U)}),f(_)},g.prototype.entries=function(){var _=[];return this.forEach(function(U,z){_.push([z,U])}),f(_)},l.iterable&&(g.prototype[Symbol.iterator]=g.prototype.entries);function p(_){if(_.bodyUsed)return Promise.reject(new TypeError("Already read"));_.bodyUsed=!0}function I(_){return new Promise(function(U,z){_.onload=function(){U(_.result)},_.onerror=function(){z(_.error)}})}function T(_){var U=new FileReader,z=I(U);return U.readAsArrayBuffer(_),z}function Q(_){var U=new FileReader,z=I(U);return U.readAsText(_),z}function C(_){for(var U=new Uint8Array(_),z=new Array(U.length),L=0;L<U.length;L++)z[L]=String.fromCharCode(U[L]);return z.join("")}function x(_){if(_.slice)return _.slice(0);var U=new Uint8Array(_.byteLength);return U.set(new Uint8Array(_)),U.buffer}function S(){return this.bodyUsed=!1,this._initBody=function(_){this.bodyUsed=this.bodyUsed,this._bodyInit=_,_?typeof _=="string"?this._bodyText=_:l.blob&&Blob.prototype.isPrototypeOf(_)?this._bodyBlob=_:l.formData&&FormData.prototype.isPrototypeOf(_)?this._bodyFormData=_:l.searchParams&&URLSearchParams.prototype.isPrototypeOf(_)?this._bodyText=_.toString():l.arrayBuffer&&l.blob&&A(_)?(this._bodyArrayBuffer=x(_.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):l.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(_)||u(_))?this._bodyArrayBuffer=x(_):this._bodyText=_=Object.prototype.toString.call(_):this._bodyText="",this.headers.get("content-type")||(typeof _=="string"?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):l.searchParams&&URLSearchParams.prototype.isPrototypeOf(_)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},l.blob&&(this.blob=function(){var _=p(this);if(_)return _;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){if(this._bodyArrayBuffer){var _=p(this);return _||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}else return this.blob().then(T)}),this.text=function(){var _=p(this);if(_)return _;if(this._bodyBlob)return Q(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(C(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},l.formData&&(this.formData=function(){return this.text().then(O)}),this.json=function(){return this.text().then(JSON.parse)},this}var D=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function P(_){var U=_.toUpperCase();return D.indexOf(U)>-1?U:_}function K(_,U){if(!(this instanceof K))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');U=U||{};var z=U.body;if(_ instanceof K){if(_.bodyUsed)throw new TypeError("Already read");this.url=_.url,this.credentials=_.credentials,U.headers||(this.headers=new g(_.headers)),this.method=_.method,this.mode=_.mode,this.signal=_.signal,!z&&_._bodyInit!=null&&(z=_._bodyInit,_.bodyUsed=!0)}else this.url=String(_);if(this.credentials=U.credentials||this.credentials||"same-origin",(U.headers||!this.headers)&&(this.headers=new g(U.headers)),this.method=P(U.method||this.method||"GET"),this.mode=U.mode||this.mode||null,this.signal=U.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&z)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(z),(this.method==="GET"||this.method==="HEAD")&&(U.cache==="no-store"||U.cache==="no-cache")){var L=/([?&])_=[^&]*/;if(L.test(this.url))this.url=this.url.replace(L,"$1_="+new Date().getTime());else{var R=/\?/;this.url+=(R.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}K.prototype.clone=function(){return new K(this,{body:this._bodyInit})};function O(_){var U=new FormData;return _.trim().split("&").forEach(function(z){if(z){var L=z.split("="),R=L.shift().replace(/\+/g," "),F=L.join("=").replace(/\+/g," ");U.append(decodeURIComponent(R),decodeURIComponent(F))}}),U}function q(_){var U=new g,z=_.replace(/\r?\n[\t ]+/g," ");return z.split("\r").map(function(L){return L.indexOf(`
2455
2455
  `)===0?L.substr(1,L.length):L}).forEach(function(L){var R=L.split(":"),F=R.shift().trim();if(F){var J=R.join(":").trim();U.append(F,J)}}),U}S.call(K.prototype);function re(_,U){if(!(this instanceof re))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');U||(U={}),this.type="default",this.status=U.status===void 0?200:U.status,this.ok=this.status>=200&&this.status<300,this.statusText=U.statusText===void 0?"":""+U.statusText,this.headers=new g(U.headers),this.url=U.url||"",this._initBody(_)}S.call(re.prototype),re.prototype.clone=function(){return new re(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new g(this.headers),url:this.url})},re.error=function(){var _=new re(null,{status:0,statusText:""});return _.type="error",_};var ee=[301,302,303,307,308];re.redirect=function(_,U){if(ee.indexOf(U)===-1)throw new RangeError("Invalid status code");return new re(null,{status:U,headers:{location:_}})},o.DOMException=a.DOMException;try{new o.DOMException}catch{o.DOMException=function(U,z){this.message=U,this.name=z;var L=Error(U);this.stack=L.stack},o.DOMException.prototype=Object.create(Error.prototype),o.DOMException.prototype.constructor=o.DOMException}function ce(_,U){return new Promise(function(z,L){var R=new K(_,U);if(R.signal&&R.signal.aborted)return L(new o.DOMException("Aborted","AbortError"));var F=new XMLHttpRequest;function J(){F.abort()}F.onload=function(){var ie={status:F.status,statusText:F.statusText,headers:q(F.getAllResponseHeaders()||"")};ie.url="responseURL"in F?F.responseURL:ie.headers.get("X-Request-URL");var se="response"in F?F.response:F.responseText;setTimeout(function(){z(new re(se,ie))},0)},F.onerror=function(){setTimeout(function(){L(new TypeError("Network request failed"))},0)},F.ontimeout=function(){setTimeout(function(){L(new TypeError("Network request failed"))},0)},F.onabort=function(){setTimeout(function(){L(new o.DOMException("Aborted","AbortError"))},0)};function $(ie){try{return ie===""&&a.location.href?a.location.href:ie}catch{return ie}}F.open(R.method,$(R.url),!0),R.credentials==="include"?F.withCredentials=!0:R.credentials==="omit"&&(F.withCredentials=!1),"responseType"in F&&(l.blob?F.responseType="blob":l.arrayBuffer&&R.headers.get("Content-Type")&&R.headers.get("Content-Type").indexOf("application/octet-stream")!==-1&&(F.responseType="arraybuffer")),U&&typeof U.headers=="object"&&!(U.headers instanceof g)?Object.getOwnPropertyNames(U.headers).forEach(function(ie){F.setRequestHeader(ie,d(U.headers[ie]))}):R.headers.forEach(function(ie,se){F.setRequestHeader(se,ie)}),R.signal&&(R.signal.addEventListener("abort",J),F.onreadystatechange=function(){F.readyState===4&&R.signal.removeEventListener("abort",J)}),F.send(typeof R._bodyInit>"u"?null:R._bodyInit)})}return ce.polyfill=!0,a.fetch||(a.fetch=ce,a.Headers=g,a.Request=K,a.Response=re),o.Headers=g,o.Request=K,o.Response=re,o.fetch=ce,o})({})})(n),n.fetch.ponyfill=!0,delete n.fetch.polyfill;var i=t.fetch?t:n;e=i.fetch,e.default=i.fetch,e.fetch=i.fetch,e.Headers=i.Headers,e.Request=i.Request,e.Response=i.Response,r.exports=e})(Ma,Ma.exports);var FI=Ma.exports;const Pu=Ho(FI);async function kI(r){var e;try{if((e=await Pu(r,{method:"HEAD"}))!=null&&e.ok)return r}catch{return}}async function Na({sources:r}){let e=null;const t=r==null?void 0:r.filter(Boolean),n=t==null?void 0:t.find(s=>s.startsWith("blob:")),i=t==null?void 0:t.find(s=>!s.startsWith("http")&&!s.startsWith("blob:"));if(n||i)return n??i;if(t.length>0){const s=t.map(o=>kI(o));e=(await Promise.all(s)).find(Boolean)}return e}async function MI(r){try{return(await Pu(r)).text()}catch{return null}}async function NI(r){return r=r.trim(),r.startsWith("http")||r.startsWith("blob:")?MI(r):r}const PI=Hr(async({original:r,translation:e,originalLanguage:t="",translationLanguage:n=""},{language:i})=>{var s,o;const a={[(s=n==null?void 0:n.split("-"))==null?void 0:s[0]]:e,[(o=t==null?void 0:t.split("-"))==null?void 0:o[0]]:r},l=(i&&a[i])??r;return l?NI(l):null},{cacheKey:([r,{language:e}])=>JSON.stringify({...r,language:e})});function OI(r){var e;return((e=r==null?void 0:r.items)==null?void 0:e.map(t=>{var n;return{text:(n=t.alternatives[0])==null?void 0:n.content,start:t.start_time,end:t.end_time}}))??[]}const UI=Hr(async r=>{var e,t,n,i,s,o,a,l,A,c,u;const[h,d,f]=await Promise.all([Na({sources:[(t=(e=r==null?void 0:r.answer)==null?void 0:e.media)==null?void 0:t.video,(i=(n=r==null?void 0:r.answer)==null?void 0:n.media)==null?void 0:i.input]}),Na({sources:[(o=(s=r==null?void 0:r.answer)==null?void 0:s.media)==null?void 0:o.playlist]}),Na({sources:[((l=(a=r==null?void 0:r.answer)==null?void 0:a.media)==null?void 0:l.reducedQuality)??((u=(c=(A=r==null?void 0:r.answer)==null?void 0:A.media)==null?void 0:c.videos)==null?void 0:u.xs)]})]);return{src:h,playlist:d,preview:f}},{cacheKey:([r])=>{var e,t,n,i,s,o,a,l,A,c,u;return JSON.stringify({video:(t=(e=r==null?void 0:r.answer)==null?void 0:e.media)==null?void 0:t.video,input:(i=(n=r==null?void 0:r.answer)==null?void 0:n.media)==null?void 0:i.input,playlist:(o=(s=r==null?void 0:r.answer)==null?void 0:s.media)==null?void 0:o.playlist,preview:((l=(a=r==null?void 0:r.answer)==null?void 0:a.media)==null?void 0:l.reducedQuality)??((u=(c=(A=r==null?void 0:r.answer)==null?void 0:A.media)==null?void 0:c.videos)==null?void 0:u.xs)})}});function Ou(r){var e,t,n,i,s,o,a,l,A,c,u,h;const d=((t=(e=r==null?void 0:r.answer)==null?void 0:e.contact)==null?void 0:t.name)==="Anonymous"?"":((s=(i=(n=r==null?void 0:r.answer)==null?void 0:n.contact)==null?void 0:i.name)==null?void 0:s.trim())??"",f=((l=(a=(o=r==null?void 0:r.answer)==null?void 0:o.contact)==null?void 0:a.client)==null?void 0:l.name)==="Not Supplied"?"":((h=(u=(c=(A=r==null?void 0:r.answer)==null?void 0:A.contact)==null?void 0:c.client)==null?void 0:u.name)==null?void 0:h.trim())??"",[g,p]=d.split(" ");return{name:d,firstName:g,lastName:p,companyName:f}}const GI=Hr(async(r,e,t)=>{var n,i,s;const o=(n=e==null?void 0:e.answer)==null?void 0:n.id;return((s=(i=r==null?void 0:r.questions)==null?void 0:i.items)==null?void 0:s.reduce((l,A)=>{var c;return((c=A==null?void 0:A.answer)==null?void 0:c.id)===o?(l??0)+1:l},0))<=1?o:`${o}-${t}`},{cacheKey:([r,e,t])=>{var n;return JSON.stringify({index:t,rootData:e,allQuestions:(n=r==null?void 0:r.questions)==null?void 0:n.items})}});async function Pa({data:r,rootData:e,index:t},n){var i,s,o,a,l,A,c,u,h,d,f,g,p,I,T,Q,C,x,S,D,P,K,O,q;const[re,ee,ce]=await Promise.all([GI(r,e,t),UI(e),PI({original:((s=(i=e==null?void 0:e.answer)==null?void 0:i.media)==null?void 0:s.captions)??((a=(o=e==null?void 0:e.answer)==null?void 0:o.captions)==null?void 0:a.current),translation:((A=(l=e==null?void 0:e.answer)==null?void 0:l.media)==null?void 0:A.translation)??((u=(c=e==null?void 0:e.answer)==null?void 0:c.captions)==null?void 0:u.translation),originalLanguage:(d=(h=e==null?void 0:e.answer)==null?void 0:h.transcription)==null?void 0:d.language,translationLanguage:(p=(g=(f=e==null?void 0:e.answer)==null?void 0:f.transcription)==null?void 0:g.translation)==null?void 0:p.language},n)]),_=Ou(e);return{...ee,..._,key:re,captions:ce,wordTimings:OI((I=e==null?void 0:e.answer)==null?void 0:I.transcription),answerLabel:((T=e==null?void 0:e.answer)==null?void 0:T.label)??(e==null?void 0:e.title),prevAnswerLabel:t?((S=(x=(C=(Q=r==null?void 0:r.questions)==null?void 0:Q.items)==null?void 0:C[t-1])==null?void 0:x.answer)==null?void 0:S.label)??((K=(P=(D=r==null?void 0:r.questions)==null?void 0:D.items)==null?void 0:P[t-1])==null?void 0:K.title)??null:null,isFirstInstanceOfName:t?((q=(O=r==null?void 0:r.questions)==null?void 0:O.items)==null?void 0:q.findIndex(U=>Ou(U).name===_.name))===t:!0}}const Ms={af:"Afrikaans",sq:"Albanian",am:"Amharic",ar:"Arabic",hy:"Armenian",az:"Azerbaijani",eu:"Basque",be:"Belarusian",bn:"Bengali",bs:"Bosnian",bg:"Bulgarian",ca:"Catalan",zh:"Chinese (Simplified)",zh_TW:"Chinese (Traditional)",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch",en:"English",et:"Estonian",fi:"Finnish",fr:"French",fa:"Farsi",tl:"Filipino",ka:"Georgian",de:"German",el:"Greek",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",he:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",kn:"Kannada",kk:"Kazakh",ko:"Korean",lv:"Latvian",lt:"Lithuanian",mk:"Macedonian",ms:"Malay",ml:"Malayalam",mt:"Maltese",mr:"Marathi",mn:"Mongolian",no:"Norwegian",ps:"Pashto",pl:"Polish",pt:"Portuguese",pa:"Punjabi",ro:"Romanian",ru:"Russian",sr:"Serbian",si:"Sinhala",sk:"Slovak",sl:"Slovenian",so:"Somali",es:"Spanish",sw:"Swahili",sv:"Swedish",ta:"Tamil",te:"Telugu",th:"Thai",tr:"Turkish",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",vi:"Vietnamese",cy:"Welsh"};function HI({data:r}){var e,t;return((t=(e=r==null?void 0:r.questions)==null?void 0:e.items)==null?void 0:t.reduce((n,i)=>{var s,o,a,l,A,c,u;const h=(a=(o=(s=i==null?void 0:i.answer)==null?void 0:s.transcription)==null?void 0:o.language)==null?void 0:a.split("-")[0],d=(u=(c=(A=(l=i==null?void 0:i.answer)==null?void 0:l.transcription)==null?void 0:A.translation)==null?void 0:c.language)==null?void 0:u.split("-")[0];return h&&Ms[h]&&!n.find(f=>f.value===h)&&n.push({value:h,label:Ms[h]}),d&&Ms[d]&&!n.find(f=>f.value===d)&&n.push({value:d,label:Ms[d]}),n},[]))??[]}/**
2456
2456
  * @license
2457
2457
  * Copyright 2018 Google LLC