mirror of
https://github.com/documize/community.git
synced 2025-07-22 06:39:43 +02:00
1 line
No EOL
35 KiB
JavaScript
1 line
No EOL
35 KiB
JavaScript
!function(){"use strict";function t(t,e){return n(document.createElement("canvas"),t,e)}function e(t){return t.getContext("2d")}function n(t,e,n){return t.width=e,t.height=n,t}function o(t){return new U(function(e,n){function o(){u(),e(a)}function r(){u(),n("Unable to load data of type "+t.type+": "+i)}var i=URL.createObjectURL(t),a=new Image,u=function(){a.removeEventListener("load",o),a.removeEventListener("error",r)};a.addEventListener("load",o),a.addEventListener("error",r),a.src=i,a.complete&&o()})}function r(t){return new U(function(e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(){200==this.status&&e(this.response)},n.send()})}function i(t){var e=t.split(","),n=/data:([^;]+)/.exec(e[0]);if(!n)return H.none();for(var o=n[1],r=e[1],i=V.atob(r),a=i.length,u=Math.ceil(a/1024),c=new Array(u),l=0;l<u;++l){for(var s=1024*l,f=Math.min(s+1024,a),d=new Array(f-s),h=s,p=0;h<f;++p,++h)d[p]=i[h].charCodeAt(0);c[l]=q(d)}return H.some(P(c,{type:o}))}function a(t){return new U(function(e,n){i(t).fold(function(){n("uri is not base64: "+t)},e)})}function u(t){return new U(function(e){var n=new W;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}function c(t,e,n){function o(e,n){return t.then(function(t){return N.canvasToDataURL(t,e,n)})}var r=e.type;return{getType:j.constant(r),toBlob:function(){return U.resolve(e)},toDataURL:function(){return n},toBase64:function(){return n.split(",")[1]},toAdjustedBlob:function(e,n){return t.then(function(t){return N.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(C.clone)}}}function l(t){return N.blobToDataUri(t).then(function(e){return c(N.blobToCanvas(t),t,e)})}function s(t,e,n){return(t=parseFloat(t))>n?t=n:t<e&&(t=e),t}function f(t,e){var n,o,r,i,a=[],u=new Array(10);for(n=0;n<5;n++){for(o=0;o<5;o++)a[o]=e[o+5*n];for(o=0;o<5;o++){for(i=0,r=0;r<5;r++)i+=t[o+5*r]*a[r];u[o+5*n]=i}}return u}function d(t,e){return e=s(e,0,1),t.map(function(t,n){return n%6==0?t=1-(1-t)*e:t*=e,s(t,0,1)})}function h(t,e){return t.toCanvas().then(function(n){return function(t,e,n){var o,r=C.get2dContext(t);return o=function(t,e){var n,o,r,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],m=e[7],g=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],o=u[a+1],r=u[a+2],i=u[a+3],u[a]=n*c+o*l+r*s+i*f+d,u[a+1]=n*h+o*p+r*m+i*g+v,u[a+2]=n*y+o*b+r*w+i*x+R,u[a+3]=n*I+o*T+r*k+i*C+B;return t}(r.getImageData(0,0,t.width,t.height),n),r.putImageData(o,0,0),G.fromCanvas(t,e)}(n,t.getType(),e)})}function p(t,e){return t.toCanvas().then(function(n){return function(t,e,n){var o,r,i=C.get2dContext(t);return o=i.getImageData(0,0,t.width,t.height),r=i.getImageData(0,0,t.width,t.height),r=function(t,e,n){function o(t,e,n){return t>n?t=n:t<e&&(t=e),t}var r,i,a,u,c,l,s,f,d,h,p,m,g,v,y,b,w;for(a=Math.round(Math.sqrt(n.length)),u=Math.floor(a/2),r=t.data,i=e.data,b=t.width,w=t.height,l=0;l<w;l++)for(c=0;c<b;c++){for(s=f=d=0,p=0;p<a;p++)for(h=0;h<a;h++)m=o(c+h-u,0,b-1),g=o(l+p-u,0,w-1),v=4*(g*b+m),y=n[p*a+h],s+=r[v]*y,f+=r[v+1]*y,d+=r[v+2]*y;i[v=4*(l*b+c)]=o(s,0,255),i[v+1]=o(f,0,255),i[v+2]=o(d,0,255)}return e}(o,r,n),i.putImageData(r,0,0),G.fromCanvas(t,e)}(n,t.getType(),e)})}function m(t){return function(e,n){return e.toCanvas().then(function(o){return function(e,n,o){var r,i,a=C.get2dContext(e),u=new Array(256);for(i=0;i<u.length;i++)u[i]=t(i,o);return r=function(t,e){var n,o=t.data;for(n=0;n<o.length;n+=4)o[n]=e[o[n]],o[n+1]=e[o[n+1]],o[n+2]=e[o[n+2]];return t}(a.getImageData(0,0,e.width,e.height),u),a.putImageData(r,0,0),G.fromCanvas(e,n)}(o,e.getType(),n)})}}function g(t){return function(e,n){return h(e,t(J.identity(),n))}}function v(t){return function(e){return p(e,t)}}function y(t,e,n){var o=B.getWidth(t),r=B.getHeight(t),i=e/o,a=n/r,u=!1;(i<.5||i>2)&&(i=i<.5?.5:2,u=!0),(a<.5||a>2)&&(a=a<.5?.5:2,u=!0);var c=function(t,e,n){return new U(function(o){var r=B.getWidth(t),i=B.getHeight(t),a=Math.floor(r*e),u=Math.floor(i*n),c=C.create(a,u),l=C.get2dContext(c);l.drawImage(t,0,0,r,i,0,0,a,u),o(c)})}(t,i,a);return u?c.then(function(t){return y(t,e,n)}):c}function b(t){return{blob:t,url:rt.createObjectURL(t)}}function w(t){t&&rt.revokeObjectURL(t.url)}function x(t){k.each(t,w)}function R(t,e,n,o){function r(t){var e,n,o,r;e=R.find("#w")[0],n=R.find("#h")[0],o=parseInt(e.value(),10),r=parseInt(n.value(),10),R.find("#constrain")[0].checked()&&X&&$&&o&&r&&("w"===t.control.settings.name?(r=Math.round(o*G),n.value(r)):(o=Math.round(r*Y),e.value(o))),X=o,$=r}function i(t){return Math.round(100*t)+"%"}function a(){R.find("#undo").disabled(!J.canUndo()),R.find("#redo").disabled(!J.canRedo()),R.statusbar.find("#save").disabled(!J.canUndo())}function u(){R.find("#undo").disabled(!0),R.find("#redo").disabled(!0)}function c(t){t&&j.imageSrc(t.url)}function l(t){return function(){var e=k.grep(N,function(e){return e.settings.name!==t});k.each(e,function(t){t.hide()}),t.show(),t.focus()}}function s(t){c(C=b(t))}function f(t){c(e=b(t)),x(J.add(e).removed),a()}function d(){var t=j.selection();nt.blobToImageResult(e.blob).then(function(e){tt.crop(e,t.x,t.y,t.w,t.h).then(Z).then(function(t){f(t),h()})})}function h(){c(e),w(C),l(I)(),a()}function p(e,n){C?n():setTimeout(function(){e-- >0?p(e,n):t.windowManager.alert("Error: failed to apply image operation.")},10)}function m(){C?(f(C.blob),h()):p(100,m)}function g(t){return kt.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})}function v(t,n){return g([{text:"Back",onclick:h},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:m}]).hide().on("show",function(){u(),nt.blobToImageResult(e.blob).then(function(t){return n(t)}).then(Z).then(function(t){var e=b(t);c(e),w(C),C=e})})}function y(t,n,o,r,a){return g([{text:"Back",onclick:h},{type:"spacer",flex:1},{type:"slider",flex:1,ondragend:function(t){!function(t){nt.blobToImageResult(e.blob).then(function(e){return n(e,t)}).then(Z).then(function(t){var e=b(t);c(e),w(C),C=e})}(t.value)},minValue:r,maxValue:a,value:o,previewFilter:i},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:m}]).hide().on("show",function(){this.find("slider").value(o),u()})}var R,I,T,C,B,U,M,j,A,z,E,S,L,H,O,_,D,F,P,W,q,V,N,X,$,G,Y,J=Ct(),K=function(t){var n=[].slice.call(arguments,1);return function(){var o=C||e;nt.blobToImageResult(o.blob).then(function(e){t.apply(this,[e].concat(n)).then(Z).then(s)})}},Z=function(t){return t.toBlob()};B=g([{text:"Back",onclick:h},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:d}]).hide().on("show hide",function(t){j.toggleCropRect("show"===t.type)}).on("show",u),U=g([{text:"Back",onclick:h},{type:"spacer",flex:1},{type:"textbox",name:"w",label:"Width",size:4,onkeyup:r},{type:"textbox",name:"h",label:"Height",size:4,onkeyup:r},{type:"checkbox",name:"constrain",text:"Constrain proportions",checked:!0,onchange:function(t){!0===t.control.value()&&(G=$/X,Y=X/$)}},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:"submit"}]).hide().on("submit",function(t){var n=parseInt(R.find("#w").value(),10),o=parseInt(R.find("#h").value(),10);t.preventDefault(),function(t){for(var n=[],o=1;o<arguments.length;o++)n[o-1]=arguments[o];var r=[].slice.call(arguments,1);return function(){nt.blobToImageResult(e.blob).then(function(e){t.apply(this,[e].concat(r)).then(Z).then(f)})}}(tt.resize,n,o)(),h()}).on("show",u),M=g([{text:"Back",onclick:h},{type:"spacer",flex:1},{icon:"fliph",tooltip:"Flip horizontally",onclick:K(tt.flip,"h")},{icon:"flipv",tooltip:"Flip vertically",onclick:K(tt.flip,"v")},{icon:"rotateleft",tooltip:"Rotate counterclockwise",onclick:K(tt.rotate,-90)},{icon:"rotateright",tooltip:"Rotate clockwise",onclick:K(tt.rotate,90)},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:m}]).hide().on("show",u),E=v(0,tt.invert),P=v(0,tt.sharpen),W=v(0,tt.emboss),S=y(0,tt.brightness,0,-1,1),L=y(0,tt.hue,180,0,360),H=y(0,tt.saturate,0,-1,1),O=y(0,tt.contrast,0,-1,1),_=y(0,tt.grayscale,0,0,1),D=y(0,tt.sepia,0,0,1),F=function(t,n){function o(){var t,o,r;t=R.find("#r")[0].value(),o=R.find("#g")[0].value(),r=R.find("#b")[0].value(),nt.blobToImageResult(e.blob).then(function(e){return n(e,t,o,r)}).then(Z).then(function(t){var e=b(t);c(e),w(C),C=e})}return g([{text:"Back",onclick:h},{type:"spacer",flex:1},{type:"slider",label:"R",name:"r",minValue:0,value:1,maxValue:2,ondragend:o,previewFilter:i},{type:"slider",label:"G",name:"g",minValue:0,value:1,maxValue:2,ondragend:o,previewFilter:i},{type:"slider",label:"B",name:"b",minValue:0,value:1,maxValue:2,ondragend:o,previewFilter:i},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:m}]).hide().on("show",function(){R.find("#r,#g,#b").value(1),u()})}(0,tt.colorize),q=y(0,tt.gamma,0,-1,1),V=y(0,tt.exposure,1,0,2),T=g([{text:"Back",onclick:h},{type:"spacer",flex:1},{text:"hue",icon:"hue",onclick:l(L)},{text:"saturate",icon:"saturate",onclick:l(H)},{text:"sepia",icon:"sepia",onclick:l(D)},{text:"emboss",icon:"emboss",onclick:l(W)},{text:"exposure",icon:"exposure",onclick:l(V)},{type:"spacer",flex:1}]).hide(),I=g([{tooltip:"Crop",icon:"crop",onclick:l(B)},{tooltip:"Resize",icon:"resize2",onclick:l(U)},{tooltip:"Orientation",icon:"orientation",onclick:l(M)},{tooltip:"Brightness",icon:"sun",onclick:l(S)},{tooltip:"Sharpen",icon:"sharpen",onclick:l(P)},{tooltip:"Contrast",icon:"contrast",onclick:l(O)},{tooltip:"Color levels",icon:"drop",onclick:l(F)},{tooltip:"Gamma",icon:"gamma",onclick:l(q)},{tooltip:"Invert",icon:"invert",onclick:l(E)}]),j=St.create({flex:1,imageSrc:e.url}),A=kt.create("Container",{layout:"flex",direction:"column",border:"0 1 0 0",padding:5,spacing:5,items:[{type:"button",icon:"undo",tooltip:"Undo",name:"undo",onclick:function(){c(e=J.undo()),a()}},{type:"button",icon:"redo",tooltip:"Redo",name:"redo",onclick:function(){c(e=J.redo()),a()}},{type:"button",icon:"zoomin",tooltip:"Zoom in",onclick:function(){var t=j.zoom();t<2&&(t+=.1),j.zoom(t)}},{type:"button",icon:"zoomout",tooltip:"Zoom out",onclick:function(){var t=j.zoom();t>.1&&(t-=.1),j.zoom(t)}}]}),z=kt.create("Container",{type:"container",layout:"flex",direction:"row",align:"stretch",flex:1,items:[A,j]}),N=[I,B,U,M,T,E,S,L,H,O,_,D,F,P,W,q,V],(R=t.windowManager.open({layout:"flex",direction:"column",align:"stretch",minWidth:Math.min(Tt.DOM.getViewPort().w,800),minHeight:Math.min(Tt.DOM.getViewPort().h,650),title:"Edit image",items:N.concat([z]),buttons:[{text:"Save",name:"save",subtype:"primary",onclick:function(){n(e.blob),R.close()}},{text:"Cancel",onclick:"close"}]})).on("close",function(){o(),x(J.data),J=null,C=null}),J.add(e),a(),j.on("load",function(){X=j.imageSize().w,$=j.imageSize().h,G=$/X,Y=X/$,R.find("#w").value(X),R.find("#h").value($)}),j.on("crop",d)}var I=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return I(n())}}},T=tinymce.util.Tools.resolve("tinymce.PluginManager"),k=tinymce.util.Tools.resolve("tinymce.util.Tools"),C={create:t,clone:function(n){var o;return o=t(n.width,n.height),e(o).drawImage(n,0,0),o},resize:n,get2dContext:e,get3dContext:function(t){var e=null;try{e=t.getContext("webgl")||t.getContext("experimental-webgl")}catch(n){}return e||(e=null),e}},B={getWidth:function(t){return t.naturalWidth||t.width},getHeight:function(t){return t.naturalHeight||t.height}},U=window.Promise?window.Promise:function(){function t(t,e){return function(){t.apply(e,arguments)}}function e(t){var e=this;null!==this._state?u(function(){var n=e._state?t.onFulfilled:t.onRejected;if(null!==n){var o;try{o=n(e._value)}catch(r){return void t.reject(r)}t.resolve(o)}else(e._state?t.resolve:t.reject)(e._value)}):this._deferreds.push(t)}function n(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var a=e.then;if("function"==typeof a)return void i(t(a,e),t(n,this),t(o,this))}this._state=!0,this._value=e,r.call(this)}catch(u){o.call(this,u)}}function o(t){this._state=!1,this._value=t,r.call(this)}function r(){for(var t=0,n=this._deferreds.length;t<n;t++)e.call(this,this._deferreds[t]);this._deferreds=null}function i(t,e,n){var o=!1;try{t(function(t){o||(o=!0,e(t))},function(t){o||(o=!0,n(t))})}catch(r){if(o)return;o=!0,n(r)}}var a=function(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],i(e,t(n,this),t(o,this))},u=a.immediateFn||"function"==typeof setImmediate&&setImmediate||function(t){setTimeout(t,1)},c=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};return a.prototype["catch"]=function(t){return this.then(null,t)},a.prototype.then=function(t,n){var o=this;return new a(function(r,i){e.call(o,new function(t,e,n,o){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.resolve=n,this.reject=o}(t,n,r,i))})},a.all=function(){var t=Array.prototype.slice.call(1===arguments.length&&c(arguments[0])?arguments[0]:arguments);return new a(function(e,n){function o(i,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var u=a.then;if("function"==typeof u)return void u.call(a,function(t){o(i,t)},n)}t[i]=a,0==--r&&e(t)}catch(c){n(c)}}if(0===t.length)return e([]);for(var r=t.length,i=0;i<t.length;i++)o(i,t[i])})},a.resolve=function(t){return t&&"object"==typeof t&&t.constructor===a?t:new a(function(e){e(t)})},a.reject=function(t){return new a(function(e,n){n(t)})},a.race=function(t){return new a(function(e,n){for(var o=0,r=t.length;o<r;o++)t[o].then(e,n)})},a}(),M=function(t){return function(){return t}},j={noop:function(){},noarg:function(t){return function(){return t()}},compose:function(t,e){return function(){return t(e.apply(null,arguments))}},constant:M,identity:function(t){return t},tripleEquals:function(t,e){return t===e},curry:function(t){for(var e=new Array(arguments.length-1),n=1;n<arguments.length;n++)e[n-1]=arguments[n];return function(){for(var n=new Array(arguments.length),o=0;o<n.length;o++)n[o]=arguments[o];var r=e.concat(n);return t.apply(null,r)}},not:function(t){return function(){return!t.apply(null,arguments)}},die:function(t){return function(){throw new Error(t)}},apply:function(t){return t()},call:function(t){t()},never:M(!1),always:M(!0)},A=j.never,z=j.always,E=function(){return S},S=function(){var t=function(t){return t.isNone()},e=function(t){return t()},n=function(t){return t},o={fold:function(t,e){return t()},is:A,isSome:A,isNone:z,getOr:n,getOrThunk:e,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},or:n,orThunk:e,map:E,ap:E,each:function(){},bind:E,flatten:E,exists:A,forall:z,filter:E,equals:t,equals_:t,toArray:function(){return[]},toString:j.constant("none()")};return Object.freeze&&Object.freeze(o),o}(),L=function(t){var e=function(){return t},n=function(){return r},o=function(e){return e(t)},r={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:z,isNone:A,getOr:e,getOrThunk:e,getOrDie:e,or:n,orThunk:n,map:function(e){return L(e(t))},ap:function(e){return e.fold(E,function(e){return L(e(t))})},each:function(e){e(t)},bind:o,flatten:e,exists:o,forall:o,filter:function(e){return e(t)?r:S},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(A,function(e){return n(t,e)})},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return r},H={some:L,none:E,from:function(t){return null===t||t===undefined?S:L(t)}},O="undefined"!=typeof window?window:Function("return this;")(),_=function(t,e){for(var n=e!==undefined&&null!==e?e:O,o=0;o<t.length&&n!==undefined&&null!==n;++o)n=n[t[o]];return n},D=function(t,e){var n=t.split(".");return _(n,e)},F=function(t,e){var n=function(t,e){return D(t,e)}(t,e);if(n===undefined||null===n)throw t+" not available on this browser";return n},P=function(t,e){return new(F("Blob"))(t,e)},W=function(){return new(F("FileReader"))},q=function(t){return new(F("Uint8Array"))(t)},V={atob:function(t){return F("atob")(t)},requestAnimationFrame:function(t){F("requestAnimationFrame")(t)}},N={blobToImage:o,imageToBlob:function(t){return function(t){return new U(function(e){function n(){t.removeEventListener("load",n),e(t)}t.complete?e(t):t.addEventListener("load",n)})}(t).then(function(t){var e=t.src;return 0===e.indexOf("blob:")?r(e):0===e.indexOf("data:")?a(e):r(e)})},blobToDataUri:u,blobToBase64:function(t){return u(t).then(function(t){return t.split(",")[1]})},dataUriToBlobSync:i,canvasToBlob:function(t,e,n){return e=e||"image/png",HTMLCanvasElement.prototype.toBlob?new U(function(o){t.toBlob(function(t){o(t)},e,n)}):a(t.toDataURL(e,n))},canvasToDataURL:function(t,e,n){return e=e||"image/png",t.then(function(t){return t.toDataURL(e,n)})},blobToCanvas:function(t){return o(t).then(function(t){!function(t){URL.revokeObjectURL(t.src)}(t);var e;return e=C.create(B.getWidth(t),B.getHeight(t)),C.get2dContext(e).drawImage(t,0,0),e})},uriToBlob:function(t){return 0===t.indexOf("blob:")?r(t):0===t.indexOf("data:")?a(t):null}},X=function(t){return N.blobToImage(t)},$=function(t){return N.imageToBlob(t)},G={fromBlob:l,fromCanvas:function(t,e){return N.canvasToBlob(t,e).then(function(e){return c(U.resolve(t),e,t.toDataURL())})},fromImage:function(t){return N.imageToBlob(t).then(function(t){return l(t)})},fromBlobAndUrlSync:function(t,e){return c(N.blobToCanvas(t),t,e)}},Y=[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],J={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:d,multiply:f,adjustContrast:function(t,e){var n;return e=s(e,-1,1),e*=100,n=e<0?127+e/100*127:127*(n=0==(n=e%1)?Y[e]:Y[Math.floor(e)]*(1-n)+Y[Math.floor(e)+1]*n)+127,f(t,[n/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 e=s(255*e,-255,255),f(t,[1,0,0,0,e,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 e=s(e,-1,1),n=1+(e>0?3*e:e),f(t,[.3086*(1-n)+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,o;return e=s(e,-180,180)/180*Math.PI,n=Math.cos(e),o=Math.sin(e),f(t,[.213+.787*n+-.213*o,.715+-.715*n+-.715*o,.072+-.072*n+.928*o,0,0,.213+-.213*n+.143*o,.715+n*(1-.715)+.14*o,.072+-.072*n+-.283*o,0,0,.213+-.213*n+-.787*o,.715+-.715*n+.715*o,.072+.928*n+.072*o,0,0,0,0,0,1,0,0,0,0,0,1])},adjustColors:function(t,e,n,o){return e=s(e,0,2),n=s(n,0,2),o=s(o,0,2),f(t,[e,0,0,0,0,0,n,0,0,0,0,0,o,0,0,0,0,0,1,0,0,0,0,0,1])},adjustSepia:function(t,e){return e=s(e,0,1),f(t,d([.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))},adjustGrayscale:function(t,e){return e=s(e,0,1),f(t,d([.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))}},K={invert:function(t){return function(e){return h(e,t)}}([-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0]),brightness:g(J.adjustBrightness),hue:g(J.adjustHue),saturate:g(J.adjustSaturation),contrast:g(J.adjustContrast),grayscale:g(J.adjustGrayscale),sepia:g(J.adjustSepia),colorize:function(t,e,n,o){return h(t,J.adjustColors(J.identity(),e,n,o))},sharpen:v([0,-1,0,-1,5,-1,0,-1,0]),emboss:v([-2,-1,0,-1,1,1,0,1,2]),gamma:m(function(t,e){return 255*Math.pow(t/255,1-e)}),exposure:m(function(t,e){return 255*(1-Math.exp(-t/255*e))}),colorFilter:h,convoluteFilter:p},Z={scale:y},Q={rotate:function(t,e){return t.toCanvas().then(function(n){return function(t,e,n){var o=C.create(t.width,t.height),r=C.get2dContext(o),i=0,a=0;return 90!=(n=n<0?360+n:n)&&270!=n||C.resize(o,o.height,o.width),90!=n&&180!=n||(i=o.width),270!=n&&180!=n||(a=o.height),r.translate(i,a),r.rotate(n*Math.PI/180),r.drawImage(t,0,0),G.fromCanvas(o,e)}(n,t.getType(),e)})},flip:function(t,e){return t.toCanvas().then(function(n){return function(t,e,n){var o=C.create(t.width,t.height),r=C.get2dContext(o);return"v"==n?(r.scale(1,-1),r.drawImage(t,0,-o.height)):(r.scale(-1,1),r.drawImage(t,-o.width,0)),G.fromCanvas(o,e)}(n,t.getType(),e)})},crop:function(t,e,n,o,r){return t.toCanvas().then(function(i){return function(t,e,n,o,r,i){var a=C.create(r,i);return C.get2dContext(a).drawImage(t,-n,-o),G.fromCanvas(a,e)}(i,t.getType(),e,n,o,r)})},resize:function(t,e,n){return t.toCanvas().then(function(o){return Z.scale(o,e,n).then(function(e){return G.fromCanvas(e,t.getType())})})}},tt={invert:function(t){return K.invert(t)},sharpen:function(t){return K.sharpen(t)},emboss:function(t){return K.emboss(t)},brightness:function(t,e){return K.brightness(t,e)},hue:function(t,e){return K.hue(t,e)},saturate:function(t,e){return K.saturate(t,e)},contrast:function(t,e){return K.contrast(t,e)},grayscale:function(t,e){return K.grayscale(t,e)},sepia:function(t,e){return K.sepia(t,e)},colorize:function(t,e,n,o){return K.colorize(t,e,n,o)},gamma:function(t,e){return K.gamma(t,e)},exposure:function(t,e){return K.exposure(t,e)},flip:function(t,e){return Q.flip(t,e)},crop:function(t,e,n,o,r){return Q.crop(t,e,n,o,r)},resize:function(t,e,n){return Q.resize(t,e,n)},rotate:function(t,e){return Q.rotate(t,e)}},et=function(t){return t.toBlob()},nt={blobToImageResult:function(t){return G.fromBlob(t)},fromBlobAndUrlSync:function(t,e){return G.fromBlobAndUrlSync(t,e)},imageToImageResult:function(t){return G.fromImage(t)},imageResultToBlob:function(t,e,n){return e===undefined&&n===undefined?et(t):t.toAdjustedBlob(e,n)},imageResultToOriginalBlob:et,imageResultToDataURL:function(t){return t.toDataURL()}},ot=function(){return F("URL")},rt={createObjectURL:function(t){return ot().createObjectURL(t)},revokeObjectURL:function(t){ot().revokeObjectURL(t)}},it=tinymce.util.Tools.resolve("tinymce.util.Delay"),at=tinymce.util.Tools.resolve("tinymce.util.Promise"),ut=tinymce.util.Tools.resolve("tinymce.util.URI"),ct=function(t){return t.getParam("imagetools_toolbar","rotateleft rotateright | flipv fliph | crop editimage imageoptions")},lt=function(t){return t.getParam("imagetools_proxy")},st={getImageSize:function(t){function e(t){return/^[0-9\.]+px$/.test(t)}var n,o;return n=t.style.width,o=t.style.height,n||o?e(n)&&e(o)?{w:parseInt(n,10),h:parseInt(o,10)}:null:(n=t.width,o=t.height,n&&o?{w:parseInt(n,10),h:parseInt(o,10)}:null)},setImageSize:function(t,e){var n,o;e&&(n=t.style.width,o=t.style.height,(n||o)&&(t.style.width=e.w+"px",t.style.height=e.h+"px",t.removeAttribute("data-mce-style")),n=t.width,o=t.height,(n||o)&&(t.setAttribute("width",e.w),t.setAttribute("height",e.h)))},getNaturalImageSize:function(t){return{w:t.naturalWidth,h:t.naturalHeight}}},ft=(function(){var t=Array.prototype.indexOf;undefined}(),function(t,e){for(var n=0,o=t.length;n<o;++n)if(t[n]===e)return n;return-1}),dt=(Array.prototype.push,Array.prototype.slice,function(t,e){for(var n=0,o=t.length;n<o;n++){var r=t[n];if(e(r,n,t))return H.some(r)}return H.none()}),ht=function(t){return null!==t&&t!==undefined},pt={traverse:function(t,e){var n;return n=e.reduce(function(t,e){return ht(t)?t[e]:undefined},t),ht(n)?n:null},readBlob:function(t){return new at(function(e){var n=new W;n.onload=function(t){var n=t.target;e(n.result)},n.readAsText(t)})},requestUrlAsBlob:function(t,e){return new at(function(n){var o;(o=new function(){return new(F("XMLHttpRequest"))}).onreadystatechange=function(){4===o.readyState&&n({status:o.status,blob:this.response})},o.open("GET",t,!0),k.each(e,function(t,e){o.setRequestHeader(e,t)}),o.responseType="blob",o.send()})},parseJson:function(t){var e;try{e=JSON.parse(t)}catch(n){}return e}},mt=[{code:404,message:"Could not find Image Proxy"},{code:403,message:"Rejected request"},{code:0,message:"Incorrect Image Proxy URL"}],gt=[{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."}],vt=function(t){return"ImageProxy HTTP error: "+dt(mt,function(e){return t===e.code}).fold(j.constant("Unknown ImageProxy error"),function(t){return t.message})},yt=function(t){var e=vt(t);return at.reject(e)},bt=function(t){return dt(gt,function(e){return e.type===t}).fold(j.constant("Unknown service error"),function(t){return t.message})},wt=function(t,e){return pt.readBlob(e).then(function(t){var e=function(t){var e=pt.parseJson(t),n=pt.traverse(e,["error","type"]);return"ImageProxy Service error: "+(n?bt(n):"Invalid JSON in service error message")}(t);return at.reject(e)})},xt={handleServiceErrorResponse:function(t,e){return function(t){return 400===t||403===t||500===t}(t)?wt(0,e):yt(t)},handleHttpError:yt,getHttpErrorMsg:vt,getServiceErrorMsg:bt},Rt=function(t,e){return pt.requestUrlAsBlob(function(t,e){var n=-1===t.indexOf("?")?"?":"&";return/[?&]apiKey=/.test(t)||!e?t:t+n+"apiKey="+encodeURIComponent(e)}(t,e),{"Content-Type":"application/json;charset=UTF-8","tiny-api-key":e}).then(function(t){return t.status<200||t.status>=300?xt.handleServiceErrorResponse(t.status,t.blob):at.resolve(t.blob)})},It=function(t,e){return e?Rt(t,e):function(t){return pt.requestUrlAsBlob(t,{}).then(function(t){return t.status<200||t.status>=300?xt.handleHttpError(t.status):at.resolve(t.blob)})}(t)},Tt=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),kt=tinymce.util.Tools.resolve("tinymce.ui.Factory"),Ct=function(){function t(){return o>0}function e(){return-1!==o&&o<n.length-1}var n=[],o=-1;return{data:n,add:function(t){var e;return e=n.splice(++o),n.push(t),{state:t,removed:e}},undo:function(){if(t())return n[--o]},redo:function(){if(e())return n[++o]},canUndo:t,canRedo:e}},Bt=tinymce.util.Tools.resolve("tinymce.geom.Rect"),Ut=function(t){return new at(function(e){var n=function(){t.removeEventListener("load",n),e(t)};t.complete?e(t):t.addEventListener("load",n)})},Mt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),jt=tinymce.util.Tools.resolve("tinymce.util.Observable"),At=tinymce.util.Tools.resolve("tinymce.util.VK"),zt=0,Et=function(t,e,n,o,r){function i(t,e){return{x:e.x-t.x,y:e.y-t.y,w:e.w,h:e.h}}function a(e,o,r,a){var u,c,f,d,h;u=o.x,c=o.y,f=o.w,d=o.h,u+=r*e.deltaX,c+=a*e.deltaY,f+=r*e.deltaW,d+=a*e.deltaH,f<20&&(f=20),d<20&&(d=20),h=t=Bt.clamp({x:u,y:c,w:f,h:d},n,"move"===e.name),h=i(n,h),s.fire("updateRect",{rect:h}),l(h)}function u(t){function n(t,e){e.h<0&&(e.h=0),e.w<0&&(e.w=0),Mt("#"+m+"-"+t,o).css({left:e.x,top:e.y,width:e.w,height:e.h})}k.each(f,function(e){Mt("#"+m+"-"+e.name,o).css({left:t.w*e.xMul+t.x,top:t.h*e.yMul+t.y})}),n("top",{x:e.x,y:e.y,w:e.w,h:t.y-e.y}),n("right",{x:t.x+t.w,y:t.y,w:e.w-t.x-t.w+e.x,h:t.h}),n("bottom",{x:e.x,y:t.y+t.h,w:e.w,h:e.h-t.y-t.h+e.y}),n("left",{x:e.x,y:t.y,w:t.x-e.x,h:t.h}),n("move",t)}function c(e){u(t=e)}function l(t){c(function(t,e){return{x:e.x+t.x,y:e.y+t.y,w:e.w,h:e.h}}(n,t))}var s,f,d,h,p="mce-",m=p+"crid-"+zt++;return f=[{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"}],h=["top","right","bottom","left"],Mt('<div id="'+m+'" class="'+p+'croprect-container" role="grid" aria-dropeffect="execute">').appendTo(o),k.each(h,function(t){Mt("#"+m,o).append('<div id="'+m+"-"+t+'"class="'+p+'croprect-block" style="display: none" data-mce-bogus="all">')}),k.each(f,function(t){Mt("#"+m,o).append('<div id="'+m+"-"+t.name+'" class="'+p+"croprect-handle "+p+"croprect-handle-"+t.name+'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="'+t.label+'" aria-grabbed="false">')}),d=k.map(f,function(e){var n;return new(kt.get("DragHelper"))(m,{document:o.ownerDocument,handle:m+"-"+e.name,start:function(){n=t},drag:function(t){a(e,n,t.deltaX,t.deltaY)}})}),u(t),Mt(o).on("focusin focusout",function(t){Mt(t.target).attr("aria-grabbed","focus"===t.type)}),Mt(o).on("keydown",function(e){function n(t,e,n,r,i){t.stopPropagation(),t.preventDefault(),a(o,n,r,i)}var o;switch(k.each(f,function(t){if(e.target.id===m+"-"+t.name)return o=t,!1}),e.keyCode){case At.LEFT:n(e,0,t,-10,0);break;case At.RIGHT:n(e,0,t,10,0);break;case At.UP:n(e,0,t,0,-10);break;case At.DOWN:n(e,0,t,0,10);break;case At.ENTER:case At.SPACEBAR:e.preventDefault(),r()}}),s=k.extend({toggleVisibility:function(t){var e;e=k.map(f,function(t){return"#"+m+"-"+t.name}).concat(k.map(h,function(t){return"#"+m+"-"+t})).join(","),t?Mt(e,o).show():Mt(e,o).hide()},setClampRect:function(e){n=e,u(t)},setRect:c,getInnerRect:function(){return i(n,t)},setInnerRect:l,setViewPortRect:function(n){e=n,u(t)},destroy:function(){k.each(d,function(t){t.destroy()}),d=[]}},jt)},St={create:function(t){return new(kt.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 e=this,n=new Image;n.src=t,Ut(n).then(function(){var t,o,r=e.state.get("viewRect");if((o=e.$el.find("img"))[0])o.replaceWith(n);else{var i=document.createElement("div");i.className="mce-imagepanel-bg",e.getEl().appendChild(i),e.getEl().appendChild(n)}t={x:0,y:0,w:n.naturalWidth,h:n.naturalHeight},e.state.set("viewRect",t),e.state.set("rect",Bt.inflate(t,-20,-20)),r&&r.w===t.w&&r.h===t.h||e.zoomFit(),e.repaintImage(),e.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,o,r,i;t=this.$el.find("img"),e=this.getEl().clientWidth,n=this.getEl().clientHeight,o=t[0].naturalWidth,r=t[0].naturalHeight,(i=Math.min((e-10)/o,(n-10)/r))>=1&&(i=1),this.zoom(i)},repaintImage:function(){var t,e,n,o,r,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"),r=s.offsetWidth,i=s.offsetHeight,n=a[0].naturalWidth*c,o=a[0].naturalHeight*c,t=Math.max(0,r/2-n/2),e=Math.max(0,i/2-o/2),a.css({left:t,top:e,width:n,height:o}),u.css({left:t,top:e,width:n,height:o}),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:o}),this.cropRect.setViewPortRect({x:0,y:0,w:r,h:i}))},bindStates:function(){var t=this;t.state.on("change:cropEnabled",function(e){t.cropRect.toggleVisibility(e.value),t.repaintImage()}),t.state.on("change:zoom",function(){t.repaintImage()}),t.state.on("change:rect",function(e){var n=e.value;t.cropRect||function(e){t.cropRect=Et(e,t.state.get("viewRect"),t.state.get("viewRect"),t.getEl(),function(){t.fire("crop")}),t.cropRect.on("updateRect",function(e){var n=e.rect,o=t.zoom();n={x:Math.round(n.x/o),y:Math.round(n.y/o),w:Math.round(n.w/o),h:Math.round(n.h/o)},t.state.set("rect",n)}),t.on("remove",t.cropRect.destroy)}(n),t.cropRect.setRect(n)})}}))(t)}},Lt={edit:function(t,e){return new at(function(n,o){return e.toBlob().then(function(e){R(t,b(e),n,o)})})}},Ht=0,Ot=function(t,e){t.notificationManager.open({text:e,type:"error"})},_t=function(t){return t.selection.getNode()},Dt=function(t,e){var n=e.src;return 0===n.indexOf("data:")||0===n.indexOf("blob:")||new ut(n).host===t.documentBaseURI.host},Ft=function(t,e){return-1!==k.inArray(t.settings.imagetools_cors_hosts,new ut(e.src).host)},Pt=function(t){var e;return(e=t.editorUpload.blobCache.getByUri(_t(t).src))?at.resolve(e.blob()):function(t,e){var n,o=e.src;return Ft(t,e)?It(e.src,null):Dt(t,e)?$(e):(o=lt(t),o+=(-1===o.indexOf("?")?"?":"&")+"url="+encodeURIComponent(e.src),n=function(t){return t.settings.api_key||t.settings.imagetools_api_key}(t),It(o,n))}(t,_t(t))},Wt=function(t,e){var n=it.setEditorTimeout(t,function(){t.editorUpload.uploadImagesAuto()},t.settings.images_upload_timeout||3e4);e.set(n)},qt=function(t){clearTimeout(t.get())},Vt=function(t,e,n,o){return e.toBlob().then(function(r){var i,a,u,c,l;return u=t.editorUpload.blobCache,l=_t(t),i=l.src,t.settings.images_reuse_filename&&((c=u.getByUri(i))?(i=c.uri(),a=c.name()):a=function(t,e){var n=e.match(/\/([^\/\?]+)?\.(?:jpeg|jpg|png|gif)(?:\?|$)/i);return n?t.dom.encode(n[1]):null}(t,i)),c=u.create({id:"imagetools"+Ht++,blob:r,base64:e.toBase64(),uri:i,name:a}),u.add(c),t.undoManager.transact(function(){function e(){t.$(l).off("load",e),t.nodeChanged(),n?t.editorUpload.uploadImagesAuto():(qt(o),Wt(t,o))}t.$(l).on("load",e),t.$(l).attr({src:c.blobUri()}).removeAttr("data-mce-src")}),c})},Nt=function(t,e,n){return function(){return t._scanForImages().then(j.curry(Pt,t)).then(nt.blobToImageResult).then(n).then(function(n){return Vt(t,n,!1,e)},function(e){Ot(t,e)})}},Xt={rotate:function(t,e,n){return function(){return Nt(t,e,function(e){var o=st.getImageSize(_t(t));return o&&st.setImageSize(_t(t),{w:o.h,h:o.w}),tt.rotate(e,n)})()}},flip:function(t,e,n){return function(){return Nt(t,e,function(t){return tt.flip(t,n)})()}},editImageDialog:function(t,e){return function(){var n=_t(t),o=st.getNaturalImageSize(n),r=function(t){return new at(function(e){X(t).then(function(r){var i=st.getNaturalImageSize(r);o.w===i.w&&o.h===i.h||st.getImageSize(n)&&st.setImageSize(n,i),rt.revokeObjectURL(r.src),e(t)})})};Pt(t).then(nt.blobToImageResult).then(j.curry(function(t,n){return Lt.edit(t,n).then(r).then(nt.blobToImageResult).then(function(n){return Vt(t,n,!0,e)},function(){})},t),function(e){Ot(t,e)})}},isEditableImage:function(t,e){return t.dom.is(e,"img:not([data-mce-object],[data-mce-placeholder])")&&(Dt(t,e)||Ft(t,e)||t.settings.imagetools_proxy)},cancelTimedUpload:qt},$t=function(t,e){k.each({mceImageRotateLeft:Xt.rotate(t,e,-90),mceImageRotateRight:Xt.rotate(t,e,90),mceImageFlipVertical:Xt.flip(t,e,"v"),mceImageFlipHorizontal:Xt.flip(t,e,"h"),mceEditImage:Xt.editImageDialog(t,e)},function(e,n){t.addCommand(n,e)})},Gt=function(t,e,n){t.on("NodeChange",function(o){var r=n.get();r&&r.src!==o.element.src&&(Xt.cancelTimedUpload(e),t.editorUpload.uploadImagesAuto(),n.set(null)),Xt.isEditableImage(t,o.element)&&n.set(o.element)})},Yt=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"})},Jt=function(t){t.addContextToolbar(j.curry(Xt.isEditableImage,t),ct(t))};T.add("imagetools",function(t){var e=I(0),n=I(null);$t(t,e),Yt(t),Jt(t),Gt(t,e,n)})}(); |