plugin.min.js 36 KB

1
  1. !function(){"use strict";var r=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return r(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),Y=tinymce.util.Tools.resolve("tinymce.util.Tools");function n(t,e){return i(document.createElement("canvas"),t,e)}function o(t){return t.getContext("2d")}function i(t,e,n){return t.width=e,t.height=n,t}var a,u,c,l,h={create:n,clone:function(t){var e;return o(e=n(t.width,t.height)).drawImage(t,0,0),e},resize:i,get2dContext:o,get3dContext:function(t){var e=null;try{e=t.getContext("webgl")||t.getContext("experimental-webgl")}catch(n){}return e||(e=null),e}},p={getWidth:function(t){return t.naturalWidth||t.width},getHeight:function(t){return t.naturalHeight||t.height}},g=window.Promise?window.Promise:function(){var t=function(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],l(t,r(o,this),r(a,this))},e=t.immediateFn||"function"==typeof setImmediate&&setImmediate||function(t){setTimeout(t,1)};function r(t,e){return function(){t.apply(e,arguments)}}var n=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function i(r){var o=this;null!==this._state?e(function(){var t=o._state?r.onFulfilled:r.onRejected;if(null!==t){var e;try{e=t(o._value)}catch(n){return void r.reject(n)}r.resolve(e)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function o(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void l(r(e,t),r(o,this),r(a,this))}this._state=!0,this._value=t,u.call(this)}catch(n){a.call(this,n)}}function a(t){this._state=!1,this._value=t,u.call(this)}function u(){for(var t=0,e=this._deferreds.length;t<e;t++)i.call(this,this._deferreds[t]);this._deferreds=null}function c(t,e,n,r){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.resolve=n,this.reject=r}function l(t,e,n){var r=!1;try{t(function(t){r||(r=!0,e(t))},function(t){r||(r=!0,n(t))})}catch(o){if(r)return;r=!0,n(o)}}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype.then=function(n,r){var o=this;return new t(function(t,e){i.call(o,new c(n,r,t,e))})},t.all=function(){var c=Array.prototype.slice.call(1===arguments.length&&n(arguments[0])?arguments[0]:arguments);return new t(function(o,i){if(0===c.length)return o([]);var a=c.length;function u(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){u(e,t)},i)}c[e]=t,0==--a&&o(c)}catch(r){i(r)}}for(var t=0;t<c.length;t++)u(t,c[t])})},t.resolve=function(e){return e&&"object"==typeof e&&e.constructor===t?e:new t(function(t){t(e)})},t.reject=function(n){return new t(function(t,e){e(n)})},t.race=function(o){return new t(function(t,e){for(var n=0,r=o.length;n<r;n++)o[n].then(t,e)})},t}(),s=function(t){return function(){return t}},f={noop:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},noarg:function(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return n()}},compose:function(n,r){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return n(r.apply(null,arguments))}},constant:s,identity:function(t){return t},tripleEquals:function(t,e){return t===e},curry:function(i){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];for(var a=new Array(arguments.length-1),n=1;n<arguments.length;n++)a[n-1]=arguments[n];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];var o=a.concat(n);return i.apply(null,o)}},not:function(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(null,arguments)}},die:function(t){return function(){throw new Error(t)}},apply:function(t){return t()},call:function(t){t()},never:s(!1),always:s(!0)},d=f.never,m=f.always,v=function(){return y},y=(l={fold:function(t,e){return t()},is:d,isSome:d,isNone:m,getOr:c=function(t){return t},getOrThunk:u=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},or:c,orThunk:u,map:v,ap:v,each:function(){},bind:v,flatten:v,exists:d,forall:m,filter:v,equals:a=function(t){return t.isNone()},equals_:a,toArray:function(){return[]},toString:f.constant("none()")},Object.freeze&&Object.freeze(l),l),b=function(n){var t=function(){return n},e=function(){return o},r=function(t){return t(n)},o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:m,isNone:d,getOr:t,getOrThunk:t,getOrDie:t,or:e,orThunk:e,map:function(t){return b(t(n))},ap:function(t){return t.fold(v,function(t){return b(t(n))})},each:function(t){t(n)},bind:r,flatten:t,exists:r,forall:r,filter:function(t){return t(n)?o:y},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(d,function(t){return e(n,t)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},w={some:b,none:v,from:function(t){return null===t||t===undefined?y:b(t)}},x="undefined"!=typeof window?window:Function("return this;")(),R=function(t,e){for(var n=e!==undefined&&null!==e?e:x,r=0;r<t.length&&n!==undefined&&null!==n;++r)n=n[t[r]];return n},I=function(t,e){var n=t.split(".");return R(n,e)},T={getOrDie:function(t,e){var n=I(t,e);if(n===undefined||null===n)throw t+" not available on this browser";return n}};function k(){return new(T.getOrDie("FileReader"))}var C={atob:function(t){return T.getOrDie("atob")(t)},requestAnimationFrame:function(t){T.getOrDie("requestAnimationFrame")(t)}};function B(u){return new g(function(t,e){var n=URL.createObjectURL(u),r=new Image,o=function(){r.removeEventListener("load",i),r.removeEventListener("error",a)};function i(){o(),t(r)}function a(){o(),e("Unable to load data of type "+u.type+": "+n)}r.addEventListener("load",i),r.addEventListener("error",a),r.src=n,r.complete&&i()})}function U(r){return new g(function(t,n){var e=new XMLHttpRequest;e.open("GET",r,!0),e.responseType="blob",e.onload=function(){200==this.status&&t(this.response)},e.onerror=function(){var t,e=this;n(0===this.status?((t=new Error("No access to download image")).code=18,t.name="SecurityError",t):new Error("Error "+e.status+" downloading image"))},e.send()})}function A(t){var e=t.split(","),n=/data:([^;]+)/.exec(e[0]);if(!n)return w.none();for(var r,o,i,a=n[1],u=e[1],c=C.atob(u),l=c.length,s=Math.ceil(l/1024),f=new Array(s),d=0;d<s;++d){for(var h=1024*d,p=Math.min(h+1024,l),g=new Array(p-h),m=h,v=0;m<p;++v,++m)g[v]=c[m].charCodeAt(0);f[d]=(r=g,new(T.getOrDie("Uint8Array"))(r))}return w.some((o=f,i={type:a},new(T.getOrDie("Blob"))(o,i)))}function j(n){return new g(function(t,e){A(n).fold(function(){e("uri is not base64: "+n)},t)})}function M(n){return new g(function(t){var e=new k;e.onloadend=function(){t(e.result)},e.readAsDataURL(n)})}var E={blobToImage:B,imageToBlob:function(t){var e=t.src;return 0===e.indexOf("data:")?j(e):U(e)},blobToArrayBuffer:function(n){return new g(function(t){var e=new k;e.onloadend=function(){t(e.result)},e.readAsArrayBuffer(n)})},blobToDataUri:M,blobToBase64:function(t){return M(t).then(function(t){return t.split(",")[1]})},dataUriToBlobSync:A,canvasToBlob:function(t,n,r){return n=n||"image/png",HTMLCanvasElement.prototype.toBlob?new g(function(e){t.toBlob(function(t){e(t)},n,r)}):j(t.toDataURL(n,r))},canvasToDataURL:function(t,e,n){return e=e||"image/png",t.then(function(t){return t.toDataURL(e,n)})},blobToCanvas:function(t){return B(t).then(function(t){var e,n;return e=t,URL.revokeObjectURL(e.src),n=h.create(p.getWidth(t),p.getHeight(t)),h.get2dContext(n).drawImage(t,0,0),n})},uriToBlob:function(t){return 0===t.indexOf("blob:")?U(t):0===t.indexOf("data:")?j(t):null}},O=function(t){return E.blobToImage(t)},z=function(t){return E.imageToBlob(t)};function D(t,e,n){var r=e.type;function o(e,n){return t.then(function(t){return E.canvasToDataURL(t,e,n)})}return{getType:f.constant(r),toBlob:function(){return g.resolve(e)},toDataURL:function(){return n},toBase64:function(){return n.split(",")[1]},toAdjustedBlob:function(e,n){return t.then(function(t){return E.canvasToBlob(t,e,n)})},toAdjustedDataURL:o,toAdjustedBase64:function(t,e){return o(t,e).then(function(t){return t.split(",")[1]})},toCanvas:function(){return t.then(h.clone)}}}function S(e){return E.blobToDataUri(e).then(function(t){return D(E.blobToCanvas(e),e,t)})}var _={fromBlob:S,fromCanvas:function(e,t){return E.canvasToBlob(e,t).then(function(t){return D(g.resolve(e),t,e.toDataURL())})},fromImage:function(t){return E.imageToBlob(t).then(function(t){return S(t)})},fromBlobAndUrlSync:function(t,e){return D(E.blobToCanvas(t),t,e)}};function H(t,e,n){return n<(t=parseFloat(t))?t=n:t<e&&(t=e),t}var L=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];function F(t,e){var n,r,o,i,a=[],u=new Array(10);for(n=0;n<5;n++){for(r=0;r<5;r++)a[r]=e[r+5*n];for(r=0;r<5;r++){for(o=i=0;o<5;o++)i+=t[r+5*o]*a[o];u[r+5*n]=i}}return u}function P(t,n){return n=H(n,0,1),t.map(function(t,e){return e%6==0?t=1-(1-t)*n:t*=n,H(t,0,1)})}var W={identity:function(){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]},adjust:P,multiply:F,adjustContrast:function(t,e){var n;return e=H(e,-1,1),F(t,[(n=(e*=100)<0?127+e/100*127:127*(n=0==(n=e%1)?L[e]:L[Math.floor(e)]*(1-n)+L[Math.floor(e)+1]*n)+127)/127,0,0,0,.5*(127-n),0,n/127,0,0,.5*(127-n),0,0,n/127,0,.5*(127-n),0,0,0,1,0,0,0,0,0,1])},adjustBrightness:function(t,e){return F(t,[1,0,0,0,e=H(255*e,-255,255),0,1,0,0,e,0,0,1,0,e,0,0,0,1,0,0,0,0,0,1])},adjustSaturation:function(t,e){var n;return F(t,[.3086*(1-(n=1+(0<(e=H(e,-1,1))?3*e:e)))+n,.6094*(1-n),.082*(1-n),0,0,.3086*(1-n),.6094*(1-n)+n,.082*(1-n),0,0,.3086*(1-n),.6094*(1-n),.082*(1-n)+n,0,0,0,0,0,1,0,0,0,0,0,1])},adjustHue:function(t,e){var n,r,o,i,a;return e=H(e,-180,180)/180*Math.PI,F(t,[(o=.213)+.787*(n=Math.cos(e))+(r=Math.sin(e))*-o,(i=.715)+n*-i+r*-i,(a=.072)+n*-a+.928*r,0,0,o+n*-o+.143*r,i+n*(1-i)+.14*r,a+n*-a+-.283*r,0,0,o+n*-o+-.787*r,i+n*-i+r*i,a+.928*n+r*a,0,0,0,0,0,1,0,0,0,0,0,1])},adjustColors:function(t,e,n,r){return F(t,[e=H(e,0,2),0,0,0,0,0,n=H(n,0,2),0,0,0,0,0,r=H(r,0,2),0,0,0,0,0,1,0,0,0,0,0,1])},adjustSepia:function(t,e){return F(t,P([.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0,0,0,0,0,1],e=H(e,0,1)))},adjustGrayscale:function(t,e){return F(t,P([.33,.34,.33,0,0,.33,.34,.33,0,0,.33,.34,.33,0,0,0,0,0,1,0,0,0,0,0,1],e=H(e,0,1)))}};function q(a,u){return a.toCanvas().then(function(t){return e=t,n=a.getType(),r=u,i=h.get2dContext(e),o=function(t,e){var n,r,o,i,a,u=t.data,c=e[0],l=e[1],s=e[2],f=e[3],d=e[4],h=e[5],p=e[6],g=e[7],m=e[8],v=e[9],y=e[10],b=e[11],w=e[12],x=e[13],R=e[14],I=e[15],T=e[16],k=e[17],C=e[18],B=e[19];for(a=0;a<u.length;a+=4)n=u[a],r=u[a+1],o=u[a+2],i=u[a+3],u[a]=n*c+r*l+o*s+i*f+d,u[a+1]=n*h+r*p+o*g+i*m+v,u[a+2]=n*y+r*b+o*w+i*x+R,u[a+3]=n*I+r*T+o*k+i*C+B;return t}(i.getImageData(0,0,e.width,e.height),r),i.putImageData(o,0,0),_.fromCanvas(e,n);var e,n,r,o,i})}function V(u,c){return u.toCanvas().then(function(t){return e=t,n=u.getType(),r=c,a=h.get2dContext(e),o=a.getImageData(0,0,e.width,e.height),i=a.getImageData(0,0,e.width,e.height),i=function(t,e,n){var r,o,i,a,u,c,l,s,f,d,h,p,g,m,v,y,b;function w(t,e,n){return n<t?t=n:t<e&&(t=e),t}for(i=Math.round(Math.sqrt(n.length)),a=Math.floor(i/2),r=t.data,o=e.data,y=t.width,b=t.height,c=0;c<b;c++)for(u=0;u<y;u++){for(l=s=f=0,h=0;h<i;h++)for(d=0;d<i;d++)p=w(u+d-a,0,y-1),g=w(c+h-a,0,b-1),m=4*(g*y+p),v=n[h*i+d],l+=r[m]*v,s+=r[m+1]*v,f+=r[m+2]*v;o[m=4*(c*y+u)]=w(l,0,255),o[m+1]=w(s,0,255),o[m+2]=w(f,0,255)}return e}(o,i,r),a.putImageData(i,0,0),_.fromCanvas(e,n);var e,n,r,o,i,a})}function N(u){return function(e,n){return e.toCanvas().then(function(t){return function(t,e,n){var r,o,i=h.get2dContext(t),a=new Array(256);for(o=0;o<a.length;o++)a[o]=u(o,n);return r=function(t,e){var n,r=t.data;for(n=0;n<r.length;n+=4)r[n]=e[r[n]],r[n+1]=e[r[n+1]],r[n+2]=e[r[n+2]];return t}(i.getImageData(0,0,t.width,t.height),a),i.putImageData(r,0,0),_.fromCanvas(t,e)}(t,e.getType(),n)})}}function $(n){return function(t,e){return q(t,n(W.identity(),e))}}function X(e){return function(t){return V(t,e)}}var G,J={invert:(G=[-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0],function(t){return q(t,G)}),brightness:$(W.adjustBrightness),hue:$(W.adjustHue),saturate:$(W.adjustSaturation),contrast:$(W.adjustContrast),grayscale:$(W.adjustGrayscale),sepia:$(W.adjustSepia),colorize:function(t,e,n,r){return q(t,W.adjustColors(W.identity(),e,n,r))},sharpen:X([0,-1,0,-1,5,-1,0,-1,0]),emboss:X([-2,-1,0,-1,1,1,0,1,2]),gamma:N(function(t,e){return 255*Math.pow(t/255,1-e)}),exposure:N(function(t,e){return 255*(1-Math.exp(-t/255*e))}),colorFilter:q,convoluteFilter:V},K={scale:function e(t,n,r){var o=p.getWidth(t),i=p.getHeight(t),a=n/o,u=r/i,c=!1;(a<.5||2<a)&&(a=a<.5?.5:2,c=!0),(u<.5||2<u)&&(u=u<.5?.5:2,c=!0);var l,s,f,d=(l=t,s=a,f=u,new g(function(t){var e=p.getWidth(l),n=p.getHeight(l),r=Math.floor(e*s),o=Math.floor(n*f),i=h.create(r,o),a=h.get2dContext(i);a.drawImage(l,0,0,e,n,0,0,r,o),t(i)}));return c?d.then(function(t){return e(t,n,r)}):d}},Z={rotate:function(c,l){return c.toCanvas().then(function(t){return e=t,n=c.getType(),r=l,o=h.create(e.width,e.height),i=h.get2dContext(o),90!=(r=r<(u=a=0)?360+r:r)&&270!=r||h.resize(o,o.height,o.width),90!=r&&180!=r||(a=o.width),270!=r&&180!=r||(u=o.height),i.translate(a,u),i.rotate(r*Math.PI/180),i.drawImage(e,0,0),_.fromCanvas(o,n);var e,n,r,o,i,a,u})},flip:function(a,u){return a.toCanvas().then(function(t){return e=t,n=a.getType(),r=u,o=h.create(e.width,e.height),i=h.get2dContext(o),"v"==r?(i.scale(1,-1),i.drawImage(e,0,-o.height)):(i.scale(-1,1),i.drawImage(e,-o.width,0)),_.fromCanvas(o,n);var e,n,r,o,i})},crop:function(c,l,s,f,d){return c.toCanvas().then(function(t){return e=t,n=c.getType(),r=l,o=s,i=f,a=d,u=h.create(i,a),h.get2dContext(u).drawImage(e,-r,-o),_.fromCanvas(u,n);var e,n,r,o,i,a,u})},resize:function(e,n,r){return e.toCanvas().then(function(t){return K.scale(t,n,r).then(function(t){return _.fromCanvas(t,e.getType())})})}},Q={invert:function(t){return J.invert(t)},sharpen:function(t){return J.sharpen(t)},emboss:function(t){return J.emboss(t)},brightness:function(t,e){return J.brightness(t,e)},hue:function(t,e){return J.hue(t,e)},saturate:function(t,e){return J.saturate(t,e)},contrast:function(t,e){return J.contrast(t,e)},grayscale:function(t,e){return J.grayscale(t,e)},sepia:function(t,e){return J.sepia(t,e)},colorize:function(t,e,n,r){return J.colorize(t,e,n,r)},gamma:function(t,e){return J.gamma(t,e)},exposure:function(t,e){return J.exposure(t,e)},flip:function(t,e){return Z.flip(t,e)},crop:function(t,e,n,r,o){return Z.crop(t,e,n,r,o)},resize:function(t,e,n){return Z.resize(t,e,n)},rotate:function(t,e){return Z.rotate(t,e)}},tt=function(t){return t.toBlob()},et={blobToImageResult:function(t){return _.fromBlob(t)},fromBlobAndUrlSync:function(t,e){return _.fromBlobAndUrlSync(t,e)},imageToImageResult:function(t){return _.fromImage(t)},imageResultToBlob:function(t,e,n){return e===undefined&&n===undefined?tt(t):t.toAdjustedBlob(e,n)},imageResultToOriginalBlob:tt,imageResultToDataURL:function(t){return t.toDataURL()}},nt=function(){return T.getOrDie("URL")},rt={createObjectURL:function(t){return nt().createObjectURL(t)},revokeObjectURL:function(t){nt().revokeObjectURL(t)}},ot=tinymce.util.Tools.resolve("tinymce.util.Delay"),it=tinymce.util.Tools.resolve("tinymce.util.Promise"),at=tinymce.util.Tools.resolve("tinymce.util.URI"),ut=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),ct=tinymce.util.Tools.resolve("tinymce.ui.Factory"),lt=tinymce.util.Tools.resolve("tinymce.geom.Rect"),st=function(n){return new it(function(t){var e=function(){n.removeEventListener("load",e),t(n)};n.complete?t(n):n.addEventListener("load",e)})},ft=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),dt=tinymce.util.Tools.resolve("tinymce.util.Observable"),ht=tinymce.util.Tools.resolve("tinymce.util.VK"),pt=0,gt={create:function(t){return new(ct.get("Control").extend({Defaults:{classes:"imagepanel"},selection:function(t){return arguments.length?(this.state.set("rect",t),this):this.state.get("rect")},imageSize:function(){var t=this.state.get("viewRect");return{w:t.w,h:t.h}},toggleCropRect:function(t){this.state.set("cropEnabled",t)},imageSrc:function(t){var o=this,i=new Image;i.src=t,st(i).then(function(){var t,e,n=o.state.get("viewRect");if((e=o.$el.find("img"))[0])e.replaceWith(i);else{var r=document.createElement("div");r.className="mce-imagepanel-bg",o.getEl().appendChild(r),o.getEl().appendChild(i)}t={x:0,y:0,w:i.naturalWidth,h:i.naturalHeight},o.state.set("viewRect",t),o.state.set("rect",lt.inflate(t,-20,-20)),n&&n.w===t.w&&n.h===t.h||o.zoomFit(),o.repaintImage(),o.fire("load")})},zoom:function(t){return arguments.length?(this.state.set("zoom",t),this):this.state.get("zoom")},postRender:function(){return this.imageSrc(this.settings.imageSrc),this._super()},zoomFit:function(){var t,e,n,r,o,i;t=this.$el.find("img"),e=this.getEl().clientWidth,n=this.getEl().clientHeight,r=t[0].naturalWidth,o=t[0].naturalHeight,1<=(i=Math.min((e-10)/r,(n-10)/o))&&(i=1),this.zoom(i)},repaintImage:function(){var t,e,n,r,o,i,a,u,c,l,s;s=this.getEl(),c=this.zoom(),l=this.state.get("rect"),a=this.$el.find("img"),u=this.$el.find(".mce-imagepanel-bg"),o=s.offsetWidth,i=s.offsetHeight,n=a[0].naturalWidth*c,r=a[0].naturalHeight*c,t=Math.max(0,o/2-n/2),e=Math.max(0,i/2-r/2),a.css({left:t,top:e,width:n,height:r}),u.css({left:t,top:e,width:n,height:r}),this.cropRect&&(this.cropRect.setRect({x:l.x*c+t,y:l.y*c+e,w:l.w*c,h:l.h*c}),this.cropRect.setClampRect({x:t,y:e,w:n,h:r}),this.cropRect.setViewPortRect({x:0,y:0,w:o,h:i}))},bindStates:function(){var r=this;function n(t){r.cropRect=function(l,n,s,r,o){var f,a,t,i,e="mce-",u=e+"crid-"+pt++;function d(t,e){return{x:e.x-t.x,y:e.y-t.y,w:e.w,h:e.h}}function c(t,e,n,r){var o,i,a,u,c;o=e.x,i=e.y,a=e.w,u=e.h,o+=n*t.deltaX,i+=r*t.deltaY,(a+=n*t.deltaW)<20&&(a=20),(u+=r*t.deltaH)<20&&(u=20),c=l=lt.clamp({x:o,y:i,w:a,h:u},s,"move"===t.name),c=d(s,c),f.fire("updateRect",{rect:c}),g(c)}function h(e){function t(t,e){e.h<0&&(e.h=0),e.w<0&&(e.w=0),ft("#"+u+"-"+t,r).css({left:e.x,top:e.y,width:e.w,height:e.h})}Y.each(a,function(t){ft("#"+u+"-"+t.name,r).css({left:e.w*t.xMul+e.x,top:e.h*t.yMul+e.y})}),t("top",{x:n.x,y:n.y,w:n.w,h:e.y-n.y}),t("right",{x:e.x+e.w,y:e.y,w:n.w-e.x-e.w+n.x,h:e.h}),t("bottom",{x:n.x,y:e.y+e.h,w:n.w,h:n.h-e.y-e.h+n.y}),t("left",{x:n.x,y:e.y,w:e.x-n.x,h:e.h}),t("move",e)}function p(t){h(l=t)}function g(t){var e,n;p((e=s,{x:(n=t).x+e.x,y:n.y+e.y,w:n.w,h:n.h}))}return a=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}],i=["top","right","bottom","left"],ft('<div id="'+u+'" class="'+e+'croprect-container" role="grid" aria-dropeffect="execute">').appendTo(r),Y.each(i,function(t){ft("#"+u,r).append('<div id="'+u+"-"+t+'"class="'+e+'croprect-block" style="display: none" data-mce-bogus="all">')}),Y.each(a,function(t){ft("#"+u,r).append('<div id="'+u+"-"+t.name+'" class="'+e+"croprect-handle "+e+"croprect-handle-"+t.name+'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="'+t.label+'" aria-grabbed="false">')}),t=Y.map(a,function(e){var n;return new(ct.get("DragHelper"))(u,{document:r.ownerDocument,handle:u+"-"+e.name,start:function(){n=l},drag:function(t){c(e,n,t.deltaX,t.deltaY)}})}),h(l),ft(r).on("focusin focusout",function(t){ft(t.target).attr("aria-grabbed","focus"===t.type)}),ft(r).on("keydown",function(e){var i;function t(t,e,n,r,o){t.stopPropagation(),t.preventDefault(),c(i,n,r,o)}switch(Y.each(a,function(t){if(e.target.id===u+"-"+t.name)return i=t,!1}),e.keyCode){case ht.LEFT:t(e,0,l,-10,0);break;case ht.RIGHT:t(e,0,l,10,0);break;case ht.UP:t(e,0,l,0,-10);break;case ht.DOWN:t(e,0,l,0,10);break;case ht.ENTER:case ht.SPACEBAR:e.preventDefault(),o()}}),f=Y.extend({toggleVisibility:function(t){var e;e=Y.map(a,function(t){return"#"+u+"-"+t.name}).concat(Y.map(i,function(t){return"#"+u+"-"+t})).join(","),t?ft(e,r).show():ft(e,r).hide()},setClampRect:function(t){s=t,h(l)},setRect:p,getInnerRect:function(){return d(s,l)},setInnerRect:g,setViewPortRect:function(t){n=t,h(l)},destroy:function(){Y.each(t,function(t){t.destroy()}),t=[]}},dt)}(t,r.state.get("viewRect"),r.state.get("viewRect"),r.getEl(),function(){r.fire("crop")}),r.cropRect.on("updateRect",function(t){var e=t.rect,n=r.zoom();e={x:Math.round(e.x/n),y:Math.round(e.y/n),w:Math.round(e.w/n),h:Math.round(e.h/n)},r.state.set("rect",e)}),r.on("remove",r.cropRect.destroy)}r.state.on("change:cropEnabled",function(t){r.cropRect.toggleVisibility(t.value),r.repaintImage()}),r.state.on("change:zoom",function(){r.repaintImage()}),r.state.on("change:rect",function(t){var e=t.value;r.cropRect||n(e),r.cropRect.setRect(e)})}}))(t)}};function mt(t){return{blob:t,url:rt.createObjectURL(t)}}function vt(t){t&&rt.revokeObjectURL(t.url)}function yt(t){Y.each(t,vt)}function bt(i,a,t,e){var u,n,r,c,o,l,s,f,d,h,p,g,m,v,y,b,w,x,R,I,T,k,C,B,U,A,j,M=function(){var n=[],r=-1;function t(){return 0<r}function e(){return-1!==r&&r<n.length-1}return{data:n,add:function(t){var e;return e=n.splice(++r),n.push(t),{state:t,removed:e}},undo:function(){if(t())return n[--r]},redo:function(){if(e())return n[++r]},canUndo:t,canRedo:e}}(),E=function(t){return i.rtl?t.reverse():t};function O(t){var e,n,r,o;e=u.find("#w")[0],n=u.find("#h")[0],r=parseInt(e.value(),10),o=parseInt(n.value(),10),u.find("#constrain")[0].checked()&&B&&U&&r&&o&&("w"===t.control.settings.name?(o=Math.round(r*A),n.value(o)):(r=Math.round(o*j),e.value(r))),B=r,U=o}function z(t){return Math.round(100*t)+"%"}function D(){u.find("#undo").disabled(!M.canUndo()),u.find("#redo").disabled(!M.canRedo()),u.statusbar.find("#save").disabled(!M.canUndo())}function S(){u.find("#undo").disabled(!0),u.find("#redo").disabled(!0)}function _(t){t&&f.imageSrc(t.url)}function H(e){return function(){var t=Y.grep(C,function(t){return t.settings.name!==e});Y.each(t,function(t){t.hide()}),e.show(),e.focus()}}function L(t){_(c=mt(t))}function F(t){_(a=mt(t)),yt(M.add(a).removed),D()}function P(){var e=f.selection();et.blobToImageResult(a.blob).then(function(t){Q.crop(t,e.x,e.y,e.w,e.h).then($).then(function(t){F(t),q()})})}var W=function(e){var n=[].slice.call(arguments,1);return function(){var t=c||a;et.blobToImageResult(t.blob).then(function(t){e.apply(this,[t].concat(n)).then($).then(L)})}};function q(){_(a),vt(c),H(n)(),D()}function V(){c?(F(c.blob),q()):function t(e,n){c?n():setTimeout(function(){0<e--?t(e,n):i.windowManager.alert("Error: failed to apply image operation.")},10)}(100,V)}function N(t){return ct.create("Form",{layout:"flex",direction:"row",labelGap:5,border:"0 0 1 0",align:"center",pack:"center",padding:"0 10 0 10",spacing:5,flex:0,minHeight:60,defaults:{classes:"imagetool",type:"button"},items:t})}var $=function(t){return t.toBlob()};function X(t,e){return N(E([{text:"Back",onclick:q},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:V}])).hide().on("show",function(){S(),et.blobToImageResult(a.blob).then(function(t){return e(t)}).then($).then(function(t){var e=mt(t);_(e),vt(c),c=e})})}function G(t,n,e,r,o){return N(E([{text:"Back",onclick:q},{type:"spacer",flex:1},{type:"slider",flex:1,ondragend:function(t){var e;e=t.value,et.blobToImageResult(a.blob).then(function(t){return n(t,e)}).then($).then(function(t){var e=mt(t);_(e),vt(c),c=e})},minValue:i.rtl?o:r,maxValue:i.rtl?r:o,value:e,previewFilter:z},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:V}])).hide().on("show",function(){this.find("slider").value(e),S()})}o=N(E([{text:"Back",onclick:q},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:P}])).hide().on("show hide",function(t){f.toggleCropRect("show"===t.type)}).on("show",S),l=N(E([{text:"Back",onclick:q},{type:"spacer",flex:1},{type:"textbox",name:"w",label:"Width",size:4,onkeyup:O},{type:"textbox",name:"h",label:"Height",size:4,onkeyup:O},{type:"checkbox",name:"constrain",text:"Constrain proportions",checked:!0,onchange:function(t){!0===t.control.value()&&(A=U/B,j=B/U)}},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:"submit"}])).hide().on("submit",function(t){var e=parseInt(u.find("#w").value(),10),n=parseInt(u.find("#h").value(),10);t.preventDefault(),function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=[].slice.call(arguments,1);return function(){et.blobToImageResult(a.blob).then(function(t){e.apply(this,[t].concat(r)).then($).then(F)})}}(Q.resize,e,n)(),q()}).on("show",S),s=N(E([{text:"Back",onclick:q},{type:"spacer",flex:1},{icon:"fliph",tooltip:"Flip horizontally",onclick:W(Q.flip,"h")},{icon:"flipv",tooltip:"Flip vertically",onclick:W(Q.flip,"v")},{icon:"rotateleft",tooltip:"Rotate counterclockwise",onclick:W(Q.rotate,-90)},{icon:"rotateright",tooltip:"Rotate clockwise",onclick:W(Q.rotate,90)},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:V}])).hide().on("show",S),p=X(0,Q.invert),R=X(0,Q.sharpen),I=X(0,Q.emboss),g=G(0,Q.brightness,0,-1,1),m=G(0,Q.hue,180,0,360),v=G(0,Q.saturate,0,-1,1),y=G(0,Q.contrast,0,-1,1),b=G(0,Q.grayscale,0,0,1),w=G(0,Q.sepia,0,0,1),x=function(t,o){function e(){var e,n,r;e=u.find("#r")[0].value(),n=u.find("#g")[0].value(),r=u.find("#b")[0].value(),et.blobToImageResult(a.blob).then(function(t){return o(t,e,n,r)}).then($).then(function(t){var e=mt(t);_(e),vt(c),c=e})}var n=i.rtl?2:0,r=i.rtl?0:2;return N(E([{text:"Back",onclick:q},{type:"spacer",flex:1},{type:"slider",label:"R",name:"r",minValue:n,value:1,maxValue:r,ondragend:e,previewFilter:z},{type:"slider",label:"G",name:"g",minValue:n,value:1,maxValue:r,ondragend:e,previewFilter:z},{type:"slider",label:"B",name:"b",minValue:n,value:1,maxValue:r,ondragend:e,previewFilter:z},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:V}])).hide().on("show",function(){u.find("#r,#g,#b").value(1),S()})}(0,Q.colorize),T=G(0,Q.gamma,0,-1,1),k=G(0,Q.exposure,1,0,2),r=N(E([{text:"Back",onclick:q},{type:"spacer",flex:1},{text:"hue",icon:"hue",onclick:H(m)},{text:"saturate",icon:"saturate",onclick:H(v)},{text:"sepia",icon:"sepia",onclick:H(w)},{text:"emboss",icon:"emboss",onclick:H(I)},{text:"exposure",icon:"exposure",onclick:H(k)},{type:"spacer",flex:1}])).hide(),n=N(E([{tooltip:"Crop",icon:"crop",onclick:H(o)},{tooltip:"Resize",icon:"resize2",onclick:H(l)},{tooltip:"Orientation",icon:"orientation",onclick:H(s)},{tooltip:"Brightness",icon:"sun",onclick:H(g)},{tooltip:"Sharpen",icon:"sharpen",onclick:H(R)},{tooltip:"Contrast",icon:"contrast",onclick:H(y)},{tooltip:"Color levels",icon:"drop",onclick:H(x)},{tooltip:"Gamma",icon:"gamma",onclick:H(T)},{tooltip:"Invert",icon:"invert",onclick:H(p)}])),f=gt.create({flex:1,imageSrc:a.url}),d=ct.create("Container",{layout:"flex",direction:"column",pack:"start",border:"0 1 0 0",padding:5,spacing:5,items:[{type:"button",icon:"undo",tooltip:"Undo",name:"undo",onclick:function(){_(a=M.undo()),D()}},{type:"button",icon:"redo",tooltip:"Redo",name:"redo",onclick:function(){_(a=M.redo()),D()}},{type:"button",icon:"zoomin",tooltip:"Zoom in",onclick:function(){var t=f.zoom();t<2&&(t+=.1),f.zoom(t)}},{type:"button",icon:"zoomout",tooltip:"Zoom out",onclick:function(){var t=f.zoom();.1<t&&(t-=.1),f.zoom(t)}}]}),h=ct.create("Container",{type:"container",layout:"flex",direction:"row",align:"stretch",flex:1,items:E([d,f])}),C=[n,o,l,s,r,p,g,m,v,y,b,w,x,R,I,T,k],(u=i.windowManager.open({layout:"flex",direction:"column",align:"stretch",minWidth:Math.min(ut.DOM.getViewPort().w,800),minHeight:Math.min(ut.DOM.getViewPort().h,650),title:"Edit image",items:C.concat([h]),buttons:E([{text:"Save",name:"save",subtype:"primary",onclick:function(){t(a.blob),u.close()}},{text:"Cancel",onclick:"close"}])})).on("close",function(){e(),yt(M.data),c=M=null}),M.add(a),D(),f.on("load",function(){B=f.imageSize().w,U=f.imageSize().h,A=U/B,j=B/U,u.find("#w").value(B),u.find("#h").value(U)}),f.on("crop",P)}var wt={edit:function(r,t){return new it(function(e,n){return t.toBlob().then(function(t){bt(r,mt(t),e,n)})})}},xt={getImageSize:function(t){var e,n;function r(t){return/^[0-9\.]+px$/.test(t)}return e=t.style.width,n=t.style.height,e||n?r(e)&&r(n)?{w:parseInt(e,10),h:parseInt(n,10)}:null:(e=t.width,n=t.height,e&&n?{w:parseInt(e,10),h:parseInt(n,10)}:null)},setImageSize:function(t,e){var n,r;e&&(n=t.style.width,r=t.style.height,(n||r)&&(t.style.width=e.w+"px",t.style.height=e.h+"px",t.removeAttribute("data-mce-style")),n=t.width,r=t.height,(n||r)&&(t.setAttribute("width",e.w),t.setAttribute("height",e.h)))},getNaturalImageSize:function(t){return{w:t.naturalWidth,h:t.naturalHeight}}},Rt=function(e){return function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&Array.prototype.isPrototypeOf(t)?"array":"object"===e&&String.prototype.isPrototypeOf(t)?"string":e}(t)===e}},It={isString:Rt("string"),isObject:Rt("object"),isArray:Rt("array"),isNull:Rt("null"),isBoolean:Rt("boolean"),isUndefined:Rt("undefined"),isFunction:Rt("function"),isNumber:Rt("number")},Tt=(Array.prototype.indexOf,undefined,Array.prototype.push,Array.prototype.slice,It.isFunction(Array.from)&&Array.from,function(t,e){for(var n=0,r=t.length;n<r;n++){var o=t[n];if(e(o,n,t))return w.some(o)}return w.none()});function kt(){return new(T.getOrDie("XMLHttpRequest"))}var Ct=function(t){return null!==t&&t!==undefined},Bt={traverse:function(t,e){var n;return n=e.reduce(function(t,e){return Ct(t)?t[e]:undefined},t),Ct(n)?n:null},readBlob:function(e){return new it(function(n){var t=new k;t.onload=function(t){var e=t.target;n(e.result)},t.readAsText(e)})},requestUrlAsBlob:function(e,r,o){return new it(function(t){var n;(n=new kt).onreadystatechange=function(){4===n.readyState&&t({status:n.status,blob:this.response})},n.open("GET",e,!0),n.withCredentials=o,Y.each(r,function(t,e){n.setRequestHeader(e,t)}),n.responseType="blob",n.send()})},parseJson:function(t){var e;try{e=JSON.parse(t)}catch(n){}return e}},Ut=[{code:404,message:"Could not find Image Proxy"},{code:403,message:"Rejected request"},{code:0,message:"Incorrect Image Proxy URL"}],At=[{type:"key_missing",message:"The request did not include an api key."},{type:"key_not_found",message:"The provided api key could not be found."},{type:"domain_not_trusted",message:"The api key is not valid for the request origins."}],jt=function(e){return"ImageProxy HTTP error: "+Tt(Ut,function(t){return e===t.code}).fold(f.constant("Unknown ImageProxy error"),function(t){return t.message})},Mt=function(t){var e=jt(t);return it.reject(e)},Et=function(e){return Tt(At,function(t){return t.type===e}).fold(f.constant("Unknown service error"),function(t){return t.message})},Ot=function(t,e){return Bt.readBlob(e).then(function(t){var e,n,r,o=(e=t,n=Bt.parseJson(e),"ImageProxy Service error: "+((r=Bt.traverse(n,["error","type"]))?Et(r):"Invalid JSON in service error message"));return it.reject(o)})},zt={handleServiceErrorResponse:function(t,e){return 400===(n=t)||403===n||500===n?Ot(0,e):Mt(t);var n},handleHttpError:Mt,getHttpErrorMsg:jt,getServiceErrorMsg:Et},Dt=function(t,e){var n,r,o,i={"Content-Type":"application/json;charset=UTF-8","tiny-api-key":e};return Bt.requestUrlAsBlob((n=t,r=e,o=-1===n.indexOf("?")?"?":"&",/[?&]apiKey=/.test(n)||!r?n:n+o+"apiKey="+encodeURIComponent(r)),i,!1).then(function(t){return t.status<200||300<=t.status?zt.handleServiceErrorResponse(t.status,t.blob):it.resolve(t.blob)})},St=function(t,e,n){return e?Dt(t,e):(r=t,o=n,Bt.requestUrlAsBlob(r,{},o).then(function(t){return t.status<200||300<=t.status?zt.handleHttpError(t.status):it.resolve(t.blob)}));var r,o},_t=0,Ht=function(t,e){t.notificationManager.open({text:e,type:"error"})},Lt=function(t){return t.selection.getNode()},Ft=function(t,e){var n=e.src;return 0===n.indexOf("data:")||0===n.indexOf("blob:")||new at(n).host===t.documentBaseURI.host},Pt=function(t,e){return-1!==Y.inArray(t.getParam("imagetools_cors_hosts",[],"string[]"),new at(e.src).host)},Wt=function(t,e){var n,r,o,i,a=e.src;return Pt(t,e)?St(e.src,null,(r=t,o=e,-1!==Y.inArray(r.getParam("imagetools_credentials_hosts",[],"string[]"),new at(o.src).host))):Ft(t,e)?z(e):(a=t.getParam("imagetools_proxy"),a+=(-1===a.indexOf("?")?"?":"&")+"url="+encodeURIComponent(e.src),n=(i=t).getParam("api_key",i.getParam("imagetools_api_key","","string"),"string"),St(a,n,!1))},qt=function(t){var e;return(e=t.editorUpload.blobCache.getByUri(Lt(t).src))?it.resolve(e.blob()):Wt(t,Lt(t))},Vt=function(t,e){var n=ot.setEditorTimeout(t,function(){t.editorUpload.uploadImagesAuto()},t.getParam("images_upload_timeout",3e4,"number"));e.set(n)},Nt=function(t){clearTimeout(t.get())},$t=function(c,l,s,f,d){return l.toBlob().then(function(t){var e,n,r,o,i,a,u;return r=c.editorUpload.blobCache,e=(i=Lt(c)).src,c.getParam("images_reuse_filename",!1,"boolean")&&((o=r.getByUri(e))?(e=o.uri(),n=o.name()):(a=c,n=(u=e.match(/\/([^\/\?]+)?\.(?:jpeg|jpg|png|gif)(?:\?|$)/i))?a.dom.encode(u[1]):null)),o=r.create({id:"imagetools"+_t++,blob:t,base64:l.toBase64(),uri:e,name:n}),r.add(o),c.undoManager.transact(function(){c.$(i).on("load",function t(){c.$(i).off("load",t),c.nodeChanged(),s?c.editorUpload.uploadImagesAuto():(Nt(f),Vt(c,f))}),d&&c.$(i).attr({width:d.w,height:d.h}),c.$(i).attr({src:o.blobUri()}).removeAttr("data-mce-src")}),o})},Xt=function(e,n,t,r){return function(){return e._scanForImages().then(f.curry(qt,e)).then(et.blobToImageResult).then(t).then(function(t){return $t(e,t,!1,n,r)},function(t){Ht(e,t)})}},Gt={rotate:function(n,r,o){return function(){var t=xt.getImageSize(Lt(n)),e=t?{w:t.h,h:t.w}:null;return Xt(n,r,function(t){return Q.rotate(t,o)},e)()}},flip:function(t,e,n){return function(){return Xt(t,e,function(t){return Q.flip(t,n)})()}},editImageDialog:function(e,r){return function(){var o=Lt(e),i=xt.getNaturalImageSize(o),n=function(r){return new it(function(n){O(r).then(function(t){var e=xt.getNaturalImageSize(t);i.w===e.w&&i.h===e.h||xt.getImageSize(o)&&xt.setImageSize(o,e),rt.revokeObjectURL(t.src),n(r)})})};qt(e).then(et.blobToImageResult).then(f.curry(function(e,t){return wt.edit(e,t).then(n).then(et.blobToImageResult).then(function(t){return $t(e,t,!0,r)},function(){})},e),function(t){Ht(e,t)})}},isEditableImage:function(t,e){return t.dom.is(e,"img:not([data-mce-object],[data-mce-placeholder])")&&(Ft(t,e)||Pt(t,e)||t.settings.imagetools_proxy)},cancelTimedUpload:Nt},Yt=function(n,t){Y.each({mceImageRotateLeft:Gt.rotate(n,t,-90),mceImageRotateRight:Gt.rotate(n,t,90),mceImageFlipVertical:Gt.flip(n,t,"v"),mceImageFlipHorizontal:Gt.flip(n,t,"h"),mceEditImage:Gt.editImageDialog(n,t)},function(t,e){n.addCommand(e,t)})},Jt=function(n,r,o){n.on("NodeChange",function(t){var e=o.get();e&&e.src!==t.element.src&&(Gt.cancelTimedUpload(r),n.editorUpload.uploadImagesAuto(),o.set(null)),Gt.isEditableImage(n,t.element)&&o.set(t.element)})},Kt=function(t){t.addButton("rotateleft",{title:"Rotate counterclockwise",cmd:"mceImageRotateLeft"}),t.addButton("rotateright",{title:"Rotate clockwise",cmd:"mceImageRotateRight"}),t.addButton("flipv",{title:"Flip vertically",cmd:"mceImageFlipVertical"}),t.addButton("fliph",{title:"Flip horizontally",cmd:"mceImageFlipHorizontal"}),t.addButton("editimage",{title:"Edit image",cmd:"mceEditImage"}),t.addButton("imageoptions",{title:"Image options",icon:"options",cmd:"mceImage"})},Zt=function(t){t.addContextToolbar(f.curry(Gt.isEditableImage,t),t.getParam("imagetools_toolbar","rotateleft rotateright | flipv fliph | crop editimage imageoptions"))};t.add("imagetools",function(t){var e=r(0),n=r(null);Yt(t,e),Kt(t),Zt(t),Jt(t,e,n)})}();