@pixodesk/svg-animator-web 1.0.24 → 1.0.27

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.
@@ -1 +1 @@
1
- "use strict";var PixodeskAnimator=(()=>{var n=Object.defineProperty,t=Object.defineProperties,o=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyDescriptors,e=Object.getOwnPropertyNames,l=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,u=Object.prototype.propertyIsEnumerable,c=(t,o,r)=>o in t?n(t,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[o]=r,f=(n,t)=>{for(var o in t||(t={}))i.call(t,o)&&c(n,o,t[o]);if(l)for(var o of l(t))u.call(t,o)&&c(n,o,t[o]);return n},s=(n,o)=>t(n,r(o)),a={};((t,o)=>{for(var r in o)n(t,r,{get:o[r],enumerable:!0})})(a,{PX_ANIMATOR_DATA_KEY:()=>Mn,createAnimator:()=>gn,setupAnimationTriggers:()=>pn});var v={waapi:"waapi",frames:"frames"},d={before:"before",after:"after"};function p(n){var t;return(null==n?void 0:n.animator)||(null==(t=null==n?void 0:n.meta)?void 0:t.animator)}function h(n,t,o){return n+(t-n)*o}function m(n,t,o){const r=[],e=Math.max(n.length,t.length);for(let l=0;l<e;l++)r[l]=h(n[l]||0,t[l]||0,o);return r}function b(n,t,o){const r=Math.max(n.length,t.length),e=[];for(let l=0;l<r;l++)e.push(y(n[l],t[l],o));return e}function y(n,t,o){var r,e,l,i,u,c,f,s,a;if(!n||!t)return n||t||{v:[]};const v=Math.min(Math.max(o,0),1),d=Math.min(n.v.length,t.v.length),p=[],h=[],b=[];for(let o=0;o<d;o++){const a=n.v[o],d=t.v[o];p.push(m(a,d,v));const y=null!=(e=null==(r=n.i)?void 0:r[o])?e:a,g=null!=(i=null==(l=t.i)?void 0:l[o])?i:d;h.push(m(y,g,v));const A=null!=(c=null==(u=n.o)?void 0:u[o])?c:a,M=null!=(s=null==(f=t.o)?void 0:f[o])?s:d;b.push(m(A,M,v))}return{v:p,i:h.length?h:void 0,o:b.length?b:void 0,c:null!=(a=n.c)?a:t.c}}function g(n,t,o){if(o<=0)return 0;if(o>=1)return 1;const r=3*n,e=3*(t-n)-r,l=1-r-e;function i(n){return((l*n+e)*n+r)*n}function u(n){return(3*l*n+2*e)*n+r}let c=o,f=0,s=1;for(let n=0;n<8;n++){const n=i(c)-o;if(Math.abs(n)<1e-6)return c;const t=u(c);if(Math.abs(t)<1e-6)break;c-=n/t}for(c=o;f<s;){const n=i(c);if(Math.abs(n-o)<1e-6)return c;o>n?f=c:s=c,c=(s+f)/2}return c}function A(n){const[t,o,r,e]=n,l=3*o,i=3*(e-o)-l,u=1-l-i;return function(n){return o=g(t,r,n),((u*o+i)*o+l)*o;var o}}function M(n,t,o){return[n[0]+(t[0]-n[0])*o,n[1]+(t[1]-n[1])*o]}function w(n,t){if(!n)return{left:void 0,right:void 0};if(t<=0)return{left:void 0,right:n};if(t>=1)return{left:n,right:void 0};const[o,r,e,l]=n,i=g(o,e,t),u=[o,r],c=[e,l],{left:f,right:s}=function(n,t,o,r,e){const l=M(n,t,e),i=M(t,o,e),u=M(o,r,e),c=M(l,i,e),f=M(i,u,e),s=M(c,f,e);return{left:[n,l,c,s],right:[s,f,u,r]}}([0,0],u,c,[1,1],i),a=f[3][0],v=f[3][1];let d,p;a>1e-9&&Math.abs(v)>1e-9&&(d=[f[1][0]/a,f[1][1]/v,f[2][0]/a,f[2][1]/v]);const h=1-a,m=1-v;return h>1e-9&&Math.abs(m)>1e-9&&(p=[(s[1][0]-a)/h,(s[1][1]-v)/m,(s[2][0]-a)/h,(s[2][1]-v)/m]),{left:d,right:p}}function j(n){if(n)return[1-n[2],1-n[3],1-n[0],1-n[1]]}function k(n){if(n){if(Array.isArray(n))return n;if("string"==typeof n)return n.startsWith("#")?function(n){const t=n.slice(1),o=t.length<=4,r=o?t[0]+t[0]:t.slice(0,2),e=o?t[1]+t[1]:t.slice(2,4),l=o?t[2]+t[2]:t.slice(4,6),i=4===t.length?t[3]+t[3]:8===t.length?t.slice(6,8):null,u=[parseInt(r,16)/255,parseInt(e,16)/255,parseInt(l,16)/255];return null!==i&&u.push(parseInt(i,16)/255),u}(n):n.startsWith("rgb")?function(n){var t;const o=null==(t=n.match(/rgba?\((.*)\)/))?void 0:t[1];if(!o)throw new Error("Invalid rgb/rgba format");const r=o.split(",").map(n=>+n.trim());return[r[0]/255,r[1]/255,r[2]/255,...void 0!==r[3]?[r[3]]:[]]}(n):void console.warn("Unsupported color format: "+n)}}var O=new Set(["color","fill","flood-color","lighting-color","stop-color","stroke"]),U=new Set(["translate","rotate","scale","skew"]);function C(n){return!n.includes("-")&&/[a-z][A-Z]/.test(n)}var T=new Set(["viewBox","preserveAspectRatio","gradientUnits","gradientTransform","spreadMethod","patternUnits","patternContentUnits","patternTransform","clipPathUnits","maskUnits","maskContentUnits","markerUnits","markerWidth","markerHeight","refX","refY","textLength","lengthAdjust","startOffset","filterUnits","primitiveUnits","tableValues","stdDeviation","baseFrequency","numOctaves","surfaceScale","diffuseConstant","specularConstant","specularExponent","kernelMatrix","kernelUnitLength","edgeMode","preserveAlpha","targetX","targetY"]);function I(n){return T.has(n)?n:n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}function S(n,t,o){return Math.max(t,Math.min(n,o))}function z(n,t,o,r,e){if(e<=0)return[n[0],n[1]];if(e>=1)return[r[0],r[1]];const l=1-e,i=l*l,u=e*e,c=i*l,f=3*e*i,s=3*u*l,a=u*e;return[c*n[0]+f*t[0]+s*o[0]+a*r[0],c*n[1]+f*t[1]+s*o[1]+a*r[1]]}var L=1e-4;function P(n,t,o,r,e){const l=x(n,t,o,r,e);return 0===l[0]&&0===l[1]?x(n,t,o,r,e<.5?e+L:e-L):l}function x(n,t,o,r,e){const l=1-e,i=3*l*l,u=6*e*l,c=3*e*e;return[i*(t[0]-n[0])+u*(o[0]-t[0])+c*(r[0]-o[0]),i*(t[1]-n[1])+u*(o[1]-t[1])+c*(r[1]-o[1])]}function N(n,t){const{ts:o,ds:r}=n,e=o.length-1;if(t<=o[0])return r[0];if(t>=o[e])return r[e];let l=1,i=e;for(;l<i;){const n=l+i>>>1;o[n]<t?l=n+1:i=n}const u=o[i-1],c=o[i]-u,f=c>0?(t-u)/c:0;return r[i-1]+f*(r[i]-r[i-1])}function _(n){var t;const o=null!=(t=n.value)?t:n.v;if(!o)return;if(Array.isArray(o)&&o.length>=2&&"number"==typeof o[0]&&"number"==typeof o[1])return[o[0],o[1]];const r=o.translate;return Array.isArray(r)&&r.length>=2?[r[0],r[1]]:void 0}function E(n){var t,o;return null!=(o=null!=(t=n.time)?t:n.t)?o:0}function F(n){var t;return null!=(t=n.easing)?t:n.e}var W=new WeakMap;function Z(n,t,o,r){var e,l;let i=W.get(n);const u=null==i?void 0:i.get(t);if(u)return u;const c=null!=(e=n.tangentOut)?e:n.to,f=null!=(l=t.tangentIn)?l:t.ti,s=[o[0]+(c?c[0]:0),o[1]+(c?c[1]:0)],a=[r[0]+(f?f[0]:0),r[1]+(f?f[1]:0)],v=function(n,t,o,r,e=100){const l=e+1,i=new Float64Array(l),u=new Float64Array(l);let c=z(n,t,o,r,0);i[0]=0,u[0]=0;let f=0;for(let s=1;s<l;s++){const l=s/e,a=z(n,t,o,r,l),v=a[0]-c[0],d=a[1]-c[1];f+=Math.sqrt(v*v+d*d),i[s]=l,u[s]=f,c=a}return{ts:i,ds:u}}(o,s,a,r),d={P0:o,P1:s,P2:a,P3:r,l:v,h:v.ds[v.ds.length-1]};return i||(i=new WeakMap,W.set(n,i)),i.set(t,d),d}var R=.5,V=5,X=32;function q(n,t){var o,r,e,l;if(!function(n){var t,o,r;const e=null!=(t=n.keyframes)?t:n.kfs;if(!Array.isArray(e))return!1;if(n.autoOrient)return!0;for(const n of e)if((null!=(o=n.tangentIn)?o:n.ti)||(null!=(r=n.tangentOut)?r:n.to))return!0;return!1}(n))return n;const i=null!=(o=n.keyframes)?o:n.kfs;if(!Array.isArray(i)||i.length<2)return n;const u=!!n.autoOrient,c=null!=(r=null==t?void 0:t.m)?r:R,f=null!=(e=null==t?void 0:t.A)?e:V,s=null!=(l=null==t?void 0:t.M)?l:X,a=[],v=_(i[0]);if(!v)return n;const d=u?function(n,t){const o=_(n),r=_(t);if(!o||!r)return 0;const e=Z(n,t,o,r),l=P(e.P0,e.P1,e.P2,e.P3,0);return 180*Math.atan2(l[1],l[0])/Math.PI}(i[0],i[1]):void 0;a.push(D(E(i[0]),K(Y(i[0]),Y(i[0]),0,v,d,u)));for(let n=0;n<i.length-1;n++){const t=i[n],o=i[n+1],r=_(t),e=_(o);r&&e?(u&&n>0&&B(a,t,o,r,e,f),G(a,t,o,r,e,u,c,f,s)):a.push(D(E(o),K(Y(o),Y(o),1,null!=e?e:[0,0],void 0,u)))}const p=F(i[i.length-1]);p&&(a[a.length-1].e=p),u&&function(n){var t;let o;for(const r of n){const n=null!=(t=r.v)?t:r.value;if(!n||"number"!=typeof n.rotate)continue;if(void 0===o){o=n.rotate;continue}let e=n.rotate;for(;e-o>180;)e-=360;for(;e-o<-180;)e+=360;n.rotate=e,o=e}}(a);const h={kfs:a};return void 0!==n.loop&&(h.loop=n.loop),h}function D(n,t){return{t:n,v:t}}function Y(n){var t;const o=null!=(t=n.value)?t:n.v;if(o&&"object"==typeof o&&!Array.isArray(o))return o}function H(n,t,o){if(void 0===n)return t;if(void 0===t)return n;if("number"==typeof n&&"number"==typeof t)return n+(t-n)*o;if(Array.isArray(n)&&Array.isArray(t)&&n.length===t.length){const r=new Array(n.length);for(let e=0;e<n.length;e++){const l="number"==typeof n[e]?n[e]:0,i="number"==typeof t[e]?t[e]:0;r[e]=l+(i-l)*o}return r}return o<.5?n:t}function K(n,t,o,r,e,l){const i={translate:r},u=new Set;if(n)for(const t of Object.keys(n))u.add(t);if(t)for(const n of Object.keys(t))u.add(n);for(const r of u){if("translate"===r)continue;if("rotate"===r&&l)continue;const e=null==n?void 0:n[r],u=null==t?void 0:t[r];void 0===e&&void 0===u||(i[r]=H(e,u,o))}return void 0!==e&&(i.rotate=e+$(n,t,o)),i}function $(n,t,o){const r="number"==typeof(null==n?void 0:n.rotate)?n.rotate:void 0,e="number"==typeof(null==t?void 0:t.rotate)?t.rotate:void 0;if(void 0===r&&void 0===e)return 0;const l=H(r,e,o);return"number"==typeof l?l:0}function B(n,t,o,r,e,l){var i;const u=n[n.length-1],c=null!=(i=u.v)?i:u.value,f=null==c?void 0:c.rotate;if("number"!=typeof f)return;const s=Y(t),a=f-$(s,s,0),v=Z(t,o,r,e),d=P(v.P0,v.P1,v.P2,v.P3,0),p=180*Math.atan2(d[1],d[0])/Math.PI,h=function(n,t){let o=n-t;for(;o>180;)o-=360;for(;o<-180;)o+=360;return o}(p,a);if(Math.abs(h)<=l)return;const m=E(t),b=Math.min(m+Q,(m+E(o))/2),y=K(Y(t),Y(t),0,r,p,!0);n.push(D(b,y))}var Q=.05;function G(n,t,o,r,e,l,i,u,c){const f=Z(t,o,r,e),s=E(t),a=E(o),v=F(t),d=(p=v)?A([p[1],p[0],p[3],p[2]]):n=>n;var p;const h=Y(t),m=Y(o),b=function(n,t,o,r,e){const l=[];J(n.P0[0],n.P1[0],n.P2[0],n.P3[0],l),J(n.P0[1],n.P1[1],n.P2[1],n.P3[1],l),l.sort((n,t)=>n-t);const i=[0];for(const n of l)n>i[i.length-1]+1e-6&&n<.999999&&i.push(n);i.push(1);const u=[],c={j:e-i.length};for(let e=0;e<i.length-1;e++)nn(i[e],i[e+1],u,n,t,o,r,c);return u}(f,l,i,u,c),y=[];for(const n of b){const t=N(f.l,n),o=S(f.h>0?t/f.h:n,0,1),r={u:S(d(o),0,1),p:o,k:z(f.P0,f.P1,f.P2,f.P3,n)};if(l){const t=P(f.P0,f.P1,f.P2,f.P3,n);r.O=180*Math.atan2(t[1],t[0])/Math.PI}y.push(r)}let g=v,M=0;const j=n.length-1;for(let t=0;t<y.length;t++){const o=y[t],r=M<1?S((o.u-M)/(1-M),0,1):1,{left:e,right:i}=w(g,r),u=0===t?j:n.length-1;e?n[u].e=e:delete n[u].e;const c=s+o.u*(a-s),f=K(h,m,o.p,o.k,o.O,l);n.push(D(c,f)),g=i,M=o.u}}function J(n,t,o,r,e){const l=t-n,i=o-t,u=l-2*i+(r-o),c=2*(i-l),f=l;if(Math.abs(u)<1e-10){if(Math.abs(c)>1e-10){const n=-f/c;n>1e-6&&n<.999999&&e.push(n)}return}const s=c*c-4*u*f;if(s<0)return;const a=Math.sqrt(s),v=(-c-a)/(2*u),d=(-c+a)/(2*u);v>1e-6&&v<.999999&&e.push(v),d>1e-6&&d<.999999&&e.push(d)}function nn(n,t,o,r,e,l,i,u){const c=(n+t)/2,f=z(r.P0,r.P1,r.P2,r.P3,n),s=z(r.P0,r.P1,r.P2,r.P3,t),a=t-n,v=z(r.P0,r.P1,r.P2,r.P3,n+.25*a),d=z(r.P0,r.P1,r.P2,r.P3,c),p=z(r.P0,r.P1,r.P2,r.P3,n+.75*a),h=Math.max(tn(v,f,s),tn(d,f,s),tn(p,f,s));let m=!0;if(e){const o=P(r.P0,r.P1,r.P2,r.P3,n),e=P(r.P0,r.P1,r.P2,r.P3,t),l=180*Math.atan2(o[1],o[0])/Math.PI,u=180*Math.atan2(e[1],e[0])/Math.PI;let c=Math.abs(l-u);c>180&&(c=360-c),c>i&&(m=!1)}h<=l&&m||u.j<=0||a<1e-6?o.push(t):(u.j-=1,nn(n,c,o,r,e,l,i,u),nn(c,t,o,r,e,l,i,u))}function tn(n,t,o){const r=o[0]-t[0],e=o[1]-t[1],l=r*r+e*e;if(l<1e-20){const o=n[0]-t[0],r=n[1]-t[1];return Math.sqrt(o*o+r*r)}const i=(n[0]-t[0])*e-(n[1]-t[1])*r;return Math.abs(i)/Math.sqrt(l)}var on=10;function rn(n,t){if(n===t)return!0;if(typeof n!=typeof t||null===n||null===t||"object"!=typeof n)return!1;if(Array.isArray(n)!==Array.isArray(t))return!1;const o=Object.keys(n),r=Object.keys(t);return o.length===r.length&&o.every(o=>rn(n[o],t[o]))}function en(n){const t=[];let o;const r=function(n){const t=n.split(/([MLCZmlcz]|[\s,]+)/).map(n=>n.trim()).filter(n=>n&&","!==n),o=[];let r=null;for(const n of t)if(/[MLCZmlcz]/.test(n))r={type:n,values:[]},o.push(r);else if(r){const t=+n;r.values.push(Number.isNaN(t)?0:t)}return o}(n);for(const n of r){const r=n.type,e=n.values;if("M"===r||"m"===r){const n=e[0]||0,r=e[1]||0;o={v:[[n,r]],i:[[n,r]],o:[[n,r]],c:!1},t.push(o);continue}if(o||(o={v:[[0,0]],i:[[0,0]],o:[[0,0]],c:!1},t.push(o)),"L"===r){const n=e[0]||0,t=e[1]||0;o.v.push([n,t]),o.i.push([n,t]),o.o.push([n,t])}else if("C"===r){const n=e[0]||0,t=e[1]||0,r=e[2]||0,l=e[3]||0,i=e[4]||0,u=e[5]||0;o.o[o.o.length-1]=[n,t],o.v.push([i,u]),o.i.push([r,l]),o.o.push([i,u])}else"Z"===r||"z"===r?o.c=!0:console.warn('Unsupported path command "'+r+'"')}return t}function ln(n){return n.startsWith("path(")&&n.endsWith(")")?n.slice(5,-1):/^[MmZzLlHhVvCcSsQqTtAa]/.test(n)?n:void 0}function un(n){return"string"==typeof n&&void 0!==ln(n)}function cn(n){if(n&&"object"==typeof n&&"string"==typeof n.path){const t=ln(n.path);return t?{paths:en(t)}:n}if(n&&"object"==typeof n&&"paths"in n){const t=n.paths;if(Array.isArray(t)&&t.length>0&&un(t[0])){const n=[];for(const o of t){const t=ln(o);t&&n.push(...en(t))}return{paths:n}}return n}if(Array.isArray(n)){if(n.length>0&&un(n[0])){const t=[];for(const o of n){const n=ln(o);n&&t.push(...en(n))}return{paths:t}}return{paths:n}}return un(n)?{paths:en(ln(n))}:n}function fn(n,t){var o;if(n)return Array.isArray(n)?n:(null==(o=null==t?void 0:t.easings)?void 0:o[n])?t.easings[n]:void console.warn("Unknown easing name: "+n)}function sn(n,t){var o;if("string"==typeof n){const r=null==(o=null==t?void 0:t.animations)?void 0:o[n];return r||console.warn("Unknown animation name: "+n),r}return n}function an(n,t,o,r){var e,l;return"d"===n?{paths:b(null!=(e=null==t?void 0:t.paths)?e:Array.isArray(t)?t:[],null!=(l=null==o?void 0:o.paths)?l:Array.isArray(o)?o:[],r)}:O.has(n)?function(n,t,o){return[h(n[0]||0,t[0]||0,o),h(n[1]||0,t[1]||0,o),h(n[2]||0,t[2]||0,o),h(void 0===n[3]?1:n[3],void 0===t[3]?1:t[3],o)]}(t||[0,0,0,1],o||[0,0,0,1],r):"transform"!==n||"object"!=typeof t||null===t||Array.isArray(t)||"object"!=typeof o||null===o||Array.isArray(o)?"rotate"===n&&"number"==typeof t&&"number"==typeof o?h(t,o,r):U.has(n)||"stroke-dasharray"===n||"strokeDasharray"===n?m(t||[],o||[],r):h(+(t||0),+(o||0),r):function(n,t,o){const r=new Set([...Object.keys(null!=n?n:{}),...Object.keys(null!=t?t:{})]),e={};for(const l of r){const r=null==n?void 0:n[l],i=null==t?void 0:t[l];if("rotate"===l||"skew"===l)e[l]=h(+(null!=r?r:0),+(null!=i?i:0),o);else if("translate"===l||"scale"===l||"origin"===l){const n="scale"===l?[1,1]:[0,0];e[l]=m(r||n,i||n,o)}else e[l]=null!=i?i:r}return e}(t,o,r)}function vn(n,t,o,r){var e,l,i,u,c,f,s;const a=t.keyframes||t.kfs||[],v=[];for(const t of a){const o=null!=(l=null!=(e=t.time)?e:t.t)?l:0;let a=null!=(i=t.value)?i:t.v;const d=null!=(u=t.easing)?u:t.e;"d"===n&&(a=cn(a));const p=C(n)?I(n):n;O.has(p)&&(a=null!=(c=k(a))?c:a);const h={t:o,v:a,e:fn(d,r)},m=null!=(f=t.tangentIn)?f:t.ti,b=null!=(s=t.tangentOut)?s:t.to;m&&(h.tangentIn=m),b&&(h.tangentOut=b),v.push(h)}v.sort((n,t)=>{var o,r;return(null!=(o=n.t)?o:0)-(null!=(r=t.t)?r:0)});const p=t.loop,h=!0===p?{}:p||void 0;return h&&v.length>=2?function(n,t,o,r){var e,l,i,u,c;const f=t.length-1,s=S(null!=(e=o.segmentCount)?e:f,1,f);let a;a=o.extend===d.before?t.slice(0,s+1):t.slice(f-s);const v=null!=(l=t[0].t)?l:0,p=null!=(i=t[t.length-1].t)?i:0;let h,m;o.extend===d.before?(h=0,m=v):(h=p,m=r);const b=m-h;if(b<=0)return t;const y=null!=(u=a[0].t)?u:0,g=(null!=(c=a[a.length-1].t)?c:0)-y;if(g<=0)return t;const M=a.map(n=>{var t,o;return{U:(n.t-y)/g,v:n.v,e:n.e,tangentIn:null!=(t=n.tangentIn)?t:n.ti,tangentOut:null!=(o=n.tangentOut)?o:n.to}}),k=Math.floor(b/g),O=b-k*g,U=O/g,C=[],T=o.extend!==d.before,I=t[t.length-1];function z(t,o,r){var e;let l;if(o){l=[];for(let n=M.length-1;n>=0;n--)l.push({U:1-M[n].U,v:M[n].v,e:n>0?j(M[n-1].e):void 0,tangentIn:M[n].tangentOut,tangentOut:M[n].tangentIn})}else l=M;const i=void 0!==r?r:1;for(let o=0;o<l.length;o++){const r=l[o];if(r.U>i+1e-9){const e=l[o-1],u=r.U-e.U,c=(i-e.U)/u,f=e.e?A(e.e)(c):c,s=an(n,e.v,r.v,f),{left:a}=w(e.e,c);return C.length>0&&e.U<=i&&(C[C.length-1].e=a),void C.push({t:t+i*g,v:s,e:void 0})}const u=C.length>0?C[C.length-1]:I,c=T&&0===o&&void 0!==u&&Math.abs((null!=(e=u.t)?e:0)-(t+r.U*g))<1e-9;if(c){if(rn(u.v,r.v))continue;C.length>0&&(delete u.tangentIn,delete u.tangentOut)}const f={t:t+r.U*g+(c?on:0),v:r.v,e:o<l.length-1?r.e:void 0};r.tangentIn&&(f.tangentIn=r.tangentIn),r.tangentOut&&(f.tangentOut=r.tangentOut),C.push(f)}}if(o.extend===d.before){U>1e-9&&function(t,o,r){let e;if(o){e=[];for(let n=M.length-1;n>=0;n--)e.push({U:1-M[n].U,v:M[n].v,e:n>0?j(M[n-1].e):void 0,tangentIn:M[n].tangentOut,tangentOut:M[n].tangentIn})}else e=M;const l=1-r;for(let o=0;o<e.length;o++){const r=e[o];if(r.U<l-1e-9)continue;const i=e[o-1];if(i&&i.U<l-1e-9&&r.U>l+1e-9){const o=r.U-i.U,e=(l-i.U)/o,u=i.e?A(i.e)(e):e,c=an(n,i.v,r.v,u),{right:f}=w(i.e,e);C.push({t:t,v:c,e:f})}const u={t:t+(r.U-l)*g,v:r.v,e:o<e.length-1?r.e:void 0};r.tangentIn&&(u.tangentIn=r.tangentIn),r.tangentOut&&(u.tangentOut=r.tangentOut),C.push(u)}}(h,!!o.alternate&&k%2==0,U);for(let n=0;n<k;n++){const t=k-1-n,r=!!o.alternate&&t%2==0;z(h+O+n*g,r)}}else{for(let n=0;n<k;n++){const t=!!o.alternate&&n%2==0;z(h+n*g,t)}if(U>1e-9){const n=!!o.alternate&&k%2==0;z(h+k*g,n,U)}}return o.extend===d.before?[...C,...t]:[...t,...C]}(n,v,h,o):v}var dn=0;function pn(n,t){const{startOn:o,outAction:r="continue",scrollIntoViewThreshold:e=0}=t,l=n.getRootElement();if(!l)return console.warn("setupAnimationTriggers: No root element found for animation."),n;let i=!1;const u=()=>{i&&(i=!1,n.setPlaybackRate(1)),n.play()},c=()=>{switch(r){case"pause":n.pause();break;case"reset":n.cancel();break;case"reverse":i=!0,n.setPlaybackRate(-1),n.play()}};switch(o){case"load":{const n=()=>u();"complete"===document.readyState?n():window.addEventListener("load",n,{once:!0});break}case"mouseOver":{let n=!1;const t=()=>{n=!0,u()},o=()=>{n&&c()};l.addEventListener("mouseenter",t),l.addEventListener("mouseleave",o);break}case"click":{const t=()=>{n.isPlaying()?c():u()};l.addEventListener("click",t);break}case"scrollIntoView":{const n=n=>{var t,o;const r=n.boundingClientRect,e=n.intersectionRect;if(!(null==r?void 0:r.height)||!e)return n.intersectionRatio;const l="undefined"!=typeof window&&window.innerHeight?window.innerHeight:1/0,i=null!=(o=null==(t=n.rootBounds)?void 0:t.height)?o:1/0,u=Math.min(l,i),c=Math.min(r.height,Number.isFinite(u)?u:r.height);return c>0?e.height/c:n.intersectionRatio},t=Array.from({length:21},(n,t)=>t/20);let o=!1;new IntersectionObserver(t=>{t.forEach(t=>{t.isIntersecting&&n(t)>=e?(o=!0,u()):o&&(o=!1,c())})},{threshold:t}).observe(l);break}}return n}function hn(n){return"#"+n}function mn(n,t,o,r){var e,l;let i=null!=(e=n.v)?e:n.value;const u=null!=(l=n.e)?l:n.easing,c={offset:t,easing:u&&Array.isArray(u)?"cubic-bezier("+u.join(",")+")":void 0};let f,s=o;var a;return O.has(o)&&Array.isArray(i)?f=function(n){const t=Math.round(255*n[0]),o=Math.round(255*n[1]),r=Math.round(255*n[2]);return 4===n.length?"rgba("+t+","+o+","+r+","+n[3]+")":"rgb("+t+","+o+","+r+")"}(i):"transform"!==o||null===i||"object"!=typeof i||Array.isArray(i)?U.has(o)?(Array.isArray(i)&&("translate"===o&&(i=i.map(n=>n+"px")),i=i.join(",")),"rotate"===o&&(i+="deg"),f=o+"("+i+")",s="transform"):f="d"===o?'path("'+(i&&"object"==typeof i&&Array.isArray(i.paths)?i.paths:[]).map(n=>function(n,t=!1){var o,r,e,l;const i=n.v,u=n.i,c=n.o,f=n.c;if(!i.length)return"";const s=[],a=i.length;s.push("M"+i[0][0]+","+i[0][1]);for(let n=1;n<a;n++){const e=i[n-1],l=null!=(o=null==c?void 0:c[n-1])?o:e,f=null!=(r=null==u?void 0:u[n])?r:i[n],a=i[n];t||l[0]!==e[0]||l[1]!==e[1]||f[0]!==a[0]||f[1]!==a[1]?s.push("C"+l[0]+","+l[1]+","+f[0]+","+f[1]+","+a[0]+","+a[1]):s.push("L"+a[0]+","+a[1])}if(f&&a>0){const n=i[a-1],o=null!=(e=null==c?void 0:c[a-1])?e:n,r=null!=(l=null==u?void 0:u[0])?l:i[0],f=i[0];!t&&o[0]===n[0]&&o[1]===n[1]&&r[0]===f[0]&&r[1]===f[1]||s.push("C"+o[0]+","+o[1]+","+r[0]+","+r[1]+","+f[0]+","+f[1]),s.push("z")}return s.join("")}(n,!0)).join("")+'")':""+i:(f=function(n,t){var o;if(!n)return"";const r=null==(o=null==t?void 0:t.C)||o,e=[],l=n.translate,i=n.origin,u=n.rotate,c=n.skew,f=n.scale,s=r?"px":"",a=r?"deg":"";return l&&e.push("translate("+l[0]+s+","+l[1]+s+")"),i&&e.push("translate("+i[0]+s+","+i[1]+s+")"),null!=u&&e.push("rotate("+u+a+")"),null!=c&&e.push("skewX("+c+a+")"),f&&e.push("scale("+f[0]+","+f[1]+")"),i&&e.push("translate("+-i[0]+s+","+-i[1]+s+")"),e.join("")}(i,{C:!0}),s="transform"),CSS.supports(I(s),f)||r.add(s),s=(a=s).includes("-")?a.replace(/-([a-z])/g,(n,t)=>t.toUpperCase()):a,c[s]=f,c}function bn(n,t,o){var r,e,l,i,u;const c=[];for(let a=0;a<t.length;a++){const v=t[a],d=null!=(r=v.t)?r:0;if(d<0){const o=t[a+1];if(o&&(null!=(e=o.t)?e:0)>=0){const t=(0-d)/((null!=(l=o.t)?l:0)-d),r=v.e?A(v.e)(t):t,{right:e}=w(v.e,t);c.push({t:0,v:an(n,v.v,o.v,r),e:e})}continue}if(d>o){const r=t[a-1];if(r&&(null!=(i=r.t)?i:0)<=o){const t=null!=(u=r.t)?u:0,e=(o-t)/(d-t),l=r.e?A(r.e)(e):e,{left:i}=w(r.e,e);c.length>0&&(c[c.length-1]=s(f({},c[c.length-1]),{e:i})),c.push({t:o,v:an(n,r.v,v.v,l),e:void 0})}break}c.push(v)}return c}function yn(n,t,o){var r;const e=new Map;for(const[l,i]of Object.entries(n)){const n=o.duration||1,u=bn(l,i.kfs||i.keyframes||[],n),c=[];for(let o=0;o<u.length;o++){const e=u[o],i=mn(e,S((null!=(r=e.t)?r:0)/n,0,1),l,t);0===o&&(i.offset||0)>0&&c.push(s(f({},i),{offset:0})),c.push(i)}c.length>0&&(c[c.length-1].offset||0)<1&&c.push(s(f({},c[c.length-1]),{offset:1})),c.length>0&&e.set(l,c)}return e}function gn(n){const t=function(n){if(!(null==n?void 0:n.data))throw new Error("createAnimator: `data` is required");return n.data}(n);return function(n,o){let r,e=o;n.resetOnFinish&&(e=s(f({},o),{T:()=>{var n;null==(n=null==o?void 0:o.T)||n.call(o),null==r||r.cancel()}}));const l=function(n,t,o){var r;const e=p(n)||{};if(!o)if(n.id){const t=hn(n.id);(o=document.querySelector(t))||console.warn("createFrameLoopAnimator: No root element found for selector: ",t)}else console.warn("createFrameLoopAnimator: No root element provided");const l=function(n,t=v.waapi){const o=p(n)||{},r=function(n){var t;if(n)return null==(t=p(n))?void 0:t.definitions}(n),e=o.duration||1e3,l=[],i=(n,o)=>{if(!o)return null;const l=function(n,t){if(!n)return[];const o=[];if("string"==typeof n){const r=sn(n,t);r&&o.push(r)}else if(Array.isArray(n))for(const r of n){const n=sn(r,t);n&&o.push(n)}else o.push(n);return o}(o,r);if(0===l.length)return null;const i=function(n,t,o,r=v.waapi){const e={};for(const[l,i]of Object.entries(n)){const n=vn(l,i,t,o);if(n.length>0){const t={kfs:n};void 0!==i.autoOrient&&(t.autoOrient=i.autoOrient),void 0!==i.loop&&(t.loop=i.loop),e[l]=r===v.waapi&&"transform"===l?q(t):t}}return e}(function(n){const t={};for(const o of n)for(const[n,r]of Object.entries(o))t[n]=r;return t}(l),e,r,t);return 0===Object.keys(i).length?null:{id:n,animate:i}},u=function(n){var t;if(!n)return;const o=null==(t=p(n))?void 0:t.animateById;return o?Object.entries(o).map(([n,t])=>({id:n,animate:t})):void 0}(n);if(u)for(const n of u){const t=i(n.id,n.animate);t&&l.push(t)}const c=n=>{const t=n.animate;if(t&&Object.keys(t).length>0){const o=n.id||"_px_el_"+ ++dn;n.id=o;const r=i(o,t);r&&l.push(r)}if(n.children)for(let t=0;t<n.children.length;t++)c(n.children[t])};if(n.children)for(let t=0;t<n.children.length;t++)c(n.children[t]);return l}(n,v.waapi),i=[],u=e.iterations;let c;"number"==typeof u&&(c=u),"infinite"===u&&(c=1/0);const f=new Set;let s=!1,a=!1;(null==l?void 0:l.length)||console.warn("createWebApiAnimator: No animation bindings defined");for(const n of l||[]){const l=n.animate;if(!l||"object"!=typeof l||Array.isArray(l)){console.warn("createWebApiAnimator: Empty or unresolved binding",n);continue}const u=hn(n.id),v=(null==o?void 0:o.querySelectorAll(u))||document.querySelectorAll(u);0===v.length&&console.warn('createWebApiAnimator: No elements found for selector "'+u+'"');const d=yn(l,f,e),p=e.delay&&e.delay>0?e.delay:void 0;let h;if(e.delay&&e.delay<0&&e.duration){const n=-e.delay;h=c===1/0?n%e.duration:Math.min(n,e.duration*(null!=c?c:1))}const m={duration:e.duration,delay:p,fill:null!=(r=e.fill)?r:"forwards",direction:e.direction,iterations:c};for(let n=0;n<v.length;n++){const o=v[n];for(const[,n]of d)if(n.length>0)try{const r=new KeyframeEffect(o,n,m),e=new Animation(r,document.timeline);(null==t?void 0:t.T)&&(e.onfinish=()=>{var n;s||(s=!0,null==(n=t.T)||n.call(t))}),(null==t?void 0:t.I)&&(e.onremove=()=>{var n;a||(a=!0,null==(n=t.I)||n.call(t))}),void 0!==h&&(e.currentTime=h),i.push(e)}catch(n){console.warn(n)}}}const d={isReady:()=>!0,getRootElement:()=>o||null,isPlaying:()=>{var n;return"running"===(null==(n=i[0])?void 0:n.playState)},play:()=>{var n;s=!1,i.forEach(n=>n.play()),null==(n=null==t?void 0:t.S)||n.call(t)},pause:()=>{var n;i.forEach(n=>n.pause()),null==(n=null==t?void 0:t.L)||n.call(t)},cancel:()=>{var n;s=!1,i.forEach(n=>n.cancel()),null==(n=null==t?void 0:t.P)||n.call(t)},finish:()=>{var n;for(const t of i)try{(null==(n=t.effect)?void 0:n.getTiming().iterations)===1/0?(t.effect.updateTiming({iterations:1}),t.finish(),t.effect.updateTiming({iterations:1/0})):t.finish()}catch(n){t.cancel()}},setPlaybackRate:n=>(i.forEach(t=>t.playbackRate=n),d),getCurrentTime:()=>{var n,t;const o=null!=(t=null==(n=i[0])?void 0:n.currentTime)?t:null;return null!==o?+o:null},setCurrentTime:n=>{s=!1,i.forEach(t=>{t.currentTime=n})},destroy:()=>{var n;d.cancel(),i.splice(0,i.length),a||(a=!0,null==(n=null==t?void 0:t.I)||n.call(t))}};return e.trigger&&pn(d,e.trigger),d}(t,e,null);return r=l,n.debugInstName&&(window[n.debugInstName]=l),l}(p(t)||{},n.N)}var An,Mn="data";return An=a,((t,r,l,u)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let l of e(r))i.call(t,l)||void 0===l||n(t,l,{get:()=>r[l],enumerable:!(u=o(r,l))||u.enumerable});return t})(n({},"__esModule",{value:!0}),An)})();
1
+ "use strict";var PixodeskAnimator=(()=>{var n=Object.defineProperty,t=Object.defineProperties,o=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyDescriptors,e=Object.getOwnPropertyNames,l=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,u=Object.prototype.propertyIsEnumerable,c=(t,o,r)=>o in t?n(t,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[o]=r,s=(n,t)=>{for(var o in t||(t={}))i.call(t,o)&&c(n,o,t[o]);if(l)for(var o of l(t))u.call(t,o)&&c(n,o,t[o]);return n},f=(n,o)=>t(n,r(o)),a={};function v(n,t,o){return n+(t-n)*o}function d(n,t,o){const r=[],e=Math.max(n.length,t.length);for(let l=0;l<e;l++)r[l]=v(n[l]||0,t[l]||0,o);return r}function p(n,t,o){const r=Math.max(n.length,t.length),e=[];for(let l=0;l<r;l++)e.push(h(n[l],t[l],o));return e}function h(n,t,o){var r,e,l,i,u,c,s,f,a;if(!n||!t)return n||t||{v:[]};const v=Math.min(Math.max(o,0),1),p=Math.min(n.v.length,t.v.length),h=[],m=[],b=[];for(let o=0;o<p;o++){const a=n.v[o],p=t.v[o];h.push(d(a,p,v));const y=null!=(e=null==(r=n.i)?void 0:r[o])?e:a,g=null!=(i=null==(l=t.i)?void 0:l[o])?i:p;m.push(d(y,g,v));const A=null!=(c=null==(u=n.o)?void 0:u[o])?c:a,M=null!=(f=null==(s=t.o)?void 0:s[o])?f:p;b.push(d(A,M,v))}return{v:h,i:m.length?m:void 0,o:b.length?b:void 0,c:null!=(a=n.c)?a:t.c}}function m(n,t,o){if(o<=0)return 0;if(o>=1)return 1;const r=3*n,e=3*(t-n)-r,l=1-r-e;function i(n){return((l*n+e)*n+r)*n}function u(n){return(3*l*n+2*e)*n+r}let c=o,s=0,f=1;for(let n=0;n<8;n++){const n=i(c)-o;if(Math.abs(n)<1e-6)return c;const t=u(c);if(Math.abs(t)<1e-6)break;c-=n/t}for(c=o;s<f;){const n=i(c);if(Math.abs(n-o)<1e-6)return c;o>n?s=c:f=c,c=(f+s)/2}return c}function b(n){const[t,o,r,e]=n,l=3*o,i=3*(e-o)-l,u=1-l-i;return function(n){return o=m(t,r,n),((u*o+i)*o+l)*o;var o}}function y(n,t,o){return[n[0]+(t[0]-n[0])*o,n[1]+(t[1]-n[1])*o]}function g(n,t){if(!n)return{left:void 0,right:void 0};if(t<=0)return{left:void 0,right:n};if(t>=1)return{left:n,right:void 0};const[o,r,e,l]=n,i=m(o,e,t),u=[o,r],c=[e,l],{left:s,right:f}=function(n,t,o,r,e){const l=y(n,t,e),i=y(t,o,e),u=y(o,r,e),c=y(l,i,e),s=y(i,u,e),f=y(c,s,e);return{left:[n,l,c,f],right:[f,s,u,r]}}([0,0],u,c,[1,1],i),a=s[3][0],v=s[3][1];let d,p;a>1e-9&&Math.abs(v)>1e-9&&(d=[s[1][0]/a,s[1][1]/v,s[2][0]/a,s[2][1]/v]);const h=1-a,b=1-v;return h>1e-9&&Math.abs(b)>1e-9&&(p=[(f[1][0]-a)/h,(f[1][1]-v)/b,(f[2][0]-a)/h,(f[2][1]-v)/b]),{left:d,right:p}}function A(n){if(n)return[1-n[2],1-n[3],1-n[0],1-n[1]]}function M(n){if(n){if(Array.isArray(n))return n;if("string"==typeof n)return n.startsWith("#")?function(n){const t=n.slice(1),o=t.length<=4,r=o?t[0]+t[0]:t.slice(0,2),e=o?t[1]+t[1]:t.slice(2,4),l=o?t[2]+t[2]:t.slice(4,6),i=4===t.length?t[3]+t[3]:8===t.length?t.slice(6,8):null,u=[parseInt(r,16)/255,parseInt(e,16)/255,parseInt(l,16)/255];return null!==i&&u.push(parseInt(i,16)/255),u}(n):n.startsWith("rgb")?function(n){var t;const o=null==(t=n.match(/rgba?\((.*)\)/))?void 0:t[1];if(!o)throw new Error("Invalid rgb/rgba format");const r=o.split(",").map(n=>+n.trim());return[r[0]/255,r[1]/255,r[2]/255,...void 0!==r[3]?[r[3]]:[]]}(n):void console.warn("Unsupported color format: "+n)}}((t,o)=>{for(var r in o)n(t,r,{get:o[r],enumerable:!0})})(a,{PX_ANIMATOR_DATA_KEY:()=>wn,createAnimator:()=>An,setupAnimationTriggers:()=>hn});var w=new Set(["color","fill","flood-color","lighting-color","stop-color","stroke"]),k=new Set(["translate","rotate","scale","skew"]),j=new Set(["offset-distance","offsetDistance"]);function O(n){return!n.includes("-")&&/[a-z][A-Z]/.test(n)}var U=new Set(["viewBox","preserveAspectRatio","gradientUnits","gradientTransform","spreadMethod","patternUnits","patternContentUnits","patternTransform","clipPathUnits","maskUnits","maskContentUnits","markerUnits","markerWidth","markerHeight","refX","refY","textLength","lengthAdjust","startOffset","filterUnits","primitiveUnits","tableValues","stdDeviation","baseFrequency","numOctaves","surfaceScale","diffuseConstant","specularConstant","specularExponent","kernelMatrix","kernelUnitLength","edgeMode","preserveAlpha","targetX","targetY"]);function C(n){return U.has(n)?n:n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}function T(n,t,o){return Math.max(t,Math.min(n,o))}function I(n,t,o,r,e){if(e<=0)return[n[0],n[1]];if(e>=1)return[r[0],r[1]];const l=1-e,i=l*l,u=e*e,c=i*l,s=3*e*i,f=3*u*l,a=u*e;return[c*n[0]+s*t[0]+f*o[0]+a*r[0],c*n[1]+s*t[1]+f*o[1]+a*r[1]]}var S=1e-4;function P(n,t,o,r,e){const l=z(n,t,o,r,e);return 0===l[0]&&0===l[1]?z(n,t,o,r,e<.5?e+S:e-S):l}function z(n,t,o,r,e){const l=1-e,i=3*l*l,u=6*e*l,c=3*e*e;return[i*(t[0]-n[0])+u*(o[0]-t[0])+c*(r[0]-o[0]),i*(t[1]-n[1])+u*(o[1]-t[1])+c*(r[1]-o[1])]}function L(n,t){const{ts:o,ds:r}=n,e=o.length-1;if(t<=o[0])return r[0];if(t>=o[e])return r[e];let l=1,i=e;for(;l<i;){const n=l+i>>>1;o[n]<t?l=n+1:i=n}const u=o[i-1],c=o[i]-u,s=c>0?(t-u)/c:0;return r[i-1]+s*(r[i]-r[i-1])}var x={waapi:"waapi",frames:"frames"},N={before:"before",after:"after"};function _(n){var t;return(null==n?void 0:n.animator)||(null==(t=null==n?void 0:n.meta)?void 0:t.animator)}function E(n){var t;const o=null!=(t=n.value)?t:n.v;if(!o)return;if(Array.isArray(o)&&o.length>=2&&"number"==typeof o[0]&&"number"==typeof o[1])return[o[0],o[1]];const r=o.translate;return Array.isArray(r)&&r.length>=2?[r[0],r[1]]:void 0}function F(n){var t,o;return null!=(o=null!=(t=n.time)?t:n.t)?o:0}function W(n){var t;return null!=(t=n.easing)?t:n.e}var Z=new WeakMap;function R(n,t,o,r){var e,l;let i=Z.get(n);const u=null==i?void 0:i.get(t);if(u)return u;const c=null!=(e=n.tangentOut)?e:n.to,s=null!=(l=t.tangentIn)?l:t.ti,f=[o[0]+(c?c[0]:0),o[1]+(c?c[1]:0)],a=[r[0]+(s?s[0]:0),r[1]+(s?s[1]:0)],v=function(n,t,o,r,e=100){const l=e+1,i=new Float64Array(l),u=new Float64Array(l);let c=I(n,t,o,r,0);i[0]=0,u[0]=0;let s=0;for(let f=1;f<l;f++){const l=f/e,a=I(n,t,o,r,l),v=a[0]-c[0],d=a[1]-c[1];s+=Math.sqrt(v*v+d*d),i[f]=l,u[f]=s,c=a}return{ts:i,ds:u}}(o,f,a,r),d={P0:o,P1:f,P2:a,P3:r,l:v,h:v.ds[v.ds.length-1]};return i||(i=new WeakMap,Z.set(n,i)),i.set(t,d),d}var D=.5,V=5,X=32;function q(n,t){var o,r,e,l;if(!function(n){var t,o,r;const e=null!=(t=n.keyframes)?t:n.kfs;if(!Array.isArray(e))return!1;if(n.autoOrient)return!0;for(const n of e)if((null!=(o=n.tangentIn)?o:n.ti)||(null!=(r=n.tangentOut)?r:n.to))return!0;return!1}(n))return n;const i=null!=(o=n.keyframes)?o:n.kfs;if(!Array.isArray(i)||i.length<2)return n;const u=!!n.autoOrient,c=null!=(r=null==t?void 0:t.m)?r:D,s=null!=(e=null==t?void 0:t.A)?e:V,f=null!=(l=null==t?void 0:t.M)?l:X,a=[],v=E(i[0]);if(!v)return n;const d=u?function(n,t){const o=E(n),r=E(t);if(!o||!r)return 0;const e=R(n,t,o,r),l=P(e.P0,e.P1,e.P2,e.P3,0);return 180*Math.atan2(l[1],l[0])/Math.PI}(i[0],i[1]):void 0;a.push(Y(F(i[0]),$(H(i[0]),H(i[0]),0,v,d,u)));for(let n=0;n<i.length-1;n++){const t=i[n],o=i[n+1],r=E(t),e=E(o);r&&e?(u&&n>0&&Q(a,t,o,r,e,s),J(a,t,o,r,e,u,c,s,f)):a.push(Y(F(o),$(H(o),H(o),1,null!=e?e:[0,0],void 0,u)))}const p=W(i[i.length-1]);p&&(a[a.length-1].e=p),u&&function(n){var t;let o;for(const r of n){const n=null!=(t=r.v)?t:r.value;if(!n||"number"!=typeof n.rotate)continue;if(void 0===o){o=n.rotate;continue}let e=n.rotate;for(;e-o>180;)e-=360;for(;e-o<-180;)e+=360;n.rotate=e,o=e}}(a);const h={kfs:a};return void 0!==n.loop&&(h.loop=n.loop),h}function Y(n,t){return{t:n,v:t}}function H(n){var t;const o=null!=(t=n.value)?t:n.v;if(o&&"object"==typeof o&&!Array.isArray(o))return o}function K(n,t,o){if(void 0===n)return t;if(void 0===t)return n;if("number"==typeof n&&"number"==typeof t)return n+(t-n)*o;if(Array.isArray(n)&&Array.isArray(t)&&n.length===t.length){const r=new Array(n.length);for(let e=0;e<n.length;e++){const l="number"==typeof n[e]?n[e]:0,i="number"==typeof t[e]?t[e]:0;r[e]=l+(i-l)*o}return r}return o<.5?n:t}function $(n,t,o,r,e,l){const i={translate:r},u=new Set;if(n)for(const t of Object.keys(n))u.add(t);if(t)for(const n of Object.keys(t))u.add(n);for(const r of u){if("translate"===r)continue;if("rotate"===r&&l)continue;const e=null==n?void 0:n[r],u=null==t?void 0:t[r];void 0===e&&void 0===u||(i[r]=K(e,u,o))}return void 0!==e&&(i.rotate=e+B(n,t,o)),i}function B(n,t,o){const r="number"==typeof(null==n?void 0:n.rotate)?n.rotate:void 0,e="number"==typeof(null==t?void 0:t.rotate)?t.rotate:void 0;if(void 0===r&&void 0===e)return 0;const l=K(r,e,o);return"number"==typeof l?l:0}function Q(n,t,o,r,e,l){var i;const u=n[n.length-1],c=null!=(i=u.v)?i:u.value,s=null==c?void 0:c.rotate;if("number"!=typeof s)return;const f=H(t),a=s-B(f,f,0),v=R(t,o,r,e),d=P(v.P0,v.P1,v.P2,v.P3,0),p=180*Math.atan2(d[1],d[0])/Math.PI,h=function(n,t){let o=n-t;for(;o>180;)o-=360;for(;o<-180;)o+=360;return o}(p,a);if(Math.abs(h)<=l)return;const m=F(t),b=Math.min(m+G,(m+F(o))/2),y=$(H(t),H(t),0,r,p,!0);n.push(Y(b,y))}var G=.05;function J(n,t,o,r,e,l,i,u,c){const s=R(t,o,r,e),f=F(t),a=F(o),v=W(t),d=(p=v)?b([p[1],p[0],p[3],p[2]]):n=>n;var p;const h=H(t),m=H(o),y=function(n,t,o,r,e){const l=[];nn(n.P0[0],n.P1[0],n.P2[0],n.P3[0],l),nn(n.P0[1],n.P1[1],n.P2[1],n.P3[1],l),l.sort((n,t)=>n-t);const i=[0];for(const n of l)n>i[i.length-1]+1e-6&&n<.999999&&i.push(n);i.push(1);const u=[],c={k:e-i.length};for(let e=0;e<i.length-1;e++)tn(i[e],i[e+1],u,n,t,o,r,c);return u}(s,l,i,u,c),A=[];for(const n of y){const t=L(s.l,n),o=T(s.h>0?t/s.h:n,0,1),r={u:T(d(o),0,1),p:o,j:I(s.P0,s.P1,s.P2,s.P3,n)};if(l){const t=P(s.P0,s.P1,s.P2,s.P3,n);r.O=180*Math.atan2(t[1],t[0])/Math.PI}A.push(r)}let M=v,w=0;const k=n.length-1;for(let t=0;t<A.length;t++){const o=A[t],r=w<1?T((o.u-w)/(1-w),0,1):1,{left:e,right:i}=g(M,r),u=0===t?k:n.length-1;e?n[u].e=e:delete n[u].e;const c=f+o.u*(a-f),s=$(h,m,o.p,o.j,o.O,l);n.push(Y(c,s)),M=i,w=o.u}}function nn(n,t,o,r,e){const l=t-n,i=o-t,u=l-2*i+(r-o),c=2*(i-l),s=l;if(Math.abs(u)<1e-10){if(Math.abs(c)>1e-10){const n=-s/c;n>1e-6&&n<.999999&&e.push(n)}return}const f=c*c-4*u*s;if(f<0)return;const a=Math.sqrt(f),v=(-c-a)/(2*u),d=(-c+a)/(2*u);v>1e-6&&v<.999999&&e.push(v),d>1e-6&&d<.999999&&e.push(d)}function tn(n,t,o,r,e,l,i,u){const c=(n+t)/2,s=I(r.P0,r.P1,r.P2,r.P3,n),f=I(r.P0,r.P1,r.P2,r.P3,t),a=t-n,v=I(r.P0,r.P1,r.P2,r.P3,n+.25*a),d=I(r.P0,r.P1,r.P2,r.P3,c),p=I(r.P0,r.P1,r.P2,r.P3,n+.75*a),h=Math.max(on(v,s,f),on(d,s,f),on(p,s,f));let m=!0;if(e){const o=P(r.P0,r.P1,r.P2,r.P3,n),e=P(r.P0,r.P1,r.P2,r.P3,t),l=180*Math.atan2(o[1],o[0])/Math.PI,u=180*Math.atan2(e[1],e[0])/Math.PI;let c=Math.abs(l-u);c>180&&(c=360-c),c>i&&(m=!1)}h<=l&&m||u.k<=0||a<1e-6?o.push(t):(u.k-=1,tn(n,c,o,r,e,l,i,u),tn(c,t,o,r,e,l,i,u))}function on(n,t,o){const r=o[0]-t[0],e=o[1]-t[1],l=r*r+e*e;if(l<1e-20){const o=n[0]-t[0],r=n[1]-t[1];return Math.sqrt(o*o+r*r)}const i=(n[0]-t[0])*e-(n[1]-t[1])*r;return Math.abs(i)/Math.sqrt(l)}var rn=1;function en(n,t){if(n===t)return!0;if(typeof n!=typeof t||null===n||null===t||"object"!=typeof n)return!1;if(Array.isArray(n)!==Array.isArray(t))return!1;const o=Object.keys(n),r=Object.keys(t);return o.length===r.length&&o.every(o=>en(n[o],t[o]))}function ln(n){const t=[];let o;const r=function(n){const t=n.split(/([MLCZmlcz]|[\s,]+)/).map(n=>n.trim()).filter(n=>n&&","!==n),o=[];let r=null;for(const n of t)if(/[MLCZmlcz]/.test(n))r={type:n,values:[]},o.push(r);else if(r){const t=+n;r.values.push(Number.isNaN(t)?0:t)}return o}(n);for(const n of r){const r=n.type,e=n.values;if("M"===r||"m"===r){const n=e[0]||0,r=e[1]||0;o={v:[[n,r]],i:[[n,r]],o:[[n,r]],c:!1},t.push(o);continue}if(o||(o={v:[[0,0]],i:[[0,0]],o:[[0,0]],c:!1},t.push(o)),"L"===r){const n=e[0]||0,t=e[1]||0;o.v.push([n,t]),o.i.push([n,t]),o.o.push([n,t])}else if("C"===r){const n=e[0]||0,t=e[1]||0,r=e[2]||0,l=e[3]||0,i=e[4]||0,u=e[5]||0;o.o[o.o.length-1]=[n,t],o.v.push([i,u]),o.i.push([r,l]),o.o.push([i,u])}else"Z"===r||"z"===r?o.c=!0:console.warn('Unsupported path command "'+r+'"')}return t}function un(n){return n.startsWith("path(")&&n.endsWith(")")?n.slice(5,-1):/^[MmZzLlHhVvCcSsQqTtAa]/.test(n)?n:void 0}function cn(n){return"string"==typeof n&&void 0!==un(n)}function sn(n){if(n&&"object"==typeof n&&"string"==typeof n.path){const t=un(n.path);return t?{paths:ln(t)}:n}if(n&&"object"==typeof n&&"paths"in n){const t=n.paths;if(Array.isArray(t)&&t.length>0&&cn(t[0])){const n=[];for(const o of t){const t=un(o);t&&n.push(...ln(t))}return{paths:n}}return n}if(Array.isArray(n)){if(n.length>0&&cn(n[0])){const t=[];for(const o of n){const n=un(o);n&&t.push(...ln(n))}return{paths:t}}return{paths:n}}return cn(n)?{paths:ln(un(n))}:n}function fn(n,t){var o;if(n)return Array.isArray(n)?n:(null==(o=null==t?void 0:t.easings)?void 0:o[n])?t.easings[n]:void console.warn("Unknown easing name: "+n)}function an(n,t){var o;if("string"==typeof n){const r=null==(o=null==t?void 0:t.animations)?void 0:o[n];return r||console.warn("Unknown animation name: "+n),r}return n}function vn(n,t,o,r){var e,l;return"d"===n?{paths:p(null!=(e=null==t?void 0:t.paths)?e:Array.isArray(t)?t:[],null!=(l=null==o?void 0:o.paths)?l:Array.isArray(o)?o:[],r)}:w.has(n)?function(n,t,o){return[v(n[0]||0,t[0]||0,o),v(n[1]||0,t[1]||0,o),v(n[2]||0,t[2]||0,o),v(void 0===n[3]?1:n[3],void 0===t[3]?1:t[3],o)]}(t||[0,0,0,1],o||[0,0,0,1],r):"transform"!==n||"object"!=typeof t||null===t||Array.isArray(t)||"object"!=typeof o||null===o||Array.isArray(o)?"rotate"===n&&"number"==typeof t&&"number"==typeof o?v(t,o,r):k.has(n)||"stroke-dasharray"===n||"strokeDasharray"===n?d(t||[],o||[],r):v(+(t||0),+(o||0),r):function(n,t,o){const r=new Set([...Object.keys(null!=n?n:{}),...Object.keys(null!=t?t:{})]),e={};for(const l of r){const r=null==n?void 0:n[l],i=null==t?void 0:t[l];if("rotate"===l||"skew"===l)e[l]=v(+(null!=r?r:0),+(null!=i?i:0),o);else if("translate"===l||"scale"===l||"origin"===l){const n="scale"===l?[1,1]:[0,0];e[l]=d(r||n,i||n,o)}else e[l]=null!=i?i:r}return e}(t,o,r)}function dn(n,t,o,r){var e,l,i,u,c,a,v;const d=t.keyframes||t.kfs||[],p=[];for(const t of d){const o=null!=(l=null!=(e=t.time)?e:t.t)?l:0;let s=null!=(i=t.value)?i:t.v;const f=null!=(u=t.easing)?u:t.e;"d"===n&&(s=sn(s));const d=O(n)?C(n):n;w.has(d)&&(s=null!=(c=M(s))?c:s);const h={t:o,v:s,e:fn(f,r)},m=null!=(a=t.tangentIn)?a:t.ti,b=null!=(v=t.tangentOut)?v:t.to;m&&(h.tangentIn=m),b&&(h.tangentOut=b),p.push(h)}p.sort((n,t)=>{var o,r;return(null!=(o=n.t)?o:0)-(null!=(r=t.t)?r:0)});const h=t.loop,m=!0===h?{}:h||void 0;return m&&p.length>=2?function(n,t,o,r){var e,l,i,u,c;const a=t.length-1,v=T(null!=(e=o.segmentCount)?e:a,1,a);let d;d=o.extend===N.before?t.slice(0,v+1):t.slice(a-v);const p=null!=(l=t[0].t)?l:0,h=null!=(i=t[t.length-1].t)?i:0;let m,y;o.extend===N.before?(m=0,y=p):(m=h,y=r);const M=y-m;if(M<=0)return t;const w=null!=(u=d[0].t)?u:0,k=(null!=(c=d[d.length-1].t)?c:0)-w;if(k<=0)return t;const j=d.map(n=>{var t,o;return{U:(n.t-w)/k,v:n.v,e:n.e,tangentIn:null!=(t=n.tangentIn)?t:n.ti,tangentOut:null!=(o=n.tangentOut)?o:n.to}}),O=Math.floor(M/k),U=M-O*k,C=U/k,I=[],S=o.extend!==N.before,P=t[t.length-1];let z,L=!1;function x(t,o,r){var e;let l;if(o){l=[];for(let n=j.length-1;n>=0;n--)l.push({U:1-j[n].U,v:j[n].v,e:n>0?A(j[n-1].e):void 0,tangentIn:j[n].tangentOut,tangentOut:j[n].tangentIn})}else l=j;const i=void 0!==r?r:1;for(let o=0;o<l.length;o++){const r=l[o];if(r.U>i+1e-9){const e=l[o-1],u=r.U-e.U,c=(i-e.U)/u,s=e.e?b(e.e)(c):c,f=vn(n,e.v,r.v,s),{left:a}=g(e.e,c);return I.length>0&&e.U<=i&&(I[I.length-1].e=a),void I.push({t:t+i*k,v:f,e:void 0})}const u=I.length>0?I[I.length-1]:P,c=S&&0===o&&void 0!==u&&Math.abs((null!=(e=u.t)?e:0)-(t+r.U*k))<1e-9;if(c){if(en(u.v,r.v)){I.length>0?(u.e=r.e,u.tangentOut=r.tangentOut):(z=r.e,L=!0);continue}I.length>0&&(delete u.tangentIn,delete u.tangentOut)}const s={t:t+r.U*k+(c?rn:0),v:r.v,e:o<l.length-1?r.e:void 0};r.tangentIn&&(s.tangentIn=r.tangentIn),r.tangentOut&&(s.tangentOut=r.tangentOut),I.push(s)}}if(o.extend===N.before){C>1e-9&&function(t,o,r){let e;if(o){e=[];for(let n=j.length-1;n>=0;n--)e.push({U:1-j[n].U,v:j[n].v,e:n>0?A(j[n-1].e):void 0,tangentIn:j[n].tangentOut,tangentOut:j[n].tangentIn})}else e=j;const l=1-r;for(let o=0;o<e.length;o++){const r=e[o];if(r.U<l-1e-9)continue;const i=e[o-1];if(i&&i.U<l-1e-9&&r.U>l+1e-9){const o=r.U-i.U,e=(l-i.U)/o,u=i.e?b(i.e)(e):e,c=vn(n,i.v,r.v,u),{right:s}=g(i.e,e);I.push({t:t,v:c,e:s})}const u={t:t+(r.U-l)*k,v:r.v,e:o<e.length-1?r.e:void 0};r.tangentIn&&(u.tangentIn=r.tangentIn),r.tangentOut&&(u.tangentOut=r.tangentOut),I.push(u)}}(m,!!o.alternate&&O%2==0,C);for(let n=0;n<O;n++){const t=O-1-n,r=!!o.alternate&&t%2==0;x(m+U+n*k,r)}}else{for(let n=0;n<O;n++){const t=!!o.alternate&&n%2==0;x(m+n*k,t)}if(C>1e-9){const n=!!o.alternate&&O%2==0;x(m+O*k,n,C)}}return o.extend===N.before?[...I,...t]:L&&t.length>0?[...t.slice(0,-1),f(s({},t[t.length-1]),{e:z}),...I]:[...t,...I]}(n,p,m,o):p}var pn=0;function hn(n,t){const{startOn:o,outAction:r="continue",scrollIntoViewThreshold:e=0}=t,l=n.getRootElement();if(!l)return console.warn("setupAnimationTriggers: No root element found for animation."),n;let i=!1;const u=()=>{i&&(i=!1,n.setPlaybackRate(1)),n.play()},c=()=>{switch(r){case"pause":n.pause();break;case"reset":n.cancel();break;case"reverse":i=!0,n.setPlaybackRate(-1),n.play()}};switch(o){case"load":{const n=()=>u();"complete"===document.readyState?n():window.addEventListener("load",n,{once:!0});break}case"mouseOver":{let n=!1;const t=()=>{n=!0,u()},o=()=>{n&&c()};l.addEventListener("mouseenter",t),l.addEventListener("mouseleave",o);break}case"click":{const t=()=>{n.isPlaying()?c():u()};l.addEventListener("click",t);break}case"scrollIntoView":{const n=n=>{var t,o;const r=n.boundingClientRect,e=n.intersectionRect;if(!(null==r?void 0:r.height)||!e)return n.intersectionRatio;const l="undefined"!=typeof window&&window.innerHeight?window.innerHeight:1/0,i=null!=(o=null==(t=n.rootBounds)?void 0:t.height)?o:1/0,u=Math.min(l,i),c=Math.min(r.height,Number.isFinite(u)?u:r.height);return c>0?e.height/c:n.intersectionRatio},t=Array.from({length:21},(n,t)=>t/20);let o=!1;new IntersectionObserver(t=>{t.forEach(t=>{t.isIntersecting&&n(t)>=e?(o=!0,u()):o&&(o=!1,c())})},{threshold:t}).observe(l);break}}return n}function mn(n){return"#"+n}function bn(n,t,o,r){var e,l;let i=null!=(e=n.v)?e:n.value;const u=null!=(l=n.e)?l:n.easing,c={offset:t,easing:u&&Array.isArray(u)?"cubic-bezier("+u.join(",")+")":void 0};let s,f=o;var a;return w.has(o)&&Array.isArray(i)?s=function(n){const t=Math.round(255*n[0]),o=Math.round(255*n[1]),r=Math.round(255*n[2]);return 4===n.length?"rgba("+t+","+o+","+r+","+n[3]+")":"rgb("+t+","+o+","+r+")"}(i):"transform"!==o||null===i||"object"!=typeof i||Array.isArray(i)?k.has(o)?(Array.isArray(i)&&("translate"===o&&(i=i.map(n=>n+"px")),i=i.join(",")),"rotate"===o&&(i+="deg"),s=o+"("+i+")",f="transform"):s="d"===o?'path("'+(i&&"object"==typeof i&&Array.isArray(i.paths)?i.paths:[]).map(n=>function(n,t=!1){var o,r,e,l;const i=n.v,u=n.i,c=n.o,s=n.c;if(!i.length)return"";const f=[],a=i.length;f.push("M"+i[0][0]+","+i[0][1]);for(let n=1;n<a;n++){const e=i[n-1],l=null!=(o=null==c?void 0:c[n-1])?o:e,s=null!=(r=null==u?void 0:u[n])?r:i[n],a=i[n];t||l[0]!==e[0]||l[1]!==e[1]||s[0]!==a[0]||s[1]!==a[1]?f.push("C"+l[0]+","+l[1]+","+s[0]+","+s[1]+","+a[0]+","+a[1]):f.push("L"+a[0]+","+a[1])}if(s&&a>0){const n=i[a-1],o=null!=(e=null==c?void 0:c[a-1])?e:n,r=null!=(l=null==u?void 0:u[0])?l:i[0],s=i[0];!t&&o[0]===n[0]&&o[1]===n[1]&&r[0]===s[0]&&r[1]===s[1]||f.push("C"+o[0]+","+o[1]+","+r[0]+","+r[1]+","+s[0]+","+s[1]),f.push("z")}return f.join("")}(n,!0)).join("")+'")':j.has(o)&&"number"==typeof i?100*i+"%":""+i:(s=function(n,t){var o;if(!n)return"";const r=null==(o=null==t?void 0:t.C)||o,e=[],l=n.translate,i=n.origin,u=n.rotate,c=n.skew,s=n.scale,f=r?"px":"",a=r?"deg":"";return l&&e.push("translate("+l[0]+f+","+l[1]+f+")"),i&&e.push("translate("+i[0]+f+","+i[1]+f+")"),null!=u&&e.push("rotate("+u+a+")"),null!=c&&e.push("skewX("+c+a+")"),s&&e.push("scale("+s[0]+","+s[1]+")"),i&&e.push("translate("+-i[0]+f+","+-i[1]+f+")"),e.join("")}(i,{C:!0}),f="transform"),CSS.supports(C(f),s)||r.add(f),f=(a=f).includes("-")?a.replace(/-([a-z])/g,(n,t)=>t.toUpperCase()):a,c[f]=s,c}function yn(n,t,o){var r,e,l,i,u;const c=[];for(let a=0;a<t.length;a++){const v=t[a],d=null!=(r=v.t)?r:0;if(d<0){const o=t[a+1];if(o&&(null!=(e=o.t)?e:0)>=0){const t=(0-d)/((null!=(l=o.t)?l:0)-d),r=v.e?b(v.e)(t):t,{right:e}=g(v.e,t);c.push({t:0,v:vn(n,v.v,o.v,r),e:e})}continue}if(d>o){const r=t[a-1];if(r&&(null!=(i=r.t)?i:0)<=o){const t=null!=(u=r.t)?u:0,e=(o-t)/(d-t),l=r.e?b(r.e)(e):e,{left:i}=g(r.e,e);c.length>0&&(c[c.length-1]=f(s({},c[c.length-1]),{e:i})),c.push({t:o,v:vn(n,r.v,v.v,l),e:void 0})}break}c.push(v)}return c}function gn(n,t,o){var r;const e=new Map;for(const[l,i]of Object.entries(n)){const n=o.duration||1,u=yn(l,i.kfs||i.keyframes||[],n),c=[];for(let o=0;o<u.length;o++){const e=u[o],i=bn(e,T((null!=(r=e.t)?r:0)/n,0,1),l,t);0===o&&(i.offset||0)>0&&c.push(f(s({},i),{offset:0})),c.push(i)}c.length>0&&(c[c.length-1].offset||0)<1&&c.push(f(s({},c[c.length-1]),{offset:1})),c.length>0&&e.set(l,c)}return e}function An(n){const t=function(n){if(!(null==n?void 0:n.data))throw new Error("createAnimator: `data` is required");return n.data}(n);return function(n,o){let r,e=o;n.resetOnFinish&&(e=f(s({},o),{T:()=>{var n;null==(n=null==o?void 0:o.T)||n.call(o),null==r||r.cancel()}}));const l=function(n,t,o,r,e){var l;const i=_(n)||{};if(!o)if(n.id){const t=mn(n.id);(o=document.querySelector(t))||console.warn("createFrameLoopAnimator: No root element found for selector: ",t)}else console.warn("createFrameLoopAnimator: No root element provided");const u=function(n,t=x.waapi){const o=_(n)||{},r=function(n){var t;if(n)return null==(t=_(n))?void 0:t.definitions}(n),e=o.duration||1e3,l=[],i=(n,o)=>{if(!o)return null;const l=function(n,t){if(!n)return[];const o=[];if("string"==typeof n){const r=an(n,t);r&&o.push(r)}else if(Array.isArray(n))for(const r of n){const n=an(r,t);n&&o.push(n)}else o.push(n);return o}(o,r);if(0===l.length)return null;const i=function(n,t,o,r=x.waapi){const e={};for(const[l,i]of Object.entries(n)){if("transform"===l&&"offsetPath"===i.I&&void 0!==n.offsetDistance)continue;const u=dn(l,i,t,o);if(u.length>0){const n={kfs:u};void 0!==i.autoOrient&&(n.autoOrient=i.autoOrient),void 0!==i.loop&&(n.loop=i.loop),e[l]=r===x.waapi&&"transform"===l?q(n):n}}return e}(function(n){const t={};for(const o of n)for(const[n,r]of Object.entries(o))t[n]=r;return t}(l),e,r,t);return 0===Object.keys(i).length?null:{id:n,animate:i}},u=function(n){var t;if(!n)return;const o=null==(t=_(n))?void 0:t.animateById;return o?Object.entries(o).map(([n,t])=>({id:n,animate:t})):void 0}(n);if(u)for(const n of u){const t=i(n.id,n.animate);t&&l.push(t)}const c=n=>{const t=n.animate;if(t&&Object.keys(t).length>0){const o=n.id||"_px_el_"+ ++pn;n.id=o;const r=i(o,t);r&&l.push(r)}if(n.children)for(let t=0;t<n.children.length;t++)c(n.children[t])};if(n.children)for(let t=0;t<n.children.length;t++)c(n.children[t]);return l}(n,x.waapi),c=[],s=i.iterations;let f;"number"==typeof s&&(f=s),"infinite"===s&&(f=1/0);const a=new Set;let v=!1,d=!1;(null==u?void 0:u.length)||console.warn("createWebApiAnimator: No animation bindings defined");for(const n of u||[]){const r=n.animate;if(!r||"object"!=typeof r||Array.isArray(r)){console.warn("createWebApiAnimator: Empty or unresolved binding",n);continue}const u=mn(n.id),s=(null==o?void 0:o.querySelectorAll(u))||document.querySelectorAll(u);0===s.length&&console.warn('createWebApiAnimator: No elements found for selector "'+u+'"');const p=gn(r,a,i),h=i.delay&&i.delay>0?i.delay:void 0;let m;if(i.delay&&i.delay<0&&i.duration){const n=-i.delay;m=f===1/0?n%i.duration:Math.min(n,i.duration*(null!=f?f:1))}const b={duration:i.duration,delay:h,fill:null!=(l=i.fill)?l:"forwards",direction:i.direction,iterations:f};for(let n=0;n<s.length;n++){const o=s[n];for(const[,n]of p)if(n.length>0)try{const r=new KeyframeEffect(o,n,b),l=new Animation(r,document.timeline);e,(null==t?void 0:t.T)&&(l.onfinish=()=>{var n;v||(v=!0,null==(n=t.T)||n.call(t))}),(null==t?void 0:t.S)&&(l.onremove=()=>{var n;d||(d=!0,null==(n=t.S)||n.call(t))}),void 0!==m&&(l.currentTime=m),c.push(l)}catch(n){console.warn(n)}}}const p={isReady:()=>!0,getRootElement:()=>o||null,isPlaying:()=>{var n;return"running"===(null==(n=c[0])?void 0:n.playState)},play:()=>{var n;v=!1,c.forEach(n=>n.play()),null==(n=null==t?void 0:t.P)||n.call(t)},pause:()=>{var n;c.forEach(n=>n.pause()),null==(n=null==t?void 0:t.L)||n.call(t)},cancel:()=>{var n;v=!1,c.forEach(n=>n.cancel()),null==(n=null==t?void 0:t.N)||n.call(t)},finish:()=>{var n;for(const t of c)try{(null==(n=t.effect)?void 0:n.getTiming().iterations)===1/0?(t.effect.updateTiming({iterations:1}),t.finish(),t.effect.updateTiming({iterations:1/0})):t.finish()}catch(n){t.cancel()}},setPlaybackRate:n=>(c.forEach(t=>t.playbackRate=n),p),getCurrentTime:()=>{var n,t;const o=null!=(t=null==(n=c[0])?void 0:n.currentTime)?t:null;return null!==o?+o:null},setCurrentTime:n=>{v=!1,c.forEach(t=>{t.currentTime=n})},destroy:()=>{var n;p.cancel(),c.splice(0,c.length),d||(d=!0,null==(n=null==t?void 0:t.S)||n.call(t))}};return i.trigger&&("scroll"===i.timelineSource?console.warn("scroll timeline: `animator.trigger` is ignored (triggers do not apply to scroll-driven playback)"):hn(p,i.trigger)),p}(t,e,null);return r=l,n.debugInstName&&(window[n.debugInstName]=l),l}(_(t)||{},n._)}var Mn,wn="data";return Mn=a,((t,r,l,u)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let l of e(r))i.call(t,l)||void 0===l||n(t,l,{get:()=>r[l],enumerable:!(u=o(r,l))||u.enumerable});return t})(n({},"__esModule",{value:!0}),Mn)})();
@@ -43,41 +43,6 @@ var PixodeskAnimator = (() => {
43
43
  setupAnimationTriggers: () => setupAnimationTriggers
44
44
  });
45
45
 
46
- // ../svg-animator-core/src/PxAnimatorConstants.ts
47
- var PxAnimatorMode = {
48
- auto: "auto",
49
- waapi: "waapi",
50
- frames: "frames"
51
- };
52
- var PxAnimatorEngine = {
53
- waapi: PxAnimatorMode.waapi,
54
- frames: PxAnimatorMode.frames
55
- };
56
- var PxLoopExtend = {
57
- /** Segment from the START; the animation is extended BEFORE the first keyframe
58
- * (intro loops that run before the main timeline begins). */
59
- before: "before",
60
- /** DEFAULT — segment from the END; extended AFTER the last keyframe (idle/outro
61
- * loops that continue once the main timeline has finished). */
62
- after: "after"
63
- };
64
- function getAnimatorConfig(doc) {
65
- var _a;
66
- return (doc == null ? void 0 : doc.animator) || ((_a = doc == null ? void 0 : doc.meta) == null ? void 0 : _a.animator);
67
- }
68
- function getDefs(doc) {
69
- var _a;
70
- if (!doc) return void 0;
71
- return (_a = getAnimatorConfig(doc)) == null ? void 0 : _a.definitions;
72
- }
73
- function getBindings(doc) {
74
- var _a;
75
- if (!doc) return void 0;
76
- const animateById = (_a = getAnimatorConfig(doc)) == null ? void 0 : _a.animateById;
77
- if (!animateById) return void 0;
78
- return Object.entries(animateById).map(([id, anim]) => ({ id, animate: anim }));
79
- }
80
-
81
46
  // ../svg-animator-core/src/PxAnimatorUtil.ts
82
47
  function bezierToSvgPath(path, forceCurves = false) {
83
48
  var _a, _b, _c, _d;
@@ -476,6 +441,97 @@ var PixodeskAnimator = (() => {
476
441
  return cubicBezier(flipped);
477
442
  }
478
443
 
444
+ // ../svg-animator-core/src/PxScrollMath.ts
445
+ function isScrollTimeline(config) {
446
+ return (config == null ? void 0 : config.timelineSource) === "scroll";
447
+ }
448
+ function scrollTotalDurationMs(config) {
449
+ const duration = typeof (config == null ? void 0 : config.duration) === "number" && config.duration > 0 ? config.duration : DEFAULT_DURATION_MS;
450
+ const iterations = typeof (config == null ? void 0 : config.iterations) === "number" && config.iterations > 0 ? config.iterations : 1;
451
+ return duration * iterations;
452
+ }
453
+ function scrollPhaseInterval(phase, subjectSize, scrollportSize) {
454
+ const s = subjectSize, vp = scrollportSize;
455
+ switch (phase) {
456
+ case "cover":
457
+ return [0, s + vp];
458
+ case "entry":
459
+ return [0, Math.min(s, vp)];
460
+ case "contain":
461
+ return [Math.min(s, vp), Math.max(s, vp)];
462
+ case "exit":
463
+ return [Math.max(s, vp), s + vp];
464
+ case "entry-crossing":
465
+ return [0, s];
466
+ case "exit-crossing":
467
+ return [vp, s + vp];
468
+ }
469
+ }
470
+ var DEFAULT_PHASE = "cover";
471
+ function resolveRangePointU(point, defaultFraction, subjectSize, scrollportSize) {
472
+ var _a;
473
+ const [u0, u1] = scrollPhaseInterval((_a = point == null ? void 0 : point.phase) != null ? _a : DEFAULT_PHASE, subjectSize, scrollportSize);
474
+ const fraction = typeof (point == null ? void 0 : point.fraction) === "number" ? point.fraction : defaultFraction;
475
+ return u0 + fraction * (u1 - u0);
476
+ }
477
+ function scrollViewProgress(subjectStart, subjectSize, scrollportSize, range) {
478
+ const u = scrollportSize - subjectStart;
479
+ const uStart = resolveRangePointU(range == null ? void 0 : range.start, 0, subjectSize, scrollportSize);
480
+ const uEnd = resolveRangePointU(range == null ? void 0 : range.end, 1, subjectSize, scrollportSize);
481
+ if (uEnd <= uStart) return u >= uEnd ? 1 : 0;
482
+ return clamp((u - uStart) / (uEnd - uStart), 0, 1);
483
+ }
484
+ function scrollOffsetProgress(offset, maxOffset, range) {
485
+ var _a, _b;
486
+ const raw = maxOffset > 0 ? clamp(offset / maxOffset, 0, 1) : 1;
487
+ const start = typeof ((_a = range == null ? void 0 : range.start) == null ? void 0 : _a.fraction) === "number" ? range.start.fraction : 0;
488
+ const end = typeof ((_b = range == null ? void 0 : range.end) == null ? void 0 : _b.fraction) === "number" ? range.end.fraction : 1;
489
+ if (end <= start) return raw >= end ? 1 : 0;
490
+ return clamp((raw - start) / (end - start), 0, 1);
491
+ }
492
+ function scrollResolveAxis(axis, writingMode) {
493
+ const a = axis != null ? axis : "block";
494
+ if (a === "x" || a === "y") return a;
495
+ const vertical = !!writingMode && writingMode.startsWith("vertical");
496
+ if (a === "inline") return vertical ? "y" : "x";
497
+ return vertical ? "x" : "y";
498
+ }
499
+
500
+ // ../svg-animator-core/src/PxAnimatorConstants.ts
501
+ var PxAnimatorMode = {
502
+ auto: "auto",
503
+ waapi: "waapi",
504
+ frames: "frames"
505
+ };
506
+ var PxAnimatorEngine = {
507
+ waapi: PxAnimatorMode.waapi,
508
+ frames: PxAnimatorMode.frames
509
+ };
510
+ var PxLoopExtend = {
511
+ /** Segment from the START; the animation is extended BEFORE the first keyframe
512
+ * (intro loops that run before the main timeline begins). */
513
+ before: "before",
514
+ /** DEFAULT — segment from the END; extended AFTER the last keyframe (idle/outro
515
+ * loops that continue once the main timeline has finished). */
516
+ after: "after"
517
+ };
518
+ function getAnimatorConfig(doc) {
519
+ var _a;
520
+ return (doc == null ? void 0 : doc.animator) || ((_a = doc == null ? void 0 : doc.meta) == null ? void 0 : _a.animator);
521
+ }
522
+ function getDefs(doc) {
523
+ var _a;
524
+ if (!doc) return void 0;
525
+ return (_a = getAnimatorConfig(doc)) == null ? void 0 : _a.definitions;
526
+ }
527
+ function getBindings(doc) {
528
+ var _a;
529
+ if (!doc) return void 0;
530
+ const animateById = (_a = getAnimatorConfig(doc)) == null ? void 0 : _a.animateById;
531
+ if (!animateById) return void 0;
532
+ return Object.entries(animateById).map(([id, anim]) => ({ id, animate: anim }));
533
+ }
534
+
479
535
  // ../svg-animator-core/src/PxMotionPath.ts
480
536
  function getKfTranslate(kf) {
481
537
  var _a;
@@ -836,7 +892,7 @@ var PixodeskAnimator = (() => {
836
892
  }
837
893
 
838
894
  // ../svg-animator-core/src/PxDefinitions.ts
839
- var LOOP_JUMP_SHIFT_MS = 10;
895
+ var LOOP_JUMP_SHIFT_MS = 1;
840
896
  function deepEqualValue(a, b) {
841
897
  if (a === b) return true;
842
898
  if (typeof a !== typeof b || a === null || b === null || typeof a !== "object") return false;
@@ -1085,6 +1141,8 @@ var PixodeskAnimator = (() => {
1085
1141
  const looped = [];
1086
1142
  const separateBoundary = loop.extend !== PxLoopExtend.before;
1087
1143
  const originalTerminalKf = keyframes[keyframes.length - 1];
1144
+ let terminalEasingOverride;
1145
+ let hasTerminalEasingOverride = false;
1088
1146
  function appendRep(repStart, isReversed, partial) {
1089
1147
  var _a2;
1090
1148
  let entries;
@@ -1125,7 +1183,16 @@ var PixodeskAnimator = (() => {
1125
1183
  const prevKf = looped.length > 0 ? looped[looped.length - 1] : originalTerminalKf;
1126
1184
  const isBoundary = separateBoundary && i === 0 && prevKf !== void 0 && Math.abs(((_a2 = prevKf.t) != null ? _a2 : 0) - (repStart + entry.relT * segDuration)) < 1e-9;
1127
1185
  if (isBoundary) {
1128
- if (deepEqualValue(prevKf.v, entry.v)) continue;
1186
+ if (deepEqualValue(prevKf.v, entry.v)) {
1187
+ if (looped.length > 0) {
1188
+ prevKf.e = entry.e;
1189
+ prevKf.tangentOut = entry.tangentOut;
1190
+ } else {
1191
+ terminalEasingOverride = entry.e;
1192
+ hasTerminalEasingOverride = true;
1193
+ }
1194
+ continue;
1195
+ }
1129
1196
  if (looped.length > 0) {
1130
1197
  delete prevKf.tangentIn;
1131
1198
  delete prevKf.tangentOut;
@@ -1206,6 +1273,11 @@ var PixodeskAnimator = (() => {
1206
1273
  if (loop.extend === PxLoopExtend.before) {
1207
1274
  return [...looped, ...keyframes];
1208
1275
  } else {
1276
+ if (hasTerminalEasingOverride && keyframes.length > 0) {
1277
+ const head = keyframes.slice(0, -1);
1278
+ const tail = __spreadProps(__spreadValues({}, keyframes[keyframes.length - 1]), { e: terminalEasingOverride });
1279
+ return [...head, tail, ...looped];
1280
+ }
1209
1281
  return [...keyframes, ...looped];
1210
1282
  }
1211
1283
  }
@@ -1262,6 +1334,9 @@ var PixodeskAnimator = (() => {
1262
1334
  function normalizeAnimationDefinition(animDef, duration, defs, engine = PxAnimatorEngine.waapi) {
1263
1335
  const normalized = {};
1264
1336
  for (const [propName, propAnim] of Object.entries(animDef)) {
1337
+ if (propName === "transform" && propAnim.alongPathMode === "offsetPath" && animDef["offsetDistance"] !== void 0) {
1338
+ continue;
1339
+ }
1265
1340
  const normalizedKfs = normalizeKeyframes(propName, propAnim, duration, defs);
1266
1341
  if (normalizedKfs.length > 0) {
1267
1342
  const out = { kfs: normalizedKfs };
@@ -1866,7 +1941,13 @@ var PixodeskAnimator = (() => {
1866
1941
  const api = __spreadProps(__spreadValues({}, basicApi), {
1867
1942
  "getRootElement": () => rootElement || null
1868
1943
  });
1869
- if (config.trigger) setupAnimationTriggers(api, config.trigger);
1944
+ if (config.trigger) {
1945
+ if (isScrollTimeline(config)) {
1946
+ console.warn("scroll timeline: `animator.trigger` is ignored (triggers do not apply to scroll-driven playback)");
1947
+ } else {
1948
+ setupAnimationTriggers(api, config.trigger);
1949
+ }
1950
+ }
1870
1951
  return api;
1871
1952
  }
1872
1953
  function createDomAdapter(rootElement) {
@@ -1924,6 +2005,8 @@ var PixodeskAnimator = (() => {
1924
2005
  } else if (propName === "d") {
1925
2006
  const paths = value && typeof value === "object" && Array.isArray(value.paths) ? value.paths : [];
1926
2007
  cssValue = 'path("' + paths.map((bz) => bezierToSvgPath(bz, true)).join("") + '")';
2008
+ } else if (PCT_BASED_ATTR_NAMES.has(propName) && typeof value === "number") {
2009
+ cssValue = value * 100 + "%";
1927
2010
  } else {
1928
2011
  cssValue = "" + value;
1929
2012
  }
@@ -1992,7 +2075,7 @@ var PixodeskAnimator = (() => {
1992
2075
  }
1993
2076
  return result;
1994
2077
  }
1995
- function createWebApiAnimator(doc, callbacks, rootElement, forceEvenIfHasUnsupportedAttrs) {
2078
+ function createWebApiAnimator(doc, callbacks, rootElement, forceEvenIfHasUnsupportedAttrs, scrollTimeline) {
1996
2079
  var _a;
1997
2080
  const config = getAnimatorConfig(doc) || {};
1998
2081
  if (!rootElement) {
@@ -2051,7 +2134,12 @@ var PixodeskAnimator = (() => {
2051
2134
  if (keyframes.length > 0) {
2052
2135
  try {
2053
2136
  const effect = new KeyframeEffect(element, keyframes, effectOptions);
2054
- const anim = new Animation(effect, document.timeline);
2137
+ const anim = new Animation(effect, scrollTimeline ? scrollTimeline.timeline : document.timeline);
2138
+ if (scrollTimeline) {
2139
+ const a = anim;
2140
+ if (scrollTimeline.rangeStart) a.rangeStart = scrollTimeline.rangeStart;
2141
+ if (scrollTimeline.rangeEnd) a.rangeEnd = scrollTimeline.rangeEnd;
2142
+ }
2055
2143
  if (callbacks == null ? void 0 : callbacks.onFinish) anim.onfinish = () => {
2056
2144
  var _a2;
2057
2145
  if (finishNotified) return;
@@ -2145,11 +2233,136 @@ var PixodeskAnimator = (() => {
2145
2233
  }
2146
2234
  };
2147
2235
  if (config.trigger) {
2148
- setupAnimationTriggers(api, config.trigger);
2236
+ if (config.timelineSource === "scroll") {
2237
+ console.warn("scroll timeline: `animator.trigger` is ignored (triggers do not apply to scroll-driven playback)");
2238
+ } else {
2239
+ setupAnimationTriggers(api, config.trigger);
2240
+ }
2241
+ }
2242
+ if (scrollTimeline) {
2243
+ animations.forEach((a) => a.play());
2149
2244
  }
2150
2245
  return api;
2151
2246
  }
2152
2247
 
2248
+ // src/PxScrollDriver.ts
2249
+ function nativeRangeOffset(point, defaultFraction, view) {
2250
+ var _a, _b, _c;
2251
+ const fraction = typeof (point == null ? void 0 : point.fraction) === "number" ? point.fraction : defaultFraction;
2252
+ const pct = (_b = (_a = globalThis.CSS) == null ? void 0 : _a.percent) == null ? void 0 : _b.call(_a, fraction * 100);
2253
+ if (pct === void 0) return void 0;
2254
+ return view ? { rangeName: (_c = point == null ? void 0 : point.phase) != null ? _c : "cover", offset: pct } : { offset: pct };
2255
+ }
2256
+ function createNativeScrollTimeline(subject, config) {
2257
+ var _a, _b, _c, _d;
2258
+ if (!config || !isScrollTimeline(config)) return null;
2259
+ const scroll = config.scroll || {};
2260
+ const kind = (_a = scroll.kind) != null ? _a : "view";
2261
+ const g = globalThis;
2262
+ const view = kind === "view";
2263
+ const Ctor = view ? g.ViewTimeline : g.ScrollTimeline;
2264
+ if (typeof Ctor !== "function") return null;
2265
+ const axis = (_b = scroll.axis) != null ? _b : "block";
2266
+ let timeline;
2267
+ try {
2268
+ if (view) {
2269
+ timeline = new Ctor({ subject, axis });
2270
+ } else {
2271
+ const source = scroll.source === "root" ? documentScroller() : findNearestScroller(subject, "y") || findNearestScroller(subject, "x") || documentScroller();
2272
+ timeline = new Ctor({ source, axis });
2273
+ }
2274
+ } catch (e) {
2275
+ console.warn("scroll timeline: native timeline construction failed \u2014 falling back to the custom driver", e);
2276
+ return null;
2277
+ }
2278
+ return {
2279
+ timeline,
2280
+ rangeStart: nativeRangeOffset((_c = scroll.range) == null ? void 0 : _c.start, 0, view),
2281
+ rangeEnd: nativeRangeOffset((_d = scroll.range) == null ? void 0 : _d.end, 1, view)
2282
+ };
2283
+ }
2284
+ function findNearestScroller(el, axis) {
2285
+ for (let p = el.parentElement; p; p = p.parentElement) {
2286
+ const style = getComputedStyle(p);
2287
+ const overflow = axis === "y" ? style.overflowY : style.overflowX;
2288
+ if (overflow === "auto" || overflow === "scroll" || overflow === "hidden" || overflow === "overlay") {
2289
+ return p;
2290
+ }
2291
+ }
2292
+ return null;
2293
+ }
2294
+ function documentScroller() {
2295
+ return document.scrollingElement || document.documentElement;
2296
+ }
2297
+ function createScrollDriver(subject, config, onProgress) {
2298
+ var _a;
2299
+ if (!config || !isScrollTimeline(config)) return null;
2300
+ const scroll = config.scroll || {};
2301
+ const kind = (_a = scroll.kind) != null ? _a : "view";
2302
+ const nearest = findNearestScroller(subject, "y") || findNearestScroller(subject, "x");
2303
+ const scroller = kind === "scroll" && scroll.source === "root" ? documentScroller() : nearest || documentScroller();
2304
+ const isRootScroller = scroller === documentScroller();
2305
+ const axis = scrollResolveAxis(scroll.axis, getComputedStyle(scroller).writingMode);
2306
+ const compute = () => {
2307
+ if (kind === "scroll") {
2308
+ const offset = axis === "y" ? scroller.scrollTop : scroller.scrollLeft;
2309
+ const maxOffset = axis === "y" ? scroller.scrollHeight - scroller.clientHeight : scroller.scrollWidth - scroller.clientWidth;
2310
+ return scrollOffsetProgress(offset, maxOffset, scroll.range);
2311
+ }
2312
+ const subjectRect = subject.getBoundingClientRect();
2313
+ let portStart, portSize;
2314
+ if (isRootScroller) {
2315
+ portStart = 0;
2316
+ portSize = axis === "y" ? document.documentElement.clientHeight : document.documentElement.clientWidth;
2317
+ } else {
2318
+ const portRect = scroller.getBoundingClientRect();
2319
+ portStart = axis === "y" ? portRect.top : portRect.left;
2320
+ portSize = axis === "y" ? scroller.clientHeight : scroller.clientWidth;
2321
+ }
2322
+ const subjectStart = (axis === "y" ? subjectRect.top : subjectRect.left) - portStart;
2323
+ const subjectSize = axis === "y" ? subjectRect.height : subjectRect.width;
2324
+ return scrollViewProgress(subjectStart, subjectSize, portSize, scroll.range);
2325
+ };
2326
+ let rafId = null;
2327
+ let destroyed = false;
2328
+ const tick = () => {
2329
+ rafId = null;
2330
+ if (destroyed) return;
2331
+ onProgress(compute());
2332
+ };
2333
+ const schedule = () => {
2334
+ if (destroyed || rafId !== null) return;
2335
+ rafId = requestAnimationFrame(tick);
2336
+ };
2337
+ const scrollTarget = isRootScroller ? window : scroller;
2338
+ scrollTarget.addEventListener("scroll", schedule, { passive: true });
2339
+ window.addEventListener("resize", schedule, { passive: true });
2340
+ let resizeObserver;
2341
+ if (typeof ResizeObserver !== "undefined") {
2342
+ resizeObserver = new ResizeObserver(schedule);
2343
+ resizeObserver.observe(subject);
2344
+ if (!isRootScroller) resizeObserver.observe(scroller);
2345
+ }
2346
+ const driver = {
2347
+ destroy: () => {
2348
+ if (destroyed) return;
2349
+ destroyed = true;
2350
+ scrollTarget.removeEventListener("scroll", schedule);
2351
+ window.removeEventListener("resize", schedule);
2352
+ resizeObserver == null ? void 0 : resizeObserver.disconnect();
2353
+ if (rafId !== null) {
2354
+ cancelAnimationFrame(rafId);
2355
+ rafId = null;
2356
+ }
2357
+ },
2358
+ refresh: () => {
2359
+ if (!destroyed) onProgress(compute());
2360
+ }
2361
+ };
2362
+ driver.refresh();
2363
+ return driver;
2364
+ }
2365
+
2153
2366
  // src/PxAnimatorBind.ts
2154
2367
  function finaliseAnimator(animatorConfig, callbacks, make) {
2155
2368
  let apiRef;
@@ -2172,6 +2385,44 @@ var PixodeskAnimator = (() => {
2172
2385
  }
2173
2386
  function bindWithEngineChoice(doc, adapter, callbacks, rootElement) {
2174
2387
  const animatorConfig = getAnimatorConfig(doc) || {};
2388
+ if (isScrollTimeline(animatorConfig)) {
2389
+ return finaliseAnimator(animatorConfig, callbacks, (cb) => {
2390
+ var _a, _b;
2391
+ if (animatorConfig.mode !== PxAnimatorMode.frames && ((_a = animatorConfig.scroll) == null ? void 0 : _a.driver) === "native" && rootElement) {
2392
+ const native = createNativeScrollTimeline(rootElement, animatorConfig);
2393
+ if (native) {
2394
+ const api2 = createWebApiAnimator(
2395
+ doc,
2396
+ cb,
2397
+ rootElement,
2398
+ animatorConfig.mode === PxAnimatorMode.waapi,
2399
+ native
2400
+ );
2401
+ if (api2) return api2;
2402
+ }
2403
+ }
2404
+ const api = (animatorConfig.mode !== PxAnimatorMode.frames ? createWebApiAnimator(doc, cb, rootElement, animatorConfig.mode === PxAnimatorMode.waapi) : null) || createFrameLoopAnimator(doc, adapter, cb, rootElement);
2405
+ const subject = ((_b = api.getRootElement) == null ? void 0 : _b.call(api)) || rootElement;
2406
+ if (subject) {
2407
+ const totalMs = scrollTotalDurationMs(animatorConfig);
2408
+ const driver = createScrollDriver(
2409
+ subject,
2410
+ animatorConfig,
2411
+ (progress) => api.setCurrentTime(progress * totalMs)
2412
+ );
2413
+ if (driver) {
2414
+ const destroy = api.destroy.bind(api);
2415
+ api.destroy = () => {
2416
+ driver.destroy();
2417
+ destroy();
2418
+ };
2419
+ }
2420
+ } else {
2421
+ console.warn("scroll timeline: no root element to observe \u2014 animation will stay at frame 0");
2422
+ }
2423
+ return api;
2424
+ });
2425
+ }
2175
2426
  return finaliseAnimator(animatorConfig, callbacks, (cb) => {
2176
2427
  if (animatorConfig.mode === PxAnimatorMode.frames) {
2177
2428
  return createFrameLoopAnimator(doc, adapter, cb, rootElement);