@pixodesk/svg-animator-web 1.0.45 → 1.0.47

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/internal.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  PLAY_WHEN_VISIBLE_DEFAULTS,
3
3
  PX_ANIMATOR_DOC_KEY,
4
4
  createVisibilityGate
5
- } from "./chunk-QE7KJWAN.js";
5
+ } from "./chunk-ZBGGXE5W.js";
6
6
  export {
7
7
  PLAY_WHEN_VISIBLE_DEFAULTS,
8
8
  PX_ANIMATOR_DOC_KEY,
@@ -1 +1 @@
1
- var t,e=Object.defineProperty,i=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,s={};((t,i)=>{for(var n in i)e(t,n,{get:i[n],enumerable:!0})})(s,{PLAY_WHEN_VISIBLE_DEFAULTS:()=>Ft,PX_ANIMATOR_DOC_KEY:()=>r,createVisibilityGate:()=>Wt}),module.exports=(t=s,((t,s,r,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let r of n(s))o.call(t,r)||void 0===r||e(t,r,{get:()=>s[r],enumerable:!(a=i(s,r))||a.enumerable});return t})(e({},"__esModule",{value:!0}),t));var r="doc",a=Object.defineProperty,l=Object.defineProperties,p=Object.getOwnPropertyDescriptors,u=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable,d=(t,e,i)=>e in t?a(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,f=(t,e)=>{for(var i in e||(e={}))c.call(e,i)&&d(t,i,e[i]);if(u)for(var i of u(e))h.call(e,i)&&d(t,i,e[i]);return t},y=(t,e)=>l(t,p(e));function m(t){if(!t.length)return".";let e="";for(const i of t)i.startsWith("[")?e+=i:e+=(e?".":"")+i;return e}var g=class{_canSanitize(t){return this.isValid(t)}optional(){return new _(this)}},_=class extends g{constructor(t){super(),this.inner=t,this._default=void 0}sanitize(t){if(null!=t)return this.inner._canSanitize(t)?this.inner.sanitize(t):void 0}isValid(t,e,i){return null==t||this.inner.isValid(t,e,i)}_canSanitize(t){return null==t||this.inner._canSanitize(t)}},v=class extends g{constructor(t=""){super(),this._default=t}sanitize(t){return"string"==typeof t?t:this._default}isValid(t,e,i){return"string"==typeof t||(null==e||e.errors.push(m(null!=i?i:[])+": expected string, got "+typeof t),!1)}},b=class extends g{constructor(t=0){super(),this._default=t}sanitize(t){return"number"==typeof t&&isFinite(t)?t:this._default}isValid(t,e,i){return!("number"!=typeof t||!isFinite(t))||(null==e||e.errors.push(m(null!=i?i:[])+": expected finite number, got "+JSON.stringify(t)),!1)}},A=class extends g{constructor(t=!1){super(),this._default=t}sanitize(t){return"boolean"==typeof t?t:this._default}isValid(t,e,i){return"boolean"==typeof t||(null==e||e.errors.push(m(null!=i?i:[])+": expected boolean, got "+typeof t),!1)}},x=class extends g{constructor(t){super(),this.value=t,this._default=t}sanitize(t){return t===this.value?this.value:this._default}isValid(t,e,i){return t===this.value||(null==e||e.errors.push(m(null!=i?i:[])+": expected "+JSON.stringify(this.value)+", got "+JSON.stringify(t)),!1)}},S=class extends g{constructor(t,e){super(),this.values=t,this._default=null!=e?e:t[0]}sanitize(t){return this.values.includes(t)?t:this._default}isValid(t,e,i){return!!this.values.includes(t)||(null==e||e.errors.push(m(null!=i?i:[])+": expected one of "+this.values.map(t=>JSON.stringify(t)).join(" | ")+", got "+JSON.stringify(t)),!1)}},O=class extends g{constructor(t,e){super(),this.schemas=t,this._kind="union",this._default=null!=e?e:t[0]._default}sanitize(t){for(const e of this.schemas)if(e.isValid(t))return e.sanitize(t);return this._default}isValid(t,e,i){var n;const o=e&&{errors:[],warnings:[],strict:e.strict};if(this.schemas.some(e=>e.isValid(t,o,i?[...i]:void 0)))return!0;if(!e)return!1;const s=m(null!=i?i:[]);let r;e.errors.push(s+": no union member matched for value "+(null!=(n=JSON.stringify(t))?n:"").slice(0,240));let a=-1;const l=[];for(const n of this.schemas){const o={errors:[],warnings:[],strict:e.strict};if(n.isValid(t,o,i?[...i]:void 0),!o.errors.length)continue;const p=Math.max(...o.errors.map(t=>t.slice(0,t.indexOf(":")).length));if((p>a||p===a&&r&&o.errors.length<r.length)&&(a=p,r=o.errors),p<=s.length)for(const t of o.errors){const e=/: expected (.+?), got /.exec(t);e&&!l.includes(e[1])&&l.push(e[1])}}if(r&&a>s.length)for(const t of r.slice(0,4))e.errors.includes(t)||e.errors.push(t);else l.length&&e.errors.push(s+": expected "+l.join(" | "));return!1}_canSanitize(t){return this.schemas.some(e=>e._canSanitize(t))}},j=class extends g{constructor(t){super(),this._shape=t;const e={};for(const i of Object.keys(t))e[i]=t[i]._default;this._default=e}sanitize(t){const e=t&&"object"==typeof t&&!Array.isArray(t)?t:{},i={};for(const t of Object.keys(this._shape)){const n=this._shape[t].sanitize(e[t]);void 0!==n&&(i[t]=n)}return i}isValid(t,e,i){if(!t||"object"!=typeof t||Array.isArray(t))return null==e||e.errors.push(m(null!=i?i:[])+": expected object, got "+(Array.isArray(t)?"array":typeof t)),!1;const n=t,o=null!=i?i:[];let s=!0;for(const t of Object.keys(this._shape))o.push(t),this._shape[t].isValid(n[t],e,o)||(s=!1),o.pop();if(null==e?void 0:e.strict)for(const t of Object.keys(n))t in this._shape||void 0!==n[t]&&(o.push(t),e.errors.push(m(o)+": unexpected extra key"),o.pop(),s=!1);return s}_canSanitize(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}},w=class extends g{constructor(t,e){super(),this._shape=t,this._openSchema=e;const i={};for(const e of Object.keys(t))i[e]=t[e]._default;this._default=i}sanitize(t){const e=t&&"object"==typeof t&&!Array.isArray(t)?t:{},i=f({},e);for(const t of Object.keys(this._shape)){const n=this._shape[t].sanitize(e[t]);void 0!==n&&(i[t]=n)}if(this._openSchema)for(const t of Object.keys(e))t in this._shape||(i[t]=this._openSchema.sanitize(e[t]));return i}isValid(t,e,i){if(!t||"object"!=typeof t||Array.isArray(t))return null==e||e.errors.push(m(null!=i?i:[])+": expected object, got "+(Array.isArray(t)?"array":typeof t)),!1;const n=t,o=null!=i?i:[];let s=!0;for(const t of Object.keys(this._shape))o.push(t),this._shape[t].isValid(n[t],e,o)||(s=!1),o.pop();if(this._openSchema)for(const t of Object.keys(n))t in this._shape||(o.push(t),this._openSchema.isValid(n[t],e,o)||(s=!1),o.pop());return s}_canSanitize(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}},z=class extends g{constructor(t){super(),this.item=t,this._default=[]}sanitize(t){if(!Array.isArray(t))return[];const e=[];for(const i of t)this.item._canSanitize(i)&&e.push(this.item.sanitize(i));return e}isValid(t,e,i){if(!Array.isArray(t))return null==e||e.errors.push(m(null!=i?i:[])+": expected array, got "+typeof t),!1;const n=null!=i?i:[];let o=!0;for(let i=0;i<t.length;i++)n.push("["+i+"]"),this.item.isValid(t[i],e,n)||(o=!1),n.pop();return o}_canSanitize(t){return Array.isArray(t)}},k=class extends g{constructor(t){super(),this.value=t,this._kind="record",this._default={}}sanitize(t){if(!t||"object"!=typeof t||Array.isArray(t))return{};const e={};for(const[i,n]of Object.entries(t))this.value._canSanitize(n)&&(e[i]=this.value.sanitize(n));return e}isValid(t,e,i){if(!t||"object"!=typeof t||Array.isArray(t))return null==e||e.errors.push(m(null!=i?i:[])+": expected object/record, got "+(Array.isArray(t)?"array":typeof t)),!1;const n=null!=i?i:[];let o=!0;for(const[i,s]of Object.entries(t))n.push(i),this.value.isValid(s,e,n)||(o=!1),n.pop();return o}_canSanitize(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}},V=class extends g{constructor(t,e){super(),this.fn=t,this._default=e,this.resolved=null}get schema(){var t;return null!=(t=this.resolved)?t:this.resolved=this.fn()}sanitize(t){return this.schema.sanitize(t)}isValid(t,e,i){return this.schema.isValid(t,e,i)}_canSanitize(t){return this.schema._canSanitize(t)}},P=class extends g{constructor(t){super(),this.schemas=t,this._kind="tuple",this._default=t.map(t=>t._default)}sanitize(t){return Array.isArray(t)&&t.length===this.schemas.length?this.schemas.map((e,i)=>e.sanitize(t[i])):this._default}isValid(t,e,i){if(!Array.isArray(t)||t.length!==this.schemas.length)return null==e||e.errors.push(m(null!=i?i:[])+": expected tuple of length "+this.schemas.length+", got "+(Array.isArray(t)?"array["+t.length+"]":typeof t)),!1;const n=null!=i?i:[];let o=!0;for(let i=0;i<this.schemas.length;i++)n.push("["+i+"]"),this.schemas[i].isValid(t[i],e,n)||(o=!1),n.pop();return o}_canSanitize(t){return Array.isArray(t)&&t.length===this.schemas.length}},N=(t="")=>new v(t),D=(t=0)=>new b(t),M=(t=!1)=>new A(t),T=t=>new x(t),E=(t,e)=>new S(t,e),I=(t,e)=>new O(t,e),B=t=>new j(t),J=(t,e)=>new w(t,e),R=t=>new z(t),C=t=>new k(t),G=t=>new P(t),L=(t,e)=>new V(t,e),U=/^(\d+)\.(\d+)(?:\.(\d+))?$/;!function(){const t=U.exec("1.2".trim());t&&(Number(t[1]),Number(t[2]),void 0===t[3]||Number(t[3]))}();var F,q={pause:"pause",continue:"continue",reset:"reset"},H="block",W="inline",Y="nearest",K="root",X="center",$="bottom",Q=y(f({},{native:"native",js:"js"}),{auto:"auto"}),Z="pause",tt="userSpaceOnUse",et="objectBoundingBox",it=I([N(),G([D(),D(),D(),D()])]),nt=I([N(),D(),R(D()),B({pathData:N()}),L(()=>R(Tt),[]),L(()=>at,{})]),ot=B({time:D().optional(),value:nt.optional(),easing:it.optional(),tangentOut:G([D(),D()]).optional(),tangentIn:G([D(),D()]).optional()}),st=B({segmentCount:D().optional(),repeatAt:E(["start","end"]).optional(),direction:E(["normal","alternate"]).optional()}),rt=B({value:nt.optional(),keyframes:R(ot).optional(),loop:I([st,M()]).optional(),autoOrient:M().optional(),alongPathMode:E(["sampled","offsetPath"]).optional()}),at=B({translate:G([D(),D()]).optional(),rotate:D().optional(),skew:D().optional(),scale:G([D(),D()]).optional(),origin:G([D(),D()]).optional()}),lt=(I([N(),at,B({value:at}),rt]),C(rt)),pt=I([N(),R(I([N(),lt])),lt]),ut=B({start:E(["load","mouseOver","click","none"],"load").optional(),offScreen:E([q.pause,q.continue,q.reset],Z).optional(),mouseOut:E(["continue","pause","reset","reverse"],"continue").optional(),finish:E(["hold","reset"]).optional(),visibilityThreshold:D().optional(),visibilityDebounce:D().optional()}),ct=B({width:D(),pathData:N()}),ht=B({fontFamily:N(),fontStyle:N(),ascent:D(),unitsPerEm:D(),glyphs:C(ct)}),dt=B({easings:C(G([D(),D(),D(),D()])).optional(),animations:C(lt).optional(),fonts:C(ht).optional()}),ft=B({phase:E(["cover","contain","entry","exit","entry-crossing","exit-crossing"]).optional(),fraction:D().optional()}),yt=B({start:ft.optional(),end:ft.optional()}),mt=(B({kind:E(["view","scroll"]).optional(),axis:E([H,W,"x","y"]).optional(),source:E([Y,K]).optional(),subject:N().optional(),smoothing:D().optional(),pin:M().optional(),pinAlign:E(["top",X,$]).optional(),pinOffset:D().optional(),pinDistance:D().optional(),range:yt.optional()}),B({align:E(["top",X,$]).optional(),offset:D().optional(),distance:D().optional()})),gt=E([Q.auto,Q.native,Q.js]).optional(),_t=B({type:T("time").optional(),engine:gt,frameRate:D().optional(),duration:D().optional(),trigger:ut.optional(),delay:D().optional(),iterations:I([D(),T("infinite")]).optional(),fillMode:E(["forwards","backwards","both","none"]).optional(),direction:E(["normal","reverse","alternate","alternate-reverse"]).optional()}),vt={duration:D().optional(),iterations:D().optional(),engine:gt,frameRate:D().optional(),axis:E([H,W,"x","y"]).optional(),source:E([Y,K]).optional(),subject:N().optional(),smoothing:D().optional(),pin:I([M(),mt]).optional(),range:yt.optional()},bt=(F=[_t,B(f({type:T("scroll")},vt)),B(f({type:T("view")},vt))],new class extends g{constructor(t,e,i){var n;super(),this._key=t,this._schemas=e,this._kind="discriminatedUnion",this._default=null!=i?i:e[0]._default,this._map=new Map;for(const i of e){const e=i._shape[t];if(!e)continue;const o=null!=(n=e.inner)?n:e;this._map.set(o._default,i),e.inner&&(this._absentMember=i)}}_findSchema(t){if(null===t||"object"!=typeof t||Array.isArray(t))return;const e=t[this._key];return null==e?this._absentMember:this._map.get(e)}sanitize(t){var e;return(null!=(e=this._findSchema(t))?e:this._schemas[0]).sanitize(t)}isValid(t,e,i){const n=this._findSchema(t);if(!n){const n=null===t||"object"!=typeof t||Array.isArray(t)?void 0:t[this._key];return null==e||e.errors.push(m(null!=i?i:[])+": no discriminated union member matched "+this._key+"="+JSON.stringify(n)),!1}return n.isValid(t,e,i)}_canSanitize(t){if(null===t||"object"!=typeof t||Array.isArray(t))return!1;const e=this._findSchema(t);return e?e._canSanitize(t):this._schemas[0]._canSanitize(t)}}("type",F)),At=B({target:N(),animateWith:R(N())}),xt=B({timeline:bt.optional(),definitions:dt.optional(),bindings:R(At).optional(),debugGlobalName:N().optional(),version:N().optional()}),St=I([N(),D(),R(D()),B({value:new class extends g{constructor(){super(...arguments),this._default=void 0}sanitize(t){return t}isValid(t,e,i){return void 0!==t||(null==e||e.errors.push(m(null!=i?i:[])+": required value is missing"),!1)}_canSanitize(t){return void 0!==t}}}),at]),Ot=I([D(),rt,B({value:D()})]),jt=I([G([D(),D()]),rt,B({value:G([D(),D()])})]),wt=I([N(),rt,B({value:N()})]),zt=B({translate:jt.optional(),rotate:Ot.optional(),scale:jt.optional(),skew:Ot.optional(),origin:jt.optional()}),kt=B({copies:D().optional(),translate:jt.optional(),rotate:Ot.optional(),skew:Ot.optional(),scale:jt.optional(),origin:jt.optional()}),Vt=B({source:N().optional(),maskType:E(["luminance","alpha"]).optional(),maskUnits:E([tt,et]).optional(),maskContentUnits:E([tt,et]).optional(),x:D().optional(),y:D().optional(),width:D().optional(),height:D().optional()}),Pt=B({pathData:wt.optional()}),Nt=B({offset:Ot.optional(),range:jt.optional(),subPaths:E(["separate","combined"]).optional()}),Dt=B({start:D().optional(),stretch:D().optional(),timeCrop:G([D(),D()]).optional()}),Mt=B({without:E(["translate"]).optional(),source:N().optional(),retime:Dt.optional()}),Tt=B({offset:D(),color:N()}),Et=I([R(Tt),B({value:R(Tt)}),rt]),It=B({type:E(["linear","radial"]),start:jt.optional(),end:jt.optional(),center:jt.optional(),radius:Ot.optional(),focal:jt.optional(),stops:Et.optional(),gradientUnits:E([tt,et]).optional(),spreadMethod:E(["pad","reflect","repeat"]).optional(),gradientTransform:N().optional()}),Bt=It,Jt=B({pathData:N(),pathOverflow:E(["clip","extend"]).optional(),lengthAdjust:E(["spacing","spacingAndGlyphs"]).optional(),method:E(["align","stretch"]).optional(),spacing:E(["auto","exact"]).optional(),startOffset:Ot.optional(),textLength:Ot.optional()}),Rt=B({useGlyphs:M().optional()}),Ct=B({transformBy:zt.optional(),repeater:kt.optional(),maskedBy:Vt.optional(),clipPath:Pt.optional(),strokeTrim:Nt.optional(),clone:Mt.optional(),fillGradient:It.optional(),strokeGradient:Bt.optional(),textPath:Jt.optional(),text:Rt.optional()}),Gt=J({type:N(),domType:N().optional(),textContent:N().optional(),id:N().optional(),meta:(new class extends g{constructor(){super(...arguments),this._default=void 0}sanitize(t){return t}isValid(t,e,i){return!0}_canSanitize(t){return!0}}).optional(),effects:Ct.optional(),animate:pt.optional(),style:C(I([N(),D()])).optional()},St),Lt=J(y(f({},Gt._shape),{children:L(()=>R(Lt),[]).optional()}),St),Ut=B({width:I([D(),N()]).optional(),height:I([D(),N()]).optional(),viewBox:N().optional(),animator:xt.optional()}),Ft=(J(y(f(f({},Gt._shape),Ut._shape),{type:T("svg"),children:R(Lt).optional()}),St),B({v:R(R(D())),i:R(R(D())).optional(),o:R(R(D())).optional(),c:M().optional()}),{offScreen:Z,visibilityThreshold:.5,visibilityDebounce:150}),qt=Array.from({length:21},(t,e)=>e/20);function Ht(t){return{requestStart:()=>t.play(),dispose:()=>{}}}function Wt(t,e,i){if(e.offScreen===q.continue)return Ht(i);if("undefined"==typeof IntersectionObserver)return Ht(i);const n=e.visibilityThreshold,o=e.visibilityDebounce;let s,r,a=!1,l=!1,p=0;const u=()=>{void 0!==r&&(clearTimeout(r),r=void 0)},c=()=>{r=void 0,!0!==s&&(s=!0,(a||l)&&(a=!1,l=!1,i.play()))},h=()=>{u(),!1!==s&&(s=!1,i.isPlaying()&&(e.offScreen===q.reset?i.cancel():i.pause(),l=!0))},d=t=>{if(p=t,"undefined"==typeof document||"hidden"!==document.visibilityState)if(t>=n){if(!0===s||void 0!==r)return;o>0?r=setTimeout(c,o):c()}else t<=0?h():!0!==s&&u();else h()},f=new IntersectionObserver(t=>{const e=t[t.length-1];e&&d(e.isIntersecting?function(t){var e,i;const n=t.boundingClientRect,o=t.intersectionRect;if(!(null==n?void 0:n.height)||!o)return t.intersectionRatio;const s="undefined"!=typeof window&&window.innerHeight?window.innerHeight:1/0,r=null!=(i=null==(e=t.rootBounds)?void 0:e.height)?i:1/0,a=Math.min(s,r),l=Math.min(n.height,Number.isFinite(a)?a:n.height);return l>0?o.height/l:t.intersectionRatio}(e):0)},{threshold:qt});f.observe(t);const y=()=>{d(p)},m="undefined"!=typeof document;return m&&document.addEventListener("visibilitychange",y),{requestStart:t=>{if(t||!0===s)return u(),s=!0,a=!1,l=!1,void i.play();a=!0},dispose:()=>{u(),f.disconnect(),m&&document.removeEventListener("visibilitychange",y)}}}
1
+ "use strict";var t,e=Object.defineProperty,i=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,s={};((t,i)=>{for(var n in i)e(t,n,{get:i[n],enumerable:!0})})(s,{PLAY_WHEN_VISIBLE_DEFAULTS:()=>le,PX_ANIMATOR_DOC_KEY:()=>r,createVisibilityGate:()=>ce}),module.exports=(t=s,((t,s,r,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let r of n(s))o.call(t,r)||void 0===r||e(t,r,{get:()=>s[r],enumerable:!(a=i(s,r))||a.enumerable});return t})(e({},"__esModule",{value:!0}),t));var r="doc",a=Object.defineProperty,l=Object.defineProperties,u=Object.getOwnPropertyDescriptors,p=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable,d=(t,e,i)=>e in t?a(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,f=(t,e)=>{for(var i in e||(e={}))c.call(e,i)&&d(t,i,e[i]);if(p)for(var i of p(e))h.call(e,i)&&d(t,i,e[i]);return t},y=(t,e)=>l(t,u(e));function m(t){if(!t.length)return".";let e="";for(const i of t)i.startsWith("[")?e+=i:e+=(e?".":"")+i;return e}var _=class{constructor(t){this._statesDefault=t}_canSanitize(t){return this.isValid(t)}absentDefault(){return this._default}optional(){return new g(this)}},g=class extends _{constructor(t){super(t._statesDefault),this.inner=t,this._default=void 0}absentDefault(){return this.inner._statesDefault?this.inner._default:void 0}sanitize(t){if(null!=t)return this.inner._canSanitize(t)?this.inner.sanitize(t):void 0}isValid(t,e,i){return null==t||this.inner.isValid(t,e,i)}_canSanitize(t){return null==t||this.inner._canSanitize(t)}},v=class extends _{constructor(t,e){super(e),this._default=t}sanitize(t){return"string"==typeof t?t:this._default}isValid(t,e,i){return"string"==typeof t||(null==e||e.errors.push(m(null!=i?i:[])+": expected string, got "+typeof t),!1)}},b=class extends _{constructor(t,e){super(e),this._default=t}sanitize(t){return"number"==typeof t&&isFinite(t)?t:this._default}isValid(t,e,i){return!("number"!=typeof t||!isFinite(t))||(null==e||e.errors.push(m(null!=i?i:[])+": expected finite number, got "+JSON.stringify(t)),!1)}},A=class extends _{constructor(t,e){super(e),this._default=t}sanitize(t){return"boolean"==typeof t?t:this._default}isValid(t,e,i){return"boolean"==typeof t||(null==e||e.errors.push(m(null!=i?i:[])+": expected boolean, got "+typeof t),!1)}},w=class extends _{constructor(t){super(!0),this.value=t,this._default=t}sanitize(t){return t===this.value?this.value:this._default}isValid(t,e,i){return t===this.value||(null==e||e.errors.push(m(null!=i?i:[])+": expected "+JSON.stringify(this.value)+", got "+JSON.stringify(t)),!1)}},x=class extends _{constructor(t,e,i){super(i),this.values=t,this._default=null!=e?e:t[0]}sanitize(t){return this.values.includes(t)?t:this._default}isValid(t,e,i){return!!this.values.includes(t)||(null==e||e.errors.push(m(null!=i?i:[])+": expected one of "+this.values.map(t=>JSON.stringify(t)).join(" | ")+", got "+JSON.stringify(t)),!1)}},O=class extends _{constructor(t,e,i){super(i),this.schemas=t,this._kind="union",this._default=null!=e?e:t[0]._default}sanitize(t){for(const e of this.schemas)if(e.isValid(t))return e.sanitize(t);return this._default}isValid(t,e,i){var n;const o=e&&{errors:[],warnings:[],strict:e.strict};if(this.schemas.some(e=>e.isValid(t,o,i?[...i]:void 0)))return!0;if(!e)return!1;const s=m(null!=i?i:[]);let r;e.errors.push(s+": no union member matched for value "+(null!=(n=JSON.stringify(t))?n:"").slice(0,240));let a=-1;const l=[];for(const n of this.schemas){const o={errors:[],warnings:[],strict:e.strict};if(n.isValid(t,o,i?[...i]:void 0),!o.errors.length)continue;const u=Math.max(...o.errors.map(t=>t.slice(0,t.indexOf(":")).length));if((u>a||u===a&&r&&o.errors.length<r.length)&&(a=u,r=o.errors),u<=s.length)for(const t of o.errors){const e=/: expected (.+?), got /.exec(t);e&&!l.includes(e[1])&&l.push(e[1])}}if(r&&a>s.length)for(const t of r.slice(0,4))e.errors.includes(t)||e.errors.push(t);else l.length&&e.errors.push(s+": expected "+l.join(" | "));return!1}_canSanitize(t){return this.schemas.some(e=>e._canSanitize(t))}},j=class extends _{constructor(t,e,i){var n;super(!1),this._key=t,this._schemas=e,this._kind="discriminatedUnion",this._default=null!=i?i:e[0]._default,this._map=new Map;for(const i of e){const e=i._shape[t];if(!e)continue;const o=null!=(n=e.inner)?n:e;this._map.set(o._default,i),e.inner&&(this._absentMember=i)}}_findSchema(t){if(null===t||"object"!=typeof t||Array.isArray(t))return;const e=t[this._key];return null==e?this._absentMember:this._map.get(e)}sanitize(t){var e;return(null!=(e=this._findSchema(t))?e:this._schemas[0]).sanitize(t)}isValid(t,e,i){const n=this._findSchema(t);if(!n){const n=null===t||"object"!=typeof t||Array.isArray(t)?void 0:t[this._key];return null==e||e.errors.push(m(null!=i?i:[])+": no discriminated union member matched "+this._key+"="+JSON.stringify(n)),!1}return n.isValid(t,e,i)}_canSanitize(t){if(null===t||"object"!=typeof t||Array.isArray(t))return!1;const e=this._findSchema(t);return e?e._canSanitize(t):this._schemas[0]._canSanitize(t)}};function S(t){const e={};for(const i of Object.keys(t))t[i]._statesDefault&&(e[i]=t[i].absentDefault());return Object.freeze(e)}var z=class extends _{constructor(t){super(!1),this._shape=t;const e={};for(const i of Object.keys(t))e[i]=t[i]._default;this._default=e,this.defaults=S(t)}sanitize(t){const e=t&&"object"==typeof t&&!Array.isArray(t)?t:{},i={};for(const t of Object.keys(this._shape)){const n=this._shape[t].sanitize(e[t]);void 0!==n&&(i[t]=n)}return i}isValid(t,e,i){if(!t||"object"!=typeof t||Array.isArray(t))return null==e||e.errors.push(m(null!=i?i:[])+": expected object, got "+(Array.isArray(t)?"array":typeof t)),!1;const n=t,o=null!=i?i:[];let s=!0;for(const t of Object.keys(this._shape))o.push(t),this._shape[t].isValid(n[t],e,o)||(s=!1),o.pop();if(null==e?void 0:e.strict)for(const t of Object.keys(n))t in this._shape||void 0!==n[t]&&(o.push(t),e.errors.push(m(o)+": unexpected extra key"),o.pop(),s=!1);return s}_canSanitize(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}},k=class extends _{constructor(t,e){super(!1),this._shape=t,this._openSchema=e;const i={};for(const e of Object.keys(t))i[e]=t[e]._default;this._default=i,this.defaults=S(t)}sanitize(t){const e=t&&"object"==typeof t&&!Array.isArray(t)?t:{},i=f({},e);for(const t of Object.keys(this._shape)){const n=this._shape[t].sanitize(e[t]);void 0!==n&&(i[t]=n)}if(this._openSchema)for(const t of Object.keys(e))t in this._shape||(i[t]=this._openSchema.sanitize(e[t]));return i}isValid(t,e,i){if(!t||"object"!=typeof t||Array.isArray(t))return null==e||e.errors.push(m(null!=i?i:[])+": expected object, got "+(Array.isArray(t)?"array":typeof t)),!1;const n=t,o=null!=i?i:[];let s=!0;for(const t of Object.keys(this._shape))o.push(t),this._shape[t].isValid(n[t],e,o)||(s=!1),o.pop();if(this._openSchema)for(const t of Object.keys(n))t in this._shape||(o.push(t),this._openSchema.isValid(n[t],e,o)||(s=!1),o.pop());return s}_canSanitize(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}},V=class extends _{constructor(t){super(!1),this.item=t,this._default=[]}sanitize(t){if(!Array.isArray(t))return[];const e=[];for(const i of t)this.item._canSanitize(i)&&e.push(this.item.sanitize(i));return e}isValid(t,e,i){if(!Array.isArray(t))return null==e||e.errors.push(m(null!=i?i:[])+": expected array, got "+typeof t),!1;const n=null!=i?i:[];let o=!0;for(let i=0;i<t.length;i++)n.push("["+i+"]"),this.item.isValid(t[i],e,n)||(o=!1),n.pop();return o}_canSanitize(t){return Array.isArray(t)}},D=class extends _{constructor(t){super(!1),this.value=t,this._kind="record",this._default={}}sanitize(t){if(!t||"object"!=typeof t||Array.isArray(t))return{};const e={};for(const[i,n]of Object.entries(t))this.value._canSanitize(n)&&(e[i]=this.value.sanitize(n));return e}isValid(t,e,i){if(!t||"object"!=typeof t||Array.isArray(t))return null==e||e.errors.push(m(null!=i?i:[])+": expected object/record, got "+(Array.isArray(t)?"array":typeof t)),!1;const n=null!=i?i:[];let o=!0;for(const[i,s]of Object.entries(t))n.push(i),this.value.isValid(s,e,n)||(o=!1),n.pop();return o}_canSanitize(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}},P=class extends _{constructor(){super(!1),this._default=void 0}sanitize(t){return t}isValid(t,e,i){return!0}_canSanitize(t){return!0}},N=class extends _{constructor(){super(!1),this._default=void 0}sanitize(t){return t}isValid(t,e,i){return void 0!==t||(null==e||e.errors.push(m(null!=i?i:[])+": required value is missing"),!1)}_canSanitize(t){return void 0!==t}},M=class extends _{constructor(t,e){super(!1),this.fn=t,this._default=e,this.resolved=null}get schema(){var t;return null!=(t=this.resolved)?t:this.resolved=this.fn()}sanitize(t){return this.schema.sanitize(t)}isValid(t,e,i){return this.schema.isValid(t,e,i)}_canSanitize(t){return this.schema._canSanitize(t)}},T=class extends _{constructor(t){super(!1),this.schemas=t,this._kind="tuple",this._default=t.map(t=>t._default)}sanitize(t){return Array.isArray(t)&&t.length===this.schemas.length?this.schemas.map((e,i)=>e.sanitize(t[i])):this._default}isValid(t,e,i){if(!Array.isArray(t)||t.length!==this.schemas.length)return null==e||e.errors.push(m(null!=i?i:[])+": expected tuple of length "+this.schemas.length+", got "+(Array.isArray(t)?"array["+t.length+"]":typeof t)),!1;const n=null!=i?i:[];let o=!0;for(let i=0;i<this.schemas.length;i++)n.push("["+i+"]"),this.schemas[i].isValid(t[i],e,n)||(o=!1),n.pop();return o}_canSanitize(t){return Array.isArray(t)&&t.length===this.schemas.length}},E=function(t){return void 0===t?new v("",!1):new v(t,!0)},I=function(t){return void 0===t?new b(0,!1):new b(t,!0)},B=function(t){return void 0===t?new A(!1,!1):new A(t,!0)},J=t=>new w(t),R=function(t,e){return void 0===e?new x(t,void 0,!1):new x(t,e,!0)},C=function(t,e){return void 0===e?new O(t,void 0,!1):new O(t,e,!0)},G=t=>new z(t),L=(t,e)=>new k(t,e),U=t=>new V(t),F=t=>new D(t),q=t=>new T(t),H=(t,e)=>new M(t,e),W=/^(\d+)\.(\d+)(?:\.(\d+))?$/;!function(){const t=W.exec("1.2".trim());t&&(Number(t[1]),Number(t[2]),void 0===t[3]||Number(t[3]))}();var Y,K,X="forwards",$="normal",Q={pause:"pause",continue:"continue",reset:"reset"},Z="view",tt="block",et="inline",it="nearest",nt="root",ot="top",st="center",rt="bottom",at="cover",lt="sampled",ut=y(f({},{native:"native",js:"js"}),{auto:"auto"}),pt="pause",ct="normal",ht="luminance",dt="userSpaceOnUse",ft="objectBoundingBox",yt="extend",mt="spacing",_t="align",gt="exact",vt="separate",bt=C([E(),q([I(),I(),I(),I()])]),At=C([E(),I(),U(I()),G({pathData:E()}),H(()=>U(Qt),[]),H(()=>jt,{})]),wt=G({time:I().optional(),value:At.optional(),easing:bt.optional(),tangentOut:q([I(),I()]).optional(),tangentIn:q([I(),I()]).optional()}),xt=G({segmentCount:I().optional(),repeatAt:R(["start","end"],"end").optional(),direction:R([ct,"alternate"],ct).optional()}),Ot=G({value:At.optional(),keyframes:U(wt).optional(),loop:C([xt,B()]).optional(),autoOrient:B().optional(),alongPathMode:R([lt,"offsetPath"],lt).optional()}),jt=G({translate:q([I(),I()]).optional(),rotate:I().optional(),skew:I().optional(),scale:q([I(),I()]).optional(),origin:q([I(),I()]).optional()}),St=(C([E(),jt,G({value:jt}),Ot]),F(Ot)),zt=C([E(),U(C([E(),St])),St]),kt=G({start:R(["load","mouseOver","click","none"],"load").optional(),offScreen:R([Q.pause,Q.continue,Q.reset],pt).optional(),mouseOut:R(["continue","pause","reset","reverse"],"continue").optional(),finish:R(["hold","reset"],"hold").optional(),visibilityThreshold:I(.5).optional(),visibilityDebounce:I(150).optional()}),Vt=G({width:I(),pathData:E()}),Dt=G({fontFamily:E(),fontStyle:E(),ascent:I(),unitsPerEm:I(),glyphs:F(Vt)}),Pt=G({easings:F(q([I(),I(),I(),I()])).optional(),animations:F(St).optional(),fonts:F(Dt).optional()}),Nt=G({phase:R([at,"contain","entry","exit","entry-crossing","exit-crossing"],at).optional(),fraction:I().optional()}),Mt=G({start:Nt.optional(),end:Nt.optional()}),Tt=(G({kind:R([Z,"scroll"],Z).optional(),axis:R([tt,et,"x","y"],tt).optional(),source:R([it,nt],it).optional(),subject:E().optional(),smoothing:I().optional(),pin:B(!1).optional(),pinAlign:R([ot,st,rt],ot).optional(),pinOffset:I().optional(),pinDistance:I().optional(),range:Mt.optional()}),G({align:R([ot,st,rt],ot).optional(),offset:I().optional(),distance:I().optional()})),Et=R([ut.auto,ut.native,ut.js],ut.auto).optional(),It=G({type:J("time").optional(),engine:Et,frameRate:I().optional(),duration:I(1e3).optional(),trigger:kt.optional(),delay:I(0).optional(),iterations:C([I(1),J("infinite")],1).optional(),fillMode:R([X,"backwards","both","none"],X).optional(),direction:R([$,"reverse","alternate","alternate-reverse"],$).optional()}),Bt={duration:I().optional(),iterations:I().optional(),engine:Et,frameRate:I().optional(),axis:R([tt,et,"x","y"],tt).optional(),source:R([it,nt],it).optional(),subject:E().optional(),smoothing:I().optional(),pin:C([B(),Tt]).optional(),range:Mt.optional()},Jt=(Y="type",K=[It,G(f({type:J("scroll")},Bt)),G(f({type:J("view")},Bt))],new j(Y,K)),Rt=G({target:E(),animateWith:U(E())}),Ct=G({timeline:Jt.optional(),definitions:Pt.optional(),bindings:U(Rt).optional(),debugGlobalName:E().optional(),version:E().optional()}),Gt=C([E(),I(),U(I()),G({value:new N}),jt]),Lt=C([I(),Ot,G({value:I()})]),Ut=C([q([I(),I()]),Ot,G({value:q([I(),I()])})]),Ft=C([E(),Ot,G({value:E()})]),qt=G({translate:Ut.optional(),rotate:Lt.optional(),scale:Ut.optional(),skew:Lt.optional(),origin:Ut.optional()}),Ht=G({copies:I().optional(),translate:Ut.optional(),rotate:Lt.optional(),skew:Lt.optional(),scale:Ut.optional(),origin:Ut.optional()}),Wt=G({source:E().optional(),maskType:R([ht,"alpha"],ht).optional(),maskUnits:R([dt,ft],ft).optional(),maskContentUnits:R([dt,ft],dt).optional(),x:I().optional(),y:I().optional(),width:I().optional(),height:I().optional()}),Yt=G({pathData:Ft.optional()}),Kt=G({offset:Lt.optional(),range:Ut.optional(),subPaths:R([vt,"combined"],vt).optional()}),Xt=G({start:I().optional(),stretch:I().optional(),timeCrop:q([I(),I()]).optional()}),$t=G({without:R(["translate"]).optional(),source:E().optional(),retime:Xt.optional()}),Qt=G({offset:I(),color:E()}),Zt=C([U(Qt),G({value:U(Qt)}),Ot]),te=G({type:R(["linear","radial"]),start:Ut.optional(),end:Ut.optional(),center:Ut.optional(),radius:Lt.optional(),focal:Ut.optional(),stops:Zt.optional(),gradientUnits:R([dt,ft],ft).optional(),spreadMethod:R(["pad","reflect","repeat"],"pad").optional(),gradientTransform:E().optional()}),ee=te,ie=G({pathData:E(),pathOverflow:R(["clip",yt],yt).optional(),lengthAdjust:R([mt,"spacingAndGlyphs"],mt).optional(),method:R([_t,"stretch"],_t).optional(),spacing:R(["auto",gt],gt).optional(),startOffset:Lt.optional(),textLength:Lt.optional()}),ne=G({useGlyphs:B().optional()}),oe=G({transformBy:qt.optional(),repeater:Ht.optional(),maskedBy:Wt.optional(),clipPath:Yt.optional(),strokeTrim:Kt.optional(),clone:$t.optional(),fillGradient:te.optional(),strokeGradient:ee.optional(),textPath:ie.optional(),text:ne.optional()}),se=L({type:E(),domType:E().optional(),textContent:E().optional(),id:E().optional(),meta:(new P).optional(),effects:oe.optional(),animate:zt.optional(),style:F(C([E(),I()])).optional()},Gt),re=L(y(f({},se._shape),{children:H(()=>U(re),[]).optional()}),Gt),ae=G({width:C([I(),E()]).optional(),height:C([I(),E()]).optional(),viewBox:E().optional(),animator:Ct.optional()}),le=(L(y(f(f({},se._shape),ae._shape),{type:J("svg"),children:U(re).optional()}),Gt),G({v:U(U(I())),i:U(U(I())).optional(),o:U(U(I())).optional(),c:B().optional()}),{offScreen:pt,visibilityThreshold:.5,visibilityDebounce:150}),ue=Array.from({length:21},(t,e)=>e/20);function pe(t){return{requestStart:()=>t.play(),dispose:()=>{}}}function ce(t,e,i){if(e.offScreen===Q.continue)return pe(i);if("undefined"==typeof IntersectionObserver)return pe(i);const n=e.visibilityThreshold,o=e.visibilityDebounce;let s,r,a=!1,l=!1,u=0;const p=()=>{void 0!==r&&(clearTimeout(r),r=void 0)},c=()=>{r=void 0,!0!==s&&(s=!0,(a||l)&&(a=!1,l=!1,i.play()))},h=()=>{p(),!1!==s&&(s=!1,i.isPlaying()&&(e.offScreen===Q.reset?i.cancel():i.pause(),l=!0))},d=t=>{if(u=t,"undefined"==typeof document||"hidden"!==document.visibilityState)if(t>=n){if(!0===s||void 0!==r)return;o>0?r=setTimeout(c,o):c()}else t<=0?h():!0!==s&&p();else h()},f=new IntersectionObserver(t=>{const e=t[t.length-1];e&&d(e.isIntersecting?function(t){var e,i;const n=t.boundingClientRect,o=t.intersectionRect;if(!(null==n?void 0:n.height)||!o)return t.intersectionRatio;const s="undefined"!=typeof window&&window.innerHeight?window.innerHeight:1/0,r=null!=(i=null==(e=t.rootBounds)?void 0:e.height)?i:1/0,a=Math.min(s,r),l=Math.min(n.height,Number.isFinite(a)?a:n.height);return l>0?o.height/l:t.intersectionRatio}(e):0)},{threshold:ue});f.observe(t);const y=()=>{d(u)},m="undefined"!=typeof document;return m&&document.addEventListener("visibilitychange",y),{requestStart:t=>{if(t||!0===s)return p(),s=!0,a=!1,l=!1,void i.play();a=!0},dispose:()=>{p(),f.disconnect(),m&&document.removeEventListener("visibilitychange",y)}}}
@@ -1 +1 @@
1
- import{PLAY_WHEN_VISIBLE_DEFAULTS as m,PX_ANIMATOR_DOC_KEY as o,createVisibilityGate as r}from"./chunk-RQ5KZXDT.min.js";export{m as PLAY_WHEN_VISIBLE_DEFAULTS,o as PX_ANIMATOR_DOC_KEY,r as createVisibilityGate};
1
+ import{PLAY_WHEN_VISIBLE_DEFAULTS as m,PX_ANIMATOR_DOC_KEY as o,createVisibilityGate as r}from"./chunk-2AFALI5O.min.js";export{m as PLAY_WHEN_VISIBLE_DEFAULTS,o as PX_ANIMATOR_DOC_KEY,r as createVisibilityGate};
@@ -77,19 +77,31 @@ var PixodeskAnimator = (() => {
77
77
  return result;
78
78
  }
79
79
  var Base = class {
80
+ /** Structural schemas (objects, arrays, unions of objects…) pass `false`: they state no scalar default. */
81
+ constructor(_statesDefault) {
82
+ this._statesDefault = _statesDefault;
83
+ }
80
84
  _canSanitize(raw) {
81
85
  return this.isValid(raw);
82
86
  }
87
+ /** A REQUIRED field is never absent; its default is the repair value. */
88
+ absentDefault() {
89
+ return this._default;
90
+ }
83
91
  optional() {
84
92
  return new Optional(this);
85
93
  }
86
94
  };
87
95
  var Optional = class extends Base {
88
96
  constructor(inner) {
89
- super();
97
+ super(inner._statesDefault);
90
98
  this.inner = inner;
91
99
  this._default = void 0;
92
100
  }
101
+ /** Absent means the inner schema's STATED default — or nothing at all when it states none. */
102
+ absentDefault() {
103
+ return this.inner._statesDefault ? this.inner._default : void 0;
104
+ }
93
105
  sanitize(raw) {
94
106
  if (raw === void 0 || raw === null) return void 0;
95
107
  return this.inner._canSanitize(raw) ? this.inner.sanitize(raw) : void 0;
@@ -103,8 +115,8 @@ var PixodeskAnimator = (() => {
103
115
  }
104
116
  };
105
117
  var Str = class extends Base {
106
- constructor(_default = "") {
107
- super();
118
+ constructor(_default, statesDefault) {
119
+ super(statesDefault);
108
120
  this._default = _default;
109
121
  }
110
122
  sanitize(raw) {
@@ -117,8 +129,8 @@ var PixodeskAnimator = (() => {
117
129
  }
118
130
  };
119
131
  var Num = class extends Base {
120
- constructor(_default = 0) {
121
- super();
132
+ constructor(_default, statesDefault) {
133
+ super(statesDefault);
122
134
  this._default = _default;
123
135
  }
124
136
  sanitize(raw) {
@@ -131,8 +143,8 @@ var PixodeskAnimator = (() => {
131
143
  }
132
144
  };
133
145
  var Bool = class extends Base {
134
- constructor(_default = false) {
135
- super();
146
+ constructor(_default, statesDefault) {
147
+ super(statesDefault);
136
148
  this._default = _default;
137
149
  }
138
150
  sanitize(raw) {
@@ -145,8 +157,9 @@ var PixodeskAnimator = (() => {
145
157
  }
146
158
  };
147
159
  var Literal = class extends Base {
160
+ /** A literal IS its own value: absent means it. */
148
161
  constructor(value) {
149
- super();
162
+ super(true);
150
163
  this.value = value;
151
164
  this._default = value;
152
165
  }
@@ -160,8 +173,8 @@ var PixodeskAnimator = (() => {
160
173
  }
161
174
  };
162
175
  var Enum = class extends Base {
163
- constructor(values, defaultVal) {
164
- super();
176
+ constructor(values, defaultVal, statesDefault) {
177
+ super(statesDefault);
165
178
  this.values = values;
166
179
  this._default = defaultVal != null ? defaultVal : values[0];
167
180
  }
@@ -176,8 +189,8 @@ var PixodeskAnimator = (() => {
176
189
  };
177
190
  var UNION_MEMBER_ERROR_LIMIT = 4;
178
191
  var Union = class extends Base {
179
- constructor(schemas, defaultVal) {
180
- super();
192
+ constructor(schemas, defaultVal, statesDefault) {
193
+ super(statesDefault);
181
194
  this.schemas = schemas;
182
195
  /** Structural tag read by {@link describeSchema} — `schemas` alone cannot tell Union from Tuple. */
183
196
  this._kind = "union";
@@ -231,7 +244,7 @@ var PixodeskAnimator = (() => {
231
244
  var DiscriminatedUnion = class extends Base {
232
245
  constructor(_key, _schemas, defaultVal) {
233
246
  var _a2;
234
- super();
247
+ super(false);
235
248
  this._key = _key;
236
249
  this._schemas = _schemas;
237
250
  /** Structural tag read by {@link describeSchema}. */
@@ -271,13 +284,19 @@ var PixodeskAnimator = (() => {
271
284
  return schema ? schema._canSanitize(raw) : this._schemas[0]._canSanitize(raw);
272
285
  }
273
286
  };
287
+ function statedDefaults(shape) {
288
+ const out = {};
289
+ for (const key of Object.keys(shape)) if (shape[key]._statesDefault) out[key] = shape[key].absentDefault();
290
+ return Object.freeze(out);
291
+ }
274
292
  var Obj = class extends Base {
275
293
  constructor(_shape) {
276
- super();
294
+ super(false);
277
295
  this._shape = _shape;
278
296
  const d = {};
279
297
  for (const key of Object.keys(_shape)) d[key] = _shape[key]._default;
280
298
  this._default = d;
299
+ this.defaults = statedDefaults(_shape);
281
300
  }
282
301
  sanitize(raw) {
283
302
  const src = raw && typeof raw === "object" && !Array.isArray(raw) ? raw : {};
@@ -319,12 +338,13 @@ var PixodeskAnimator = (() => {
319
338
  };
320
339
  var OpenObj = class extends Base {
321
340
  constructor(_shape, _openSchema) {
322
- super();
341
+ super(false);
323
342
  this._shape = _shape;
324
343
  this._openSchema = _openSchema;
325
344
  const d = {};
326
345
  for (const key of Object.keys(_shape)) d[key] = _shape[key]._default;
327
346
  this._default = d;
347
+ this.defaults = statedDefaults(_shape);
328
348
  }
329
349
  sanitize(raw) {
330
350
  const src = raw && typeof raw === "object" && !Array.isArray(raw) ? raw : {};
@@ -369,7 +389,7 @@ var PixodeskAnimator = (() => {
369
389
  };
370
390
  var Arr = class extends Base {
371
391
  constructor(item) {
372
- super();
392
+ super(false);
373
393
  this.item = item;
374
394
  this._default = [];
375
395
  }
@@ -401,7 +421,7 @@ var PixodeskAnimator = (() => {
401
421
  };
402
422
  var Rec = class extends Base {
403
423
  constructor(value) {
404
- super();
424
+ super(false);
405
425
  this.value = value;
406
426
  /** Structural tag read by {@link describeSchema}. */
407
427
  this._kind = "record";
@@ -435,7 +455,7 @@ var PixodeskAnimator = (() => {
435
455
  };
436
456
  var Any = class extends Base {
437
457
  constructor() {
438
- super(...arguments);
458
+ super(false);
439
459
  this._default = void 0;
440
460
  }
441
461
  sanitize(raw) {
@@ -450,7 +470,7 @@ var PixodeskAnimator = (() => {
450
470
  };
451
471
  var Defined = class extends Base {
452
472
  constructor() {
453
- super(...arguments);
473
+ super(false);
454
474
  this._default = void 0;
455
475
  }
456
476
  sanitize(raw) {
@@ -467,7 +487,7 @@ var PixodeskAnimator = (() => {
467
487
  };
468
488
  var Lazy = class extends Base {
469
489
  constructor(fn, _default) {
470
- super();
490
+ super(false);
471
491
  this.fn = fn;
472
492
  this._default = _default;
473
493
  this.resolved = null;
@@ -488,7 +508,7 @@ var PixodeskAnimator = (() => {
488
508
  };
489
509
  var Tuple = class extends Base {
490
510
  constructor(schemas) {
491
- super();
511
+ super(false);
492
512
  this.schemas = schemas;
493
513
  /** Structural tag read by {@link describeSchema} — `schemas` alone cannot tell Tuple from Union. */
494
514
  this._kind = "tuple";
@@ -520,22 +540,29 @@ var PixodeskAnimator = (() => {
520
540
  function implementsInterface() {
521
541
  return (schema) => schema;
522
542
  }
543
+ function string(defaultVal) {
544
+ return defaultVal === void 0 ? new Str("", false) : new Str(defaultVal, true);
545
+ }
546
+ function number(defaultVal) {
547
+ return defaultVal === void 0 ? new Num(0, false) : new Num(defaultVal, true);
548
+ }
549
+ function boolean(defaultVal) {
550
+ return defaultVal === void 0 ? new Bool(false, false) : new Bool(defaultVal, true);
551
+ }
552
+ function oneOf(values, defaultVal) {
553
+ return defaultVal === void 0 ? new Enum(values, void 0, false) : new Enum(values, defaultVal, true);
554
+ }
555
+ function unionOf(schemas, defaultVal) {
556
+ return defaultVal === void 0 ? new Union(schemas, void 0, false) : new Union(schemas, defaultVal, true);
557
+ }
523
558
  var px = {
524
- /** Matches a string. Default: '' or provided value. */
525
- string: (defaultVal = "") => new Str(defaultVal),
526
- /** Matches a finite number. Default: 0 or provided value. */
527
- number: (defaultVal = 0) => new Num(defaultVal),
528
- /** Matches a boolean. Default: false or provided value. */
529
- boolean: (defaultVal = false) => new Bool(defaultVal),
530
- /** Matches one exact primitive value; its default is the value itself. */
559
+ string,
560
+ number,
561
+ boolean,
562
+ /** Matches one exact primitive value; absent means the value itself. */
531
563
  literal: (value) => new Literal(value),
532
- /** Matches one of a fixed set of string/number values. Default: first value. */
533
- enum: (values, defaultVal) => new Enum(values, defaultVal),
534
- /**
535
- * Returns the first schema whose isValid passes.
536
- * TypeScript infers the union of all member types automatically.
537
- */
538
- union: (schemas, defaultVal) => new Union(schemas, defaultVal),
564
+ enum: oneOf,
565
+ union: unionOf,
539
566
  /**
540
567
  * Discriminated union — reads `raw[key]`, finds the member schema whose
541
568
  * literal at `key` matches, then delegates sanitize/isValid to that member.
@@ -543,7 +570,8 @@ var PixodeskAnimator = (() => {
543
570
  * TypeScript infers the union of all member types automatically.
544
571
  */
545
572
  discriminatedUnion: (key, schemas) => new DiscriminatedUnion(key, schemas),
546
- /** Typed object — unknown keys are stripped. Required fields fall back to their default. */
573
+ /** Typed object — unknown keys are stripped. Required fields fall back to their default.
574
+ * Its `defaults` say what each stated field means when a document leaves it out. */
547
575
  object: (shape) => new Obj(shape),
548
576
  /**
549
577
  * Open object — validates known keys; passes unknown keys through as-is,
@@ -684,8 +712,11 @@ var PixodeskAnimator = (() => {
684
712
  offScreen: "pause",
685
713
  mouseOut: "continue",
686
714
  visibilityThreshold: 0.5,
687
- visibilityDebounce: 150
715
+ visibilityDebounce: 150,
716
+ finish: "hold"
688
717
  };
718
+ var PX_DEFAULT_DURATION_MS = 1e3;
719
+ var PX_DEFAULT_ITERATIONS = 1;
689
720
  function resolveTrigger(trigger) {
690
721
  var _a2, _b, _c, _d, _e;
691
722
  return {
@@ -900,15 +931,15 @@ var PixodeskAnimator = (() => {
900
931
  var keyframeTangentOut = (kf) => anyKf(kf).tangentOut;
901
932
  var PxLoopSchema = implementsInterface()(px.object({
902
933
  segmentCount: px.number().optional(),
903
- repeatAt: px.enum([PxLoopRepeatAt.start, PxLoopRepeatAt.end]).optional(),
904
- direction: px.enum([PxLoopDirection.normal, PxLoopDirection.alternate]).optional()
934
+ repeatAt: px.enum([PxLoopRepeatAt.start, PxLoopRepeatAt.end], PxLoopRepeatAt.end).optional(),
935
+ direction: px.enum([PxLoopDirection.normal, PxLoopDirection.alternate], PxLoopDirection.normal).optional()
905
936
  }));
906
937
  var PxPropertyAnimationSchema = implementsInterface()(px.object({
907
938
  value: PxKeyframeValueSchema.optional(),
908
939
  keyframes: px.array(PxKeyframeSchema).optional(),
909
940
  loop: px.union([PxLoopSchema, px.boolean()]).optional(),
910
941
  autoOrient: px.boolean().optional(),
911
- alongPathMode: px.enum([PxAlongPathMode.sampled, PxAlongPathMode.offsetPath]).optional()
942
+ alongPathMode: px.enum([PxAlongPathMode.sampled, PxAlongPathMode.offsetPath], PxAlongPathMode.sampled).optional()
912
943
  }));
913
944
  var PxTransformPartsSchema = implementsInterface()(px.object({
914
945
  translate: px.tuple([px.number(), px.number()]).optional(),
@@ -938,9 +969,9 @@ var PixodeskAnimator = (() => {
938
969
  // What happens after a NATURAL finish — `'hold'` (default: keep the end state per
939
970
  // `fill`) or `'reset'` (snap back to the start state). One of four occasion keys
940
971
  // (`start`, `offScreen`, `mouseOut`, `finish`), all named the same way.
941
- finish: px.enum([PxFinishAction.hold, PxFinishAction.reset]).optional(),
942
- visibilityThreshold: px.number().optional(),
943
- visibilityDebounce: px.number().optional()
972
+ finish: px.enum([PxFinishAction.hold, PxFinishAction.reset], PX_TRIGGER_DEFAULTS.finish).optional(),
973
+ visibilityThreshold: px.number(PX_TRIGGER_DEFAULTS.visibilityThreshold).optional(),
974
+ visibilityDebounce: px.number(PX_TRIGGER_DEFAULTS.visibilityDebounce).optional()
944
975
  }));
945
976
  var PxGlyphSchema = implementsInterface()(px.object({
946
977
  width: px.number(),
@@ -966,7 +997,7 @@ var PixodeskAnimator = (() => {
966
997
  PxScrollPhase.exit,
967
998
  PxScrollPhase.entryCrossing,
968
999
  PxScrollPhase.exitCrossing
969
- ]).optional(),
1000
+ ], PxScrollPhase.cover).optional(),
970
1001
  fraction: px.number().optional()
971
1002
  }));
972
1003
  var PxScrollRangeSchema = px.object({
@@ -974,37 +1005,37 @@ var PixodeskAnimator = (() => {
974
1005
  end: PxScrollRangePointSchema.optional()
975
1006
  });
976
1007
  var PxScrollSchema = implementsInterface()(px.object({
977
- kind: px.enum([PxScrollKind.view, PxScrollKind.scroll]).optional(),
978
- axis: px.enum([PxScrollAxis.block, PxScrollAxis.inline, PxScrollAxis.x, PxScrollAxis.y]).optional(),
979
- source: px.enum([PxScrollSource.nearest, PxScrollSource.root]).optional(),
1008
+ kind: px.enum([PxScrollKind.view, PxScrollKind.scroll], PxScrollKind.view).optional(),
1009
+ axis: px.enum([PxScrollAxis.block, PxScrollAxis.inline, PxScrollAxis.x, PxScrollAxis.y], PxScrollAxis.block).optional(),
1010
+ source: px.enum([PxScrollSource.nearest, PxScrollSource.root], PxScrollSource.nearest).optional(),
980
1011
  // Free-form: the two keywords `parent`/`scroller` plus any CSS selector.
981
1012
  subject: px.string().optional(),
982
1013
  smoothing: px.number().optional(),
983
- pin: px.boolean().optional(),
984
- pinAlign: px.enum([PxPinAlign.top, PxPinAlign.center, PxPinAlign.bottom]).optional(),
1014
+ pin: px.boolean(false).optional(),
1015
+ pinAlign: px.enum([PxPinAlign.top, PxPinAlign.center, PxPinAlign.bottom], PxPinAlign.top).optional(),
985
1016
  pinOffset: px.number().optional(),
986
1017
  pinDistance: px.number().optional(),
987
1018
  range: PxScrollRangeSchema.optional()
988
1019
  }));
989
1020
  var PxTimelinePinSchema = implementsInterface()(px.object({
990
- align: px.enum([PxPinAlign.top, PxPinAlign.center, PxPinAlign.bottom]).optional(),
1021
+ align: px.enum([PxPinAlign.top, PxPinAlign.center, PxPinAlign.bottom], PxPinAlign.top).optional(),
991
1022
  offset: px.number().optional(),
992
1023
  distance: px.number().optional()
993
1024
  }));
994
- var PxTimelineEngineSchema = px.enum([PxTimelineEngineSetting.auto, PxTimelineEngineSetting.native, PxTimelineEngineSetting.js]).optional();
1025
+ var PxTimelineEngineSchema = px.enum([PxTimelineEngineSetting.auto, PxTimelineEngineSetting.native, PxTimelineEngineSetting.js], PxTimelineEngineSetting.auto).optional();
995
1026
  var PxTimeTimelineSchema = implementsInterface()(px.object({
996
1027
  type: px.literal("time").optional(),
997
1028
  engine: PxTimelineEngineSchema,
998
1029
  frameRate: px.number().optional(),
999
1030
  // §2.8: duration is a property of the TIMELINE — how long one pass takes.
1000
- duration: px.number().optional(),
1031
+ duration: px.number(PX_DEFAULT_DURATION_MS).optional(),
1001
1032
  trigger: PxTriggerSchema.optional(),
1002
- delay: px.number().optional(),
1003
- iterations: px.union([px.number(), px.literal("infinite")]).optional(),
1033
+ delay: px.number(0).optional(),
1034
+ iterations: px.union([px.number(PX_DEFAULT_ITERATIONS), px.literal("infinite")], PX_DEFAULT_ITERATIONS).optional(),
1004
1035
  // `fillMode` on the wire (CSS `animation-fill-mode`; the runtime view calls it `fill`)
1005
1036
  // — never `fill`, which is paint everywhere else in the format.
1006
- fillMode: px.enum([PxFillMode.forwards, PxFillMode.backwards, PxFillMode.both, PxFillMode.none]).optional(),
1007
- direction: px.enum([PxPlaybackDirection.normal, PxPlaybackDirection.reverse, PxPlaybackDirection.alternate, PxPlaybackDirection.alternateReverse]).optional()
1037
+ fillMode: px.enum([PxFillMode.forwards, PxFillMode.backwards, PxFillMode.both, PxFillMode.none], PxFillMode.forwards).optional(),
1038
+ direction: px.enum([PxPlaybackDirection.normal, PxPlaybackDirection.reverse, PxPlaybackDirection.alternate, PxPlaybackDirection.alternateReverse], PxPlaybackDirection.normal).optional()
1008
1039
  }));
1009
1040
  var scrollishTimelineShape = {
1010
1041
  // §2.8: duration is a property of the TIMELINE — under scrubbing it is the keyframe
@@ -1015,8 +1046,8 @@ var PixodeskAnimator = (() => {
1015
1046
  iterations: px.number().optional(),
1016
1047
  engine: PxTimelineEngineSchema,
1017
1048
  frameRate: px.number().optional(),
1018
- axis: px.enum([PxScrollAxis.block, PxScrollAxis.inline, PxScrollAxis.x, PxScrollAxis.y]).optional(),
1019
- source: px.enum([PxScrollSource.nearest, PxScrollSource.root]).optional(),
1049
+ axis: px.enum([PxScrollAxis.block, PxScrollAxis.inline, PxScrollAxis.x, PxScrollAxis.y], PxScrollAxis.block).optional(),
1050
+ source: px.enum([PxScrollSource.nearest, PxScrollSource.root], PxScrollSource.nearest).optional(),
1020
1051
  subject: px.string().optional(),
1021
1052
  // 'parent' | 'scroller' | any CSS selector
1022
1053
  smoothing: px.number().optional(),
@@ -1096,9 +1127,10 @@ var PixodeskAnimator = (() => {
1096
1127
  }));
1097
1128
  var PxMaskedByEffectSchema = implementsInterface()(px.object({
1098
1129
  source: px.string().optional(),
1099
- maskType: px.enum([PxMaskType.luminance, PxMaskType.alpha]).optional(),
1100
- maskUnits: px.enum([PxUnits.userSpaceOnUse, PxUnits.objectBoundingBox]).optional(),
1101
- maskContentUnits: px.enum([PxUnits.userSpaceOnUse, PxUnits.objectBoundingBox]).optional(),
1130
+ // SVG's own initial values — what a <mask> does when the attribute is not there.
1131
+ maskType: px.enum([PxMaskType.luminance, PxMaskType.alpha], PxMaskType.luminance).optional(),
1132
+ maskUnits: px.enum([PxUnits.userSpaceOnUse, PxUnits.objectBoundingBox], PxUnits.objectBoundingBox).optional(),
1133
+ maskContentUnits: px.enum([PxUnits.userSpaceOnUse, PxUnits.objectBoundingBox], PxUnits.userSpaceOnUse).optional(),
1102
1134
  x: px.number().optional(),
1103
1135
  y: px.number().optional(),
1104
1136
  width: px.number().optional(),
@@ -1110,7 +1142,7 @@ var PixodeskAnimator = (() => {
1110
1142
  var PxStrokeTrimEffectSchema = implementsInterface()(px.object({
1111
1143
  offset: PxAnimatableNumberSchema.optional(),
1112
1144
  range: PxAnimatableVec2Schema.optional(),
1113
- subPaths: px.enum([PxStrokeTrimSubPaths.separate, PxStrokeTrimSubPaths.combined]).optional()
1145
+ subPaths: px.enum([PxStrokeTrimSubPaths.separate, PxStrokeTrimSubPaths.combined], PxStrokeTrimSubPaths.separate).optional()
1114
1146
  }));
1115
1147
  var PxRetimeEffectSchema = implementsInterface()(px.object({
1116
1148
  start: px.number().optional(),
@@ -1142,17 +1174,20 @@ var PixodeskAnimator = (() => {
1142
1174
  radius: PxAnimatableNumberSchema.optional(),
1143
1175
  focal: PxAnimatableVec2Schema.optional(),
1144
1176
  stops: PxAnimatableGradientStopsSchema.optional(),
1145
- gradientUnits: px.enum([PxUnits.userSpaceOnUse, PxUnits.objectBoundingBox]).optional(),
1146
- spreadMethod: px.enum([PxGradientSpreadMethod.pad, PxGradientSpreadMethod.reflect, PxGradientSpreadMethod.repeat]).optional(),
1177
+ // SVG's own initial values — what a gradient does when the attribute is not there.
1178
+ gradientUnits: px.enum([PxUnits.userSpaceOnUse, PxUnits.objectBoundingBox], PxUnits.objectBoundingBox).optional(),
1179
+ spreadMethod: px.enum([PxGradientSpreadMethod.pad, PxGradientSpreadMethod.reflect, PxGradientSpreadMethod.repeat], PxGradientSpreadMethod.pad).optional(),
1147
1180
  gradientTransform: px.string().optional()
1148
1181
  }));
1149
1182
  var PxStrokeGradientEffectSchema = PxFillGradientEffectSchema;
1150
1183
  var PxTextPathEffectSchema = implementsInterface()(px.object({
1151
1184
  pathData: px.string(),
1152
- pathOverflow: px.enum([PxPathOverflow.clip, PxPathOverflow.extend]).optional(),
1153
- lengthAdjust: px.enum([PxLengthAdjust.spacing, PxLengthAdjust.spacingAndGlyphs]).optional(),
1154
- method: px.enum([PxTextPathMethod.align, PxTextPathMethod.stretch]).optional(),
1155
- spacing: px.enum([PxTextPathSpacing.auto, PxTextPathSpacing.exact]).optional(),
1185
+ // `extend` is what an omitted pathOverflow means (glyphs continue along the tangent); the
1186
+ // other three are SVG's own initial values for the native <textPath> attributes.
1187
+ pathOverflow: px.enum([PxPathOverflow.clip, PxPathOverflow.extend], PxPathOverflow.extend).optional(),
1188
+ lengthAdjust: px.enum([PxLengthAdjust.spacing, PxLengthAdjust.spacingAndGlyphs], PxLengthAdjust.spacing).optional(),
1189
+ method: px.enum([PxTextPathMethod.align, PxTextPathMethod.stretch], PxTextPathMethod.align).optional(),
1190
+ spacing: px.enum([PxTextPathSpacing.auto, PxTextPathSpacing.exact], PxTextPathSpacing.exact).optional(),
1156
1191
  startOffset: PxAnimatableNumberSchema.optional(),
1157
1192
  textLength: PxAnimatableNumberSchema.optional()
1158
1193
  }));
@@ -1716,7 +1751,6 @@ var PixodeskAnimator = (() => {
1716
1751
  return Object.keys(out).length ? out : void 0;
1717
1752
  }
1718
1753
  var PX_STYLE_ATTR_NAMES = /* @__PURE__ */ new Set(["offset-distance", "offsetDistance"]);
1719
- var PX_DEFAULT_DURATION_MS = 1e3;
1720
1754
  function kebabToCamelCaseWord(kebab) {
1721
1755
  return kebab.includes("-") ? kebab.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase()) : kebab;
1722
1756
  }
@@ -5754,9 +5788,10 @@ var PixodeskAnimator = (() => {
5754
5788
  // ../svg-animator-core/src/materialize/PxRestPose.ts
5755
5789
  var TRANSFORM_CHANNEL = "transform";
5756
5790
  var REVERSED_DIRECTIONS = /* @__PURE__ */ new Set(["reverse", "alternate-reverse"]);
5791
+ var VERIFY_SAMPLE_FRACTIONS = [0, 0.25, 0.5, 0.75, 1];
5757
5792
  var SCRATCH_ID_PREFIX = "__px_rest_";
5758
5793
  function materializeRestPosesInTree(root, engine) {
5759
- var _a2;
5794
+ var _a2, _b;
5760
5795
  const out = deepClone(root);
5761
5796
  const config = getAnimatorConfig(out) || {};
5762
5797
  const duration = +(config.duration || PX_DEFAULT_DURATION_MS);
@@ -5768,18 +5803,27 @@ var PixodeskAnimator = (() => {
5768
5803
  for (const [key, animate] of before) {
5769
5804
  const node = nodes.get(key);
5770
5805
  if (!node) continue;
5771
- for (const channel of Object.keys(animate)) {
5806
+ const channels = Object.keys(animate);
5807
+ for (const channel of channels) {
5808
+ if (PX_TRANSFORM_FN_NAMES.has(channel)) continue;
5772
5809
  if (!mayCarryRestPose(node, channel)) continue;
5773
5810
  const value = firstFrameValue(animate, channel, firstFrameTime);
5774
5811
  if (value === void 0) continue;
5775
5812
  node[channel] = value;
5776
5813
  added.set(key, [...(_a2 = added.get(key)) != null ? _a2 : [], channel]);
5777
5814
  }
5815
+ if (channels.some((channel) => PX_TRANSFORM_FN_NAMES.has(channel)) && mayCarryTransformRestPose(node)) {
5816
+ const parts = firstFrameTransformParts(animate, firstFrameTime);
5817
+ if (parts) {
5818
+ node[TRANSFORM_CHANNEL] = parts;
5819
+ added.set(key, [...(_b = added.get(key)) != null ? _b : [], TRANSFORM_CHANNEL]);
5820
+ }
5821
+ }
5778
5822
  }
5779
5823
  if (added.size) {
5780
5824
  const after = bindingsOf(out, engine);
5781
5825
  for (const [key, channels] of added) {
5782
- if (JSON.stringify(after.get(key)) === JSON.stringify(before.get(key))) continue;
5826
+ if (writesTheSameFrames(before.get(key), after.get(key), duration)) continue;
5783
5827
  const node = nodes.get(key);
5784
5828
  if (node) for (const channel of channels) delete node[channel];
5785
5829
  }
@@ -5788,16 +5832,31 @@ var PixodeskAnimator = (() => {
5788
5832
  }
5789
5833
  function mayCarryRestPose(node, channel) {
5790
5834
  if (node[channel] !== void 0) return false;
5791
- if (PX_TRANSFORM_FN_NAMES.has(channel)) return false;
5792
- if (channel === TRANSFORM_CHANNEL) {
5793
- for (const part of PX_TRANSFORM_FN_NAMES) if (node[part] !== void 0) return false;
5794
- }
5835
+ if (channel === TRANSFORM_CHANNEL) return mayCarryTransformRestPose(node);
5836
+ return true;
5837
+ }
5838
+ function mayCarryTransformRestPose(node) {
5839
+ if (node[TRANSFORM_CHANNEL] !== void 0) return false;
5840
+ for (const part of PX_TRANSFORM_FN_NAMES) if (node[part] !== void 0) return false;
5795
5841
  return true;
5796
5842
  }
5797
5843
  function firstFrameValue(animate, channel, timeMs) {
5798
5844
  const values = Object.values(calcAnimationValues({ [channel]: animate[channel] }, timeMs));
5799
5845
  return values.length === 1 && values[0] !== "" ? values[0] : void 0;
5800
5846
  }
5847
+ function firstFrameTransformParts(animate, timeMs) {
5848
+ const family = {};
5849
+ for (const channel of Object.keys(animate)) if (PX_TRANSFORM_FN_NAMES.has(channel)) family[channel] = animate[channel];
5850
+ const written = calcAnimationValues(family, timeMs)[TRANSFORM_CHANNEL];
5851
+ if (!written) return void 0;
5852
+ const parts = parseTransformParts(written.replace(/(px|deg)\b/g, ""));
5853
+ return parts && Object.keys(parts).length ? parts : void 0;
5854
+ }
5855
+ function writesTheSameFrames(a, b, durationMs) {
5856
+ if (!a || !b) return a === b;
5857
+ const frame = (animate, t) => JSON.stringify(calcAnimationValues(animate, t)).replace(/\s+/g, "");
5858
+ return VERIFY_SAMPLE_FRACTIONS.every((fraction) => frame(a, fraction * durationMs) === frame(b, fraction * durationMs));
5859
+ }
5801
5860
  function bindingsOf(tree, engine) {
5802
5861
  const scratch = deepClone(tree);
5803
5862
  const keyById = /* @__PURE__ */ new Map();
@@ -5922,13 +5981,13 @@ var PixodeskAnimator = (() => {
5922
5981
  const bindings = normalizeBindings(doc, PxTimelineEngine.js);
5923
5982
  const _iterations = config.iterations;
5924
5983
  let iterations = 1;
5925
- if (typeof _iterations === "number") iterations = _iterations || 1;
5984
+ if (typeof _iterations === "number") iterations = _iterations || PX_DEFAULT_ITERATIONS;
5926
5985
  if (_iterations === "infinite") iterations = Infinity;
5927
5986
  if (iterations < 1) iterations = 1;
5928
5987
  const duration = +(config.duration || PX_DEFAULT_DURATION_MS);
5929
- const totalDuration = duration && iterations ? duration * (iterations === Infinity ? Infinity : iterations) : duration ? (iterations != null ? iterations : 1) * duration : 0;
5930
- const direction = config.direction || "normal";
5931
- const fill = (_a2 = config.fill) != null ? _a2 : "forwards";
5988
+ const totalDuration = duration && iterations ? duration * (iterations === Infinity ? Infinity : iterations) : duration ? (iterations != null ? iterations : PX_DEFAULT_ITERATIONS) * duration : 0;
5989
+ const direction = config.direction || PxTimeTimelineSchema.defaults.direction;
5990
+ const fill = (_a2 = config.fill) != null ? _a2 : PxTimeTimelineSchema.defaults.fillMode;
5932
5991
  const fillsForwards = fill === "forwards" || fill === "both";
5933
5992
  const fillsBackwards = fill === "backwards" || fill === "both";
5934
5993
  let timerId = null;
@@ -7017,7 +7076,7 @@ var PixodeskAnimator = (() => {
7017
7076
  let seekPosition;
7018
7077
  if (config.delay && config.delay < 0 && config.duration) {
7019
7078
  const rawSeek = -config.delay;
7020
- seekPosition = iterations === Infinity ? rawSeek % config.duration : Math.min(rawSeek, config.duration * (iterations != null ? iterations : 1));
7079
+ seekPosition = iterations === Infinity ? rawSeek % config.duration : Math.min(rawSeek, config.duration * (iterations != null ? iterations : PX_DEFAULT_ITERATIONS));
7021
7080
  }
7022
7081
  const effectOptions = {
7023
7082
  duration: config.duration,
@@ -7124,7 +7183,7 @@ var PixodeskAnimator = (() => {
7124
7183
  },
7125
7184
  "setCurrentTime": (time) => {
7126
7185
  var _a3;
7127
- const ceiling = seekCeilingMs((_a3 = config.duration) != null ? _a3 : 0, iterations != null ? iterations : 1);
7186
+ const ceiling = seekCeilingMs((_a3 = config.duration) != null ? _a3 : 0, iterations != null ? iterations : PX_DEFAULT_ITERATIONS);
7128
7187
  const seek = ceiling > 0 ? clampSeekMs(time, ceiling) : Math.max(0, time);
7129
7188
  finishNotified = false;
7130
7189
  animations.forEach((a) => {
@@ -7134,11 +7193,11 @@ var PixodeskAnimator = (() => {
7134
7193
  "getCurrentProgress": () => {
7135
7194
  var _a3;
7136
7195
  const t = api.getCurrentTime();
7137
- return t === null ? null : timeToProgress(t, (_a3 = config.duration) != null ? _a3 : 0, iterations != null ? iterations : 1);
7196
+ return t === null ? null : timeToProgress(t, (_a3 = config.duration) != null ? _a3 : 0, iterations != null ? iterations : PX_DEFAULT_ITERATIONS);
7138
7197
  },
7139
7198
  "setCurrentProgress": (progress) => {
7140
7199
  var _a3;
7141
- api.setCurrentTime(progressToTimeMs(progress, (_a3 = config.duration) != null ? _a3 : 0, iterations != null ? iterations : 1));
7200
+ api.setCurrentTime(progressToTimeMs(progress, (_a3 = config.duration) != null ? _a3 : 0, iterations != null ? iterations : PX_DEFAULT_ITERATIONS));
7142
7201
  },
7143
7202
  "destroy": () => {
7144
7203
  var _a3;