tinymce-image-map
Version:
TinyMCE plugin that generates image map for HTML content
1 lines • 33.6 kB
JavaScript
!function(t){var e={};function n(i){if(e[i])return e[i].exports;var s=e[i]={i:i,l:!1,exports:{}};return t[i].call(s.exports,s,s.exports,n),s.l=!0,s.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)n.d(i,s,function(e){return t[e]}.bind(null,s));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=8)}([function(t,e){t.exports='<div id="img-map-canvas-container">\n <canvas id="img-map-canvas">\n Please upgrade your browser to display this image.\n </canvas>\n</div>\n<div id="img-map-actions">\n <span class="img-map-selection">\n <span class="img-map-shape-select">\n <input type="radio" name="shapeSelect" id="shape1" value="circle" />\n <label for="shape1">Circle</label>\n </span>\n <span class="img-map-shape-select">\n <input type="radio" name="shapeSelect" id="shape2" value="rectangle" />\n <label for="shape2">Rectangle</label>\n </span>\n <span class="img-map-shape-select">\n <input type="radio" name="shapeSelect" id="shape3" value="polygon" />\n <label for="shape3">Polygon</label>\n </span>\n </span>\n <span class="img-map-buttons">\n <button type="button" class="img-map-btn" onclick="tinymceImageMap.clearCanvas(true)">Clear</button>\n <button type="button" class="img-map-btn" onclick="tinymceImageMap.deleteMap()">Delete Focused</button>\n </span>\n</div>\n<form id="img-map-form">\n <label for="url">URL: </label>\n <input\n type="text"\n id="map-url-input"\n name="map-url-input"\n class="img-map-url-input"\n placeholder="https://www.validurl.com"\n />\n</form>\n<div id="img-map-hint">Hold Shift and left click to finish drawing the polygon</div>\n'},function(t,e,n){var i=n(2);"string"==typeof i&&(i=[[t.i,i,""]]);var s={hmr:!0,transform:void 0,insertInto:void 0};n(6)(i,s);i.locals&&(t.exports=i.locals)},function(t,e,n){e=t.exports=n(3)(!1);var i=n(4)(n(5));e.push([t.i,"#img-map-container {\n display: flex;\n flex-direction: column;\n overflow: scroll;\n}\n\n#img-map-canvas-container{\n display:flex;\n justify-content: center;\n max-height: 800px;\n overflow: scroll;\n}\n\n#img-map-canvas {\n border: 1px solid #AAAAAA;\n align-self: flex-start;\n}\n\n#img-map-actions, #img-map-form, #img-map-hint {\n display: flex;\n align-items: center;\n padding: 8px 0 0 3px;\n height: auto;\n line-height: 20px;\n}\n\n#img-map-actions {\n justify-content: space-between;\n}\n\n#img-map-actions .img-map-btn {\n height: 28px;\n border: 1px solid #b3b3b3;\n text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);\n padding: 4px 6px;\n cursor: pointer;\n box-sizing: border-box;\n}\n\n#img-map-actions .img-map-shape-select {\n padding-right: .8px;\n}\n\n.img-map-shape-select input[type=radio] {\n margin: 0 auto;\n}\n\n#img-map-form .img-map-url-input {\n width: 100%;\n margin-left: 16px;\n padding: 5px 6px;\n border: 1px solid #b3b3b3;\n}\n\ni.mce-i-img-map-icon, i.mce-ico.mce-i-img-map-icon {\n background-image: url("+i+");\n max-height: 16px;\n max-width: 16px;\n margin-right: 4px;\n padding-right: 0;\n}\n\n::placeholder {\n color: #c3c3c3;\n}\n\n#img-map-hint {\n visibility: hidden;\n font-weight: bold;\n}",""])},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||"",i=t[3];if(!i)return n;if(e&&"function"==typeof btoa){var s=(r=i,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),o=i.sources.map(function(t){return"/*# sourceURL="+i.sourceRoot+t+" */"});return[n].concat(o).concat([s]).join("\n")}var r;return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var i={},s=0;s<this.length;s++){var o=this[s][0];null!=o&&(i[o]=!0)}for(s=0;s<t.length;s++){var r=t[s];null!=r[0]&&i[r[0]]||(n&&!r[2]?r[2]=n:n&&(r[2]="("+r[2]+") and ("+n+")"),e.push(r))}},e}},function(t,e,n){"use strict";t.exports=function(t,e){return"string"!=typeof t?t:(/^['"].*['"]$/.test(t)&&(t=t.slice(1,-1)),/["'() \t\n]/.test(t)||e?'"'+t.replace(/"/g,'\\"').replace(/\n/g,"\\n")+'"':t)}},function(t,e){t.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgc3Ryb2tlPSIjNTk1OTU5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBvbHlnb24gcG9pbnRzPSIxIDYgMSAyMiA4IDE4IDE2IDIyIDIzIDE4IDIzIDIgMTYgNiA4IDIgMSA2Ii8+PGxpbmUgeDE9IjgiIHgyPSI4IiB5MT0iMiIgeTI9IjE4Ii8+PGxpbmUgeDE9IjE2IiB4Mj0iMTYiIHkxPSI2IiB5Mj0iMjIiLz48L3N2Zz4KCjwhLS0KClRoZSBNSVQgTGljZW5zZSAoTUlUKQoKQ29weXJpZ2h0IChjKSAyMDEzLTIwMTcgQ29sZSBCZW1pcwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4KCk1hcCBpY29uIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2ZlYXRoZXJpY29ucy9mZWF0aGVyCgotLT4="},function(t,e,n){var i,s,o={},r=(i=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===s&&(s=i.apply(this,arguments)),s}),a=function(t){var e={};return function(t,n){if("function"==typeof t)return t();if(void 0===e[t]){var i=function(t,e){return e?e.querySelector(t):document.querySelector(t)}.call(this,t,n);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}e[t]=i}return e[t]}}(),c=null,u=0,h=[],p=n(7);function l(t,e){for(var n=0;n<t.length;n++){var i=t[n],s=o[i.id];if(s){s.refs++;for(var r=0;r<s.parts.length;r++)s.parts[r](i.parts[r]);for(;r<i.parts.length;r++)s.parts.push(v(i.parts[r],e))}else{var a=[];for(r=0;r<i.parts.length;r++)a.push(v(i.parts[r],e));o[i.id]={id:i.id,refs:1,parts:a}}}}function f(t,e){for(var n=[],i={},s=0;s<t.length;s++){var o=t[s],r=e.base?o[0]+e.base:o[0],a={css:o[1],media:o[2],sourceMap:o[3]};i[r]?i[r].parts.push(a):n.push(i[r]={id:r,parts:[a]})}return n}function d(t,e){var n=a(t.insertInto);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var i=h[h.length-1];if("top"===t.insertAt)i?i.nextSibling?n.insertBefore(e,i.nextSibling):n.appendChild(e):n.insertBefore(e,n.firstChild),h.push(e);else if("bottom"===t.insertAt)n.appendChild(e);else{if("object"!=typeof t.insertAt||!t.insertAt.before)throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");var s=a(t.insertAt.before,n);n.insertBefore(e,s)}}function m(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t);var e=h.indexOf(t);e>=0&&h.splice(e,1)}function y(t){var e=document.createElement("style");if(void 0===t.attrs.type&&(t.attrs.type="text/css"),void 0===t.attrs.nonce){var i=function(){0;return n.nc}();i&&(t.attrs.nonce=i)}return g(e,t.attrs),d(t,e),e}function g(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function v(t,e){var n,i,s,o;if(e.transform&&t.css){if(!(o="function"==typeof e.transform?e.transform(t.css):e.transform.default(t.css)))return function(){};t.css=o}if(e.singleton){var r=u++;n=c||(c=y(e)),i=I.bind(null,n,r,!1),s=I.bind(null,n,r,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",g(e,t.attrs),d(t,e),e}(e),i=function(t,e,n){var i=n.css,s=n.sourceMap,o=void 0===e.convertToAbsoluteUrls&&s;(e.convertToAbsoluteUrls||o)&&(i=p(i));s&&(i+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(s))))+" */");var r=new Blob([i],{type:"text/css"}),a=t.href;t.href=URL.createObjectURL(r),a&&URL.revokeObjectURL(a)}.bind(null,n,e),s=function(){m(n),n.href&&URL.revokeObjectURL(n.href)}):(n=y(e),i=function(t,e){var n=e.css,i=e.media;i&&t.setAttribute("media",i);if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,n),s=function(){m(n)});return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else s()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=r()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=f(t,e);return l(n,e),function(t){for(var i=[],s=0;s<n.length;s++){var r=n[s];(a=o[r.id]).refs--,i.push(a)}t&&l(f(t,e),e);for(s=0;s<i.length;s++){var a;if(0===(a=i[s]).refs){for(var c=0;c<a.parts.length;c++)a.parts[c]();delete o[a.id]}}}};var b,w=(b=[],function(t,e){return b[t]=e,b.filter(Boolean).join("\n")});function I(t,e,n,i){var s=n?"":i.css;if(t.styleSheet)t.styleSheet.cssText=w(e,s);else{var o=document.createTextNode(s),r=t.childNodes;r[e]&&t.removeChild(r[e]),r.length?t.insertBefore(o,r[e]):t.appendChild(o)}}},function(t,e){t.exports=function(t){var e="undefined"!=typeof window&&window.location;if(!e)throw new Error("fixUrls requires window.location");if(!t||"string"!=typeof t)return t;var n=e.protocol+"//"+e.host,i=n+e.pathname.replace(/\/[^\/]*$/,"/");return t.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(t,e){var s,o=e.trim().replace(/^"(.*)"$/,function(t,e){return e}).replace(/^'(.*)'$/,function(t,e){return e});return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(o)?t:(s=0===o.indexOf("//")?o:0===o.indexOf("/")?n+o:i+o.replace(/^\.\//,""),"url("+JSON.stringify(s)+")")})}},function(t,e,n){"use strict";n.r(e);var i=Object.freeze({RECTANGLE:"rect",CIRCLE:"circle",POLYGON:"polygon"});var s=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.x=e,this.y=n};function o(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var r=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.id=Date.now(),this.startPoint,this.endPoint,this.moveOffSet,this.dimensions={frame:{},shape:{}},this.context=e,this.drawing=!0,this.moving=!1,this.selected=!1,this.resizing=!1,this.path=new Path2D,this.strokeStyle="#2f4f4f",this.href=""}var e,n,i;return e=t,(n=[{key:"draw",value:function(){console.warn("Implement method to render the shape")}},{key:"getArea",value:function(){console.warn("Implement method to return the shapes area in pixels")}},{key:"getAreaCoords",value:function(){console.warn("Implement method to return the coordinates of the shape")}},{key:"updateDimensions",value:function(){console.warn("Implement method to update the shape's dimensions/points")}},{key:"updateCoordinates",value:function(){console.warn("Implement method to update the shape's location on canvas")}},{key:"calcDrawCoords",value:function(){console.warn("Implement method to update shape's draw coordinates")}},{key:"contains",value:function(t){return this.context.isPointInPath(this.path,t.x,t.y)}},{key:"setMoveOffset",value:function(t){var e={x:t.x-this.startPoint.x,y:t.y-this.startPoint.y},n=e.x,i=e.y;return this.moveOffSet=new s(n,i),this}},{key:"updateStartPoint",value:function(t){var e={x:t.x-this.moveOffSet.x,y:t.y-this.moveOffSet.y},n=e.x,i=e.y;return this.startPoint=new s(n,i),this}},{key:"updateEndPoint",value:function(t){return this.endPoint=t,this}},{key:"drag",value:function(){return this.moving=!0,this}},{key:"drop",value:function(){return this.moving=!1,this}},{key:"select",value:function(){return this.selected=!0,this.strokeStyle="#C80000",this}},{key:"deselect",value:function(){return this.selected=!1,this.strokeStyle="#2f4f4f",this}},{key:"finishDrawing",value:function(){return this.drawing=!1,this}},{key:"setDrawCoords",value:function(t){return this.startPoint=t.start,this.endPoint=t.end,this.moveOffSet=t.start,this}},{key:"setShapeDimensions",value:function(t){return this.dimensions.shape=t,this}},{key:"setHref",value:function(t){return this.href=t,this}},{key:"addTransparentFill",value:function(t){this.context.globalAlpha=.3,this.context.fillStyle="#c3c3c3",this.context.fill(t),this.context.globalAlpha=1}},{key:"inUse",value:function(){return this.drawing||this.moving||this.resizing}},{key:"toMapArea",value:function(){var t=this;return new C(this.type,this.getAreaCoords(),/https?:\/\//.test(t.href)?t.href:"http://"+t.href)}}])&&o(e.prototype,n),i&&o(e,i),t}();function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function u(t,e){return!e||"object"!==a(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var l=function(t){function e(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(n=u(this,h(e).call(this,t))).type="circle",n}var n,i,s;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(e,r),n=e,(i=[{key:"draw",value:function(){this.drawing&&(this.context.strokeStyle="#E2E2E2",this.context.strokeRect(this.dimensions.frame.x,this.dimensions.frame.y,this.dimensions.frame.w,this.dimensions.frame.h)),this.path=new Path2D,this.path.arc(this.dimensions.shape.cx,this.dimensions.shape.cy,Math.abs(this.dimensions.shape.r),0,2*Math.PI,!1),this.path.closePath(),this.context.strokeStyle=this.strokeStyle,this.context.stroke(this.path),this.addTransparentFill(this.path)}},{key:"getArea",value:function(){var t=this.getAreaCoords().r;return Math.round(Math.PI*Math.pow(t,2))}},{key:"getAreaCoords",value:function(){return{cx:this.dimensions.shape.cx,cy:this.dimensions.shape.cy,r:this.dimensions.shape.r}}},{key:"updateDimensions",value:function(){this.calculateBoundingBox();var t={cx:Math.round(this.dimensions.frame.x+this.dimensions.frame.w/2),cy:Math.round(this.dimensions.frame.y+this.dimensions.frame.h/2),r:Math.round(Math.abs(this.dimensions.frame.w/2))};return this.dimensions.shape=t,this}},{key:"updateCoordinates",value:function(){return this.dimensions.frame=Object.assign(this.dimensions.frame,{x:this.startPoint.x,y:this.startPoint.y}),this.dimensions.shape=Object.assign(this.dimensions.shape,{cx:Math.round(this.dimensions.frame.x+this.dimensions.frame.w/2),cy:Math.round(this.dimensions.frame.y+this.dimensions.frame.h/2),r:Math.round(Math.abs(this.dimensions.frame.w/2))}),this}},{key:"calcDrawCoords",value:function(){return this.startPoint={x:Math.round(this.dimensions.shape.cx-this.dimensions.shape.r),y:Math.round(this.dimensions.shape.cy-this.dimensions.shape.r)},this.endPoint={x:Math.round(this.dimensions.shape.cx+this.dimensions.shape.r),y:Math.round(this.dimensions.shape.cy+this.dimensions.shape.r)},this.moveOffSet=Object.assign({},this.startPoint),this.calculateBoundingBox(),this}},{key:"calculateBoundingBox",value:function(){var t=0,e=0,n=Math.abs(this.endPoint.x-this.startPoint.x),i=Math.abs(this.endPoint.y-this.startPoint.y);return n<i?(t=n*(this.endPoint.x<this.startPoint.x?-1:1),e=n*(this.endPoint.y<this.startPoint.y?-1:1)):(t=i*(this.endPoint.x<this.startPoint.x?-1:1),e=i*(this.endPoint.y<this.startPoint.y?-1:1)),this.dimensions.frame={x:this.startPoint.x,y:this.startPoint.y,w:Math.round(t),h:Math.round(e)},this}}])&&c(n.prototype,i),s&&c(n,s),e}();function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function m(t,e){return!e||"object"!==f(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function y(t){return(y=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function g(t,e){return(g=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var v=function(t){function e(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(n=m(this,y(e).call(this,t))).type="rect",n}var n,i,s;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&g(t,e)}(e,r),n=e,(i=[{key:"draw",value:function(){this.path=new Path2D,this.path.rect(this.dimensions.shape.x,this.dimensions.shape.y,this.dimensions.shape.w,this.dimensions.shape.h),this.context.strokeStyle=this.strokeStyle,this.context.stroke(this.path),this.addTransparentFill(this.path)}},{key:"getArea",value:function(){return this.dimensions.shape.w*this.dimensions.shape.h}},{key:"getAreaCoords",value:function(){return this.dimensions.shape}},{key:"updateDimensions",value:function(){var t=this.endPoint.x-this.startPoint.x,e=this.endPoint.y-this.startPoint.y;return this.dimensions.shape={x:this.startPoint.x,y:this.startPoint.y,w:Math.round(t),h:Math.round(e)},this.dimensions.frame=Object.assign({},this.dimensions.shape),this}},{key:"updateCoordinates",value:function(){return this.dimensions.shape=Object.assign(this.dimensions.shape,{x:this.startPoint.x,y:this.startPoint.y}),this.dimensions.frame=Object.assign({},this.dimensions.shape),this}},{key:"calcDrawCoords",value:function(){return this.startPoint={x:this.dimensions.shape.x,y:this.dimensions.shape.y},this.endPoint={x:this.dimensions.shape.x+this.dimensions.shape.w,y:this.dimensions.shape.y+this.dimensions.shape.h},this.moveOffSet=Object.assign({},this.startPoint),this}}])&&d(n.prototype,i),s&&d(n,s),e}();function b(t){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function w(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function I(t,e){return!e||"object"!==b(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function S(t){return(S=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function x(t,e){return(x=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var P=function(t){function e(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(n=I(this,S(e).call(this,t))).type="polygon",n.dimensions.shape=[],n}var n,i,s;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&x(t,e)}(e,r),n=e,(i=[{key:"draw",value:function(){var t=this;this.path=new Path2D,this.path.moveTo(this.dimensions.shape[0].x,this.dimensions.shape[0].y),this.dimensions.shape.forEach(function(e){t.path.lineTo(e.x,e.y)}),this.drawing&&this.path.lineTo(this.endPoint.x,this.endPoint.y),this.path.closePath(),this.context.strokeStyle=this.strokeStyle,this.context.stroke(this.path),this.addTransparentFill(this.path)}},{key:"getArea",value:function(){var t=this.dimensions.shape,e=t.length,n=0,i=e-1;if(e>2)for(var s=0;s<e;s++)n+=t[i].x*t[s].y,n-=t[s].x*t[i].y,i=s;return Math.round(Math.abs(n)/2)}},{key:"getAreaCoords",value:function(){return this.dimensions.shape}},{key:"updateDimensions",value:function(t){var e=this;if(!t)return this.dimensions.shape.find(function(t){return t.x===e.endPoint.x&&t.y===e.endPoint.y})||this.dimensions.shape.push({x:Math.round(this.endPoint.x),y:Math.round(this.endPoint.y)}),this.dimensions.shape=this.dimensions.shape,this}},{key:"updateCoordinates",value:function(){var t=this.startPoint.x-Math.abs(this.dimensions.shape[0].x),e=this.startPoint.y-Math.abs(this.dimensions.shape[0].y),n=this.dimensions.shape.map(function(n){return{x:n.x+t,y:n.y+e}});return this.dimensions.shape=n,this}},{key:"calcDrawCoords",value:function(){return this.startPoint=this.dimensions.shape[0],this.endPoint=Object.assign({},this.startPoint),this.moveOffSet=Object.assign({},this.startPoint),this}}])&&w(n.prototype,i),s&&w(n,s),e}(),M=function(t,e){var n,s=e.context,o=e.drawCoords,r=e.areaCoords,a=e.href;switch(t){case i.CIRCLE:n=new l(s);break;case i.RECTANGLE:n=new v(s);break;case i.POLYGON:n=new P(s);break;default:throw new Error("Invalid shape passed to constructor: "+(void 0).shape)}return o&&n.setDrawCoords(o),r&&n.setShapeDimensions(r).calcDrawCoords().finishDrawing(),a&&n.setHref(a),n};function k(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var C=function(){function t(e,n,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.shape=e,this.coords="string"==typeof n?n:this.formatCoordsToString(n),this.href=i,this.target="_blank"}var e,n,s;return e=t,(n=[{key:"formatCoordsToString",value:function(t){switch(this.shape){case i.CIRCLE:return"".concat(t.cx,",").concat(t.cy,",").concat(t.r);case i.RECTANGLE:return"".concat(t.x,",").concat(t.y,",").concat(t.x+t.w,",").concat(t.y+t.h);case i.POLYGON:return t.map(function(t){return"".concat(t.x,",").concat(t.y)}).join(",");default:throw new Error("Invalid shape passed to constructor")}}},{key:"formatCoordsToObjectDimensions",value:function(t){var e=t.split(",").map(function(t){return Number(t)});switch(this.shape){case i.CIRCLE:return{cx:Number(e[0]),cy:Number(e[1]),r:Number(e[2])};case i.RECTANGLE:return{x:e[0],y:e[1],w:Math.round(e[2]-e[0]),h:Math.round(e[3]-e[1])};case i.POLYGON:for(var n=[],s=0;s<e.length;s+=2){var o={x:e[s],y:e[s+1]};n.push(o)}return n}}},{key:"toShape",value:function(t){var e=this.formatCoordsToObjectDimensions(this.coords);return new M(this.shape,{areaCoords:e,context:t,href:this.href})}}])&&k(e.prototype,n),s&&k(e,s),t}(),E=function(t,e){var n=e.parentNode,i=function(t){for(var e="tinymce-map",n=1;t.find(function(t){return t.name===e});)e="tinymce-map"+n,n++;return e}(Array.from(t.dom.select("map")));return t.dom.add(n,"map",{id:i,name:i}),e.useMap="#"+i,t.dom.select("map")[0]},O={load:function(t){return t.map(function(t){return new C(t.shape,t.coords,t.href)})},write:function(t,e){var n=document.tinymceImageMap,i=t.dom.select("map").find(function(t){return"#"+t.name===e.useMap})||E(t,e);!function(t){if(t)for(var e=Array.from(t.children),n=0;n<e.length;n++)t.removeChild(e[n])}(i),n.shapes.forEach(function(e){var n=e.toMapArea(),s=Object.assign(t.dom.create("area"),n);s.style.cursor="text",i.append(s)})},addMapElement:E};function U(){this.shapeInProgress.finishDrawing(),this.shapes=this.shapes.filter(R),this.setFocusedShape(this.shapeInProgress),this.shapeInProgress=void 0}function R(t){return t.getArea()>300}var B={draw:{onMouseDown:function(t,e,n){var i={start:e,end:e};t.shapeInProgress?n.shiftKey?(t.shapeInProgress.updateEndPoint(e).updateDimensions(),U.call(t)):t.shapeInProgress.updateEndPoint(e).updateDimensions():(t.shapeInProgress=M(t.currentDrawShape,{context:t.context,drawCoords:i}),t.shapeInProgress.updateDimensions(),t.shapes.push(t.shapeInProgress))},onMouseMove:function(t,e){t.shapeInProgress&&(t.shapeInProgress.type===i.POLYGON?t.shapeInProgress.updateEndPoint(e).updateDimensions(!0):t.shapeInProgress.updateEndPoint(e).updateDimensions())},onMouseUp:function(t){t.shapeInProgress&&t.shapeInProgress.type!==i.POLYGON&&U.call(t)}},move:{onMouseDown:function(t,e){t.focusedShape.drag().setMoveOffset(e)},onMouseMove:function(t,e){t.focusedShape.updateStartPoint(e).updateCoordinates()},onMouseUp:function(t){t.focusedShape.drop()}},resize:{onMouseDown:function(t,e,n){},onMouseMove:function(t,e,n){},onMouseUp:function(t,e,n){}}},T=Object.freeze({DRAW:"draw",MOVE:"move",RESIZE:"resize"});function j(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function A(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var D=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.args=e,this.canvas=e.canvas,this.context=this.canvas.getContext("2d"),this.shapeSelectors=e.shapeSelectors,this.currentDrawShape,this.currentAction,this.shapeInProgress,this.focusedShape,this.shapes=[],this.isMouseDown=!1,this.img,this.urlInput=e.urlInput,this.hint=e.hint,this.canvas.addEventListener("mousedown",function(t){return n.mouseDown(t)},!1),this.canvas.addEventListener("mousemove",function(t){return n.mouseMove(t)},!1),this.canvas.addEventListener("mouseup",function(t){return n.mouseUp(t)},!1),this.urlInput.addEventListener("change",function(t){n.focusedShape&&n.focusedShape.setHref(t.target.value)}),this.shapeSelectors.forEach(function(t){return t.addEventListener("change",function(){return n.setShape()},!1)})}var e,n,o;return e=t,(n=[{key:"render",value:function(){this.canvas.getContext&&(this.clearCanvas(),this.drawImage(),this.shapes.forEach(function(t){return t.draw()}),this.showHint())}},{key:"mouseDown",value:function(t){if(0===t.button){this.isMouseDown=!0;var e=this.getMouseCoords(t);this.determineAction(e),B[this.currentAction].onMouseDown(this,e,t),this.render()}t.preventDefault()}},{key:"mouseMove",value:function(t){if(this.isMouseDown||this.shapeInProgress&&this.shapeInProgress.inUse()){var e=this.getMouseCoords(t);B[this.currentAction].onMouseMove(this,e,t),this.render()}t.preventDefault()}},{key:"mouseUp",value:function(t){if(this.isMouseDown){this.isMouseDown=!1;var e=this.getMouseCoords(t);B[this.currentAction].onMouseUp(this,e,t),this.render()}t.preventDefault()}},{key:"getMouseCoords",value:function(t){var e=this.canvas.getBoundingClientRect(),n=Math.round(t.clientX-e.left),i=Math.round(t.clientY-e.top);return new s(n,i)}},{key:"clearCanvas",value:function(t){t&&(this.shapeInProgress=void 0,this.focusedShape=void 0,this.shapes=[]),this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.drawImage()}},{key:"setShape",value:function(){var t=j(this.shapeSelectors),e=t.find(function(t){return t.checked});this.currentDrawShape=void 0!==e?i[e.value.toUpperCase()]:i.CIRCLE,e||(t.find(function(t){return t.value===i.CIRCLE}).checked=!0)}},{key:"determineAction",value:function(t){var e=this.shapes.find(function(e){return e.contains(t)});if(e){if(e.drawing)return;this.setFocusedShape(e),this.currentAction=T.MOVE}else this.setFocusedShape(),this.currentAction=T.DRAW}},{key:"setFocusedShape",value:function(t){t?(this.removeFocusedShape(),this.focusedShape=t,this.focusedShape.select(),this.urlInput.value=this.focusedShape.href):(this.removeFocusedShape(),this.urlInput.value="")}},{key:"removeFocusedShape",value:function(){this.focusedShape&&(this.urlInput.blur(),this.focusedShape.deselect())}},{key:"deleteMap",value:function(){if(this.focusedShape){var t=this.shapes.findIndex(function(t){return t.selected});this.shapes.splice(t,1),this.focusedShape=void 0,this.render()}}},{key:"loadImage",value:function(){var t=this;this.img=new Image,this.img.onload=function(){t.drawImage(),t.shapes.forEach(function(t){return t.draw()})},this.img.height=this.args.img.height,this.img.width=this.args.img.width,this.img.src=this.args.img.src}},{key:"drawImage",value:function(){var t,e=[0,0,this.canvas.width,this.canvas.height];this.context.imageSmoothingEnabled=!1,(t=this.context).drawImage.apply(t,[this.img].concat(e))}},{key:"showHint",value:function(){this.shapeInProgress&&"polygon"===this.shapeInProgress.type&&this.shapeInProgress.drawing?this.hint.style.visibility="visible":this.hint.style.visibility="hidden"}},{key:"init",value:function(){var t=this;this.setShape(),this.loadImage(),this.args.map.areas.forEach(function(e){var n=e.toShape(t.context);t.shapes.push(n)})}}])&&A(e.prototype,n),o&&A(e,o),t}(),Z=n(0),G=n.n(Z);n(1);function V(t){return t.windowManager.getWindows().filter(function(t){return 1===Array.from(t.$("#img-map-container")).length}).map(function(t){return t.byId=function(t){return this.$("#".concat(t))[0]},t.byName=function(t){return Array.from(this.$("[name=".concat(t,"]")))},t}).pop()}var L={createDialogHtml:function(t){return new Promise(function(e){var n=V(t);n.$("#img-map-container")[0].innerHTML=G.a,e(n)})},initApp:function(t,e,n){var i=t.dom.select("map").find(function(t){return"#"+t.name===n.useMap});i||(n.useMap="");var s=""===n.useMap?[]:O.load(Array.from(i.children)),o=e.byId("img-map-canvas");o.setAttribute("height",n.height),o.setAttribute("width",n.width);var r=e.byId("map-url-input"),a=e.byName("shapeSelect"),c={canvas:o,hint:e.byId("img-map-hint"),img:{src:n.src,height:n.height,width:n.width,useMap:n.useMap},map:{name:n.useMap,areas:s},shapeSelectors:a,urlInput:r},u=new D(c);document.tinymceImageMap=u,u.init()},destroy:function(t,e){var n=V(t);n.byId("map-url-input").blur(),O.write(t,e),document.tinymceImageMap={},n.byId("img-map-container").innerHTML=""}},N=function(t){if("IMG"===t.selection.getNode().nodeName){var e=t.selection.getNode();t.windowManager.open({title:"Manage Image Maps",body:[{type:"container",layout:"flex",direction:"column",align:"center",html:'<div id="img-map-container"></div>',minHeight:e.height<800?e.height+100:900,minWidth:e.width>450?e.width:450,autoScroll:!0}],buttons:[{text:"Done",onclick:"submit"}],onsubmit:function(){L.destroy(t,e)}}),L.createDialogHtml(t).then(function(n){return L.initApp(t,n,e)})}},F=function(t){t.on("init",function(){t.dom.select("area").forEach(function(t){return t.style.cursor="text"})}),t.on("click",function(e){if("AREA"===e.target.nodeName){var n=e.target.parentNode;t.selection.select(t.dom.select("img").find(function(t){return t.useMap==="#"+n.name}))}}),t.addMenuItem("imageMap",{icon:"img-map-icon",text:"Image Map",onclick:function(){return N(t)}}),t.addButton("imageMap",{tooltip:"Image Map",icon:"img-map-icon",onclick:function(){return N(t)}})};tinymce.PluginManager.add("imageMap",F);e.default=F}]);