-
Notifications
You must be signed in to change notification settings - Fork 60
/
Copy pathindex.js
1 lines (1 loc) · 12.7 KB
/
index.js
1
import{h as t}from"vue";function n(t){return"function"==typeof t}function r(){}var i=function(t){this.previousValue=t,this.interrupted=!1,this.interruptHandlers=new Set};i.prototype.throwIfInterrupted=function(){if(this.interrupted)throw new Error},i.prototype.interrupt=function(){this.interrupted||(this.interrupted=!0,this.interruptHandlers.forEach((function(t){try{t()}catch(t){}})))},i.prototype.onInterrupt=function(t){if(this.interrupted&&!this.interruptHandlers.has(t))try{t()}catch(t){}this.interruptHandlers.add(t)};function e(t){return function(){return t}}function o(){return[]}var u={animationDuration:{type:Number,default:1e3},animationEasing:{type:String,default:"ease"},animationOverlap:{type:Number,default:1},color:{type:[String,Function],default:"Black"},createCanvas:{type:Function,default:function(){return document.createElement("canvas")}},createWorker:{type:Function,default:function(t){return new Worker(URL.createObjectURL(new Blob([t])))}},enterAnimation:{type:[Object,String],default:e({opacity:0})},fontFamily:{type:[String,Function],default:"serif"},fontSizeRatio:{type:Number,default:0},fontStyle:{type:[String,Function],default:"normal"},fontVariant:{type:[String,Function],default:"normal"},fontWeight:{type:[String,Function],default:"normal"},leaveAnimation:{type:[Object,String],default:e({opacity:0})},loadFont:{type:Function,default:function(t,n,r,i){return document.fonts.load([n,r,"1px",t].join(" "),i)}},rotation:{type:[Number,Function],default:0},rotationUnit:{type:[String,Function],default:"turn"},spacing:{type:Number,default:0},text:{type:[String,Function],default:""},weight:{type:[Number,Function],default:1},words:{type:Array,default:o}};var a=e(null);function f(t){if(t){var n=typeof t;return"object"===n||"function"===n}return!1}function s(t){return"string"==typeof t}var c={animationOptions:function(){var t,n,r,i=this.animationDuration,e=this.enterAnimation,o=this.leaveAnimation;if(f(e)&&f(o)){var u=(t=Object.assign({},e,o),n=a,r={},Object.entries(t).forEach((function(i){var e=i[0],o=i[1];r[e]=n(o,e,t)})),r),c=function(t){Object.assign(t.style,e)},h=function(t,n){setTimeout((function(){Object.assign(t.style,u),setTimeout(n,i)}),1)};return{props:{css:!1},on:{beforeAppear:c,appear:h,beforeEnter:c,enter:h,leave:function(t,n){Object.assign(t.style,o),setTimeout(n,i)}}}}return s(e)&&s(o)?{props:{duration:i,appear:!0,appearActiveClass:e,enterActiveClass:e,leaveActiveClass:o}}:{}},normalizedAnimationOverlap:function(){var t=this.animationOverlap;return(t=Math.abs(t))<1&&(t=1/t),t},separateAnimationDelay:function(){var t=this.cloudWords;if(t.length>1){return(this.animationDuration-this.separateAnimationDuration)/(t.length-1)}return 0},separateAnimationDuration:function(){var t=this.cloudWords;if(t.length>0){var n=this.animationDuration,r=this.normalizedAnimationOverlap;return n/Math.min(r,t.length)}return 0}},h=Array.isArray;function l(t){return n(t)?t:e(t)}var v=2*Math.PI,d=v/360;function m(t){return void 0===t}function p(t,n){return t.postMessage(n),function(t){return new Promise((function(n,r){var i,e=function(t){var r=t.data;i(),n(r)},o=function(t){var n=t.error;i(),r(n)};i=function(){t.removeEventListener("message",e),t.removeEventListener("error",o)},t.addEventListener("message",e),t.addEventListener("error",o)}))}(t)}function g(t,n,r){return Math.ceil(t*Math.abs(Math.sin(r))+n*Math.abs(Math.cos(r)))}function b(t,n,r){return Math.ceil(t*Math.abs(Math.cos(r))+n*Math.abs(Math.sin(r)))}function y(t,n,r,i,e){return[t,n,r,i+"px",e].join(" ")}function M(t,n){return Math.ceil(t/n)*n}function w(t,n,r){var i=r().getContext("2d");return i.font=n,i.measureText(t).width}var x=function(t,n,r,i,e,o,u){this.t=t,this.i=n,this.o=r,this.u=i,this.s=e,this.h=o,this.l=u,this.v=1,this.m=0,this.p=0,this.g=0},S={M:{configurable:!0},S:{configurable:!0},F:{configurable:!0},j:{configurable:!0},O:{configurable:!0},W:{configurable:!0},A:{configurable:!0},B:{configurable:!0},C:{configurable:!0},L:{configurable:!0},_:{configurable:!0},P:{configurable:!0},T:{configurable:!0},N:{configurable:!0},k:{configurable:!0},D:{configurable:!0},H:{configurable:!0},R:{configurable:!0},U:{configurable:!0}};S.M.get=function(){return this.v},S.M.set=function(t){this.v!==t&&(this.v=t,this.V=void 0)},S.S.get=function(){return y(this.h,this.s,this.u,this.M,this.o)},S.F.get=function(){return void 0===this.q&&(this.q=w(this.t,y(this.h,this.s,this.u,1,this.o),this.l)),this.q},S.j.get=function(){return this.F*this.M},S.O.get=function(){return this.p*this.M},S.O.set=function(t){this.p=t/this.M},S.W.get=function(){return this.g*this.M},S.W.set=function(t){this.g=t/this.M},S.A.get=function(){return b(this.j,this.M,this.i)},S.B.get=function(){return g(this.j,this.M,this.i)},S.C.get=function(){return this.O-this.A/2},S.L.get=function(){return this.W-this.B/2},S._.get=function(){return this.m},S._.set=function(t){this.m!==t&&(this.m=t,this.V=void 0)},S.P.get=function(){return void 0===this.V&&(this.V=function(t,n,r,i,e,o,u,a,f){var s=y(n,r,i,e*=4,o),c=u*e*2,h=c+w(t,s,f),l=c+e,v=f(),d=v.getContext("2d"),m=M(b(h,l,a),4),p=M(g(h,l,a),4);v.width=m,v.height=p,d.translate(m/2,p/2),d.rotate(a),d.font=s,d.textAlign="center",d.textBaseline="middle",d.fillText(t,0,0),c>0&&(d.miterLimit=1,d.lineWidth=c,d.strokeText(t,0,0));for(var x=d.getImageData(0,0,m,p).data,S=[],F=1/0,j=0,O=1/0,E=0,W=m/4,A=p/4,B=0;B<W;++B)for(var C=0;C<A;++C)t:for(var L=0;L<4;++L)for(var _=0;_<4;++_){if(x[4*(m*(4*C+_)+(4*B+L))+3]){S.push([B,C]),F=Math.min(B,F),j=Math.max(B+1,j),O=Math.min(C,O),E=Math.max(C+1,E);break t}}return S.length>0?[S.map((function(t){var n=t[0],r=t[1];return[n-F,r-O]})),j-F,E-O,Math.ceil(W/2)-F,Math.ceil(A/2)-O]:[S,0,0,0,0]}(this.t,this.h,this.s,this.u,this.M,this.o,this._,this.i,this.l)),this.V},S.T.get=function(){return this.P[0]},S.N.get=function(){return this.P[1]},S.k.get=function(){return this.P[2]},S.D.get=function(){return this.P[3]},S.H.get=function(){return this.P[4]},S.R.get=function(){return Math.ceil(this.O)-this.D},S.R.set=function(t){this.O=t+this.D},S.U.get=function(){return Math.ceil(this.W)-this.H},S.U.set=function(t){this.W=t+this.H},Object.defineProperties(x.prototype,S);var F={cloudWords:function(t){this.$emit("update:cloudWords",t)},progress:{handler:function(t){this.$emit("update:progress",t)},deep:!0,immediate:!0}};var j={updateElementSize:function(){var t=this.$el;t&&(this.elementWidth=t.offsetWidth,this.elementHeight=t.offsetHeight)}};var O={name:"VueWordCloud",mixins:[function(t){return{data:function(){var n={};return Object.keys(t).forEach((function(t){n["asyncComputed_trigger_"+t]={}})),n},computed:{},beforeCreate:function(){var e=this,o=new Set;Object.entries(t).forEach((function(t){var u=t[0],a=t[1],f=a.get,s=a.default,c=a.errorHandler;void 0===c&&(c=r);var h,l=!0;e.$options.computed[u]=function(){return this["asyncComputed_trigger_"+u],this["asyncComputed_promise_"+u],s},e.$options.computed["asyncComputed_promise_"+u]=function(){var t=this;h&&(h.interrupt(),o.delete(h)),l&&(l=!1,n(s)&&(s=s.call(this)));var r=new i(s);h=r,o.add(h),new Promise((function(n){n(f.call(t,r))})).then((function(n){r.throwIfInterrupted(),s=n,t["asyncComputed_trigger_"+u]={}})).catch(c)}}))}}}({cloudWords:{get:function(t){var n,i=this,e=this,o=e.elementWidth,u=e.elementHeight,a=e.words,c=e.text,g=e.weight,b=e.rotation,y=e.rotationUnit,M=e.fontFamily,w=e.fontWeight,S=e.fontVariant,F=e.fontStyle,j=e.color,O=e.spacing,E=e.fontSizeRatio,W=e.createCanvas,A=e.loadFont,B=e.createWorker;n=E,E=(n=Math.abs(n))>1?1/n:n;var C=function(t){var n=t[0],r=t[1];return n>r?[1,r/n]:r>n?[n/r,1]:[1,1]}([o,u]);if(o>0&&u>0){var L=l(c),_=l(g),P=l(b),T=l(y),N=l(M),k=l(w),z=l(S),D=l(F),H=l(j);return a=a.map((function(t,n){var r,i,e,o,u,c,l,p,g,b,y;t&&(s(t)?e=t:h(t)?(e=(r=t)[0],o=r[1]):f(t)&&(e=(i=t).text,o=i.weight,u=i.rotation,c=i.rotationUnit,l=i.fontFamily,p=i.fontWeight,g=i.fontVariant,b=i.fontStyle,y=i.color)),m(e)&&(e=L(t,n,a)),m(o)&&(o=_(t,n,a)),m(u)&&(u=P(t,n,a)),m(c)&&(c=T(t,n,a)),m(l)&&(l=N(t,n,a)),m(p)&&(p=k(t,n,a)),m(g)&&(g=z(t,n,a)),m(b)&&(b=D(t,n,a)),m(y)&&(y=H(t,n,a));var M=new x(e,function(){switch(c){case"turn":return u*v;case"deg":return function(t){return t*d}(u)}return u}(),l,p,g,b,W);return Object.assign(M,{J:t,G:o,I:y}),M})),Promise.resolve().then((function(){return Promise.all(a.map((function(t){var n=t.o,r=t.h,i=t.u,e=t.t;return A(n,r,i,e)})))})).catch(r).then((function(){if((a=a.filter((function(t){return t.j>0})).sort((function(t,n){return n.G-t.G}))).length>0){var n=a[0],r=function(t){return t[(n=t,n.length-1)];var n}(a),e=n.G,f=r.G;if(f<e){var s=E>0?1/E:f>0?e/f:e<0?f/e:1+e-f;a.forEach((function(t){var n,r,i;t.M=(n=t.G,(i=1)+(n-(r=f))*(s-i)/(e-r))}))}a.reduceRight((function(t,n){return n.M<2*t?n.M/=t:(t=n.M,n.M=1),n.K=t}),1),a.forEach((function(t){t.M*=4}));var c=B('!function(){"use strict";var r=function(t){self.removeEventListener("message",r);var n,e,a,f,i,u=t.data,o=function(){n={},e=0,a=0,f=0,i=0};o();var s=function(){return Math.ceil((e+a)/2)},v=function(){return Math.ceil((f+i)/2)},c=function(){return{left:s(),top:v(),width:a-e,height:i-f}},l=function(r,t,u){r.forEach((function(r){var o=r[0],s=r[1],v=t+o,c=u+s;n[v+"|"+c]=!0,e=Math.min(v,e),a=Math.max(v+1,a),f=Math.min(c,f),i=Math.max(c+1,i)}))},h=function(r,t,e){return function(r,t,n){var e,a,f=r[0],i=r[1],u=t[0],o=t[1];f>i?(e=1,a=i/f):i>f?(a=1,e=f/i):e=a=1;var s=[u,o];if(n(s))return s;for(var v=u,c=o,l=u,h=o,M=v,d=c;;){u-=e,o-=a,v+=e,c+=a;var m=Math.floor(u),g=Math.floor(o),p=Math.ceil(v),E=Math.ceil(c);if(p>M)for(var L=g;L<E;++L){var x=[p,L];if(n(x))return x}if(E>d)for(var y=p;y>m;--y){var w=[y,E];if(n(w))return w}if(m<l)for(var B=E;B>g;--B){var F=[m,B];if(n(F))return F}if(g<h)for(var b=m;b<p;++b){var j=[b,g];if(n(j))return j}l=m,h=g,M=p,d=E}}(u,[t+s(),e+v()],(function(t){var e=t[0],a=t[1];return function(r,t,e){return r.every((function(r){var a=r[0],f=r[1];return!n[t+a+"|"+(e+f)]}))}(r,e,a)}))};self.postMessage({}),self.addEventListener("message",(function(r){self.postMessage({getBounds:c,put:l,findFit:h,clear:o}[r.data.name].apply(null,r.data.args))}))};self.addEventListener("message",r)}();\n'),h={completedWords:0,totalWords:a.length};return Promise.resolve().then((function(){return t.throwIfInterrupted(),i.progress=h,p(c,C)})).then((function(){t.throwIfInterrupted(),h.completedWords++;var n=Promise.resolve();return a.reduce((function(r,i,e){return n=n.then((function(){return i.K<r.K?Promise.resolve().then((function(){return p(c,{name:"clear"})})).then((function(){var t=Promise.resolve(),n=r.K/i.K;return a.slice(0,e).forEach((function(r){t=t.then((function(){return r.M*=n,p(c,{name:"put",args:[r.T,r.R,r.U]})}))})),t})):p(c,{name:"put",args:[r.T,r.R,r.U]})})).then((function(){return i._=O,p(c,{name:"findFit",args:[i.T,i.R,i.U]})})).then((function(n){var r=n[0],e=n[1];t.throwIfInterrupted(),h.completedWords++,i.R=r,i.U=e,i._=0})),i})),n})).then((function(){return p(c,{name:"put",args:[r.T,r.R,r.U]})})).then((function(){return p(c,{name:"getBounds"})})).then((function(t){var n=t.left,r=t.top,i=t.width,e=t.height;if(i>0&&e>0){var f=Math.min(o/i,u/e);a.forEach((function(t){t.O-=n,t.W-=r,t.M*=f}))}var s=new Set;return a.map((function(t){for(var n=t.J,r=t.t,i=t.G,e=t.i,o=t.o,u=t.u,a=t.s,f=t.h,c=t.S,h=t.O,l=t.W,v=t.I,d=JSON.stringify([r,o,u,a,f]);s.has(d);)d+="!";return s.add(d),{key:d,word:n,text:r,weight:i,rotation:e,font:c,color:v,left:h,top:l}}))})).finally((function(){c.terminate()})).finally((function(){t.throwIfInterrupted(),i.progress=null}))}return[]}))}return[]},default:o}})],props:u,data:function(){return{elementWidth:0,elementHeight:0,progress:null}},computed:c,watch:F,mounted:function(){var t,n,r=this;t=function(){if(r._isDestroyed)return!1;r.updateElementSize()},n=1e3,function(t){var n=function(){for(var r=[],i=arguments.length;i--;)r[i]=arguments[i];return t.call.apply(t,[this,n].concat(r))};return n}((function(r){requestAnimationFrame((function(){!1!==t()&&setTimeout(r,n)}))}))()},methods:j,render:function(){var n=this.$slots,r=this.animationEasing,i=this.animationOptions,e=this.cloudWords,o=this.separateAnimationDelay,u=this.separateAnimationDuration;return n=Object.assign({},{default:function(t){return t.text}},n),t("div",{style:{height:"100%",position:"relative",width:"100%"}},[t("div",{style:{bottom:"50%",position:"absolute",right:"50%",transform:"translate(50%,50%)"}},e.map((function(e,a){var f=e.color,s=e.font,c=e.left,h=e.rotation,l=e.text,v=e.top,d=e.weight,m=e.word;return t("transition",Object.assign({},i),[t("div",{key:a,style:Object.assign({},{left:c+"px",position:"absolute",top:v+"px"},u>0?{animation:[u+"ms",r,o*a+"ms"].join(" "),transition:["all",u+"ms",r,o*a+"ms"].join(" ")}:{})},[t("div",{style:Object.assign({},{bottom:"50%",color:f,font:s,position:"absolute",right:"50%",transform:["translate(50%,50%)","rotate("+h+"rad)"].join(" "),whiteSpace:"nowrap"},u>0?{transition:["all",u+"ms",r,o*a+"ms"].join(" ")}:{})},[n.default({color:f,font:s,left:c,text:l,top:v,weight:d,word:m})])])])})))])}};export{O as default};