UNPKG

@drincs/pixi-vn

Version:

Pixi'VN is a npm package that provides various features for creating visual novels.

1 lines 12.2 kB
import {RegisteredTickers,canvas}from'@drincs/pixi-vn/canvas';import X from'@drincs/pixi-vn/pixi.js';import {animate,motionValue}from'motion';import {PixiError}from'@drincs/pixi-vn/core';var tt=Object.create;var E=Object.defineProperty;var et=Object.getOwnPropertyDescriptor;var nt=Object.getOwnPropertyNames;var it=Object.getPrototypeOf,rt=Object.prototype.hasOwnProperty;var at=(a,e,n)=>e in a?E(a,e,{enumerable:true,configurable:true,writable:true,value:n}):a[e]=n;var q=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var U=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports);var ot=(a,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of nt(e))!rt.call(a,r)&&r!==n&&E(a,r,{get:()=>e[r],enumerable:!(i=et(e,r))||i.enumerable});return a};var st=(a,e,n)=>(n=a!=null?tt(it(a)):{},ot(E(n,"default",{value:a,enumerable:true}),a));var v=(a,e,n)=>at(a,typeof e!="symbol"?e+"":e,n);var K=U((P,$)=>{(function(a,e){typeof P=="object"?$.exports=P=e():typeof define=="function"&&define.amd?define([],e):a.CryptoJS=e();})(P,function(){var a=a||(function(e,n){var i;if(typeof window<"u"&&window.crypto&&(i=window.crypto),typeof self<"u"&&self.crypto&&(i=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(i=globalThis.crypto),!i&&typeof window<"u"&&window.msCrypto&&(i=window.msCrypto),!i&&typeof global<"u"&&global.crypto&&(i=global.crypto),!i&&typeof q=="function")try{i=q("crypto");}catch{}var r=function(){if(i){if(typeof i.getRandomValues=="function")try{return i.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof i.randomBytes=="function")try{return i.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||(function(){function t(){}return function(o){var f;return t.prototype=o,f=new t,t.prototype=null,f}})(),c={},y=c.lib={},l=y.Base=(function(){return {extend:function(t){var o=s(this);return t&&o.mixIn(t),(!o.hasOwnProperty("init")||this.init===o.init)&&(o.init=function(){o.$super.init.apply(this,arguments);}),o.init.prototype=o,o.$super=this,o},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var o in t)t.hasOwnProperty(o)&&(this[o]=t[o]);t.hasOwnProperty("toString")&&(this.toString=t.toString);},clone:function(){return this.init.prototype.extend(this)}}})(),m=y.WordArray=l.extend({init:function(t,o){t=this.words=t||[],o!=n?this.sigBytes=o:this.sigBytes=t.length*4;},toString:function(t){return (t||h).stringify(this)},concat:function(t){var o=this.words,f=t.words,p=this.sigBytes,g=t.sigBytes;if(this.clamp(),p%4)for(var T=0;T<g;T++){var W=f[T>>>2]>>>24-T%4*8&255;o[p+T>>>2]|=W<<24-(p+T)%4*8;}else for(var O=0;O<g;O+=4)o[p+O>>>2]=f[O>>>2];return this.sigBytes+=g,this},clamp:function(){var t=this.words,o=this.sigBytes;t[o>>>2]&=4294967295<<32-o%4*8,t.length=e.ceil(o/4);},clone:function(){var t=l.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var o=[],f=0;f<t;f+=4)o.push(r());return new m.init(o,t)}}),u=c.enc={},h=u.Hex={stringify:function(t){for(var o=t.words,f=t.sigBytes,p=[],g=0;g<f;g++){var T=o[g>>>2]>>>24-g%4*8&255;p.push((T>>>4).toString(16)),p.push((T&15).toString(16));}return p.join("")},parse:function(t){for(var o=t.length,f=[],p=0;p<o;p+=2)f[p>>>3]|=parseInt(t.substr(p,2),16)<<24-p%8*4;return new m.init(f,o/2)}},b=u.Latin1={stringify:function(t){for(var o=t.words,f=t.sigBytes,p=[],g=0;g<f;g++){var T=o[g>>>2]>>>24-g%4*8&255;p.push(String.fromCharCode(T));}return p.join("")},parse:function(t){for(var o=t.length,f=[],p=0;p<o;p++)f[p>>>2]|=(t.charCodeAt(p)&255)<<24-p%4*8;return new m.init(f,o)}},A=u.Utf8={stringify:function(t){try{return decodeURIComponent(escape(b.stringify(t)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(t){return b.parse(unescape(encodeURIComponent(t)))}},x=y.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new m.init,this._nDataBytes=0;},_append:function(t){typeof t=="string"&&(t=A.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes;},_process:function(t){var o,f=this._data,p=f.words,g=f.sigBytes,T=this.blockSize,W=T*4,O=g/W;t?O=e.ceil(O):O=e.max((O|0)-this._minBufferSize,0);var I=O*T,Y=e.min(I*4,g);if(I){for(var R=0;R<I;R+=T)this._doProcessBlock(p,R);o=p.splice(0,I),f.sigBytes-=Y;}return new m.init(o,Y)},clone:function(){var t=l.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0});y.Hasher=x.extend({cfg:l.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset();},reset:function(){x.reset.call(this),this._doReset();},update:function(t){return this._append(t),this._process(),this},finalize:function(t){t&&this._append(t);var o=this._doFinalize();return o},blockSize:512/32,_createHelper:function(t){return function(o,f){return new t.init(f).finalize(o)}},_createHmacHelper:function(t){return function(o,f){return new d.HMAC.init(t,f).finalize(o)}}});var d=c.algo={};return c})(Math);return a});});var J=U((j,L)=>{(function(a,e){typeof j=="object"?L.exports=j=e(K()):typeof define=="function"&&define.amd?define(["./core"],e):e(a.CryptoJS);})(j,function(a){return (function(){var e=a,n=e.lib,i=n.WordArray,r=n.Hasher,s=e.algo,c=[],y=s.SHA1=r.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878,3285377520]);},_doProcessBlock:function(l,m){for(var u=this._hash.words,h=u[0],b=u[1],A=u[2],x=u[3],B=u[4],d=0;d<80;d++){if(d<16)c[d]=l[m+d]|0;else {var t=c[d-3]^c[d-8]^c[d-14]^c[d-16];c[d]=t<<1|t>>>31;}var o=(h<<5|h>>>27)+B+c[d];d<20?o+=(b&A|~b&x)+1518500249:d<40?o+=(b^A^x)+1859775393:d<60?o+=(b&A|b&x|A&x)-1894007588:o+=(b^A^x)-899497514,B=x,x=A,A=b<<30|b>>>2,b=h,h=o;}u[0]=u[0]+h|0,u[1]=u[1]+b|0,u[2]=u[2]+A|0,u[3]=u[3]+x|0,u[4]=u[4]+B|0;},_doFinalize:function(){var l=this._data,m=l.words,u=this._nDataBytes*8,h=l.sigBytes*8;return m[h>>>5]|=128<<24-h%32,m[(h+64>>>9<<4)+14]=Math.floor(u/4294967296),m[(h+64>>>9<<4)+15]=u,l.sigBytes=m.length*4,this._process(),this._hash},clone:function(){var l=r.clone.call(this);return l._hash=this._hash.clone(),l}});e.SHA1=r._createHelper(y),e.HmacSHA1=r._createHmacHelper(y);})(),a.SHA1});});var H=(a,e=100)=>{let n=null;return (...i)=>{n&&clearTimeout(n),n=setTimeout(()=>a(...i),e);}};var M=a=>e=>{let n=({lastTime:i})=>e(i);return {start:(i=true)=>{a.add(n),a.start();},stop:()=>a.remove(n),now:()=>a.lastTime}};function w(a,e,n){if(Array.isArray(a)&&Array.isArray(a[0])){e&&"repeat"in e&&e?.repeat===null&&(e.repeat=1/0),a.forEach(c=>{if(Array.isArray(c)&&c.length===3){let[y,l,m]=c;m&&"repeat"in m&&m?.repeat===null&&(m.repeat=1/0);}});let{ticker:i=new X.Ticker,driver:r=M(i),...s}=e||{};return animate(a,{driver:r,...s})}else {n&&"repeat"in n&&n?.repeat===null&&(n.repeat=1/0);let{ticker:i=new X.Ticker,driver:r=M(i),...s}=n||{};return animate(a,e,{driver:r,...s})}}function ct(a,e){let n={x:0},i=[];return a.forEach((r,s)=>{let{onComplete:c,onPlay:y,...l}=r;if(y){let m=motionValue(s);m.on("change",H(y,50)),i.push([m,s+1,{duration:.01}]);}if(i.push([n,{x:s+1},l]),c){let m=motionValue(s);m.on("change",H(c,50)),i.push([m,s+1,{duration:.01}]);}}),w(i,e)}var G=st(J());var S=class{constructor(e,n){v(this,"id");v(this,"_args");v(this,"duration");v(this,"priority");v(this,"ticker",new X.Ticker);v(this,"_animation");v(this,"stopped",false);v(this,"_paused",false);v(this,"canvasElementAliases",[]);v(this,"timeout",50);v(this,"onComplete",()=>{let e=this.id,n=this._args.options?.aliasToRemoveAfter||[];typeof n=="string"&&(n=[n]);let i=this._args.options?.tickerAliasToResume||[];typeof i=="string"&&(i=[i]);let r=this._args.options?.tickerIdToResume||[];typeof r=="string"&&(r=[r]),canvas.onTickerComplete(e,{aliasToRemoveAfter:n,tickerAliasToResume:i,tickerIdToResume:r,stopTicker:false});});let{duration:i,priority:r,id:s=this.generateTickerId(n),canvasElementAliases:c=[]}=n||{};this._args=e,this.duration=i,this.priority=r,this.id=s,this.canvasElementAliases=c;}get args(){return {...this._args,time:this._animation?.time}}getItemByAlias(e){if(!this.canvasElementAliases.includes(e))return;let n=canvas.find(e);if(n)return n}generateTickerId(...e){try{return (0,G.default)(JSON.stringify(e)).toString()+"_motion_"+Math.random().toString(36).substring(7)}catch(n){throw new PixiError("not_json_serializable",`Error to generate ticker id: ${n}`)}}async complete(){this.animation.complete(),await new Promise(e=>setTimeout(e,this.timeout));}stop(){this.stopped=true,this.animation.stop();}start(){this.args.options?.autoplay!==false&&(this._paused=false,this.animation.play());}createItem(e){return new Proxy({alias:e},{set:({alias:n},i,r)=>{if(this.stopped||this._paused||this._args.startState&&this._args.startState[i]===r)return true;let s=this.getItemByAlias(n);if(!s)return true;switch(i){case "pivotX":s.pivot.x=r;break;case "pivotY":s.pivot.y=r;break;case "scaleX":s.scale.x=r;break;case "scaleY":s.scale.y=r;break;default:s[i]=r;break}return true},get:({alias:n},i)=>{if(this._args.startState||(this._args.startState={}),i in this._args.startState)return this._args.startState[i];let r=this.getItemByAlias(n);if(!r)return;let s;switch(i){case "pivotX":s=r.pivot.x;break;case "pivotY":s=r.pivot.y;break;case "scaleX":s=r.scale.x;break;case "scaleY":s=r.scale.y;break;default:s=r[i];break}return this._args.startState={...this._args.startState,[i]:s},s},has:({alias:n},i)=>{let r=this.getItemByAlias(n);if(!r)return false;switch(i){case "pivotX":return "pivot"in r&&"x"in r.pivot;case "pivotY":return "pivot"in r&&"y"in r.pivot;case "scaleX":return "scale"in r&&"x"in r.scale;case "scaleY":return "scale"in r&&"y"in r.scale;default:return i in r}},ownKeys:({alias:n})=>{let i=this.getItemByAlias(n);return i?Object.keys(i):[]}})}pause(){this.animation&&(this._paused=true,this.animation.pause());}play(){this._paused=false,this.animation.play();}get paused(){return this.animation?this.animation.state==="paused":true}};var _=class extends S{constructor(){super(...arguments);v(this,"alias","motion-sequence");}get animation(){let n=this._animation;if(n)return n;let i=this.canvasElementAliases[0],r=this.createItem(i),s=this._args.sequence.map((c,y)=>[r,c[0],{...c[1]||{},ticker:this.ticker,onComplete:y===this._args.sequence.length-1?()=>this.onComplete():void 0}]);return n=w(s,this._args.options),this._args.time&&(this.animation.time=this._args.time),this._animation=n,n}};var k=class extends S{constructor(){super(...arguments);v(this,"alias","motion");}get animation(){let n=this._animation;if(n)return n;let i=this.canvasElementAliases.map(r=>this.createItem(r));return n=w(i,this._args.keyframes,{...this._args.options,onComplete:()=>this.onComplete(),ticker:this.ticker}),this._args.time&&(n.time=this._args.time),this._animation=n,n}};var C;(r=>(r.log=(s,...c)=>console.log(`[Pixi\u2019VN] ${s}`,...c),r.warn=(s,...c)=>console.warn(`[Pixi\u2019VN] ${s}`,...c),r.error=(s,...c)=>console.error(`[Pixi\u2019VN] ${s}`,...c),r.info=(s,...c)=>console.info(`[Pixi\u2019VN] ${s}`,...c)))(C||(C={}));function z(a){try{if(typeof a>"u")return a;let e=JSON.stringify(a);return JSON.parse(e)}catch(e){throw C.error("Error creating exportable element",a,e),new PixiError("not_json_serializable","Error creating exportable element")}}var D;(e=>{function a(n,i,r,s){try{i=z(i);}catch(h){throw C.error("animate keyframes cannot contain functions or classes"),h}try{r=z(r);}catch(h){throw C.error("animate options cannot contain functions or classes"),h}let c=[];typeof n=="string"?c=[n]:Array.isArray(n)?c=n.map(h=>typeof h=="string"?h:h.label):c=[n.label];let y;Array.isArray(i)?y=new _({sequence:i,options:r},{priority:s,canvasElementAliases:c}):y=new k({keyframes:i,options:r},{priority:s,canvasElementAliases:c});let l=canvas.addTicker(c,y),{forceCompleteBeforeNext:m}=r||{},{completeOnContinue:u=m}=r||{};return l&&u&&canvas.completeTickerOnStepEnd({id:l}),l}e.animate=a;})(D||(D={}));var ut=D;RegisteredTickers.add(k,"motion");RegisteredTickers.add(_,"motion-sequence");export{w as animate,ut as motion,M as motionDriver,ct as timeline};