diff --git a/dist/grapes.min.js b/dist/grapes.min.js index fff2d1b07..d93866dd8 100644 --- a/dist/grapes.min.js +++ b/dist/grapes.min.js @@ -1,3 +1,3 @@ -/*! grapesjs - 0.18.4 */ -!function(t,e){'object'==typeof exports&&'object'==typeof module?module.exports=e():'function'==typeof define&&define.amd?define([],e):'object'==typeof exports?exports.grapesjs=e():t.grapesjs=e()}('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof window?window:this,(function(){return(()=>{var t={7757:(t,e,n)=>{t.exports=n(5666)},3410:(t,e,n)=>{var r,i,o;i=[n(9050),n(2316)],r=function(t,e){var n=Array.prototype.slice;function r(t,e,n){return n.length<=4?t.call(e,n[0],n[1],n[2],n[3]):t.apply(e,n)}function i(t,e){return n.call(t,e)}function o(e,n){return null!=e&&(t.isArray(n)||(n=i(arguments,1)),t.all(n,(function(t){return t in e})))}var s=function(){var e=!1,n=-1;function r(){n++,e=!0,t.defer((function(){e=!1}))}return function(){return e||r(),n}}();function a(){this.registeredObjects=[],this.cidIndexes=[]}function l(e,n,r,i){for(var o,s=0,a=n.length;st.maximumStackLength&&(t.shift(),t.pointer--)}}}a.prototype={isRegistered:function(e){return e&&e.cid?this.registeredObjects[e.cid]:t.contains(this.registeredObjects,e)},register:function(t){return!this.isRegistered(t)&&(t&&t.cid?(this.registeredObjects[t.cid]=t,this.cidIndexes.push(t.cid)):this.registeredObjects.push(t),!0)},unregister:function(e){if(this.isRegistered(e)){if(e&&e.cid)delete this.registeredObjects[e.cid],this.cidIndexes.splice(t.indexOf(this.cidIndexes,e.cid),1);else{var n=t.indexOf(this.registeredObjects,e);this.registeredObjects.splice(n,1)}return!0}return!1},get:function(){return t.map(this.cidIndexes,(function(t){return this.registeredObjects[t]}),this).concat(this.registeredObjects)}};var d={add:{undo:function(t,e,n,r){t.remove(n,r)},redo:function(t,e,n,r){r.index&&(r.at=r.index),t.add(n,r)},on:function(e,n,r){return{object:n,before:void 0,after:e,options:t.clone(r)}}},remove:{undo:function(t,e,n,r){"index"in r&&(r.at=r.index),t.add(e,r)},redo:function(t,e,n,r){t.remove(e,r)},on:function(e,n,r){return{object:n,before:e,after:void 0,options:t.clone(r)}}},change:{undo:function(e,n,r,i){t.isEmpty(n)?t.each(t.keys(r),e.unset,e):(e.set(n),i&&i.unsetData&&i.unsetData.before&&i.unsetData.before.length&&t.each(i.unsetData.before,e.unset,e))},redo:function(e,n,r,i){t.isEmpty(r)?t.each(t.keys(n),e.unset,e):(e.set(r),i&&i.unsetData&&i.unsetData.after&&i.unsetData.after.length&&t.each(i.unsetData.after,e.unset,e))},on:function(e,n){var r=e.changedAttributes(),i=t.keys(r),o=t.pick(e.previousAttributes(),i),s=t.keys(o),a=(n||(n={})).unsetData={after:[],before:[]};return i.length!=s.length&&(i.length>s.length?t.each(i,(function(t){t in o||a.before.push(t)}),this):t.each(s,(function(t){t in r||a.after.push(t)}))),{object:e,before:o,after:r,options:t.clone(n)}}},reset:{undo:function(t,e,n){t.reset(e)},redo:function(t,e,n){t.reset(n)},on:function(e,n){return{object:e,before:n.previousModels,after:t.clone(e.models)}}}};function p(){}function g(e,n,r,i){if("object"==typeof n)return t.each(n,(function(t,n){2===e?g(e,t,r,i):g(e,n,t,r)}));switch(e){case 0:o(r,"undo","redo","on")&&t.all(t.pick(r,"undo","redo","on"),t.isFunction)&&(i[n]=r);break;case 1:i[n]&&t.isObject(r)&&(i[n]=t.extend({},i[n],r));break;case 2:delete i[n]}return this}p.prototype=d;var v=e.Model.extend({defaults:{type:null,object:null,before:null,after:null,magicFusionIndex:null},undo:function(t){c("undo",this.attributes)},redo:function(t){c("redo",this.attributes)}}),m=e.Collection.extend({model:v,pointer:-1,track:!1,isCurrentlyUndoRedoing:!1,maximumStackLength:1/0,setMaxLength:function(t){this.maximumStackLength=t}}),y=e.Model.extend({defaults:{maximumStackLength:1/0,track:!1},initialize:function(e){this.stack=new m,this.objectRegistry=new a,this.undoTypes=new p,this.stack.setMaxLength(this.get("maximumStackLength")),this.on("change:maximumStackLength",(function(t,e){this.stack.setMaxLength(e)}),this),e&&e.track&&this.startTracking(),e&&e.register&&(t.isArray(e.register)||t.isArguments(e.register)?r(this.register,this,e.register):this.register(e.register))},startTracking:function(){this.set("track",!0),this.stack.track=!0},stopTracking:function(){this.set("track",!1),this.stack.track=!1},isTracking:function(){return this.get("track")},_addToStack:function(t){f(this.stack,t,i(arguments,1),this.undoTypes)},register:function(){l("on",arguments,this._addToStack,this)},unregister:function(){l("off",arguments,this._addToStack,this)},unregisterAll:function(){r(this.unregister,this,this.objectRegistry.get())},undo:function(t){u("undo",this,this.stack,t)},undoAll:function(){u("undo",this,this.stack,!1,!0)},redo:function(t){u("redo",this,this.stack,t)},redoAll:function(){u("redo",this,this.stack,!1,!0)},isAvailable:function(t){var e=this.stack,n=e.length;switch(t){case"undo":return n>0&&e.pointer>-1;case"redo":return n>0&&e.pointer{var r,i,o;o='object'==typeof self&&self.self===self&&self||'object'==typeof n.g&&n.g.global===n.g&&n.g,r=[n(9050),n(2579),e],i=function(t,e,n){o.Backbone=function(t,e,n,r){var i=t.Backbone,o=Array.prototype.slice;e.VERSION='1.3.3',e.$=r,e.noConflict=function(){return t.Backbone=i,this},e.emulateHTTP=!1,e.emulateJSON=!1;var s=function(t,e,r){switch(t){case 1:return function(){return n[e](this[r])};case 2:return function(t){return n[e](this[r],t)};case 3:return function(t,i){return n[e](this[r],l(t,this),i)};case 4:return function(t,i,o){return n[e](this[r],l(t,this),i,o)};default:return function(){var t=o.call(arguments);return t.unshift(this[r]),n[e].apply(n,t)}}},a=function(t,e,r){n.each(e,(function(e,i){n[i]&&(t.prototype[i]=s(e,i,r))}))},l=function(t,e){return n.isFunction(t)?t:n.isObject(t)&&!e._isModel(t)?c(t):n.isString(t)?function(e){return e.get(t)}:t},c=function(t){var e=n.matches(t);return function(t){return e(t.attributes)}},u=e.Events={},h=/\s+/,f=function(t,e,r,i,o){var s,a=0;if(r&&'object'==typeof r){void 0!==i&&'context'in o&&void 0===o.context&&(o.context=i);for(s=n.keys(r);athis.length&&(i=this.length),i<0&&(i+=this.length+1);var o,s,a=[],l=[],c=[],u=[],h={},f=e.add,d=e.merge,p=e.remove,g=!1,v=this.comparator&&null==i&&!1!==e.sort,m=n.isString(this.comparator)?this.comparator:null;for(s=0;s7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=('/'+this.root+'/').replace(R,'/'),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||'/';return this.location.replace(e+'#'+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement('iframe'),this.iframe.src='javascript:0',this.iframe.style.display='none',this.iframe.tabIndex=-1;var r=document.body,i=r.insertBefore(this.iframe,r.firstChild).contentWindow;i.document.open(),i.document.close(),i.location.hash='#'+this.fragment}var o=window.addEventListener||function(t,e){return attachEvent('on'+t,e)};if(this._usePushState?o('popstate',this.checkUrl,!1):this._useHashChange&&!this.iframe?o('hashchange',this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent('on'+t,e)};this._usePushState?t('popstate',this.checkUrl,!1):this._useHashChange&&!this.iframe&&t('hashchange',this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),A.started=!1},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe&&(e=this.getHash(this.iframe.contentWindow)),e===this.fragment)return!1;this.iframe&&this.navigate(e),this.loadUrl()},loadUrl:function(t){return!!this.matchRoot()&&(t=this.fragment=this.getFragment(t),n.some(this.handlers,(function(e){if(e.route.test(t))return e.callback(t),!0})))},navigate:function(t,e){if(!A.started)return!1;e&&!0!==e||(e={trigger:!!e}),t=this.getFragment(t||'');var n=this.root;''!==t&&'?'!==t.charAt(0)||(n=n.slice(0,-1)||'/');var r=n+t;if(t=this.decodeFragment(t.replace(N,'')),this.fragment!==t){if(this.fragment=t,this._usePushState)this.history[e.replace?'replaceState':'pushState']({},document.title,r);else{if(!this._wantsHashChange)return this.location.assign(r);if(this._updateHash(this.location,t,e.replace),this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var i=this.iframe.contentWindow;e.replace||(i.document.open(),i.document.close()),this._updateHash(i.location,t,e.replace)}}return e.trigger?this.loadUrl(t):void 0}},_updateHash:function(t,e,n){if(n){var r=t.href.replace(/(javascript:|#).*$/,'');t.replace(r+'#'+e)}else t.hash='#'+e}}),e.history=new A;var Z=function(t,e){var r,i=this;return r=t&&n.has(t,'constructor')?t.constructor:function(){return i.apply(this,arguments)},n.extend(r,i,e),r.prototype=n.create(i.prototype,t),r.prototype.constructor=r,r.__super__=i.prototype,r};b.extend=w.extend=T.extend=k.extend=A.extend=Z;var I=function(){throw new Error('A "url" property or function must be specified')},F=function(t,e){var n=e.error;e.error=function(r){n&&n.call(e.context,t,r,e),t.trigger('error',t,r,e)}};return e}(o,n,t,e)}.apply(e,r),void 0===i||(t.exports=i)},9210:(t,e,n)=>{!function(t){t.extendMode("css",{commentStart:"/*",commentEnd:"*/",newlineAfterToken:function(t,e){return/^[;{}]$/.test(e)}}),t.extendMode("javascript",{commentStart:"/*",commentEnd:"*/",newlineAfterToken:function(t,e,n,r){return this.jsonMode?/^[\[,{]$/.test(e)||/^}/.test(n):(";"!=e||!r.lexical||")"!=r.lexical.type)&&/^[;{}]$/.test(e)&&!/^;/.test(n)}});var e=/^(a|abbr|acronym|area|base|bdo|big|br|button|caption|cite|code|col|colgroup|dd|del|dfn|em|frame|hr|iframe|img|input|ins|kbd|label|legend|link|map|object|optgroup|option|param|q|samp|script|select|small|span|strong|sub|sup|textarea|tt|var)$/;t.extendMode("xml",{commentStart:"\x3c!--",commentEnd:"--\x3e",newlineAfterToken:function(t,n,r,i){var o=!1;return"html"==this.configuration&&(o=!!i.context&&e.test(i.context.tagName)),!o&&("tag"==t&&/>$/.test(n)&&i.context||/^-1&&a>-1&&a>s&&(t=t.substr(0,s)+t.substring(s+o.commentStart.length,a)+t.substr(a+o.commentEnd.length)),i.replaceRange(t,n,r)}}))})),t.defineExtension("autoIndentRange",(function(t,e){var n=this;this.operation((function(){for(var r=t.line;r<=e.line;r++)n.indentLine(r,"smart")}))})),t.defineExtension("autoFormatRange",(function(e,n){var r=this,i=r.getMode(),o=r.getRange(e,n).split("\n"),s=t.copyState(i,r.getTokenAt(e).state),a=r.getOption("tabSize"),l="",c=0,u=0===e.ch;function h(){l+="\n",u=!0,++c}for(var f=0;f2),v=/Android/.test(t),m=g||v||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(t),y=g||/Mac/.test(e),b=/\bCrOS\b/.test(t),w=/win/i.test(e),x=h&&t.match(/Version\/(\d*\.\d*)/);x&&(x=Number(x[1])),x&&x>=15&&(h=!1,l=!0);var O=y&&(c||h&&(null==x||x<12.11)),C=n||s&&a>=9;function k(t){return new RegExp("(^|\\s)"+t+"(?:$|\\s)\\s*")}var S,P=function(t,e){var n=t.className,r=k(e).exec(n);if(r){var i=n.slice(r.index+r[0].length);t.className=n.slice(0,r.index)+(i?r[1]+i:"")}};function _(t){for(var e=t.childNodes.length;e>0;--e)t.removeChild(t.firstChild);return t}function T(t,e){return _(t).appendChild(e)}function E(t,e,n,r){var i=document.createElement(t);if(n&&(i.className=n),r&&(i.style.cssText=r),"string"==typeof e)i.appendChild(document.createTextNode(e));else if(e)for(var o=0;o=e)return s+(e-o);s+=a-o,s+=n-s%n,o=a+1}}g?R=function(t){t.selectionStart=0,t.selectionEnd=t.value.length}:s&&(R=function(t){try{t.select()}catch(t){}});var F=function(){this.id=null,this.f=null,this.time=0,this.handler=N(this.onTimeout,this)};function V(t,e){for(var n=0;n=e)return r+Math.min(s,e-i);if(i+=o-r,r=o+1,(i+=n-i%n)>=e)return r}}var q=[""];function G(t){for(;q.length<=t;)q.push(K(q)+" ");return q[t]}function K(t){return t[t.length-1]}function Y(t,e){for(var n=[],r=0;r"€"&&(t.toUpperCase()!=t.toLowerCase()||tt.test(t))}function nt(t,e){return e?!!(e.source.indexOf("\\w")>-1&&et(t))||e.test(t):et(t)}function rt(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e])return!1;return!0}var it=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function ot(t){return t.charCodeAt(0)>=768&&it.test(t)}function st(t,e,n){for(;(n<0?e>0:en?-1:1;;){if(e==n)return e;var i=(e+n)/2,o=r<0?Math.ceil(i):Math.floor(i);if(o==e)return t(o)?e:n;t(o)?n=o:e=o+r}}function lt(t,e,n,r){if(!t)return r(e,n,"ltr",0);for(var i=!1,o=0;oe||e==n&&s.to==e)&&(r(Math.max(s.from,e),Math.min(s.to,n),1==s.level?"rtl":"ltr",o),i=!0)}i||r(e,n,"ltr")}var ct=null;function ut(t,e,n){var r;ct=null;for(var i=0;ie)return i;o.to==e&&(o.from!=o.to&&"before"==n?r=i:ct=i),o.from==e&&(o.from!=o.to&&"before"!=n?r=i:ct=i)}return null!=r?r:ct}var ht=function(){var t="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",e="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function n(n){return n<=247?t.charAt(n):1424<=n&&n<=1524?"R":1536<=n&&n<=1785?e.charAt(n-1536):1774<=n&&n<=2220?"r":8192<=n&&n<=8203?"w":8204==n?"b":"L"}var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,i=/[stwN]/,o=/[LRr]/,s=/[Lb1n]/,a=/[1n]/;function l(t,e,n){this.level=t,this.from=e,this.to=n}return function(t,e){var c="ltr"==e?"L":"R";if(0==t.length||"ltr"==e&&!r.test(t))return!1;for(var u=t.length,h=[],f=0;f-1&&(r[e]=i.slice(0,o).concat(i.slice(o+1)))}}}function mt(t,e){var n=gt(t,e);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i0}function xt(t){t.prototype.on=function(t,e){pt(this,t,e)},t.prototype.off=function(t,e){vt(this,t,e)}}function Ot(t){t.preventDefault?t.preventDefault():t.returnValue=!1}function Ct(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0}function kt(t){return null!=t.defaultPrevented?t.defaultPrevented:0==t.returnValue}function St(t){Ot(t),Ct(t)}function Pt(t){return t.target||t.srcElement}function _t(t){var e=t.which;return null==e&&(1&t.button?e=1:2&t.button?e=3:4&t.button&&(e=2)),y&&t.ctrlKey&&1==e&&(e=3),e}var Tt,Et,jt=function(){if(s&&a<9)return!1;var t=E('div');return"draggable"in t||"dragDrop"in t}();function Dt(t){if(null==Tt){var e=E("span","​");T(t,E("span",[e,document.createTextNode("x")])),0!=t.firstChild.offsetHeight&&(Tt=e.offsetWidth<=1&&e.offsetHeight>2&&!(s&&a<8))}var n=Tt?E("span","​"):E("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}function Mt(t){if(null!=Et)return Et;var e=T(t,document.createTextNode("AخA")),n=S(e,0,1).getBoundingClientRect(),r=S(e,1,2).getBoundingClientRect();return _(t),!(!n||n.left==n.right)&&(Et=r.right-n.right<3)}var At,Lt=3!="\n\nb".split(/\n/).length?function(t){for(var e=0,n=[],r=t.length;e<=r;){var i=t.indexOf("\n",e);-1==i&&(i=t.length);var o=t.slice(e,"\r"==t.charAt(i-1)?i-1:i),s=o.indexOf("\r");-1!=s?(n.push(o.slice(0,s)),e+=s+1):(n.push(o),e=i+1)}return n}:function(t){return t.split(/\r\n?|\n/)},Rt=window.getSelection?function(t){try{return t.selectionStart!=t.selectionEnd}catch(t){return!1}}:function(t){var e;try{e=t.ownerDocument.selection.createRange()}catch(t){}return!(!e||e.parentElement()!=t)&&0!=e.compareEndPoints("StartToEnd",e)},Nt="oncopy"in(At=E("div"))||(At.setAttribute("oncopy","return;"),"function"==typeof At.oncopy),Zt=null;function It(t){if(null!=Zt)return Zt;var e=T(t,E("span","x")),n=e.getBoundingClientRect(),r=S(e,0,1).getBoundingClientRect();return Zt=Math.abs(n.left-r.left)>1}var Ft={},Vt={};function Ht(t,e){arguments.length>2&&(e.dependencies=Array.prototype.slice.call(arguments,2)),Ft[t]=e}function Bt(t,e){Vt[t]=e}function zt(t){if("string"==typeof t&&Vt.hasOwnProperty(t))t=Vt[t];else if(t&&"string"==typeof t.name&&Vt.hasOwnProperty(t.name)){var e=Vt[t.name];"string"==typeof e&&(e={name:e}),(t=Q(e,t)).name=e.name}else{if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+xml$/.test(t))return zt("application/xml");if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+json$/.test(t))return zt("application/json")}return"string"==typeof t?{name:t}:t||{name:"null"}}function Ut(t,e){e=zt(e);var n=Ft[e.name];if(!n)return Ut(t,"text/plain");var r=n(t,e);if(Wt.hasOwnProperty(e.name)){var i=Wt[e.name];for(var o in i)i.hasOwnProperty(o)&&(r.hasOwnProperty(o)&&(r["_"+o]=r[o]),r[o]=i[o])}if(r.name=e.name,e.helperType&&(r.helperType=e.helperType),e.modeProps)for(var s in e.modeProps)r[s]=e.modeProps[s];return r}var Wt={};function $t(t,e){Z(e,Wt.hasOwnProperty(t)?Wt[t]:Wt[t]={})}function qt(t,e){if(!0===e)return e;if(t.copyState)return t.copyState(e);var n={};for(var r in e){var i=e[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n}function Gt(t,e){for(var n;t.innerMode&&(n=t.innerMode(e))&&n.mode!=t;)e=n.state,t=n.mode;return n||{mode:t,state:e}}function Kt(t,e,n){return!t.startState||t.startState(e,n)}var Yt=function(t,e,n){this.pos=this.start=0,this.string=t,this.tabSize=e||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};function Jt(t,e){if((e-=t.first)<0||e>=t.size)throw new Error("There is no line "+(e+t.first)+" in the document.");for(var n=t;!n.lines;)for(var r=0;;++r){var i=n.children[r],o=i.chunkSize();if(e=t.first&&en?oe(n,Jt(t,n).text.length):de(e,Jt(t,e.line).text.length)}function de(t,e){var n=t.ch;return null==n||n>e?oe(t.line,e):n<0?oe(t.line,0):t}function pe(t,e){for(var n=[],r=0;r=this.string.length},Yt.prototype.sol=function(){return this.pos==this.lineStart},Yt.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Yt.prototype.next=function(){if(this.pose},Yt.prototype.eatSpace=function(){for(var t=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t},Yt.prototype.skipToEnd=function(){this.pos=this.string.length},Yt.prototype.skipTo=function(t){var e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0},Yt.prototype.backUp=function(t){this.pos-=t},Yt.prototype.column=function(){return this.lastColumnPos0?null:(r&&!1!==e&&(this.pos+=r[0].length),r)}var i=function(t){return n?t.toLowerCase():t};if(i(this.string.substr(this.pos,t.length))==i(t))return!1!==e&&(this.pos+=t.length),!0},Yt.prototype.current=function(){return this.string.slice(this.start,this.pos)},Yt.prototype.hideFirstChars=function(t,e){this.lineStart+=t;try{return e()}finally{this.lineStart-=t}},Yt.prototype.lookAhead=function(t){var e=this.lineOracle;return e&&e.lookAhead(t)},Yt.prototype.baseToken=function(){var t=this.lineOracle;return t&&t.baseToken(this.pos)};var ge=function(t,e){this.state=t,this.lookAhead=e},ve=function(t,e,n,r){this.state=e,this.doc=t,this.line=n,this.maxLookAhead=r||0,this.baseTokens=null,this.baseTokenPos=1};function me(t,e,n,r){var i=[t.state.modeGen],o={};Pe(t,e.text,t.doc.mode,n,(function(t,e){return i.push(t,e)}),o,r);for(var s=n.state,a=function(r){n.baseTokens=i;var a=t.state.overlays[r],l=1,c=0;n.state=!0,Pe(t,e.text,a.mode,n,(function(t,e){for(var n=l;ct&&i.splice(l,1,t,i[l+1],r),l+=2,c=Math.min(t,r)}if(e)if(a.opaque)i.splice(n,l-n,t,"overlay "+e),l=n+2;else for(;nt.options.maxHighlightLength&&qt(t.doc.mode,r.state),o=me(t,e,r);i&&(r.state=i),e.stateAfter=r.save(!i),e.styles=o.styles,o.classes?e.styleClasses=o.classes:e.styleClasses&&(e.styleClasses=null),n===t.doc.highlightFrontier&&(t.doc.modeFrontier=Math.max(t.doc.modeFrontier,++t.doc.highlightFrontier))}return e.styles}function be(t,e,n){var r=t.doc,i=t.display;if(!r.mode.startState)return new ve(r,!0,e);var o=_e(t,e,n),s=o>r.first&&Jt(r,o-1).stateAfter,a=s?ve.fromSaved(r,s,o):new ve(r,Kt(r.mode),o);return r.iter(o,e,(function(n){we(t,n.text,a);var r=a.line;n.stateAfter=r==e-1||r%5==0||r>=i.viewFrom&&re.start)return o}throw new Error("Mode "+t.name+" failed to advance stream.")}ve.prototype.lookAhead=function(t){var e=this.doc.getLine(this.line+t);return null!=e&&t>this.maxLookAhead&&(this.maxLookAhead=t),e},ve.prototype.baseToken=function(t){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=t;)this.baseTokenPos+=2;var e=this.baseTokens[this.baseTokenPos+1];return{type:e&&e.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-t}},ve.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},ve.fromSaved=function(t,e,n){return e instanceof ge?new ve(t,qt(t.mode,e.state),n,e.lookAhead):new ve(t,qt(t.mode,e),n)},ve.prototype.save=function(t){var e=!1!==t?qt(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new ge(e,this.maxLookAhead):e};var Ce=function(t,e,n){this.start=t.start,this.end=t.pos,this.string=t.current(),this.type=e||null,this.state=n};function ke(t,e,n,r){var i,o,s=t.doc,a=s.mode,l=Jt(s,(e=fe(s,e)).line),c=be(t,e.line,n),u=new Yt(l.text,t.options.tabSize,c);for(r&&(o=[]);(r||u.post.options.maxHighlightLength?(a=!1,s&&we(t,e,r,h.pos),h.pos=e.length,l=null):l=Se(Oe(n,h,r.state,f),o),f){var d=f[0].name;d&&(l="m-"+(l?d+" "+l:d))}if(!a||u!=l){for(;cs;--a){if(a<=o.first)return o.first;var l=Jt(o,a-1),c=l.stateAfter;if(c&&(!n||a+(c instanceof ge?c.lookAhead:0)<=o.modeFrontier))return a;var u=I(l.text,null,t.options.tabSize);(null==i||r>u)&&(i=a-1,r=u)}return i}function Te(t,e){if(t.modeFrontier=Math.min(t.modeFrontier,e),!(t.highlightFrontiern;r--){var i=Jt(t,r).stateAfter;if(i&&(!(i instanceof ge)||r+i.lookAhead=e:o.to>e);(r||(r=[])).push(new Ae(s,o.from,a?null:o.to))}}return r}function Ie(t,e,n){var r;if(t)for(var i=0;i=e:o.to>e)||o.from==e&&"bookmark"==s.type&&(!n||o.marker.insertLeft)){var a=null==o.from||(s.inclusiveLeft?o.from<=e:o.from0&&a)for(var b=0;b0)){var u=[l,1],h=se(c.from,a.from),f=se(c.to,a.to);(h<0||!s.inclusiveLeft&&!h)&&u.push({from:c.from,to:a.from}),(f>0||!s.inclusiveRight&&!f)&&u.push({from:a.to,to:c.to}),i.splice.apply(i,u),l+=u.length-3}}return i}function Be(t){var e=t.markedSpans;if(e){for(var n=0;ne)&&(!n||$e(n,o.marker)<0)&&(n=o.marker)}return n}function Je(t,e,n,r,i){var o=Jt(t,e),s=je&&o.markedSpans;if(s)for(var a=0;a=0&&h<=0||u<=0&&h>=0)&&(u<=0&&(l.marker.inclusiveRight&&i.inclusiveLeft?se(c.to,n)>=0:se(c.to,n)>0)||u>=0&&(l.marker.inclusiveRight&&i.inclusiveLeft?se(c.from,r)<=0:se(c.from,r)<0)))return!0}}}function Xe(t){for(var e;e=Ge(t);)t=e.find(-1,!0).line;return t}function Qe(t){for(var e;e=Ke(t);)t=e.find(1,!0).line;return t}function tn(t){for(var e,n;e=Ke(t);)t=e.find(1,!0).line,(n||(n=[])).push(t);return n}function en(t,e){var n=Jt(t,e),r=Xe(n);return n==r?e:ee(r)}function nn(t,e){if(e>t.lastLine())return e;var n,r=Jt(t,e);if(!rn(t,r))return e;for(;n=Ke(r);)r=n.find(1,!0).line;return ee(r)+1}function rn(t,e){var n=je&&e.markedSpans;if(n)for(var r=void 0,i=0;ie.maxLineLength&&(e.maxLineLength=n,e.maxLine=t)}))}var cn=function(t,e,n){this.text=t,ze(this,e),this.height=n?n(this):1};function un(t,e,n,r){t.text=e,t.stateAfter&&(t.stateAfter=null),t.styles&&(t.styles=null),null!=t.order&&(t.order=null),Be(t),ze(t,n);var i=r?r(t):1;i!=t.height&&te(t,i)}function hn(t){t.parent=null,Be(t)}cn.prototype.lineNo=function(){return ee(this)},xt(cn);var fn={},dn={};function pn(t,e){if(!t||/^\s*$/.test(t))return null;var n=e.addModeClass?dn:fn;return n[t]||(n[t]=t.replace(/\S+/g,"cm-$&"))}function gn(t,e){var n=j("span",null,null,l?"padding-right: .1px":null),r={pre:j("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:t,trailingSpace:!1,splitSpaces:t.getOption("lineWrapping")};e.measure={};for(var i=0;i<=(e.rest?e.rest.length:0);i++){var o=i?e.rest[i-1]:e.line,s=void 0;r.pos=0,r.addToken=mn,Mt(t.display.measure)&&(s=ft(o,t.doc.direction))&&(r.addToken=bn(r.addToken,s)),r.map=[],xn(o,r,ye(t,o,e!=t.display.externalMeasured&&ee(o))),o.styleClasses&&(o.styleClasses.bgClass&&(r.bgClass=L(o.styleClasses.bgClass,r.bgClass||"")),o.styleClasses.textClass&&(r.textClass=L(o.styleClasses.textClass,r.textClass||""))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(Dt(t.display.measure))),0==i?(e.measure.map=r.map,e.measure.cache={}):((e.measure.maps||(e.measure.maps=[])).push(r.map),(e.measure.caches||(e.measure.caches=[])).push({}))}if(l){var a=r.content.lastChild;(/\bcm-tab\b/.test(a.className)||a.querySelector&&a.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return mt(t,"renderLine",t,e.line,r.pre),r.pre.className&&(r.textClass=L(r.pre.className,r.textClass||"")),r}function vn(t){var e=E("span","•","cm-invalidchar");return e.title="\\u"+t.charCodeAt(0).toString(16),e.setAttribute("aria-label",e.title),e}function mn(t,e,n,r,i,o,l){if(e){var c,u=t.splitSpaces?yn(e,t.trailingSpace):e,h=t.cm.state.specialChars,f=!1;if(h.test(e)){c=document.createDocumentFragment();for(var d=0;;){h.lastIndex=d;var p=h.exec(e),g=p?p.index-d:e.length-d;if(g){var v=document.createTextNode(u.slice(d,d+g));s&&a<9?c.appendChild(E("span",[v])):c.appendChild(v),t.map.push(t.pos,t.pos+g,v),t.col+=g,t.pos+=g}if(!p)break;d+=g+1;var m=void 0;if("\t"==p[0]){var y=t.cm.options.tabSize,b=y-t.col%y;(m=c.appendChild(E("span",G(b),"cm-tab"))).setAttribute("role","presentation"),m.setAttribute("cm-text","\t"),t.col+=b}else"\r"==p[0]||"\n"==p[0]?((m=c.appendChild(E("span","\r"==p[0]?"␍":"␤","cm-invalidchar"))).setAttribute("cm-text",p[0]),t.col+=1):((m=t.cm.options.specialCharPlaceholder(p[0])).setAttribute("cm-text",p[0]),s&&a<9?c.appendChild(E("span",[m])):c.appendChild(m),t.col+=1);t.map.push(t.pos,t.pos+1,m),t.pos++}}else t.col+=e.length,c=document.createTextNode(u),t.map.push(t.pos,t.pos+e.length,c),s&&a<9&&(f=!0),t.pos+=e.length;if(t.trailingSpace=32==u.charCodeAt(e.length-1),n||r||i||f||o||l){var w=n||"";r&&(w+=r),i&&(w+=i);var x=E("span",[c],w,o);if(l)for(var O in l)l.hasOwnProperty(O)&&"style"!=O&&"class"!=O&&x.setAttribute(O,l[O]);return t.content.appendChild(x)}t.content.appendChild(c)}}function yn(t,e){if(t.length>1&&!/ /.test(t))return t;for(var n=e,r="",i=0;ic&&h.from<=c);f++);if(h.to>=u)return t(n,r,i,o,s,a,l);t(n,r.slice(0,h.to-c),i,o,null,a,l),o=null,r=r.slice(h.to-c),c=h.to}}}function wn(t,e,n,r){var i=!r&&n.widgetNode;i&&t.map.push(t.pos,t.pos+e,i),!r&&t.cm.display.input.needsContentAttribute&&(i||(i=t.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",n.id)),i&&(t.cm.display.input.setUneditable(i),t.content.appendChild(i)),t.pos+=e,t.trailingSpace=!1}function xn(t,e,n){var r=t.markedSpans,i=t.text,o=0;if(r)for(var s,a,l,c,u,h,f,d=i.length,p=0,g=1,v="",m=0;;){if(m==p){l=c=u=a="",f=null,h=null,m=1/0;for(var y=[],b=void 0,w=0;wp||O.collapsed&&x.to==p&&x.from==p)){if(null!=x.to&&x.to!=p&&m>x.to&&(m=x.to,c=""),O.className&&(l+=" "+O.className),O.css&&(a=(a?a+";":"")+O.css),O.startStyle&&x.from==p&&(u+=" "+O.startStyle),O.endStyle&&x.to==m&&(b||(b=[])).push(O.endStyle,x.to),O.title&&((f||(f={})).title=O.title),O.attributes)for(var C in O.attributes)(f||(f={}))[C]=O.attributes[C];O.collapsed&&(!h||$e(h.marker,O)<0)&&(h=x)}else x.from>p&&m>x.from&&(m=x.from)}if(b)for(var k=0;k=d)break;for(var P=Math.min(d,m);;){if(v){var _=p+v.length;if(!h){var T=_>P?v.slice(0,P-p):v;e.addToken(e,T,s?s+l:l,u,p+T.length==m?c:"",a,f)}if(_>=P){v=v.slice(P-p),p=P;break}p=_,u=""}v=i.slice(o,o=n[g++]),s=pn(n[g++],e.cm.options)}}else for(var E=1;E2&&o.push((l.bottom+c.top)/2-n.top)}}o.push(n.bottom-n.top)}}function Xn(t,e,n){if(t.line==e)return{map:t.measure.map,cache:t.measure.cache};for(var r=0;rn)return{map:t.measure.maps[i],cache:t.measure.caches[i],before:!0}}function Qn(t,e){var n=ee(e=Xe(e)),r=t.display.externalMeasured=new On(t.doc,e,n);r.lineN=n;var i=r.built=gn(t,r);return r.text=i.pre,T(t.display.lineMeasure,i.pre),r}function tr(t,e,n,r){return rr(t,nr(t,e),n,r)}function er(t,e){if(e>=t.display.viewFrom&&e=n.lineN&&ee)&&(i=(o=l-a)-1,e>=l&&(s="right")),null!=i){if(r=t[c+2],a==l&&n==(r.insertLeft?"left":"right")&&(s=n),"left"==n&&0==i)for(;c&&t[c-2]==t[c-3]&&t[c-1].insertLeft;)r=t[2+(c-=3)],s="left";if("right"==n&&i==l-a)for(;c=0&&(n=t[i]).left==n.right;i--);return n}function lr(t,e,n,r){var i,o=sr(e.map,n,r),l=o.node,c=o.start,u=o.end,h=o.collapse;if(3==l.nodeType){for(var f=0;f<4;f++){for(;c&&ot(e.line.text.charAt(o.coverStart+c));)--c;for(;o.coverStart+u0&&(h=r="right"),i=t.options.lineWrapping&&(d=l.getClientRects()).length>1?d["right"==r?d.length-1:0]:l.getBoundingClientRect()}if(s&&a<9&&!c&&(!i||!i.left&&!i.right)){var p=l.parentNode.getClientRects()[0];i=p?{left:p.left,right:p.left+jr(t.display),top:p.top,bottom:p.bottom}:or}for(var g=i.top-e.rect.top,v=i.bottom-e.rect.top,m=(g+v)/2,y=e.view.measure.heights,b=0;b=r.text.length?(l=r.text.length,c="before"):l<=0&&(l=0,c="after"),!a)return s("before"==c?l-1:l,"before"==c);function u(t,e,n){return s(n?t-1:t,1==a[e].level!=n)}var h=ut(a,l,c),f=ct,d=u(l,h,"before"==c);return null!=f&&(d.other=u(l,f,"before"!=c)),d}function wr(t,e){var n=0;e=fe(t.doc,e),t.options.lineWrapping||(n=jr(t.display)*e.ch);var r=Jt(t.doc,e.line),i=sn(r)+Wn(t.display);return{left:n,right:n,top:i,bottom:i+r.height}}function xr(t,e,n,r,i){var o=oe(t,e,n);return o.xRel=i,r&&(o.outside=r),o}function Or(t,e,n){var r=t.doc;if((n+=t.display.viewOffset)<0)return xr(r.first,0,null,-1,-1);var i=ne(r,n),o=r.first+r.size-1;if(i>o)return xr(r.first+r.size-1,Jt(r,o).text.length,null,1,1);e<0&&(e=0);for(var s=Jt(r,i);;){var a=Pr(t,s,i,e,n),l=Ye(s,a.ch+(a.xRel>0||a.outside>0?1:0));if(!l)return a;var c=l.find(1);if(c.line==i)return c;s=Jt(r,i=c.line)}}function Cr(t,e,n,r){r-=gr(e);var i=e.text.length,o=at((function(e){return rr(t,n,e-1).bottom<=r}),i,0);return{begin:o,end:i=at((function(e){return rr(t,n,e).top>r}),o,i)}}function kr(t,e,n,r){return n||(n=nr(t,e)),Cr(t,e,n,vr(t,e,rr(t,n,r),"line").top)}function Sr(t,e,n,r){return!(t.bottom<=n)&&(t.top>n||(r?t.left:t.right)>e)}function Pr(t,e,n,r,i){i-=sn(e);var o=nr(t,e),s=gr(e),a=0,l=e.text.length,c=!0,u=ft(e,t.doc.direction);if(u){var h=(t.options.lineWrapping?Tr:_r)(t,e,n,o,u,r,i);a=(c=1!=h.level)?h.from:h.to-1,l=c?h.to:h.from-1}var f,d,p=null,g=null,v=at((function(e){var n=rr(t,o,e);return n.top+=s,n.bottom+=s,!!Sr(n,r,i,!1)&&(n.top<=i&&n.left<=r&&(p=e,g=n),!0)}),a,l),m=!1;if(g){var y=r-g.left=w.bottom?1:0}return xr(n,v=st(e.text,v,1),d,m,r-f)}function _r(t,e,n,r,i,o,s){var a=at((function(a){var l=i[a],c=1!=l.level;return Sr(br(t,oe(n,c?l.to:l.from,c?"before":"after"),"line",e,r),o,s,!0)}),0,i.length-1),l=i[a];if(a>0){var c=1!=l.level,u=br(t,oe(n,c?l.from:l.to,c?"after":"before"),"line",e,r);Sr(u,o,s,!0)&&u.top>s&&(l=i[a-1])}return l}function Tr(t,e,n,r,i,o,s){var a=Cr(t,e,r,s),l=a.begin,c=a.end;/\s/.test(e.text.charAt(c-1))&&c--;for(var u=null,h=null,f=0;f=c||d.to<=l)){var p=rr(t,r,1!=d.level?Math.min(c,d.to)-1:Math.max(l,d.from)).right,g=pg)&&(u=d,h=g)}}return u||(u=i[i.length-1]),u.fromc&&(u={from:u.from,to:c,level:u.level}),u}function Er(t){if(null!=t.cachedTextHeight)return t.cachedTextHeight;if(null==ir){ir=E("pre",null,"CodeMirror-line-like");for(var e=0;e<49;++e)ir.appendChild(document.createTextNode("x")),ir.appendChild(E("br"));ir.appendChild(document.createTextNode("x"))}T(t.measure,ir);var n=ir.offsetHeight/50;return n>3&&(t.cachedTextHeight=n),_(t.measure),n||1}function jr(t){if(null!=t.cachedCharWidth)return t.cachedCharWidth;var e=E("span","xxxxxxxxxx"),n=E("pre",[e],"CodeMirror-line-like");T(t.measure,n);var r=e.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(t.cachedCharWidth=i),i||10}function Dr(t){for(var e=t.display,n={},r={},i=e.gutters.clientLeft,o=e.gutters.firstChild,s=0;o;o=o.nextSibling,++s){var a=t.display.gutterSpecs[s].className;n[a]=o.offsetLeft+o.clientLeft+i,r[a]=o.clientWidth}return{fixedPos:Mr(e),gutterTotalWidth:e.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:e.wrapper.clientWidth}}function Mr(t){return t.scroller.getBoundingClientRect().left-t.sizer.getBoundingClientRect().left}function Ar(t){var e=Er(t.display),n=t.options.lineWrapping,r=n&&Math.max(5,t.display.scroller.clientWidth/jr(t.display)-3);return function(i){if(rn(t.doc,i))return 0;var o=0;if(i.widgets)for(var s=0;s0&&(l=Jt(t.doc,c.line).text).length==c.ch){var u=I(l,l.length,t.options.tabSize)-l.length;c=oe(c.line,Math.max(0,Math.round((o-qn(t.display).left)/jr(t.display))-u))}return c}function Nr(t,e){if(e>=t.display.viewTo)return null;if((e-=t.display.viewFrom)<0)return null;for(var n=t.display.view,r=0;re)&&(i.updateLineNumbers=e),t.curOp.viewChanged=!0,e>=i.viewTo)je&&en(t.doc,e)i.viewFrom?Fr(t):(i.viewFrom+=r,i.viewTo+=r);else if(e<=i.viewFrom&&n>=i.viewTo)Fr(t);else if(e<=i.viewFrom){var o=Vr(t,n,n+r,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=r):Fr(t)}else if(n>=i.viewTo){var s=Vr(t,e,e,-1);s?(i.view=i.view.slice(0,s.index),i.viewTo=s.lineN):Fr(t)}else{var a=Vr(t,e,e,-1),l=Vr(t,n,n+r,1);a&&l?(i.view=i.view.slice(0,a.index).concat(Cn(t,a.lineN,l.lineN)).concat(i.view.slice(l.index)),i.viewTo+=r):Fr(t)}var c=i.externalMeasured;c&&(n=i.lineN&&e=r.viewTo)){var o=r.view[Nr(t,e)];if(null!=o.node){var s=o.changes||(o.changes=[]);-1==V(s,n)&&s.push(n)}}}function Fr(t){t.display.viewFrom=t.display.viewTo=t.doc.first,t.display.view=[],t.display.viewOffset=0}function Vr(t,e,n,r){var i,o=Nr(t,e),s=t.display.view;if(!je||n==t.doc.first+t.doc.size)return{index:o,lineN:n};for(var a=t.display.viewFrom,l=0;l0){if(o==s.length-1)return null;i=a+s[o].size-e,o++}else i=a-e;e+=i,n+=i}for(;en(t.doc,n)!=n;){if(o==(r<0?0:s.length-1))return null;n+=r*s[o-(r<0?1:0)].size,o+=r}return{index:o,lineN:n}}function Hr(t,e,n){var r=t.display;0==r.view.length||e>=r.viewTo||n<=r.viewFrom?(r.view=Cn(t,e,n),r.viewFrom=e):(r.viewFrom>e?r.view=Cn(t,e,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,Nr(t,n)))),r.viewTo=n}function Br(t){for(var e=t.display.view,n=0,r=0;r=t.display.viewTo||a.to().line0&&(i.style.width=o.right-o.left+"px")}if(r.other){var s=n.appendChild(E("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));s.style.display="",s.style.left=r.other.left+"px",s.style.top=r.other.top+"px",s.style.height=.85*(r.other.bottom-r.other.top)+"px"}}function $r(t,e){return t.top-e.top||t.left-e.left}function qr(t,e,n){var r=t.display,i=t.doc,o=document.createDocumentFragment(),s=qn(t.display),a=s.left,l=Math.max(r.sizerWidth,Kn(t)-r.sizer.offsetLeft)-s.right,c="ltr"==i.direction;function u(t,e,n,r){e<0&&(e=0),e=Math.round(e),r=Math.round(r),o.appendChild(E("div",null,"CodeMirror-selected","position: absolute; left: "+t+"px;\n top: "+e+"px; width: "+(null==n?l-t:n)+"px;\n height: "+(r-e)+"px"))}function h(e,n,r){var o,s,h=Jt(i,e),f=h.text.length;function d(n,r){return yr(t,oe(e,n),"div",h,r)}function p(e,n,r){var i=kr(t,h,null,e),o="ltr"==n==("after"==r)?"left":"right";return d("after"==r?i.begin:i.end-(/\s/.test(h.text.charAt(i.end-1))?2:1),o)[o]}var g=ft(h,i.direction);return lt(g,n||0,null==r?f:r,(function(t,e,i,h){var v="ltr"==i,m=d(t,v?"left":"right"),y=d(e-1,v?"right":"left"),b=null==n&&0==t,w=null==r&&e==f,x=0==h,O=!g||h==g.length-1;if(y.top-m.top<=3){var C=(c?w:b)&&O,k=(c?b:w)&&x?a:(v?m:y).left,S=C?l:(v?y:m).right;u(k,m.top,S-k,m.bottom)}else{var P,_,T,E;v?(P=c&&b&&x?a:m.left,_=c?l:p(t,i,"before"),T=c?a:p(e,i,"after"),E=c&&w&&O?l:y.right):(P=c?p(t,i,"before"):a,_=!c&&b&&x?l:m.right,T=!c&&w&&O?a:y.left,E=c?p(e,i,"after"):l),u(P,m.top,_-P,m.bottom),m.bottom0?e.blinker=setInterval((function(){t.hasFocus()||Xr(t),e.cursorDiv.style.visibility=(n=!n)?"":"hidden"}),t.options.cursorBlinkRate):t.options.cursorBlinkRate<0&&(e.cursorDiv.style.visibility="hidden")}}function Kr(t){t.hasFocus()||(t.display.input.focus(),t.state.focused||Jr(t))}function Yr(t){t.state.delayingBlurEvent=!0,setTimeout((function(){t.state.delayingBlurEvent&&(t.state.delayingBlurEvent=!1,t.state.focused&&Xr(t))}),100)}function Jr(t,e){t.state.delayingBlurEvent&&!t.state.draggingText&&(t.state.delayingBlurEvent=!1),"nocursor"!=t.options.readOnly&&(t.state.focused||(mt(t,"focus",t,e),t.state.focused=!0,A(t.display.wrapper,"CodeMirror-focused"),t.curOp||t.display.selForContextMenu==t.doc.sel||(t.display.input.reset(),l&&setTimeout((function(){return t.display.input.reset(!0)}),20)),t.display.input.receivedFocus()),Gr(t))}function Xr(t,e){t.state.delayingBlurEvent||(t.state.focused&&(mt(t,"blur",t,e),t.state.focused=!1,P(t.display.wrapper,"CodeMirror-focused")),clearInterval(t.display.blinker),setTimeout((function(){t.state.focused||(t.display.shift=!1)}),150))}function Qr(t){for(var e=t.display,n=e.lineDiv.offsetTop,r=Math.max(0,e.scroller.getBoundingClientRect().top),i=e.lineDiv.getBoundingClientRect().top,o=0,l=0;l.005||g<-.005)&&(it.display.sizerWidth){var m=Math.ceil(f/jr(t.display));m>t.display.maxLineLength&&(t.display.maxLineLength=m,t.display.maxLine=c.line,t.display.maxLineChanged=!0)}}}Math.abs(o)>2&&(e.scroller.scrollTop+=o)}function ti(t){if(t.widgets)for(var e=0;e=s&&(o=ne(e,sn(Jt(e,l))-t.wrapper.clientHeight),s=l)}return{from:o,to:Math.max(s,o+1)}}function ni(t,e){if(!yt(t,"scrollCursorIntoView")){var n=t.display,r=n.sizer.getBoundingClientRect(),i=null;if(e.top+r.top<0?i=!0:e.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!p){var o=E("div","​",null,"position: absolute;\n top: "+(e.top-n.viewOffset-Wn(t.display))+"px;\n height: "+(e.bottom-e.top+Gn(t)+n.barHeight)+"px;\n left: "+e.left+"px; width: "+Math.max(2,e.right-e.left)+"px;");t.display.lineSpace.appendChild(o),o.scrollIntoView(i),t.display.lineSpace.removeChild(o)}}}function ri(t,e,n,r){var i;null==r&&(r=0),t.options.lineWrapping||e!=n||(n="before"==e.sticky?oe(e.line,e.ch+1,"before"):e,e=e.ch?oe(e.line,"before"==e.sticky?e.ch-1:e.ch,"after"):e);for(var o=0;o<5;o++){var s=!1,a=br(t,e),l=n&&n!=e?br(t,n):a,c=oi(t,i={left:Math.min(a.left,l.left),top:Math.min(a.top,l.top)-r,right:Math.max(a.left,l.left),bottom:Math.max(a.bottom,l.bottom)+r}),u=t.doc.scrollTop,h=t.doc.scrollLeft;if(null!=c.scrollTop&&(fi(t,c.scrollTop),Math.abs(t.doc.scrollTop-u)>1&&(s=!0)),null!=c.scrollLeft&&(pi(t,c.scrollLeft),Math.abs(t.doc.scrollLeft-h)>1&&(s=!0)),!s)break}return i}function ii(t,e){var n=oi(t,e);null!=n.scrollTop&&fi(t,n.scrollTop),null!=n.scrollLeft&&pi(t,n.scrollLeft)}function oi(t,e){var n=t.display,r=Er(t.display);e.top<0&&(e.top=0);var i=t.curOp&&null!=t.curOp.scrollTop?t.curOp.scrollTop:n.scroller.scrollTop,o=Yn(t),s={};e.bottom-e.top>o&&(e.bottom=e.top+o);var a=t.doc.height+$n(n),l=e.topa-r;if(e.topi+o){var u=Math.min(e.top,(c?a:e.bottom)-o);u!=i&&(s.scrollTop=u)}var h=t.options.fixedGutter?0:n.gutters.offsetWidth,f=t.curOp&&null!=t.curOp.scrollLeft?t.curOp.scrollLeft:n.scroller.scrollLeft-h,d=Kn(t)-n.gutters.offsetWidth,p=e.right-e.left>d;return p&&(e.right=e.left+d),e.left<10?s.scrollLeft=0:e.leftd+f-3&&(s.scrollLeft=e.right+(p?0:10)-d),s}function si(t,e){null!=e&&(ui(t),t.curOp.scrollTop=(null==t.curOp.scrollTop?t.doc.scrollTop:t.curOp.scrollTop)+e)}function ai(t){ui(t);var e=t.getCursor();t.curOp.scrollToPos={from:e,to:e,margin:t.options.cursorScrollMargin}}function li(t,e,n){null==e&&null==n||ui(t),null!=e&&(t.curOp.scrollLeft=e),null!=n&&(t.curOp.scrollTop=n)}function ci(t,e){ui(t),t.curOp.scrollToPos=e}function ui(t){var e=t.curOp.scrollToPos;e&&(t.curOp.scrollToPos=null,hi(t,wr(t,e.from),wr(t,e.to),e.margin))}function hi(t,e,n,r){var i=oi(t,{left:Math.min(e.left,n.left),top:Math.min(e.top,n.top)-r,right:Math.max(e.right,n.right),bottom:Math.max(e.bottom,n.bottom)+r});li(t,i.scrollLeft,i.scrollTop)}function fi(t,e){Math.abs(t.doc.scrollTop-e)<2||(n||zi(t,{top:e}),di(t,e,!0),n&&zi(t),Ri(t,100))}function di(t,e,n){e=Math.max(0,Math.min(t.display.scroller.scrollHeight-t.display.scroller.clientHeight,e)),(t.display.scroller.scrollTop!=e||n)&&(t.doc.scrollTop=e,t.display.scrollbars.setScrollTop(e),t.display.scroller.scrollTop!=e&&(t.display.scroller.scrollTop=e))}function pi(t,e,n,r){e=Math.max(0,Math.min(e,t.display.scroller.scrollWidth-t.display.scroller.clientWidth)),(n?e==t.doc.scrollLeft:Math.abs(t.doc.scrollLeft-e)<2)&&!r||(t.doc.scrollLeft=e,qi(t),t.display.scroller.scrollLeft!=e&&(t.display.scroller.scrollLeft=e),t.display.scrollbars.setScrollLeft(e))}function gi(t){var e=t.display,n=e.gutters.offsetWidth,r=Math.round(t.doc.height+$n(t.display));return{clientHeight:e.scroller.clientHeight,viewHeight:e.wrapper.clientHeight,scrollWidth:e.scroller.scrollWidth,clientWidth:e.scroller.clientWidth,viewWidth:e.wrapper.clientWidth,barLeft:t.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+Gn(t)+e.barHeight,nativeBarWidth:e.nativeBarWidth,gutterWidth:n}}var vi=function(t,e,n){this.cm=n;var r=this.vert=E("div",[E("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=E("div",[E("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=i.tabIndex=-1,t(r),t(i),pt(r,"scroll",(function(){r.clientHeight&&e(r.scrollTop,"vertical")})),pt(i,"scroll",(function(){i.clientWidth&&e(i.scrollLeft,"horizontal")})),this.checkedZeroWidth=!1,s&&a<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};vi.prototype.update=function(t){var e=t.scrollWidth>t.clientWidth+1,n=t.scrollHeight>t.clientHeight+1,r=t.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=e?r+"px":"0";var i=t.viewHeight-(e?r:0);this.vert.firstChild.style.height=Math.max(0,t.scrollHeight-t.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(e){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=t.barLeft+"px";var o=t.viewWidth-t.barLeft-(n?r:0);this.horiz.firstChild.style.width=Math.max(0,t.scrollWidth-t.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&t.clientHeight>0&&(0==r&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:e?r:0}},vi.prototype.setScrollLeft=function(t){this.horiz.scrollLeft!=t&&(this.horiz.scrollLeft=t),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},vi.prototype.setScrollTop=function(t){this.vert.scrollTop!=t&&(this.vert.scrollTop=t),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},vi.prototype.zeroWidthHack=function(){var t=y&&!d?"12px":"18px";this.horiz.style.height=this.vert.style.width=t,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new F,this.disableVert=new F},vi.prototype.enableZeroWidthBar=function(t,e,n){function r(){var i=t.getBoundingClientRect();("vert"==n?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=t?t.style.pointerEvents="none":e.set(1e3,r)}t.style.pointerEvents="auto",e.set(1e3,r)},vi.prototype.clear=function(){var t=this.horiz.parentNode;t.removeChild(this.horiz),t.removeChild(this.vert)};var mi=function(){};function yi(t,e){e||(e=gi(t));var n=t.display.barWidth,r=t.display.barHeight;bi(t,e);for(var i=0;i<4&&n!=t.display.barWidth||r!=t.display.barHeight;i++)n!=t.display.barWidth&&t.options.lineWrapping&&Qr(t),bi(t,gi(t)),n=t.display.barWidth,r=t.display.barHeight}function bi(t,e){var n=t.display,r=n.scrollbars.update(e);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&t.options.coverGutterNextToScrollbar&&t.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=e.gutterWidth+"px"):n.gutterFiller.style.display=""}mi.prototype.update=function(){return{bottom:0,right:0}},mi.prototype.setScrollLeft=function(){},mi.prototype.setScrollTop=function(){},mi.prototype.clear=function(){};var wi={native:vi,null:mi};function xi(t){t.display.scrollbars&&(t.display.scrollbars.clear(),t.display.scrollbars.addClass&&P(t.display.wrapper,t.display.scrollbars.addClass)),t.display.scrollbars=new wi[t.options.scrollbarStyle]((function(e){t.display.wrapper.insertBefore(e,t.display.scrollbarFiller),pt(e,"mousedown",(function(){t.state.focused&&setTimeout((function(){return t.display.input.focus()}),0)})),e.setAttribute("cm-not-content","true")}),(function(e,n){"horizontal"==n?pi(t,e):fi(t,e)}),t),t.display.scrollbars.addClass&&A(t.display.wrapper,t.display.scrollbars.addClass)}var Oi=0;function Ci(t){t.curOp={cm:t,viewChanged:!1,startHeight:t.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Oi,markArrays:null},Sn(t.curOp)}function ki(t){var e=t.curOp;e&&_n(e,(function(t){for(var e=0;e=n.viewTo)||n.maxLineChanged&&e.options.lineWrapping,t.update=t.mustUpdate&&new Zi(e,t.mustUpdate&&{top:t.scrollTop,ensure:t.scrollToPos},t.forceUpdate)}function _i(t){t.updatedDisplay=t.mustUpdate&&Hi(t.cm,t.update)}function Ti(t){var e=t.cm,n=e.display;t.updatedDisplay&&Qr(e),t.barMeasure=gi(e),n.maxLineChanged&&!e.options.lineWrapping&&(t.adjustWidthTo=tr(e,n.maxLine,n.maxLine.text.length).left+3,e.display.sizerWidth=t.adjustWidthTo,t.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+t.adjustWidthTo+Gn(e)+e.display.barWidth),t.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+t.adjustWidthTo-Kn(e))),(t.updatedDisplay||t.selectionChanged)&&(t.preparedSelection=n.input.prepareSelection())}function Ei(t){var e=t.cm;null!=t.adjustWidthTo&&(e.display.sizer.style.minWidth=t.adjustWidthTo+"px",t.maxScrollLeft=t.display.viewTo)){var n=+new Date+t.options.workTime,r=be(t,e.highlightFrontier),i=[];e.iter(r.line,Math.min(e.first+e.size,t.display.viewTo+500),(function(o){if(r.line>=t.display.viewFrom){var s=o.styles,a=o.text.length>t.options.maxHighlightLength?qt(e.mode,r.state):null,l=me(t,o,r,!0);a&&(r.state=a),o.styles=l.styles;var c=o.styleClasses,u=l.classes;u?o.styleClasses=u:c&&(o.styleClasses=null);for(var h=!s||s.length!=o.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),f=0;!h&&fn)return Ri(t,t.options.workDelay),!0})),e.highlightFrontier=r.line,e.modeFrontier=Math.max(e.modeFrontier,r.line),i.length&&Di(t,(function(){for(var e=0;e=n.viewFrom&&e.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==Br(t))return!1;Gi(t)&&(Fr(t),e.dims=Dr(t));var i=r.first+r.size,o=Math.max(e.visible.from-t.options.viewportMargin,r.first),s=Math.min(i,e.visible.to+t.options.viewportMargin);n.viewFroms&&n.viewTo-s<20&&(s=Math.min(i,n.viewTo)),je&&(o=en(t.doc,o),s=nn(t.doc,s));var a=o!=n.viewFrom||s!=n.viewTo||n.lastWrapHeight!=e.wrapperHeight||n.lastWrapWidth!=e.wrapperWidth;Hr(t,o,s),n.viewOffset=sn(Jt(t.doc,n.viewFrom)),t.display.mover.style.top=n.viewOffset+"px";var l=Br(t);if(!a&&0==l&&!e.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;var c=Fi(t);return l>4&&(n.lineDiv.style.display="none"),Ui(t,n.updateLineNumbers,e.dims),l>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,Vi(c),_(n.cursorDiv),_(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,a&&(n.lastWrapHeight=e.wrapperHeight,n.lastWrapWidth=e.wrapperWidth,Ri(t,400)),n.updateLineNumbers=null,!0}function Bi(t,e){for(var n=e.viewport,r=!0;;r=!1){if(r&&t.options.lineWrapping&&e.oldDisplayWidth!=Kn(t))r&&(e.visible=ei(t.display,t.doc,n));else if(n&&null!=n.top&&(n={top:Math.min(t.doc.height+$n(t.display)-Yn(t),n.top)}),e.visible=ei(t.display,t.doc,n),e.visible.from>=t.display.viewFrom&&e.visible.to<=t.display.viewTo)break;if(!Hi(t,e))break;Qr(t);var i=gi(t);zr(t),yi(t,i),$i(t,i),e.force=!1}e.signal(t,"update",t),t.display.viewFrom==t.display.reportedViewFrom&&t.display.viewTo==t.display.reportedViewTo||(e.signal(t,"viewportChange",t,t.display.viewFrom,t.display.viewTo),t.display.reportedViewFrom=t.display.viewFrom,t.display.reportedViewTo=t.display.viewTo)}function zi(t,e){var n=new Zi(t,e);if(Hi(t,n)){Qr(t),Bi(t,n);var r=gi(t);zr(t),yi(t,r),$i(t,r),n.finish()}}function Ui(t,e,n){var r=t.display,i=t.options.lineNumbers,o=r.lineDiv,s=o.firstChild;function a(e){var n=e.nextSibling;return l&&y&&t.display.currentWheelTarget==e?e.style.display="none":e.parentNode.removeChild(e),n}for(var c=r.view,u=r.viewFrom,h=0;h-1&&(d=!1),Dn(t,f,u,n)),d&&(_(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(ie(t.options,u)))),s=f.node.nextSibling}else{var p=Fn(t,f,u,n);o.insertBefore(p,s)}u+=f.size}for(;s;)s=a(s)}function Wi(t){var e=t.gutters.offsetWidth;t.sizer.style.marginLeft=e+"px",En(t,"gutterChanged",t)}function $i(t,e){t.display.sizer.style.minHeight=e.docHeight+"px",t.display.heightForcer.style.top=e.docHeight+"px",t.display.gutters.style.height=e.docHeight+t.display.barHeight+Gn(t)+"px"}function qi(t){var e=t.display,n=e.view;if(e.alignWidgets||e.gutters.firstChild&&t.options.fixedGutter){for(var r=Mr(e)-e.scroller.scrollLeft+t.doc.scrollLeft,i=e.gutters.offsetWidth,o=r+"px",s=0;sa.clientWidth,u=a.scrollHeight>a.clientHeight;if(i&&c||o&&u){if(o&&y&&l)t:for(var f=e.target,d=s.view;f!=a;f=f.parentNode)for(var p=0;p=0&&se(t,r.to())<=0)return n}return-1};var oo=function(t,e){this.anchor=t,this.head=e};function so(t,e,n){var r=t&&t.options.selectionsMayTouch,i=e[n];e.sort((function(t,e){return se(t.from(),e.from())})),n=V(e,i);for(var o=1;o0:l>=0){var c=ue(a.from(),s.from()),u=ce(a.to(),s.to()),h=a.empty()?s.from()==s.head:a.from()==a.head;o<=n&&--n,e.splice(--o,2,new oo(h?u:c,h?c:u))}}return new io(e,n)}function ao(t,e){return new io([new oo(t,e||t)],0)}function lo(t){return t.text?oe(t.from.line+t.text.length-1,K(t.text).length+(1==t.text.length?t.from.ch:0)):t.to}function co(t,e){if(se(t,e.from)<0)return t;if(se(t,e.to)<=0)return lo(e);var n=t.line+e.text.length-(e.to.line-e.from.line)-1,r=t.ch;return t.line==e.to.line&&(r+=lo(e).ch-e.to.ch),oe(n,r)}function uo(t,e){for(var n=[],r=0;r1&&t.remove(a.line+1,p-1),t.insert(a.line+1,m)}En(t,"change",t,e)}function yo(t,e,n){function r(t,i,o){if(t.linked)for(var s=0;s1&&!t.done[t.done.length-2].ranges?(t.done.pop(),K(t.done)):void 0}function Po(t,e,n,r){var i=t.history;i.undone.length=0;var o,s,a=+new Date;if((i.lastOp==r||i.lastOrigin==e.origin&&e.origin&&("+"==e.origin.charAt(0)&&i.lastModTime>a-(t.cm?t.cm.options.historyEventDelay:500)||"*"==e.origin.charAt(0)))&&(o=So(i,i.lastOp==r)))s=K(o.changes),0==se(e.from,e.to)&&0==se(e.from,s.to)?s.to=lo(e):o.changes.push(Co(t,e));else{var l=K(i.done);for(l&&l.ranges||Eo(t.sel,i.done),o={changes:[Co(t,e)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=a,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=e.origin,s||mt(t,"historyAdded")}function _o(t,e,n,r){var i=e.charAt(0);return"*"==i||"+"==i&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-t.history.lastSelTime<=(t.cm?t.cm.options.historyEventDelay:500)}function To(t,e,n,r){var i=t.history,o=r&&r.origin;n==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||_o(t,o,K(i.done),e))?i.done[i.done.length-1]=e:Eo(e,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=n,r&&!1!==r.clearRedo&&ko(i.undone)}function Eo(t,e){var n=K(e);n&&n.ranges&&n.equals(t)||e.push(t)}function jo(t,e,n,r){var i=e["spans_"+t.id],o=0;t.iter(Math.max(t.first,n),Math.min(t.first+t.size,r),(function(n){n.markedSpans&&((i||(i=e["spans_"+t.id]={}))[o]=n.markedSpans),++o}))}function Do(t){if(!t)return null;for(var e,n=0;n-1&&(K(a)[h]=c[h],delete c[h])}}}return r}function Ro(t,e,n,r){if(r){var i=t.anchor;if(n){var o=se(e,i)<0;o!=se(n,i)<0?(i=e,e=n):o!=se(e,n)<0&&(e=n)}return new oo(i,e)}return new oo(n||e,e)}function No(t,e,n,r,i){null==i&&(i=t.cm&&(t.cm.display.shift||t.extend)),Bo(t,new io([Ro(t.sel.primary(),e,n,i)],0),r)}function Zo(t,e,n){for(var r=[],i=t.cm&&(t.cm.display.shift||t.extend),o=0;o=e.ch:a.to>e.ch))){if(i&&(mt(l,"beforeCursorEnter"),l.explicitlyCleared)){if(o.markedSpans){--s;continue}break}if(!l.atomic)continue;if(n){var h=l.find(r<0?1:-1),f=void 0;if((r<0?u:c)&&(h=Ko(t,h,-r,h&&h.line==e.line?o:null)),h&&h.line==e.line&&(f=se(h,n))&&(r<0?f<0:f>0))return qo(t,h,e,r,i)}var d=l.find(r<0?-1:1);return(r<0?c:u)&&(d=Ko(t,d,r,d.line==e.line?o:null)),d?qo(t,d,e,r,i):null}}return e}function Go(t,e,n,r,i){var o=r||1,s=qo(t,e,n,o,i)||!i&&qo(t,e,n,o,!0)||qo(t,e,n,-o,i)||!i&&qo(t,e,n,-o,!0);return s||(t.cantEdit=!0,oe(t.first,0))}function Ko(t,e,n,r){return n<0&&0==e.ch?e.line>t.first?fe(t,oe(e.line-1)):null:n>0&&e.ch==(r||Jt(t,e.line)).text.length?e.line=0;--i)Qo(t,{from:r[i].from,to:r[i].to,text:i?[""]:e.text,origin:e.origin});else Qo(t,e)}}function Qo(t,e){if(1!=e.text.length||""!=e.text[0]||0!=se(e.from,e.to)){var n=uo(t,e);Po(t,e,n,t.cm?t.cm.curOp.id:NaN),ns(t,e,n,Fe(t,e));var r=[];yo(t,(function(t,n){n||-1!=V(r,t.history)||(as(t.history,e),r.push(t.history)),ns(t,e,null,Fe(t,e))}))}}function ts(t,e,n){var r=t.cm&&t.cm.state.suppressEdits;if(!r||n){for(var i,o=t.history,s=t.sel,a="undo"==e?o.done:o.undone,l="undo"==e?o.undone:o.done,c=0;c=0;--d){var p=f(d);if(p)return p.v}}}}function es(t,e){if(0!=e&&(t.first+=e,t.sel=new io(Y(t.sel.ranges,(function(t){return new oo(oe(t.anchor.line+e,t.anchor.ch),oe(t.head.line+e,t.head.ch))})),t.sel.primIndex),t.cm)){Zr(t.cm,t.first,t.first-e,e);for(var n=t.cm.display,r=n.viewFrom;rt.lastLine())){if(e.from.lineo&&(e={from:e.from,to:oe(o,Jt(t,o).text.length),text:[e.text[0]],origin:e.origin}),e.removed=Xt(t,e.from,e.to),n||(n=uo(t,e)),t.cm?rs(t.cm,e,r):mo(t,e,r),zo(t,n,z),t.cantEdit&&Go(t,oe(t.firstLine(),0))&&(t.cantEdit=!1)}}function rs(t,e,n){var r=t.doc,i=t.display,o=e.from,s=e.to,a=!1,l=o.line;t.options.lineWrapping||(l=ee(Xe(Jt(r,o.line))),r.iter(l,s.line+1,(function(t){if(t==i.maxLine)return a=!0,!0}))),r.sel.contains(e.from,e.to)>-1&&bt(t),mo(r,e,n,Ar(t)),t.options.lineWrapping||(r.iter(l,o.line+e.text.length,(function(t){var e=an(t);e>i.maxLineLength&&(i.maxLine=t,i.maxLineLength=e,i.maxLineChanged=!0,a=!1)})),a&&(t.curOp.updateMaxLine=!0)),Te(r,o.line),Ri(t,400);var c=e.text.length-(s.line-o.line)-1;e.full?Zr(t):o.line!=s.line||1!=e.text.length||vo(t.doc,e)?Zr(t,o.line,s.line+1,c):Ir(t,o.line,"text");var u=wt(t,"changes"),h=wt(t,"change");if(h||u){var f={from:o,to:s,text:e.text,removed:e.removed,origin:e.origin};h&&En(t,"change",t,f),u&&(t.curOp.changeObjs||(t.curOp.changeObjs=[])).push(f)}t.display.selForContextMenu=null}function is(t,e,n,r,i){var o;r||(r=n),se(r,n)<0&&(n=(o=[r,n])[0],r=o[1]),"string"==typeof e&&(e=t.splitLines(e)),Xo(t,{from:n,to:r,text:e,origin:i})}function os(t,e,n,r){n1||!(this.children[0]instanceof cs))){var a=[];this.collapse(a),this.children=[new cs(a)],this.children[0].parent=this}},collapse:function(t){for(var e=0;e50){for(var s=i.lines.length%25+25,a=s;a10);t.parent.maybeSpill()}},iterN:function(t,e,n){for(var r=0;r0||0==s&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=j("span",[o.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Je(t,e.line,e,n,o)||e.line!=n.line&&Je(t,n.line,e,n,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");Me()}o.addToHistory&&Po(t,{from:e,to:n,origin:"markText"},t.sel,NaN);var a,l=e.line,c=t.cm;if(t.iter(l,n.line+1,(function(r){c&&o.collapsed&&!c.options.lineWrapping&&Xe(r)==c.display.maxLine&&(a=!0),o.collapsed&&l!=e.line&&te(r,0),Ne(r,new Ae(o,l==e.line?e.ch:null,l==n.line?n.ch:null),t.cm&&t.cm.curOp),++l})),o.collapsed&&t.iter(e.line,n.line+1,(function(e){rn(t,e)&&te(e,0)})),o.clearOnEnter&&pt(o,"beforeCursorEnter",(function(){return o.clear()})),o.readOnly&&(De(),(t.history.done.length||t.history.undone.length)&&t.clearHistory()),o.collapsed&&(o.id=++ps,o.atomic=!0),c){if(a&&(c.curOp.updateMaxLine=!0),o.collapsed)Zr(c,e.line,n.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var u=e.line;u<=n.line;u++)Ir(c,u,"text");o.atomic&&Wo(c.doc),En(c,"markerAdded",c,o)}return o}gs.prototype.clear=function(){if(!this.explicitlyCleared){var t=this.doc.cm,e=t&&!t.curOp;if(e&&Ci(t),wt(this,"clear")){var n=this.find();n&&En(this,"clear",n.from,n.to)}for(var r=null,i=null,o=0;ot.display.maxLineLength&&(t.display.maxLine=c,t.display.maxLineLength=u,t.display.maxLineChanged=!0)}null!=r&&t&&this.collapsed&&Zr(t,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,t&&Wo(t.doc)),t&&En(t,"markerCleared",t,this,r,i),e&&ki(t),this.parent&&this.parent.clear()}},gs.prototype.find=function(t,e){var n,r;null==t&&"bookmark"==this.type&&(t=1);for(var i=0;i=0;l--)Xo(this,r[l]);a?Ho(this,a):this.cm&&ai(this.cm)})),undo:Li((function(){ts(this,"undo")})),redo:Li((function(){ts(this,"redo")})),undoSelection:Li((function(){ts(this,"undo",!0)})),redoSelection:Li((function(){ts(this,"redo",!0)})),setExtending:function(t){this.extend=t},getExtending:function(){return this.extend},historySize:function(){for(var t=this.history,e=0,n=0,r=0;r=t.ch)&&e.push(i.marker.parent||i.marker)}return e},findMarks:function(t,e,n){t=fe(this,t),e=fe(this,e);var r=[],i=t.line;return this.iter(t.line,e.line+1,(function(o){var s=o.markedSpans;if(s)for(var a=0;a=l.to||null==l.from&&i!=t.line||null!=l.from&&i==e.line&&l.from>=e.ch||n&&!n(l.marker)||r.push(l.marker.parent||l.marker)}++i})),r},getAllMarks:function(){var t=[];return this.iter((function(e){var n=e.markedSpans;if(n)for(var r=0;rt)return e=t,!0;t-=o,++n})),fe(this,oe(n,e))},indexFromPos:function(t){var e=(t=fe(this,t)).ch;if(t.linee&&(e=t.from),null!=t.to&&t.to-1)return e.state.draggingText(t),void setTimeout((function(){return e.display.input.focus()}),20);try{var h=t.dataTransfer.getData("Text");if(h){var f;if(e.state.draggingText&&!e.state.draggingText.copy&&(f=e.listSelections()),zo(e.doc,ao(n,n)),f)for(var d=0;d=0;e--)is(t.doc,"",r[e].from,r[e].to,"+delete");ai(t)}))}function qs(t,e,n){var r=st(t.text,e+n,n);return r<0||r>t.text.length?null:r}function Gs(t,e,n){var r=qs(t,e.ch,n);return null==r?null:new oe(e.line,r,n<0?"after":"before")}function Ks(t,e,n,r,i){if(t){"rtl"==e.doc.direction&&(i=-i);var o=ft(n,e.doc.direction);if(o){var s,a=i<0?K(o):o[0],l=i<0==(1==a.level)?"after":"before";if(a.level>0||"rtl"==e.doc.direction){var c=nr(e,n);s=i<0?n.text.length-1:0;var u=rr(e,c,s).top;s=at((function(t){return rr(e,c,t).top==u}),i<0==(1==a.level)?a.from:a.to-1,s),"before"==l&&(s=qs(n,s,1))}else s=i<0?a.to:a.from;return new oe(r,s,l)}}return new oe(r,i<0?n.text.length:0,i<0?"before":"after")}function Ys(t,e,n,r){var i=ft(e,t.doc.direction);if(!i)return Gs(e,n,r);n.ch>=e.text.length?(n.ch=e.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var o=ut(i,n.ch,n.sticky),s=i[o];if("ltr"==t.doc.direction&&s.level%2==0&&(r>0?s.to>n.ch:s.from=s.from&&f>=u.begin)){var d=h?"before":"after";return new oe(n.line,f,d)}}var p=function(t,e,r){for(var o=function(t,e){return e?new oe(n.line,l(t,1),"before"):new oe(n.line,t,"after")};t>=0&&t0==(1!=s.level),c=a?r.begin:l(r.end,-1);if(s.from<=c&&c0?u.end:l(u.begin,-1);return null==v||r>0&&v==e.text.length||!(g=p(r>0?0:i.length-1,r,c(v)))?null:g}Is.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Is.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Is.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Is.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Is.default=y?Is.macDefault:Is.pcDefault;var Js={selectAll:Yo,singleSelection:function(t){return t.setSelection(t.getCursor("anchor"),t.getCursor("head"),z)},killLine:function(t){return $s(t,(function(e){if(e.empty()){var n=Jt(t.doc,e.head.line).text.length;return e.head.ch==n&&e.head.line0)i=new oe(i.line,i.ch+1),t.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),oe(i.line,i.ch-2),i,"+transpose");else if(i.line>t.doc.first){var s=Jt(t.doc,i.line-1).text;s&&(i=new oe(i.line,1),t.replaceRange(o.charAt(0)+t.doc.lineSeparator()+s.charAt(s.length-1),oe(i.line-1,s.length-1),i,"+transpose"))}n.push(new oo(i,i))}t.setSelections(n)}))},newlineAndIndent:function(t){return Di(t,(function(){for(var e=t.listSelections(),n=e.length-1;n>=0;n--)t.replaceRange(t.doc.lineSeparator(),e[n].anchor,e[n].head,"+input");e=t.listSelections();for(var r=0;r-1&&(se((i=a.ranges[i]).from(),e)<0||e.xRel>0)&&(se(i.to(),e)>0||e.xRel<0)?Oa(t,r,e,o):ka(t,r,e,o)}function Oa(t,e,n,r){var i=t.display,o=!1,c=Mi(t,(function(e){l&&(i.scroller.draggable=!1),t.state.draggingText=!1,t.state.delayingBlurEvent&&(t.hasFocus()?t.state.delayingBlurEvent=!1:Yr(t)),vt(i.wrapper.ownerDocument,"mouseup",c),vt(i.wrapper.ownerDocument,"mousemove",u),vt(i.scroller,"dragstart",h),vt(i.scroller,"drop",c),o||(Ot(e),r.addNew||No(t.doc,n,null,null,r.extend),l&&!f||s&&9==a?setTimeout((function(){i.wrapper.ownerDocument.body.focus({preventScroll:!0}),i.input.focus()}),20):i.input.focus())})),u=function(t){o=o||Math.abs(e.clientX-t.clientX)+Math.abs(e.clientY-t.clientY)>=10},h=function(){return o=!0};l&&(i.scroller.draggable=!0),t.state.draggingText=c,c.copy=!r.moveOnDrag,pt(i.wrapper.ownerDocument,"mouseup",c),pt(i.wrapper.ownerDocument,"mousemove",u),pt(i.scroller,"dragstart",h),pt(i.scroller,"drop",c),t.state.delayingBlurEvent=!0,setTimeout((function(){return i.input.focus()}),20),i.scroller.dragDrop&&i.scroller.dragDrop()}function Ca(t,e,n){if("char"==n)return new oo(e,e);if("word"==n)return t.findWordAt(e);if("line"==n)return new oo(oe(e.line,0),fe(t.doc,oe(e.line+1,0)));var r=n(t,e);return new oo(r.from,r.to)}function ka(t,e,n,r){s&&Yr(t);var i=t.display,o=t.doc;Ot(e);var a,l,c=o.sel,u=c.ranges;if(r.addNew&&!r.extend?(l=o.sel.contains(n),a=l>-1?u[l]:new oo(n,n)):(a=o.sel.primary(),l=o.sel.primIndex),"rectangle"==r.unit)r.addNew||(a=new oo(n,n)),n=Rr(t,e,!0,!0),l=-1;else{var h=Ca(t,n,r.unit);a=r.extend?Ro(a,h.anchor,h.head,r.extend):h}r.addNew?-1==l?(l=u.length,Bo(o,so(t,u.concat([a]),l),{scroll:!1,origin:"*mouse"})):u.length>1&&u[l].empty()&&"char"==r.unit&&!r.extend?(Bo(o,so(t,u.slice(0,l).concat(u.slice(l+1)),0),{scroll:!1,origin:"*mouse"}),c=o.sel):Io(o,l,a,U):(l=0,Bo(o,new io([a],0),U),c=o.sel);var f=n;function d(e){if(0!=se(f,e))if(f=e,"rectangle"==r.unit){for(var i=[],s=t.options.tabSize,u=I(Jt(o,n.line).text,n.ch,s),h=I(Jt(o,e.line).text,e.ch,s),d=Math.min(u,h),p=Math.max(u,h),g=Math.min(n.line,e.line),v=Math.min(t.lastLine(),Math.max(n.line,e.line));g<=v;g++){var m=Jt(o,g).text,y=$(m,d,s);d==p?i.push(new oo(oe(g,y),oe(g,y))):m.length>y&&i.push(new oo(oe(g,y),oe(g,$(m,p,s))))}i.length||i.push(new oo(n,n)),Bo(o,so(t,c.ranges.slice(0,l).concat(i),l),{origin:"*mouse",scroll:!1}),t.scrollIntoView(e)}else{var b,w=a,x=Ca(t,e,r.unit),O=w.anchor;se(x.anchor,O)>0?(b=x.head,O=ue(w.from(),x.anchor)):(b=x.anchor,O=ce(w.to(),x.head));var C=c.ranges.slice(0);C[l]=Sa(t,new oo(fe(o,O),b)),Bo(o,so(t,C,l),U)}}var p=i.wrapper.getBoundingClientRect(),g=0;function v(e){var n=++g,s=Rr(t,e,!0,"rectangle"==r.unit);if(s)if(0!=se(s,f)){t.curOp.focus=M(),d(s);var a=ei(i,o);(s.line>=a.to||s.linep.bottom?20:0;l&&setTimeout(Mi(t,(function(){g==n&&(i.scroller.scrollTop+=l,v(e))})),50)}}function m(e){t.state.selectingText=!1,g=1/0,e&&(Ot(e),i.input.focus()),vt(i.wrapper.ownerDocument,"mousemove",y),vt(i.wrapper.ownerDocument,"mouseup",b),o.history.lastSelOrigin=null}var y=Mi(t,(function(t){0!==t.buttons&&_t(t)?v(t):m(t)})),b=Mi(t,m);t.state.selectingText=b,pt(i.wrapper.ownerDocument,"mousemove",y),pt(i.wrapper.ownerDocument,"mouseup",b)}function Sa(t,e){var n=e.anchor,r=e.head,i=Jt(t.doc,n.line);if(0==se(n,r)&&n.sticky==r.sticky)return e;var o=ft(i);if(!o)return e;var s=ut(o,n.ch,n.sticky),a=o[s];if(a.from!=n.ch&&a.to!=n.ch)return e;var l,c=s+(a.from==n.ch==(1!=a.level)?0:1);if(0==c||c==o.length)return e;if(r.line!=n.line)l=(r.line-n.line)*("ltr"==t.doc.direction?1:-1)>0;else{var u=ut(o,r.ch,r.sticky),h=u-s||(r.ch-n.ch)*(1==a.level?-1:1);l=u==c-1||u==c?h<0:h>0}var f=o[c+(l?-1:0)],d=l==(1==f.level),p=d?f.from:f.to,g=d?"after":"before";return n.ch==p&&n.sticky==g?e:new oo(new oe(n.line,p,g),r)}function Pa(t,e,n,r){var i,o;if(e.touches)i=e.touches[0].clientX,o=e.touches[0].clientY;else try{i=e.clientX,o=e.clientY}catch(t){return!1}if(i>=Math.floor(t.display.gutters.getBoundingClientRect().right))return!1;r&&Ot(e);var s=t.display,a=s.lineDiv.getBoundingClientRect();if(o>a.bottom||!wt(t,n))return kt(e);o-=a.top-s.viewOffset;for(var l=0;l=i)return mt(t,n,t,ne(t.doc,o),t.display.gutterSpecs[l].className,e),kt(e)}}function _a(t,e){return Pa(t,e,"gutterClick",!0)}function Ta(t,e){Un(t.display,e)||Ea(t,e)||yt(t,e,"contextmenu")||C||t.display.input.onContextMenu(e)}function Ea(t,e){return!!wt(t,"gutterContextMenu")&&Pa(t,e,"gutterContextMenu",!1)}function ja(t){t.display.wrapper.className=t.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+t.options.theme.replace(/(^|\s)\s*/g," cm-s-"),fr(t)}va.prototype.compare=function(t,e,n){return this.time+ga>t&&0==se(e,this.pos)&&n==this.button};var Da={toString:function(){return"CodeMirror.Init"}},Ma={},Aa={};function La(t){var e=t.optionHandlers;function n(n,r,i,o){t.defaults[n]=r,i&&(e[n]=o?function(t,e,n){n!=Da&&i(t,e,n)}:i)}t.defineOption=n,t.Init=Da,n("value","",(function(t,e){return t.setValue(e)}),!0),n("mode",null,(function(t,e){t.doc.modeOption=e,po(t)}),!0),n("indentUnit",2,po,!0),n("indentWithTabs",!1),n("smartIndent",!0),n("tabSize",4,(function(t){go(t),fr(t),Zr(t)}),!0),n("lineSeparator",null,(function(t,e){if(t.doc.lineSep=e,e){var n=[],r=t.doc.first;t.doc.iter((function(t){for(var i=0;;){var o=t.text.indexOf(e,i);if(-1==o)break;i=o+e.length,n.push(oe(r,o))}r++}));for(var i=n.length-1;i>=0;i--)is(t.doc,e,n[i],oe(n[i].line,n[i].ch+e.length))}})),n("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,(function(t,e,n){t.state.specialChars=new RegExp(e.source+(e.test("\t")?"":"|\t"),"g"),n!=Da&&t.refresh()})),n("specialCharPlaceholder",vn,(function(t){return t.refresh()}),!0),n("electricChars",!0),n("inputStyle",m?"contenteditable":"textarea",(function(){throw new Error("inputStyle can not (yet) be changed in a running editor")}),!0),n("spellcheck",!1,(function(t,e){return t.getInputField().spellcheck=e}),!0),n("autocorrect",!1,(function(t,e){return t.getInputField().autocorrect=e}),!0),n("autocapitalize",!1,(function(t,e){return t.getInputField().autocapitalize=e}),!0),n("rtlMoveVisually",!w),n("wholeLineUpdateBefore",!0),n("theme","default",(function(t){ja(t),Ji(t)}),!0),n("keyMap","default",(function(t,e,n){var r=Ws(e),i=n!=Da&&Ws(n);i&&i.detach&&i.detach(t,r),r.attach&&r.attach(t,i||null)})),n("extraKeys",null),n("configureMouse",null),n("lineWrapping",!1,Na,!0),n("gutters",[],(function(t,e){t.display.gutterSpecs=Ki(e,t.options.lineNumbers),Ji(t)}),!0),n("fixedGutter",!0,(function(t,e){t.display.gutters.style.left=e?Mr(t.display)+"px":"0",t.refresh()}),!0),n("coverGutterNextToScrollbar",!1,(function(t){return yi(t)}),!0),n("scrollbarStyle","native",(function(t){xi(t),yi(t),t.display.scrollbars.setScrollTop(t.doc.scrollTop),t.display.scrollbars.setScrollLeft(t.doc.scrollLeft)}),!0),n("lineNumbers",!1,(function(t,e){t.display.gutterSpecs=Ki(t.options.gutters,e),Ji(t)}),!0),n("firstLineNumber",1,Ji,!0),n("lineNumberFormatter",(function(t){return t}),Ji,!0),n("showCursorWhenSelecting",!1,zr,!0),n("resetSelectionOnContextMenu",!0),n("lineWiseCopyCut",!0),n("pasteLinesPerSelection",!0),n("selectionsMayTouch",!1),n("readOnly",!1,(function(t,e){"nocursor"==e&&(Xr(t),t.display.input.blur()),t.display.input.readOnlyChanged(e)})),n("screenReaderLabel",null,(function(t,e){e=''===e?null:e,t.display.input.screenReaderLabelChanged(e)})),n("disableInput",!1,(function(t,e){e||t.display.input.reset()}),!0),n("dragDrop",!0,Ra),n("allowDropFileTypes",null),n("cursorBlinkRate",530),n("cursorScrollMargin",0),n("cursorHeight",1,zr,!0),n("singleCursorHeightPerLine",!0,zr,!0),n("workTime",100),n("workDelay",100),n("flattenSpans",!0,go,!0),n("addModeClass",!1,go,!0),n("pollInterval",100),n("undoDepth",200,(function(t,e){return t.doc.history.undoDepth=e})),n("historyEventDelay",1250),n("viewportMargin",10,(function(t){return t.refresh()}),!0),n("maxHighlightLength",1e4,go,!0),n("moveInputWithCursor",!0,(function(t,e){e||t.display.input.resetPosition()})),n("tabindex",null,(function(t,e){return t.display.input.getField().tabIndex=e||""})),n("autofocus",null),n("direction","ltr",(function(t,e){return t.doc.setDirection(e)}),!0),n("phrases",null)}function Ra(t,e,n){if(!e!=!(n&&n!=Da)){var r=t.display.dragFunctions,i=e?pt:vt;i(t.display.scroller,"dragstart",r.start),i(t.display.scroller,"dragenter",r.enter),i(t.display.scroller,"dragover",r.over),i(t.display.scroller,"dragleave",r.leave),i(t.display.scroller,"drop",r.drop)}}function Na(t){t.options.lineWrapping?(A(t.display.wrapper,"CodeMirror-wrap"),t.display.sizer.style.minWidth="",t.display.sizerWidth=null):(P(t.display.wrapper,"CodeMirror-wrap"),ln(t)),Lr(t),Zr(t),fr(t),setTimeout((function(){return yi(t)}),100)}function Za(t,e){var n=this;if(!(this instanceof Za))return new Za(t,e);this.options=e=e?Z(e):{},Z(Ma,e,!1);var r=e.value;"string"==typeof r?r=new Cs(r,e.mode,null,e.lineSeparator,e.direction):e.mode&&(r.modeOption=e.mode),this.doc=r;var i=new Za.inputStyles[e.inputStyle](this),o=this.display=new Xi(t,r,i,e);for(var c in o.wrapper.CodeMirror=this,ja(this),e.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),xi(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new F,keySeq:null,specialChars:null},e.autofocus&&!m&&o.input.focus(),s&&a<11&&setTimeout((function(){return n.display.input.reset(!0)}),20),Ia(this),Ds(),Ci(this),this.curOp.forceUpdate=!0,bo(this,r),e.autofocus&&!m||this.hasFocus()?setTimeout((function(){n.hasFocus()&&!n.state.focused&&Jr(n)}),20):Xr(this),Aa)Aa.hasOwnProperty(c)&&Aa[c](this,e[c],Da);Gi(this),e.finishInit&&e.finishInit(this);for(var u=0;u400}pt(e.scroller,"touchstart",(function(i){if(!yt(t,i)&&!o(i)&&!_a(t,i)){e.input.ensurePolled(),clearTimeout(n);var s=+new Date;e.activeTouch={start:s,moved:!1,prev:s-r.end<=300?r:null},1==i.touches.length&&(e.activeTouch.left=i.touches[0].pageX,e.activeTouch.top=i.touches[0].pageY)}})),pt(e.scroller,"touchmove",(function(){e.activeTouch&&(e.activeTouch.moved=!0)})),pt(e.scroller,"touchend",(function(n){var r=e.activeTouch;if(r&&!Un(e,n)&&null!=r.left&&!r.moved&&new Date-r.start<300){var o,s=t.coordsChar(e.activeTouch,"page");o=!r.prev||l(r,r.prev)?new oo(s,s):!r.prev.prev||l(r,r.prev.prev)?t.findWordAt(s):new oo(oe(s.line,0),fe(t.doc,oe(s.line+1,0))),t.setSelection(o.anchor,o.head),t.focus(),Ot(n)}i()})),pt(e.scroller,"touchcancel",i),pt(e.scroller,"scroll",(function(){e.scroller.clientHeight&&(fi(t,e.scroller.scrollTop),pi(t,e.scroller.scrollLeft,!0),mt(t,"scroll",t))})),pt(e.scroller,"mousewheel",(function(e){return ro(t,e)})),pt(e.scroller,"DOMMouseScroll",(function(e){return ro(t,e)})),pt(e.wrapper,"scroll",(function(){return e.wrapper.scrollTop=e.wrapper.scrollLeft=0})),e.dragFunctions={enter:function(e){yt(t,e)||St(e)},over:function(e){yt(t,e)||(_s(t,e),St(e))},start:function(e){return Ps(t,e)},drop:Mi(t,Ss),leave:function(e){yt(t,e)||Ts(t)}};var c=e.input.getField();pt(c,"keyup",(function(e){return ha.call(t,e)})),pt(c,"keydown",Mi(t,ca)),pt(c,"keypress",Mi(t,fa)),pt(c,"focus",(function(e){return Jr(t,e)})),pt(c,"blur",(function(e){return Xr(t,e)}))}Za.defaults=Ma,Za.optionHandlers=Aa;var Fa=[];function Va(t,e,n,r){var i,o=t.doc;null==n&&(n="add"),"smart"==n&&(o.mode.indent?i=be(t,e).state:n="prev");var s=t.options.tabSize,a=Jt(o,e),l=I(a.text,null,s);a.stateAfter&&(a.stateAfter=null);var c,u=a.text.match(/^\s*/)[0];if(r||/\S/.test(a.text)){if("smart"==n&&((c=o.mode.indent(i,a.text.slice(u.length),a.text))==B||c>150)){if(!r)return;n="prev"}}else c=0,n="not";"prev"==n?c=e>o.first?I(Jt(o,e-1).text,null,s):0:"add"==n?c=l+t.options.indentUnit:"subtract"==n?c=l-t.options.indentUnit:"number"==typeof n&&(c=l+n),c=Math.max(0,c);var h="",f=0;if(t.options.indentWithTabs)for(var d=Math.floor(c/s);d;--d)f+=s,h+="\t";if(fs,l=Lt(e),c=null;if(a&&r.ranges.length>1)if(Ha&&Ha.text.join("\n")==e){if(r.ranges.length%Ha.text.length==0){c=[];for(var u=0;u=0;f--){var d=r.ranges[f],p=d.from(),g=d.to();d.empty()&&(n&&n>0?p=oe(p.line,p.ch-n):t.state.overwrite&&!a?g=oe(g.line,Math.min(Jt(o,g.line).text.length,g.ch+K(l).length)):a&&Ha&&Ha.lineWise&&Ha.text.join("\n")==l.join("\n")&&(p=g=oe(p.line,0)));var v={from:p,to:g,text:c?c[f%c.length]:l,origin:i||(a?"paste":t.state.cutIncoming>s?"cut":"+input")};Xo(t.doc,v),En(t,"inputRead",t,v)}e&&!a&&Wa(t,e),ai(t),t.curOp.updateInput<2&&(t.curOp.updateInput=h),t.curOp.typing=!0,t.state.pasteIncoming=t.state.cutIncoming=-1}function Ua(t,e){var n=t.clipboardData&&t.clipboardData.getData("Text");if(n)return t.preventDefault(),e.isReadOnly()||e.options.disableInput||Di(e,(function(){return za(e,n,0,null,"paste")})),!0}function Wa(t,e){if(t.options.electricChars&&t.options.smartIndent)for(var n=t.doc.sel,r=n.ranges.length-1;r>=0;r--){var i=n.ranges[r];if(!(i.head.ch>100||r&&n.ranges[r-1].head.line==i.head.line)){var o=t.getModeAt(i.head),s=!1;if(o.electricChars){for(var a=0;a-1){s=Va(t,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Jt(t.doc,i.head.line).text.slice(0,i.head.ch))&&(s=Va(t,i.head.line,"smart"));s&&En(t,"electricInput",t,i.head.line)}}}function $a(t){for(var e=[],n=[],r=0;rn&&(Va(this,i.head.line,t,!0),n=i.head.line,r==this.doc.sel.primIndex&&ai(this));else{var o=i.from(),s=i.to(),a=Math.max(n,o.line);n=Math.min(this.lastLine(),s.line-(s.ch?0:1))+1;for(var l=a;l0&&Io(this.doc,r,new oo(o,c[r].to()),z)}}})),getTokenAt:function(t,e){return ke(this,t,e)},getLineTokens:function(t,e){return ke(this,oe(t),e,!0)},getTokenTypeAt:function(t){t=fe(this.doc,t);var e,n=ye(this,Jt(this.doc,t.line)),r=0,i=(n.length-1)/2,o=t.ch;if(0==o)e=n[2];else for(;;){var s=r+i>>1;if((s?n[2*s-1]:0)>=o)i=s;else{if(!(n[2*s+1]o&&(t=o,i=!0),r=Jt(this.doc,t)}else r=t;return vr(this,r,{top:0,left:0},e||"page",n||i).top+(i?this.doc.height-sn(r):0)},defaultTextHeight:function(){return Er(this.display)},defaultCharWidth:function(){return jr(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(t,e,n,r,i){var o=this.display,s=(t=br(this,fe(this.doc,t))).bottom,a=t.left;if(e.style.position="absolute",e.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(e),o.sizer.appendChild(e),"over"==r)s=t.top;else if("above"==r||"near"==r){var l=Math.max(o.wrapper.clientHeight,this.doc.height),c=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);('above'==r||t.bottom+e.offsetHeight>l)&&t.top>e.offsetHeight?s=t.top-e.offsetHeight:t.bottom+e.offsetHeight<=l&&(s=t.bottom),a+e.offsetWidth>c&&(a=c-e.offsetWidth)}e.style.top=s+"px",e.style.left=e.style.right="","right"==i?(a=o.sizer.clientWidth-e.offsetWidth,e.style.right="0px"):("left"==i?a=0:"middle"==i&&(a=(o.sizer.clientWidth-e.offsetWidth)/2),e.style.left=a+"px"),n&&ii(this,{left:a,top:s,right:a+e.offsetWidth,bottom:s+e.offsetHeight})},triggerOnKeyDown:Ai(ca),triggerOnKeyPress:Ai(fa),triggerOnKeyUp:ha,triggerOnMouseDown:Ai(ya),execCommand:function(t){if(Js.hasOwnProperty(t))return Js[t].call(null,this)},triggerElectric:Ai((function(t){Wa(this,t)})),findPosH:function(t,e,n,r){var i=1;e<0&&(i=-1,e=-e);for(var o=fe(this.doc,t),s=0;s0&&s(e.charAt(n-1));)--n;for(;r.5||this.options.lineWrapping)&&Lr(this),mt(this,"refresh",this)})),swapDoc:Ai((function(t){var e=this.doc;return e.cm=null,this.state.selectingText&&this.state.selectingText(),bo(this,t),fr(this),this.display.input.reset(),li(this,t.scrollLeft,t.scrollTop),this.curOp.forceScroll=!0,En(this,"swapDoc",this,e),e})),phrase:function(t){var e=this.options.phrases;return e&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:t},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},xt(t),t.registerHelper=function(e,r,i){n.hasOwnProperty(e)||(n[e]=t[e]={_global:[]}),n[e][r]=i},t.registerGlobalHelper=function(e,r,i,o){t.registerHelper(e,r,o),n[e]._global.push({pred:i,val:o})}}function Ya(t,e,n,r,i){var o=e,s=n,a=Jt(t,e.line),l=i&&"rtl"==t.direction?-n:n;function c(){var n=e.line+l;return!(n=t.first+t.size)&&(e=new oe(n,e.ch,e.sticky),a=Jt(t,n))}function u(o){var s;if("codepoint"==r){var u=a.text.charCodeAt(e.ch+(n>0?0:-1));if(isNaN(u))s=null;else{var h=n>0?u>=55296&&u<56320:u>=56320&&u<57343;s=new oe(e.line,Math.max(0,Math.min(a.text.length,e.ch+n*(h?2:1))),-n)}}else s=i?Ys(t.cm,a,e,n):Gs(a,e,n);if(null==s){if(o||!c())return!1;e=Ks(i,t.cm,a,e.line,l)}else e=s;return!0}if("char"==r||"codepoint"==r)u();else if("column"==r)u(!0);else if("word"==r||"group"==r)for(var h=null,f="group"==r,d=t.cm&&t.cm.getHelper(e,"wordChars"),p=!0;!(n<0)||u(!p);p=!1){var g=a.text.charAt(e.ch)||"\n",v=nt(g,d)?"w":f&&"\n"==g?"n":!f||/\s/.test(g)?null:"p";if(!f||p||v||(v="s"),h&&h!=v){n<0&&(n=1,u(),e.sticky="after");break}if(v&&(h=v),n>0&&!u(!p))break}var m=Go(t,e,o,s,!0);return ae(o,m)&&(m.hitSide=!0),m}function Ja(t,e,n,r){var i,o,s=t.doc,a=e.left;if("page"==r){var l=Math.min(t.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),c=Math.max(l-.5*Er(t.display),3);i=(n>0?e.bottom:e.top)+n*c}else"line"==r&&(i=n>0?e.bottom+3:e.top-3);for(;(o=Or(t,a,i)).outside;){if(n<0?i<=0:i>=s.height){o.hitSide=!0;break}i+=5*n}return o}var Xa=function(t){this.cm=t,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new F,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Qa(t,e){var n=er(t,e.line);if(!n||n.hidden)return null;var r=Jt(t.doc,e.line),i=Xn(n,r,e.line),o=ft(r,t.doc.direction),s="left";o&&(s=ut(o,e.ch)%2?"right":"left");var a=sr(i.map,e.ch,s);return a.offset="right"==a.collapse?a.end:a.start,a}function tl(t){for(var e=t;e;e=e.parentNode)if(/CodeMirror-gutter-wrapper/.test(e.className))return!0;return!1}function el(t,e){return e&&(t.bad=!0),t}function nl(t,e,n,r,i){var o="",s=!1,a=t.doc.lineSeparator(),l=!1;function c(t){return function(e){return e.id==t}}function u(){s&&(o+=a,l&&(o+=a),s=l=!1)}function h(t){t&&(u(),o+=t)}function f(e){if(1==e.nodeType){var n=e.getAttribute("cm-text");if(n)return void h(n);var o,d=e.getAttribute("cm-marker");if(d){var p=t.findMarks(oe(r,0),oe(i+1,0),c(+d));return void(p.length&&(o=p[0].find(0))&&h(Xt(t.doc,o.from,o.to).join(a)))}if("false"==e.getAttribute("contenteditable"))return;var g=/^(pre|div|p|li|table|br)$/i.test(e.nodeName);if(!/^br$/i.test(e.nodeName)&&0==e.textContent.length)return;g&&u();for(var v=0;v=e.display.viewTo||o.line=e.display.viewFrom&&Qa(e,i)||{node:l[0].measure.map[2],offset:0},u=o.liner.firstLine()&&(s=oe(s.line-1,Jt(r.doc,s.line-1).length)),a.ch==Jt(r.doc,a.line).text.length&&a.linei.viewTo-1)return!1;s.line==i.viewFrom||0==(t=Nr(r,s.line))?(e=ee(i.view[0].line),n=i.view[0].node):(e=ee(i.view[t].line),n=i.view[t-1].node.nextSibling);var l,c,u=Nr(r,a.line);if(u==i.view.length-1?(l=i.viewTo-1,c=i.lineDiv.lastChild):(l=ee(i.view[u+1].line)-1,c=i.view[u+1].node.previousSibling),!n)return!1;for(var h=r.doc.splitLines(nl(r,n,c,e,l)),f=Xt(r.doc,oe(e,0),oe(l,Jt(r.doc,l).text.length));h.length>1&&f.length>1;)if(K(h)==K(f))h.pop(),f.pop(),l--;else{if(h[0]!=f[0])break;h.shift(),f.shift(),e++}for(var d=0,p=0,g=h[0],v=f[0],m=Math.min(g.length,v.length);ds.ch&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)d--,p++;h[h.length-1]=y.slice(0,y.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(d).replace(/\u200b+$/,"");var x=oe(e,d),O=oe(l,f.length?K(f).length-p:0);return h.length>1||h[0]||se(x,O)?(is(r.doc,h,x,O,"+input"),!0):void 0},Xa.prototype.ensurePolled=function(){this.forceCompositionEnd()},Xa.prototype.reset=function(){this.forceCompositionEnd()},Xa.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Xa.prototype.readFromDOMSoon=function(){var t=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout((function(){if(t.readDOMTimeout=null,t.composing){if(!t.composing.done)return;t.composing=null}t.updateFromDOM()}),80))},Xa.prototype.updateFromDOM=function(){var t=this;!this.cm.isReadOnly()&&this.pollContent()||Di(this.cm,(function(){return Zr(t.cm)}))},Xa.prototype.setUneditable=function(t){t.contentEditable="false"},Xa.prototype.onKeyPress=function(t){0==t.charCode||this.composing||(t.preventDefault(),this.cm.isReadOnly()||Mi(this.cm,za)(this.cm,String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),0))},Xa.prototype.readOnlyChanged=function(t){this.div.contentEditable=String("nocursor"!=t)},Xa.prototype.onContextMenu=function(){},Xa.prototype.resetPosition=function(){},Xa.prototype.needsContentAttribute=!0;var ol=function(t){this.cm=t,this.prevInput="",this.pollingFast=!1,this.polling=new F,this.hasSelection=!1,this.composing=null};function sl(t,e){if((e=e?Z(e):{}).value=t.value,!e.tabindex&&t.tabIndex&&(e.tabindex=t.tabIndex),!e.placeholder&&t.placeholder&&(e.placeholder=t.placeholder),null==e.autofocus){var n=M();e.autofocus=n==t||null!=t.getAttribute("autofocus")&&n==document.body}function r(){t.value=a.getValue()}var i;if(t.form&&(pt(t.form,"submit",r),!e.leaveSubmitMethodAlone)){var o=t.form;i=o.submit;try{var s=o.submit=function(){r(),o.submit=i,o.submit(),o.submit=s}}catch(t){}}e.finishInit=function(n){n.save=r,n.getTextArea=function(){return t},n.toTextArea=function(){n.toTextArea=isNaN,r(),t.parentNode.removeChild(n.getWrapperElement()),t.style.display="",t.form&&(vt(t.form,"submit",r),e.leaveSubmitMethodAlone||"function"!=typeof t.form.submit||(t.form.submit=i))}},t.style.display="none";var a=Za((function(e){return t.parentNode.insertBefore(e,t.nextSibling)}),e);return a}function al(t){t.off=vt,t.on=pt,t.wheelEventPixels=no,t.Doc=Cs,t.splitLines=Lt,t.countColumn=I,t.findColumn=$,t.isWordChar=et,t.Pass=B,t.signal=mt,t.Line=cn,t.changeEnd=lo,t.scrollbarModel=wi,t.Pos=oe,t.cmpPos=se,t.modes=Ft,t.mimeModes=Vt,t.resolveMode=zt,t.getMode=Ut,t.modeExtensions=Wt,t.extendMode=$t,t.copyState=qt,t.startState=Kt,t.innerMode=Gt,t.commands=Js,t.keyMap=Is,t.keyName=Us,t.isModifierKey=Bs,t.lookupKey=Hs,t.normalizeKeyMap=Vs,t.StringStream=Yt,t.SharedTextMarker=ms,t.TextMarker=gs,t.LineWidget=hs,t.e_preventDefault=Ot,t.e_stopPropagation=Ct,t.e_stop=St,t.addClass=A,t.contains=D,t.rmClass=P,t.keyNames=Ls}ol.prototype.init=function(t){var e=this,n=this,r=this.cm;this.createField(t);var i=this.textarea;function o(t){if(!yt(r,t)){if(r.somethingSelected())Ba({lineWise:!1,text:r.getSelections()});else{if(!r.options.lineWiseCopyCut)return;var e=$a(r);Ba({lineWise:!0,text:e.text}),"cut"==t.type?r.setSelections(e.ranges,null,z):(n.prevInput="",i.value=e.text.join("\n"),R(i))}"cut"==t.type&&(r.state.cutIncoming=+new Date)}}t.wrapper.insertBefore(this.wrapper,t.wrapper.firstChild),g&&(i.style.width="0px"),pt(i,"input",(function(){s&&a>=9&&e.hasSelection&&(e.hasSelection=null),n.poll()})),pt(i,"paste",(function(t){yt(r,t)||Ua(t,r)||(r.state.pasteIncoming=+new Date,n.fastPoll())})),pt(i,"cut",o),pt(i,"copy",o),pt(t.scroller,"paste",(function(e){if(!Un(t,e)&&!yt(r,e)){if(!i.dispatchEvent)return r.state.pasteIncoming=+new Date,void n.focus();var o=new Event("paste");o.clipboardData=e.clipboardData,i.dispatchEvent(o)}})),pt(t.lineSpace,"selectstart",(function(e){Un(t,e)||Ot(e)})),pt(i,"compositionstart",(function(){var t=r.getCursor("from");n.composing&&n.composing.range.clear(),n.composing={start:t,range:r.markText(t,r.getCursor("to"),{className:"CodeMirror-composing"})}})),pt(i,"compositionend",(function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)}))},ol.prototype.createField=function(t){this.wrapper=Ga(),this.textarea=this.wrapper.firstChild},ol.prototype.screenReaderLabelChanged=function(t){t?this.textarea.setAttribute('aria-label',t):this.textarea.removeAttribute('aria-label')},ol.prototype.prepareSelection=function(){var t=this.cm,e=t.display,n=t.doc,r=Ur(t);if(t.options.moveInputWithCursor){var i=br(t,n.sel.primary().head,"div"),o=e.wrapper.getBoundingClientRect(),s=e.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(e.wrapper.clientHeight-10,i.top+s.top-o.top)),r.teLeft=Math.max(0,Math.min(e.wrapper.clientWidth-10,i.left+s.left-o.left))}return r},ol.prototype.showSelection=function(t){var e=this.cm.display;T(e.cursorDiv,t.cursors),T(e.selectionDiv,t.selection),null!=t.teTop&&(this.wrapper.style.top=t.teTop+"px",this.wrapper.style.left=t.teLeft+"px")},ol.prototype.reset=function(t){if(!this.contextMenuPending&&!this.composing){var e=this.cm;if(e.somethingSelected()){this.prevInput="";var n=e.getSelection();this.textarea.value=n,e.state.focused&&R(this.textarea),s&&a>=9&&(this.hasSelection=n)}else t||(this.prevInput=this.textarea.value="",s&&a>=9&&(this.hasSelection=null))}},ol.prototype.getField=function(){return this.textarea},ol.prototype.supportsTouch=function(){return!1},ol.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!m||M()!=this.textarea))try{this.textarea.focus()}catch(t){}},ol.prototype.blur=function(){this.textarea.blur()},ol.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},ol.prototype.receivedFocus=function(){this.slowPoll()},ol.prototype.slowPoll=function(){var t=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,(function(){t.poll(),t.cm.state.focused&&t.slowPoll()}))},ol.prototype.fastPoll=function(){var t=!1,e=this;function n(){e.poll()||t?(e.pollingFast=!1,e.slowPoll()):(t=!0,e.polling.set(60,n))}e.pollingFast=!0,e.polling.set(20,n)},ol.prototype.poll=function(){var t=this,e=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||!e.state.focused||Rt(n)&&!r&&!this.composing||e.isReadOnly()||e.options.disableInput||e.state.keySeq)return!1;var i=n.value;if(i==r&&!e.somethingSelected())return!1;if(s&&a>=9&&this.hasSelection===i||y&&/[\uf700-\uf7ff]/.test(i))return e.display.input.reset(),!1;if(e.doc.sel==e.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||r||(r="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var l=0,c=Math.min(r.length,i.length);l1e3||i.indexOf("\n")>-1?n.value=t.prevInput="":t.prevInput=i,t.composing&&(t.composing.range.clear(),t.composing.range=e.markText(t.composing.start,e.getCursor("to"),{className:"CodeMirror-composing"}))})),!0},ol.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},ol.prototype.onKeyPress=function(){s&&a>=9&&(this.hasSelection=null),this.fastPoll()},ol.prototype.onContextMenu=function(t){var e=this,n=e.cm,r=n.display,i=e.textarea;e.contextMenuPending&&e.contextMenuPending();var o=Rr(n,t),c=r.scroller.scrollTop;if(o&&!h){n.options.resetSelectionOnContextMenu&&-1==n.doc.sel.contains(o)&&Mi(n,Bo)(n.doc,ao(o),z);var u,f=i.style.cssText,d=e.wrapper.style.cssText,p=e.wrapper.offsetParent.getBoundingClientRect();if(e.wrapper.style.cssText="position: static",i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(t.clientY-p.top-5)+"px; left: "+(t.clientX-p.left-5)+"px;\n z-index: 1000; background: "+(s?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",l&&(u=window.scrollY),r.input.focus(),l&&window.scrollTo(null,u),r.input.reset(),n.somethingSelected()||(i.value=e.prevInput=" "),e.contextMenuPending=m,r.selForContextMenu=n.doc.sel,clearTimeout(r.detectingSelectAll),s&&a>=9&&v(),C){St(t);var g=function(){vt(window,"mouseup",g),setTimeout(m,20)};pt(window,"mouseup",g)}else setTimeout(m,50)}function v(){if(null!=i.selectionStart){var t=n.somethingSelected(),o="​"+(t?i.value:"");i.value="⇚",i.value=o,e.prevInput=t?"":"​",i.selectionStart=1,i.selectionEnd=o.length,r.selForContextMenu=n.doc.sel}}function m(){if(e.contextMenuPending==m&&(e.contextMenuPending=!1,e.wrapper.style.cssText=d,i.style.cssText=f,s&&a<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=c),null!=i.selectionStart)){(!s||s&&a<9)&&v();var t=0,o=function(){r.selForContextMenu==n.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==e.prevInput?Mi(n,Yo)(n):t++<10?r.detectingSelectAll=setTimeout(o,500):(r.selForContextMenu=null,r.input.reset())};r.detectingSelectAll=setTimeout(o,200)}}},ol.prototype.readOnlyChanged=function(t){t||this.reset(),this.textarea.disabled="nocursor"==t,this.textarea.readOnly=!!t},ol.prototype.setUneditable=function(){},ol.prototype.needsContentAttribute=!1,La(Za),Ka(Za);var ll="iter insert remove copy getEditor constructor".split(" ");for(var cl in Cs.prototype)Cs.prototype.hasOwnProperty(cl)&&V(ll,cl)<0&&(Za.prototype[cl]=function(t){return function(){return t.apply(this.doc,arguments)}}(Cs.prototype[cl]));return xt(Cs),Za.inputStyles={textarea:ol,contenteditable:Xa},Za.defineMode=function(t){Za.defaults.mode||"null"==t||(Za.defaults.mode=t),Ht.apply(this,arguments)},Za.defineMIME=Bt,Za.defineMode("null",(function(){return{token:function(t){return t.skipToEnd()}}})),Za.defineMIME("text/plain","null"),Za.defineExtension=function(t,e){Za.prototype[t]=e},Za.defineDocExtension=function(t,e){Cs.prototype[t]=e},Za.fromTextArea=sl,al(Za),Za.version="5.63.0",Za}()},6629:(t,e,n)=>{!function(t){"use strict";function e(t){for(var e={},n=0;n*\/]/.test(n)?O(null,"select-op"):"."==n&&t.match(/^-?[_a-z][_a-z0-9-]*/i)?O("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(n)?O(null,n):t.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(t.current())&&(e.tokenize=S),O("variable callee","variable")):/[\w\\\-]/.test(n)?(t.eatWhile(/[\w\\\-]/),O("property","word")):O(null,null):/[\d.]/.test(t.peek())?(t.eatWhile(/[\w.%]/),O("number","unit")):t.match(/^-[\w\\\-]*/)?(t.eatWhile(/[\w\\\-]/),t.match(/^\s*:/,!1)?O("variable-2","variable-definition"):O("variable-2","variable")):t.match(/^\w+-/)?O("meta","meta"):void 0}function k(t){return function(e,n){for(var r,i=!1;null!=(r=e.next());){if(r==t&&!i){")"==t&&e.backUp(1);break}i=!i&&"\\"==r}return(r==t||!i&&")"!=t)&&(n.tokenize=null),O("string","string")}}function S(t,e){return t.next(),t.match(/^\s*[\"\')]/,!1)?e.tokenize=null:e.tokenize=k(")"),O(null,"(")}function P(t,e,n){this.type=t,this.indent=e,this.prev=n}function _(t,e,n,r){return t.context=new P(n,e.indentation()+(!1===r?0:s),t.context),n}function T(t){return t.context.prev&&(t.context=t.context.prev),t.context.type}function E(t,e,n){return M[n.context.type](t,e,n)}function j(t,e,n,r){for(var i=r||1;i>0;i--)n.context=n.context.prev;return E(t,e,n)}function D(t){var e=t.current().toLowerCase();o=m.hasOwnProperty(e)?"atom":v.hasOwnProperty(e)?"keyword":"variable"}var M={top:function(t,e,n){if("{"==t)return _(n,e,"block");if("}"==t&&n.context.prev)return T(n);if(w&&/@component/i.test(t))return _(n,e,"atComponentBlock");if(/^@(-moz-)?document$/i.test(t))return _(n,e,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(t))return _(n,e,"atBlock");if(/^@(font-face|counter-style)/i.test(t))return n.stateArg=t,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(t))return"keyframes";if(t&&"@"==t.charAt(0))return _(n,e,"at");if("hash"==t)o="builtin";else if("word"==t)o="tag";else{if("variable-definition"==t)return"maybeprop";if("interpolation"==t)return _(n,e,"interpolation");if(":"==t)return"pseudo";if(y&&"("==t)return _(n,e,"parens")}return n.context.type},block:function(t,e,n){if("word"==t){var r=e.current().toLowerCase();return f.hasOwnProperty(r)?(o="property","maybeprop"):d.hasOwnProperty(r)?(o=x?"string-2":"property","maybeprop"):y?(o=e.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(o+=" error","maybeprop")}return"meta"==t?"block":y||"hash"!=t&&"qualifier"!=t?M.top(t,e,n):(o="error","block")},maybeprop:function(t,e,n){return":"==t?_(n,e,"prop"):E(t,e,n)},prop:function(t,e,n){if(";"==t)return T(n);if("{"==t&&y)return _(n,e,"propBlock");if("}"==t||"{"==t)return j(t,e,n);if("("==t)return _(n,e,"parens");if("hash"!=t||/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(e.current())){if("word"==t)D(e);else if("interpolation"==t)return _(n,e,"interpolation")}else o+=" error";return"prop"},propBlock:function(t,e,n){return"}"==t?T(n):"word"==t?(o="property","maybeprop"):n.context.type},parens:function(t,e,n){return"{"==t||"}"==t?j(t,e,n):")"==t?T(n):"("==t?_(n,e,"parens"):"interpolation"==t?_(n,e,"interpolation"):("word"==t&&D(e),"parens")},pseudo:function(t,e,n){return"meta"==t?"pseudo":"word"==t?(o="variable-3",n.context.type):E(t,e,n)},documentTypes:function(t,e,n){return"word"==t&&l.hasOwnProperty(e.current())?(o="tag",n.context.type):M.atBlock(t,e,n)},atBlock:function(t,e,n){if("("==t)return _(n,e,"atBlock_parens");if("}"==t||";"==t)return j(t,e,n);if("{"==t)return T(n)&&_(n,e,y?"block":"top");if("interpolation"==t)return _(n,e,"interpolation");if("word"==t){var r=e.current().toLowerCase();o="only"==r||"not"==r||"and"==r||"or"==r?"keyword":c.hasOwnProperty(r)?"attribute":u.hasOwnProperty(r)?"property":h.hasOwnProperty(r)?"keyword":f.hasOwnProperty(r)?"property":d.hasOwnProperty(r)?x?"string-2":"property":m.hasOwnProperty(r)?"atom":v.hasOwnProperty(r)?"keyword":"error"}return n.context.type},atComponentBlock:function(t,e,n){return"}"==t?j(t,e,n):"{"==t?T(n)&&_(n,e,y?"block":"top",!1):("word"==t&&(o="error"),n.context.type)},atBlock_parens:function(t,e,n){return")"==t?T(n):"{"==t||"}"==t?j(t,e,n,2):M.atBlock(t,e,n)},restricted_atBlock_before:function(t,e,n){return"{"==t?_(n,e,"restricted_atBlock"):"word"==t&&"@counter-style"==n.stateArg?(o="variable","restricted_atBlock_before"):E(t,e,n)},restricted_atBlock:function(t,e,n){return"}"==t?(n.stateArg=null,T(n)):"word"==t?(o="@font-face"==n.stateArg&&!p.hasOwnProperty(e.current().toLowerCase())||"@counter-style"==n.stateArg&&!g.hasOwnProperty(e.current().toLowerCase())?"error":"property","maybeprop"):"restricted_atBlock"},keyframes:function(t,e,n){return"word"==t?(o="variable","keyframes"):"{"==t?_(n,e,"top"):E(t,e,n)},at:function(t,e,n){return";"==t?T(n):"{"==t||"}"==t?j(t,e,n):("word"==t?o="tag":"hash"==t&&(o="builtin"),"at")},interpolation:function(t,e,n){return"}"==t?T(n):"{"==t||";"==t?j(t,e,n):("word"==t?o="variable":"variable"!=t&&"("!=t&&")"!=t&&(o="error"),"interpolation")}};return{startState:function(t){return{tokenize:null,state:r?"block":"top",stateArg:null,context:new P(r?"block":"top",t||0,null)}},token:function(t,e){if(!e.tokenize&&t.eatSpace())return null;var n=(e.tokenize||C)(t,e);return n&&"object"==typeof n&&(i=n[1],n=n[0]),o=n,"comment"!=i&&(e.state=M[e.state](i,t,e)),o},indent:function(t,e){var n=t.context,r=e&&e.charAt(0),i=n.indent;return"prop"!=n.type||"}"!=r&&")"!=r||(n=n.prev),n.prev&&("}"!=r||"block"!=n.type&&"top"!=n.type&&"interpolation"!=n.type&&"restricted_atBlock"!=n.type?(")"!=r||"parens"!=n.type&&"atBlock_parens"!=n.type)&&("{"!=r||"at"!=n.type&&"atBlock"!=n.type)||(i=Math.max(0,n.indent-s)):i=(n=n.prev).indent),i},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:b,fold:"brace"}}));var n=["domain","regexp","url","url-prefix"],r=e(n),i=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],o=e(i),s=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","orientation","device-pixel-ratio","min-device-pixel-ratio","max-device-pixel-ratio","pointer","any-pointer","hover","any-hover","prefers-color-scheme"],a=e(s),l=["landscape","portrait","none","coarse","fine","on-demand","hover","interlace","progressive","dark","light"],c=e(l),u=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","all","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","binding","bleed","block-size","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-content","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-gap","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-gap","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","left","letter-spacing","line-break","line-height","line-height-step","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","place-content","place-items","place-self","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotate","rotation","rotation-point","row-gap","ruby-align","ruby-overhang","ruby-position","ruby-span","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-type","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-orientation","text-outline","text-overflow","text-rendering","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","touch-action","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-select","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","paint-order","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode"],h=e(u),f=["accent-color","aspect-ratio","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","content-visibility","margin-block","margin-block-end","margin-block-start","margin-inline","margin-inline-end","margin-inline-start","overflow-anchor","overscroll-behavior","padding-block","padding-block-end","padding-block-start","padding-inline","padding-inline-end","padding-inline-start","scroll-snap-stop","scrollbar-3d-light-color","scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-track-color","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","shape-inside","zoom"],d=e(f),p=e(["font-display","font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"]),g=e(["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"]),v=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],m=e(v),y=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","blur","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","brightness","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","contrast","copy","counter","counters","cover","crop","cross","crosshair","cubic-bezier","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","devanagari","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","drop-shadow","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","georgian","grayscale","graytext","grid","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hard-light","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","hue","hue-rotate","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","luminosity","malayalam","manipulation","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","multiple_mask_images","multiply","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","opacity","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturate","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","self-start","self-end","semi-condensed","semi-expanded","separate","sepia","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","somali","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","square-button","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"],b=e(y),w=n.concat(i).concat(s).concat(l).concat(u).concat(f).concat(v).concat(y);function x(t,e){for(var n,r=!1;null!=(n=t.next());){if(r&&"/"==n){e.tokenize=null;break}r="*"==n}return["comment","comment"]}t.registerHelper("hintWords","css",w),t.defineMIME("text/css",{documentTypes:r,mediaTypes:o,mediaFeatures:a,mediaValueKeywords:c,propertyKeywords:h,nonStandardPropertyKeywords:d,fontProperties:p,counterDescriptors:g,colorKeywords:m,valueKeywords:b,tokenHooks:{"/":function(t,e){return!!t.eat("*")&&(e.tokenize=x,x(t,e))}},name:"css"}),t.defineMIME("text/x-scss",{mediaTypes:o,mediaFeatures:a,mediaValueKeywords:c,propertyKeywords:h,nonStandardPropertyKeywords:d,colorKeywords:m,valueKeywords:b,fontProperties:p,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(t,e){return t.eat("/")?(t.skipToEnd(),["comment","comment"]):t.eat("*")?(e.tokenize=x,x(t,e)):["operator","operator"]},":":function(t){return!!t.match(/^\s*\{/,!1)&&[null,null]},$:function(t){return t.match(/^[\w-]+/),t.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"]},"#":function(t){return!!t.eat("{")&&[null,"interpolation"]}},name:"css",helperType:"scss"}),t.defineMIME("text/x-less",{mediaTypes:o,mediaFeatures:a,mediaValueKeywords:c,propertyKeywords:h,nonStandardPropertyKeywords:d,colorKeywords:m,valueKeywords:b,fontProperties:p,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(t,e){return t.eat("/")?(t.skipToEnd(),["comment","comment"]):t.eat("*")?(e.tokenize=x,x(t,e)):["operator","operator"]},"@":function(t){return t.eat("{")?[null,"interpolation"]:!t.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i,!1)&&(t.eatWhile(/[\w\\\-]/),t.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"])},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"}),t.defineMIME("text/x-gss",{documentTypes:r,mediaTypes:o,mediaFeatures:a,propertyKeywords:h,nonStandardPropertyKeywords:d,fontProperties:p,counterDescriptors:g,colorKeywords:m,valueKeywords:b,supportsAtComponent:!0,tokenHooks:{"/":function(t,e){return!!t.eat("*")&&(e.tokenize=x,x(t,e))}},name:"css",helperType:"gss"})}(n(4631))},6531:(t,e,n)=>{!function(t){"use strict";var e={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]};function n(t,e,n){var r=t.current(),i=r.search(e);return i>-1?t.backUp(r.length-i):r.match(/<\/?$/)&&(t.backUp(r.length),t.match(e,!1)||t.match(r)),n}var r={};function i(t){var e=r[t];return e||(r[t]=new RegExp("\\s+"+t+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"))}function o(t,e){var n=t.match(i(e));return n?/^\s*(.*?)\s*$/.exec(n[2])[1]:""}function s(t,e){return new RegExp((e?"^":"")+"","i")}function a(t,e){for(var n in t)for(var r=e[n]||(e[n]=[]),i=t[n],o=i.length-1;o>=0;o--)r.unshift(i[o])}function l(t,e){for(var n=0;n=0;f--)c.script.unshift(["type",h[f].matches,h[f].mode]);function d(e,i){var a,u=o.token(e,i.htmlState),h=/\btag\b/.test(u);if(h&&!/[<>\s\/]/.test(e.current())&&(a=i.htmlState.tagName&&i.htmlState.tagName.toLowerCase())&&c.hasOwnProperty(a))i.inTag=a+" ";else if(i.inTag&&h&&/>$/.test(e.current())){var f=/^([\S]+) (.*)/.exec(i.inTag);i.inTag=null;var p=">"==e.current()&&l(c[f[1]],f[2]),g=t.getMode(r,p),v=s(f[1],!0),m=s(f[1],!1);i.token=function(t,e){return t.match(v,!1)?(e.token=d,e.localState=e.localMode=null,null):n(t,m,e.localMode.token(t,e.localState))},i.localMode=g,i.localState=t.startState(g,o.indent(i.htmlState,"",""))}else i.inTag&&(i.inTag+=e.current(),e.eol()&&(i.inTag+=" "));return u}return{startState:function(){return{token:d,inTag:null,localMode:null,localState:null,htmlState:t.startState(o)}},copyState:function(e){var n;return e.localState&&(n=t.copyState(e.localMode,e.localState)),{token:e.token,inTag:e.inTag,localMode:e.localMode,localState:n,htmlState:t.copyState(o,e.htmlState)}},token:function(t,e){return e.token(t,e)},indent:function(e,n,r){return!e.localMode||/^\s*<\//.test(n)?o.indent(e.htmlState,n,r):e.localMode.indent?e.localMode.indent(e.localState,n,r):t.Pass},innerMode:function(t){return{state:t.localState||t.htmlState,mode:t.localMode||o}}}}),"xml","javascript","css"),t.defineMIME("text/html","htmlmixed")}(n(4631),n(9589),n(6876),n(6629))},6876:(t,e,n)=>{!function(t){"use strict";t.defineMode("javascript",(function(e,n){var r,i,o=e.indentUnit,s=n.statementIndent,a=n.jsonld,l=n.json||a,c=!1!==n.trackScope,u=n.typescript,h=n.wordCharacters||/[\w$\xa1-\uffff]/,f=function(){function t(t){return{type:t,style:"keyword"}}var e=t("keyword a"),n=t("keyword b"),r=t("keyword c"),i=t("keyword d"),o=t("operator"),s={type:"atom",style:"atom"};return{if:t("if"),while:e,with:e,else:n,do:n,try:n,finally:n,return:i,break:i,continue:i,new:t("new"),delete:r,void:r,throw:r,debugger:t("debugger"),var:t("var"),const:t("var"),let:t("var"),function:t("function"),catch:t("catch"),for:t("for"),switch:t("switch"),case:t("case"),default:t("default"),in:o,typeof:o,instanceof:o,true:s,false:s,null:s,undefined:s,NaN:s,Infinity:s,this:t("this"),class:t("class"),super:t("atom"),yield:r,export:t("export"),import:t("import"),extends:r,await:r}}(),d=/[+\-*&%=<>!?|~^@]/,p=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function g(t){for(var e,n=!1,r=!1;null!=(e=t.next());){if(!n){if("/"==e&&!r)return;"["==e?r=!0:r&&"]"==e&&(r=!1)}n=!n&&"\\"==e}}function v(t,e,n){return r=t,i=n,e}function m(t,e){var n=t.next();if('"'==n||"'"==n)return e.tokenize=y(n),e.tokenize(t,e);if("."==n&&t.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return v("number","number");if("."==n&&t.match(".."))return v("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(n))return v(n);if("="==n&&t.eat(">"))return v("=>","operator");if("0"==n&&t.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return v("number","number");if(/\d/.test(n))return t.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),v("number","number");if("/"==n)return t.eat("*")?(e.tokenize=b,b(t,e)):t.eat("/")?(t.skipToEnd(),v("comment","comment")):ie(t,e,1)?(g(t),t.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),v("regexp","string-2")):(t.eat("="),v("operator","operator",t.current()));if("`"==n)return e.tokenize=w,w(t,e);if("#"==n&&"!"==t.peek())return t.skipToEnd(),v("meta","meta");if("#"==n&&t.eatWhile(h))return v("variable","property");if("<"==n&&t.match("!--")||"-"==n&&t.match("->")&&!/\S/.test(t.string.slice(0,t.start)))return t.skipToEnd(),v("comment","comment");if(d.test(n))return">"==n&&e.lexical&&">"==e.lexical.type||(t.eat("=")?"!"!=n&&"="!=n||t.eat("="):/[<>*+\-|&?]/.test(n)&&(t.eat(n),">"==n&&t.eat(n))),"?"==n&&t.eat(".")?v("."):v("operator","operator",t.current());if(h.test(n)){t.eatWhile(h);var r=t.current();if("."!=e.lastType){if(f.propertyIsEnumerable(r)){var i=f[r];return v(i.type,i.style,r)}if("async"==r&&t.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return v("async","keyword",r)}return v("variable","variable",r)}}function y(t){return function(e,n){var r,i=!1;if(a&&"@"==e.peek()&&e.match(p))return n.tokenize=m,v("jsonld-keyword","meta");for(;null!=(r=e.next())&&(r!=t||i);)i=!i&&"\\"==r;return i||(n.tokenize=m),v("string","string")}}function b(t,e){for(var n,r=!1;n=t.next();){if("/"==n&&r){e.tokenize=m;break}r="*"==n}return v("comment","comment")}function w(t,e){for(var n,r=!1;null!=(n=t.next());){if(!r&&("`"==n||"$"==n&&t.eat("{"))){e.tokenize=m;break}r=!r&&"\\"==n}return v("quasi","string-2",t.current())}var x="([{}])";function O(t,e){e.fatArrowAt&&(e.fatArrowAt=null);var n=t.string.indexOf("=>",t.start);if(!(n<0)){if(u){var r=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(t.string.slice(t.start,n));r&&(n=r.index)}for(var i=0,o=!1,s=n-1;s>=0;--s){var a=t.string.charAt(s),l=x.indexOf(a);if(l>=0&&l<3){if(!i){++s;break}if(0==--i){"("==a&&(o=!0);break}}else if(l>=3&&l<6)++i;else if(h.test(a))o=!0;else if(/["'\/`]/.test(a))for(;;--s){if(0==s)return;if(t.string.charAt(s-1)==a&&"\\"!=t.string.charAt(s-2)){s--;break}}else if(o&&!i){++s;break}}o&&!i&&(e.fatArrowAt=s)}}var C={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function k(t,e,n,r,i,o){this.indented=t,this.column=e,this.type=n,this.prev=i,this.info=o,null!=r&&(this.align=r)}function S(t,e){if(!c)return!1;for(var n=t.localVars;n;n=n.next)if(n.name==e)return!0;for(var r=t.context;r;r=r.prev)for(n=r.vars;n;n=n.next)if(n.name==e)return!0}function P(t,e,n,r,i){var o=t.cc;for(_.state=t,_.stream=i,_.marked=null,_.cc=o,_.style=e,t.lexical.hasOwnProperty("align")||(t.lexical.align=!0);;)if((o.length?o.pop():l?W:z)(n,r)){for(;o.length&&o[o.length-1].lex;)o.pop()();return _.marked?_.marked:"variable"==n&&S(t,r)?"variable-2":e}}var _={state:null,column:null,marked:null,cc:null};function T(){for(var t=arguments.length-1;t>=0;t--)_.cc.push(arguments[t])}function E(){return T.apply(null,arguments),!0}function j(t,e){for(var n=e;n;n=n.next)if(n.name==t)return!0;return!1}function D(t){var e=_.state;if(_.marked="def",c){if(e.context)if("var"==e.lexical.info&&e.context&&e.context.block){var r=M(t,e.context);if(null!=r)return void(e.context=r)}else if(!j(t,e.localVars))return void(e.localVars=new R(t,e.localVars));n.globalVars&&!j(t,e.globalVars)&&(e.globalVars=new R(t,e.globalVars))}}function M(t,e){if(e){if(e.block){var n=M(t,e.prev);return n?n==e.prev?e:new L(n,e.vars,!0):null}return j(t,e.vars)?e:new L(e.prev,new R(t,e.vars),!1)}return null}function A(t){return"public"==t||"private"==t||"protected"==t||"abstract"==t||"readonly"==t}function L(t,e,n){this.prev=t,this.vars=e,this.block=n}function R(t,e){this.name=t,this.next=e}var N=new R("this",new R("arguments",null));function Z(){_.state.context=new L(_.state.context,_.state.localVars,!1),_.state.localVars=N}function I(){_.state.context=new L(_.state.context,_.state.localVars,!0),_.state.localVars=null}function F(){_.state.localVars=_.state.context.vars,_.state.context=_.state.context.prev}function V(t,e){var n=function(){var n=_.state,r=n.indented;if("stat"==n.lexical.type)r=n.lexical.indented;else for(var i=n.lexical;i&&")"==i.type&&i.align;i=i.prev)r=i.indented;n.lexical=new k(r,_.stream.column(),t,null,n.lexical,e)};return n.lex=!0,n}function H(){var t=_.state;t.lexical.prev&&(")"==t.lexical.type&&(t.indented=t.lexical.indented),t.lexical=t.lexical.prev)}function B(t){function e(n){return n==t?E():";"==t||"}"==n||")"==n||"]"==n?T():E(e)}return e}function z(t,e){return"var"==t?E(V("vardef",e),Tt,B(";"),H):"keyword a"==t?E(V("form"),q,z,H):"keyword b"==t?E(V("form"),z,H):"keyword d"==t?_.stream.match(/^\s*$/,!1)?E():E(V("stat"),K,B(";"),H):"debugger"==t?E(B(";")):"{"==t?E(V("}"),I,ft,H,F):";"==t?E():"if"==t?("else"==_.state.lexical.info&&_.state.cc[_.state.cc.length-1]==H&&_.state.cc.pop()(),E(V("form"),q,z,H,Lt)):"function"==t?E(It):"for"==t?E(V("form"),I,Rt,z,F,H):"class"==t||u&&"interface"==e?(_.marked="keyword",E(V("form","class"==t?t:e),zt,H)):"variable"==t?u&&"declare"==e?(_.marked="keyword",E(z)):u&&("module"==e||"enum"==e||"type"==e)&&_.stream.match(/^\s*\w/,!1)?(_.marked="keyword","enum"==e?E(ee):"type"==e?E(Vt,B("operator"),mt,B(";")):E(V("form"),Et,B("{"),V("}"),ft,H,H)):u&&"namespace"==e?(_.marked="keyword",E(V("form"),W,z,H)):u&&"abstract"==e?(_.marked="keyword",E(z)):E(V("stat"),ot):"switch"==t?E(V("form"),q,B("{"),V("}","switch"),I,ft,H,H,F):"case"==t?E(W,B(":")):"default"==t?E(B(":")):"catch"==t?E(V("form"),Z,U,z,H,F):"export"==t?E(V("stat"),qt,H):"import"==t?E(V("stat"),Kt,H):"async"==t?E(z):"@"==e?E(W,z):T(V("stat"),W,B(";"),H)}function U(t){if("("==t)return E(Ht,B(")"))}function W(t,e){return G(t,e,!1)}function $(t,e){return G(t,e,!0)}function q(t){return"("!=t?T():E(V(")"),K,B(")"),H)}function G(t,e,n){if(_.state.fatArrowAt==_.stream.start){var r=n?et:tt;if("("==t)return E(Z,V(")"),ut(Ht,")"),H,B("=>"),r,F);if("variable"==t)return T(Z,Et,B("=>"),r,F)}var i=n?J:Y;return C.hasOwnProperty(t)?E(i):"function"==t?E(It,i):"class"==t||u&&"interface"==e?(_.marked="keyword",E(V("form"),Bt,H)):"keyword c"==t||"async"==t?E(n?$:W):"("==t?E(V(")"),K,B(")"),H,i):"operator"==t||"spread"==t?E(n?$:W):"["==t?E(V("]"),te,H,i):"{"==t?ht(at,"}",null,i):"quasi"==t?T(X,i):"new"==t?E(nt(n)):E()}function K(t){return t.match(/[;\}\)\],]/)?T():T(W)}function Y(t,e){return","==t?E(K):J(t,e,!1)}function J(t,e,n){var r=0==n?Y:J,i=0==n?W:$;return"=>"==t?E(Z,n?et:tt,F):"operator"==t?/\+\+|--/.test(e)||u&&"!"==e?E(r):u&&"<"==e&&_.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?E(V(">"),ut(mt,">"),H,r):"?"==e?E(W,B(":"),i):E(i):"quasi"==t?T(X,r):";"!=t?"("==t?ht($,")","call",r):"."==t?E(st,r):"["==t?E(V("]"),K,B("]"),H,r):u&&"as"==e?(_.marked="keyword",E(mt,r)):"regexp"==t?(_.state.lastType=_.marked="operator",_.stream.backUp(_.stream.pos-_.stream.start-1),E(i)):void 0:void 0}function X(t,e){return"quasi"!=t?T():"${"!=e.slice(e.length-2)?E(X):E(K,Q)}function Q(t){if("}"==t)return _.marked="string-2",_.state.tokenize=w,E(X)}function tt(t){return O(_.stream,_.state),T("{"==t?z:W)}function et(t){return O(_.stream,_.state),T("{"==t?z:$)}function nt(t){return function(e){return"."==e?E(t?it:rt):"variable"==e&&u?E(St,t?J:Y):T(t?$:W)}}function rt(t,e){if("target"==e)return _.marked="keyword",E(Y)}function it(t,e){if("target"==e)return _.marked="keyword",E(J)}function ot(t){return":"==t?E(H,z):T(Y,B(";"),H)}function st(t){if("variable"==t)return _.marked="property",E()}function at(t,e){return"async"==t?(_.marked="property",E(at)):"variable"==t||"keyword"==_.style?(_.marked="property","get"==e||"set"==e?E(lt):(u&&_.state.fatArrowAt==_.stream.start&&(n=_.stream.match(/^\s*:\s*/,!1))&&(_.state.fatArrowAt=_.stream.pos+n[0].length),E(ct))):"number"==t||"string"==t?(_.marked=a?"property":_.style+" property",E(ct)):"jsonld-keyword"==t?E(ct):u&&A(e)?(_.marked="keyword",E(at)):"["==t?E(W,dt,B("]"),ct):"spread"==t?E($,ct):"*"==e?(_.marked="keyword",E(at)):":"==t?T(ct):void 0;var n}function lt(t){return"variable"!=t?T(ct):(_.marked="property",E(It))}function ct(t){return":"==t?E($):"("==t?T(It):void 0}function ut(t,e,n){function r(i,o){if(n?n.indexOf(i)>-1:","==i){var s=_.state.lexical;return"call"==s.info&&(s.pos=(s.pos||0)+1),E((function(n,r){return n==e||r==e?T():T(t)}),r)}return i==e||o==e?E():n&&n.indexOf(";")>-1?T(t):E(B(e))}return function(n,i){return n==e||i==e?E():T(t,r)}}function ht(t,e,n){for(var r=3;r"),mt):"quasi"==t?T(xt,kt):void 0}function yt(t){if("=>"==t)return E(mt)}function bt(t){return t.match(/[\}\)\]]/)?E():","==t||";"==t?E(bt):T(wt,bt)}function wt(t,e){return"variable"==t||"keyword"==_.style?(_.marked="property",E(wt)):"?"==e||"number"==t||"string"==t?E(wt):":"==t?E(mt):"["==t?E(B("variable"),pt,B("]"),wt):"("==t?T(Ft,wt):t.match(/[;\}\)\],]/)?void 0:E()}function xt(t,e){return"quasi"!=t?T():"${"!=e.slice(e.length-2)?E(xt):E(mt,Ot)}function Ot(t){if("}"==t)return _.marked="string-2",_.state.tokenize=w,E(xt)}function Ct(t,e){return"variable"==t&&_.stream.match(/^\s*[?:]/,!1)||"?"==e?E(Ct):":"==t?E(mt):"spread"==t?E(Ct):T(mt)}function kt(t,e){return"<"==e?E(V(">"),ut(mt,">"),H,kt):"|"==e||"."==t||"&"==e?E(mt):"["==t?E(mt,B("]"),kt):"extends"==e||"implements"==e?(_.marked="keyword",E(mt)):"?"==e?E(mt,B(":"),mt):void 0}function St(t,e){if("<"==e)return E(V(">"),ut(mt,">"),H,kt)}function Pt(){return T(mt,_t)}function _t(t,e){if("="==e)return E(mt)}function Tt(t,e){return"enum"==e?(_.marked="keyword",E(ee)):T(Et,dt,Mt,At)}function Et(t,e){return u&&A(e)?(_.marked="keyword",E(Et)):"variable"==t?(D(e),E()):"spread"==t?E(Et):"["==t?ht(Dt,"]"):"{"==t?ht(jt,"}"):void 0}function jt(t,e){return"variable"!=t||_.stream.match(/^\s*:/,!1)?("variable"==t&&(_.marked="property"),"spread"==t?E(Et):"}"==t?T():"["==t?E(W,B(']'),B(':'),jt):E(B(":"),Et,Mt)):(D(e),E(Mt))}function Dt(){return T(Et,Mt)}function Mt(t,e){if("="==e)return E($)}function At(t){if(","==t)return E(Tt)}function Lt(t,e){if("keyword b"==t&&"else"==e)return E(V("form","else"),z,H)}function Rt(t,e){return"await"==e?E(Rt):"("==t?E(V(")"),Nt,H):void 0}function Nt(t){return"var"==t?E(Tt,Zt):"variable"==t?E(Zt):T(Zt)}function Zt(t,e){return")"==t?E():";"==t?E(Zt):"in"==e||"of"==e?(_.marked="keyword",E(W,Zt)):T(W,Zt)}function It(t,e){return"*"==e?(_.marked="keyword",E(It)):"variable"==t?(D(e),E(It)):"("==t?E(Z,V(")"),ut(Ht,")"),H,gt,z,F):u&&"<"==e?E(V(">"),ut(Pt,">"),H,It):void 0}function Ft(t,e){return"*"==e?(_.marked="keyword",E(Ft)):"variable"==t?(D(e),E(Ft)):"("==t?E(Z,V(")"),ut(Ht,")"),H,gt,F):u&&"<"==e?E(V(">"),ut(Pt,">"),H,Ft):void 0}function Vt(t,e){return"keyword"==t||"variable"==t?(_.marked="type",E(Vt)):"<"==e?E(V(">"),ut(Pt,">"),H):void 0}function Ht(t,e){return"@"==e&&E(W,Ht),"spread"==t?E(Ht):u&&A(e)?(_.marked="keyword",E(Ht)):u&&"this"==t?E(dt,Mt):T(Et,dt,Mt)}function Bt(t,e){return"variable"==t?zt(t,e):Ut(t,e)}function zt(t,e){if("variable"==t)return D(e),E(Ut)}function Ut(t,e){return"<"==e?E(V(">"),ut(Pt,">"),H,Ut):"extends"==e||"implements"==e||u&&","==t?("implements"==e&&(_.marked="keyword"),E(u?mt:W,Ut)):"{"==t?E(V("}"),Wt,H):void 0}function Wt(t,e){return"async"==t||"variable"==t&&("static"==e||"get"==e||"set"==e||u&&A(e))&&_.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(_.marked="keyword",E(Wt)):"variable"==t||"keyword"==_.style?(_.marked="property",E($t,Wt)):"number"==t||"string"==t?E($t,Wt):"["==t?E(W,dt,B("]"),$t,Wt):"*"==e?(_.marked="keyword",E(Wt)):u&&"("==t?T(Ft,Wt):";"==t||","==t?E(Wt):"}"==t?E():"@"==e?E(W,Wt):void 0}function $t(t,e){if("!"==e)return E($t);if("?"==e)return E($t);if(":"==t)return E(mt,Mt);if("="==e)return E($);var n=_.state.lexical.prev;return T(n&&"interface"==n.info?Ft:It)}function qt(t,e){return"*"==e?(_.marked="keyword",E(Qt,B(";"))):"default"==e?(_.marked="keyword",E(W,B(";"))):"{"==t?E(ut(Gt,"}"),Qt,B(";")):T(z)}function Gt(t,e){return"as"==e?(_.marked="keyword",E(B("variable"))):"variable"==t?T($,Gt):void 0}function Kt(t){return"string"==t?E():"("==t?T(W):"."==t?T(Y):T(Yt,Jt,Qt)}function Yt(t,e){return"{"==t?ht(Yt,"}"):("variable"==t&&D(e),"*"==e&&(_.marked="keyword"),E(Xt))}function Jt(t){if(","==t)return E(Yt,Jt)}function Xt(t,e){if("as"==e)return _.marked="keyword",E(Yt)}function Qt(t,e){if("from"==e)return _.marked="keyword",E(W)}function te(t){return"]"==t?E():T(ut($,"]"))}function ee(){return T(V("form"),Et,B("{"),V("}"),ut(ne,"}"),H,H)}function ne(){return T(Et,Mt)}function re(t,e){return"operator"==t.lastType||","==t.lastType||d.test(e.charAt(0))||/[,.]/.test(e.charAt(0))}function ie(t,e,n){return e.tokenize==m&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(e.lastType)||"quasi"==e.lastType&&/\{\s*$/.test(t.string.slice(0,t.pos-(n||0)))}return F.lex=!0,H.lex=!0,{startState:function(t){var e={tokenize:m,lastType:"sof",cc:[],lexical:new k((t||0)-o,0,"block",!1),localVars:n.localVars,context:n.localVars&&new L(null,null,!1),indented:t||0};return n.globalVars&&"object"==typeof n.globalVars&&(e.globalVars=n.globalVars),e},token:function(t,e){if(t.sol()&&(e.lexical.hasOwnProperty("align")||(e.lexical.align=!1),e.indented=t.indentation(),O(t,e)),e.tokenize!=b&&t.eatSpace())return null;var n=e.tokenize(t,e);return"comment"==r?n:(e.lastType="operator"!=r||"++"!=i&&"--"!=i?r:"incdec",P(e,n,r,i,t))},indent:function(e,r){if(e.tokenize==b||e.tokenize==w)return t.Pass;if(e.tokenize!=m)return 0;var i,a=r&&r.charAt(0),l=e.lexical;if(!/^\s*else\b/.test(r))for(var c=e.cc.length-1;c>=0;--c){var u=e.cc[c];if(u==H)l=l.prev;else if(u!=Lt&&u!=F)break}for(;("stat"==l.type||"form"==l.type)&&("}"==a||(i=e.cc[e.cc.length-1])&&(i==Y||i==J)&&!/^[,\.=+\-*:?[\(]/.test(r));)l=l.prev;s&&")"==l.type&&"stat"==l.prev.type&&(l=l.prev);var h=l.type,f=a==h;return"vardef"==h?l.indented+("operator"==e.lastType||","==e.lastType?l.info.length+1:0):"form"==h&&"{"==a?l.indented:"form"==h?l.indented+o:"stat"==h?l.indented+(re(e,r)?s||o:0):"switch"!=l.info||f||0==n.doubleIndentSwitch?l.align?l.column+(f?0:1):l.indented+(f?0:o):l.indented+(/^(?:case|default)\b/.test(r)?o:2*o)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:l?null:"/*",blockCommentEnd:l?null:"*/",blockCommentContinue:l?null:" * ",lineComment:l?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:l?"json":"javascript",jsonldMode:a,jsonMode:l,expressionAllowed:ie,skipExpression:function(e){P(e,"atom","atom","true",new t.StringStream("",2,null))}}})),t.registerHelper("wordChars","javascript",/[\w$]/),t.defineMIME("text/javascript","javascript"),t.defineMIME("text/ecmascript","javascript"),t.defineMIME("application/javascript","javascript"),t.defineMIME("application/x-javascript","javascript"),t.defineMIME("application/ecmascript","javascript"),t.defineMIME("application/json",{name:"javascript",json:!0}),t.defineMIME("application/x-json",{name:"javascript",json:!0}),t.defineMIME("application/manifest+json",{name:"javascript",json:!0}),t.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),t.defineMIME("text/typescript",{name:"javascript",typescript:!0}),t.defineMIME("application/typescript",{name:"javascript",typescript:!0})}(n(4631))},9589:(t,e,n)=>{!function(t){"use strict";var e={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},n={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};t.defineMode("xml",(function(r,i){var o,s,a=r.indentUnit,l={},c=i.htmlMode?e:n;for(var u in c)l[u]=c[u];for(var u in i)l[u]=i[u];function h(t,e){function n(n){return e.tokenize=n,n(t,e)}var r=t.next();return"<"==r?t.eat("!")?t.eat("[")?t.match("CDATA[")?n(p("atom","]]>")):null:t.match("--")?n(p("comment","--\x3e")):t.match("DOCTYPE",!0,!0)?(t.eatWhile(/[\w\._\-]/),n(g(1))):null:t.eat("?")?(t.eatWhile(/[\w\._\-]/),e.tokenize=p("meta","?>"),"meta"):(o=t.eat("/")?"closeTag":"openTag",e.tokenize=f,"tag bracket"):"&"==r?(t.eat("#")?t.eat("x")?t.eatWhile(/[a-fA-F\d]/)&&t.eat(";"):t.eatWhile(/[\d]/)&&t.eat(";"):t.eatWhile(/[\w\.\-:]/)&&t.eat(";"))?"atom":"error":(t.eatWhile(/[^&<]/),null)}function f(t,e){var n=t.next();if(">"==n||"/"==n&&t.eat(">"))return e.tokenize=h,o=">"==n?"endTag":"selfcloseTag","tag bracket";if("="==n)return o="equals",null;if("<"==n){e.tokenize=h,e.state=w,e.tagName=e.tagStart=null;var r=e.tokenize(t,e);return r?r+" tag error":"tag error"}return/[\'\"]/.test(n)?(e.tokenize=d(n),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function d(t){var e=function(e,n){for(;!e.eol();)if(e.next()==t){n.tokenize=f;break}return"string"};return e.isInAttribute=!0,e}function p(t,e){return function(n,r){for(;!n.eol();){if(n.match(e)){r.tokenize=h;break}n.next()}return t}}function g(t){return function(e,n){for(var r;null!=(r=e.next());){if("<"==r)return n.tokenize=g(t+1),n.tokenize(e,n);if(">"==r){if(1==t){n.tokenize=h;break}return n.tokenize=g(t-1),n.tokenize(e,n)}}return"meta"}}function v(t){return t&&t.toLowerCase()}function m(t,e,n){this.prev=t.context,this.tagName=e||"",this.indent=t.indented,this.startOfLine=n,(l.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}function y(t){t.context&&(t.context=t.context.prev)}function b(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName,!l.contextGrabbers.hasOwnProperty(v(n))||!l.contextGrabbers[v(n)].hasOwnProperty(v(e)))return;y(t)}}function w(t,e,n){return"openTag"==t?(n.tagStart=e.column(),x):"closeTag"==t?O:w}function x(t,e,n){return"word"==t?(n.tagName=e.current(),s="tag",S):l.allowMissingTagName&&"endTag"==t?(s="tag bracket",S(t,e,n)):(s="error",x)}function O(t,e,n){if("word"==t){var r=e.current();return n.context&&n.context.tagName!=r&&l.implicitlyClosed.hasOwnProperty(v(n.context.tagName))&&y(n),n.context&&n.context.tagName==r||!1===l.matchClosing?(s="tag",C):(s="tag error",k)}return l.allowMissingTagName&&"endTag"==t?(s="tag bracket",C(t,e,n)):(s="error",k)}function C(t,e,n){return"endTag"!=t?(s="error",C):(y(n),w)}function k(t,e,n){return s="error",C(t,e,n)}function S(t,e,n){if("word"==t)return s="attribute",P;if("endTag"==t||"selfcloseTag"==t){var r=n.tagName,i=n.tagStart;return n.tagName=n.tagStart=null,"selfcloseTag"==t||l.autoSelfClosers.hasOwnProperty(v(r))?b(n,r):(b(n,r),n.context=new m(n,r,i==n.indented)),w}return s="error",S}function P(t,e,n){return"equals"==t?_:(l.allowMissing||(s="error"),S(t,e,n))}function _(t,e,n){return"string"==t?T:"word"==t&&l.allowUnquoted?(s="string",S):(s="error",S(t,e,n))}function T(t,e,n){return"string"==t?T:S(t,e,n)}return h.isInText=!0,{startState:function(t){var e={tokenize:h,state:w,indented:t||0,tagName:null,tagStart:null,context:null};return null!=t&&(e.baseIndent=t),e},token:function(t,e){if(!e.tagName&&t.sol()&&(e.indented=t.indentation()),t.eatSpace())return null;o=null;var n=e.tokenize(t,e);return(n||o)&&"comment"!=n&&(s=null,e.state=e.state(o||n,t,e),s&&(n="error"==s?n+" error":s)),n},indent:function(e,n,r){var i=e.context;if(e.tokenize.isInAttribute)return e.tagStart==e.indented?e.stringStartCol+1:e.indented+a;if(i&&i.noIndent)return t.Pass;if(e.tokenize!=f&&e.tokenize!=h)return r?r.match(/^(\s*)/)[0].length:0;if(e.tagName)return!1!==l.multilineTagIndentPastTag?e.tagStart+e.tagName.length+2:e.tagStart+a*(l.multilineTagIndentFactor||1);if(l.alignCDATA&&/$/,blockCommentStart:"\x3c!--",blockCommentEnd:"--\x3e",configuration:l.htmlMode?"html":"xml",helperType:l.htmlMode?"html":"xml",skipAttribute:function(t){t.state==_&&(t.state=S)},xmlCurrentTag:function(t){return t.tagName?{name:t.tagName,close:"closeTag"==t.type}:null},xmlCurrentContext:function(t){for(var e=[],n=t.context;n;n=n.prev)e.push(n.tagName);return e.reverse()}}})),t.defineMIME("text/xml","xml"),t.defineMIME("application/xml","xml"),t.mimeModes.hasOwnProperty("text/html")||t.defineMIME("text/html",{name:"xml",htmlMode:!0})}(n(4631))},1030:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>Q,evAdd:()=>B,evAll:()=>I,evClose:()=>q,evCustom:()=>W,evOpen:()=>$,evPfx:()=>F,evRemove:()=>z,evRemoveBefore:()=>U,evSelect:()=>V,evUpdate:()=>H,evUpload:()=>G,evUploadEnd:()=>Y,evUploadError:()=>J,evUploadRes:()=>X,evUploadStart:()=>K});var r=n(4942),i=n(9050),o=n(9304);const s={assets:[],noAssets:'',stylePrefix:'am-',upload:0,uploadName:'files',headers:{},params:{},credentials:'include',multiUpload:!0,autoAdd:!0,customFetch:null,uploadFile:null,embedAsBase64:!0,handleAdd:null,beforeUpload:null,showUrlInput:!0,custom:!1,dropzone:!1,openAssetsOnDrop:1,dropzoneContent:''};var a=n(2316),l=n.n(a),c=n(5671),u=n(3144),h=n(9340),f=n(3930),d=n(1120);function p(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,d.Z)(t);if(e){var i=(0,d.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,f.Z)(this,n)}}var g=function(t){(0,h.Z)(n,t);var e=p(n);function n(){return(0,c.Z)(this,n),e.apply(this,arguments)}return(0,u.Z)(n,[{key:"defaults",value:function(){return{type:'',src:''}}},{key:"getType",value:function(){return this.get('type')}},{key:"getSrc",value:function(){return this.get('src')}},{key:"getFilename",value:function(){return this.get('src').split('/').pop().split('?').shift()}},{key:"getExtension",value:function(){return this.getFilename().split('.').pop()}}]),n}(a.Model);function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function m(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.options=t,this.collection=t.collection;var e=t.config||{};this.config=e,this.pfx=e.stylePrefix||'',this.ppfx=e.pStylePrefix||'',this.em=e.em,this.className=this.pfx+'asset',this.listenTo(this.model,'destroy remove',this.remove),this.model.view=this;var n=this.init&&this.init.bind(this);n&&n(t)},__getBhv:function(){var t=this.em,e=t&&t.get('AssetManager');return e&&e.__getBehaviour()||{}},template:function(){var t=this.pfx;return"\n
\n ").concat(this.getPreview(),"\n
\n
\n ").concat(this.getInfo(),"\n
\n
\n ⨯\n
\n ")},updateTarget:function(t){t&&t.set&&(t.set('attributes',(0,i.clone)(t.get('attributes'))),t.set('src',this.model.get('src')))},getPreview:function(){return''},getInfo:function(){return''},render:function(){var t=this.el;return t.innerHTML=this.template(this,this.model),t.className=this.className,this}});var O,C,k=n(1629);const S=x.extend({events:{'click [data-toggle=asset-remove]':'onRemove',click:'onClick',dblclick:'onDblClick'},getPreview:function(){var t=this.pfx,e=this.ppfx,n=this.model.get('src');return(0,k.Z)(O||(O=(0,w.Z)(["\n
\n
\n "])),t,n,t,e)},getInfo:function(){var t=this.pfx,e=this.model,n=e.get('name'),r=e.get('width'),i=e.get('height'),o=e.get('unitDim'),s=r&&i?"".concat(r,"x").concat(i).concat(o):'';return n=n||e.getFilename(),(0,k.Z)(C||(C=(0,w.Z)(["\n
","
\n
","
\n "])),t,n,t,s)},init:function(t){var e=this.pfx;this.className+=" ".concat(e,"asset-image")},onClick:function(){var t=this.model,e=this.pfx,n=this.__getBhv().select,r=this.config.onClick,o=this.collection;o.trigger('deselectAll'),this.$el.addClass(e+'highlight'),(0,i.isFunction)(n)?n(t,!1):(0,i.isFunction)(r)?r(t):this.updateTarget(o.target)},onDblClick:function(){var t=this.em,e=this.model,n=this.__getBhv().select,r=this.config.onDblClick,o=this.collection,s=o.target,a=o.onSelect;(0,i.isFunction)(n)?n(e,!0):(0,i.isFunction)(r)?r(e):(this.updateTarget(s),t&&t.get('Modal').close()),(0,i.isFunction)(a)&&a(e)},onRemove:function(t){t.stopImmediatePropagation(),this.model.collection.remove(this.model)}});var P=n(793);const _=l().Collection.extend(P.Z).extend({types:[{id:'image',model:b,view:S,isType:function(t){return'string'==typeof t?{type:'image',src:t}:t}}]});var T=n(4925),E=["pfx","ppfx","em"];const j=l().View.extend({events:{submit:'handleSubmit'},template:function(t){var e=t.pfx,n=t.ppfx,r=t.em,i=((0,T.Z)(t,E),'');return this.config.showUrlInput&&(i="\n
\n
\n \n
\n \n
\n
\n ")),"\n
\n
\n ").concat(i,"\n
\n
\n
\n
\n ")},initialize:function(t){this.options=t,this.config=t.config,this.pfx=this.config.stylePrefix||'',this.ppfx=this.config.pStylePrefix||'',this.em=this.config.em;var e=this.collection;this.listenTo(e,'reset',this.renderAssets),this.listenTo(e,'add',this.addToAsset),this.listenTo(e,'remove',this.removedAsset),this.listenTo(e,'deselectAll',this.deselectAll)},handleSubmit:function(t){t.preventDefault();var e=this.getAddInput(),n=e&&e.value.trim(),r=this.config.handleAdd;n&&(e.value='',this.getAssetsEl().scrollTop=0,r?r.bind(this)(n):this.options.globalCollection.add(n,{at:0}))},getAssetsEl:function(){return this.el.querySelector(".".concat(this.pfx,"assets"))},getAddInput:function(){return this.inputUrl&&this.inputUrl.value||(this.inputUrl=this.el.querySelector(".".concat(this.pfx,"add-asset input"))),this.inputUrl},removedAsset:function(t){this.collection.length||this.toggleNoAssets()},addToAsset:function(t){1==this.collection.length&&this.toggleNoAssets(1),this.addAsset(t)},addAsset:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=e,r=this.collection,i=this.config,o=new t.typeView({model:t,collection:r,config:i}).render().el;if(n)n.appendChild(o);else{var s=this.getAssetsEl();s&&s.insertBefore(o,s.firstChild)}return o},toggleNoAssets:function(t){var e=this.$el.find(".".concat(this.pfx,"assets"));if(t)e.empty();else{var n=this.config.noAssets;n&&e.append(n)}},deselectAll:function(){var t=this.pfx;this.$el.find(".".concat(t,"highlight")).removeClass("".concat(t,"highlight"))},renderAssets:function(){var t=this,e=document.createDocumentFragment(),n=this.$el.find(".".concat(this.pfx,"assets"));n.empty(),this.toggleNoAssets(this.collection.length),this.collection.each((function(n){return t.addAsset(n,e)})),n.append(e)},render:function(){var t=this.options.fu.render().el;return this.$el.empty(),this.$el.append(t).append(this.template(this)),this.el.className="".concat(this.ppfx,"asset-manager"),this.renderAssets(),this}});var D,M=n(9661);function A(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return L(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return L(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function L(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n\n
","
\n \n
\n \n "])),e,n,r,i?'disabled':'',o?'multiple':'')},events:{},initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=t;var e=t.config||{};this.module=t.module,this.config=e,this.em=this.config.em,this.pfx=e.stylePrefix||'',this.ppfx=e.pStylePrefix||'',this.target=this.options.globalCollection||{},this.uploadId=this.pfx+'uploadFile',this.disabled=void 0!==e.disableUpload?e.disableUpload:!e.upload&&!e.embedAsBase64,this.multiUpload=void 0===e.multiUpload||e.multiUpload,this.events['change #'+this.uploadId]='uploadFile';var n=e.uploadFile;n?this.uploadFile=n.bind(this):!e.upload&&e.embedAsBase64&&(this.uploadFile=this.constructor.embedAsBase64),this.delegateEvents()},onUploadStart:function(){var t=this.module;t&&t.__propEv('asset:upload:start')},onUploadEnd:function(t){var e=this.$el,n=this.module;n&&n.__propEv('asset:upload:end',t);var r=e.find('input');r&&r.val('')},onUploadError:function(t){var e=this.module;console.error(t),this.onUploadEnd(t),e&&e.__propEv('asset:upload:error',t)},onUploadResponse:function(t,e){var n,r=this.module,i=this.config,o=this.target;try{n='string'==typeof t?JSON.parse(t):t}catch(e){n=t}r&&r.__propEv('asset:upload:response',n),i.autoAdd&&o&&o.add(n.data,{at:0}),this.onUploadEnd(t),e&&e(n)},uploadFile:function(t,e){var n=this,r=t.dataTransfer?t.dataTransfer.files:t.target.files,i=this.config,o=i.beforeUpload;if(!1!==(o&&o(r))){var s=new FormData,a=i.params,l=i.customFetch;for(var c in a)s.append(c,a[c]);if(this.multiUpload)for(var u=0;u").concat(r.dropzoneContent,"")),h(),'draggable'in o&&[o,a].forEach((function(t){t.ondragover=f,t.ondragleave=d,t.ondrop=p}))},render:function(){var t=this.$el,e=this.pfx,n=this.em;return t.html(this.template({title:n&&n.t('assetManager.uploadTitle'),uploadId:this.uploadId,disabled:this.disabled,multiUpload:this.multiUpload,pfx:e})),this.initDrop(),t.attr('class',e+'file-uploader'),this}},{embedAsBase64:function(t,e){var n=this,r=t.dataTransfer?t.dataTransfer.files:t.target.files,i={data:[]};if(FileReader){var o,s=[],a=/^(.+)\/(.+)$/,l=A(r);try{var c=function(){var t=o.value,e=new Promise((function(e,n){var r=new FileReader;r.addEventListener('load',(function(i){var o,s=t.name,l=a.exec(t.type);if('image'===(o=l?l[1]:t.type)){var c={src:r.result,name:s,type:o,height:0,width:0},u=new Image;u.addEventListener('error',(function(t){n(t)})),u.addEventListener('load',(function(){c.height=u.height,c.width=u.width,e(c)})),u.src=c.src}else e(o?{src:r.result,name:s,type:o}:r.result)})),r.addEventListener('error',(function(t){n(t)})),r.addEventListener('abort',(function(t){n('Aborted')})),r.readAsDataURL(t)}));s.push(e)};for(l.s();!(o=l.n()).done;)c()}catch(t){l.e(t)}finally{l.f()}Promise.all(s).then((function(t){i.data=t,n.onUploadResponse(i,e)}),(function(t){n.onUploadError(t)}))}else this.onUploadError(new Error('Unsupported platform, FileReader is not defined'))}});function N(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Z(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},i=(a=Z(Z({},s),r)).pStylePrefix,o=a,l=o.em;return this.config=a,this.em=l,i&&(a.stylePrefix=i+a.stylePrefix),t=new _([]),e=new _([]),this.all=t,this.__initListen(),t.on('add',(function(t){return n.getAllVisible().add(t)})),t.on('remove',(function(t){return n.getAllVisible().remove(t)})),this},__propEv:function(t){for(var e,n,r=arguments.length,i=new Array(r>1?r-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:{},e=this.em.get('Commands');e.run(l,Z({types:['image'],select:function(){}},t))},close:function(){this.em.get('Commands').stop(l)},isOpen:function(){var t=this.em.get('Commands');return!(!t||!t.isActive(l))},add:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return void 0===n.at&&(n.at=0),t.add(e,n)},get:function(e){return t.where({src:e})[0]||null},getAll:function(){return t},getAllVisible:function(){return e},remove:function(t,e){return this.__remove(t,e)},store:function(t){var e={},n=JSON.stringify(this.getAll().toJSON());return e[this.storageKey]=n,!t&&a.stm&&a.stm.store(e),e},load:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.storageKey,n=t[e]||[];if('string'==typeof n)try{n=JSON.parse(t[e])}catch(t){}return n&&n.length&&this.getAll().reset(n),n},getContainer:function(){return this.__getBehaviour().container||n&&n.el},getAssetsEl:function(){return n.el.querySelector('[data-el=assets]')},render:function(t){if(!this.getConfig('custom')){var r=t||this.getAll().models;if(!n){var i=this.__viewParams();i.fu=this.FileUploader();var o=n&&n.el;(n=new j(Z({el:o},i))).render()}return e.reset(r),this.getContainer()}},__viewParams:function(){return{collection:e,globalCollection:t,config:a,module:this}},addType:function(t,e){this.getAll().addType(t,e)},getType:function(t){return this.getAll().getType(t)},getTypes:function(){return this.getAll().getTypes()},AssetsView:function(){return n},FileUploader:function(){return r||(r=new R(this.__viewParams())),r},onLoad:function(){var t=this;this.getAll().reset(a.assets);var e=this.em,n=this.events;e.on("run:".concat(l),(function(){return t.__propEv(n.open)})),e.on("stop:".concat(l),(function(){return t.__propEv(n.close)}))},postRender:function(t){a.dropzone&&r&&r.initDropzone(t)},setTarget:function(t){e.target=t},onSelect:function(t){e.onSelect=t},onClick:function(t){a.onClick=t},onDblClick:function(t){a.onDblClick=t},__behaviour:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._bhv=Z(Z({},this._bhv||{}),t)},__getBehaviour:function(){return this._bhv||{}},destroy:function(){t.stopListening(),e.stopListening(),t.reset(),e.reset(),r&&r.remove(),n&&n.remove(),[t,e,n,r].forEach((function(t){return null})),this._bhv={},this.all={},a={}}})}},6407:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>U,evAdd:()=>N,evAll:()=>L,evCustom:()=>z,evDrag:()=>V,evDragStart:()=>H,evDragStop:()=>B,evPfx:()=>R,evRemove:()=>I,evRemoveBefore:()=>F,evUpdate:()=>Z});var r=n(4942),i=n(9050),o=n(9304);const s={appendTo:'',appendOnClick:!1,blocks:[],custom:!1};var a=n(5671),l=n(3144),c=n(9340),u=n(3930),h=n(1120),f=n(2316),d=n.n(f);function p(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,u.Z)(this,n)}}var g=function(t){(0,c.Z)(n,t);var e=p(n);function n(){return(0,a.Z)(this,n),e.apply(this,arguments)}return(0,l.Z)(n,[{key:"defaults",value:function(){return{label:'',content:'',media:'',category:'',activate:!1,select:null,resetId:!1,disable:!1,onClick:null,attributes:{}}}},{key:"getId",value:function(){return this.id}},{key:"getLabel",value:function(){return this.get('label')}},{key:"getMedia",value:function(){return this.get('media')}},{key:"getContent",value:function(){return this.get('content')}},{key:"getCategoryLabel",value:function(){var t=this.get('category');return(0,i.isFunction)(t.get)?t.get('label'):t.label?t.label:t}}]),n}(f.Model);function v(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,u.Z)(this,n)}}var m=function(t){(0,c.Z)(n,t);var e=v(n);function n(){return(0,a.Z)(this,n),e.apply(this,arguments)}return(0,l.Z)(n)}(f.Collection);function y(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,u.Z)(this,n)}}m.prototype.model=g;var b=function(t){(0,c.Z)(n,t);var e=y(n);function n(){return(0,a.Z)(this,n),e.apply(this,arguments)}return(0,l.Z)(n,[{key:"defaults",value:function(){return{id:'',label:'',open:!0,attributes:{}}}}]),n}(f.Model);function w(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,u.Z)(this,n)}}var x=function(t){(0,c.Z)(n,t);var e=w(n);function n(){return(0,a.Z)(this,n),e.apply(this,arguments)}return(0,l.Z)(n)}(f.Collection);x.prototype.model=b;var O=n(6183);const C=d().View.extend({events:{click:'handleClick',mousedown:'startDrag',dragstart:'handleDragStart',drag:'handleDrag',dragend:'handleDragEnd'},initialize:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.model;this.em=e.em,this.config=e,this.endDrag=this.endDrag.bind(this),this.ppfx=e.pStylePrefix||'',this.listenTo(n,'destroy remove',this.remove),this.listenTo(n,'change',this.render)},__getModule:function(){return this.em.get('BlockManager')},handleClick:function(t){var e=this.config,n=this.model,r=this.em,o=n.get('onClick')||e.appendOnClick;if(r.trigger('block:click',n,t),o){if((0,i.isFunction)(o))return o(n,r.getEditor(),{event:t});var s,a=e.getSorter(),l=n.get('content'),c=r.getSelected();if(a.setDropContent(l),c)if(a.validTarget(c.getEl(),l).valid)s=c;else{var u=c.parent();a.validTarget(u.getEl(),l).valid&&(s=u)}if(!s){var h=r.getWrapper();a.validTarget(h.getEl(),l).valid&&(s=h)}var f=s&&s.append(l)[0];f&&r.setSelected(f,{scroll:1})}},startDrag:function(t){var e=this.config,n=this.em,r=this.model.get('disable');if(0===t.button&&e.getSorter&&!this.el.draggable&&!r){n.refreshCanvas();var i=e.getSorter();i.setDragHelper(this.el,t),i.setDropContent(this.model.get('content')),i.startSort(this.el),(0,O.on)(document,'mouseup',this.endDrag)}},handleDragStart:function(t){this.__getModule().__startDrag(this.model,t)},handleDrag:function(t){this.__getModule().__drag(t)},handleDragEnd:function(){this.__getModule().__endDrag()},endDrag:function(t){(0,O.off)(document,'mouseup',this.endDrag);var e=this.config.getSorter();e.moved=0,e.endMove()},render:function(){var t=this.em,e=this.el,n=this.$el,r=this.ppfx,i=this.model,o=i.get('disable'),s=i.get('attributes')||{},a=s.class||'',l="".concat(r,"block"),c=t&&t.t("blockManager.labels.".concat(i.id))||i.get('label'),u=i.get('render'),h=i.get('media'),f=o?"".concat(l,"--disable"):"".concat(r,"four-color-h");n.attr(s),e.className="".concat(a," ").concat(l," ").concat(r,"one-bg ").concat(f).trim(),e.innerHTML="\n ".concat(h?"
").concat(h,"
"):'',"\n
").concat(c,"
\n "),e.title=s.title||e.textContent.trim(),e.setAttribute('draggable',!(!(0,O.hasDnd)(t)||o));var d=u&&u({el:e,model:i,className:l,prefix:r});return d&&(e.innerHTML=d),this}});var k,S=n(168),P=n(1629);function _(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,u.Z)(this,n)}}var T=function(t){(0,c.Z)(n,t);var e=_(n);function n(){return(0,a.Z)(this,n),e.apply(this,arguments)}return(0,l.Z)(n,[{key:"template",value:function(t){var e=t.pfx,n=t.label;return(0,P.Z)(k||(k=(0,S.Z)(["\n
\n \n ","\n
\n
\n "])),e,e,n,e)}},{key:"attributes",value:function(){return this.model.get('attributes')}},{key:"initialize",value:function(){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.config=t;var e=t.pStylePrefix||'';this.em=t.em,this.pfx=e,this.caretR='fa fa-caret-right',this.caretD='fa fa-caret-down',this.iconClass="".concat(e,"caret-icon"),this.activeClass="".concat(e,"open"),this.className="".concat(e,"block-category"),this.events={},this.events["click .".concat(e,"title")]='toggle',this.listenTo(this.model,'change:open',this.updateVisibility),this.delegateEvents(),this.model.view=this}},{key:"updateVisibility",value:function(){this.model.get('open')?this.open():this.close()}},{key:"open",value:function(){this.$el.addClass(this.activeClass),this.getIconEl().className="".concat(this.iconClass," ").concat(this.caretD),this.getBlocksEl().style.display=''}},{key:"close",value:function(){this.$el.removeClass(this.activeClass),this.getIconEl().className="".concat(this.iconClass," ").concat(this.caretR),this.getBlocksEl().style.display='none'}},{key:"toggle",value:function(){var t=this.model;t.set('open',!t.get('open'))}},{key:"getIconEl",value:function(){return this.iconEl||(this.iconEl=this.el.querySelector('.'+this.iconClass)),this.iconEl}},{key:"getBlocksEl",value:function(){return this.blocksEl||(this.blocksEl=this.el.querySelector('.'+this.pfx+'blocks-c')),this.blocksEl}},{key:"append",value:function(t){this.getBlocksEl().appendChild(t)}},{key:"render",value:function(){var t=this.em,e=this.el,n=this.$el,r=this.model,i=this.pfx,o=t.t("blockManager.categories.".concat(r.id))||r.get('label');return e.innerHTML=this.template({pfx:i,label:o}),n.addClass(this.className),n.css({order:r.get('order')}),this.updateVisibility(),this}}]),n}(f.View);function E(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function j(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.config=j(j({},this.config),t)},getSorter:function(){if(this.em){if(!this.sorter){var t=this.em.get('Utils'),e=this.canvas;this.sorter=new t.Sorter({container:e.getBody(),placer:e.getPlacerEl(),containerSel:'*',itemSel:'*',pfx:this.ppfx,onStart:this.onDrag,onEndMove:this.onDrop,onMove:this.onMove,document:e.getFrameEl().contentDocument,direction:'a',wmargin:1,nested:1,em:this.em,canvasRelative:1})}return this.sorter}},onDrag:function(t){this.em.stopDefault(),this.em.trigger('block:drag:start',t)},onMove:function(t){this.em.trigger('block:drag:move',t)},onDrop:function(t){var e=this.em;if(e.runDefault(),t&&t.get){var n='activeOnRender';t.get(n)&&(t.trigger('active'),t.unset(n)),e.trigger('block:drag:stop',t)}},addTo:function(t){this.add(t)},add:function(t,e){var n=this.config,r=e||null,o=new C({model:t,attributes:t.get('attributes')},n).render().el,s=t.get('category');if(s&&this.categories&&!n.ignoreCategories){(0,i.isString)(s)?s={id:s,label:s}:(0,i.isObject)(s)&&!s.id&&(s.id=s.label);var a=this.categories.add(s),l=a.get('id'),c=this.renderedCategories[l],u=this.getCategoriesEl();return t.set('category',a,{silent:!0}),!c&&u&&(c=new T({model:a},this.config).render(),this.renderedCategories[l]=c,u.appendChild(c.el)),void(c&&c.append(o))}r?r.appendChild(o):this.append(o)},getCategoriesEl:function(){return this.catsEl||(this.catsEl=this.el.querySelector(".".concat(this.catsClass))),this.catsEl},getBlocksEl:function(){return this.blocksEl||(this.blocksEl=this.el.querySelector(".".concat(this.noCatClass," .").concat(this.blockContClass))),this.blocksEl},append:function(t){var e=this.getBlocksEl();e&&e.appendChild(t)},render:function(){var t=this,e=this.ppfx,n=document.createDocumentFragment();this.catsEl=null,this.blocksEl=null,this.renderedCategories=[],this.el.innerHTML="\n
\n
\n
\n
\n "),this.collection.each((function(e){return t.add(e,n)})),this.append(n);var r="".concat(this.blockContClass,"s ").concat(e,"one-bg ").concat(e,"two-color");return this.$el.addClass(r),this.rendered=!0,this}});function M(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function A(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},i=r=A(A({},s),n),o=i.em;return this.em=o,t=new m(r.blocks),e=new m(t.models),a=new x,this.all=t,this.__initListen(),t.on('add',(function(t){return e.add(t)})),t.on('remove',(function(t){return e.remove(t)})),t.on('reset',(function(t){return e.reset(t.models)})),this},__trgCustom:function(){this.em.trigger(this.events.custom,this.__customData())},__customData:function(){var t=this,e=this.__getBehaviour();return{bm:this,blocks:this.getAll().models,container:e.container,dragStart:function(e,n){return t.startDrag(e,n)},drag:function(e){return t.__drag(e)},dragStop:function(e){return t.endDrag(e)}}},__startDrag:function(e,n){var r=this.em,i=this.events,o=e.getContent?e.getContent():e;this._dragBlock=e,r.set({dragResult:null,dragContent:o}),[r,t].map((function(t){return t.trigger(i.dragStart,e,n)}))},__drag:function(e){var n=this.em,r=this.events,i=this._dragBlock;[n,t].map((function(t){return t.trigger(r.drag,i,e)}))},__endDrag:function(){var e=this.em,n=this.events,r=this._dragBlock,o=e.get('dragResult');if(this._dragBlock=null,o){var s='activeOnRender',a=o.get&&o.get(s),l=r.get('activate')||a,c=r.get('select'),u=(0,i.isArray)(o)?o[0]:o;(c||l&&!1!==c)&&e.setSelected(u),l&&(u.trigger('active'),a&&u.unset(s)),r.get('resetId')&&u.onAll((function(t){return t.resetId()}))}e.set({dragResult:null,dragContent:null}),[e,t].map((function(t){return t.trigger(n.dragEnd,o,r)}))},__getFrameViews:function(){return this.em.get('Canvas').getFrames().map((function(t){return t.view}))},__behaviour:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._bhv=A(A({},this._bhv||{}),t)},__getBehaviour:function(){return this._bhv||{}},startDrag:function(t,e){this.__startDrag(t,e),this.__getFrameViews().forEach((function(t){return t.droppable.startCustom()}))},endDrag:function(t){this.__getFrameViews().forEach((function(e){return e.droppable.endCustom(t)})),this.__endDrag()},getConfig:function(){return r},postRender:function(){n=new D({collection:e,categories:a},r);var t=this.getConfig().appendTo;if(t){var o=(0,i.isElement)(t)?t:document.querySelector(t);if(!o)return this.__logWarn('"appendTo" element not found');o.appendChild(this.render(e.models))}this.__trgCustom()},add:function(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=n||{};return i.id=e,t.add(i,r)},get:function(e){return t.get(e)},getAll:function(){return t},getAllVisible:function(){return e},remove:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.__remove(t,e)},getCategories:function(){return a},getContainer:function(){return n.el},render:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t||this.getAll().models;if(e.external){var o=new m(i);return new D({collection:o,categories:a},A(A({},r),e)).render().el}return n&&(n.updateConfig(e),n.collection.reset(i),n.rendered||(n.render(),n.rendered=1)),this.getContainer()},destroy:function(){var i=[t,e,a];i.map((function(t){return t.stopListening()})),i.map((function(t){return t.reset()})),n&&n.remove(),r={},t={},e={},n={},a=[],this.all={}}})}},6950:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>F});var r=n(2982),i=n(4942),o=n(9050),s=n(6183);const a={stylePrefix:'cv-',scripts:[],styles:[],customBadgeLabel:'',autoscrollLimit:50,extHl:0,notTextable:['button','a','input[type=checkbox]','input[type=radio]']};var l=n(5671),c=n(3144),u=n(9340),h=n(3930),f=n(1120),d=n(2316),p=n.n(d),g=n(2567),v=n(9065);function m(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,f.Z)(t);if(e){var i=(0,f.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,h.Z)(this,n)}}var y=function(t){(0,u.Z)(n,t);var e=m(n);function n(){return(0,l.Z)(this,n),e.apply(this,arguments)}return(0,c.Z)(n,[{key:"defaults",value:function(){return{frame:'',frames:'',rulers:!1,zoom:100,x:0,y:0,scripts:[],styles:[]}}},{key:"initialize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.em;this.config=e,this.em=n,this.set('frames',new v.Z),this.listenTo(this,'change:zoom',this.onZoomChange),this.listenTo(n,'change:device',this.updateDevice),this.listenTo(n,g.evPageSelect,this._pageUpdated)}},{key:"init",value:function(){var t=this.em.get('PageManager').getMain(),e=t.getMainFrame();this.set('frames',t.getFrames()),this.updateDevice({frame:e})}},{key:"_pageUpdated",value:function(t,e){var n=this.em;n.setSelected(),n.get('readyCanvas')&&n.stopDefault(),e&&e.getFrames().map((function(t){return t.disable()})),this.set('frames',t.getFrames())}},{key:"updateDevice",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=e.getDeviceModel(),r=t.frame||e.getCurrentFrameModel();if(r&&n){var i=n.attributes,o=i.width,s=i.height;r.set({width:o,height:s},{noUndo:1})}}},{key:"onZoomChange",value:function(){this.get('zoom')<1&&this.set('zoom',1)}}]),n}(d.Model),b=n(6602),w=n(4868);function x(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}var O=function(){function t(e,n){var r=this;(0,l.Z)(this,t),this.em=e;var i=n||e.get('Canvas').getFrames().map((function(t){return t.getComponent().getEl()})),s=Array.isArray(i)?i:[i];return this.el=i,this.counter=0,(0,o.bindAll)(this,'handleDragEnter','handleDragOver','handleDrop','handleDragLeave'),s.forEach((function(t){return r.toggleEffects(t,1)})),this}return(0,c.Z)(t,[{key:"toggleEffects",value:function(t,e){var n={on:s.on,off:s.off},r=e?'on':'off';n[r](t,'dragenter',this.handleDragEnter),n[r](t,'dragover',this.handleDragOver),n[r](t,'drop',this.handleDrop),n[r](t,'dragleave',this.handleDragLeave)}},{key:"__customTglEff",value:function(t){var e=t?s.on:s.off,n=this.el.ownerDocument,r=n.defaultView.frameElement;this.sortOpts=t?{onStart:function(t){var e=t.sorter;(0,s.on)(r,'pointermove',e.onMove)},onEnd:function(t){var e=t.sorter;(0,s.off)(r,'pointermove',e.onMove)},customTarget:function(t){var e=t.event;return n.elementFromPoint(e.clientX,e.clientY)}}:null,e(r,'pointerenter',this.handleDragEnter),e(r,'pointermove',this.handleDragOver),e(document,'pointerup',this.handleDrop),e(r,'pointerout',this.handleDragLeave)}},{key:"startCustom",value:function(){this.__customTglEff(!0)}},{key:"endCustom",value:function(t){this.over?this.endDrop(t):this.__customTglEff(!1)}},{key:"endDrop",value:function(t,e){var n=this.em,r=this.dragStop;this.counter=0,r&&r(t),this.__customTglEff(!1),n.trigger('canvas:dragend',e)}},{key:"handleDragLeave",value:function(t){this.updateCounter(-1,t)}},{key:"updateCounter",value:function(t,e){this.counter+=t,0===this.counter&&this.endDrop(1,e)}},{key:"handleDragEnter",value:function(t){var e=this,n=this.em,r=t.dataTransfer;if(this.updateCounter(1,t),!this.over){this.over=1;var o,s,a=n.get('Utils'),l=n.get('Canvas'),c=n.get('dragContent')||'
';if(n.stopDefault(),n.inAbsoluteMode()){var u=n.get('DomComponents').getWrapper(),h=u.append({})[0],f=n.get('Commands').run('core:component-drag',{event:t,guidesInfo:1,center:1,target:h,onEnd:function(t,n,i){var o;if(!i.cancelled){o=u.append(c)[0];var s=h.getStyle(),a=s.left,l=s.top,f=s.position;o.addStyle({left:a,top:l,position:f})}e.handleDragEnd(o,r),h.remove()}});o=function(e){return f.stop(t,{cancel:e})},s=function(t){return c=t}}else{var d=new a.Sorter(function(t){for(var e=1;e=0)s=t&&t.getData('text/html').replace(/<\/?meta[^>]*>/g,'');else if((0,o.indexOf)(n,'text/uri-list')>=0)s={type:'link',attributes:{href:s},content:s};else if((0,o.indexOf)(n,'text/json')>=0){var u=t&&t.getData('text/json');u&&(s=JSON.parse(u))}else 1===n.length&&'text/plain'===n[0]&&(s="
".concat(s,"
"));var h={content:s};return e.trigger('canvas:dragdata',t,h),h}}]),t}(),C=n(9283);function k(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function S(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(t).sort().map((function(e){return"[".concat(e,"=\"").concat(t[e],"\"]")})).join('')},a=function(t,e,n){t.forEach((function(t){var r=t.tag,i=t.attributes;!e.some((function(t){return t.tag===r&&s(t.attributes)===s(i)}))&&n.push(t)}))};a(i,o,r),a(o,i,n),n.forEach((function(t){var n=e.querySelector("".concat(t.tag).concat(s(t.attributes)));n&&n.parentNode.removeChild(n)})),(0,C.SJ)(e,r)},getEl:function(){return this.el},getCanvasModel:function(){return this.em.get('Canvas').getModel()},getWindow:function(){return this.getEl().contentWindow},getDoc:function(){return this.getEl().contentDocument},getHead:function(){return this.getDoc().querySelector('head')},getBody:function(){return this.getDoc().querySelector('body')},getWrapper:function(){return this.getBody().querySelector('[data-gjs-type=wrapper]')},getJsContainer:function(){return this.jsContainer||(this.jsContainer=(0,C.ut)('div',{class:"".concat(this.ppfx,"js-cont")})),this.jsContainer},getToolsEl:function(){var t=this.config.frameWrapView;return t&&t.elTools},getGlobalToolsEl:function(){return this.em.get('Canvas').getGlobalToolsEl()},getHighlighter:function(){return this._getTool('[data-hl]')},getBadgeEl:function(){return this._getTool('[data-badge]')},getOffsetViewerEl:function(){return this._getTool('[data-offset]')},getRect:function(){return this.rect||(this.rect=this.el.getBoundingClientRect()),this.rect},getOffsetRect:function(){var t=this.el,e=this.getBody(),n=e.scrollTop,r=e.scrollLeft,i=t.offsetHeight,o=t.offsetWidth;return{top:t.offsetTop,left:t.offsetLeft,height:i,width:o,scrollTop:n,scrollLeft:r,scrollBottom:n+i,scrollRight:r+o}},_getTool:function(t){var e=this.tools,n=this.getToolsEl();return e[t]||(e[t]=n.querySelector(t)),e[t]},remove:function(){var t=this.wrapper;this._toggleEffects(),this.tools={},t&&t.remove(),p().View.prototype.remove.apply(this,arguments)},startAutoscroll:function(){var t=this;this.lastMaxHeight=this.getWrapper().offsetHeight-this.el.offsetHeight,setTimeout((function(){t._toggleAutoscrollFx(1),requestAnimationFrame(t.autoscroll)}),0)},autoscroll:function(){if(this.dragging){var t=this.lastClientY,e=this.em.get('Canvas'),n=this.getWindow(),r=this.getBody().scrollTop,i=t||0,s=e.getConfig().autoscrollLimit,a=this.getRect().height-s,l=r;if(ia&&(l+=i-a),!(0,o.isUndefined)(t)&&l!==r&&l>0&&l0){var l=r.shift(),c=(0,C.ut)('script',S({type:'text/javascript'},(0,o.isString)(l)?{src:l}:l));c.onerror=c.onload=n.bind(null,r),e.contentDocument.head.appendChild(c)}else t.renderBody(),i&&i.trigger(s,a)};e.onload=function(){i&&i.trigger("".concat(s,":before"),a),c((0,r.Z)(l.get('scripts')))}},renderStyles:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getHead(),n=this.getCanvasModel(),r=function(t){return t.map((function(t){return{tag:'link',attributes:S({rel:'stylesheet'},(0,o.isString)(t)?{href:t}:t)}}))},i=r(t.prev||n.previous('styles')),s=r(n.get('styles')),a=[],l=[],c=function(t,e,n){t.forEach((function(t){var r=t.attributes.href;!e.some((function(t){return t.attributes.href===r}))&&n.push(t)}))};c(s,i,l),c(i,s,a),a.forEach((function(t){var n=e.querySelector("link[href=\"".concat(t.attributes.href,"\"]"));n&&n.parentNode.removeChild(n)})),(0,C.SJ)(e,l)},renderBody:function(){var t=this,e=this.config,n=this.model,r=this.ppfx,i=e.em,o=this.getDoc(),a=this.getBody(),l=this.getWindow(),c=i.get('Config');l._isEditor=!0,this.renderStyles({prev:[]});(0,C.R3)(a,""));var u=n.getComponent(),h=i.get('DomComponents').getType('wrapper').view;this.wrapper=new h({model:u,config:S(S({},u.config),{},{frameView:this})}).render(),(0,C.R3)(a,this.wrapper.el),(0,C.R3)(a,new w.Z({collection:n.getStyles(),config:S(S({},i.get('CssComposer').getConfig()),{},{frameView:this})}).render().el),(0,C.R3)(a,this.getJsContainer()),(0,s.on)(a,'click',(function(t){return t&&'A'==t.target.tagName&&t.preventDefault()})),(0,s.on)(a,'submit',(function(t){return t&&t.preventDefault()})),[{event:'keydown keyup keypress',class:'KeyboardEvent'},{event:'mousedown mousemove mouseup',class:'MouseEvent'},{event:'pointerdown pointermove pointerup',class:'PointerEvent'},{event:'wheel',class:'WheelEvent'}].forEach((function(e){return e.event.split(' ').forEach((function(n){o.addEventListener(n,(function(n){return t.el.dispatchEvent((0,C.t3)(n,e.class))}))}))})),this._toggleEffects(1),this.droppable=(0,s.hasDnd)(i)&&new O(i,this.wrapper.el),n.trigger('loaded')},_toggleEffects:function(t){var e=t?s.on:s.off,n=this.getWindow();n&&e(n,"".concat(C.G1," resize"),this._emitUpdate)},_emitUpdate:function(){this.model._emitUpdated()}});var _=n(5610);function T(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function E(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,o.bindAll)(this,'onScroll','frameLoaded','updateOffset','remove','startDrag');var n=this.model,r=E(E({},t.config||e),{},{frameWrapView:this}),i=r.canvasView,s=r.em;this.cv=i,this.config=r,this.em=s,this.canvas=s&&s.get('Canvas'),this.ppfx=r.pStylePrefix||'',this.frame=new P({model:n,config:r}),this.classAnim="".concat(this.ppfx,"frame-wrapper--anim"),this.updateOffset=(0,o.debounce)(this.updateOffset.bind(this)),this.updateSize=(0,o.debounce)(this.updateSize.bind(this)),this.listenTo(n,'loaded',this.frameLoaded),this.listenTo(n,'change:x change:y',this.updatePos),this.listenTo(n,'change:width change:height',this.updateSize),this.listenTo(n,'destroy remove',this.remove),this.updatePos(),this.setupDragger()},setupDragger:function(){var t,e,n,r=this,i=this.canvas,o=this.model,s=function(t){i.toggleFramesEvents(t)};this.dragger=new _.Z({onStart:function(){var i=o.attributes,a=i.x,l=i.y;n=r.em.getZoomMultiplier(),t=a,e=l,s()},onEnd:function(){return s(1)},setPosition:function(r){o.set({x:t+r.x*n,y:e+r.y*n})}})},startDrag:function(t){t&&this.dragger.start(t)},__clear:function(t){var e=this.frame;e&&e.remove(t),(0,C.L_)(this.elTools)},remove:function(t){var e=this;return this.__clear(t),p().View.prototype.remove.apply(this,arguments),['frame','dragger','cv','em','canvas','elTools'].forEach((function(t){return e[t]=0})),this},updateOffset:function(){var t=this.em,e=this.$el,n=this.frame;t&&(t.runDefault({preserveSelected:1}),e.removeClass(this.classAnim),n.model._emitUpdated())},updatePos:function(t){var e=this.model,n=this.el,r=e.attributes,i=r.x,o=r.y,s=n.style;this.frame.rect=0,s.left=isNaN(i)?i:"".concat(i,"px"),s.top=isNaN(o)?o:"".concat(o,"px"),t&&this.updateOffset()},updateSize:function(){this.updateDim()},updateDim:function(){var t=this.em,e=this.el,n=this.$el,r=this.model,i=this.classAnim,s=this.frame;if(s){s.rect=0,n.addClass(i);var a=this.__handleSize(),l=a.noChanges,c=a.width,u=a.height;((0,o.isNull)(c)||(0,o.isNull)(u))&&r.set(E(E({},c?{}:{width:e.offsetWidth}),u?{}:{height:e.offsetHeight}),{silent:1}),t.stopDefault({preserveSelected:1}),l?this.updateOffset():setTimeout(this.updateOffset,350)}},onScroll:function(){var t=this.frame;this.em.trigger('frame:scroll',{frame:t,body:t.getBody(),target:t.getWindow()})},frameLoaded:function(){this.frame.getWindow().onscroll=this.onScroll,this.updateDim()},__handleSize:function(){var t=this.model,e=this.el.style,n=t.attributes,r=n.width,i=n.height,s=e.width||'',a=e.height||'',l=r||'',c=i||'',u=s==l&&a==c;return e.width=(0,o.isNumber)(l)?"".concat(l).concat("px"):l,e.height=(0,o.isNumber)(c)?"".concat(c).concat("px"):c,{noChanges:u,width:r,height:i,newW:l,newH:c}},render:function(){var t=this.frame,e=this.$el,n=this.ppfx,r=this.cv,i=this.model,o=this.el,s=i.attributes.onRender;this.__clear(),this.__handleSize(),t.render(),e.empty().attr({class:"".concat(n,"frame-wrapper")}).append("\n
\n
\n ").concat(i.get('name')||'',"\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n ")).append(t.el);var a=(0,C.ut)('div',{class:"".concat(n,"tools"),style:'pointer-events:none; display: none'},"\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n "));this.elTools=a;var l=r.toolsWrapper;return l&&l.appendChild(a),s&&s({el:o,elTop:o.querySelector('[data-frame-top]'),elRight:o.querySelector('[data-frame-right]'),elBottom:o.querySelector('[data-frame-bottom]'),elLeft:o.querySelector('[data-frame-left]'),frame:i,frameWrapperView:this,remove:this.remove,startDrag:this.startDrag}),this}}),D=b.Z.extend({itemView:j,autoAdd:1,init:function(){this.listenTo(this.collection,'reset',this.render)},onRemoveBefore:function(t,e){t.forEach((function(t){return t.remove(e)}))},onRender:function(){var t=this.config,e=this.$el,n=t.em;n&&e.attr({class:"".concat(n.getConfig('stylePrefix'),"frames")})}});function M(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function A(t){for(var e=1;e\n
\n ")},initialize:function(t){(0,o.bindAll)(this,'clearOff','onKeyPress','onCanvasMove');var e=this.model;this.config=t.config||{},this.em=this.config.em||{},this.pfx=this.config.stylePrefix||'',this.ppfx=this.config.pStylePrefix||'',this.className=this.config.stylePrefix+'canvas';var n=this.em;this._initFrames(),this.listenTo(n,'change:canvasOffset',this.clearOff),this.listenTo(n,'component:selected',this.checkSelected),this.listenTo(e,'change:zoom change:x change:y',this.updateFrames),this.listenTo(e,'change:frames',this._onFramesUpdate),this.toggleListeners(1)},_onFramesUpdate:function(){this._initFrames(),this._renderFrames()},_initFrames:function(){var t=this.frames,e=this.model,n=this.config,r=this.em,i=e.get('frames');r.set('readyCanvas',0),i.once('loaded:all',(function(){return r.set('readyCanvas',1)})),t&&t.remove(),this.frames=new D({collection:i,config:A(A({},n),{},{canvasView:this})})},checkSelected:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.scroll,r=this.em.get('currentFrame');n&&t.views.forEach((function(t){t._getFrame()===r&&t.scrollIntoView(n)}))},remove:function(){this.frames.remove(),this.frames={},p().View.prototype.remove.apply(this,arguments),this.toggleListeners()},preventDefault:function(t){t&&(t.preventDefault(),t._parentEvent&&t._parentEvent.preventDefault())},onCanvasMove:function(t){},toggleListeners:function(t){this.el;var e=t?s.on:s.off;e(document,'keypress',this.onKeyPress),e(window,'scroll resize',this.clearOff)},onKeyPress:function(t){var e=this.em;' '!==(0,s.getKeyChar)(t)||1===e.getZoomDecimal()||e.get('Canvas').isInputFocused()||(this.preventDefault(t),e.get('Editor').runCommand('core:canvas-move'))},onWheel:function(t){if((t.ctrlKey||t.metaKey)&&this.em.getConfig('multiFrames')){this.preventDefault(t);var e=this.model,n=Math.max(-1,Math.min(1,t.wheelDelta||-t.detail)),r=e.get('zoom');e.set('zoom',r+2*n)}},updateFrames:function(t){var e=this.em,n=this.model.attributes,r=n.x,i=n.y,o=this.getZoom(),s={preserveSelected:1},a=o?1/o:1;this.framesArea.style.transform="scale(".concat(o,") translate(").concat(r*a,"px, ").concat(i*a,"px)"),this.clearOff(),e.stopDefault(s),e.trigger('canvas:update',t),L&&clearTimeout(L),L=setTimeout((function(){return e.runDefault(s)}),300)},getZoom:function(){return this.em.getZoomDecimal()},isElInViewport:function(t){var e=(0,s.getElement)(t),n=(0,s.getElRect)(e),r=this.getFrameOffset(e),i=n.top,o=n.left;return i>=0&&o>=0&&i<=r.height&&o<=r.width},offset:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(0,s.getElRect)(t),r=t.ownerDocument.body,i=e.noScroll;return{top:n.top+(i?0:r.scrollTop),left:n.left+(i?0:r.scrollLeft),width:n.width,height:n.height}},clearOff:function(){this.frmOff=null,this.cvsOff=null},getFrameOffset:function(t){if(!this.frmOff||t){var e=this.frame.el,n=t&&t.ownerDocument.defaultView,r=n?n.frameElement:e;this.frmOff=this.offset(r||e)}return this.frmOff},getCanvasOffset:function(){return this.cvsOff||(this.cvsOff=this.offset(this.el)),this.cvsOff},getElementPos:function(t,e){var n=this.getZoom(),r=e||{},i=this.getFrameOffset(t),o=this.getCanvasOffset(),s=this.offset(t,e),a=r.avoidFrameOffset?0:i.top,l=r.avoidFrameOffset?0:i.left;return{top:s.top*n+a-o.top,left:s.left*n+l-o.left,height:s.height*n,width:s.width*n,zoom:n,rect:s}},getElementOffsets:function(t){var e=this;if(!t||(0,s.isTextNode)(t))return{};var n={},r=window.getComputedStyle(t);return['marginTop','marginRight','marginBottom','marginLeft','paddingTop','paddingRight','paddingBottom','paddingLeft'].forEach((function(t){n[t]=parseFloat(r[t])*e.getZoom()})),n},getPosition:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.frame.el.contentDocument;if(e){var n=e.body,r=this.getZoom(),i=this.getFrameOffset(),o=this.getCanvasOffset(),s=t.noScroll;return{top:i.top+(s?0:n.scrollTop)*r-o.top,left:i.left+(s?0:n.scrollLeft)*r-o.left,width:o.width,height:o.height}}},updateScript:function(t){var e=t.model,n=e.getId();t.scriptContainer||(t.scriptContainer=R("
")),this.getJsContainer().appendChild(t.scriptContainer.get(0))),t.el.id=n,t.scriptContainer.html('');var r=document.createElement('script'),i=e.getScriptString(),o=e.get('script-props')?i:"function(){\n".concat(i,"\n;}"),s=JSON.stringify(e.__getScriptProps());r.innerHTML="\n setTimeout(function() {\n var item = document.getElementById('".concat(n,"');\n if (!item) return;\n (").concat(o,".bind(item))(").concat(s,")\n }, 1);"),setTimeout((function(){var e=t.scriptContainer;e&&e.get(0).appendChild(r)}),0)},getJsContainer:function(t){var e=this.getFrameView(t);return e&&e.getJsContainer()},getFrameView:function(t){return t&&t._getFrame()||this.em.get('currentFrame')},_renderFrames:function(){if(this.ready){var t=this.model,e=this.frames,n=this.em,r=this.framesArea,i=t.get('frames');i.listenToLoad(),e.render();var o=i.at(0),s=o&&o.view;n.setCurrentFrame(s),r&&r.appendChild(e.el),this.frame=s}},render:function(){var t=this.el,e=this.$el,n=this.ppfx,r=this.config,i=this.em;e.html(this.template());var o=e.find('[data-frames]');this.framesArea=o.get(0);var a=e.find('[data-tools]');this.toolsWrapper=a.get(0),a.append("\n
\n
\n
\n
\n
\n
\n ").concat(r.extHl?"
"):'',"\n
\n
\n
\n
\n
\n
\n
\n "));var l=t.querySelector("#".concat(n,"tools"));return this.hlEl=t.querySelector(".".concat(n,"highlighter")),this.badgeEl=t.querySelector(".".concat(n,"badge")),this.placerEl=t.querySelector(".".concat(n,"placeholder")),this.ghostEl=t.querySelector(".".concat(n,"ghost")),this.toolbarEl=t.querySelector(".".concat(n,"toolbar")),this.resizerEl=t.querySelector(".".concat(n,"resizer")),this.offsetEl=t.querySelector(".".concat(n,"offset-v")),this.fixedOffsetEl=t.querySelector(".".concat(n,"offset-fixed-v")),this.toolsGlobEl=t.querySelector(".".concat(n,"tools-gl")),this.toolsEl=l,this.el.className=(0,s.getUiClass)(i,this.className),this.ready=1,this._renderFrames(),this}});function Z(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function I(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};n=I(I(I({},a),e),{},{module:this}),this.em=n.em;var r=n,i=r.scripts,o=r.styles,s=n.pStylePrefix;return s&&(n.stylePrefix=s+n.stylePrefix),t=new y({scripts:i,styles:o},e),this.model=t,this.startAutoscroll=this.startAutoscroll.bind(this),this.stopAutoscroll=this.stopAutoscroll.bind(this),this},onLoad:function(){this.model.init()},getModel:function(){return t},getConfig:function(){return n},getElement:function(){return e.el},getFrame:function(t){return this.getFrames()[t||0]},getFrameEl:function(){var t=(e||{}).frame;return t&&t.el},getFramesEl:function(){return e.framesArea},getWindow:function(){return this.getFrameEl().contentWindow},getDocument:function(){var t=this.getFrameEl();return t&&t.contentDocument},getBody:function(){var t=this.getDocument();return t&&t.body},_getCompFrame:function(t){return t&&t._getFrame()},_getLocalEl:function(t,e,n){var r=t,i=this._getCompFrame(e);return r=i?i[n]():r},getGlobalToolsEl:function(){return e.toolsGlobEl},getToolsEl:function(t){return this._getLocalEl(e.toolsEl,t,'getToolsEl')},getHighlighter:function(t){return this._getLocalEl(e.hlEl,t,'getHighlighter')},getBadgeEl:function(t){return this._getLocalEl(e.badgeEl,t,'getBadgeEl')},getPlacerEl:function(){return e.placerEl},getGhostEl:function(){return e.ghostEl},getToolbarEl:function(){return e.toolbarEl},getResizerEl:function(){return e.resizerEl},getOffsetViewerEl:function(t){return this._getLocalEl(e.offsetEl,t,'getOffsetViewerEl')},getFixedOffsetViewerEl:function(){return e.fixedOffsetEl},render:function(){return e&&e.remove(),(e=new N({model:t,config:n})).render().el},getOffset:function(){var t=this.offset(this.getFrameEl()),e=this.offset(this.getElement());return{top:t.top-e.top,left:t.left-e.left}},offset:function(t){return e.offset(t)},setCustomBadgeLabel:function(t){n.customBadgeLabel=t},getElementPos:function(t,n){return e.getElementPos(t,n)},getElementOffsets:function(t){return e.getElementOffsets(t)},getRect:function(){var t=e.getPosition(),n=t.top,r=t.left;return I(I({},e.getCanvasOffset()),{},{topScroll:n,leftScroll:r})},getTargetToElementDim:function(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i||{},s=e.getPosition();if(s){var a=o.elPos||e.getElementPos(r),l=i.toRight||0,c=o.targetHeight||t.offsetHeight,u=o.targetWidth||t.offsetWidth,h=o.event||null,f=a.top-c,d=a.left;d+=l?a.width:0;var p=(d=l?d-u:d)a.top+a.height?a.top+a.height:g,left:p,elementTop:a.top,elementLeft:a.left,elementWidth:a.width,elementHeight:a.height,targetWidth:t.offsetWidth,targetHeight:t.offsetHeight,canvasTop:s.top,canvasLeft:s.left,canvasWidth:s.width,canvasHeight:s.height};return h&&n.em&&n.em.trigger(h,v),v}},canvasRectOffset:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=function(t){var e=t.defaultView;return e&&e.frameElement},o=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2?arguments[2]:void 0,s=n.em.getZoomDecimal(),a=e?'top':'left',l=t.ownerDocument,c=r.offset?i(l):{},u=c.offsetTop,h=void 0===u?0:u,f=c.offsetLeft,d=void 0===f?0:f,p=l.body||{},g=p.scrollTop,v=void 0===g?0:g,m=p.scrollLeft,y=void 0===m?0:m,b=e?v:y,w=e?h:d;return o[a]-(b-w)*s};return{top:o(t,1,e),left:o(t,0,e)}},getTargetToElementFixed:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.pos||this.getElementPos(t),i=n.canvasOff||this.canvasRectOffset(t,r),s=e.offsetHeight||0,a=e.offsetWidth||0,l=r.left+r.width,c=this.getCanvasView(),u=c.getPosition(),h=c.getFrameOffset(t),f=n.event,d=-s,p=(0,o.isUndefined)(n.left)?r.width-a:n.left;p=r.left<-p?-r.left:p,p=l>u.width?p-(l-u.width):p;var g=r.height+s,v=g1&&void 0!==arguments[1]?arguments[1]:{},n=(0,s.getElement)(t),r=n&&(0,s.getViewEl)(n);r&&r.scrollIntoView(e)},startAutoscroll:function(t){var e=t&&t.view||this.em.getCurrentFrame();e&&e.startAutoscroll()},stopAutoscroll:function(t){var e=t&&t.view||this.em.getCurrentFrame();e&&e.stopAutoscroll()},setZoom:function(e){return t.set('zoom',parseFloat(e)),this},getZoom:function(){return parseFloat(t.get('zoom'))},setCoords:function(e,n){return t.set({x:parseFloat(e),y:parseFloat(n)}),this},getCoords:function(){var e=t.attributes;return{x:e.x,y:e.y}},getZoomDecimal:function(){return this.getZoom()/100},getZoomMultiplier:function(){var t=this.getZoomDecimal();return t?1/t:1},toggleFramesEvents:function(t){this.getFramesEl().style.pointerEvents=t?'':'none'},getFrames:function(){return t.get('frames').map((function(t){return t}))},addFrame:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.get('frames').add(I({},e),I(I({},n),{},{em:this.em}))},destroy:function(){var r=this;t.stopListening(),e&&e.remove(),[n,t,e].forEach((function(t){return{}})),['em','model','droppable'].forEach((function(t){return r[t]={}}))}}}},9065:(t,e,n)=>{"use strict";n.d(e,{Z:()=>O});var r=n(4942),i=n(5671),o=n(3144),s=n(9340),a=n(3930),l=n(1120),c=n(9050),u=n(2316),h=n(2982),f=n(6183);function d(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function p(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},n=e.config,r=n.em,i=this.attributes,o=i.styles,s=i.component,a=r.get('DomComponents'),l=a.getConfig(),u=r.get('CssComposer').getAll(),h={};this.em=r;var d={em:r,config:l,frame:this,idMap:h};if(!(0,f.isComponent)(s)){var p=(0,f.isObject)(s)?s:{components:s};!p.type&&(p.type='wrapper');var g=a.getType('wrapper').model;this.set('component',new g(p,d))}if(o){if(!(0,f.isObject)(o)){var y=Object.keys(h);y.length&&Array.isArray(o)&&o.forEach((function(t){var e=t.selectors;if(e&&1==e.length){var n=e[0],r=n.name&&2===n.type&&n;if(r&&h[r.name])r.name=h[r.name];else if((0,c.isString)(n)&&'#'===n[0]){var i=n.substring(1);i&&h[i]&&(e[0]="#".concat(h[i]))}}})),u.add(o),this.set('styles',u)}}else this.set('styles',u);!t.width&&this.set(v,1),!t.height&&this.set(m,1)}},{key:"onRemove",value:function(){this.getComponent().remove({root:1})}},{key:"changesUp",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.temporary||t.noCount||t.avoidStore||this.set('changesCount',this.get('changesCount')+1)}},{key:"getComponent",value:function(){return this.get('component')}},{key:"getStyles",value:function(){return this.get('styles')}},{key:"disable",value:function(){this.trigger('disable')}},{key:"remove",value:function(){this.view=0;var t=this.collection;return t&&t.remove(this)}},{key:"getHead",value:function(){var t=this.get('head')||[];return(0,h.Z)(t)}},{key:"setHead",value:function(t){return this.set('head',(0,h.Z)(t))}},{key:"addHeadItem",value:function(t){var e=this.getHead();e.push(t),this.setHead(e)}},{key:"getHeadByAttr",value:function(t,e,n){return this.getHead().filter((function(r){return r.attributes&&r.attributes[t]==e&&(!n||n===r.tag)}))[0]}},{key:"removeHeadByAttr",value:function(t,e,n){var r=this.getHead(),i=this.getHeadByAttr(t,e,n),o=r.indexOf(i);o>=0&&(r.splice(o,1),this.setHead(r))}},{key:"addLink",value:function(t){var e='link';!this.getHeadByAttr('href',t,e)&&this.addHeadItem({tag:e,attributes:{href:t,rel:'stylesheet'}})}},{key:"removeLink",value:function(t){this.removeHeadByAttr('href',t,'link')}},{key:"addScript",value:function(t){var e='script';!this.getHeadByAttr('src',t,e)&&this.addHeadItem({tag:e,attributes:{src:t}})}},{key:"removeScript",value:function(t){this.removeHeadByAttr('src',t,'script')}},{key:"getPage",value:function(){var t=this.collection;return t&&t.page}},{key:"_emitUpdated",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.em.trigger('frame:updated',p({frame:this},t))}},{key:"toJSON",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=u.Model.prototype.toJSON.call(this,t),n=this.em,r=n&&n.get('StorageManager'),i=r&&r.getConfig(),o=(0,c.result)(this,'defaults');if(i&&!t.fromUndo){var s={component:this.getComponent()};i.storeHtml&&(e.html=n.getHtml(s)),i.storeCss&&(e.css=n.getCss(s))}return t.fromUndo&&delete e.component,delete e.styles,delete e.changesCount,e.__aw&&delete e.width,e.__ah&&delete e.height,(0,c.forEach)(e,(function(t,n){0===n.indexOf('_')&&delete e[n]})),(0,c.forEach)(o,(function(t,n){e[n]===t&&delete e[n]})),(0,c.forEach)(['attributes','head'],(function(t){(0,c.isEmpty)(e[t])&&delete e[t]})),e}}]),n}(u.Model);function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function w(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};(0,c.bindAll)(this,'itemLoaded'),this.config=e,this.on('reset',this.onReset),this.on('remove',this.onRemove)}},{key:"onReset",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.previousModels||[];r.map((function(t){return e.onRemove(t)}))}},{key:"onRemove",value:function(t){t&&t.onRemove()}},{key:"itemLoaded",value:function(){this.loadedItems++,this.loadedItems>=this.itemsToLoad&&(this.trigger('loaded:all'),this.listenToLoadItems(0))}},{key:"listenToLoad",value:function(){this.loadedItems=0,this.itemsToLoad=this.length,this.listenToLoadItems(1)}},{key:"listenToLoadItems",value:function(t){var e=this;this.forEach((function(n){return n[t?'on':'off']('loaded',e.itemLoaded)}))}},{key:"add",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.config;return u.Collection.prototype.add.call(this,t,w(w({},e),{},{config:n}))}}]),n}(u.Collection);O.prototype.model=y},7619:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>P});var r=n(9050);const i={stylePrefix:'cm-',inlineCss:!1};var o=n(5671),s=n(3144),a=n(9340),l=n(3930),c=n(1120),u=n(2316),h=n.n(u);function f(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,c.Z)(t);if(e){var i=(0,c.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,l.Z)(this,n)}}var d=function(t){(0,a.Z)(n,t);var e=f(n);function n(){return(0,o.Z)(this,n),e.apply(this,arguments)}return(0,s.Z)(n,[{key:"build",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={},r=e.em;if(e.cleanId&&r){var i=r.get('CssComposer').getAll(),o=i.toJSON().map((function(t){var e=t.selectors,n=e&&1===e.length&&e.models[0];return n&&n.isId()&&n.get('name')})).filter((function(t){return t}));n.attributes=function(t,e){var n=e.id;return n&&'i'===n[0]&&!t.get('script')&&!t.get('attributes').id&&o.indexOf(n)<0&&delete e.id,e}}return t.toHTML(n)}}]),n}(u.Model),p=n(8795);const g=h().Model.extend({build:function(t){var e=t.toJSON();return this.beforeEach(e),(0,r.each)(e,(function(t,n){var r=e[n];if(r instanceof h().Model)e[n]=this.build(r);else if(r instanceof h().Collection){var i=r;e[n]=[],i.length&&i.each((function(t,r){e[n][r]=this.build(t)}),this)}}),this),e},beforeEach:function(t){delete t.status}});var v=n(4942);const m=h().Model.extend({mapModel:function(t){var e='',n=t.get('script-export')||t.get('script'),i=t.get('type'),o=t.get('components'),s=t.getId();if(n){var a=t.get('attributes');a=(0,r.extend)({},a,{id:s}),t.set('attributes',a,{silent:1});var l=t.getScriptString(n),c=t.get('script-props');if(t.get('scriptUpdated')&&!c)this.mapJs[i+'-'+s]={ids:[s],code:l};else{var u,h=this.mapJs[i];if(c&&(u=t.__getScriptProps()),h)h.ids.push(s),u&&(h.props[s]=u);else{var f={ids:[s],code:l};u&&(f.props=(0,v.Z)({},s,u)),this.mapJs[i]=f}}}return o.each((function(t){e+=this.mapModel(t)}),this),e},build:function(t){this.mapJs={},this.mapModel(t);var e='';for(var n in this.mapJs){var r=this.mapJs[n];if(r.code)if(r.props){if(0===r.code.toString().match(/\{([\s\S]*)\}/m)[1].replace(/^\s*\/\/.*$/gm,'').trim().length)continue;e+="\n var props = ".concat(JSON.stringify(r.props),";\n var ids = Object.keys(props).map(function(id) { return '#'+id }).join(',');\n var els = document.querySelectorAll(ids);\n for (var i = 0, len = els.length; i < len; i++) {\n var el = els[i];\n (").concat(r.code,".bind(el))(props[el.id]);\n }")}else{var i='#'+r.ids.join(', #');e+="\n var items = document.querySelectorAll('".concat(i,"');\n for (var i = 0, len = items.length; i < len; i++) {\n (function(){\n").concat(r.code,"\n}.bind(items[i]))();\n }")}}return e}});var y;function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}(0,n(6183).hasWin)()&&(y=n(4631),n(6531),n(6629),n(9210));const w=h().Model.extend({CodeMirror:y,defaults:{input:'',label:'',codeName:'',theme:'hopscotch',readOnly:!0,lineNumbers:!0},init:function(t){return(0,r.bindAll)(this,'onChange'),this.editor=y.fromTextArea(t,function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},r=this.editor;r&&(r.setValue(t),r.autoFormatRange&&(y.commands.selectAll(r),r.autoFormatRange(r.getCursor(!0),r.getCursor(!1)),y.commands.goDocStart(r)),!n.noRefresh&&setTimeout((function(){return e.refresh()})))}});var x,O=n(168),C=n(1629);function k(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,c.Z)(t);if(e){var i=(0,c.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,l.Z)(this,n)}}var S=function(t){(0,a.Z)(n,t);var e=k(n);function n(){return(0,o.Z)(this,n),e.apply(this,arguments)}return(0,s.Z)(n,[{key:"template",value:function(t){var e=t.pfx,n=t.codeName,r=t.label;return(0,C.Z)(x||(x=(0,O.Z)(["\n
\n
","
\n
\n
\n "])),e,e,n,e,r,e)}},{key:"initialize",value:function(t){this.config=t.config||{},this.pfx=this.config.stylePrefix}},{key:"render",value:function(){var t=this.model,e=this.pfx,n=this.$el,r=t.toJSON();return r.pfx=e,n.html(this.template(r)),n.attr('class',"".concat(e,"editor-c")),n.find("#".concat(e,"code")).append(t.get('input')),this}}]),n}(u.View);const P=function(){var t={},e={},n={},o={},s={},a='CodeMirror';return{getConfig:function(){return t},config:t,EditorView:S,name:'CodeManager',init:function(e){for(var r in t=e||{},i)r in t||(t[r]=i[r]);var o=t.pStylePrefix;return o&&(t.stylePrefix=o+t.stylePrefix),n.html=new d,n.css=new p.Z,n.json=new g,n.js=new m,s.CodeMirror=new w,this.loadDefaultGenerators().loadDefaultViewers(),this},addGenerator:function(t,n){return e[t]=n,this},getGenerator:function(t){return e[t]||null},getGenerators:function(){return e},addViewer:function(t,e){return o[t]=e,this},getViewer:function(t){return o[t]||null},getViewers:function(){return o},createViewer:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(0,r.isUndefined)(t.type)?a:t.type,n=this.getViewer(e)&&this.getViewer(e).clone(),i=document.createElement('div'),o=document.createElement('textarea');return i.appendChild(o),n.set(t),n.init(o),n.setElement(i),n},updateViewer:function(t,e){t.setContent(e)},getCode:function(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.em=t.em;var i=this.getGenerator(n);return i?i.build(e,r):''},loadDefaultGenerators:function(){for(var t in n)this.addGenerator(t,n[t]);return this},loadDefaultViewers:function(){for(var t in s)this.addViewer(t,s[t]);return this},destroy:function(){[t,e,n,o,s].forEach((function(t){return{}}))}}}},8795:(t,e,n)=>{"use strict";n.d(e,{U:()=>l,Z:()=>c});var r=n(2316),i=n.n(r),o=n(9050),s=n(6183),a=Number.MAX_VALUE,l=function(t){var e=/(-?\d*\.?\d+)\w{0,}/.exec(t);return e?e[0]:''};const c=i().Model.extend({initialize:function(){(0,o.bindAll)(this,'sortRules'),this.compCls=[],this.ids=[]},buildFromModel:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r='',i=this.em,o=i&&i.getConfig('avoidInlineStyle'),s=t.styleToString(),a=t.get('classes');this.ids.push("#".concat(t.getId())),a.each((function(t){return e.compCls.push(t.getFullName())})),!o&&s&&(r="#".concat(t.getId(),"{").concat(s,"}"));var l=t.components();return l.each((function(t){return r+=e.buildFromModel(t,n)})),r},build:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.json,i=n.em||'',a=n.cssc||i&&i.get('CssComposer');this.em=i,this.compCls=[],this.ids=[],this.model=t;var l=[],c=t?this.buildFromModel(t,n):'',u=(0,o.isUndefined)(n.clearStyles)&&i?i.getConfig('clearStyles'):n.clearStyles;if(a){var h=n.rules||a.getAll(),f={},d=[];n.onlyMatched&&t&&(0,s.hasWin)()&&(h=this.matchedRules(t,h)),h.forEach((function(t){var i=t.getAtRule();if(i){var o=f[i];o?o.push(t):f[i]=[t]}else{var s=e.buildFromRule(t,d,n);r?l.push(s):c+=s}})),this.sortMediaObject(f).forEach((function(t){var i='',o=t.key;t.value.forEach((function(t){var s=e.buildFromRule(t,d,n);t.get('singleAtRule')?c+="".concat(o,"{").concat(s,"}"):i+=s,r&&l.push(s)})),i&&(c+="".concat(o,"{").concat(i,"}"))})),i&&u&&h.remove&&h.remove(d)}return r?l.filter((function(t){return t})):c},buildFromRule:function(t,e){var n,r=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o='',s=this.model,a=t.selectorsToString({skipAdd:1}),l=t.get('selectorsAdd'),c=t.get('singleAtRule');if(t.get('selectors').each((function(t){var e=t.getFullName();(r.compCls.indexOf(e)>=0||r.ids.indexOf(e)>=0||i.keepUnusedStyles)&&(n=1)})),a&&n||l||c||!s){var u=t.getDeclaration({body:1});u&&(i.json?o=t:o+=u)}else e.push(t);return o},matchedRules:function(t,e){var n=this,r=t.getEl(),i=[];return e.forEach((function(t){try{t.selectorsToString().split(',').some((function(t){return r.matches(n.__cleanSelector(t))}))&&i.push(t)}catch(t){}})),t.components().forEach((function(t){i=i.concat(n.matchedRules(t,e))})),i=i.filter((function(t,e){return i.indexOf(t)===e}))},getQueryLength:function(t){var e=/(-?\d*\.?\d+)\w{0,}/.exec(t);return e?parseFloat(e[1]):a},sortMediaObject:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=[];return(0,o.each)(e,(function(t,e){return n.push({key:e,value:t})})),n.sort((function(e,n){var r=[e.key,n.key].every((function(t){return-1!==t.indexOf('min-width')})),i=r?e.key:n.key,o=r?n.key:e.key;return t.getQueryLength(i)-t.getQueryLength(o)}))},sortRules:function(t,e){var n=function(t){return t.get('mediaText')},r=[n(t),n(e)].every((function(t){return-1!==t.indexOf('min-width')})),i=n(r?t:e),o=n(r?e:t);return this.getQueryLength(i)-this.getQueryLength(o)},__cleanSelector:function(t){return t.split(' ').map((function(t){return t.split(':')[0]})).join(' ')}})},289:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>f});var r=n(2982),i=n(4942),o=n(9050),s=n(238);const a={stylePrefix:'com-',defaults:[],strict:1};var l=n(9138);function c(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function u(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};e=u(u({},a),s),t=e.em;var f=e.pStylePrefix;return f&&(e.stylePrefix=f+e.stylePrefix),Object.keys(e.defaults).forEach((function(t){var n=e.defaults[t];n.id&&i.add(n.id,n)})),c['tlb-delete']={run:function(t){return t.runCommand('core:component-delete')}},c['tlb-clone']={run:function(t){t.runCommand('core:copy'),t.runCommand('core:paste',{action:'clone-component'})}},c['tlb-move']={run:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=t.getModel(),s=n&&n.event,a=n.target,c=a||t.getSelected(),u=a?[a]:(0,r.Z)(t.getSelectedAll()),h=s&&'dragstart'==s.type,f={preserveSelected:1},d=['absolute','translate'];if(!c||!c.get('draggable'))return i.logWarning('The element is not draggable');var p=c.get('dmode')||i.get('dmode'),g=function(){return i.stopDefault(f)},v=(0,o.includes)(d,p);u.forEach((function(t){return t.trigger('disable')})),h?setTimeout(g,0):g();var m=function(t){i.trigger("".concat(l.OA,":start"),t)},y=function(t){i.trigger(l.OA,t)},b=function(e,n,r){u.forEach((function(t){return t.set('status','selected')})),t.select(u),c.emitUpdate(),i.trigger("".concat(l.OA,":end"),r),setTimeout((function(){return i.runDefault(f)})),(v||r.cancelled)&&i.set('_cmpDrag',1)};if(v)t.runCommand('core:component-drag',{guidesInfo:1,mode:p,target:c,onStart:m,onDrag:y,onEnd:b,event:s});else{h&&s.dataTransfer.setDragImage(c.view.el,0,0);var w=t.Commands.get('move-comp');w.onStart=m,w.onDrag=y,w.onEndMoveFromModel=b,w.initSorterFromModels(u)}u.forEach((function(t){return t.set('status','freezed-selected')}))}},c['core:undo']=function(t){return t.UndoManager.undo()},c['core:redo']=function(t){return t.UndoManager.redo()},h.forEach((function(e){var r=e[2],i=n(2828)("./".concat(e[1])).default,o="core:".concat(e[0]);c[o]=i,r&&(c[r]=i,['run','stop'].forEach((function(e){t.on("".concat(e,":").concat(r),(function(){for(var n,r=arguments.length,i=new Array(r),s=0;s1&&void 0!==arguments[1]?arguments[1]:{},n=this.get(t);if(n){var r=u(u({},n.constructor.prototype),e);this.add(t,r);var i=h.filter((function(e){return"core:".concat(e[0])===t&&e[2]}))[0];i&&this.add(i[2],r)}return this},has:function(t){return!!i[t]},getAll:function(){return i},run:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.runCommand(this.get(t),e)},stop:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.stopCommand(this.get(t),e)},isActive:function(t){return this.getActive().hasOwnProperty(t)},getActive:function(){return f},loadDefaultCommands:function(){for(var t in c)this.add(t,c[t]);return this},runCommand:function(n){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(n&&n.run){var o=n.id,s=t.get('Editor');this.isActive(o)&&!i.force&&e.strict||(r=s&&n.callRun(s,i),o&&n.stop&&!n.noStop&&!i.abort&&(f[o]=r))}return r},stopCommand:function(n){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(n&&n.run){var o=n.id,s=t.get('Editor');(this.isActive(o)||i.force||!e.strict)&&(o&&delete f[o],r=n.callStop(s,i))}return r},create:function(t){return t.stop||(t.noStop=1),new(s.default.extend(t))(e)},destroy:function(){[t,e,i,c,f].forEach((function(t){return{}}))}}}},7202:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r={run:function(t){t.DomComponents.clear(),t.CssComposer.clear()}}},327:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>s});var r=n(9050),i=n(6183),o=n(5610);const s={run:function(t){(0,r.bindAll)(this,'onKeyUp','enableDragger','disableDragger'),this.editor=t,this.canvasModel=this.canvas.getCanvasView().model,this.toggleMove(1)},stop:function(t){this.toggleMove(),this.disableDragger()},onKeyUp:function(t){' '===(0,i.getKeyChar)(t)&&this.editor.stopCommand(this.id)},enableDragger:function(t){this.toggleDragger(1,t)},disableDragger:function(t){this.toggleDragger(0,t)},toggleDragger:function(t,e){var n=this.canvasModel,r=this.em,i=this.dragger,s=t?'add':'remove';this.getCanvas().classList[s]("".concat(this.ppfx,"is__grabbing")),i||(i=new o.Z({getPosition:function(){return{x:n.get('x'),y:n.get('y')}},setPosition:function(t){var e=t.x,r=t.y;n.set({x:e,y:r})},onStart:function(t,e){r.trigger('canvas:move:start',e)},onDrag:function(t,e){r.trigger('canvas:move',e)},onEnd:function(t,e){r.trigger('canvas:move:end',e)}}),this.dragger=i),t?i.start(e):i.stop()},toggleMove:function(t){var e=this.ppfx,n=t?'add':'remove',r=t?'on':'off',o={on:i.on,off:i.off},s=this.getCanvas(),a=["".concat(e,"is__grab")];!t&&a.push("".concat(e,"is__grabbing")),a.forEach((function(t){return s.classList[n](t)})),o[r](document,'keyup',this.onKeyUp),o[r](s,'mousedown',this.enableDragger),o[r](document,'mouseup',this.disableDragger)}}},238:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>i});var r=n(2316);const i=r.Model.extend({initialize:function(t){this.config=t||{},this.editorModel=this.em=this.config.em||{},this.pfx=this.config.stylePrefix,this.ppfx=this.config.pStylePrefix,this.hoverClass=this.pfx+'hover',this.badgeClass=this.pfx+'badge',this.plhClass=this.pfx+'placeholder',this.freezClass=this.ppfx+'freezed',this.canvas=this.em.get&&this.em.get('Canvas'),this.init(this.config)},onFrameScroll:function(t){},getCanvas:function(){return this.canvas.getElement()},getCanvasBody:function(){return this.canvas.getBody()},getCanvasTools:function(){return this.canvas.getToolsEl()},offset:function(t){var e=t.getBoundingClientRect();return{top:e.top+t.ownerDocument.body.scrollTop,left:e.left+t.ownerDocument.body.scrollLeft}},init:function(t){},callRun:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.id;if(t.trigger("run:".concat(n,":before"),e),!e||!e.abort){var r=e.sender||t,i=this.run(t,r,e);return t.trigger("run:".concat(n),i,e),t.trigger('run',n,i,e),i}t.trigger("abort:".concat(n),e)},callStop:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.id,r=e.sender||t;t.trigger("stop:".concat(n,":before"),e);var i=this.stop(t,r,e);return t.trigger("stop:".concat(n),i,e),t.trigger('stop',n,i,e),i},stopCommand:function(){this.em.get('Commands').stop(this.id)},run:function(t,e){},stop:function(t,e){}})},5820:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var r=n(2982),i=n(9050);const o={run:function(t,e){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=[],a=o.component||t.getSelectedAll();return(a=(0,i.isArray)(a)?(0,r.Z)(a):[a]).filter(Boolean).forEach((function(t){if(!t.get('removable'))return s.push(t),n.em.logWarning('The element is not removable',{component:t});t.remove()})),t.select(s),a}}},6694:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>c});var r=n(4942),i=n(9050),o=n(5610);function s(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function a(t){for(var e=1;e2&&void 0!==arguments[2]?arguments[2]:{};(0,i.bindAll)(this,'setPosition','onStart','onDrag','onEnd','getPosition','getGuidesStatic','renderGuide','getGuidesTarget');var s=r.target,c=r.event,u=r.mode,h=r.dragger,f=void 0===h?{}:h,d=s.getEl(),p=a({doc:d.ownerDocument,onStart:this.onStart,onEnd:this.onEnd,onDrag:this.onDrag,getPosition:this.getPosition,setPosition:this.setPosition,guidesStatic:function(){return n.guidesStatic},guidesTarget:function(){return n.guidesTarget}},f);this.setupGuides(),this.opts=r,this.editor=t,this.em=t.getModel(),this.target=s,this.isTran='translate'==u,this.guidesContainer=this.getGuidesContainer(),this.guidesTarget=this.getGuidesTarget(),this.guidesStatic=this.getGuidesStatic();var g=this.dragger;return g?g.setOptions(p):(g=new o.Z(p),this.dragger=g),c&&g.start(c),this.toggleDrag(1),this.em.trigger("".concat(l,":start"),this.getEventOpts()),g},getEventOpts:function(){return{mode:this.opts.mode,target:this.target,guidesTarget:this.guidesTarget,guidesStatic:this.guidesStatic}},stop:function(){this.toggleDrag()},setupGuides:function(){(this.guides||[]).forEach((function(t){var e=t.guide;e&&e.parentNode.removeChild(e)})),this.guides=[]},getGuidesContainer:function(){var t=this,e=this.guidesEl;if(!e){var n=this.editor,r=this.em,o=this.opts,s=n.getConfig('stylePrefix'),a=document.createElement('div'),l=document.createElement('div'),c="
\n
\n
");(e=document.createElement('div')).className="".concat(s,"guides"),a.className="".concat(s,"guide-info ").concat(s,"guide-info__x"),l.className="".concat(s,"guide-info ").concat(s,"guide-info__y"),a.innerHTML=c,l.innerHTML=c,e.appendChild(a),e.appendChild(l),n.Canvas.getGlobalToolsEl().appendChild(e),this.guidesEl=e,this.elGuideInfoX=a,this.elGuideInfoY=l,this.elGuideInfoContentX=a.querySelector(".".concat(s,"guide-info__content")),this.elGuideInfoContentY=l.querySelector(".".concat(s,"guide-info__content")),r.on('canvas:update frame:scroll',(0,i.debounce)((function(){t.updateGuides(),o.debug&&t.guides.forEach((function(e){return t.renderGuide(e)}))}),200))}return e},getGuidesStatic:function(){var t=this,e=[],n=this.target.getEl(),r=n.parentNode,o=void 0===r?{}:r;return(0,i.each)(o.children,(function(r){return e=e.concat(n!==r?t.getElementGuides(r):[])})),e.concat(this.getElementGuides(o))},getGuidesTarget:function(){return this.getElementGuides(this.target.getEl())},updateGuides:function(t){var e,n,r=this;(t||this.guides).forEach((function(t){var o=t.origin,s=e===o?n:r.getElementPos(o);e=o,n=s,(0,i.each)(r.getGuidePosUpdate(t,s),(function(e,n){return t[n]=e})),t.originRect=s}))},getGuidePosUpdate:function(t,e){var n={},r=e.top,i=e.height,o=e.left,s=e.width;switch(t.type){case't':n.y=r;break;case'b':n.y=r+i;break;case'l':n.x=o;break;case'r':n.x=o+s;break;case'x':n.x=o+s/2;break;case'y':n.y=r+i/2}return n},renderGuide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.guide||document.createElement('div'),n='px',r=t.active?2:1,i=e.children[0];return e.style="position: absolute; background-color: ".concat(t.active?'green':'red',";"),e.children.length||((i=document.createElement('div')).style='position: absolute; color: red; padding: 5px; top: 0; left: 0;',e.appendChild(i)),t.y?(e.style.width='100%',e.style.height="".concat(r).concat(n),e.style.top="".concat(t.y).concat(n),e.style.left=0):(e.style.width="".concat(r).concat(n),e.style.height='100%',e.style.left="".concat(t.x).concat(n),e.style.top="0".concat(n)),!t.guide&&this.guidesContainer.appendChild(e),e},getElementPos:function(t){return this.editor.Canvas.getElementPos(t,{noScroll:1})},getElementGuides:function(t){var e=this,n=this.opts,r=this.getElementPos(t),i=r.top,o=r.height,s=r.left,l=r.width,c=[{type:'t',y:i},{type:'b',y:i+o},{type:'l',x:s},{type:'r',x:s+l},{type:'x',x:s+l/2},{type:'y',y:i+o/2}].map((function(i){return a(a({},i),{},{origin:t,originRect:r,guide:n.debug&&e.renderGuide(i)})}));return c.forEach((function(t){return e.guides.push(t)})),c},getTranslate:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'x',n=0;return(t||'').split(' ').forEach((function(t){var r=t.trim(),i="translate".concat(e.toUpperCase(),"(");0===r.indexOf(i)&&(n=parseFloat(r.replace(i,'')))})),n},setTranslate:function(t,e,n){var r="translate".concat(e.toUpperCase(),"("),i="".concat(r).concat(n,")"),o=(t||'').split(' ').map((function(t){return 0===t.trim().indexOf(r)&&(t=i),t})).join(' ');return o.indexOf(r)<0&&(o+=" ".concat(i)),o},getPosition:function(){var t=this.target,e=this.isTran,n=t.getStyle(),r=n.left,i=n.top,o=n.transform,s=0,a=0;return e?(s=this.getTranslate(o),a=this.getTranslate(o,'y')):(s=parseFloat(r||0),a=parseFloat(i||0)),{x:s,y:a}},setPosition:function(t){var e=t.x,n=t.y,r=t.end,o=t.position,s=t.width,a=t.height,l=this.target,c=this.isTran,u=this.em,h=r?'':1,f="".concat(e).concat("px"),d="".concat(n).concat("px"),p={};if(c){var g=l.getStyle().transform||'';g=this.setTranslate(g,'x',f),p={transform:g=this.setTranslate(g,'y',d),en:h},l.addStyle(p,{avoidStore:!r})}else{var v={position:o,width:s,height:a},m={left:f,top:d,en:h};(0,i.keys)(v).forEach((function(t){var e=v[t];e&&(m[t]=e)})),p=m,l.addStyle(p,{avoidStore:!r})}u.getSelected()&&(0,i.keys)(p).forEach((function(t){return u.trigger("update:component:style:".concat(t))}))},_getDragData:function(){var t=this.target;return{target:t,parent:t.parent(),index:t.index()}},onStart:function(t){var e=this.target,n=this.editor,r=this.isTran,i=this.opts,o=i.center,s=i.onStart,a=n.Canvas,l=e.getStyle(),c='absolute',u=[c,'relative'];if(s&&s(this._getDragData()),!r&&l.position!==c){var h,f=a.offset(e.getEl()),d=f.left,p=f.top,g=f.width,v=f.height,m=e.parent();do{var y=m.getStyle();h=u.indexOf(y.position)>=0?m:null,m=m.parent()}while(m&&!h);if(o){var b=a.getMouseRelativeCanvas(t);d=b.x,p=b.y}else if(h){var w=a.offset(h.getEl());d-=w.left,p-=w.top}this.setPosition({x:d,y:p,width:"".concat(g,"px"),height:"".concat(v,"px"),position:c})}},onDrag:function(){var t=this,e=this.guidesTarget,n=this.opts,r=n.onDrag;this.updateGuides(e),n.debug&&e.forEach((function(e){return t.renderGuide(e)})),n.guidesInfo&&this.renderGuideInfo(e.filter((function(t){return t.active}))),r&&r(this._getDragData())},onEnd:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.editor,i=this.opts,o=this.id,s=i.onEnd;s&&s(t,n,a(a({event:t},n),this._getDragData())),r.stopCommand(o),this.hideGuidesInfo(),this.em.trigger("".concat(l,":end"),this.getEventOpts())},hideGuidesInfo:function(){var t=this;['X','Y'].forEach((function(e){var n=t["elGuideInfo".concat(e)];n&&(n.style.display='none')}))},renderGuideInfo:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=this.guidesStatic;this.hideGuidesInfo(),e.forEach((function(e){var r=e.origin,o=e.x,s=t.getElementPos(r),c=(0,i.isUndefined)(o)?'y':'x',u='y'===c,h=s[u?'left':'top'],f=s.rect[u?'left':'top'],d=u?h+s.width:h+s.height,p=u?f+s.rect.width:f+s.rect.height,g=t["elGuideInfo".concat(c.toUpperCase())],v=t["elGuideInfoContent".concat(c.toUpperCase())],m=g.style,y=n.filter((function(t){return t.type===e.type})).map((function(t){var e=t.originRect,n=e.left,r=e.width,i=e.top,o=e.height,s=u?n+r:i+o;return{gap:s0})).sort((function(t,e){return t.gap-e.gap})).map((function(t){return t.guide}))[0];if(y){var b=y.originRect,w=b.left,x=b.width,O=b.top,C=b.height,k=b.rect,S=u?w{"use strict";n.r(e),n.d(e,{default:()=>r});const r={run:function(t){if(t.Canvas.hasFocus()){var e=[];t.getSelectedAll().forEach((function(t){var n=t.components(),r=n&&n.filter((function(t){return t.get('selectable')}))[0];r&&e.push(r)})),e.length&&t.select(e)}}}},3888:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r={run:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t.Canvas.hasFocus()||n.force){var r=[];t.getSelectedAll().forEach((function(t){for(var e=t.parent();e&&!e.get('selectable');)e=e.parent();e&&r.push(e)})),r.length&&t.select(r)}}}},5883:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r={run:function(t){if(t.Canvas.hasFocus()){var e=[];t.getSelectedAll().forEach((function(t){var n=t.parent();if(n){var r,i=n.components().length,o=0,s=0;do{o++,r=(s=t.index()+o)<=i?n.getChildAt(s):null}while(r&&!r.get('selectable'));e.push(r||t)}})),e.length&&t.select(e)}}}},7508:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r={run:function(t){if(t.Canvas.hasFocus()){var e=[];t.getSelectedAll().forEach((function(t){var n=t.parent();if(n){var r,i=0,o=0;do{i++,r=(o=t.index()-i)>=0?n.getChildAt(o):null}while(r&&!r.get('selectable'));e.push(r||t)}})),e.length&&t.select(e)}}}},8769:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>i});var r=n(9050);const i={run:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=n.target,o=[];if(!i.get('styles'))return o;var s=i.get('type'),a=t.Pages.getAllWrappers(),l=(0,r.flatten)(a.map((function(t){return t.findType(s)}))).length;if(!l){var c=t.CssComposer.getAll();o=c.filter((function(t){return t.get('group')==="cmp:".concat(s)})),c.remove(o)}return o}}},2213:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>i});var r=n(2982);const i={run:function(t){var e=t.getModel(),n=(0,r.Z)(t.getSelectedAll());n.length&&e.set('clipboard',n)}}},5049:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>l});var r=n(9050),i=n(2316),o=n.n(i),s=n(2620),a=o().$;const l=(0,r.extend)({},s.default,{init:function(t){(0,r.bindAll)(this,'startDelete','stopDelete','onDelete'),this.hoverClass=this.pfx+'hover-delete',this.badgeClass=this.pfx+'badge-red'},enable:function(){this.$el.find('*').mouseover(this.startDelete).mouseout(this.stopDelete).click(this.onDelete)},startDelete:function(t){t.stopPropagation();var e=a(t.target);e.data('model').get('removable')&&(e.addClass(this.hoverClass),this.attachBadge(e.get(0)))},stopDelete:function(t){t.stopPropagation(),a(t.target).removeClass(this.hoverClass),this.badge&&this.badge.css({left:-1e3,top:-1e3})},onDelete:function(t){t.stopPropagation();var e=a(t.target);e.data('model').get('removable')&&(e.data('model').destroy(),this.removeBadge(),this.clean())},updateBadgeLabel:function(t){this.badge.html('Remove '+t.getName())}})},3775:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var r=n(2316),i=n.n(r)().$;const o={run:function(t,e){var n=this;e&&e.set&&e.set('active',0);var r=t.getConfig(),o=t.Modal,s=r.stylePrefix;if(this.cm=t.CodeManager||null,!this.$editors){var a=this.buildEditor('htmlmixed','hopscotch','HTML'),l=this.buildEditor('css','hopscotch','CSS');this.htmlEditor=a.el,this.cssEditor=l.el;var c=i("
"));c.append(a.$el).append(l.$el),this.$editors=c}o.open({title:r.textViewCode,content:this.$editors}).getModel().once('change:open',(function(){return t.stopCommand(n.id)})),this.htmlEditor.setContent(t.getHtml()),this.cssEditor.setContent(t.getCss())},stop:function(t){var e=t.Modal;e&&e.close()},buildEditor:function(t,e,n){var r=document.createElement('textarea');!this.codeMirror&&(this.codeMirror=this.cm.getViewer('CodeMirror'));var i=this.codeMirror.clone().set({label:n,codeName:t,theme:e,input:r}),o=new this.cm.EditorView({model:i,config:this.cm.getConfig()}).render().$el;return i.init(r),{el:i,$el:o}}}},58:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>i});var r=n(9050);const i={isEnabled:function(){var t=document;return t.fullscreenElement||t.webkitFullscreenElement||t.mozFullScreenElement?1:0},enable:function(t){var e='';return t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?(e='webkit',t.webkitRequestFullscreen()):t.mozRequestFullScreen?(e='moz',t.mozRequestFullScreen()):t.msRequestFullscreen?t.msRequestFullscreen():console.warn('Fullscreen not supported'),e},disable:function(){var t=document;this.isEnabled()&&(t.exitFullscreen?t.exitFullscreen():t.webkitExitFullscreen?t.webkitExitFullscreen():t.mozCancelFullScreen?t.mozCancelFullScreen():t.msExitFullscreen&&t.msExitFullscreen())},fsChanged:function(t,e){document;var n=(t||'')+'fullscreenchange';this.isEnabled()||(this.stop(null,this.sender),document.removeEventListener(n,this.fsChanged))},run:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sender=e;var i=n.target,o=(0,r.isElement)(i)?i:document.querySelector(i),s=this.enable(o||t.getContainer());this.fsChanged=this.fsChanged.bind(this,s),document.addEventListener(s+'fullscreenchange',this.fsChanged),t.trigger('change:canvasOffset')},stop:function(t,e){e&&e.set&&e.set('active',!1),this.disable(),t&&t.trigger('change:canvasOffset')}}},8658:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var r=n(9050),i=n(2316),o=n.n(i),s=n(6183),a=n(2620),l=n(8463),c=o().$;const u=(0,r.extend)({},l.default,a.default,{init:function(t){a.default.init.apply(this,arguments),(0,r.bindAll)(this,'initSorter','rollback','onEndMove'),this.opt=t,this.hoverClass=this.ppfx+'highlighter-warning',this.badgeClass=this.ppfx+'badge-warning',this.noSelClass=this.ppfx+'no-select'},enable:function(){for(var t=arguments.length,e=new Array(t),n=0;n{"use strict";n.r(e),n.d(e,{default:()=>o});var r=n(9050),i=n(9283);const o={open:function(t){var e=this,n=this.editor,i=this.title,o=this.config,s=this.am,a=o.custom;if((0,r.isFunction)(a.open))return a.open(s.__customData());n.Modal.open({title:i,content:t}).onceClose((function(){return n.stopCommand(e.id)}))},close:function(){var t=this.config.custom;if((0,r.isFunction)(t.close))return t.close(this.am.__customData());var e=this.editor.Modal;e&&e.close()},run:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=t.AssetManager,o=r.getConfig(),s=n.types,a=void 0===s?[]:s,l=n.accept,c=n.select;if(this.title=n.modalTitle||t.t('assetManager.modalTitle')||'',this.editor=t,this.config=o,this.am=r,r.setTarget(n.target),r.onClick(n.onClick),r.onDblClick(n.onDblClick),r.onSelect(n.onSelect),r.__behaviour({select:c,types:a,options:n}),o.custom)this.rendered=this.rendered||(0,i.ut)('div'),this.rendered.className="".concat(o.stylePrefix,"custom-wrp"),r.__behaviour({container:this.rendered}),r.__trgCustom();else{if(!this.rendered||a){var u=r.getAll().filter((function(t){return t}));a&&a.length&&(u=u.filter((function(t){return-1!==a.indexOf(t.get('type'))}))),r.render(u),this.rendered=r.getContainer()}if(l){var h=this.rendered.querySelector("input#".concat(o.stylePrefix,"uploadFile"));h&&h.setAttribute('accept',l)}}return this.open(this.rendered),this},stop:function(t){this.editor=t,this.close(this.rendered)}}},5821:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var r=n(9050),i=n(9283);const o={open:function(){var t=this.container,e=this.editor,n=this.bm,i=this.config,o=i.custom,s=i.appendTo;if((0,r.isFunction)(o.open))return o.open(n.__customData());if(this.firstRender&&!s){var a='views-container',l=e.Panels;(l.getPanel(a)||l.addPanel({id:a})).set('appendContent',t).trigger('change:appendContent'),o||t.appendChild(n.render())}t&&(t.style.display='block')},close:function(){var t=this.container,e=this.config.custom;if((0,r.isFunction)(e.close))return e.close(this.bm.__customData());t&&(t.style.display='none')},run:function(t){var e=t.Blocks;this.config=e.getConfig(),this.firstRender=!this.container,this.container=this.container||(0,i.ut)('div'),this.editor=t,this.bm=e;var n=this.container;e.__behaviour({container:n}),this.config.custom&&e.__trgCustom(),this.open()},stop:function(){this.close()}}},3452:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>r});const r={run:function(t){var e=t.LayerManager,n=t.Panels;if(!e.getConfig().appendTo){if(!this.layers){var r='views-container',i=document.createElement('div'),o=n.getPanel(r)||n.addPanel({id:r});i.appendChild(e.render()),o.set('appendContent',i).trigger('change:appendContent'),this.layers=i}this.layers.style.display='block'}},stop:function(){var t=this.layers;t&&(t.style.display='none')}}},2840:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var r=n(2316),i=n.n(r)().$;const o={run:function(t,e){if(this.sender=e,!this.$cn){var n=t.getConfig(),r=t.Panels,o='change:appendContent';this.$cn=i('
'),this.$cn2=i('
'),this.$cn.append(this.$cn2);var s=t.DeviceManager;if(s&&n.showDevices){var a=r.addPanel({id:'devices-c'}),l=s.render();a.set('appendContent',l).trigger(o)}var c=t.SelectorManager;this.slm=c;var u=c.getConfig();u.custom?c.__trgCustom({container:this.$cn2.get(0)}):u.appendTo||this.$cn2.append(c.render([]));var h=t.StyleManager;this.sm=h;var f=h.getConfig(),d=f.stylePrefix;this.$header=i("
").concat(t.t('styleManager.empty'),"
")),this.$cn.append(this.$header),f.custom?h.__trgCustom({container:this.$cn2.get(0)}):f.appendTo||this.$cn2.append(h.render());var p='views-container';this.panel=r.getPanel(p),this.panel||(this.panel=r.addPanel({id:p})),this.panel.set('appendContent',this.$cn).trigger(o),this.em=t.getModel(),this.listenTo(this.em,h.events.target,this.toggleSm)}this.toggleSm()},toggleSm:function(){var t,e,n,r,i=this.sender,o=this.sm;i&&i.get&&!i.get('active')||!o||(o.getSelected()?(null===(t=this.$cn2)||void 0===t||t.show(),null===(e=this.$header)||void 0===e||e.hide()):(null===(n=this.$cn2)||void 0===n||n.hide(),null===(r=this.$header)||void 0===r||r.show()))},stop:function(){var t,e;null===(t=this.$cn2)||void 0===t||t.hide(),null===(e=this.$header)||void 0===e||e.hide()}}},8644:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var r=n(2316),i=n.n(r)().$;const o={run:function(t,e){this.sender=e;var n=t.getModel(),r=t.Config.stylePrefix,o=t.TraitManager,s=o.getConfig();if(!s.appendTo){if(!this.$cn){this.$cn=i('
'),this.$cn2=i('
'),this.$cn.append(this.$cn2),this.$header=i('
').append("
").concat(n.t('traitManager.empty'),"
")),this.$cn.append(this.$header),this.$cn2.append("
").concat(n.t('traitManager.label'),"
")),this.$cn2.append(o.render());var a=t.Panels;(a.getPanel('views-container')?a.getPanel('views-container'):a.addPanel({id:'views-container'})).set('appendContent',this.$cn.get(0)).trigger('change:appendContent'),this.target=t.getModel(),this.listenTo(this.target,'component:toggled',this.toggleTm)}this.toggleTm()}},toggleTm:function(){var t=this.sender;t&&t.get&&!t.get('active')||(1===this.target.getSelectedAll().length?(this.$cn2.show(),this.$header.hide()):(this.$cn2.hide(),this.$header.show()))},stop:function(){this.$cn2&&this.$cn2.hide(),this.$header&&this.$header.hide()}}},560:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>i});var r=n(9050);const i={run:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=t.getModel(),o=i.get('clipboard'),s=t.getSelected();o&&s&&(t.getSelectedAll().forEach((function(e){if(e){var i=e.collection;if(i){var s,a={at:i.indexOf(e)+1,action:n.action||'paste-component'},l=o.filter((function(t){return t.get('copyable')}));s=(0,r.contains)(o,e)&&e.get('copyable')?i.add(e.clone(),a):i.add(l.map((function(t){return t.clone()})),a),(s=(0,r.isArray)(s)?s:[s]).forEach((function(e){return t.trigger('component:paste',e)}))}}})),s.emitUpdate())}}},4944:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>s});var r=n(2982),i=n(9050),o='sw-visibility';const s={getPanels:function(t){return this.panels||(this.panels=t.Panels.getPanels()),this.panels},preventDrag:function(t){t.abort=1},tglEffects:function(t){var e=this.em,n=t?'on':'off';if(e){var r=e.get('Canvas'),o=r.getBody(),s=r.getToolbarEl();s&&(s.style.display=t?'none':'');var a=o.querySelectorAll(".".concat(this.ppfx,"no-pointer"));(0,i.each)(a,(function(e){return e.style.pointerEvents=t?'all':''})),e[n]('run:tlb-move:before',this.preventDrag)}},run:function(t,e){var n=this;this.sender=e,this.selected=(0,r.Z)(t.getSelectedAll()),t.select(),this.shouldRunSwVisibility||(this.shouldRunSwVisibility=t.Commands.isActive(o)),this.shouldRunSwVisibility&&t.stopCommand(o),t.getModel().stopDefault();var i=this.getPanels(t),s=t.Canvas.getElement(),a=t.getEl(),l=t.Config.stylePrefix;if(!this.helper){var c=document.createElement('span');c.className="".concat(l,"off-prv fa fa-eye-slash"),a.appendChild(c),c.onclick=function(){return n.stopCommand()},this.helper=c}this.helper.style.display='inline-block',i.forEach((function(t){return t.set('visible',!1)}));var u=s.style;u.width='100%',u.height='100%',u.top='0',u.left='0',u.padding='0',u.margin='0',t.refresh(),this.tglEffects(1)},stop:function(t){var e=this.sender,n=void 0===e?{}:e,r=this.selected;n.set&&n.set('active',0);var i=this.getPanels(t);this.shouldRunSwVisibility&&(t.runCommand(o),this.shouldRunSwVisibility=!1),t.getModel().runDefault(),i.forEach((function(t){return t.set('visible',!0)})),t.Canvas.getElement().setAttribute('style',''),r&&t.select(r),delete this.selected,this.helper&&(this.helper.style.display='none'),t.refresh(),this.tglEffects()}}},7538:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var r=n(4942);function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}const o={run:function(t,e,n){var o=n||{},s=t.Canvas,a=s.getCanvasView(),l=function(t){for(var e=1;e{"use strict";n.r(e),n.d(e,{default:()=>x});var r=n(1002),i=n(4942),o=n(2316),s=n.n(o),a=n(9050),l=n(6183),c=n(9283),u=n(6602);function h(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function f(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=t.config,n=void 0===e?{}:e;this.em=n.em,this.editor=n.editor},handleClick:function(t){t.preventDefault(),t.stopPropagation();var e=this.editor,n=this.em,r=e.Canvas.getFrameEl().getBoundingClientRect(),i=r.left,o=r.top,s=f(f({},t),{},{clientX:t.clientX-i,clientY:t.clientY-o});n.trigger('toolbar:run:before'),this.execCommand(s)},execCommand:function(t){var e={event:t},n=this.model.get('command'),r=this.editor;'function'==typeof n&&n(r,null,e),'string'==typeof n&&r.runCommand(n,e)},render:function(){var t=this.editor,e=this.$el,n=this.model,r=n.get('id'),i=n.get('label'),o=t.getConfig('stylePrefix');return e.addClass("".concat(o,"toolbar-item")),r&&e.addClass("".concat(o,"toolbar-item__").concat(r)),i&&e.append(i),this}}),p=u.Z.extend({itemView:d,initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.config={editor:t.editor||'',em:t.em},this.listenTo(this.collection,'reset',this.render)}}),g=s().Model.extend({defaults:{command:'',attributes:{}}}),v=s().Collection.extend({model:g});function m(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function y(t){for(var e=1;e2&&void 0!==arguments[2]?arguments[2]:{},r=n.el||this.canvas.getToolsEl(e);return r&&(r.style.display=t?'':'none'),r||{}},showElementOffset:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};b&&this.editor.runCommand('show-offset',{el:t,elPos:e,view:n.view,force:1,top:0,left:0})},hideElementOffset:function(t){this.editor.stopCommand('show-offset',{view:t})},showFixedElementOffset:function(t,e){this.editor.runCommand('show-offset',{el:t,elPos:e,state:'Fixed'})},hideFixedElementOffset:function(t,e){this.editor&&this.editor.stopCommand('show-offset',{state:'Fixed'})},hideHighlighter:function(t){this.canvas.getHighlighter(t).style.opacity=0},onClick:function(t){t.stopPropagation(),t.preventDefault();var e=this.em;if(e.get('_cmpDrag'))return e.set('_cmpDrag');var n=w(t.target),r=n.data('model');if(!r)for(var i=n.parent();!r&&i.length&&!(0,c.Mx)(i[0]);)r=i.data('model'),i=i.parent();if(r){if(e.isEditing()&&!r.get('textable')&&r.isChildOf('text'))return;this.select(r,t)}},select:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t&&(this.editor.select(t,{event:e,useValid:!0}),this.initResize(t))},updateBadge:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.canvas,i=w(t).data('model');if(i&&i.get('badgable')){var o=this.getBadge(n);if(!n.posOnly){var s=this.canvas.getConfig(),a=i.getIcon(),l=s.pStylePrefix||'',c="".concat(l,"badge"),u=s.customBadgeLabel,h="".concat(a?"
").concat(a,"
"):'',"\n
").concat(i.getName(),"
");o.innerHTML=u?u(i):h}var f='px',d=o.style;d.display='block';var p=r.getTargetToElementFixed(t,o,{pos:e}),g=p.top,v=n.leftOff<0?-n.leftOff:0;d.top=g+f,d.left=v+f}},showHighlighter:function(t){this.canvas.getHighlighter(t).style.opacity=''},initResize:function(t){var e,n=this.em,i=this.canvas,o=n?n.get('Editor'):'',s=(n?n.get('Config'):'').stylePrefix||'',c="".concat(s,"resizing"),u=!(0,a.isElement)(t)&&(0,l.isTaggableNode)(t)?t:n.getSelected(),h=u&&u.get('resizable'),f={},d=function(t,e,n){var r=n.docs;r&&r.forEach((function(e){var n=e.body,r=n.className||'';n.className=('add'==t?"".concat(r," ").concat(c):r.replace(c,'')).trim()}))};if(o&&h){var p=(0,a.isElement)(t)?t:u.getEl();f={onStart:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=r.el,s=r.config,a=r.resizer,c=s.keyHeight,h=s.keyWidth,f=s.currentUnit,p=s.keepAutoHeight,g=s.keepAutoWidth;d('add',0,r),e=n.get('StyleManager').getModelToStyle(u),i.toggleFramesEvents();var v=getComputedStyle(o),m=e.getStyle(),y=m[h];s.autoWidth=g&&'auto'===y,isNaN(parseFloat(y))&&(y=v[h]);var w=m[c];s.autoHeight=p&&'auto'===w,isNaN(parseFloat(w))&&(w=v[c]),a.startDim.w=parseFloat(y),a.startDim.h=parseFloat(w),b=0,f&&(s.unitHeight=(0,l.getUnitFromValue)(w),s.unitWidth=(0,l.getUnitFromValue)(y))},onMove:function(){o.trigger('component:resize')},onEnd:function(t,e){d('remove',0,e),o.trigger('component:resize'),i.toggleFramesEvents(1),b=1},updateTarget:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var s=o.store,a=o.selectedHandler,l=o.config,c=l.keyHeight,u=l.keyWidth,h=l.autoHeight,f=l.autoWidth,d=l.unitWidth,p=l.unitHeight,g=['tc','bc'].indexOf(a)>=0,v=['cl','cr'].indexOf(a)>=0,m={},b=s?'':1;if(!g){var w=i.getBody().offsetWidth,x=r.w0&&void 0!==arguments[0]?arguments[0]:{};return this.canvas.getBadgeEl(t.view)},onFrameScroll:function(){this.updateTools()},updateTools:function(){this.updateLocalPos(),this.updateGlobalPos()},isCompSelected:function(t){return t&&'selected'===t.get('status')},updateToolsLocal:function(t){var e=t||this.getElHovered(),n=e.el,r=e.pos,i=e.view,o=e.component;if(n){var s=o.get('hoverable'),a=this.lastHovered!==n,l=a?{}:{posOnly:1};a&&s&&(this.lastHovered=n,this.showHighlighter(i),this.showElementOffset(n,r,{view:i})),this.isCompSelected(o)&&(this.hideHighlighter(i),this.hideElementOffset(i));var c='px',u=this.toggleToolsEl(1,i),h=u.style,f=this.canvas.canvasRectOffset(n,r),d=f.top,p=f.left;this.updateBadge(n,r,y(y({},l),{},{view:i,topOff:d,leftOff:p})),h.top=d+c,h.left=p+c,h.width=r.width+c,h.height=r.height+c,this._trgToolUp('local',{component:o,el:u,top:d,left:p,width:r.width,height:r.height})}else this.lastHovered=0},_upToolbar:(0,a.debounce)((function(){this.updateToolsGlobal({force:1})})),_trgToolUp:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.em.trigger('canvas:tools:update',y({type:t},e))},updateToolsGlobal:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getElSelected(),n=e.el,r=e.pos,i=e.component;if(!n)return this.toggleToolsEl(),void(this.lastSelected=0);var o=this.canvas,s=this.lastSelected!==n;(s||t.force)&&(this.lastSelected=n,this.updateToolbar(i));var a='px',l=this.toggleToolsEl(1),c=l.style,u=o.getTargetToElementFixed(n,o.getToolbarEl(),{pos:r}),h=u.canvasOffsetTop,f=u.canvasOffsetLeft;c.top=h+a,c.left=f+a,c.width=r.width+a,c.height=r.height+a,this.updateToolbarPos({top:u.top,left:u.left}),this._trgToolUp('global',{component:i,el:l,top:h,left:f,width:r.width,height:r.height})},updateAttached:(0,a.debounce)((function(){this.updateGlobalPos()})),onContainerChange:(0,a.debounce)((function(){this.em.refreshCanvas()}),150),getElementPos:function(t){return this.canvas.getCanvasView().getElementPos(t)},hideBadge:function(){this.getBadge().style.display='none'},cleanPrevious:function(t){t&&t.set({status:'',state:''})},getContentWindow:function(){return this.canvas.getWindow()},run:function(t){(0,l.hasWin)()&&(this.editor=t&&t.get('Editor'),this.enable())},stop:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if((0,l.hasWin)()){var r=this.em,i=this.editor;this.onHovered(),this.stopSelectComponent(),!n.preserveSelected&&r.setSelected(null),this.toggleToolsEl(),i&&i.stopCommand('resize')}}}},8463:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var r=n(2316),i=n.n(r)().$;const o={startSelectPosition:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.isPointed=!1;var i=this.editorModel.get('Utils'),o=t.ownerDocument.body;i&&!this.sorter&&(this.sorter=new i.Sorter({container:o,placer:this.canvas.getPlacerEl(),containerSel:'*',itemSel:'*',pfx:this.ppfx,direction:'a',document:e,wmargin:1,nested:1,em:this.editorModel,canvasRelative:1,scale:function(){return n.em.getZoomDecimal()}})),r.onStart&&(this.sorter.onStart=r.onStart),t&&this.sorter.startSort(t,{container:o})},getOffsetDim:function(){var t=this.offset(this.canvas.getFrameEl()),e=this.offset(this.canvas.getElement());return{top:t.top-e.top,left:t.left-e.left}},stopSelectPosition:function(){this.posTargetCollection=null,this.posIndex='after'==this.posMethod&&0!==this.cDim.length?this.posIndex+1:this.posIndex,this.sorter&&(this.sorter.moved=0,this.sorter.endMove()),this.cDim&&(this.posIsLastEl=0!==this.cDim.length&&'after'==this.posMethod&&this.posIndex==this.cDim.length,this.posTargetEl=0===this.cDim.length?i(this.outsideElem):!this.posIsLastEl&&this.cDim[this.posIndex]?i(this.cDim[this.posIndex][5]).parent():i(this.outsideElem),this.posTargetModel=this.posTargetEl.data('model'),this.posTargetCollection=this.posTargetEl.data('model-comp'))},enable:function(){this.startSelectPosition()},nearFloat:function(t,e,n){var r=t||0,i=e||'before',o=n.length,s=0!==o&&'after'==i&&r==o;return 0!==o&&(!s&&!n[r][4]||n[r-1]&&!n[r-1][4]||s&&!n[r-1][4])?1:0},run:function(){this.enable()},stop:function(){this.stopSelectPosition(),this.$wrapper.css('cursor',''),this.$wrapper.unbind()}}},7994:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var r=n(4942),i=n(2316),o=n.n(i),s=n(9050),a=n(6183);function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}var c=o().$;const u={getOffsetMethod:function(t){return'get'+(t||'')+'OffsetViewerEl'},run:function(t,e,n){var i=n||{},o=i.state||'',u=t.getConfig(),h=this.em.getZoomDecimal(),f=i.el||'';if(!u.showOffsets||(0,a.isTextNode)(f)||!u.showOffsetsSelected&&'Fixed'==o)t.stopCommand(this.id,n);else{var d=t.Canvas,p=function(t){for(var e=1;e")).get(0),D=c("
")).get(0),M=v+E+'-el',A="".concat(v+T+'-el'," ").concat(v+T),L="".concat(M," ").concat(v+E);b=c("
")).get(0),w=c("
")).get(0),x=c("
")).get(0),O=c("
")).get(0),C=c("
")).get(0),k=c("
")).get(0),S=c("
")).get(0),P=c("
")).get(0),this['marginT'+o]=b,this['marginB'+o]=w,this['marginL'+o]=x,this['marginR'+o]=O,this['padT'+o]=C,this['padB'+o]=k,this['padL'+o]=S,this['padR'+o]=P,j.appendChild(b),j.appendChild(w),j.appendChild(x),j.appendChild(O),D.appendChild(C),D.appendChild(k),D.appendChild(S),D.appendChild(P),y.appendChild(j),y.appendChild(D),this[m]='1'}var R='px',N=parseFloat(g.marginLeft.replace(R,''))*h,Z=parseFloat(g.marginRight.replace(R,''))*h,I=parseFloat(g.marginTop.replace(R,''))*h,F=parseFloat(g.marginBottom.replace(R,''))*h,V=b.style,H=w.style,B=x.style,z=O.style,U=C.style,W=k.style,$=S.style,q=P.style,G=parseFloat(p.left),K=parseFloat(g.width)*h+R;V.height=I+R,V.width=K,V.top=p.top-I+R,V.left=G+R,H.height=F+R,H.width=K,H.top=p.top+p.height+R,H.left=G+R;var Y=p.height+I+F+R,J=p.top-I+R;B.height=Y,B.width=N+R,B.top=J,B.left=G-N+R,z.height=Y,z.width=Z+R,z.top=J,z.left=G+p.width+R;var X=parseFloat(g.paddingTop)*h;U.height=X+R;var Q=parseFloat(g.paddingBottom)*h;W.height=Q+R;var tt=p.height-Q-X+R,et=p.top+X+R;$.height=tt,$.width=parseFloat(g.paddingLeft)*h+R,$.top=et;var nt=parseFloat(g.paddingRight)*h;q.height=tt,q.width=nt+R,q.top=et}},stop:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n||{},i=r.state||'',o=this.getOffsetMethod(i),s=t.Canvas,a=s[o](n.view);a.style.opacity=0}}},8352:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>i});var r=n(9050);const i={init:function(){(0,r.bindAll)(this,'_onFramesChange')},run:function(t){this.toggleVis(t)},stop:function(t){this.toggleVis(t,0)},toggleVis:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!t.Commands.isActive('preview')){var r=t.Canvas,i=n?'on':'off';r.getFrames().forEach((function(t){return e._upFrame(t,n)})),r.getModel()[i]('change:frames',this._onFramesChange)}},_onFramesChange:function(t,e){var n=this;e.forEach((function(t){return n._upFrame(t,1)}))},_upFrame:function(t,e){var n=e?'add':'remove';t.view.getBody().classList[n]("".concat(this.ppfx,"dashed"))}}},9304:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var r=n(4942),i=n(2982),o=n(9050),s=n(6183);function a(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function l(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return this.all?t.array?(0,i.Z)(this.all.models):this.all:[]},getAllMap:function(){return this.getAll().reduce((function(t,e){return t[e.get(e.idAttribute)]=e,t}),{})},__initConfig:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.config=l(l({},t),e),this.em=this.config.em,this.cls=[]},__initListen:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.all,n=this.em,r=this.events;e&&n&&e.on('add',(function(t,e,i){return n.trigger(r.add,t,i)})).on('remove',(function(t,e,i){return n.trigger(r.remove,t,i)})).on('change',(function(t,e){return n.trigger(r.update,t,t.changedAttributes(),e)})).on('all',this.__catchAllEvent,this),this.cls=[e].concat(t.collections||[]),(t.propagate||[]).forEach((function(t){var r=t.entity,i=t.event;r.on('all',(function(t,r,o,s){var a=l({event:t},s||o);[n,e].map((function(t){return t.trigger(i,r,a)}))}))}))},__remove:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em,i=(0,o.isString)(t)?this.get(t):t,s=function(){return i&&e.all.remove(i,n),i};return!n.silent&&r&&r.trigger(this.events.removeBefore,i,s,n),!n.abort&&s()},__catchAllEvent:function(t,e,n,r){var i=this.em,o=this.events,s=r||n;i&&o.all&&i.trigger(o.all,{event:t,model:e,options:s}),this.__onAllEvent()},__appendTo:function(){var t=this.getConfig().appendTo;if(t){var e=(0,o.isElement)(t)?t:document.querySelector(t);if(!e)return this.__logWarn('"appendTo" element not found');e.appendChild(this.render())}},__onAllEvent:function(){},__logWarn:function(t){this.em.logWarning("[".concat(this.name,"]: ").concat(t))},_createId:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,n=this.getAll(),r=n.length+e,i=this.getAllMap();do{t=(0,s.createId)(r)}while(i[t]);return t},__listenAdd:function(t,e){var n=this;t.on('add',(function(t,r,i){return n.em.trigger(e,t,i)}))},__listenRemove:function(t,e){var n=this;t.on('remove',(function(t,r,i){return n.em.trigger(e,t,i)}))},__listenUpdate:function(t,e){var n=this;t.on('change',(function(t,r){return n.em.trigger(e,t,t.changedAttributes(),r)}))},__destroy:function(){var t;this.cls.forEach((function(t){t.stopListening(),t.reset()})),this.em=0,this.config=0,null===(t=this.view)||void 0===t||t.remove(),this.view=0}}},672:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>E});var r=n(2982),i=n(4942),o=n(9050),s=n(6183);const a={stylePrefix:'css-',rules:[],onBeforeStyle:null};var l=n(5671),c=n(3144),u=n(9340),h=n(3930),f=n(1120),d=n(2316),p=n.n(d),g=n(3345),v=n(4293),m=n(8795);function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function b(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};this.config=t||{},this.opt=e,this.em=e.em,this.ensureSelectors(),this.on('change',this.__onChange)}},{key:"__onChange",value:function(t,e){var n=this.em,r=this.changedAttributes();!(0,s.isEmptyObj)(r)&&n&&n.changesUp(e)}},{key:"clone",value:function(){var t=b({},this.opt),e=b({},this.attributes);return e.selectors=this.get('selectors').map((function(t){return t.clone()})),new this.constructor(e,t)}},{key:"ensureSelectors",value:function(t,e,n){var i=this.em,s=i&&i.get('SelectorManager'),a=[this,'change:selectors',this.ensureSelectors],l=this.getSelectors();if(this.stopListening.apply(this,a),l.models&&(l=(0,r.Z)(l.models)),l=(0,o.isString)(l)?[l]:l,Array.isArray(l)){var c=l.filter((function(t){return t})).map((function(t){return s?s.add(t):t}));l=new v.Z(c)}this.set('selectors',l,n),this.listenTo.apply(this,a)}},{key:"getAtRule",value:function(){var t=this.get('atRuleType'),e=this.get('mediaText'),n=t?"@".concat(t):e?'@media':'';return n+(e&&n?" ".concat(e):'')}},{key:"selectorsToString",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=[],n=this.get('state'),r=this.get('selectorsAdd'),i={escape:function(t){return x&&x.escape?x.escape(t):t}},o=this.get('selectors').getFullString(0,i),s=n&&!t.skipState?":".concat(n):'';return o&&e.push("".concat(o).concat(s)),r&&!t.skipAdd&&e.push(r),e.join(', ')}},{key:"getDeclaration",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e='',n=this.selectorsToString(t),r=this.styleToString(t),i=this.get('singleAtRule');return(n||i)&&(r||t.allowEmpty)&&(e=i?r:"".concat(n,"{").concat(r,"}")),e}},{key:"getDevice",value:function(){var t=this.em,e=this.attributes,n=e.atRuleType,r=e.mediaText,i=(null==t?void 0:t.get('DeviceManager').getDevices())||[],o=i.filter((function(t){return''===t.getWidthMedia()}))[0];return'media'===n&&r?i.filter((function(t){return t.getWidthMedia()===(0,m.U)(r)}))[0]||null:o||null}},{key:"getState",value:function(){var t=this.em,e=this.get('state');return(t.get('SelectorManager').getStates()||[]).filter((function(t){return t.getName()===e}))[0]||null}},{key:"getComponent",value:function(){var t,e=this.getSelectors(),n=1==e.length&&e.at(0),r=n&&n.isId()&&n.get('name');return r&&(null===(t=this.em)||void 0===t?void 0:t.get('DomComponents').getById(r))||null}},{key:"toCSS",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e='',n=this.getAtRule(),r=this.getDeclaration(t);return(r||t.allowEmpty)&&(e=r),n&&e&&(e="".concat(n,"{").concat(e,"}")),e}},{key:"toJSON",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n3&&void 0!==arguments[3]?arguments[3]:{},i=e||'',s=n||'',a=r.selectorsAdd||'',l=r.atRuleType||'',c=(0,o.isArray)(t)||t.models?t.models||t:[t];s&&!l&&(l='media');var u=c.map((function(t){return t.getFullName()})),h=this.get('selectors').map((function(t){return t.getFullName()})),f=u.slice().sort(),d=h.slice().sort();return!(u.length!==h.length||!f.every((function(t,e){return t===d[e]})))&&(this.get('state')===i&&this.get('mediaText')===s&&this.get('selectorsAdd')===a&&this.get('atRuleType')===l)}}]),n}(d.Model.extend(g.Z)),C=p().Collection;const k=C.extend({model:O,initialize:function(t,e){var n=this;e&&e.em&&(this.editor=e.em),setTimeout((function(){n.on('remove',n.onRemove),n.on('add',n.onAdd)}))},toJSON:function(t){return C.prototype.toJSON.call(this,t).filter((function(t){return t.style&&!t.shallow}))},onAdd:function(t,e,n){t.ensureSelectors(t,e,n)},onRemove:function(t){var e=this.editor;e.stopListening(t),e.get('UndoManager').remove(t)},add:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return'string'==typeof t&&(t=this.editor.get('Parser').parseCss(t)),e.em=this.editor,C.prototype.add.apply(this,[t,e])}});var S=n(4868),P=n(8490);function _(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function T(t){for(var e=1;e=0&&!s&&(r.css=i.em.getCss()),o.indexOf('styles')>=0&&(r.styles=JSON.stringify(e)),n||i.stm.store(r),r}},add:function(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=n||'',l=r||'',c=T({},o),u=this.get(t,a,l,c);return u&&u.config&&!u.config.singleAtRule||(c.state=a,c.mediaText=l,c.selectors=[],l&&(c.atRuleType='media'),(u=new O(c,i)).get('selectors').add(t,s),e.add(u,s)),u},get:function(n,r,i,s){var a=n;if((0,o.isString)(n)){var l=t.get('SelectorManager'),c=n.split(',')[0].trim(),u=t.get('Parser').parserCss.checkNode({selectors:c})[0];a=l.get(u.selectors)}return e.find((function(t){return t.compare(a,r,i,s)}))||null},getAll:function(){return e},addCollection:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=[];(0,o.isString)(e)&&(e=t.get('Parser').parseCss(e));for(var l=e instanceof Array?e:[e],c=0,u=l.length;c2&&void 0!==arguments[2]?arguments[2]:{},i=r.atRuleType,o=r.atRuleParams,s=t.get('Parser').parserCss.checkNode({selectors:e,style:n})[0],a=s.state,l=s.selectorsAdd,c=t.get('SelectorManager'),u=c.add(s.selectors),h=this.add(u,a,o,{selectorsAdd:l,atRule:i});return h.setStyle(n,r),h},getRule:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.get('SelectorManager'),i=t.get('Parser').parserCss.checkNode({selectors:e})[0],o=r.get(i.selectors),s=i.state,a=i.selectorsAdd,l=n.atRuleType,c=n.atRuleParams;return o&&this.get(o,s,c,{selectorsAdd:a,atRule:l})},getRules:function(t){var e=this.getAll();if(!t)return(0,r.Z)(e.models);var n=(0,o.isString)(t)?t.split(',').map((function(t){return t.trim()})):t;return e.filter((function(t){return n.indexOf(t.getSelectors().getFullString())>=0}))},setIdRule:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.addOpts,s=void 0===i?{}:i,a=r.mediaText,l=r.state||'',c=(0,o.isUndefined)(a)?t.getCurrentMedia():a,u=t.get('SelectorManager'),h=u.add({name:e,type:P.Z.TYPE_ID},s),f=this.add(h,l,c,{},s);return f.setStyle(n,T(T({},r),s)),f},getIdRule:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.mediaText,i=n.state||'',s=(0,o.isUndefined)(r)?t.getCurrentMedia():r,a=t.get('SelectorManager').get(e,P.Z.TYPE_ID);return a&&this.get(a,i,s)},setClassRule:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.state||'',o=r.mediaText||t.getCurrentMedia(),s=t.get('SelectorManager'),a=s.add({name:e,type:P.Z.TYPE_CLASS}),l=this.add(a,i,o);return l.setStyle(n,r),l},getClassRule:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.state||'',i=n.mediaText||t.getCurrentMedia(),o=t.get('SelectorManager').get(e,P.Z.TYPE_CLASS);return o&&this.get(o,r,i)},remove:function(t,e){var n=(0,o.isString)(t)?this.getRules(t):t,r=this.getAll().remove(n,e);return(0,o.isArray)(r)?r:[r]},clear:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.getAll().reset(null,t),this},getComponentRules:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.state,i=n.mediaText,s=n.current;s&&(r=t.get('state')||'',i=t.getCurrentMedia());var a=e.getId(),l=this.getAll().filter((function(t){if(((0,o.isUndefined)(r)||t.get('state')===r)&&((0,o.isUndefined)(i)||t.get('mediaText')===i))return t.getSelectorsString()==="#".concat(a)}));return l},render:function(){return n&&n.remove(),(n=new S.Z({collection:e,config:i})).render().el},destroy:function(){e.reset(),e.stopListening(),n&&n.remove(),[t,e,n].forEach((function(t){return null})),i={}}}}},4868:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var r=n(2316),i=n.n(r);const o=i().View.extend({tagName:'style',initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.config=t.config||{};var e=this.model;this.listenTo(e,'change',this.render),this.listenTo(e,'destroy remove',this.remove),this.listenTo(e.get('selectors'),'change',this.render)},render:function(){var t=this.model,e=this.el,n=t.get('important');return e.innerHTML=t.toCSS({important:n}),this}}),s=o.extend({_createElement:function(t){return document.createTextNode('')},render:function(){var t=this.model,e=t.get('important');return this.el.textContent=t.getDeclaration({important:e}),this}});var a=i().$,l=function(t,e){return"".concat(t).concat(e?"-".concat(parseFloat(e)):'')};const c=i().View.extend({initialize:function(t){var e=t.config||{};this.atRules={},this.config=e,this.em=e.em,this.pfx=e.stylePrefix||'',this.className=this.pfx+'rules';var n=this.collection;this.listenTo(n,'add',this.addTo),this.listenTo(n,'reset',this.render)},addTo:function(t){this.addToCollection(t)},addToCollection:function(t,e){if(this.renderStarted){var n,r,i=e||null,a={model:t,config:this.config};if('keyframes'===t.get('atRuleType')){var c=t.getAtRule(),u=this.atRules[c];if(!u){var h=document.createElement('style');u=document.createTextNode(''),h.appendChild(document.createTextNode("".concat(c,"{"))),h.appendChild(u),h.appendChild(document.createTextNode("}")),this.atRules[c]=u,n=h}r=new s(a),u.appendData(r.render().el.textContent)}else n=(r=new o(a)).render().el;var f=this.className,d=t.get('mediaText'),p=l(f),g=p;if(d&&(g=l(f,this.getMediaWidth(d))),n){var v,m=i||this.el;try{v=m.querySelector("#".concat(g))}catch(t){}v||(v=m.querySelector("#".concat(p))),v.appendChild(n)}return n}},getMediaWidth:function(t){return t&&t.replace("(".concat(this.em.getConfig('mediaCondition'),": "),'').replace(')','')},render:function(){var t=this;this.renderStarted=1,this.atRules={};var e=this.em,n=this.$el,r=this.className,i=this.collection,o=document.createDocumentFragment();n.empty();var s=e.get('DeviceManager').getAll().pluck('priority');return s.every((function(t){return t}))&&s.unshift(0),s.forEach((function(t){return a("
")).appendTo(o)})),i.each((function(e){return t.addToCollection(e,o)})),n.append(o),n.attr('class',r),this}})},2004:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>L,evAdd:()=>E,evAddBefore:()=>j,evAll:()=>k,evPfx:()=>S,evRemove:()=>D,evRemoveBefore:()=>M,evSelect:()=>P,evSelectBefore:()=>_,evUpdate:()=>T});var r=n(4942),i=n(9050),o=n(9304);const s={default:null,devices:[{id:'desktop',name:'Desktop',width:''},{id:'tablet',name:'Tablet',width:'770px',widthMedia:'992px'},{id:'mobileLandscape',name:'Mobile landscape',width:'568px',widthMedia:'768px'},{id:'mobilePortrait',name:'Mobile portrait',width:'320px',widthMedia:'480px'}]};var a=n(5671),l=n(3144),c=n(9340),u=n(3930),h=n(1120),f=n(2316);function d(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,u.Z)(this,n)}}var p=function(t){(0,c.Z)(n,t);var e=d(n);function n(){return(0,a.Z)(this,n),e.apply(this,arguments)}return(0,l.Z)(n,[{key:"defaults",value:function(){return{name:'',width:null,height:'',widthMedia:null,priority:null}}},{key:"initialize",value:function(){var t=this;null===this.get('widthMedia')&&this.set('widthMedia',this.get('width')),null===this.get('width')&&this.set('width',this.get('widthMedia')),!this.get('priority')&&this.set('priority',parseFloat(this.get('widthMedia'))||0);['width','height','widthMedia'].forEach((function(e){return t.checkUnit(e)}))}},{key:"checkUnit",value:function(t){var e=this.get(t)||'';(parseFloat(e)||0).toString()===e.toString()&&this.set(t,"".concat(e,"px"))}},{key:"getName",value:function(){return this.get('name')||this.get('id')}},{key:"getWidthMedia",value:function(){return this.get('widthMedia')||''}}]),n}(f.Model);function g(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,u.Z)(this,n)}}var v=function(t){(0,c.Z)(n,t);var e=g(n);function n(){return(0,a.Z)(this,n),e.apply(this,arguments)}return(0,l.Z)(n,[{key:"comparator",value:function(t,e){var n=Number.MAX_VALUE;return(e.get('priority')||n)-(t.get('priority')||n)}},{key:"getSorted",value:function(){return this.sort()}}]),n}(f.Collection);v.prototype.model=p;var m,y=n(168),b=n(1629);function w(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,u.Z)(this,n)}}var x=function(t){(0,c.Z)(n,t);var e=w(n);function n(){return(0,a.Z)(this,n),e.apply(this,arguments)}return(0,l.Z)(n,[{key:"template",value:function(t){var e=t.ppfx,n=t.label;return(0,b.Z)(m||(m=(0,y.Z)(["\n
","
\n
\n \n \n \n
\n
\n
\n
\n \n "])),e,n,e,e,e,e,e,e,e)}},{key:"events",value:function(){return{change:'updateDevice'}}},{key:"initialize",value:function(t){this.config=t.config||{},this.em=this.config.em,this.ppfx=this.config.pStylePrefix||'',this.events['click .'+this.ppfx+'add-trasp']=this.startAdd,this.listenTo(this.em,'change:device',this.updateSelect),this.delegateEvents()}},{key:"startAdd",value:function(){}},{key:"updateDevice",value:function(){var t=this.em;if(t){var e=this.devicesEl,n=e?e.val():'';t.set('device',n)}}},{key:"updateSelect",value:function(){var t=this.em,e=this.devicesEl;if(t&&t.getDeviceModel&&e){var n=t.getDeviceModel(),r=n?n.get('id'):'';e.val(r)}}},{key:"getOptions",value:function(){var t=this.collection,e=this.em,n='';return t.each((function(t){var r=t.attributes,i=r.name,o=r.id,s=e&&e.t&&e.t("deviceManager.devices.".concat(o))||i;n+="")})),n}},{key:"render",value:function(){var t=this.em,e=this.ppfx,n=this.$el,r=this.el,i=t&&t.t&&t.t('deviceManager.device');return n.html(this.template({ppfx:e,label:i})),this.devicesEl=n.find(".".concat(e,"devices")),this.devicesEl.append(this.getOptions()),this.devicesEl.val(t.get('device')),r.className="".concat(e,"devices-c"),this}}]),n}(f.View);function O(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function C(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},i=n=C(C({},s),r),o=i.em;return t=new v,n.devices.forEach((function(t){return e.add(t)})),this.em=o,this.all=t,this.select(n.default||t.at(0)),this.__initListen(),o.on(A,this._onSelect,this),this},_onSelect:function(t,e,n){var r=this.em,i=this.events,o=t.previous('device'),s=this.get(e),a=i.select;r.trigger(a,s,this.get(o)),this.__catchAllEvent(a,s,n)},add:function(e){var n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=r;if((0,i.isString)(e)){var s=r;n=C(C({},o=arguments[2]||{}),{},{id:e,name:o.name||e,width:s})}else n=e;return n.id||(n.id=n.name||this._createId()),t.add(n,o)},get:function(e){return this.getAll().filter((function(t){return t.get('name')===e}))[0]||t.get(e)||null},remove:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.__remove(t,e)},getDevices:function(){return t.models},select:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(0,i.isString)(t)?this.get(t):t;return n&&this.em.set('device',n.get('id'),e),this},getSelected:function(){return this.get(this.em.get('device'))},getAll:function(){return t},render:function(){return e&&e.remove(),(e=new x({collection:t,config:n})).render().el},destroy:function(){t.stopListening(),t.reset(),e&&e.remove(),[t,e].forEach((function(t){return null})),n={}}})}},9831:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>ue});var r=n(4942),i=n(1002),o=n(9050);const s={stylePrefix:'comp-',components:[],draggableComponents:1,storeWrapper:0,processor:0,voidElements:['area','base','br','col','embed','hr','img','input','keygen','link','menuitem','meta','param','source','track','wbr']};var a=n(9138),l=n(8431),c=n(2169),u=n(5671),h=n(3144),f=n(9340),d=n(3930),p=n(1120);function g(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,p.Z)(t);if(e){var i=(0,p.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,d.Z)(this,n)}}var v=function(t){(0,f.Z)(n,t);var e=g(n);function n(){return(0,u.Z)(this,n),e.apply(this,arguments)}return(0,h.Z)(n,[{key:"tagName",value:function(){return'div'}}]),n}(c.Z),m=n(3505),y=n(6183);function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function w(t){for(var e=1;e=0}}),O=c.Z.extend({});function C(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function k(t){for(var e=1;e\n \n "),fallback:"\n \n "),file:''}),initialize:function(t,e){a.ZP.prototype.initialize.apply(this,arguments);var n=this.get('attributes'),r=n.src;r&&this.set('src',r,{silent:1})},initToolbar:function(){for(var t=arguments.length,e=new Array(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=this.get(t.fallback?'fallback':'src')||'',n=e;return e&&'1&&void 0!==arguments[1]?arguments[1]:{};if('a'===(0,y.toLowerCase)(t.tagName)){var r=n.textTags||[];e={type:ct,editable:!1};var i=t.childNodes,s=i.length;s||delete e.editable,(0,o.forEach)(i,(function(t){var n=t.tagName;(3==t.nodeType&&''!==t.textContent.trim()||n&&r.indexOf((0,y.toLowerCase)(n))>=0)&&delete e.editable}))}return e};var ht=n(5861),ft=n(7757),dt=n.n(ft);function pt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function gt(t){for(var e=1;e2&&void 0!==arguments[2]?arguments[2]:{};!n.fromDisable&&this.disableEditing()},canActivate:function(){var t,e=this.model,n=this.rteEnabled,r=this.em,i=(null==r?void 0:r.getEditing())===e,o=!0,s=!1;if((n||!e.get('editable')||i||(s=e.isChildOf('text')))&&(o=!1,s&&!e.get('textable'))){for(var a=e.parent();a&&!a.isInstanceOf('text');)a=a.parent();a&&a.get('editable')?t=a:o=!0}return{result:o,delegate:t}},onActive:function(t){var e=this;return(0,ht.Z)(dt().mark((function n(){var r,i,o,s,a,l,c;return dt().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(i=e.rte,o=e.em,s=e.canActivate(),a=s.result,l=s.delegate,a){n.next=5;break}return l&&(null==t||null===(c=t.stopPropagation)||void 0===c||c.call(t),o.setSelected(l),l.trigger('active',t)),n.abrupt("return");case 5:if(null==t||null===(r=t.stopPropagation)||void 0===r||r.call(t),e.lastContent=e.getContent(),!i){n.next=17;break}return n.prev=8,n.next=11,i.enable(e,e.activeRte,{event:t});case 11:e.activeRte=n.sent,n.next=17;break;case 14:n.prev=14,n.t0=n.catch(8),o.logError(n.t0);case 17:e.toggleEvents(1);case 18:case"end":return n.stop()}}),n,null,[[8,14]])})))()},onDisable:function(){this.disableEditing()},disableEditing:function(){var t=arguments,e=this;return(0,ht.Z)(dt().mark((function n(){var r,i,o,s,a,l;return dt().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=t.length>0&&void 0!==t[0]?t[0]:{},i=e.model,o=e.rte,s=e.activeRte,a=e.em,l=i&&i.get('editable'),!o){n.next=13;break}return n.prev=4,n.next=7,o.disable(e,s);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(4),a.logError(n.t0);case 12:l&&e.getContent()!==e.lastContent&&(e.syncContent(r),e.lastContent='');case 13:e.toggleEvents();case 14:case"end":return n.stop()}}),n,null,[[4,9]])})))()},getContent:function(){var t=this.activeRte;return t&&'function'==typeof t.getContent?t.getContent():this.getChildrenContainer().innerHTML},syncContent:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.model,n=this.rte,r=this.rteEnabled;if(r||t.force){var i=this.getContent(),o=e.components(),s=gt({fromDisable:1},t);e.set('content','',s),n.customRte?(o.length&&o.reset(null,t),e.set('content',i,s)):o.resetFromString(i,t)}},insertComponent:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.model,r=this.el,i=r.ownerDocument,o=i.getSelection();if(null!=o&&o.rangeCount){var s,a=o.getRangeAt(0),l=a.startContainer,c=a.startOffset,u=(0,y.getModel)(l),h=[];if(u&&null!==(s=u.is)&&void 0!==s&&s.call(u,'textnode')){var f=u.collection;f.forEach((function(e){if(e===u){var n='textnode',r=e.get('content');h.push({type:n,content:r.slice(0,c)}),h.push(t),h.push({type:n,content:r.slice(c)})}else h.push(e)}));var d=h.filter(Boolean),p=d.indexOf(t);return f.reset(d,e),f.at(p)}}return n.append(t,e)},onInput:function(){var t=this.em,e='component',n=["".concat(e,":update"),"".concat(e,":input")].join(' ');t&&t.trigger(n,this.model)},disablePropagation:function(t){t.stopPropagation()},toggleEvents:function(t){var e=this.em,n=this.model,r=this.$el,i={on:y.on,off:y.off},o=t?'on':'off';e.setEditing(t?this:0),this.rteEnabled=!!t;var s=[this.el.ownerDocument,document];if(i.off(s,'mousedown',this.onDisable),i[o](s,'mousedown',this.onDisable),e[o]('toolbar:run:before',this.onDisable),n&&(n[o]('removed',this.onDisable),n.trigger("rte:".concat(t?'enable':'disable'))),r&&r.off('mousedown',this.disablePropagation),r&&r[o]('mousedown',this.disablePropagation),this.config.draggableComponents)for(var a=this.el;a;)a.draggable=!t,(a=a.parentNode)&&'BODY'==a.tagName&&(a=0)}}),yt=mt.extend({render:function(){for(var t=arguments.length,e=new Array(t),n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return!!e.inSvg}}),Ut=c.Z.extend({_createElement:function(t){return document.createElementNS('http://www.w3.org/2000/svg',t)}});function Wt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function $t(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:'',e=this.em,n='';!t&&r.stm&&(t=r.em.getCacheLoad());var i=t,s=i.components,a=i.html;if(s)if((0,o.isObject)(s)||(0,o.isArray)(s))n=s;else try{n=JSON.parse(s)}catch(t){e&&e.logError(t)}else a&&(n=a);var l=n&&n.constructor===Object;return(n&&n.length||l)&&(this.clear(),l?this.getWrapper().set(n):this.getComponents().add(n)),n},store:function(t){if(!r.stm||this.em.get('hasPages'))return{};var e={},n=this.storageKey();if(n.indexOf('html')>=0&&(e.html=r.em.getHtml()),n.indexOf('components')>=0){var i=r.storeWrapper?this.getWrapper():this.getComponents();e.components=JSON.stringify(i)}return t||r.stm.store(e),e},getComponent:function(){var t=this.em.get('PageManager').getSelected(),e=t&&t.getMainFrame();return e&&e.getComponent()},getWrapper:function(){return this.getComponent()},getComponents:function(){var t=this.getWrapper();return t&&t.get('components')},addComponent:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getComponents().add(t,e)},render:function(){return n.render().el},clear:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.getComponents().map((function(t){return t})).forEach((function(e){return e.remove(t)})),this},setComponents:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.clear(e).addComponent(t,e)},addType:function(t,e){var n=this.em,r=e.model,s=void 0===r?{}:r,a=e.view,l=void 0===a?{}:a,c=e.isComponent,u=e.extend,f=e.extendView,d=e.extendFn,p=void 0===d?[]:d,g=e.extendFnView,v=void 0===g?[]:g,m=this.getType(t),y=this.getType(u),b=this.getType(f),w=y||(m||this.getType('default')),x=w.model,O=b?b.view:w.view,C=function(t,e,n){return t.reduce((function(t,r){var i=e[r],o=n.prototype[r];return i&&o&&(t[r]=function(){o.bind(this).apply(void 0,arguments),i.bind(this).apply(void 0,arguments)}),t}),{})};'object'===(0,i.Z)(s)&&(e.model=x.extend(ce(ce(ce({},s),C(p,s,x)),{},{defaults:ce(ce({},(0,o.result)(x.prototype,'defaults')||{}),(0,o.result)(s,'defaults')||{})}),{isComponent:!m||y||c?c||function(){return 0}:x.isComponent})),'object'===(0,i.Z)(l)&&(e.view=O.extend(ce(ce({},l),C(v,l,O)))),m?(m.model=e.model,m.view=e.view):(e.id=t,h.unshift(e));var k="component:type:".concat(m?'update':'add');return n&&n.trigger(k,m||e),this},getType:function(t){for(var e=h,n=0;n1&&void 0!==arguments[1]?arguments[1]:{};t&&(t.set({status:'selected'}),['component:selected','component:toggled'].forEach((function(r){return e.em.trigger(r,t,n)})))},selectRemove:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t){this.em;t.set({status:'',state:''}),['component:deselected','component:toggled'].forEach((function(r){return e.em.trigger(r,t,n)}))}},componentHovered:function(){var t=r.em,e=t.get('componentHovered'),n=t.previous('componentHovered'),i='hovered';n&&n.get('status')==i&&n.set({status:'',state:''}),e&&(0,o.isEmpty)(e.get('status'))&&e.set('status',i)},getShallowWrapper:function(){var t=this.shallow,e=this.em;if(!t&&e){var n=e.get('shallow');if(!n)return;var r=n.get('DomComponents');if(r.componentTypes=this.componentTypes,t=r.getWrapper()){var i=[a.GN,a.xH].join(' ');t.on(i,(0,o.debounce)((function(){return t.components('')}),100))}this.shallow=t}return t},canMove:function(t,e,n){var r=n||0===n?n:null,i={result:!1,reason:0,target:t,source:null};if(!e)return i;var s=null!=e&&e.toHTML?e:null;if(!s){var a=this.getShallowWrapper();s=null==a?void 0:a.append(e)[0]}if(i.source=s,!s)return i;var l=s.get('draggable');if((0,o.isFunction)(l))l=!!l(s,t,r);else{var c=t.getEl();l=(0,o.isArray)(l)?l.join(','):l,l=(0,o.isString)(l)?null==c?void 0:c.matches(l):l}if(!l)return ce(ce({},i),{},{reason:1});var u=t.get('droppable');if((0,o.isFunction)(u))u=!!u(s,t,r);else if(!1===u&&t.isInstanceOf('text')&&s.get('textable'))u=!0;else{var h=s.getEl();u=(0,o.isArray)(u)?u.join(','):u,u=(0,o.isString)(u)?null==h?void 0:h.matches(u):u}return ce(ce({},i),{},u?{result:!0}:{reason:2})},allById:function(){return u},getById:function(t){return u[t]||null},destroy:function(){var i=this.allById();Object.keys(i).forEach((function(t){return i[t]&&i[t].remove()})),n&&n.remove(),[r,t,u,e,n].forEach((function(t){return{}})),this.em={}}}}},9138:(t,e,n)=>{"use strict";n.d(e,{ZP:()=>Z,OA:()=>D,GN:()=>R,xH:()=>N});var r=n(1002),i=n(2982),o=n(885),s=n(4942),a=n(5671),l=n(3144),c=n(9340),u=n(3930),h=n(1120),f=n(9050),d=n(6183),p=n(3345),g=n(2316),v=n(8431),m=n(8490),y=n(4293);function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function w(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},n=e.locale,r=void 0===n||n,i=this.getId(),o=this.get('label')||this.getName();return r&&(null===(t=this.em)||void 0===t?void 0:t.t("traitManager.traits.labels.".concat(i)))||o}},{key:"getValue",value:function(){return this.getTargetValue()}},{key:"setValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={};e.partial&&(n.avoidStore=!0),this.setTargetValue(t,n),!1===e.partial&&(this.setTargetValue(''),this.setTargetValue(t))}},{key:"props",value:function(){return this.attributes}},{key:"targetUpdated",value:function(){var t,e=this.getTargetValue();this.set({value:e},{fromTarget:1}),null===(t=this.em)||void 0===t||t.trigger('trait:update',{trait:this,component:this.target})}},{key:"getTargetValue",value:function(){var t,e=this.get('name'),n=this.target;return t=this.get('changeProp')?n.get(e):n.getAttributes()[e],(0,f.isUndefined)(t)?'':t}},{key:"setTargetValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.target,r=this.get('name');if(!(0,f.isUndefined)(t)){var i=t;if('false'===t?i=!1:'true'===t&&(i=!0),this.get('changeProp'))n.set(r,i,e);else{var o=w({},n.get('attributes'));o[r]=i,n.set('attributes',o,e)}}}},{key:"setValueFromInput",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={value:t};this.set(r,w(w({},n),{},{avoidStore:1})),e&&(this.set('value','',n),this.set(r,n))}},{key:"getInitValue",value:function(){var t,e=this.target,n=this.get('name');if(e){var r=e.get('attributes');t=this.get('changeProp')?e.get(n):r[n]}return t||this.get('value')||this.get('default')}}]),n}(g.Model);O.prototype.defaults={type:'text',label:'',name:'',min:'',max:'',unit:'',step:1,value:'',target:'',default:'',placeholder:'',changeProp:0,options:[]};function C(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,u.Z)(this,n)}}var k,S=function(t){(0,c.Z)(n,t);var e=C(n);function n(){return(0,a.Z)(this,n),e.apply(this,arguments)}return(0,l.Z)(n,[{key:"initialize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.em=e.em,this.listenTo(this,'add',this.handleAdd),this.listenTo(this,'reset',this.handleReset)}},{key:"handleReset",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.previousModels,r=void 0===n?[]:n;r.forEach((function(t){return t.trigger('remove')}))}},{key:"handleAdd",value:function(t){t.em=this.em;var e=this.target;e&&(t.target=e)}},{key:"setTarget",value:function(t){this.target=t}},{key:"add",value:function(t,e){var n=this.em;if((0,f.isString)(t)||(0,f.isArray)(t)){var r=n&&n.get&&n.get('TraitManager'),i=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{build:function(e){var n=[];'string'==typeof e&&(e=[e]);for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,f.bindAll)(this,'__upSymbProps','__upSymbCls','__upSymbComps');var i=r.em,o=this.parent(),s=o&&o.attributes,a=this.get('propagate');if(a&&this.set('propagate',(0,f.isArray)(a)?a:[a]),s&&s.propagate&&!a){var l={},c=s.propagate;c.forEach((function(t){return l[t]=o.get(t)})),l.propagate=c,this.set(_(_({},l),e))}if(r&&r.config&&r.config.voidElements.indexOf(this.get('tagName'))>=0&&this.set('void',!0),r.em=i,this.opt=r,this.em=i,this.frame=r.frame,this.config=r.config||{},this.set('attributes',_(_({},(0,f.result)(this,'defaults').attributes||{}),this.get('attributes')||{})),this.ccid=n.createId(this,r),this.initClasses(),this.initTraits(),this.initComponents(),this.initToolbar(),this.initScriptProps(),this.listenTo(this,'change:script',this.scriptUpdated),this.listenTo(this,'change:tagName',this.tagUpdated),this.listenTo(this,'change:attributes',this.attrUpdated),this.listenTo(this,'change:attributes:id',this._idUpdated),this.on('change:toolbar',this.__emitUpdateTlb),this.on('change',this.__onChange),this.on(N,this.__propToParent),this.set('status',''),this.views=[],['classes','traits','components'].forEach((function(e){var n="add remove ".concat('components'!==e?'change':'');t.listenTo(t.get(e),n.trim(),(function(){for(var n=arguments.length,r=new Array(n),i=0;i0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=e&&e.get('UndoManager'),r=this.components();n&&!this.__hasUm&&(n.add(r),n.add(this.getSelectors()),this.__hasUm=1),t.recursive&&r.map((function(e){return e.__postAdd(t)}))}},{key:"__postRemove",value:function(){var t=this.em,e=t&&t.get('UndoManager');e&&(e.remove(this.components()),e.remove(this.getSelectors()),delete this.__hasUm)}},{key:"__onChange",value:function(t,e){var n=this.changedAttributes();['status','open','toolbar','traits'].forEach((function(t){return delete n[t]})),(0,d.isEmptyObj)(n)||(this.__changesUp(e),this.__propSelfToParent({component:this,changed:n,options:e}))}},{key:"__changesUp",value:function(t){var e=this.em;[this.frame,e].forEach((function(e){return e&&e.changesUp(t)}))}},{key:"__propSelfToParent",value:function(t){this.trigger(R,t),this.__propToParent(t)}},{key:"__propToParent",value:function(t){var e=this.parent();e&&e.trigger(N,t)}},{key:"__emitUpdateTlb",value:function(){this.emitUpdate('toolbar')}},{key:"is",value:function(t){return!(this.get('type')!=t)}},{key:"props",value:function(){return this.attributes}},{key:"index",value:function(){var t=this.collection;return t?t.indexOf(this):0}},{key:"setDragMode",value:function(t){return this.set('dmode',t)}},{key:"find",value:function(t){var e=[],n=this.view.$el.find(t);return n.each((function(t){var r=n.eq(t).data('model');r&&e.push(r)})),e}},{key:"findType",value:function(t){var e=[];return function n(r){return r.forEach((function(r){r.is(t)&&e.push(r),n(r.components())}))}(this.components()),e}},{key:"closest",value:function(t){var e=this.view.$el.closest(t);return e.length&&e.data('model')}},{key:"closestType",value:function(t){for(var e=this.parent();e&&!e.is(t);)e=e.parent();return e}},{key:"contains",value:function(t){var e=!1;if(!t)return e;var n=function n(r){!e&&r.forEach((function(r){r===t&&(e=!0),!e&&n(r.components())}))};return n(this.components()),e}},{key:"tagUpdated",value:function(){this.trigger('rerender')}},{key:"replaceWith",value:function(t){var e=this.collection,n=e.indexOf(this);return e.remove(this),e.add(t,{at:n})}},{key:"attrUpdated",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=this.get('attributes'),o=i.class;o&&this.setClass(o),delete i.class;var s=i.style;s&&this.setStyle(s),delete i.style;var a=_({},this.previous('attributes')),l=(0,d.shallowDiff)(a,this.get('attributes'));(0,f.keys)(l).forEach((function(t){return n.trigger("change:attributes:".concat(t),n,l[t],r)}))}},{key:"setAttributes",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.set('attributes',_({},t),e),this}},{key:"addAttributes",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.setAttributes(_(_({},this.getAttributes({noClass:1})),t),e)}},{key:"removeAttributes",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Array.isArray(t)?t:[t],r=this.getAttributes();return n.map((function(t){return delete r[t]})),this.setAttributes(r,e)}},{key:"getStyle",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.em,r=(0,f.isString)(t)?t:'',i=r?e:t;if(n&&n.getConfig('avoidInlineStyle')&&!i.inline){var o=n.get('state'),s=n.get('CssComposer'),a=s.getIdRule(this.getId(),_({state:o},i));if(this.rule=a,a)return a.getStyle(r)}return p.Z.getStyle.call(this,r)}},{key:"setStyle",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em,i=this.opt;if(r&&r.getConfig('avoidInlineStyle')&&!i.temporary&&!n.inline){var o=this.get('style')||{};e=_(_({},e=(0,f.isString)(e)?this.parseStyle(e):e),o);var s=r.get('state'),a=r.get('CssComposer'),l=this.getStyle(n);this.rule=a.setIdRule(this.getId(),e,_(_({},n),{},{state:s}));var c=(0,d.shallowDiff)(l,e);this.set('style','',{silent:1}),(0,f.keys)(c).forEach((function(e){return t.trigger("change:style:".concat(e))}))}else e=p.Z.setStyle.apply(this,arguments);return e}},{key:"getAttributes",value:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.em,r=[],i=_({},this.get('attributes')),o=n&&n.get('SelectorManager'),s=this.getId();if(e.noClass||(this.get('classes').forEach((function(t){return r.push((0,f.isString)(t)?t:t.get('name'))})),r.length&&(i.class=r.join(' '))),!e.noStyle){var a=this.get('style');(0,d.isObject)(a)&&!(0,d.isEmptyObj)(a)&&(i.style=this.styleToString({inline:1}))}(0,f.has)(i,'id')||(j(n)?t=o&&o.get(s,o.Selector.TYPE_ID):(0,f.isEmpty)(this.getStyle())||(t=1),(this.__getSymbol()||this.__getSymbols())&&(t=1),t&&(i.id=s));return i}},{key:"addClass",value:function(t){var e=this.em.get('SelectorManager').addClass(t);return this.get('classes').add(e)}},{key:"setClass",value:function(t){return this.get('classes').reset(),this.addClass(t)}},{key:"removeClass",value:function(t){var e=[];t=(0,f.isArray)(t)?t:[t];var n=this.get('classes'),r=m.Z.TYPE_CLASS;return t.forEach((function(t){t.split(' ').forEach((function(t){var i=n.where({name:t,type:r})[0];i&&e.push(n.remove(i))}))})),e}},{key:"getClasses",value:function(){var t=this.getAttributes().class;return t?t.split(' '):[]}},{key:"__logSymbol",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.__getSymbol(),i=this.__getSymbols();(r||i)&&this.em.log(t,{model:this,toUp:e,context:'symbols',opts:n})}},{key:"__initSymb",value:function(){this.__symbReady||(this.on('change',this.__upSymbProps),this.__symbReady=1)}},{key:"__isSymbol",value:function(){return(0,f.isArray)(this.get(M))}},{key:"__isSymbolOrInst",value:function(){return!(!this.__isSymbol()&&!this.get(A))}},{key:"__isSymbolTop",value:function(){var t=this.parent();return this.__isSymbolOrInst()&&(!t||t&&!t.__isSymbol()&&!t.__getSymbol())}},{key:"__isSymbolNested",value:function(){if(!this.__isSymbolOrInst()||this.__isSymbolTop())return!1;var t=(this.__isSymbol()?this:this.__getSymbol()).__getSymbTop(),e=this.__getSymbTop();return(e.__isSymbol()?e:e.__getSymbol())!==t}},{key:"__getAllById",value:function(){var t=this.em;return t?t.get('DomComponents').allById():{}}},{key:"__getSymbol",value:function(){var t=this.get(A);if(t&&(0,f.isString)(t)){var e=this.__getAllById()[t];e?(t=e,this.set(A,e)):t=0}return t}},{key:"__getSymbols",value:function(){var t=this,e=this.get(M);return e&&(0,f.isArray)(e)&&(e.forEach((function(n,r){n&&(0,f.isString)(n)&&(e[r]=t.__getAllById()[n])})),e=e.filter((function(t){return t&&!(0,f.isString)(t)}))),e}},{key:"__isSymbOvrd",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'',e=this.get(L),n=t.split(':'),r=(0,o.Z)(n,1),i=r[0],s=t!==i?[t,i]:[t];return!0===e||(0,f.isArray)(e)&&s.some((function(t){return e.indexOf(t)>=0}))}},{key:"__getSymbToUp",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=[],r=this.em,o=e.changed,s=r&&r.get('symbols');if(e.fromInstance||e.noPropagate||e.fromUndo||!s||o&&this.__isSymbOvrd(o))return n;var a=this.__getSymbols()||[],l=this.__getSymbol(),c=l?[l].concat((0,i.Z)(l.__getSymbols()||[])):a;return n=c.filter((function(e){return e!==t})).filter((function(t){return!(o&&t.__isSymbOvrd(o))}))}},{key:"__getSymbTop",value:function(t){for(var e=this,n=this.parent(t);n&&(n.__isSymbol()||n.__getSymbol());)e=n,n=n.parent(t);return e}},{key:"__upSymbProps",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.changedAttributes(),i=r.attributes||{};if(delete r.status,delete r.open,delete r.__symbols,delete r.__symbol,delete r.__symbol_ovrd,delete r.attributes,delete i.id,(0,d.isEmptyObj)(i)||(r.attributes=i),!(0,d.isEmptyObj)(r)){var o=this.__getSymbToUp(n);(0,f.keys)(r).map((function(t){e.__isSymbOvrd(t)&&delete r[t]})),this.__logSymbol('props',o,{opts:n,changed:r}),o.forEach((function(t){var i=_({},r);(0,f.keys)(i).map((function(e){t.__isSymbOvrd(e)&&delete i[e]})),t.set(i,_({fromInstance:e},n))}))}}},{key:"__upSymbCls",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=this.__getSymbToUp(r);this.__logSymbol('classes',i,{opts:r}),i.forEach((function(t){t.set('classes',n.get('classes'),{fromInstance:n})})),this.__changesUp(r)}},{key:"__upSymbComps",value:function(t,e,n){var r=this,o=n||e||{},s={fromInstance:o.fromInstance,fromUndo:o.fromUndo},a=t.opt.temporary;if(n)if(n.add){var l=[],c=!!this.__getSymbols(),u=this.__getSymbToUp(_(_({},s),{},{changed:'components:add'}));if(u.length){var h=t.__getSymbol();l=(h?h.__getSymbols():t.__getSymbols())||[],(l=(0,i.Z)(l)).push(h||t)}!a&&this.__logSymbol('add',u,{opts:n,addedInstances:l.map((function(t){return t.cid})),added:t.cid}),u.forEach((function(e){var i=e.__getSymbTop(),o=l.filter((function(t){var e=t.__getSymbTop({prev:1});return i&&e&&e===i}))[0]||t.clone({symbol:1,symbolInv:c});e.append(o,_({fromInstance:r},n))}))}else{var f=t.__getSymbol();if(f&&!n.temporary&&f.set(M,f.__getSymbols().filter((function(e){return e!==t}))),!t.__isSymbolTop()){var d='components:remove',p=n.index,g=t.parent(),v=_({fromInstance:t},n),m=t.__isSymbolNested(),y=function(t){var e=t.parent();e&&!e.__isSymbOvrd(d)&&t.remove(v)},b=g.__isSymbOvrd(d)?[]:t.__getSymbToUp(s);m&&(b=g.__getSymbToUp(_(_({},s),{},{changed:d})),y=function(t){var e=t.components().at(p);e&&e.remove(_({fromInstance:g},v))}),!a&&this.__logSymbol('remove',b,{opts:n,removed:t.cid,isSymbNested:m}),b.forEach(y)}}else{var w=this.__getSymbToUp(_(_({},s),{},{changed:'components:reset'}));this.__logSymbol('reset',w,{components:t.models}),w.forEach((function(n){var i=t.models.map((function(t){return t.clone({symbol:1})}));n.components().reset(i,_({fromInstance:r},e))}))}this.__changesUp(o)}},{key:"initClasses",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r='change:classes',i=this.get('attributes').class||[],o=[this,r,this.initClasses],s=this.get('classes')||i,a=(0,f.isString)(s)?s.split(' '):s;this.stopListening.apply(this,o);var l=this.normalizeClasses(a),c=new y.Z([]);return this.set('classes',c,n),c.add(l),c.on('add remove reset',this.__upSymbCls),this.listenTo.apply(this,o),this}},{key:"initComponents",value:function(){var t=[this,'change:components',this.initComponents];this.stopListening.apply(this,t);var e=new v.Z(null,this.opt);e.parent=this;var n=this.get('components'),r=!this.opt.avoidChildren;return this.set('components',e),r&&n&&e.add((0,f.isFunction)(n)?n(this):n,this.opt),e.on('add remove reset',this.__upSymbComps),this.listenTo.apply(this,t),this}},{key:"initTraits",value:function(t){var e=this.em,n='change:traits';this.off(n,this.initTraits),this.__loadTraits();var r=_({},this.get('attributes')),i=this.get('traits');return i.each((function(t){if(!t.get('changeProp')){var e=t.get('name'),n=t.getInitValue();e&&n&&(r[e]=n)}})),i.length&&this.set('attributes',r),this.on(n,this.initTraits),t&&e&&e.trigger('component:toggled'),this}},{key:"initScriptProps",value:function(){if(!this.opt.temporary){var t='script-props',e=["change:".concat(t),this.initScriptProps];this.off.apply(this,e);var n=this.previous(t)||[],r=this.get(t)||[],i=n.map((function(t){return"change:".concat(t)})).join(' '),o=r.map((function(t){return"change:".concat(t)})).join(' ');i&&this.off(i,this.__scriptPropsChange),o&&this.on(o,this.__scriptPropsChange),this.on.apply(this,e)}}},{key:"__scriptPropsChange",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n.avoidStore||this.trigger('rerender')}},{key:"append",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(0,f.isArray)(t)?t:[t],r=n.map((function(t){return(0,f.isString)(t)||t.collection&&t.collection.remove(t,{temporary:1}),t})),i=this.components().add(r,e);return(0,f.isArray)(i)?i:[i]}},{key:"components",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.get('components');return(0,f.isUndefined)(t)?n:(n.reset(null,e),t?this.append(t,e):[])}},{key:"getChildAt",value:function(t){return this.components().at(t||0)||null}},{key:"getLastChild",value:function(){var t=this.components();return t.at(t.length-1)||null}},{key:"empty",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.components().reset(null,t),this}},{key:"parent",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.collection||t.prev&&this.prevColl;return e?e.parent:null}},{key:"scriptUpdated",value:function(){this.set('scriptUpdated',1)}},{key:"initToolbar",value:function(){var t=this.em,e=this,n=t&&t.getConfig('stylePrefix')||'';if(!e.get('toolbar')&&t){var r=[];e.collection&&r.push({label:t.getIcon('arrowUp'),command:function(t){return t.runCommand('core:component-exit',{force:1})}}),e.get('draggable')&&r.push({attributes:{class:"".concat(n,"no-touch-actions"),draggable:!0},label:t.getIcon('move'),command:'tlb-move'}),e.get('copyable')&&r.push({label:t.getIcon('copy'),command:'tlb-clone'}),e.get('removable')&&r.push({label:t.getIcon('delete'),command:'tlb-delete'}),e.set('toolbar',r)}}},{key:"__loadTraits",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t||this.get('traits');if(!(n instanceof S)){n=(0,f.isFunction)(n)?n(this):n;var r=new S([],this.opt);r.setTarget(this),n.length&&(n.forEach((function(t){return t.attributes&&delete t.attributes.value})),r.add(n)),this.set({traits:r},e)}return this}},{key:"getTraits",value:function(){return this.__loadTraits(),(0,i.Z)(this.get('traits').models)}},{key:"setTraits",value:function(t){var e=(0,f.isArray)(t)?t:[t];return this.set({traits:e}),this.getTraits()}},{key:"getTrait",value:function(t){return this.getTraits().filter((function(e){return e.get('id')===t||e.get('name')===t}))[0]||null}},{key:"updateTrait",value:function(t,e){var n,r=this.getTrait(t);return r&&r.set(e),null===(n=this.em)||void 0===n||n.trigger('component:toggled'),this}},{key:"getTraitIndex",value:function(t){var e=this.getTrait(t);return e?this.get('traits').indexOf(e):-1}},{key:"removeTrait",value:function(t){var e,n=this,r=((0,f.isArray)(t)?t:[t]).map((function(t){return n.getTrait(t)})),i=this.get('traits'),o=r.length?i.remove(r):[];return null===(e=this.em)||void 0===e||e.trigger('component:toggled'),(0,f.isArray)(o)?o:[o]}},{key:"addTrait",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.__loadTraits();var r=this.get('traits').add(t,n);return null===(e=this.em)||void 0===e||e.trigger('component:toggled'),(0,f.isArray)(r)?r:[r]}},{key:"normalizeClasses",value:function(t){var e=[],n=this.em,r=n&&n.get('SelectorManager');if(r)return t.models?(0,i.Z)(t.models):(t.forEach((function(t){return e.push(r.add(t))})),e)}},{key:"clone",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=_({},this.attributes),r=_({},this.opt),o=this.getId(),s=e&&e.get('CssComposer');n.attributes=_({},n.attributes),delete n.attributes.id,n.components=[],n.classes=[],n.traits=[],this.__isSymbolTop()&&(t.symbol=1),this.get('components').each((function(e,r){n.components[r]=e.clone(_(_({},t),{},{_inner:1}))})),this.get('traits').each((function(t,e){n.traits[e]=t.clone()})),this.get('classes').each((function(t,e){n.classes[e]=t.get('name')})),n.status='',r.collection=null;var a=new this.constructor(n,r),l="#".concat(a.getId()),c=s?s.getRules("#".concat(o)):[];c.forEach((function(t){var e=t.clone();e.set('selectors',[l]),s.getAll().add(e)})),a.set(M,0);var u=this.__getSymbol(),h=this.__getSymbols();t.symbol||!u&&!h?u?(u.set(M,[].concat((0,i.Z)(u.__getSymbols()),[a])),a.__initSymb()):t.symbol&&(this.__isSymbol()?(this.set(M,[].concat((0,i.Z)(h),[a])),a.set(A,this),a.__initSymb()):t.symbolInv?(this.set(M,[a]),a.set(A,this),[this,a].map((function(t){return t.__initSymb()}))):(a.set(M,[this]),[this,a].map((function(t){return t.__initSymb()})),this.set(A,a))):(a.set(A,0),a.set(M,0));var f='component:clone';return e&&e.trigger(f,a),this.trigger(f,a),a}},{key:"getName",value:function(){var t=this.em,e=this.attributes,n=e.type,r=e.tagName,i=e.name,o=n||r,s=!n&&r,a='domComponents.names.',l=i&&(null==t?void 0:t.t("".concat(a).concat(i))),c=s&&(null==t?void 0:t.t("".concat(a).concat(s))),u=t&&(t.t("".concat(a).concat(n))||t.t("".concat(a).concat(r)));return this.get('custom-name')||l||i||c||(0,d.capitalize)(s)||u||(0,d.capitalize)(o)}},{key:"getIcon",value:function(){var t=this.get('icon');return t?t+' ':''}},{key:"toHTML",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this,n=[],r=t.tag,i=r||e.get('tagName'),o=e.get('void'),s=t.attributes,a=this.getAttrToHTML();if(delete t.tag,s&&((0,f.isFunction)(s)?a=s(e,a)||{}:(0,d.isObject)(s)&&(a=s)),t.withProps){var l=this.toJSON();(0,f.forEach)(l,(function(t,e){'_'!==e[0]&&['classes','attributes','components'].indexOf(e)<0&&(a["data-gjs-".concat(e)]=(0,f.isArray)(t)||(0,d.isObject)(t)?JSON.stringify(t):t)}))}for(var c in a){var u=a[c];if(!(0,f.isUndefined)(u)&&null!==u)if((0,f.isBoolean)(u))u&&n.push(c);else{var h='';if(t.altQuoteAttr&&(0,f.isString)(u)&&u.indexOf('"')>=0)h="'".concat(u.replace(/'/g,'''),"'");else{var p=(0,f.isString)(u)?u.replace(/"/g,'"'):u;h="\"".concat(p,"\"")}n.push("".concat(c,"=").concat(h))}}var g=n.length?" ".concat(n.join(' ')):'',v=e.getInnerHTML(t),m="<".concat(i).concat(g).concat(o?'/':'',">").concat(v);return!o&&(m+="")),m}},{key:"getInnerHTML",value:function(t){return this.__innerHTML(t)}},{key:"__innerHTML",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.components();return e.length?e.map((function(e){return e.toHTML(t)})).join(''):this.get('content')}},{key:"getAttrToHTML",value:function(){var t=this.getAttributes();return delete t.style,t}},{key:"toJSON",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=g.Model.prototype.toJSON.call(this,t);if(e.attributes=this.getAttributes(),delete e.attributes.class,delete e.toolbar,delete e.traits,delete e.status,delete e.open,!t.fromUndo){var n=e.__symbol,r=e.__symbols;r&&(0,f.isArray)(r)&&(e.__symbols=r.filter((function(t){return t})).map((function(t){return t.getId?t.getId():t}))),n&&!(0,f.isString)(n)&&(e.__symbol=n.getId())}return this.em.getConfig('avoidDefaults')&&this.getChangedProps(e),e}},{key:"getChangedProps",value:function(t){var e=t||g.Model.prototype.toJSON.apply(this),n=(0,f.result)(this,'defaults');return(0,f.forEach)(n,(function(t,n){-1===['type'].indexOf(n)&&e[n]===t&&delete e[n]})),(0,f.isEmpty)(e.type)&&delete e.type,(0,f.forEach)(['attributes','style'],(function(t){(0,f.isEmpty)(n[t])&&(0,f.isEmpty)(e[t])&&delete e[t]})),(0,f.forEach)(['classes','components'],(function(t){(!e[t]||(0,f.isEmpty)(n[t])&&!e[t].length)&&delete e[t]})),e}},{key:"getId",value:function(){return(this.get('attributes')||{}).id||this.ccid||this.cid}},{key:"setId",value:function(t,e){var n=_({},this.get('attributes'));return n.id=t,this.set('attributes',n,e),this}},{key:"getEl",value:function(t){var e=this.getView(t);return e&&e.el}},{key:"getView",value:function(t){var e=this.view,n=this.views;return t&&(e=n.filter((function(e){return e._getFrame()===t.view}))[0]),e}},{key:"getCurrentView",value:function(){var t=(this.em.get('currentFrame')||{}).model;return this.getView(t)}},{key:"__getScriptProps",value:function(){var t=this.props();return(this.get('script-props')||[]).reduce((function(e,n){return e[n]=t[n],e}),{})}},{key:"getScriptString",value:function(t){var e=this,n=t||this.get('script');if(!n)return n;if(this.get('script-props'))n=n.toString().trim();else{if('function'==typeof n){var i=n.toString().trim();n=(i=i.replace(/^function[\s\w]*\(\)\s?\{/,'').replace(/\}$/,'')).trim()}var o=this.em.getConfig(),s=E(o.tagVarStart||'{[ '),a=E(o.tagVarEnd||' ]}'),l=new RegExp("".concat(s,"([\\w\\d-]*)").concat(a),'g');n=n.replace(l,(function(t,n){e.scriptUpdated();var i=e.attributes[n]||'';return(0,f.isArray)(i)||'object'==(0,r.Z)(i)?JSON.stringify(i):i}))}return n}},{key:"emitUpdate",value:function(t){for(var e=this.em,n=R+(t?":".concat(t):''),r=t&&this.get(t),i=arguments.length,o=new Array(i>1?i-1:0),a=1;a=0&&this.__propSelfToParent({component:this,changed:(0,s.Z)({},t,r),options:o[2]||o[1]||{}})}},{key:"onAll",value:function(t){return(0,f.isFunction)(t)&&(t(this),this.components().forEach((function(e){return e.onAll(t)}))),this}},{key:"remove",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.em,r=this.collection,i=function(){r&&r.remove(t,_(_({},e),{},{action:'remove-component'})),e.root&&t.components('')},o=_({},e);return[this,n].map((function(e){return e.trigger('component:remove:before',t,i,o)})),!o.abort&&i(),this}},{key:"move",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.remove({temporary:1}),t&&t.append(this,e),this}},{key:"isInstanceOf",value:function(t){var e,n,r=null===(e=this.em)||void 0===e||null===(n=e.get('DomComponents').getType(t))||void 0===n?void 0:n.model;return!!r&&this instanceof r}},{key:"isChildOf",value:function(t){for(var e=(0,f.isString)(t),n=this.parent();n;){if(e){if(n.isInstanceOf(t))return!0}else if(n===t)return!0;n=n.parent()}return!1}},{key:"resetId",value:function(){var t=this.em,e=this.getId();if(e){var r=n.createId(this);this.setId(r);var i=t&&t.get('CssComposer').getIdRule(e),o=i&&i.get('selectors').at(0);return o&&o.set('name',r),this}}},{key:"_getStyleRule",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.id,n=this.em,r=e||this.getId();return n&&n.get('CssComposer').getIdRule(r)}},{key:"_getStyleSelector",value:function(t){var e=this._getStyleRule(t);return e&&e.get('selectors').at(0)}},{key:"_idUpdated",value:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!r.idUpdate){var i=this.ccid,o=this.get('attributes')||{},s=o.id,a=(this.previous('attributes')||{}).id||i,l=n.getList(this);if(l[s]||!s&&a)return this.setId(a,{idUpdate:1});delete l[a],l[s]=this,this.ccid=s;var c=this._getStyleSelector({id:a});c&&c.set({name:s,label:s})}}}]),n}(g.Model.extend(p.Z));Z.isComponent=function(t){return{tagName:(0,d.toLowerCase)(t.tagName)}},Z.ensureInList=function(t){var e=Z.getList(t),n=t.getId(),r=e[n];if(r){if(r!==t){var i=Z.getIncrementId(n,e);t.setId(i),e[i]=t}}else e[n]=t;t.components().forEach((function(t){return Z.ensureInList(t)}))},Z.createId=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Z.getList(t),i=n.idMap,o=void 0===i?{}:i,s=t.get('attributes'),a=s.id;return a?(e=Z.getIncrementId(a,r,n),t.setId(e),a!==e&&(o[a]=e)):e=Z.getNewId(r),r[e]=t,e},Z.getNewId=function(t){for(var e=Object.keys(t).length.toString().length+2,n=(Math.random()+1.1).toString(36).slice(-e),r="i".concat(n);t[r];)r=Z.getNewId(t);return r},Z.getIncrementId=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.keepIds,i=void 0===r?[]:r,o=1,s=t;if(i.indexOf(t)<0)for(;e[s];)o++,s="".concat(t,"-").concat(o);return s},Z.getList=function(t){var e=t.opt,n=void 0===e?{}:e,r=n.domc,i=n.em,o=r||i&&i.get('DomComponents');return o?o.componentsById:{}},Z.checkId=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=(0,f.isArray)(t)?t:[t],o=r.keepIds,s=void 0===o?[]:o;i.forEach((function(t){var i=t.attributes,o=void 0===i?{}:i,a=t.components,l=o.id;if(l&&n[l]&&s.indexOf(l)<0){var c=Z.getIncrementId(l,n);o.id=c,(0,f.isArray)(e)&&e.forEach((function(t){var e=t.selectors;e.forEach((function(t,n){t==="#".concat(l)&&(e[n]="#".concat(c))}))}))}a&&Z.checkId(a,e,n,r)}))},Z.getDefaults=function(){return(0,f.result)(this.prototype,'defaults')},Z.prototype.defaults=(k={tagName:'div',type:'',name:'',removable:!0,draggable:!0,droppable:!0,badgable:!0,stylable:!0,'stylable-require':'','style-signature':'',unstylable:'',highlightable:!0,copyable:!0,resizable:!1,editable:!1,layerable:!0,selectable:!0,hoverable:!0,void:!1,state:'',status:'',content:'',icon:'',style:'',styles:'',classes:'',script:'','script-props':'','script-export':'',attributes:'',traits:['id','title'],propagate:'',dmode:'',toolbar:null},(0,s.Z)(k,A,0),(0,s.Z)(k,M,0),(0,s.Z)(k,L,0),(0,s.Z)(k,"_undo",!0),(0,s.Z)(k,"_undoexc",['status','open']),k)},8431:(t,e,n)=>{"use strict";n.d(e,{Z:()=>v});var r=n(1002),i=n(2982),o=n(4925),s=n(4942),a=n(2316),l=n.n(a),c=n(9050),u=n(9138),h=["at"];function f(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function d(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:[];if(!e)return[];var r=(0,c.isArray)(e)||(0,c.isFunction)(e.map)?e:[e];return r.map((function(e){n.push(e.getId()),t(e.components().models,n)})),n},g=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=(0,c.isArray)(e)?e:[e];return i.map((function(e){var i=e.attributes,o=void 0===i?{}:i,s=e.components,a=e.tagName,l=o.id,u=e;if(l&&n[l]&&(u=n[l],a&&u.set({tagName:a},d(d({},r),{},{silent:!0}))),s){var h=t(s,n);if((0,c.isFunction)(u.components)){var f=u.components();f.length>0&&f.reset(h,r)}else u.components=h}return u}))};const v=l().Collection.extend({initialize:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.opt=e,this.listenTo(this,'add',this.onAdd),this.listenTo(this,'remove',this.removeChildren),this.listenTo(this,'reset',this.resetChildren);var n=e.em,r=e.config;this.config=r,this.em=n,this.domc=e.domc||n&&n.get('DomComponents')},resetChildren:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this,i=n.previousModels||[],o=i.filter((function(e){return!t.get(e.cid)})),s=p(t);n.keepIds=p(i).filter((function(t){return s.indexOf(t)>=0})),o.forEach((function(t){return e.removeChildren(t,r,n)})),t.each((function(t){return e.onAdd(t)}))},resetFromString:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'',n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n.keepIds=p(this);var r=this.domc,i=(null==r?void 0:r.allById())||{},o=this.parseString(e,n),s=(0,c.isArray)(o)?o:[o],a=g(s,i,n);this.reset(a,n),null===(t=this.em)||void 0===t||t.trigger('component:content',this.parent,n,e)},removeChildren:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t){var i=this.domc,o=this.em,s=r.temporary||r.fromUndo;if(t.prevColl=this,!s){var a=t.getId(),l=o.get('SelectorManager').getAll(),c=o.get('CssComposer').getAll(),u=(r.keepIds||[]).indexOf(a)<0,h=i?i.allById():{};delete h[a];var f=u?c.remove(c.filter((function(t){return t.getSelectors().getFullString()==="#".concat(a)})),r):[];l.remove(f.map((function(t){return t.getSelectors().at(0)}))),t.opt.temporary||(o.get('Commands').run('core:component-style-clear',{target:t}),t.removed(),t.trigger('removed'),o.trigger('component:remove',t));var d=t.components();d.forEach((function(t){return n.removeChildren(t,e,r)}))}var p=t.components();o.stopListening(p),o.stopListening(t),o.stopListening(t.get('classes')),t.__postRemove()}},model:function(t,e){var n,r=e.collection.opt,i=r.em,o=i.get('DomComponents').componentTypes;e.em=i,e.config=r.config,e.componentTypes=o,e.domc=r.domc;for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:{},n=this.em,r=this.domc,i=n.get('CssComposer'),s=n.get('Parser').parseHtml(t);if(u.ZP.checkId(s.html,s.css,r.componentsById,e),s.css&&i&&!e.temporary){e.at;var a=(0,o.Z)(e,h);i.addCollection(s.css,d(d({},a),{},{extend:1}))}return s.html},add:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n.keepIds=[].concat((0,i.Z)(n.keepIds||[]),(0,i.Z)(p(n.previousModels))),(0,c.isString)(t)?t=this.parseString(t,n):(0,c.isArray)(t)&&(t=(0,i.Z)(t)).forEach((function(r,i){if((0,c.isString)(r)){var o=e.parseString(r,n);t[i]=(0,c.isArray)(o)&&!o.length?null:o}}));var r=(0,c.isArray)(t);t=(r?t:[t]).filter((function(t){return t})).map((function(t){return e.processDef(t)})),t=r?(0,c.flatten)(t,1):t[0];var o=l().Collection.prototype.add.apply(this,[t,n]);return this.__firstAdd=o,o},processDef:function(t){if(t.cid&&t.ccid)return t;var e=this.em,n=this.config,i=(void 0===n?{}:n).processor,o=t;if(i){var s=i(o=d({},o));s&&((0,c.each)(o,(function(t,e){return delete o[e]})),(0,c.extend)(o,s))}if(o.$$typeof&&'object'==(0,r.Z)(o.props)){(o=d({},o)).props=d({},o.props);var a=e.get('DomComponents'),l=e.get('Parser').parserHtml;(0,c.each)(o,(function(t,e){(0,c.includes)(['props','type'],e)||delete o[e]}));var u=o.props,h=u.children;delete u.children,delete o.props;var f=l.splitPropsFromAttr(u);o.attributes=f.attrs,h&&(o.components=h),o.type?a.getType(o.type)||(o.tagName=o.type,delete o.type):o.type='textnode',(0,c.extend)(o,f.props)}return o},onAdd:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.domc,i=this.em,o=t.getStyle(),s=i&&i.getConfig('avoidInlineStyle');if(r&&r.Component.ensureInList(t),!(0,c.isEmpty)(o)&&!s&&i&&i.get&&i.getConfig('forceClass')&&!n.temporary){var a=t.cid;i.get('CssComposer').setClassRule(a,o);t.setStyle({}),t.addClass(a)}t.__postAdd({recursive:1}),this.__onAddEnd()},__onAddEnd:(0,c.debounce)((function(){}))})},2169:(t,e,n)=>{"use strict";n.d(e,{Z:()=>p});var r=n(4942),i=n(2316),o=n.n(i),s=n(9050),a=n(8431),l=n(3505),c=n(4293),u=n(9283),h=n(6183);function f(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function d(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=this.model,n=t.config||{},r=n.em,i=e.opt||{},o=this.$el,s=this.el;this.opts=t,this.modelOpt=i,this.config=n,this.em=r||'',this.pfx=n.stylePrefix||'',this.ppfx=n.pStylePrefix||'',this.attr=e.get('attributes'),this.classe=this.attr.class||[],this.listenTo(e,'change:style',this.updateStyle),this.listenTo(e,'change:attributes',this.renderAttributes),this.listenTo(e,'change:highlightable',this.updateHighlight),this.listenTo(e,'change:status',this.updateStatus),this.listenTo(e,'change:script rerender',this.reset),this.listenTo(e,'change:content',this.updateContent),this.listenTo(e,'change',this.handleChange),this.listenTo(e,'active',this.onActive),this.listenTo(e,'disable',this.onDisable),o.data('model',e),(0,h.setViewEl)(s,this),e.view=this,this._getFrame()&&e.views.push(this),this.initClasses(),this.initComponents({avoidRender:1}),this.events=d(d({},this.events),{},{dragstart:'handleDragStart'}),this.delegateEvents(),!i.temporary&&this.init(this._clbObj())},__isDraggable:function(){var t=this.model,e=this.config,n=t.attributes.draggable;return e.draggableComponents&&n},_clbObj:function(){var t=this.em,e=this.model,n=this.el;return{editor:t&&t.getEditor(),model:e,el:n}},init:function(){},removed:function(){},onActive:function(){},onDisable:function(){},remove:function(){var t;o().View.prototype.remove.apply(this,arguments);var e=this.model,n=this.$el,r=e.views,i=this._getFrame()||{};return e.components().forEach((function(t){var e=t.getView(i.model);null==e||e.remove()})),null===(t=this.childrenView)||void 0===t||t.remove(),r.splice(r.indexOf(this),1),this.removed(this._clbObj()),n.data({model:'',collection:'',view:''}),this},handleDragStart:function(t){if(!this.__isDraggable())return!1;t.stopPropagation(),t.preventDefault(),this.em.get('Commands').run('tlb-move',{target:this.model,event:t})},initClasses:function(){var t=this.model,e='change:classes',n=t.get('classes');n instanceof c.Z&&(this.stopListening(t,e,this.initClasses),this.listenTo(t,e,this.initClasses),this.listenTo(n,'add remove change',this.updateClasses),n.length&&this.importClasses())},initComponents:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.model,n=this.$el,r=this.childrenView,i='change:components',o=e.get('components'),s=[e,i,this.initComponents];o instanceof a.Z&&(n.data('collection',o),r&&r.remove(),this.stopListening.apply(this,s),!t.avoidRender&&this.renderChildren(),this.listenTo.apply(this,s))},handleChange:function(){var t=this.model,e=(0,s.keys)(t.changed);if(1!==e.length||'status'!==e[0])for(var n in t.emitUpdate(),t.changed)t.emitUpdate(n)},importClasses:function(){var t=this.config.em.get('SelectorManager');t&&this.model.get('classes').each((function(e){t.add(e.get('name'))}))},updateStatus:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=e?e.get('Canvas').getConfig():{},r=n.extHl,i=this.el,o=this.model.get('status'),s=this.ppfx,a="".concat(s,"selected"),l="".concat(a,"-parent"),c="".concat(s,"freezed"),u="".concat(s,"hovered"),h=[a,l,c,u],f=r&&!t.noExtHl?'':a;this.$el.removeClass(h.join(' '));var d=i.getAttribute('class')||'',p='';switch(o){case'selected':p="".concat(d," ").concat(f);break;case'selected-parent':p="".concat(d," ").concat(l);break;case'freezed':p="".concat(d," ").concat(c);break;case'freezed-selected':p="".concat(d," ").concat(c," ").concat(f);break;case'hovered':p=t.avoidHover?'':"".concat(d," ").concat(u)}(p=p.trim())&&i.setAttribute('class',p)},updateHighlight:function(){var t=this.model,e=t.get('textable'),n=t.get('highlightable')&&(e||!t.isChildOf('text'));this.setAttribute('data-gjs-highlightable',!!n||'')},updateStyle:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.model,i=this.em;if(i&&i.getConfig('avoidInlineStyle')&&!n.inline){var o=r.getStyle();!(0,s.isEmpty)(o)&&r.setStyle(o)}else this.setAttribute('style',r.styleToString(n))},updateClasses:function(){var t=this.model.get('classes').pluck('name').join(' ');this.setAttribute('class',t),this.updateStatus(),this.onAttrUpdate()},setAttribute:function(t,e){var n=this.$el;e?n.attr(t,e):n.removeAttr(t)},getClasses:function(){return this.model.getClasses().join(' ')},updateAttributes:function(){var t=[],e=this.model,n=this.$el,r=this.el,i=e.attributes,o=i.textable,a=i.type,l=d(d({id:e.getId(),'data-gjs-type':a||'default'},this.__isDraggable()&&{draggable:!0}),o&&{contenteditable:'false'});(0,s.each)(r.attributes,(function(e){return t.push(e.nodeName)})),t.forEach((function(t){return n.removeAttr(t)})),this.updateStyle(),this.updateHighlight();var c=d(d({},l),e.getAttributes());(0,s.keys)(c).forEach((function(t){return!1===c[t]&&delete c[t]})),n.attr(c)},updateContent:function(){var t=this.model.get('content'),e=this.model.components().length;this.getChildrenContainer().innerHTML=e?'':t},prevDef:function(t){t.preventDefault()},updateScript:function(){var t=this.model,e=this.em;t.get('script')&&e&&e.get('Canvas').getCanvasView().updateScript(this)},getChildrenContainer:function(){var t=this.el;return'function'==typeof this.getChildrenSelector?t=this.el.querySelector(this.getChildrenSelector()):this.getTemplate,t},getOffsetRect:function(){var t={},e=this.el,n=0,r=0;return function i(o){var s=o.offsetParent;s?(n+=s.offsetTop,r+=s.offsetLeft,i(s)):(t.top=e.offsetTop+n,t.left=e.offsetLeft+r,t.bottom=t.top+e.offsetHeight,t.right=t.left+e.offsetWidth)}(e),t},isInViewport:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.rect,n=this.el,r=n.ownerDocument,i=r.body,o=r.defaultView.frameElement,s=e||this.getOffsetRect(),a=s.top,l=s.left,c=this._getFrame().getOffsetRect();return a>=c.scrollTop&&l>=c.scrollLeft&&a<=c.scrollBottom&&l<=o.offsetWidth+i.scrollLeft},scrollIntoView:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getOffsetRect(),n=this.isInViewport({rect:e});if(!n||t.force){var r=this.el;'smooth'!==t.behavior?r.ownerDocument.defaultView.scrollTo(0,e.top):r.scrollIntoView(d({behavior:'smooth',block:'nearest'},t))}},reset:function(){var t=this.el;this.el='',this._ensureElement(),this._setData(),(0,u.dL)(t,this.el),this.render()},_setData:function(){var t=this.model,e=t.components();this.$el.data({model:t,collection:e,view:this})},_getFrame:function(){return this.config.frameView},renderChildren:function(){this.updateContent();var t=this.getChildrenContainer(),e=this.childrenView||new l.Z({collection:this.model.get('components'),config:this.config,componentTypes:this.opts.componentTypes});e.render(t),this.childrenView=e;for(var n=Array.prototype.slice.call(e.el.childNodes),r=0,i=n.length;r{"use strict";n.d(e,{Z:()=>s});var r=n(2316),i=n.n(r),o=n(9050);const s=i().View.extend({initialize:function(t){this.opts=t||{},this.config=t.config||{},this.em=this.config.em;var e=this.collection;this.listenTo(e,'add',this.addTo),this.listenTo(e,'reset',this.resetChildren),this.listenTo(e,'remove',this.removeChildren)},removeChildren:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};t.views.forEach((function(t){if(t){var e=t.childrenView,n=t.scriptContainer;e&&e.stopListening(),n&&n.remove(),t.remove.apply(t)}}));var i=t.components();i.forEach((function(t){return n.removeChildren(t,e,r)}))},addTo:function(t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=this.config.em,r=this.collection.indexOf(t);if(this.addToCollection(t,null,r),n&&!e.temporary){var i=function t(e){n.trigger('component:add',e),e.components().forEach((function(e){return t(e)}))};i(t)}},addToCollection:function(t,e,r){this.compView||(this.compView=n(2169).Z);for(var i=this.config,s=this.opts,a=this.em,l=e||null,c=i.frameView,u=void 0===c?{}:c,h=u.model&&t.getView(u.model),f=s.componentTypes||a&&a.get('DomComponents').getTypes(),d=t.get('type')||'default',p=this.compView,g=0;g1&&void 0!==arguments[1]?arguments[1]:{},r=n.previousModels,i=void 0===r?[]:r;this.parentEl.innerHTML='',i.forEach((function(t){return e.removeChildren(t,e.collection)})),t.each((function(t){return e.addToCollection(t)}))},render:function(t){var e=this,n=this.el,r=document.createDocumentFragment();return this.parentEl=t||this.el,this.collection.each((function(t){return e.addToCollection(t,r)})),n.innerHTML='',n.appendChild(r),this}})},3345:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var r=n(4942),i=n(9050),o=n(6183);function s(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function a(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,i.isString)(e)&&(e=l(e));var r=this.getStyle(n),s=a({},e);this.set('style',s,n);var c=(0,o.shallowDiff)(r,s);return(0,i.keys)(c).forEach((function(e){var r=t.em;n.noEvent||(t.trigger("change:style:".concat(e)),r&&(r.trigger("styleable:change",t,e,n),r.trigger("styleable:change:".concat(e),t,e,n)))})),s},addStyle:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'',n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};'string'==typeof t?t={prop:e}:n=e||{},t=this.extendStyle(t),this.setStyle(t,n)},removeStyle:function(t){var e=this.getStyle();delete e[t],this.setStyle(e)},styleToString:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=[],n=this.getStyle(t);for(var r in n){var o=t.important,s=(0,i.isArray)(o)?o.indexOf(r)>=0:o,a="".concat(n[r]).concat(s?' !important':''),l='__'==r.substr(0,2);a&&!l&&e.push("".concat(r,":").concat(a,";"))}return e.join('')},getSelectors:function(){return this.get('selectors')||this.get('classes')},getSelectorsString:function(t){return this.selectorsToString?this.selectorsToString(t):this.getSelectors().getFullString()},_validate:function(t,e){var n,r=t.style,o=this.em||e.em,s=null==o||null===(n=o.get('CssComposer'))||void 0===n?void 0:n.getConfig().onBeforeStyle;if(r&&s){var l=s(a({},r));l&&(0,i.keys)(r).map((function(e){(0,i.isUndefined)(l[e])&&delete t.style[e]})),l&&(0,i.keys)(l).map((function(e){t.style[e]=l[e]}))}return!0}}},793:(t,e,n)=>{"use strict";n.d(e,{Z:()=>h});var r=n(4942),i=n(9050),o=n(2316),s=n.n(o);function a(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function l(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},r=n.em;this.em=r,this.opts=n,this.model=function(){var t,n,i,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(o&&o.type){var a=e.getBaseType();t=(i=e.getType(o.type))?i.model:a.model,n=i?i.view:a.view}else{var c=e.recognizeType(o);t=(i=c.type).model,n=i.view,o=c.attributes}var u=new t(o,l(l({},s),{},{em:r}));return u.typeView=n,u};var i=this.init&&this.init.bind(this);i&&i()},recognizeType:function(t){for(var e=this.getTypes(),n=0;n{"use strict";n.d(e,{Z:()=>s});var r=n(2316),i=n.n(r),o=i().$;const s=i().View.extend({events:{change:'handleChange'},template:function(){return"")},inputClass:function(){return"".concat(this.ppfx,"field")},holderClass:function(){return"".concat(this.ppfx,"input-holder")},initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.ppfx||'';this.opts=t,this.ppfx=e,this.em=t.target||{},!t.onChange&&this.listenTo(this.model,'change:value',this.handleModelChange)},elementUpdated:function(){this.model.trigger('el:change')},setValue:function(t){var e=this.model,n=t||e.get('defaults'),r=this.getInputEl();r&&(r.value=n)},handleModelChange:function(t,e,n){this.setValue(e,n)},handleChange:function(t){t.stopPropagation();var e=this.getInputEl().value;this.__onInputChange(e),this.elementUpdated()},__onInputChange:function(t){this.model.set({value:t},{fromInput:1})},getInputEl:function(){if(!this.inputEl){var t=this.model,e=this.opts.type||'text',n=t.get('placeholder')||t.get('defaults')||t.get('default')||'';this.inputEl=o(""))}return this.inputEl.get(0)},render:function(){this.inputEl=null;var t=this.$el;return t.addClass(this.inputClass()),t.html(this.template()),t.find(".".concat(this.holderClass())).append(this.getInputEl()),this}})},1511:(t,e,n)=>{"use strict";n.d(e,{Z:()=>p});var r=n(4942),i=n(2316),o=n.n(i),s=n(9050),a=n(1002),l=n(6183);var c=n(8659);function u(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function h(t){for(var e=1;e","
","
▼
",'
'].join(''),c=function(){var t='';if(i)for(var e=1;e<=6;e++)t+="
";return["
","
","
","
","",'
','
',"
","
","
","
","
","
","
","
",'
','
','
',"
",'
',"
","
",t,'
','
',"
",'
',"
","",'
',"
","
","","",'
','
','
'].join('')}(),u='spectrum.id';t.fn.spectrum=function(e,n){if('string'==typeof e){var i=this,o=Array.prototype.slice.call(arguments,1);return this.each((function(){var n=r[t(this).data(u)];if(n){var s=n[e];if(!s)throw new Error("Spectrum: no such method: '"+e+"'");'get'==e?i=n.get():'container'==e?i=n.container:'option'==e?i=n.option.apply(n,o):'destroy'==e?(n.destroy(),t(this).removeData(u)):s.apply(n,o)}})),i}return this.spectrum('destroy').each((function(){var n=_(this,t.extend({},e,t(this).data()));t(this).data(u,n.id)}))},t.fn.spectrum.load=!0,t.fn.spectrum.loadOpts={},t.fn.spectrum.draggable=D,t.fn.spectrum.defaults=n,t.fn.spectrum.inputTypeColorSupport=function e(){if(void 0===e._cachedResult){var n=t("")[0];e._cachedResult='color'===n.type&&''!==n.value}return e._cachedResult},t.spectrum={},t.spectrum.localization={},t.spectrum.palettes={},t.fn.spectrum.processNativeColorInputs=function(){var e=t('input[type=color]');e.length&&!M()&&e.spectrum({preferredFormat:'hex6'})};var h=/^[\s,#]+/,f=/\s+$/,d=0,p=Math,g=p.round,v=p.min,m=p.max,y=p.random,b=function t(e,n){if(n=n||{},(e=e||'')instanceof t)return e;if(!(this instanceof t))return new t(e,n);var r=function(t){var e={r:0,g:0,b:0},n=1,r=!1,i=!1;'string'==typeof t&&(t=function(t){t=t.replace(h,'').replace(f,'').toLowerCase();var e,n=!1;if(C[t])t=C[t],n=!0;else if('transparent'==t)return{r:0,g:0,b:0,a:0,format:'name'};if(e=S.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=S.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=S.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=S.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=S.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=S.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=S.hex8.exec(t))return{a:nt(e[1]),r:Q(e[2]),g:Q(e[3]),b:Q(e[4]),format:n?'name':'hex8'};if(e=S.hex6.exec(t))return{r:Q(e[1]),g:Q(e[2]),b:Q(e[3]),format:n?'name':'hex'};if(e=S.hex3.exec(t))return{r:Q(e[1]+''+e[1]),g:Q(e[2]+''+e[2]),b:Q(e[3]+''+e[3]),format:n?'name':'hex'};return!1}(t));'object'==(0,a.Z)(t)&&(t.hasOwnProperty('r')&&t.hasOwnProperty('g')&&t.hasOwnProperty('b')?(o=t.r,s=t.g,l=t.b,e={r:255*J(o,255),g:255*J(s,255),b:255*J(l,255)},r=!0,i='%'===String(t.r).substr(-1)?'prgb':'rgb'):t.hasOwnProperty('h')&&t.hasOwnProperty('s')&&t.hasOwnProperty('v')?(t.s=et(t.s),t.v=et(t.v),e=function(t,e,n){t=6*J(t,360),e=J(e,100),n=J(n,100);var r=p.floor(t),i=t-r,o=n*(1-e),s=n*(1-i*e),a=n*(1-(1-i)*e),l=r%6;return{r:255*[n,s,o,o,a,n][l],g:255*[a,n,n,s,o,o][l],b:255*[o,o,a,n,n,s][l]}}(t.h,t.s,t.v),r=!0,i='hsv'):t.hasOwnProperty('h')&&t.hasOwnProperty('s')&&t.hasOwnProperty('l')&&(t.s=et(t.s),t.l=et(t.l),e=function(t,e,n){var r,i,o;function s(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}if(t=J(t,360),e=J(e,100),n=J(n,100),0===e)r=i=o=n;else{var a=n<.5?n*(1+e):n+e-n*e,l=2*n-a;r=s(l,a,t+1/3),i=s(l,a,t),o=s(l,a,t-1/3)}return{r:255*r,g:255*i,b:255*o}}(t.h,t.s,t.l),r=!0,i='hsl'),t.hasOwnProperty('a')&&(n=t.a));var o,s,l;return n=Y(n),{ok:r,format:t.format||i,r:v(255,m(e.r,0)),g:v(255,m(e.g,0)),b:v(255,m(e.b,0)),a:n}}(e);this._originalInput=e,this._r=r.r,this._g=r.g,this._b=r.b,this._a=r.a,this._roundA=g(100*this._a)/100,this._format=n.format||r.format,this._gradientType=n.gradientType,this._r<1&&(this._r=g(this._r)),this._g<1&&(this._g=g(this._g)),this._b<1&&(this._b=g(this._b)),this._ok=r.ok,this._tc_id=d++};b.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},setAlpha:function(t){return this._a=Y(t),this._roundA=g(100*this._a)/100,this},toHsv:function(){var t=L(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=L(this._r,this._g,this._b),e=g(360*t.h),n=g(100*t.s),r=g(100*t.v);return 1==this._a?'hsv('+e+', '+n+'%, '+r+'%)':'hsva('+e+', '+n+'%, '+r+'%, '+this._roundA+')'},toHsl:function(){var t=A(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=A(this._r,this._g,this._b),e=g(360*t.h),n=g(100*t.s),r=g(100*t.l);return 1==this._a?'hsl('+e+', '+n+'%, '+r+'%)':'hsla('+e+', '+n+'%, '+r+'%, '+this._roundA+')'},toHex:function(t){return R(this._r,this._g,this._b,t)},toHexString:function(t){return'#'+this.toHex(t)},toHex8:function(){return N(this._r,this._g,this._b,this._a)},toHex8String:function(){return'#'+this.toHex8()},toRgb:function(){return{r:g(this._r),g:g(this._g),b:g(this._b),a:this._a}},toRgbString:function(){return 1==this._a?'rgb('+g(this._r)+', '+g(this._g)+', '+g(this._b)+')':'rgba('+g(this._r)+', '+g(this._g)+', '+g(this._b)+', '+this._roundA+')'},toPercentageRgb:function(){return{r:g(100*J(this._r,255))+'%',g:g(100*J(this._g,255))+'%',b:g(100*J(this._b,255))+'%',a:this._a}},toPercentageRgbString:function(){return 1==this._a?'rgb('+g(100*J(this._r,255))+'%, '+g(100*J(this._g,255))+'%, '+g(100*J(this._b,255))+'%)':'rgba('+g(100*J(this._r,255))+'%, '+g(100*J(this._g,255))+'%, '+g(100*J(this._b,255))+'%, '+this._roundA+')'},toName:function(){return 0===this._a?'transparent':!(this._a<1)&&(k[R(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e='#'+N(this._r,this._g,this._b,this._a),n=e,r=this._gradientType?'GradientType = 1, ':'';t&&(n=b(t).toHex8String());return'progid:DXImageTransform.Microsoft.gradient('+r+'startColorstr='+e+',endColorstr='+n+')'},toString:function(t){var e=!!t;t=t||this._format;var n=!1,r=this._a<1&&this._a>=0;return e||!r||'hex'!==t&&'hex6'!==t&&'hex3'!==t&&'name'!==t?('rgb'===t&&(n=this.toRgbString()),'prgb'===t&&(n=this.toPercentageRgbString()),'hex'!==t&&'hex6'!==t||(n=this.toHexString()),'hex3'===t&&(n=this.toHexString(!0)),'hex8'===t&&(n=this.toHex8String()),'name'===t&&(n=this.toName()),'hsl'===t&&(n=this.toHslString()),'hsv'===t&&(n=this.toHsvString()),n||this.toHexString()):'name'===t&&0===this._a?this.toName():this.toRgbString()},_applyModification:function(t,e){var n=t.apply(null,[this].concat([].slice.call(e)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(V,arguments)},brighten:function(){return this._applyModification(H,arguments)},darken:function(){return this._applyModification(B,arguments)},desaturate:function(){return this._applyModification(Z,arguments)},saturate:function(){return this._applyModification(I,arguments)},greyscale:function(){return this._applyModification(F,arguments)},spin:function(){return this._applyModification(z,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(G,arguments)},complement:function(){return this._applyCombination(U,arguments)},monochromatic:function(){return this._applyCombination(K,arguments)},splitcomplement:function(){return this._applyCombination(q,arguments)},triad:function(){return this._applyCombination(W,arguments)},tetrad:function(){return this._applyCombination($,arguments)}},b.fromRatio=function(t,e){if('object'==(0,a.Z)(t)){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]='a'===r?t[r]:et(t[r]));t=n}return b(t,e)},b.equals=function(t,e){return!(!t||!e)&&b(t).toRgbString()==b(e).toRgbString()},b.random=function(){return b.fromRatio({r:y(),g:y(),b:y()})},b.mix=function(t,e,n){n=0===n?0:n||50;var r,i=b(t).toRgb(),o=b(e).toRgb(),s=n/100,a=2*s-1,l=o.a-i.a,c=1-(r=((r=a*l==-1?a:(a+l)/(1+a*l))+1)/2),u={r:o.r*r+i.r*c,g:o.g*r+i.g*c,b:o.b*r+i.b*c,a:o.a*s+i.a*(1-s)};return b(u)},b.readability=function(t,e){var n=b(t),r=b(e),i=n.toRgb(),o=r.toRgb(),s=n.getBrightness(),a=r.getBrightness(),l=Math.max(i.r,o.r)-Math.min(i.r,o.r)+Math.max(i.g,o.g)-Math.min(i.g,o.g)+Math.max(i.b,o.b)-Math.min(i.b,o.b);return{brightness:Math.abs(s-a),color:l}},b.isReadable=function(t,e){var n=b.readability(t,e);return n.brightness>125&&n.color>500},b.mostReadable=function(t,e){for(var n=null,r=0,i=!1,o=0;o125&&s.color>500,l=s.brightness/125*3+s.color/500;(a&&!i||a&&i&&l>r||!a&&!i&&l>r)&&(i=a,r=l,n=b(e[o]))}return n};var w,x,O,C=b.names={aliceblue:'f0f8ff',antiquewhite:'faebd7',aqua:'0ff',aquamarine:'7fffd4',azure:'f0ffff',beige:'f5f5dc',bisque:'ffe4c4',black:'000',blanchedalmond:'ffebcd',blue:'00f',blueviolet:'8a2be2',brown:'a52a2a',burlywood:'deb887',burntsienna:'ea7e5d',cadetblue:'5f9ea0',chartreuse:'7fff00',chocolate:'d2691e',coral:'ff7f50',cornflowerblue:'6495ed',cornsilk:'fff8dc',crimson:'dc143c',cyan:'0ff',darkblue:'00008b',darkcyan:'008b8b',darkgoldenrod:'b8860b',darkgray:'a9a9a9',darkgreen:'006400',darkgrey:'a9a9a9',darkkhaki:'bdb76b',darkmagenta:'8b008b',darkolivegreen:'556b2f',darkorange:'ff8c00',darkorchid:'9932cc',darkred:'8b0000',darksalmon:'e9967a',darkseagreen:'8fbc8f',darkslateblue:'483d8b',darkslategray:'2f4f4f',darkslategrey:'2f4f4f',darkturquoise:'00ced1',darkviolet:'9400d3',deeppink:'ff1493',deepskyblue:'00bfff',dimgray:'696969',dimgrey:'696969',dodgerblue:'1e90ff',firebrick:'b22222',floralwhite:'fffaf0',forestgreen:'228b22',fuchsia:'f0f',gainsboro:'dcdcdc',ghostwhite:'f8f8ff',gold:'ffd700',goldenrod:'daa520',gray:'808080',green:'008000',greenyellow:'adff2f',grey:'808080',honeydew:'f0fff0',hotpink:'ff69b4',indianred:'cd5c5c',indigo:'4b0082',ivory:'fffff0',khaki:'f0e68c',lavender:'e6e6fa',lavenderblush:'fff0f5',lawngreen:'7cfc00',lemonchiffon:'fffacd',lightblue:'add8e6',lightcoral:'f08080',lightcyan:'e0ffff',lightgoldenrodyellow:'fafad2',lightgray:'d3d3d3',lightgreen:'90ee90',lightgrey:'d3d3d3',lightpink:'ffb6c1',lightsalmon:'ffa07a',lightseagreen:'20b2aa',lightskyblue:'87cefa',lightslategray:'789',lightslategrey:'789',lightsteelblue:'b0c4de',lightyellow:'ffffe0',lime:'0f0',limegreen:'32cd32',linen:'faf0e6',magenta:'f0f',maroon:'800000',mediumaquamarine:'66cdaa',mediumblue:'0000cd',mediumorchid:'ba55d3',mediumpurple:'9370db',mediumseagreen:'3cb371',mediumslateblue:'7b68ee',mediumspringgreen:'00fa9a',mediumturquoise:'48d1cc',mediumvioletred:'c71585',midnightblue:'191970',mintcream:'f5fffa',mistyrose:'ffe4e1',moccasin:'ffe4b5',navajowhite:'ffdead',navy:'000080',oldlace:'fdf5e6',olive:'808000',olivedrab:'6b8e23',orange:'ffa500',orangered:'ff4500',orchid:'da70d6',palegoldenrod:'eee8aa',palegreen:'98fb98',paleturquoise:'afeeee',palevioletred:'db7093',papayawhip:'ffefd5',peachpuff:'ffdab9',peru:'cd853f',pink:'ffc0cb',plum:'dda0dd',powderblue:'b0e0e6',purple:'800080',rebeccapurple:'663399',red:'f00',rosybrown:'bc8f8f',royalblue:'4169e1',saddlebrown:'8b4513',salmon:'fa8072',sandybrown:'f4a460',seagreen:'2e8b57',seashell:'fff5ee',sienna:'a0522d',silver:'c0c0c0',skyblue:'87ceeb',slateblue:'6a5acd',slategray:'708090',slategrey:'708090',snow:'fffafa',springgreen:'00ff7f',steelblue:'4682b4',tan:'d2b48c',teal:'008080',thistle:'d8bfd8',tomato:'ff6347',turquoise:'40e0d0',violet:'ee82ee',wheat:'f5deb3',white:'fff',whitesmoke:'f5f5f5',yellow:'ff0',yellowgreen:'9acd32'},k=b.hexNames=function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[t[n]]=n);return e}(C),S=(x='[\\s|\\(]+('+(w="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+')[,|\\s]+('+w+')[,|\\s]+('+w+')\\s*\\)?',O='[\\s|\\(]+('+w+')[,|\\s]+('+w+')[,|\\s]+('+w+')[,|\\s]+('+w+')\\s*\\)?',{rgb:new RegExp('rgb'+x),rgba:new RegExp('rgba'+O),hsl:new RegExp('hsl'+x),hsla:new RegExp('hsla'+O),hsv:new RegExp('hsv'+x),hsva:new RegExp('hsva'+O),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});window.tinycolor=b,t((function(){t.fn.spectrum.load&&t.fn.spectrum.processNativeColorInputs()}))}function P(e,n,r,i){for(var s=[],a=0;a')}else{s.push(t('
').append(t("").attr('title',i.noColorSelectedText)).html())}}return"
"+s.join('')+'
'}function _(a,l){var u,h,f,d,p=function(e,r){var i=t.extend({},n,e);return i.callbacks={move:j(i.move,r),change:j(i.change,r),show:j(i.show,r),hide:j(i.hide,r),beforeShow:j(i.beforeShow,r)},i}(l,a),g=p.flat,v=p.showSelectionPalette,m=p.localStorageKey,y=p.theme,w=p.callbacks,x=(u=Wt,h=10,function(){var t=this,e=arguments,n=function(){d=null,u.apply(t,e)};f&&clearTimeout(d),!f&&d||(d=setTimeout(n,h))}),O=!1,C=!1,k=!0,S=0,_=0,T=0,A=0,L=0,R=0,N=0,Z=0,I=0,F=0,V=1,H=[],B=[],z={},U=p.selectionPalette.slice(0),W=p.maxSelectionSize,$='sp-dragging',q=null,G=a.ownerDocument,K=(G.body,t(a)),Y=!1,J=t(c,G).addClass(y),X=J.find('.sp-picker-container'),Q=J.find('.sp-color'),tt=J.find('.sp-dragger'),et=J.find('.sp-hue'),nt=J.find('.sp-slider'),rt=J.find('.sp-alpha-inner'),it=J.find('.sp-alpha'),ot=J.find('.sp-alpha-handle'),st=J.find('.sp-input'),at=J.find('.sp-palette'),lt=J.find('.sp-initial'),ct=J.find('.sp-cancel'),ut=J.find('.sp-clear'),ht=J.find('.sp-choose'),ft=J.find('.sp-palette-toggle'),dt=K.is('input'),pt=dt&&'color'===K.attr('type')&&M(),gt=dt&&!g,vt=gt?t(s).addClass(y).addClass(p.className).addClass(p.replacerClassName):t([]),mt=gt?vt:K,yt=vt.find('.sp-preview-inner'),bt=p.color||dt&&K.val(),wt=!1,xt=p.preferredFormat,Ot=!p.showButtons||p.clickoutFiresChange,Ct=!bt,kt=p.allowEmpty&&!pt;function St(){if(p.showPaletteOnly&&(p.showPalette=!0),ft.text(p.showPaletteOnly?p.togglePaletteMoreText:p.togglePaletteLessText),p.palette){H=p.palette.slice(0),B=t.isArray(H[0])?H:[H],z={};for(var e=0;e1&&(delete window.localStorage[m],t.each(e,(function(t,e){_t(e)})))}catch(t){}try{U=window.localStorage[m].split(';')}catch(t){}}}function _t(e){if(v){var n=b(e).toRgbString();if(!z[n]&&-1===t.inArray(n,U))for(U.push(n);U.length>W;)U.shift();if(m&&window.localStorage)try{window.localStorage[m]=U.join(';')}catch(t){}}}function Tt(){var e=Vt(),n=t.map(B,(function(t,n){return P(t,e,'sp-palette-row sp-palette-row-'+n,p)}));Pt(),U&&n.push(P(function(){var t=[];if(p.showPalette)for(var e=0;ed&&d>i?Math.abs(g.left+i-d):0),g.top-=Math.min(g.top,g.top+o>p&&p>o?Math.abs(o+s-r):r),g}(J,mt))),zt(),p.showPalette&&Tt(),K.trigger('reflow.spectrum'))}function $t(){Zt(),Y=!0,K.attr('disabled',!0),mt.addClass('sp-disabled')}!function(){if(i&&J.find('*:not(input)').attr('unselectable','on'),St(),gt&&K.after(vt).hide(),kt||ut.hide(),g)K.after(J).hide();else{var e='parent'===p.appendTo?K.parent():t(p.appendTo);1!==e.length&&(e=t('body')),e.append(J)}function n(e){return e.data&&e.data.ignore?(Ft(t(e.target).closest('.sp-thumb-el').data('color')),Ht()):(Ft(t(e.target).closest('.sp-thumb-el').data('color')),Ht(),p.hideAfterPaletteSelect&&(Ut(!0),Zt())),!1}Pt(),mt.bind('click.spectrum touchstart.spectrum',(function(e){Y||At(),e.stopPropagation(),t(e.target).is('input')||e.preventDefault()})),(K.is(':disabled')||!0===p.disabled)&&$t(),J.click(E),st.change(Mt),st.bind('paste',(function(){setTimeout(Mt,1)})),st.keydown((function(t){13==t.keyCode&&Mt()})),ct.text(p.cancelText),ct.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),It(),Zt()})),ut.attr('title',p.clearText),ut.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),Ct=!0,Ht(),g&&Ut(!0)})),ht.text(p.chooseText),ht.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),i&&st.is(':focus')&&st.trigger('change'),st.hasClass('sp-validation-error')||(Ut(!0),Zt())})),ft.text(p.showPaletteOnly?p.togglePaletteMoreText:p.togglePaletteLessText),ft.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),p.showPaletteOnly=!p.showPaletteOnly,p.showPaletteOnly||g||J.css('left','-='+(X.outerWidth(!0)+5)),St()})),D(it,(function(t,e,n){V=t/L,Ct=!1,n.shiftKey&&(V=Math.round(10*V)/10),Ht()}),jt,Dt),D(et,(function(t,e){Z=parseFloat(e/A),Ct=!1,p.showAlpha||(V=1),Ht()}),jt,Dt),D(Q,(function(t,e,n){if(n.shiftKey){if(!q){var r=I*S,i=_-F*_,o=Math.abs(t-r)>Math.abs(e-i);q=o?'x':'y'}}else q=null;var s=!q||'y'===q;(!q||'x'===q)&&(I=parseFloat(t/S)),s&&(F=parseFloat((_-e)/_)),Ct=!1,p.showAlpha||(V=1),Ht()}),jt,Dt),bt?(Ft(bt),Bt(),xt=p.preferredFormat||b(bt).getFormat(),_t(bt)):Bt(),g&&Lt();var r=i?'mousedown.spectrum':'click.spectrum touchstart.spectrum';at.delegate('.sp-thumb-el',r,n),lt.delegate('.sp-thumb-el:nth-child(1)',r,{ignore:!0},n)}();var qt={show:Lt,hide:Zt,toggle:At,reflow:Wt,option:function(n,r){return n===e?t.extend({},p):r===e?p[n]:(p[n]=r,'preferredFormat'===n&&(xt=p.preferredFormat),void St())},enable:function(){Y=!1,K.attr('disabled',!1),mt.removeClass('sp-disabled')},disable:$t,offset:function(t){p.offset=t,Wt()},set:function(t){Ft(t),Ut()},get:Vt,destroy:function(){K.show(),mt.unbind('click.spectrum touchstart.spectrum'),J.remove(),vt.remove(),r[qt.id]=null},container:J};return qt.id=r.push(qt)-1,qt}function T(){}function E(t){t.stopPropagation()}function j(t,e){var n=Array.prototype.slice,r=n.call(arguments,2);return function(){return t.apply(e,r.concat(n.call(arguments)))}}function D(e,n,r,o){n=n||function(){},r=r||function(){},o=o||function(){};var s=document,a=!1,l={},c=0,u=0,h='ontouchstart'in window,f={};function d(t){t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),t.returnValue=!1}function p(t){if(a){if(i&&s.documentMode<9&&!t.button)return g();var r=t&&t.touches&&t.touches[0],o=r&&r.pageX||t.pageX,f=r&&r.pageY||t.pageY,p=Math.max(0,Math.min(o-l.left,u)),v=Math.max(0,Math.min(f-l.top,c));h&&d(t),n.apply(e,[p,v,t])}}function g(){a&&(t(s).unbind(f),t(s.body).removeClass('sp-dragging'),setTimeout((function(){o.apply(e,arguments)}),0)),a=!1}f.selectstart=d,f.dragstart=d,f['touchmove mousemove']=p,f['touchend mouseup']=g,t(e).bind('touchstart mousedown',(function(n){var i=n.which?3==n.which:2==n.button;i||a||!1!==r.apply(e,arguments)&&(a=!0,c=t(e).height(),u=t(e).width(),l=t(e).offset(),t(s).bind(f),t(s.body).addClass('sp-dragging'),p(n),d(n))}))}function M(){return t.fn.spectrum.inputTypeColorSupport()}function A(t,e,n){t=J(t,255),e=J(e,255),n=J(n,255);var r,i,o=m(t,e,n),s=v(t,e,n),a=(o+s)/2;if(o==s)r=i=0;else{var l=o-s;switch(i=a>.5?l/(2-o-s):l/(o+s),o){case t:r=(e-n)/l+(e>1)+720)%360;--e;)r.h=(r.h+i)%360,o.push(b(r));return o}function K(t,e){e=e||6;for(var n=b(t).toHsv(),r=n.h,i=n.s,o=n.v,s=[],a=1/e;e--;)s.push(b({h:r,s:i,v:o})),o=(o+a)%1;return s}function Y(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function J(t,e){(function(t){return'string'==typeof t&&-1!=t.indexOf('.')&&1===parseFloat(t)})(t)&&(t='100%');var n=function(t){return'string'==typeof t&&-1!=t.indexOf('%')}(t);return t=v(e,m(0,parseFloat(t))),n&&(t=parseInt(t*e,10)/100),p.abs(t-e)<1e-6?1:t%e/parseFloat(e)}function X(t){return v(1,m(0,t))}function Q(t){return parseInt(t,16)}function tt(t){return 1==t.length?'0'+t:''+t}function et(t){return t<=1&&(t=100*t+'%'),t}function nt(t){return Q(t)/255}}(f);var d=function(t){var e='name'===t.getFormat()&&t.toName(),n=1==t.getAlpha()?t.toHexString():t.toRgbString();return e||n.replace(/ /g,'')};const p=c.Z.extend({template:function(){var t=this.ppfx;return"\n
\n
\n
\n
\n
\n
\n ")},inputClass:function(){var t=this.ppfx;return"".concat(t,"field ").concat(t,"field-color")},holderClass:function(){return"".concat(this.ppfx,"input-holder")},remove:function(){c.Z.prototype.remove.apply(this,arguments),this.colorEl.spectrum('destroy')},handleChange:function(t){t.stopPropagation();var e=t.target.value;(0,s.isUndefined)(e)||this.__onInputChange(e)},__onInputChange:function(t){var e=this.model,n=this.opts.onChange,r=t,i=this.getColorEl();if(i){i.spectrum('set',r);var o=i.spectrum('get'),s=r&&d(o);s&&(r=s)}n?n(r):e.set({value:r},{fromInput:1})},setValue:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.model,r=(0,s.isUndefined)(e.def)?n.get('defaults'):e.def,i=(0,s.isUndefined)(t)?(0,s.isUndefined)(r)?'':r:t,o=this.getInputEl(),a=this.getColorEl(),l='none'!=i?i:'';o.value=i,a.get(0).style.backgroundColor=l,(e.fromTarget||e.fromInput&&!e.avoidStore)&&(a.spectrum('set',l),this.noneColor='none'==i)},getColorEl:function(){if(!this.colorEl){var t,e=this.em,n=this.model,r=this.opts,i=this,o=this.ppfx,s=r.onChange,a=f("
")),l=a.get(0).style,c=e&&e.config?e.config.el:'',u=e&&e.getConfig&&e.getConfig('colorPicker')||{},p=0;this.$el.find("[data-colorp-c]").append(a),a.spectrum(h(h(h({color:n.getValue()||!1,containerClassName:"".concat(o,"one-bg ").concat(o,"two-color"),appendTo:c||'body',maxSelectionSize:8,showPalette:!0,showAlpha:!0,chooseText:'Ok',cancelText:'⨯',palette:[]},u),n.get('colorPicker')||{}),{},{move:function(t){var e=d(t);l.backgroundColor=e,s?s(e,!0):n.setValueFromInput(e,0)},change:function(t){p=1;var e=d(t);l.backgroundColor=e,s?s(e):(n.setValueFromInput(0,0),n.setValueFromInput(e)),i.noneColor=0},show:function(e){p=0,t=s?n.getValue({noDefault:!0}):d(e)},hide:function(e){p||!t&&!s||(i.noneColor&&(t=''),l.backgroundColor=t,a.spectrum('set',t),s?s(t,!0):n.setValueFromInput(t,0))}})),e&&e.on&&this.listenTo(e,'component:selected',(function(){p=1,a.spectrum('hide')})),this.colorEl=a}return this.colorEl},render:function(){return c.Z.prototype.render.call(this),this.getColorEl(),this}})},7610:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(2316),i=n.n(r),o=n(9050),s=n(6183),a=n(8659);i().$;const l=a.Z.extend({events:{'change input':'handleChange','change select':'handleUnitChange','click [data-arrow-up]':'upArrowClick','click [data-arrow-down]':'downArrowClick','mousedown [data-arrows]':'downIncrement',keydown:'handleKeyDown'},template:function(){var t=this.ppfx;return"\n \n \n
\n
\n
\n
\n ")},inputClass:function(){var t=this.ppfx;return this.opts.contClass||"".concat(t,"field ").concat(t,"field-integer")},initialize:function(){a.Z.prototype.initialize.apply(this,arguments),(0,o.bindAll)(this,'moveIncrement','upIncrement'),this.doc=document,this.listenTo(this.model,'change:unit',this.handleModelChange)},setValue:function(t,e){var n=e||{},r=this.validateInputValue(t,{deepCheck:1}),i={value:r.value};(r.unit||r.force)&&(i.unit=r.unit),this.model.set(i,n),n.silent&&this.handleModelChange()},handleChange:function(t){t.stopPropagation(),this.setValue(this.getInputEl().value),this.elementUpdated()},handleUnitChange:function(t){t.stopPropagation();var e=this.getUnitEl().value;this.model.set('unit',e),this.elementUpdated()},handleKeyDown:function(t){'ArrowUp'===t.key&&(t.preventDefault(),this.upArrowClick()),'ArrowDown'===t.key&&(t.preventDefault(),this.downArrowClick())},elementUpdated:function(){this.model.trigger('el:change')},handleModelChange:function(){var t=this.model;this.getInputEl().value=t.get('value');var e=this.getUnitEl();e&&(e.value=t.get('unit')||'')},getUnitEl:function(){if(!this.unitEl){var t=this.model,e=t.get('units')||[];if(e.length){var n=[''];e.forEach((function(e){var r=e==t.get('unit')?'selected':'';n.push(""))}));var r=document.createElement('div');r.innerHTML=""),this.unitEl=r.firstChild}}return this.unitEl},upArrowClick:function(){var t=this.model,e=t.get('step'),n=parseFloat(t.get('value'));this.setValue(this.normalizeValue(n+e)),this.elementUpdated()},downArrowClick:function(){var t=this.model,e=t.get('step'),n=parseFloat(t.get('value'));this.setValue(this.normalizeValue(n-e)),this.elementUpdated()},downIncrement:function(t){t.preventDefault(),this.moved=0;var e=this.model.get('value')||0;e=this.normalizeValue(e),this.current={y:t.pageY,val:e},(0,s.on)(this.doc,'mousemove',this.moveIncrement),(0,s.on)(this.doc,'mouseup',this.upIncrement)},moveIncrement:function(t){this.moved=1;var e=this.model,n=e.get('step'),r=this.current,i=this.normalizeValue(r.val+(r.y-t.pageY)*n),o=this.validateInputValue(i),s=o.value,a=o.unit;return this.prValue=s,e.set({value:s,unit:a},{avoidStore:1}),!1},upIncrement:function(){var t=this.model,e=t.get('step');if((0,s.off)(this.doc,'mouseup',this.upIncrement),(0,s.off)(this.doc,'mousemove',this.moveIncrement),this.prValue&&this.moved){var n=this.prValue-e;t.set('value',n,{avoidStore:1}).set('value',n+e),this.elementUpdated()}},normalizeValue:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.model,r=n.get('step'),i=0;if(isNaN(t))return e;if(t=parseFloat(t),Math.floor(t)!==t){var o=r.toString().split('.')[1];i=o?o.length:0}return i?parseFloat(t.toFixed(i)):t},validateInputValue:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=0,r=e||{},i=this.model,s='',a=(0,o.isUndefined)(t)?s:t,l=e.units||i.get('units')||[],c=i.get('unit')||l.length&&l[0]||'',u=(0,o.isUndefined)(e.max)?i.get('max'):e.max,h=(0,o.isUndefined)(e.min)?i.get('min'):e.min,f=!!i.get('limitlessMax'),d=!!i.get('limitlessMin');if(r.deepCheck){var p=i.get('fixedValues')||[];if(''===a&&(c=''),a){var g=new RegExp('^'+p.join('|'),'g');if(p.length&&g.test(a))a=a.match(g)[0],c='',n=1;else{var v=a+'';a+='',a=parseFloat(a.replace(',','.')),a=isNaN(a)?s:a;var m=v.replace(a,'');(0,o.indexOf)(l,m)>=0&&(c=m)}}}return f||(0,o.isUndefined)(u)||''===u||(a=a>u?u:a),d||(0,o.isUndefined)(h)||''===h||(a=a{"use strict";n.d(e,{Z:()=>s});var r=n(9050),i=n(2316),o=n.n(i);const s=o().View.extend({itemView:'',itemsView:'',itemType:'type',autoAdd:0,initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;this.config=e||t.config||{},this.autoAdd&&this.listenTo(this.collection,'add',this.addTo),this.items=[],this.init()},init:function(){},addTo:function(t){this.add(t)},itemViewNotFound:function(t){var e=this.config,n=this.ns,r=e.em,i="".concat(n?"[".concat(n,"]: "):'',"'").concat(t,"' type not found");r&&r.logWarning(i)},add:function(t,e){var n,i=this.config,o=this.reuseView,s=this.items,a=this.itemsView,l=void 0===a?{}:a,c=e||null,u=this.itemView,h=t.get(this.itemType);l[h]?u=l[h]:!h||l[h]||(0,r.includes)(['button','checkbox','color','date','datetime-local','email','file','hidden','image','month','number','password','radio','range','reset','search','submit','tel','text','time','url','week'],h)||this.itemViewNotFound(h),n=t.view&&o?t.view:new u({model:t,config:i},i),s&&s.push(n);var f=n.render().el;c?c.appendChild(f):this.$el.append(f)},render:function(){var t=document.createDocumentFragment();return this.clearItems(),this.$el.empty(),this.collection.length&&this.collection.each((function(e){this.add(e,t)}),this),this.$el.append(t),this.onRender(),this},onRender:function(){},onRemoveBefore:function(){},onRemove:function(){},remove:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.items;this.onRemoveBefore(e,t),this.clearItems(),o().View.prototype.remove.apply(this,arguments),this.onRemove(e,t)},clearItems:function(){this.items}})},4836:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>d});var r=n(4942),i=n(1002),o=n(9050),s=n(6183),a={placeholder:'eg. Text here'};const l={locale:'en',localeFallback:'en',detectLocale:!0,debug:!1,messages:{en:{assetManager:{addButton:'Add image',inputPlh:'http://path/to/the/image.jpg',modalTitle:'Select Image',uploadTitle:'Drop files here or click to upload'},blockManager:{labels:{},categories:{}},domComponents:{names:{'':'Box',wrapper:'Body',text:'Text',comment:'Comment',image:'Image',video:'Video',label:'Label',link:'Link',map:'Map',tfoot:'Table foot',tbody:'Table body',thead:'Table head',table:'Table',row:'Table row',cell:'Table cell'}},deviceManager:{device:'Device',devices:{desktop:'Desktop',tablet:'Tablet',mobileLandscape:'Mobile Landscape',mobilePortrait:'Mobile Portrait'}},panels:{buttons:{titles:{preview:'Preview',fullscreen:'Fullscreen','sw-visibility':'View components','export-template':'View code','open-sm':'Open Style Manager','open-tm':'Settings','open-layers':'Open Layer Manager','open-blocks':'Open Blocks'}}},selectorManager:{label:'Classes',selected:'Selected',emptyState:'- State -',states:{hover:'Hover',active:'Click','nth-of-type(2n)':'Even/Odd'}},styleManager:{empty:'Select an element before using Style Manager',layer:'Layer',fileButton:'Images',sectors:{general:'General',layout:'Layout',typography:'Typography',decorations:'Decorations',extra:'Extra',flex:'Flex',dimension:'Dimension'},properties:{'text-shadow-h':'X','text-shadow-v':'Y','text-shadow-blur':'Blur','text-shadow-color':'Color','box-shadow-h':'X','box-shadow-v':'Y','box-shadow-blur':'Blur','box-shadow-spread':'Spread','box-shadow-color':'Color','box-shadow-type':'Type','margin-top-sub':'Top','margin-right-sub':'Right','margin-bottom-sub':'Bottom','margin-left-sub':'Left','padding-top-sub':'Top','padding-right-sub':'Right','padding-bottom-sub':'Bottom','padding-left-sub':'Left','border-width-sub':'Width','border-style-sub':'Style','border-color-sub':'Color','border-top-left-radius-sub':'Top Left','border-top-right-radius-sub':'Top Right','border-bottom-right-radius-sub':'Bottom Right','border-bottom-left-radius-sub':'Bottom Left','transform-rotate-x':'Rotate X','transform-rotate-y':'Rotate Y','transform-rotate-z':'Rotate Z','transform-scale-x':'Scale X','transform-scale-y':'Scale Y','transform-scale-z':'Scale Z','transition-property-sub':'Property','transition-duration-sub':'Duration','transition-timing-function-sub':'Timing','background-image-sub':'Image','background-repeat-sub':'Repeat','background-position-sub':'Position','background-attachment-sub':'Attachment','background-size-sub':'Size'}},traitManager:{empty:'Select an element before using Trait Manager',label:'Component settings',traits:{labels:{},attributes:{id:a,alt:a,title:a,href:{placeholder:'eg. https://google.com'}},options:{target:{false:'This window',_blank:'New window'}}}}}},messagesAdd:null};function c(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function u(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.config=u(u(u({},l),t),{},{messages:u(u({},l.messages),t.messages||{})});var e=this.config.messagesAdd;return e&&this.addMessages(e),this.config.detectLocale&&(this.config.locale=this._localLang()),this.em=t.em,this},getConfig:function(){return this.config},setLocale:function(t){var e=this.em,n=this.config,r={value:t,valuePrev:n.locale};return e&&e.trigger('i18n:locale',r),n.locale=t,this},getLocale:function(){return this.config.locale},getMessages:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.config.messages;return t&&!n[t]&&this._debug("'".concat(t,"' i18n lang not found"),e),t?n[t]:n},setMessages:function(t){var e=this.em;return this.config.messages=t,e&&e.trigger('i18n:update',t),this},addMessages:function(t){var e=this.em,n=this.config.messages;return e&&e.trigger('i18n:add',t),this.setMessages(f(n,t)),this},t:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.config,r=e.params||{},i=e.l||this.getLocale(),s=e.lFlb||n.localeFallback,a=this._getMsg(t,i,e);return a||(a=this._getMsg(t,s,e)),!a&&this._debug("'".concat(t,"' i18n key not found in '").concat(i,"' lang"),e),a=a&&(0,o.isString)(a)?this._addParams(a,r):a},_localLang:function(){var t=(0,s.hasWin)()&&window.navigator||{},e=t.language||t.userLanguage;return e?e.split('-')[0]:'en'},_addParams:function(t,e){var n=new RegExp("{([\\w\\d-]*)}",'g');return t.replace(n,(function(t,n){return e[n]||''})).trim()},_getMsg:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.getMessages(e,n);if(r){var i=r[t];return!i&&t.indexOf('.')>0&&(i=t.split('.').reduce((function(t,e){if(!(0,o.isUndefined)(t))return t[e]}),r)),i}},_debug:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.em,r=this.config;(e.debug||r.debug)&&n&&n.logWarning(t)},destroy:function(){this.config=l,this.em={}}}}},9788:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>E});var r,i=n(1002),o=n(4942),s=n(9050),a=n(6183),l={},c={16:!1,18:!1,17:!1,91:!1},u='all',h={'⇧':16,shift:16,'⌥':18,alt:18,option:18,'⌃':17,ctrl:17,control:17,'⌘':91,command:91},f={backspace:8,tab:9,clear:12,enter:13,return:13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,delete:46,home:36,end:35,pageup:33,pagedown:34,',':188,'.':190,'/':191,'`':192,'-':189,'=':187,';':186,"'":222,'[':219,']':221,'\\':220},d=function(t){return f[t]||t.toUpperCase().charCodeAt(0)},p=[];for(r=1;r<20;r++)f['f'+r]=111+r;function g(t,e){for(var n=t.length;n--;)if(t[n]===e)return n;return-1}function v(t,e){if(t.length!=e.length)return!1;for(var n=0;n=0&&p.splice(r,1),93!=n&&224!=n||(n=91),n in c)for(e in c[n]=!1,h)h[e]==n&&(x[e]=!1)}function w(){for(r in c)c[r]=!1;for(r in h)x[r]=!1}function x(t,e,n){var r,i;r=C(t),void 0===n&&(n=e,e='all');for(var o=0;o1&&(i=k(t),t=[t[t.length-1]]),t=t[0],(t=d(t))in l||(l[t]=[]),l[t].push({shortcut:r[o],scope:e,method:n,key:r[o],mods:i})}for(r in h)x[r]=!1;function O(){return u||'all'}function C(t){var e;return''==(e=(t=t.replace(/\s/g,'')).split(','))[e.length-1]&&(e[e.length-2]+=','),e}function k(t){for(var e=t.slice(0,t.length-1),n=0;n1&&(a=k(r)),t=r[r.length-1],t=d(t),void 0===e&&(e=O()),!l[t])return;for(i=0;i0,c)(!c[r]&&g(n.mods,+r)>-1||c[r]&&-1==g(n.mods,+r))&&(o=!1);(0!=n.mods.length||c[16]||c[18]||c[17]||c[91])&&!o||!1===n.method(t,n)&&(t.preventDefault?t.preventDefault():t.returnValue=!1,t.stopPropagation&&t.stopPropagation(),t.cancelBubble&&(t.cancelBubble=!0))}}(t)})),S(t.document,'keyup',b),S(t,'focus',w)};const P=x;function _(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function T(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return this.config=T(T({},t),e),this.em=this.config.em,this.keymaps={},this},onLoad:function(){var t=this.config.defaults;for(var e in t){var n=t[e];this.add(e,n.keys,n.handler,n.opts||{})}},add:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=this.em,a=o.get('Commands'),l=o.getEditor(),c=o.get('Canvas'),u={id:t,keys:e,handler:n},h=this.keymaps[t];return h&&this.remove(t),this.keymaps[t]=u,P(e,(function(e,u){var h={event:e,h:u};if(n=(0,s.isString)(n)?a.get(n):n,!o.isEditing()&&!l.Canvas.isInputFocused()||r.force){r.prevent&&c.getCanvasView().preventDefault(e),'object'==(0,i.Z)(n)?a.runCommand(n,h):n(l,0,h);var f=[t,u.shortcut,e];o.trigger.apply(o,['keymap:emit'].concat(f)),o.trigger.apply(o,["keymap:emit:".concat(t)].concat(f))}})),o.trigger('keymap:add',u),u},get:function(t){return this.keymaps[t]},getAll:function(){return this.keymaps},remove:function(t){var e=this.em,n=this.get(t);if(n)return delete this.keymaps[t],n.keys.split(', ').forEach((function(t){return P.unbind(t.trim())})),e&&e.trigger('keymap:remove',n),n},removeAll:function(){var t=this;return Object.keys(this.keymaps).forEach((function(e){return t.remove(e)})),P.handlers={},this},destroy:function(){this.removeAll(),this.keymaps={},this.em={}}}}},2450:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>x});var r=n(4942),i=n(9050),o=n(9283);const s={stylePrefix:'mdl-',title:'',content:'',backdrop:!0,custom:!1,extend:{}};var a=n(5671),l=n(3144),c=n(9340),u=n(3930),h=n(1120),f=n(2316);function d(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,u.Z)(this,n)}}var p=function(t){(0,c.Z)(n,t);var e=d(n);function n(){return(0,a.Z)(this,n),e.apply(this,arguments)}return(0,l.Z)(n,[{key:"defaults",value:function(){return{title:'',content:'',attributes:{},open:!1}}},{key:"open",value:function(){this.set('open',!0)}},{key:"close",value:function(){this.set('open',!1)}}]),n}(f.Model);function g(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function v(t){for(var e=1;e\n
\n
").concat(i,"
\n
⨯
\n
\n
\n
").concat(r,"
\n
\n
\n
\n
")}},{key:"events",value:function(){return{click:'onClick','click [data-close-modal]':'hide'}}},{key:"initialize",value:function(t){var e=this.model,n=t.config||{},r=n.stylePrefix||'';this.config=n,this.pfx=r,this.ppfx=n.pStylePrefix||'',this.listenTo(e,'change:open',this.updateOpen),this.listenTo(e,'change:title',this.updateTitle),this.listenTo(e,'change:content',this.updateContent)}},{key:"onClick",value:function(t){this.config.backdrop&&t.target===this.el&&this.hide()}},{key:"getCollector",value:function(){return this.$collector||(this.$collector=this.$el.find('.'+this.pfx+'collector')),this.$collector}},{key:"getContent",value:function(){var t=this.pfx;return this.$content||(this.$content=this.$el.find(".".concat(t,"content #").concat(t,"c"))),this.$content}},{key:"getTitle",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.$title||(this.$title=this.$el.find('.'+this.pfx+'title')),t.$?this.$title:this.$title.get(0)}},{key:"updateContent",value:function(){var t=this.getContent(),e=t.children(),n=this.getCollector(),r=this.model.get('content');e.length&&n.append(e),t.empty().append(r)}},{key:"updateTitle",value:function(){var t=this.getTitle({$:!0});t&&t.empty().append(this.model.get('title'))}},{key:"updateOpen",value:function(){this.el.style.display=this.model.get('open')?'':'none'}},{key:"hide",value:function(){this.model.close()}},{key:"show",value:function(){this.model.open()}},{key:"updateAttr",value:function(t){var e=this.pfx,n=this.$el,r=this.el,i=[].slice.call(r.attributes).map((function(t){return t.name}));n.removeAttr(i.join(' ')),n.attr(v(v({},t||{}),{},{class:"".concat(e,"container ").concat(t&&t.class||'').trim()}))}},{key:"render",value:function(){var t=this.$el,e=this.model.toJSON();return e.pfx=this.pfx,e.ppfx=this.ppfx,t.html(this.template(e)),this.updateAttr(),this.updateOpen(),this}}]),n}(f.View);function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function w(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},a=(n=w(w({},s),o)).em;this.em=a;var l=n.pStylePrefix;return l&&(n.stylePrefix=l+n.stylePrefix),(t=new p(n)).on('change:open',(function(t,e){return r(e,a)})),t.on('change',(0,i.debounce)((function(){var t=e._evData(),n=e.getConfig().custom;(0,i.isFunction)(n)&&n(t),a.trigger('modal',t)}))),this},_evData:function(){var e=this,n=this.getTitle(),r=this.getContent(),s=t.attributes;return{open:s.open,attributes:s.attributes,title:(0,i.isString)(n)?(0,o.rw)(n):n,content:(0,i.isString)(r)?(0,o.rw)(r):r.get?r.get(0):r,close:function(){return e.close()}}},postRender:function(t){var e=t.model.getConfig().el||t.el,n=this.render();n&&n.appendTo(e)},open:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.attributes||{};return n.title&&this.setTitle(n.title),n.content&&this.setContent(n.content),t.set('attributes',r),t.open(),e&&e.updateAttr(r),this},close:function(){return t.close(),this},onceClose:function(t){return this.em.once('modal:close',t),this},onceOpen:function(t){return this.em.once('modal:open',t),this},isOpen:function(){return!!t.get('open')},setTitle:function(e){return t.set('title',e),this},getTitle:function(){return t.get('title')},setContent:function(e){return t.set('content',' '),t.set('content',e),this},getContent:function(){return t.get('content')},getContentEl:function(){return e.getContent().get(0)},getModel:function(){return t},render:function(){if(!this.getConfig().custom){var r=y.extend(n.extend),i=e&&e.el;return(e=new r({el:i,model:t,config:n})).render().$el}},destroy:function(){e&&e.remove(),[n,t,e].forEach((function(t){return{}})),this.em={}}}}},77:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>b});var r=n(4942);const i={stylePrefix:'',appendTo:'',sortable:1,hidable:1,hideTextnode:1,root:'',showWrapper:1,showHover:1,scrollCanvas:{behavior:'smooth',block:'nearest'},scrollLayers:{behavior:'auto',block:'nearest'},highlightHover:1,onInit:function(){},onRender:function(){},extend:{}};var o,s=n(9050),a=n(6183),l=n(2316),c=n.n(l),u=n(2169),h=n(9138),f='contentEditable',d={mediaText:''},p=c().$,g=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 0===(t.display||'').trim().indexOf('none')};const v=c().View.extend({events:{'mousedown [data-toggle-move]':'startSort','touchstart [data-toggle-move]':'startSort','click [data-toggle-visible]':'toggleVisibility','click [data-toggle-open]':'toggleOpening','click [data-toggle-select]':'handleSelect','mouseover [data-toggle-select]':'handleHover','mouseout [data-toggle-select]':'handleHoverOut','dblclick [data-name]':'handleEdit','keydown [data-name]':'handleEditKey','focusout [data-name]':'handleEditEnd'},template:function(t){var e=this.pfx,n=this.ppfx,r=this.config,i=this.clsNoEdit,o=r.hidable,s=this.countChildren(t),a=s?'':this.clsNoChild,l="".concat(this.clsTitle," ").concat(a),c="".concat(this.clsTitleC," ").concat(n,"one-bg"),u="".concat(this.clsCaret," fa fa-chevron-right"),h="".concat(this.inputNameCls," ").concat(i," ").concat(n,"no-app"),f=this.level+1,d="".concat(30+10*f,"px"),p=t.getName(),g=t.getIcon(),v="".concat(e,"layer");return"\n ".concat(o?""):'',"\n
\n
\n
\n \n ").concat(g?"").concat(g,""):'',"\n ").concat(p,"\n
\n
\n
\n
").concat(s||'',"
\n
\n \n
\n
")},initialize:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,s.bindAll)(this,'__render'),this.opt=e,this.level=e.level;var n=e.config||{},r=n.onInit;this.config=n,this.em=e.config.em,this.ppfx=this.em.get('Config').stylePrefix,this.sorter=e.sorter||'',this.pfx=this.config.stylePrefix,this.parentView=e.parentView;var i=this.pfx,o=this.ppfx,a=this.model,l=a.get('components'),c=a.get('type')||'default';a.set('open',!1),this.listenTo(l,'remove add reset',this.checkChildren),[['change:status',this.updateStatus],['change:open',this.updateOpening],['change:layerable',this.updateLayerable],['change:style:display',this.updateVisibility],['rerender:layer',this.render],['change:name change:custom-name',this.updateName]].forEach((function(e){return t.listenTo(a,e[0],e[1])})),this.className="".concat(i,"layer ").concat(i,"layer__t-").concat(c," no-select ").concat(o,"two-color"),this.inputNameCls="".concat(o,"layer-name"),this.clsTitleC="".concat(i,"layer-title-c"),this.clsTitle="".concat(i,"layer-title"),this.clsCaret="".concat(i,"layer-caret"),this.clsCount="".concat(i,"layer-count"),this.clsMove="".concat(i,"layer-move"),this.clsChildren="".concat(i,"layer-children"),this.clsNoChild="".concat(i,"layer-no-chld"),this.clsEdit="".concat(this.inputNameCls,"--edit"),this.clsNoEdit="".concat(this.inputNameCls,"--no-edit"),this.$el.data('model',a),this.$el.data('collection',l),a.viewLayer=this,r.bind(this)({component:a,render:this.__render,listenTo:this.listenTo})},updateName:function(){this.getInputName().innerText=this.model.getName()},getVisibilityEl:function(){return this.eyeEl||(this.eyeEl=this.$el.children(".".concat(this.pfx,"layer-vis"))),this.eyeEl},updateVisibility:function(){var t=this.pfx,e=this.model,n="".concat(t,"layer-hidden"),r=g(e.getStyle(d))?'addClass':'removeClass';this.$el[r](n),this.getVisibilityEl()[r]('fa-eye-slash')},toggleVisibility:function(t){t&&t.stopPropagation();var e=this.model,n=this.em,r='__prev-display',i=e.get(r),o=e.getStyle(d),s=o.display;g(o)?(delete o.display,i&&(o.display=i,e.unset(r))):(s&&e.set(r,s),o.display='none'),e.setStyle(o,d),n&&n.trigger('component:toggled')},handleEdit:function(t){t&&t.stopPropagation();var e=this.em,n=this.$el,r=this.clsNoEdit,i=this.clsEdit,o=this.getInputName();o[f]=!0,o.focus(),document.execCommand('selectAll',!1,null),e&&e.setEditing(1),n.find(".".concat(this.inputNameCls)).removeClass(r).addClass(i)},handleEditKey:function(t){t.stopPropagation(),((0,a.isEscKey)(t)||(0,a.isEnterKey)(t))&&this.handleEditEnd(t)},handleEditEnd:function(t){t&&t.stopPropagation();var e=this.em,n=this.$el,r=this.clsNoEdit,i=this.clsEdit,o=this.getInputName(),s=o.textContent;o.scrollLeft=0,o[f]=!1,this.setName(s,{component:this.model,propName:'custom-name'}),e&&e.setEditing(0),n.find(".".concat(this.inputNameCls)).addClass(r).removeClass(i)},setName:function(t,e){var n=e.propName;this.model.set(n,t)},getInputName:function(){return this.inputName||(this.inputName=this.el.querySelector(".".concat(this.inputNameCls))),this.inputName},updateOpening:function(){var t=this.opt.opened||{},e=this.model,n='fa-chevron-down';e.get('open')?(this.$el.addClass('open'),this.getCaret().addClass(n),t[e.cid]=e):(this.$el.removeClass('open'),this.getCaret().removeClass(n),delete t[e.cid])},toggleOpening:function(t){var e=this.model;t.stopImmediatePropagation(),e.get('components').length&&e.set('open',!e.get('open'))},handleSelect:function(t){t.stopPropagation();var e=this.em,n=this.config,r=this.model;if(e){e.setSelected(r,{fromLayers:1,event:t});var i=n.scrollCanvas;i&&r.views.forEach((function(t){return t.scrollIntoView(i)}))}},handleHover:function(t){t.stopPropagation();var e=this.em,n=this.config,r=this.model;e&&n.showHover&&e.setHovered(r,{fromLayers:1})},handleHoverOut:function(t){t.stopPropagation();var e=this.em,n=this.config;e&&n.showHover&&e.setHovered(0,{fromLayers:1})},startSort:function(t){t.stopPropagation();var e=this.em,n=this.sorter;t.button&&0!==t.button||n&&(n.onStart=function(t){return e.trigger("".concat(h.OA,":start"),t)},n.onMoveClb=function(t){return e.trigger(h.OA,t)},n.startSort(t.target))},freeze:function(){this.$el.addClass(this.pfx+'opac50'),this.model.set('open',0)},unfreeze:function(){this.$el.removeClass(this.pfx+'opac50')},updateStatus:function(t){u.Z.prototype.updateStatus.apply(this,[{avoidHover:!this.config.highlightHover,noExtHl:1}])},isVisible:function(){return!g(this.model.getStyle())},checkChildren:function(){var t=this.model,e=this.clsNoChild,n=this.countChildren(t),r=this.$el.children(".".concat(this.clsTitleC)).children(".".concat(this.clsTitle)),i=this.cnt;i||(i=this.$el.children('[data-count]').get(0),this.cnt=i),r[n?'removeClass':'addClass'](e),i&&(i.innerHTML=n||''),!n&&t.set('open',0)},countChildren:function(t){var e=0;return t.get('components').each((function(t){var n=this.opt.isCountable,r=this.config.hideTextnode;n&&!n(t,r)||e++}),this),e},getCaret:function(){if(!this.caret||!this.caret.length){this.pfx;this.caret=this.$el.children(".".concat(this.clsTitleC)).find(".".concat(this.clsCaret))}return this.caret},setRoot:function(t){t=(0,s.isString)(t)?this.em.getWrapper().find(t)[0]:t;var e=(0,a.getModel)(t,p);e&&(this.stopListening(),this.model=e,this.initialize(this.opt),this._rendered&&this.render())},updateLayerable:function(){(this.parentView||this).render()},__clearItems:function(){var t=this.items;t&&t.remove()},remove:function(){c().View.prototype.remove.apply(this,arguments),this.__clearItems()},render:function(){var t=this.model,e=this.config,r=this.pfx,i=this.ppfx,a=this.opt;this.__clearItems();var l=a.isCountable,c=l&&!l(t,e.hideTextnode),u=this.isVisible(),h=this.$el.empty(),f=this.level+1;this.inputName=0,(0,s.isUndefined)(o)&&(o=n(3557).Z),this.items=new o({ItemView:a.ItemView,collection:t.get('components'),config:this.config,sorter:this.sorter,opened:this.opt.opened,parentView:this,parent:t,level:f});var d=this.items.render().$el;return this.config.showWrapper||1!==f?(h.html(this.template(t)),h.find(".".concat(this.clsChildren)).append(d)):h.append(d),t.get('draggable')&&this.config.sortable||h.children(".".concat(this.clsMove)).remove(),!u&&(this.className+=" ".concat(r,"hide")),c&&(this.className+=" ".concat(i,"hidden")),h.attr('class',this.className),this.updateOpening(),this.updateStatus(),this.updateVisibility(),this.__render(),this._rendered=1,this},__render:function(){var t=this.model,e=this.config,n={component:t,el:this.el};e.onRender.bind(this)(n),this.em.trigger('layer:render',n)}});function m(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function y(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return(n=y(y({},i),e)).stylePrefix=e.pStylePrefix,t=n.em,this},getConfig:function(){return n},onLoad:function(){t&&t.on('component:selected',this.componentChanged),this.componentChanged()},postRender:function(){var t=n.appendTo,e=n.root;(e&&this.setRoot(e),t)&&((0,s.isElement)(t)?t:document.querySelector(t)).appendChild(this.render())},setRoot:function(t){return e&&e.setRoot(t),this},getRoot:function(){return e&&e.model},getAll:function(){return e},componentChanged:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!r.fromLayers){var i=t.get('opened'),o=t.getSelected(),s=n.scrollLayers,a=o&&o.collection?o.collection.parent:null;for(var l in i)i[l].set('open',0);for(;a;)a.set('open',1),i[a.cid]=a,a=a.collection?a.collection.parent:null;if(o&&s){var c=o.viewLayer&&o.viewLayer.el;c&&c.scrollIntoView(s)}}},render:function(){var r=v.extend(n.extend);return e&&e.remove(),(e=new r({ItemView:r,level:0,config:n,opened:n.opened||{},model:t.get('DomComponents').getWrapper()})).render().el},destroy:function(){e&&e.remove(),[t,e,n].forEach((function(t){return{}}))}}}},3557:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(2316),i=n(9138);const o=r.View.extend({initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.items=[],this.opt=t;var e=t.config||{};this.level=t.level,this.config=e,this.preview=t.preview,this.ppfx=e.pStylePrefix||'',this.pfx=e.stylePrefix||'',this.parent=t.parent,this.parentView=t.parentView;var n=this.pfx,r=this.ppfx,o=this.parent,s=this.collection;this.listenTo(s,'add',this.addTo),this.listenTo(s,'reset resetNavigator',this.render),this.listenTo(s,'remove',this.removeChildren),this.className="".concat(n,"layers");var a=e.em;if(e.sortable&&!this.opt.sorter){var l=a.get('Utils');this.opt.sorter=new l.Sorter({container:e.sortContainer||this.el,containerSel:".".concat(this.className),itemSel:".".concat(n,"layer"),ignoreViewChildren:1,onEndMove:function(t,e,n){var r=e.getSourceModel();a.setSelected(r,{forceChange:1}),a.trigger("".concat(i.OA,":end"),n)},avoidSelectOnEnd:1,nested:1,ppfx:r,pfx:n})}this.sorter=this.opt.sorter||'',this.$el.data('collection',s),o&&this.$el.data('model',o)},removeChildren:function(t){var e=t.viewLayer;e&&(e.remove(),t.viewLayer=0)},addTo:function(t){var e=this.collection.indexOf(t);this.addToCollection(t,null,e)},addToCollection:function(t,e,n){var r=this.level,i=this.parentView,o=this.opt.ItemView,s=e||null,a=new o({ItemView:o,level:r,model:t,parentView:i,config:this.config,sorter:this.sorter,isCountable:this.isCountable,opened:this.opt.opened}),l=a.render().el;if(s)s.appendChild(l);else if(void 0!==n){var c='before';this.$el.children().length==n&&(n--,c='after'),n<0?this.$el.append(l):this.$el.children().eq(n)[c](l)}else this.$el.append(l);return this.items.push(a),l},remove:function(){r.View.prototype.remove.apply(this,arguments),this.items.map((function(t){return t.remove()}))},isCountable:function(t,e){var n=t.get('type'),r=t.get('tagName');return!(('textnode'==n||'br'==r)&&e||!t.get('layerable'))},render:function(){var t=this,e=document.createDocumentFragment(),n=this.el;return n.innerHTML='',this.collection.each((function(n){return t.addToCollection(n,e)})),n.appendChild(e),n.className=this.className,this}})},2567:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>A,evAll:()=>O,evPageAdd:()=>_,evPageAddBefore:()=>T,evPageRemove:()=>E,evPageRemoveBefore:()=>j,evPageSelect:()=>k,evPageSelectBefore:()=>S,evPageUpdate:()=>P,evPfx:()=>C});var r=n(2982),i=n(4942),o=n(9050),s=n(6183),a=n(2316),l=n(5671),c=n(3144),u=n(9340),h=n(3930),f=n(1120),d=n(9065);function p(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,f.Z)(t);if(e){var i=(0,f.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,h.Z)(this,n)}}var g=function(t){(0,u.Z)(n,t);var e=p(n);function n(){return(0,l.Z)(this,n),e.apply(this,arguments)}return(0,c.Z)(n,[{key:"defaults",value:function(){return{frames:[],_undo:!0}}},{key:"initialize",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.config,i=void 0===r?{}:r,o=i.em,s={};this.em=o,t.frames||(s.component=t.component,s.styles=t.styles,['component','styles'].map((function(t){return e.unset(t)})));var a=t.frames||[s],l=new d.Z(a,i);l.page=this,this.set('frames',l);var c=o&&o.get('UndoManager');c&&c.add(l)}},{key:"onRemove",value:function(){this.get('frames').reset()}},{key:"getFrames",value:function(){return this.get('frames')}},{key:"getId",value:function(){return this.id}},{key:"getName",value:function(){return this.get('name')}},{key:"setName",value:function(t){return this.get({name:t})}},{key:"getAllFrames",value:function(){return this.getFrames().models||[]}},{key:"getMainFrame",value:function(){return this.getFrames().at(0)}},{key:"getMainComponent",value:function(){var t=this.getMainFrame();return t&&t.getComponent()}},{key:"toJSON",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=a.Model.prototype.toJSON.call(this,t),n=(0,o.result)(this,'defaults');return(0,o.forEach)(e,(function(t,n){0===n.indexOf('_')&&delete e[n]})),(0,o.forEach)(n,(function(t,n){e[n]===t&&delete e[n]})),e}}]),n}(a.Model);function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function m(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};this.config=e,this.on('reset',this.onReset),this.on('remove',this.onRemove)}},{key:"onReset",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.previousModels||[];r.map((function(t){return e.onRemove(t)}))}},{key:"onRemove",value:function(t){t&&t.onRemove()}},{key:"add",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.config;return a.Collection.prototype.add.call(this,t,m(m({},e),{},{config:n}))}}]),n}(a.Collection);function w(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function x(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};(0,o.bindAll)(this,'_onPageChange');var n=e.em,r=x({},e);this.config=r,this.em=n;var i=new b([],r);this.pages=i;var s=new a.Model({_undo:!0});return this.model=s,i.on('add',(function(t,e,r){return n.trigger(_,t,r)})),i.on('remove',(function(t,e,r){return n.trigger(E,t,r)})),i.on('change',(function(t,e){n.trigger(P,t,t.changedAttributes(),e)})),i.on('reset',(function(e){return e.at(0)&&t.select(e.at(0))})),i.on('all',this.__onChange,this),s.on(D,this._onPageChange),this},__onChange:function(t,e,n,r){var i=r||n;this.em.trigger(O,{event:t,page:e,options:i})},onLoad:function(){var t=this.pages,e={silent:!0};t.add(this.config.pages||[],e);var n=t.length?this.getMain():this.add({type:M},e);this.select(n,e)},_onPageChange:function(t,e,n){var r=this.em,i=r.get('LayerManager'),o=e.getMainComponent();i&&o&&i.setRoot(o),r.trigger(k,e,t.previous('selected')),this.__onChange(D,e,n)},postLoad:function(){var t=this.em,e=this.model,n=t.get('UndoManager');n&&n.add(e),n&&n.add(this.pages)},add:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em;t.id=t.id||this._createId();var i=function(){var r=e.pages.add(t,n);return n.select&&e.select(r),r};return!n.silent&&r.trigger(T,t,i,n),!n.abort&&i()},remove:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em,i=(0,o.isString)(t)?this.get(t):t,s=function(){return i&&e.pages.remove(i,n),i};return!n.silent&&r.trigger(j,i,s,n),!n.abort&&s()},get:function(t){return this.pages.filter((function(e){return e.get('id')===t}))[0]},getMain:function(){var t=this.pages;return t.filter((function(t){return t.get('type')===M}))[0]||t.at(0)},getAll:function(){return(0,r.Z)(this.pages.models)},getAllWrappers:function(){var t=this.getAll();return(0,o.unique)((0,o.flatten)(t.map((function(t){return t.getAllFrames().map((function(t){return t.getComponent()}))}))))},getAllMap:function(){return this.getAll().reduce((function(t,e){return t[e.get('id')]=e,t}),{})},select:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(0,o.isString)(t)?this.get(t):t;return n&&(this.em.trigger(S,n,e),this.model.set('selected',n,e)),this},getSelected:function(){return this.model.get('selected')},destroy:function(){var t=this;this.pages.off().reset(),this.model.stopListening(),this.model.clear({silent:!0}),['selected','config','em','pages','model'].map((function(e){return t[e]=0}))},store:function(t){if(!this.em.get('hasPages'))return{};var e={},n=this.config;return e[this.storageKey]=JSON.stringify(this.getAll()),!t&&n.stm&&n.stm.store(e),e},load:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.storageKey,n=t[e]||[];if('string'==typeof n)try{n=JSON.parse(t[e])}catch(t){}return n&&n.length&&this.pages.reset(n),n},_createId:function(){var t,e=this.getAll().length+16,n=this.getAllMap();do{t=(0,s.createId)(e)}while(n[t]);return t}}}},4906:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>P});var r='sw-visibility',i='export-template',o='open-sm',s='open-tm',a='open-layers',l='open-blocks',c='fullscreen',u='preview';const h={stylePrefix:'pn-',defaults:[{id:'commands',buttons:[{}]},{id:'options',buttons:[{active:!0,id:r,className:'fa fa-square-o',command:r,context:r,attributes:{title:'View components'}},{id:u,className:'fa fa-eye',command:u,context:u,attributes:{title:'Preview'}},{id:c,className:'fa fa-arrows-alt',command:c,context:c,attributes:{title:'Fullscreen'}},{id:i,className:'fa fa-code',command:i,attributes:{title:'View code'}}]},{id:'views',buttons:[{id:o,className:'fa fa-paint-brush',command:o,active:!0,togglable:0,attributes:{title:'Open Style Manager'}},{id:s,className:'fa fa-cog',command:s,togglable:0,attributes:{title:'Settings'}},{id:a,className:'fa fa-bars',command:a,togglable:0,attributes:{title:'Open Layer Manager'}},{id:l,className:'fa fa-th-large',command:l,togglable:0,attributes:{title:'Open Blocks'}}]}],em:null,delayBtnsShow:300};var f=n(2316),d=n.n(f),p=n(2516);const g=d().Model.extend({defaults:{id:'',content:'',visible:!0,buttons:[],attributes:{}},initialize:function(t){this.btn=this.get('buttons')||[],this.buttons=new p.Z(this.btn),this.set('buttons',this.buttons)}}),v=d().Collection.extend({model:g});var m=n(4942),y=n(9050);function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function w(t){for(var e=1;e2&&void 0!==arguments[2]?arguments[2]:{},r=this.model,i=this.commands,o=this.$el,s=this.activeCls,a=n.fromCollection,l=n.fromListen,c=r.get('context'),u=r.get('options'),h=r.get('command'),f={};h&&(i&&(0,y.isString)(h)?f=i.get(h)||{}:(0,y.isFunction)(h)?f=i.create({run:h}):null!==h&&(0,y.isObject)(h)&&(f=i.create(h)),r.get('active')?(!a&&r.collection.deactivateAll(c,r),r.set('active',!0,{silent:!0}).trigger('checkActive'),!l&&i.runCommand(f,w(w({},u),{},{sender:r})),f.noStop&&r.set('active',!1)):(o.removeClass(s),!l&&i.stopCommand(f,w(w({},u),{},{sender:r,force:1}))))},updateDisable:function(){var t=this.disableCls,e=this.model.get('disable');this.$el[e?'addClass':'removeClass'](t)},checkActive:function(){var t=this.model,e=this.$el,n=this.activeCls;t.get('active')?e.addClass(n):e.removeClass(n)},clicked:function(t){var e=this.model;e.get('bntsVis')||e.get('disable')||!e.get('command')||this.toggleActive()},toggleActive:function(){var t=this.model,e=this.em,n=t.attributes,r=n.active,i=n.togglable;r&&!i||(t.set('active',!r),r?t.get('runDefaultCommand')&&e.runDefault():t.get('stopDefaultCommand')&&e.stopDefault())},render:function(){var t=this.model,e=t.get('label'),n=this.$el;return!t.get('el')&&n.empty(),this.updateAttributes(),e&&n.append(e),this.checkActive(),this.updateDisable(),this}}),O=d().View.extend({initialize:function(t){this.opt=t||{},this.config=this.opt.config||{},this.pfx=this.config.stylePrefix||'',this.parentM=this.opt.parentM||null,this.listenTo(this.collection,'add',this.addTo),this.listenTo(this.collection,'reset remove',this.render),this.className=this.pfx+'buttons'},addTo:function(t){this.addToCollection(t)},addToCollection:function(t,e){var n=e||null,r=new x({el:t.get('el'),model:t,config:this.config,parentM:this.parentM}).render().el;return n?n.appendChild(r):this.$el.append(r),r},render:function(){var t=document.createDocumentFragment();return this.$el.empty(),this.collection.each((function(e){this.addToCollection(e,t)}),this),this.$el.append(t),this.$el.attr('class',(0,y.result)(this,'className')),this}});function C(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}const k=d().View.extend({initialize:function(t){var e=t.config||{},n=this.model;this.config=e,this.pfx=e.stylePrefix||'',this.ppfx=e.pStylePrefix||'',this.buttons=n.get('buttons'),this.className=this.pfx+'panel',this.id=this.pfx+n.get('id'),this.listenTo(n,'change:appendContent',this.appendContent),this.listenTo(n,'change:content',this.updateContent),this.listenTo(n,'change:visible',this.toggleVisible),n.view=this},appendContent:function(){this.$el.append(this.model.get('appendContent'))},updateContent:function(){this.$el.html(this.model.get('content'))},toggleVisible:function(){this.model.get('visible')?this.$el.removeClass("".concat(this.ppfx,"hidden")):this.$el.addClass("".concat(this.ppfx,"hidden"))},attributes:function(){return this.model.get('attributes')},initResize:function(){var t=this.config.em,e=t?t.get('Editor'):'',n=this.model.get('resizable');if(e&&n){var r,i,o,s=!0===n?[1,1,1,1]:n,a=s.length,l=0;2==a?(r=s[0],o=s[0],i=s[1],l=s[1]):4==a&&(r=s[0],i=s[1],o=s[2],l=s[3]);var c=e.Utils.Resizer.init(function(t){for(var e=1;e{"use strict";n.d(e,{Z:()=>s});var r=n(2316),i=n.n(r);const o=i().Model.extend({defaults:{id:'',label:'',tagName:'span',className:'',command:'',context:'',buttons:[],attributes:{},options:{},active:!1,dragDrop:!1,togglable:!0,runDefaultCommand:!0,stopDefaultCommand:!1,disable:!1},initialize:function(t){if(this.get('buttons').length){var e=n(2516).Z;this.set('buttons',new e(this.get('buttons')))}}}),s=i().Collection.extend({model:o,deactivateAllExceptOne:function(t,e){this.forEach((function(n,r){n!==t&&(n.set('active',!1),e&&n.get('buttons').length&&n.get('buttons').deactivateAllExceptOne(t,e))}))},deactivateAll:function(t,e){var n=t||'';this.forEach((function(t){t.get('context')==n&&t!==e&&t.set('active',!1,{fromCollection:1})}))},disableAllButtons:function(t){var e=t||'';this.forEach((function(t,n){t.get('context')==e&&t.set('disable',!0)}))},disableAllButtonsExceptOne:function(t,e){this.forEach((function(n,r){n!==t&&(n.set('disable',!0),e&&n.get('buttons').length&&n.get('buttons').disableAllButtonsExceptOne(t,e))}))}})},4424:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>w});var r=n(4942);const i={textTags:['br','b','i','u','a','ul','ol'],parserCss:null,parserHtml:null,optionsHtml:{htmlType:null,allowScripts:!1,allowUnsafeAttr:!1}};var o=n(9050),s={4:'media',5:'font-face',6:'page',7:'keyframes',11:'counter-style',12:'supports',13:'document',14:'font-feature-values',15:'viewport'},a=(0,o.keys)(s),l=['5','6','11','15'],c=['font-face','page','counter-style','viewport'],u=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'',e=[],n=[],r=t.split(','),i=0,o=r.length;i1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={},i=t.length,o=t[i-1],s=o?o.split(/:(.+)/):[],a=s[1],l=n.atRule,u=n.selectorsAdd,h=n.mediaText,f=c.indexOf(l)>=0;return f&&(r.singleAtRule=1),l&&(r.atRuleType=l),u&&(r.selectorsAdd=u),h&&(r.mediaText=h),a&&(t[i-1]=s[0],r.state=a,s.splice(s.length-1,1)),r.selectors=t,r.style=e,r},p=function t(e){for(var n=[],r=e.cssRules||[],i=0,o=r.length;i=0;if(b)g=1,v=s[p],m=f(c);else if(a.indexOf(p)>=0){var w=t(c);m=f(c);for(var x=0,O=w.length;x0&&void 0!==arguments[0]?arguments[0]:{};return{parse:function(e){var n=this,r=[],i=t.parserCss,o=t.em,s=o&&o.get&&o.get('Editor');return(i?i(e,s):g(e)).forEach((function(t){return r=r.concat(n.checkNode(t))})),o&&o.trigger('parse:css',{input:e,output:r}),r},checkNode:function(t){var e=t,n=e.selectors,r=e.style;if((0,o.isString)(n)){var i=[],s=u(n),a=s.result,l=s.add.join(', '),c={atRule:t.atRule,mediaText:t.params};if(a.length?a.forEach((function(t){i.push(d(t,r,c))})):i.push(d([],r,c)),l)i[i.length-1].selectorsAdd=l;t=i}return t}}};var m=n(5311);function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function b(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return(n=b(b({},i),r)).Parser=this,t=new m.Z(n),e=new v(n),this.em=n.em,this.parserCss=e,this.parserHtml=t,this},getConfig:function(){return n},parseHtml:function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.em,o=this.compTypes;return t.compTypes=i?i.get('DomComponents').getTypes():o,t.parse(n,e,r)},parseCss:function(t){return e.parse(t)},destroy:function(){var r=this;[n,t,e].forEach((function(t){return{}})),['em','parserCss','parserHtml'].forEach((function(t){return r[t]={}}))}}}},5311:(t,e,n)=>{"use strict";n.d(e,{Z:()=>h});var r=n(4942),i=n(1002),o=n(9050),s='text/html',a=s;const l=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new DOMParser,i=n.htmlType||a,l=i===s,c=l?t:"
".concat(t,"
"),u=r.parseFromString(c,i);if(l){var h=u.head,f=u.body,d=h.querySelectorAll('script');(0,o.each)(d,(function(t){return f.appendChild(t)}));var p=[];(0,o.each)(h.children,(function(t){return p.push(t)})),(0,o.each)(p,(function(t,e){return f.insertBefore(t,f.children[e])})),e=f}else e=u.firstChild;return e};function c(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function u(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},r={},i={};return(0,o.each)(e,(function(e,s){if(0===s.indexOf(t.modelAttrStart)){var a=s.replace(n,''),l=e.length,c=e&&(0,o.isString)(e),u=c&&e.substr(0,1),h=c&&e.substr(l-1);e='false'!==(e='true'===e||e)&&e;try{e='{'==u&&'}'==h||'['==u&&']'==h?JSON.parse(e):e}catch(t){}r[a]=e}else i[s]=e})),{props:r,attrs:i}},parseStyle:function(t){for(var e={},n=t.split(';'),r=0,i=n.length;r1&&void 0!==arguments[1]?arguments[1]:{},s=[],a=r.childNodes,l=0,c=a.length;l'!=="".concat(h.outerHTML).slice(-2)||(m.void=!0);var A=m.components;if(!m.type&&A){for(var L=1,R=0,N=0;N2&&void 0!==arguments[2]?arguments[2]:{},c=e.em,h=c&&c.get('Config')||{},f={html:null,css:null},d=u(u({},t),a),p=u(u({},t.optionsHtml),{},{htmlType:(null===(s=t.optionsHtml)||void 0===s?void 0:s.htmlType)||t.htmlType},a),g=(0,o.isFunction)(d.parserHtml)?d.parserHtml(n,p):l(n,p),v=g.querySelectorAll('script'),m=v.length,y=(0,o.isUndefined)(h.allowScripts)?p.allowScripts:h.allowScripts;if(!y)for(;m--;)v[m].parentNode.removeChild(v[m]);if(p.allowUnsafeAttr||this.__clearUnsafeAttr(g),i){for(var b=g.querySelectorAll('style'),w=b.length,x='';w--;)x=b[w].innerHTML+x,b[w].parentNode.removeChild(b[w]);x&&(f.css=i.parse(x))}c&&c.trigger("".concat(r,":root"),{input:n,root:g});var O=this.parseNode(g,d),C=1!==O.length||e.returnArray?O:O[0];return f.html=C,c&&c.trigger(r,{input:n,output:f}),f},__clearUnsafeAttr:function(t){var e=this,n=t.attributes||[],r=t.childNodes||[],i=[];(0,o.each)(n,(function(t){var e=t.nodeName||'';0===e.indexOf('on')&&i.push(e)})),i.map((function(e){return t.removeAttribute(e)})),(0,o.each)(r,(function(t){return e.__clearUnsafeAttr(t)}))}}}},2012:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>S});var r=n(5861),i=n(2982),o=n(4942),s=n(7757),a=n.n(s),l=n(5671),c=n(3144),u=n(9050),h=n(6183);function f(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function d(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:'A',n=t.selection(),r=n.anchorNode,i=n.focusNode,o=null==r?void 0:r.parentNode,s=null==i?void 0:i.parentNode;return(null==o?void 0:o.nodeName)==e||(null==s?void 0:s.nodeName)==e},y='data-selectme',b={bold:{name:'bold',icon:'B',attributes:{title:'Bold'},result:function(t){return t.exec('bold')}},italic:{name:'italic',icon:'I',attributes:{title:'Italic'},result:function(t){return t.exec('italic')}},underline:{name:'underline',icon:'U',attributes:{title:'Underline'},result:function(t){return t.exec('underline')}},strikethrough:{name:'strikethrough',icon:'S',attributes:{title:'Strike-through'},result:function(t){return t.exec('strikeThrough')}},link:{icon:"\n \n ",name:'link',attributes:{style:'font-size:1.4rem;padding:0 4px 2px;',title:'Link'},state:function(t){return t&&t.selection()&&m(t)?p:g},result:function(t){m(t)?t.exec('unlink'):t.insertHTML("").concat(t.selection(),""),{select:!0})}},wrap:{icon:"\n \n ",attributes:{title:'Wrap for style'},state:function(t){return null!=t&&t.selection()&&m(t,'SPAN')?v:g},result:function(t){!m(t,'SPAN')&&t.insertHTML("").concat(t.selection(),""),{select:!0})}}},w=function(){function t(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,l.Z)(this,t);var r=n.el,i=n.em;if(this.em=i,r._rte)return r._rte;r._rte=this,this.setEl(r),this.updateActiveActions=this.updateActiveActions.bind(this),this.__onKeydown=this.__onKeydown.bind(this),this.__onPaste=this.__onPaste.bind(this);var o=(n.actions||[]).map((function(t){var e=t;return'string'==typeof t?e=d({},b[t]):b[t.name]&&(e=d(d({},b[t.name]),t)),e})),s=o.length?o:Object.keys(b).map((function(t){return b[t]}));n.classes=d(d({},{actionbar:'actionbar',button:'action',active:'active',disabled:'disabled',inactive:'inactive'}),n.classes);var a=n.classes,c=n.actionbar;if(this.actionbar=c,this.settings=n,this.classes=a,this.actions=s,!c){var u=n.actionbarContainer;(c=document.createElement('div')).className=a.actionbar,u.appendChild(c),this.actionbar=c,s.forEach((function(t){return e.addAction(t)}))}return n.styleWithCSS&&this.exec('styleWithCSS'),this}return(0,c.Z)(t,[{key:"destroy",value:function(){this.el=0,this.doc=0,this.actionbar=0,this.settings={},this.classes={},this.actions=[]}},{key:"setEl",value:function(t){this.el=t,this.doc=t.ownerDocument}},{key:"updateActiveActions",value:function(){var t=this;this.getActions().forEach((function(e){var n=e.btn,r=e.update,i=d({},t.classes),o=i.active,s=i.inactive,a=i.disabled,l=e.state,c=e.name,u=t.doc;if(n.className=n.className.replace(o,'').trim(),n.className=n.className.replace(s,'').trim(),n.className=n.className.replace(a,'').trim(),l)switch(l(t,u)){case p:n.className+=" ".concat(o);break;case g:n.className+=" ".concat(s);break;case v:n.className+=" ".concat(a)}else u.queryCommandSupported(c)&&u.queryCommandState(c)&&(n.className+=" ".concat(o));r&&r(t,e)}))}},{key:"enable",value:function(t){return this.enabled?this:this.__toggleEffects(!0,t)}},{key:"disable",value:function(){return this.__toggleEffects(!1)}},{key:"__toggleEffects",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t?h.on:h.off,r=this.el,i=this.doc;if(this.actionbarEl().style.display=t?'':'none',r.contentEditable=!!t,n(r,'mouseup keyup',this.updateActiveActions),n(i,'keydown',this.__onKeydown),n(i,'paste',this.__onPaste),this.enabled=t,t){var o=e.event;if(this.syncActions(),this.updateActiveActions(),o){var s=null;if(i.caretRangeFromPoint){var a=(0,h.getPointerEvent)(o);s=i.caretRangeFromPoint(a.clientX,a.clientY)}else o.rangeParent&&(s=i.createRange()).setStart(o.rangeParent,o.rangeOffset);var l=i.getSelection();l.removeAllRanges(),s&&l.addRange(s)}r.focus()}return this}},{key:"__onKeydown",value:function(t){'Enter'===t.key&&(this.doc.execCommand('insertLineBreak'),t.preventDefault())}},{key:"__onPaste",value:function(t){var e=t.clipboardData||window.clipboardData,n=e.getData('text'),r=e.getData('text/html');if(n&&!r){t.preventDefault();var i=n.replace(/(?:\r\n|\r|\n)/g,'
');this.doc.execCommand('insertHTML',!1,i)}}},{key:"syncActions",value:function(){var t=this;this.getActions().forEach((function(e){if(t.actionbar&&(!e.state||e.state&&e.state(t,t.doc)>=0)){var n=e.event||'click';e.btn["on".concat(n)]=function(n){e.result(t,e),t.updateActiveActions()}}}))}},{key:"addAction",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.sync,r=document.createElement('span'),i=t.icon,o=t.attributes||{};for(var s in r.className=this.classes.button,t.btn=r,o)r.setAttribute(s,o[s]);'string'==typeof i?r.innerHTML=i:r.appendChild(i),this.actionbarEl().appendChild(r),n&&(this.actions.push(t),this.syncActions())}},{key:"getActions",value:function(){return this.actions}},{key:"selection",value:function(){return this.doc.getSelection()}},{key:"exec",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.doc.execCommand(t,!1,e)}},{key:"actionbarEl",value:function(){return this.actionbar}},{key:"insertHTML",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.select,r=this.em,i=this.doc,o=this.el,s=i.getSelection();if(s&&s.rangeCount){var a=(0,h.getModel)(o),l=i.createElement('div'),c=s.getRangeAt(0);c.deleteContents(),(0,u.isString)(t)?l.innerHTML=t:t&&l.appendChild(t),Array.prototype.slice.call(l.childNodes).forEach((function(t){c.insertNode(t)})),s.removeAllRanges(),s.addRange(c),o.focus(),n&&a&&(a.once('rte:disable',(function(){var t=a.find("[".concat(y,"]"))[0];t&&(r.setSelected(t),t.removeAttributes(y))})),a.trigger('disable'))}}}]),t}();const x={stylePrefix:'rte-',adjustToolbar:1,actions:['bold','italic','underline','strikethrough','link','wrap']};function O(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function C(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},n=C(C({},x),e),r=n.pStylePrefix;return r&&(n.stylePrefix=r+n.stylePrefix),this.config=n,this.pfx=n.stylePrefix,this.em=n.em,this.actions=n.actions||[],(0,h.hasWin)()?((t=document.createElement('div')).className="".concat(r,"rte-toolbar ").concat(r,"one-bg"),this.initRte(document.createElement('div')),(0,h.on)(t,'mousedown',(function(t){return t.stopPropagation()})),this):this},destroy:function(){var e,n,r,i=this;null===(e=this.globalRte)||void 0===e||e.destroy(),null===(n=this.customRte)||void 0===n||null===(r=n.destroy)||void 0===r||r.call(n),t=0,['actionbar','actions','em','config','globalRte','lastEl'].map((function(t){delete i[t]}))},postRender:function(n){var r=n.model.get('Canvas');t.style.pointerEvents='all',e(),r.getToolsEl().appendChild(t)},initRte:function(e){var n=this.globalRte,r=this.em,o=this.pfx,s=this.actionbar,a=this.config,l=t,c=this.actions||(0,i.Z)(a.actions),u={actionbar:"".concat(o,"actionbar"),button:"".concat(o,"action"),active:"".concat(o,"active"),inactive:"".concat(o,"inactive"),disabled:"".concat(o,"disabled")};return n?(n.em=r,n.setEl(e)):(n=new w({em:r,el:e,classes:u,actions:c,actionbar:s,actionbarContainer:l}),this.globalRte=n),n.actionbar&&(this.actionbar=n.actionbar),n.actions&&(this.actions=n.actions),n},add:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n.name=t,null===(e=this.globalRte)||void 0===e||e.addAction(n,{sync:1})},get:function(t){var e,n;return null===(e=this.globalRte)||void 0===e||e.getActions().forEach((function(e){e.name==t&&(n=e)})),n},getAll:function(){var t;return null===(t=this.globalRte)||void 0===t?void 0:t.getActions()},remove:function(t){var e=this.getAll(),n=this.get(t);if(n){var r=n.btn,i=e.indexOf(n);r.parentNode.removeChild(r),e.splice(i,1)}return n},getToolbarEl:function(){return t},updatePosition:function(){var e=this.em.get('Canvas'),n=t.style,r=e.getTargetToElementFixed(this.lastEl,t,{event:'rteToolbarPosUpdate',left:0});n.top=(r.top||0)+"px",n.left=(r.left||0)+"px"},enable:function(e,n,i){var o=this;return(0,r.Z)(a().mark((function r(){var s,l,c,u;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return o.lastEl=e.el,s=o.customRte,l=o.em,c=e.getChildrenContainer(),t.style.display='',r.next=6,s?s.enable(c,n):o.initRte(c).enable(i);case 6:return u=r.sent,l&&(setTimeout(o.updatePosition.bind(o),0),l.off(k,o.updatePosition,o),l.on(k,o.updatePosition,o),l.trigger('rte:enable',e,u)),r.abrupt("return",u);case 9:case"end":return r.stop()}}),r)})))()},disable:function(t,n){var r=this.em,i=this.customRte,o=t.getChildrenContainer();i?i.disable(o,n):n&&n.disable(),e(),r&&(r.off(k,this.updatePosition,this),r.trigger('rte:disable',t,n))}}}},4755:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>H,evAdd:()=>R,evAll:()=>A,evCustom:()=>F,evPfx:()=>L,evRemove:()=>Z,evRemoveBefore:()=>I,evState:()=>V,evUpdate:()=>N});var r=n(2982),i=n(4942),o=n(9050),s=n(6183),a=n(2316),l=n.n(a),c=n(9304);const u={stylePrefix:'clm-',appendTo:'',selectors:[],states:[{name:'hover'},{name:'active'},{name:'nth-of-type(2n)'}],escapeName:0,selectedName:0,iconAdd:'',iconSync:'',iconTagOn:'',iconTagOff:'',iconTagRemove:'',render:0,componentFirst:0,custom:!1};var h=n(8490),f=n(4293),d=n(5671),p=n(3144),g=n(9340),v=n(3930),m=n(1120);function y(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,m.Z)(t);if(e){var i=(0,m.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,v.Z)(this,n)}}var b=function(t){(0,g.Z)(n,t);var e=y(n);function n(){return(0,d.Z)(this,n),e.apply(this,arguments)}return(0,p.Z)(n,[{key:"defaults",value:function(){return{name:'',label:''}}},{key:"getName",value:function(){return this.get('name')}},{key:"getLabel",value:function(){return this.get('label')||this.getName()}}]),n}(a.Model);b.prototype.idAttribute='name';var w=n(168),x='contentEditable';const O=l().View.extend({template:function(){var t=this.pfx,e=this.model,n=this.config,r=e.get('label')||'';return"\n \n ").concat(r,"\n \n ").concat(n.iconTagRemove,"\n \n ")},events:{'click [data-tag-remove]':'removeTag','click [data-tag-status]':'changeStatus','dblclick [data-tag-name]':'startEditTag','focusout [data-tag-name]':'endEditTag'},initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.config||{};this.config=e,this.module=t.module,this.coll=t.coll||null,this.pfx=e.stylePrefix||'',this.ppfx=e.pStylePrefix||'',this.em=e.em,this.listenTo(this.model,'change:active',this.updateStatus)},getInputEl:function(){return this.inputEl||(this.inputEl=this.el.querySelector('[data-tag-name]')),this.inputEl},startEditTag:function(){var t=this.em,e=this.getInputEl();e[x]=!0,e.focus(),t&&t.setEditing(1)},endEditTag:function(){var t=this.model,e=this.getInputEl(),n=e.textContent,r=this.em,i=r&&r.get('SelectorManager');if(e[x]=!1,r&&r.setEditing(0),i){var o=i.escapeName(n);i.get(o)?e.innerText=t.get('label'):t.set({name:o,label:n})}},changeStatus:function(){var t=this.model;t.set('active',!t.get('active'))},removeTag:function(){this.module.removeSelected(this.model)},updateStatus:function(){var t=this.model,e=this.$el,n=this.config,r=n.iconTagOn,i=n.iconTagOff,o=e.find('[data-tag-status]');t.get('active')?(o.html(r),e.removeClass('opac50')):(o.html(i),e.addClass('opac50'))},render:function(){var t=this.pfx,e=this.ppfx;return this.$el.html(this.template()),this.$el.attr('class',"".concat(t,"tag ").concat(e,"three-bg")),this.updateStatus(),this}});var C,k,S,P,_=n(1629);const T=l().View.extend({template:function(t){var e=t.labelInfo,n=t.labelHead,r=t.iconSync,i=t.iconAdd,o=t.pfx,s=t.ppfx;return"\n
\n
").concat(n,"
\n
\n \n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n ").concat(i,"\n \n \n ").concat(r,"\n \n
\n
\n
").concat(e,":
\n
\n
")},events:{'change [data-states]':'stateChanged','click [data-add]':'startNewTag','focusout [data-input]':'endNewTag','keyup [data-input]':'onInputKeyUp','click [data-sync-style]':'syncStyle'},initialize:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.config=e.config||{},this.pfx=this.config.stylePrefix||'',this.ppfx=this.config.pStylePrefix||'',this.className=this.pfx+'tags',this.stateInputId=this.pfx+'states',this.stateInputC=this.pfx+'input-c',this.states=this.config.states||[];var n=this.config.em,r=this.collection;this.target=this.config.em;var i=e.module;this.module=i,this.em=n;var s='component:toggled component:update:classes',a='component:update:classes change:state';this.listenTo(n,s,this.componentChanged),this.listenTo(n,'styleManager:update',this.componentChanged),this.listenTo(n,a,this.__handleStateChange),this.listenTo(n,'styleable:change change:device',this.checkSync),this.listenTo(r,'add',this.addNew),this.listenTo(r,'reset',this.renderClasses),this.listenTo(r,'remove',this.tagRemoved),this.listenTo(i.getAll(),i.events.state,(0,o.debounce)((function(){return t.renderStates()}))),this.delegateEvents()},syncStyle:function(){var t,e=this.em,n=this.getTarget(),r=e.get('CssComposer'),i=this.getCommonSelectors({opts:{noDisabled:1}}),o=e.get('state'),s=e.getCurrentMedia(),a=[],l=r.get(i,o,s)||r.add(i,o,s);this.getTargets().forEach((function(e){var n=r.getIdRule(e.getId(),{state:o,mediaText:s});t=n.getStyle(),n.setStyle({}),a.push(n)})),t&&l.addStyle(t),e.trigger('component:toggled'),e.trigger('component:sync-style',{component:n,selectors:i,mediaText:s,rule:l,ruleComponents:a,state:o})},tagRemoved:function(t){this.updateStateVis()},addNew:function(t){this.addToClasses(t)},startNewTag:function(){this.$addBtn.css({display:'none'}),this.$input.show().focus()},endNewTag:function(){this.$addBtn.css({display:''}),this.$input.hide().val('')},onInputKeyUp:function(t){13===t.keyCode?(t.preventDefault(),this.addNewTag(this.$input.val())):27===t.keyCode&&this.endNewTag()},checkStates:function(){var t=this.em.getState(),e=this.getStates();e&&e.val(t)},componentChanged:(0,o.debounce)((function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.targets;this.updateSelection(e)})),updateSelection:function(t){var e=t||this.getTargets(),n=[];return(e=(0,o.isArray)(e)?e:[e])&&e.length&&(n=this.getCommonSelectors({targets:e}),this.checkSync({validSelectors:n})),this.collection.reset(n),this.updateStateVis(e),this.module.__trgCustom(),n},getCommonSelectors:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.targets,n=t.opts,r=void 0===n?{}:n,i=e||this.getTargets();return this.module.__getCommonSelectors(i,r)},_commonSelectors:function(){var t;return(t=this.module).__common.apply(t,arguments)},checkSync:(0,o.debounce)((function(){var t,e=this.$btnSyncEl,n=this.config,r=this.collection,i=this.getTarget();if(i&&n.componentFirst&&r.length){var s=i.getStyle();t=!(0,o.isEmpty)(s)}e&&e[t?'show':'hide']()})),getTarget:function(){return this.target.getSelected()},getTargets:function(){return this.target.getSelectedAll()},updateStateVis:function(t){var e=this.em,n=e&&e.getConfig('avoidInlineStyle'),r=this.collection.length||n?'':'none';this.getStatesC().css('display',r),this.updateSelector(t)},__handleStateChange:function(){this.updateSelector(this.getTargets())},updateSelector:function(t){var e=this,n=this.el.querySelector('[data-selected]'),r=[],i=t||this.getTargets();(i=(0,o.isArray)(i)?i:[i]).forEach((function(t){return r.push(e.__getName(t))})),n&&(n.innerHTML=r.join(', ')),this.checkStates()},__getName:function(t){var e,n=this.pfx,r=this.config,i=this.em,s=r.selectedName,a=r.componentFirst;if((0,o.isString)(t))e=(0,_.Z)(C||(C=(0,w.Z)(["",""])),n,t);else{var l=t&&t.get&&t.getSelectors();if(!l)return;var c=l.getStyleable(),u=i.get('state'),h=t.getId?(0,_.Z)(k||(k=(0,w.Z)(["","\n #",""])),n,t.getName(),n,t.getId()):'';e=(e=this.collection.getFullString(c))?(0,_.Z)(S||(S=(0,w.Z)(["",""])),n,e):t.get('selectorsAdd')||h,e=a&&h?h:e,e+=u?(0,_.Z)(P||(P=(0,w.Z)([":",""])),n,u):'',e=s?s({result:e,state:u,target:t}):e}return e&&"").concat(e,"")},stateChanged:function(t){var e=this.em,n=t.target.value;e.set('state',n)},addNewTag:function(t){var e=t.trim();e&&(this.module.addSelected({label:e}),this.endNewTag())},addToClasses:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=e,r=this.getClasses(),i=new O({model:t,config:this.config,coll:this.collection,module:this.module}).render().el;return n?n.appendChild(i):r.append(i),i},renderClasses:function(){var t=this,e=document.createDocumentFragment(),n=this.getClasses();n.empty(),this.collection.each((function(n){return t.addToClasses(n,e)})),n.append(e)},getClasses:function(){return this.$el.find('[data-selectors]')},getStates:function(){if(!this.$states){var t=this.$el.find('[data-states]');this.$states=t[0]&&t}return this.$states},getStatesC:function(){return this.$statesC||(this.$statesC=this.$el.find('#'+this.stateInputC)),this.$statesC},renderStates:function(){var t=this.module,e=this.em,n=e.t('selectorManager.emptyState'),r=t.getStates().map((function(t){var n=e.t("selectorManager.states.".concat(t.id))||t.getLabel()||t.id;return"")})).join(''),i=this.getStates();i&&i.html("").concat(r)),this.checkStates()},render:function(){var t=this.em,e=this.pfx,n=this.ppfx,r=this.config,i=this.$el,o=this.el,s=r.render,a={iconSync:r.iconSync,iconAdd:r.iconAdd,labelHead:t.t('selectorManager.label'),labelInfo:t.t('selectorManager.selected'),ppfx:n,pfx:e,el:o};i.html(this.template(a));var l=s&&s(a);return l&&l!==o&&i.empty().append(l),this.$input=i.find('[data-input]'),this.$addBtn=i.find('[data-add]'),this.$classes=i.find('#'+e+'tags-c'),this.$btnSyncEl=i.find('[data-sync-style]'),this.$input.hide(),this.renderStates(),this.renderClasses(),i.attr('class',"".concat(this.className," ").concat(n,"one-bg ").concat(n,"two-color")),this}});function E(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function j(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.__initConfig(u,e);var n=this.getConfig(),r=n.em,i=n.pStylePrefix;i&&(n.stylePrefix=i+n.stylePrefix),this.all=new f.Z(n.selectors),this.selected=new f.Z([],{em:r,config:n}),this.states=new a.Collection(n.states,{model:b}),this.model=new a.Model({cFirst:n.componentFirst,_undo:!0}),this.__initListen({collections:[this.states,this.selected],propagate:[{entity:this.states,event:this.events.state}]}),r.on('change:state',(function(t,e){return r.trigger(V,e)})),this.model.on('change:cFirst',(function(t,e){return r.trigger('selector:type',e)}));var o='component:toggled component:update:classes change:device styleManager:update selector:state selector:type';return this.model.listenTo(r,o,(function(){return t.__update()})),this},__update:(0,o.debounce)((function(){this.__trgCustom()})),__trgCustom:function(t){this.em.trigger(this.events.custom,this.__customData(t))},__customData:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.container;return{states:this.getStates(),selected:this.getSelected(),container:e}},postRender:function(){this.__appendTo(),this.__trgCustom()},select:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Array.isArray(t)?t:[t],r=this.em.get('StyleManager').select(n,e),i=this.selectorTags,o=r.filter((function(t){return t})).map((function(t){return(0,s.isComponent)(t)||(0,s.isRule)(t)&&!t.get('selectorsAdd')?t:t.getSelectorsString()}));return i&&i.componentChanged({targets:o}),this},addSelector:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=j({},e);(0,o.isObject)(t)?r=t:r.name=t,D(r.name)?(r.name=r.name.substr(1),r.type=h.Z.TYPE_ID):M(r.name)&&(r.name=r.name.substr(1)),r.label&&!r.name&&(r.name=this.escapeName(r.label));var i=r.name,s=this.getConfig(),a=this.getAll(),l=i?this.get(i,r.type):a.where(r)[0];return l||a.add(r,j(j({},n),{},{config:s}))},getSelector:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.Z.TYPE_CLASS;return D(t)?(t=t.substr(1),e=h.Z.TYPE_ID):M(t)&&(t=t.substr(1)),this.getAll().where({name:t,type:e})[0]},add:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(0,o.isString)(t)?{}:n;return(0,o.isArray)(t)?t.map((function(t){return e.addSelector(t,n,r)})):this.addSelector(t,n,r)},addClass:function(t){var e=this,n=[];return(0,o.isString)(t)&&(t=t.trim().split(' ')),t.forEach((function(t){return n.push(e.addSelector(t))})),n},get:function(t,e){var n=this;if((0,o.isArray)(t)){var r=[];return t.map((function(t){return n.getSelector(t)})).filter((function(t){return t})).forEach((function(t){return r.indexOf(t)<0&&r.push(t)})),r}return this.getSelector(t,e)||null},remove:function(t,e){return this.__remove(t,e)},setState:function(t){return this.em.setState(t),this},getState:function(){return this.em.getState()},getStates:function(){return(0,r.Z)(this.states.models)},setStates:function(t,e){return this.states.reset(t,e)},getSelected:function(){return this.__getCommon()},addSelected:function(t){var e=this.add(t);this.em.getSelectedAll().forEach((function(t){t.getSelectors().add(e)}))},removeSelected:function(t){this.em.getSelectedAll().forEach((function(e){!t.get('protected')&&e&&e.getSelectors().remove(t)}))},getSelectedTargets:function(){return this.em.get('StyleManager').getSelectedAll()},setComponentFirst:function(t){this.getConfig().componentFirst=t,this.model.set({cFirst:t})},getComponentFirst:function(){return this.getConfig().componentFirst},escapeName:function(t){var e=this.getConfig().escapeName;return e?e(t):h.Z.escapeName(t)},render:function(t){this.em;var e=this.selectorTags,n=this.getConfig(),r=e&&e.el;return this.selected.reset(t),this.selectorTags=new T({el:r,collection:this.selected,module:this,config:n}),this.selectorTags.render().el},destroy:function(){var t=this.selectorTags;this.model.stopListening(),this.__destroy(),t&&t.remove(),this.selectorTags={}},__getCommon:function(){return this.__getCommonSelectors(this.em.getSelectedAll())},__getCommonSelectors:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.map((function(t){return t.getSelectors&&t.getSelectors().getValid(e)})).filter(Boolean);return this.__common.apply(this,(0,r.Z)(n))},__common:function(){for(var t=this,e=arguments.length,n=new Array(e),r=0;r=0})):n.slice(1).reduce((function(e,n){return t.__common(e,n)}),n[0]):[]}})}},8490:(t,e,n)=>{"use strict";n.d(e,{Z:()=>h});var r=n(5671),i=n(3144),o=n(9340),s=n(3930),a=n(1120),l=n(2316),c=n(9050);function u(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,a.Z)(t);if(e){var i=(0,a.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}var h=function(t){(0,o.Z)(n,t);var e=u(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n,[{key:"defaults",value:function(){return{name:'',label:'',type:1,active:!0,private:!1,protected:!1,_undo:!0}}},{key:"initialize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.config,i=void 0===r?{}:r,o=this.get('name'),s=this.get('label');o?s||this.set('label',o):this.set('name',s);var a=this.get('name'),l=i.escapeName,c=l?l(a):n.escapeName(a);this.set('name',c),this.em=i.em}},{key:"isId",value:function(){return 2===this.get('type')}},{key:"isClass",value:function(){return 1===this.get('type')}},{key:"getFullName",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.escape,n=this.get('name'),r='';switch(this.get('type')){case 1:r='.';break;case 2:r='#'}return r+(e?e(n):n)}},{key:"toString",value:function(){return this.getFullName()}},{key:"getLabel",value:function(){return this.get('label')}},{key:"setLabel",value:function(t){return this.set('label',t)}},{key:"getActive",value:function(){return this.get('active')}},{key:"setActive",value:function(t){return this.set('active',t)}},{key:"toJSON",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=l.Model.prototype.toJSON.call(this,[t]),r=(0,c.result)(this,'defaults');if(e&&e.getConfig('avoidDefaults')){(0,c.forEach)(r,(function(t,e){n[e]===t&&delete n[e]})),n.label===n.name&&delete n.label;var i=(0,c.keys)(n).length;1===i&&n.name&&(n=n.name),2===i&&n.name&&n.type&&(n=this.getFullName())}return n}}]),n}(l.Model);h.prototype.idAttribute='name',h.TYPE_CLASS=1,h.TYPE_ID=2,h.escapeName=function(t){return"".concat(t).trim().replace(/([^a-z0-9\w-\:]+)/gi,'-')}},4293:(t,e,n)=>{"use strict";n.d(e,{Z:()=>d});var r=n(5671),i=n(3144),o=n(9340),s=n(3930),a=n(1120),l=n(9050),c=n(2316),u=n(8490);function h(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,a.Z)(t);if(e){var i=(0,a.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}var f=function t(e,n){return e.reduce((function(r,i,o){return r.concat(t(e.slice(o+1),"".concat(n).concat(i)))}),[n])},d=function(t){(0,o.Z)(n,t);var e=h(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n,[{key:"modelId",value:function(t){return"".concat(t.name,"_").concat(t.type||u.Z.TYPE_CLASS)}},{key:"getStyleable",value:function(){return(0,l.filter)(this.models,(function(t){return t.get('active')&&!t.get('private')}))}},{key:"getValid",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.noDisabled;return(0,l.filter)(this.models,(function(t){return!t.get('private')})).filter((function(t){return e?t.get('active'):1}))}},{key:"getFullString",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[],r=t||this;return r.forEach((function(t){return n.push(t.getFullName(e))})),n.join('').trim()}},{key:"getFullName",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.combination,n=t.array,r=[],i=this.map((function(e){return e.getFullName(t)})).sort();return e?i.forEach((function(t,e){r=r.concat(f(i.slice(e+1),t))})):r=i,n?r:e?r.join(','):r.join('')}}]),n}(c.Collection);d.prototype.model=u.Z},4859:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>w});var r=n(4942);const i={id:'gjs-',autosave:!0,autoload:!0,type:'local',stepsBeforeSave:1,storeComponents:!0,storeStyles:!0,storeHtml:!0,storeCss:!0,checkLocal:!0,params:{},headers:{},urlStore:'',urlLoad:'',beforeSend:function(t,e){},onComplete:function(t,e){},contentTypeJson:!0,credentials:'include',fetchOptions:''};var o=n(2316),s=n.n(o),a=n(6183);const l=o.Model.extend({defaults:{checkLocal:!0},store:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};if(this.hasLocal())for(var n in t)localStorage.setItem(n,t[n]);e&&e()},load:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n={};if(this.hasLocal())for(var r=0,i=t.length;r1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=this.get('contentTypeJson'),l=this.get('headers')||{},c=this.get('params'),h='X-Requested-With',d='Content-Type',p=i.body||{};for(var g in c)p[g]=c[g];if((0,u.isUndefined)(l[h])&&(l[h]='XMLHttpRequest'),(0,u.isUndefined)(l[d])&&a&&(l[d]='application/json; charset=utf-8'),a)n=JSON.stringify(p);else for(var v in n=new FormData,p)n.append(v,p[v]);'post'===(e={method:i.method||'post',credentials:this.get('credentials'),headers:l}).method&&(e.body=n);var m=this.get('fetchOptions')||{},y=(0,u.isFunction)(m)?m(e):e;this.onStart(),this.fetch(t,f(f({},e),y||{})).then((function(t){return 1==(t.status/200|0)?t.text():t.text().then((function(t){return Promise.reject(t)}))})).then((function(t){return r.onResponse(t,o)})).catch((function(t){return r.onError(t,s)}))}});function p(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function g(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return e=g(g({},i),n),t=e.em,e._disable&&(e.type=0),r.remote=new d(e),r.local=new l(e),e.currentStorage=e.type,this.loadDefaultProviders().setCurrent(e.type),this},getConfig:function(){return e},isAutosave:function(){return!!e.autosave},setAutosave:function(t){return e.autosave=!!t,this},getStepsBeforeSave:function(){return e.stepsBeforeSave},setStepsBeforeSave:function(t){return e.stepsBeforeSave=t,this},add:function(t,e){return n[t]=e,this},get:function(t){return n[t]||null},getStorages:function(){return n},getCurrent:function(){return e.currentStorage},setCurrent:function(t){return e.currentStorage=t,this},store:function(t,n){var r=this,i=this.get(this.getCurrent()),o={};for(var s in this.onStart('store',t),t)o[e.id+s]=t[s];return i?i.store(o,(function(t){r.onAfter('store',t),n&&n(t),r.onEnd('store',t)}),(function(t){r.onError('store',t)})):null},load:function(t,n){var r=this,i=this.get(this.getCurrent()),o=[],s={};'string'==typeof t&&(t=[t]),this.onStart('load',t);for(var a=0,l=t.length;a0&&void 0!==arguments[0]?arguments[0]:{},n={},r=new RegExp('^'+e.id);for(var i in t){var o=i.replace(r,'');n[o]=t[i]}return n},loadDefaultProviders:function(){for(var t in r)this.add(t,r[t]);return this},getCurrentStorage:function(){return this.get(this.getCurrent())},onStart:function(e,n){t&&(t.trigger(v),e&&t.trigger("".concat(v,":").concat(e),n))},onAfter:function(e,n){t&&(t.trigger(m),e&&t.trigger("".concat(m,":").concat(e),n))},onEnd:function(e,n){t&&(t.trigger(y),e&&t.trigger("".concat(y,":").concat(e),n))},onError:function(e,n){t&&(t.trigger(b,n),e&&t.trigger("".concat(b,":").concat(e),n),this.onEnd(e,n))},canAutoload:function(){return this.getCurrentStorage()&&this.getConfig().autoload},destroy:function(){[e,t,n,r].forEach((function(t){return{}}))}}}},2326:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>_e,evAll:()=>de,evCustom:()=>Se,evLayerSelect:()=>Ce,evPfx:()=>pe,evProp:()=>be,evPropAdd:()=>we,evPropRemove:()=>xe,evPropUp:()=>Oe,evSector:()=>ge,evSectorAdd:()=>ve,evSectorRemove:()=>me,evSectorUpdate:()=>ye,evTarget:()=>ke});var r=n(2982),i=n(4942),o=n(9050),s=n(6183),a=n(9304),l=n(2316),c=n.n(l);const u={sectors:[{name:'General',open:!1,properties:['display','float','position','top','right','left','bottom']},{name:'Flex',open:!1,properties:['flex-direction','flex-wrap','justify-content','align-items','align-content','order','flex-basis','flex-grow','flex-shrink','align-self']},{name:'Dimension',open:!1,properties:['width','height','max-width','min-height','margin','padding']},{name:'Typography',open:!1,properties:['font-family','font-size','font-weight','letter-spacing','color','line-height','text-align','text-shadow']},{name:'Decorations',open:!1,properties:['background-color','border-radius','border','box-shadow','background']},{name:'Extra',open:!1,properties:['opacity','transition']}],appendTo:'',stylePrefix:'sm-',custom:!1,hideNotStylable:!0,highlightChanged:!0,highlightComputed:!0,showComputed:!0,clearProperties:!0,avoidComputed:['width','height']};var h=n(4925),f=n(5671),d=n(3144),p=n(9340),g=n(3930),v=n(1120),m=n(793),y=["partial"];function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function w(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.em=e.em;var r=this.get('id')||'',i=this.get('name')||this.get('label')||'';!this.get('property')&&this.set('property',(i||r).replace(/ /g,'-'));var o=this.get('property');!this.get('id')&&this.set('id',o),!i&&this.set('name',(0,s.capitalize)(o).replace(/-/g,' ')),this.on('change',this.__upTargets),n.callInit(this,t,e)}},{key:"__getParentProp",value:function(){var t,e;return null===(t=this.collection)||void 0===t||null===(e=t.opts)||void 0===e?void 0:e.parentProp}},{key:"__upTargets",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=this.em,a=s.get('StyleManager'),l=this.getName(),c=n.__clear,u=c?'':this.__getFullValue(n),h=this.__getParentProp(),f=this.changedAttributes(),d=(0,o.keys)(f).reduce((function(t,n){return t[n]=e.previous(n),t}),{}),p=[].concat((0,r.Z)((0,o.keys)(this.__getClearProps())),['__p']),g=(0,o.keys)(f),v=!n.__up&&!h&&(c||p.some((function(t){return g.indexOf(t)>=0}))),m=this.get('onChange'),y={property:this,from:d,to:f,value:u,opts:n};a.__trgEv(a.events.propertyUpdate,y),m&&m(y),v&&this.__upTargetsStyle((0,i.Z)({},l,u),n)}},{key:"__upTargetsStyle",value:function(t,e){var n,r=null===(n=this.em)||void 0===n?void 0:n.get('StyleManager');null==r||r.addStyleTargets(w(w({},t),{},{__p:!!e.avoidStore}),e)}},{key:"_up",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.noTarget&&(e.__up=!0);var n=e.partial,r=(0,h.Z)(e,y);return t.__p=!(!r.avoidStore&&!n),this.set(t,w(w({},r),{},{avoidStore:t.__p}))}},{key:"up",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.set(t,w(w({},e),{},{__up:!0}))}},{key:"init",value:function(){}},{key:"getId",value:function(){return this.get('id')}},{key:"getType",value:function(){return this.get('type')}},{key:"getName",value:function(){return this.get('property')}},{key:"getLabel",value:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.locale,r=void 0===n||n,i=this.getId(),o=this.get('name')||this.get('label');return r&&(null===(t=this.em)||void 0===t?void 0:t.t("styleManager.properties.".concat(i)))||o}},{key:"getValue",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.noDefault,n=this.get('value');return this.hasValue()||e?n:this.getDefaultValue()}},{key:"hasValue",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.noParent,n=e&&this.getParentTarget(),r=this.get('value');return!(0,o.isUndefined)(r)&&''!==r&&!n}},{key:"hasValueParent",value:function(){return this.hasValue()&&!this.hasValue({noParent:!0})}},{key:"getStyle",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getName(),n=t.camelCase?(0,s.camelCase)(e):e;return(0,i.Z)({},n,this.__getFullValue(t))}},{key:"getDefaultValue",value:function(){var t=this.get('default');return"".concat((0,o.isUndefined)(t)?this.get('defaults'):t)}},{key:"upValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null===t||''===t?this.__getClearProps():this.__parseValue(t,e);return this._up(n,e)}},{key:"isVisible",value:function(){return!!this.get('visible')}},{key:"clear",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._up(this.__getClearProps(),w(w({},t),{},{__clear:!0}))}},{key:"canClear",value:function(){var t=this.getParent();return t?t.__canClearProp(this):this.hasValue({noParent:!0})}},{key:"getParent",value:function(){return this.__getParentProp()||null}},{key:"isFull",value:function(){return!!this.get('full')}},{key:"__parseValue",value:function(t,e){return this.parseValue(t,e)}},{key:"__getClearProps",value:function(){return{value:''}}},{key:"setValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.parseValue(t),i=!e;!i&&this.set({value:void 0},{avoidStore:i,silent:!0}),this.set(r,w({avoidStore:i},n))}},{key:"setValueFromInput",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.setValue(t,e,w(w({},n),{},{fromInput:1}))}},{key:"parseValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={value:t},r='!important';if((0,o.isString)(t)&&-1!==t.indexOf(r)&&(n.value=t.replace(r,'').trim(),n.important=1),!this.get('functionName')&&!e.complete)return n;var i=[],s="".concat(n.value),a=s.indexOf('(')+1,l=s.lastIndexOf(')'),c=s.substring(0,a-1);if(c&&(n.functionName=c),i.push(a),l>=0&&i.push(l),n.value=String.prototype.substring.apply(s,i),e.numeric){var u=parseFloat(n.value);n.unit=n.value.replace(u,''),n.value=u}return n}},{key:"__getFullValue",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.withDefault;return!this.hasValue()&&e?this.getDefaultValue():this.getFullValue()}},{key:"getFullValue",value:function(t){var e=this.get('functionName'),n=this.getDefaultValue(),r=(0,o.isUndefined)(t)?this.get('value'):t,i=!(0,o.isUndefined)(r)&&''!==r;if(r&&n&&r===n)return n;if(e&&i){var s='url'===e?"'".concat(r.replace(/'/g,''),"'"):r;r="".concat(e,"(").concat(s,")")}return i&&this.get('important')&&(r="".concat(r," !important")),r||''}},{key:"__setParentTarget",value:function(t){this.__parentTarget=t}},{key:"getParentTarget",value:function(){return this.__parentTarget||null}},{key:"__parseFn",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'',e=t.indexOf('(')+1,n=t.lastIndexOf(')');return{name:t.substring(0,e-1).trim(),value:String.prototype.substring.apply(t,[e,n>=0?n:void 0]).trim()}}},{key:"__checkVisibility",value:function(t){var e=t.target,n=t.component,r=t.sectors,i=n||e;if(!i)return!1;var a=this.getId(),l=this.getName(),c=this.get('toRequire'),u=this.get('requires'),h=this.get('requiresParent'),f=i.get('unstylable'),d=i.get('stylable-require'),p=i.get('stylable');if((0,o.isArray)(p)&&(p=p.indexOf(l)>=0),(0,o.isArray)(f)&&(p=f.indexOf(l)<0),c&&(p=!e||d&&(d.indexOf(a)>=0||d.indexOf(l)>=0)),r&&u){var g=(0,o.keys)(u);r.forEach((function(t){t.getProperties().forEach((function(t){if((0,o.includes)(g,t.id)){var e=u[t.id];p=p&&(0,o.includes)(e,t.get('value'))}}))}))}if(h){var v=n&&n.parent(),m=v&&v.getEl();if(m){var y=(0,s.hasWin)()?window.getComputedStyle(m):{};(0,o.each)(h,(function(t,e){p=p&&y[e]&&(0,o.includes)(t,y[e])}))}else p=!1}return!!p}}]),n}(l.Model);function C(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function k(t){for(var e=1;e3&&void 0!==arguments[3]?arguments[3]:{};t.prototype.initialize.apply(e,[n,w(w({},r),{},{skipInit:1})])},O.callInit=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!n.skipInit&&t.init(e,n)},O.getDefaults=function(){return(0,o.result)(this.prototype,'defaults')},O.prototype.defaults={name:'',property:'',type:'',defaults:'',info:'',value:'',icon:'',functionName:'',status:'',visible:!0,fixedValues:['initial','inherit'],onChange:null,full:0,important:0,toRequire:0,requires:null,requiresParent:null};var P=function(t){return'integer'===t||'number'===t},_=function(t){(0,p.Z)(n,t);var e=S(n);function n(){return(0,f.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"defaults",value:function(){return k(k({},O.getDefaults()),{},{detached:!1,properties:[],separator:' ',join:null,fromStyle:null,toStyle:null,full:!0})}},{key:"initialize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};O.callParentInit(O,this,t,e);var n=this.em,r=new Bt(this.get('properties')||[],{em:n,parentProp:this});this.set('properties',r,{silent:1}),this.listenTo(r,'change',this.__upProperties),O.callInit(this,t,e)}},{key:"getProperties",value:function(){return(0,r.Z)(this.get('properties').models)}},{key:"getProperty",value:function(t){return this.get('properties').filter((function(e){return e.getId()===t||e.getName()===t}))[0]||null}},{key:"getPropertyAt",value:function(t){return this.get('properties').at(t)}},{key:"isDetached",value:function(){return!!this.get('detached')}},{key:"getValues",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.byName;return this.getProperties().reduce((function(t,n){return t[e?n.getName():n.getId()]="".concat(n.__getFullValue()),t}),{})}},{key:"getSeparator",value:function(){return this.getSplitSeparator()}},{key:"getJoin",value:function(){return this.__getJoin()}},{key:"getStyleFromProps",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getName(),n=this.__getJoin(),r=this.get('toStyle'),o=this.getValues(),s={};if(r)s=r(o,{join:n,name:e,property:this});else if(o=this.getValues({byName:!0}),this.isDetached())s=o;else{var a=this.getProperties().map((function(t){return t.__getFullValue({withDefault:1})})).filter(Boolean).join(n);s=(0,i.Z)({},e,a)}return this.isDetached()?s[e]='':(s[e]=s[e]||'',s=k(k({},s),this.getProperties().reduce((function(t,e){return t[e.getName()]='',t}),{}))),t.camelCase?Object.keys(s).reduce((function(t,e){return t[camelCase(e)]=s[e],t}),{}):s}},{key:"getSplitSeparator",value:function(){return new RegExp("".concat(this.get('separator'),"(?![^\\(]*\\))"))}},{key:"__upProperties",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e.__up&&!e.__clearIn){var n=this.__getParentProp();if(n)return n.__upProperties(this,e);this.__upTargetsStyleProps(e,t)}}},{key:"__upTargetsStyleProps",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,n=this.getStyleFromProps();if(this.isDetached()&&e){var r=e.getName();n=(0,i.Z)({},r,n[r])}this.__upTargetsStyle(n,t)}},{key:"_up",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.__setProperties(this.__getSplitValue(t.value),e),O.prototype._up.call(this,t,e)}},{key:"getStyle",value:function(t){return this.getStyleFromProps(t)}},{key:"__getFullValue",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.isDetached()||t.__clear?'':this.getStyleFromProps()[this.getName()]||''}},{key:"__getJoin",value:function(){var t=this.get('join');return(0,o.isString)(t)?t:this.get('separator')}},{key:"__styleHasProps",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getName(),n=this.getProperties(),i=n.map((function(t){return t.getName()})),s=[e].concat((0,r.Z)(i));return s.some((function(e){return!(0,o.isUndefined)(t[e])&&''!==t[e]}))}},{key:"__splitValue",value:function(t,e){return t.split(e).map((function(t){return t.trim()})).filter(Boolean)}},{key:"__splitStyleName",value:function(t,e,n){return this.__splitValue(t[e]||'',n)}},{key:"__getSplitValue",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'',e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.byName,r=this.getProperties(),i=4===r.length&&r.every((function(t){return P(t.getType())})),s=this.__splitValue(t,this.getSplitSeparator()),a={};return r.forEach((function(t,e){var r=s[e],l=(0,o.isUndefined)(r)?'':r;if(i){var c=s.length;l=s[e]||s[e%c+(1!=c&&c%2?1:0)]||l}var u=n?t.getName():t.getId();a[u]=l||''})),a}},{key:"__getPropsFromStyle",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.__styleHasProps(t))return null;var n=e.byName,r=this.getName(),i=this.getProperties(),s=this.getSplitSeparator(),a=this.get('fromStyle'),l=a?a(t,{property:this,name:r,separator:s}):{};return a||(l=this.__getSplitValue(t[r]||'',{byName:n}),i.forEach((function(e){var r=t[e.getName()],i=n?e.getName():e.getId();(0,o.isUndefined)(r)||''===r||(l[i]=r)}))),l}},{key:"__setProperties",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.getProperties().forEach((function(n){var r=t[n.getId()];n.__getFullValue()!==r&&n.upValue(r,e)}));var n=(0,o.keys)(t).map((function(e){return t[e]})).join(' ');this.set('value',n,{silent:!0})}},{key:"clear",value:function(){var t=this;return this.getProperties().map((function(e){return e.clear({__clearIn:!t.isDetached()})})),O.prototype.clear.call(this)}},{key:"hasValue",value:function(t){return this.getProperties().some((function(e){return e.hasValue(t)}))}},{key:"getFullValue",value:function(){return this.__getFullValue()}},{key:"__canClearProp",value:function(t){return this.isDetached()&&t.hasValue({noParent:!0})}}]),n}(O);function T(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function E(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=this.get('values');return t.camelCase?Object.keys(e).reduce((function(t,n){return t[(0,s.camelCase)(n)]=e[n],t}),{}):e}},{key:"getLabel",value:function(){var t;return null===(t=this.prop)||void 0===t?void 0:t.getLayerLabel(this)}},{key:"isSelected",value:function(){var t;return(null===(t=this.prop)||void 0===t?void 0:t.getSelectedLayer())===this}},{key:"select",value:function(){var t;return null===(t=this.prop)||void 0===t?void 0:t.selectLayer(this)}},{key:"remove",value:function(){var t;return null===(t=this.prop)||void 0===t?void 0:t.removeLayer(this)}},{key:"move",value:function(t){var e;return null===(e=this.prop)||void 0===e?void 0:e.moveLayer(this,t)}},{key:"getStylePreview",value:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return null===(t=this.prop)||void 0===t?void 0:t.getStylePreview(this,e)}},{key:"hasPreview",value:function(){var t;return!(null===(t=this.prop)||void 0===t||!t.get('preview'))}},{key:"upValues",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.set('values',E(E({},this.getValues()),t))}}]),n}(l.Model);function M(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,v.Z)(t);if(e){var i=(0,v.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,g.Z)(this,n)}}var A=function(t){(0,p.Z)(n,t);var e=M(n);function n(){return(0,f.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"initialize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prop=e.prop}}]),n}(l.Collection);A.prototype.model=D;var L=["__layers"];function R(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function N(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};_.callParentInit(_,this,t,e);var n=this.get('layers'),r=new A(n,{prop:this});r.property=this,r.properties=this.get('properties'),this.set('layers',r,{silent:!0}),this.on('change:selectedLayer',this.__upSelected),this.listenTo(r,'add remove',this.__upLayers),_.callInit(this,t,e)}},{key:"getLayers",value:function(){return this.__getLayers().models}},{key:"__getLayers",value:function(){return this.get('layers')}},{key:"getLayer",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.__getLayers().at(t)||null}},{key:"getSelectedLayer",value:function(){var t=this.get('selectedLayer');return t&&t.getIndex()>=0?t:null}},{key:"selectLayer",value:function(t){return this.set('selectedLayer',t,{__select:!0})}},{key:"selectLayerAt",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=this.getLayer(t);return e&&this.selectLayer(e)}},{key:"moveLayer",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=t?t.getIndex():-1;n>=0&&(0,o.isNumber)(e)&&e>=0&&e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={};this.getProperties().forEach((function(e){var r=e.getId(),i=t[r];n[r]=(0,o.isUndefined)(i)?e.getDefaultValue():i}));var r=this.get('layers').push({values:n},e);return r}},{key:"removeLayer",value:function(t){return this.get('layers').remove(t)}},{key:"removeLayerAt",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=this.getLayer(t);return e?this.removeLayer(e):null}},{key:"getLayerLabel",value:function(t){var e='';if(t){var n=this.get('layerLabel'),r=t.getValues(),i=t.getIndex();if(n)e=n(t,{index:i,values:r,property:this});else{var o=[];this.getProperties().map((function(t){o.push(r[t.getId()])})),e=o.filter(Boolean).join(' ')}}return e}},{key:"getStyleFromLayer",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.__getJoin(),a=this.__getJoinLayers(),l=this.get('toStyle'),c=this.getName(),u=t.getValues();if(l)e=l(u,{join:r,joinLayers:a,name:c,layer:t,property:this});else{var h=this.getProperties().map((function(t){var e=t.getName(),r=u[t.getId()],i=(0,o.isUndefined)(r)?t.getDefaultValue():r;if(n.number&&P(t.getType())){var s=t.parseValue(r,n.number);i="".concat(s.value).concat(s.unit)}return{name:e,value:i}}));e=this.isDetached()?h.reduce((function(t,e){return t[e.name]=e.value,t}),{}):(0,i.Z)({},this.getName(),h.map((function(t){return t.value})).join(r))}return n.camelCase?Object.keys(e).reduce((function(t,n){return t[(0,s.camelCase)(n)]=e[n],t}),{}):e}},{key:"getStylePreview",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={},r=this.get('preview');return r&&(n=this.getStyleFromLayer(t,e)),n}},{key:"getLayerSeparator",value:function(){var t=this.get('layerSeparator');return(0,o.isString)(t)?new RegExp("".concat(t,"(?![^\\(]*\\))")):t}},{key:"__upProperties",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.getSelectedLayer();n&&(n.upValues((0,i.Z)({},t.getId(),t.__getFullValue())),e.__up||this.__upTargetsStyleProps(e))}},{key:"__upLayers",value:function(t,e,n){this.__upTargetsStyleProps(n||e)}},{key:"__upTargets",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e.__select)return O.prototype.__upTargets.call(this,t,e)}},{key:"__upTargetsStyleProps",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.__upTargetsStyle(this.getStyleFromLayers(),t)}},{key:"__upTargetsStyle",value:function(t,e){return O.prototype.__upTargetsStyle.call(this,t,e)}},{key:"__upSelected",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.noEvent,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em.get('StyleManager'),i=this.getSelectedLayer(),o=null==i?void 0:i.getValues();o&&this.getProperties().forEach((function(t){var e=o[t.getId()];t.__getFullValue()!==e&&t.upValue(e,N(N({},n),{},{__up:!0}))})),!e&&r.__trgEv(r.events.layerSelect,{property:this})}},{key:"_up",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.__layers,r=void 0===n?[]:n,i=(0,h.Z)(t,L);return!this.isDetached()&&this.__setLayers(r),this.__upSelected({noEvent:!0},e),O.prototype._up.call(this,i,e)}},{key:"__setLayers",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.__getLayers(),n=t.map((function(t){return{values:t}}));e.length===n.length?n.map((function(t,n){var r;return null===(r=e.at(n))||void 0===r?void 0:r.upValues(t.values)})):this.__getLayers().reset(n),this.__upSelected({noEvent:!0})}},{key:"__parseValue",value:function(t){var e=this,n=this.parseValue(t);return n.__layers=t.split(I).map((function(t){return t.trim()})).map((function(t){return e.__parseLayer(t)})).filter(Boolean),n}},{key:"__parseLayer",value:function(t){var e=this.get('parseLayer'),n=t.split(F),r=this.getProperties();return e?e({value:t,values:n}):r.reduce((function(t,e,r){var i=n[r];return t[e.getId()]=(0,o.isUndefined)(i)?e.getDefaultValue():i,t}),{})}},{key:"__getLayersFromStyle",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.__styleHasProps(e))return null;var n=this.getName(),r=this.getProperties(),s=this.getLayerSeparator(),a=this.get('fromStyle'),l=a?a(e,{property:this,name:n,separatorLayers:s}):[];if(!a){var c=this.__splitStyleName(e,n,s).map((function(e){return e.split(t.getSplitSeparator())})).map((function(t){var e={};return r.forEach((function(n,r){var i=t[r];e[n.getId()]=(0,o.isUndefined)(i)?n.getDefaultValue():i})),e}));r.forEach((function(n){var r=n.getId();t.__splitStyleName(e,n.getName(),s).map((function(t){return(0,i.Z)({},r,t||n.getDefaultValue())})).forEach((function(t,e){c[e]=c[e]?N(N({},c[e]),t):t}))})),l=c}return(0,o.isArray)(l)?l:[l]}},{key:"getStyle",value:function(t){return this.getStyleFromLayers(t)}},{key:"getStyleFromLayers",value:function(t){var e=this,n={},r=this.getName(),i=this.getLayers(),s=this.getProperties();if(i.map((function(n){return e.getStyleFromLayer(n,t)})).forEach((function(t){(0,o.keys)(t).map((function(e){n[e]||(n[e]=[]),n[e].push(t[e])}))})),(0,o.keys)(n).map((function(t){n[t]=n[t].join(e.__getJoinLayers())})),this.isDetached())n[r]='',!i.length&&s.map((function(t){n[t.getName()]=''}));else{var a=s.reduce((function(t,e){return t[e.getName()]='',t}),{});n[r]=n[r]||'',n=N(N({},n),a)}return n}},{key:"__getJoinLayers",value:function(){var t=this.get('layerJoin'),e=this.get('layerSeparator');return t||((0,o.isString)(e)?e:t)}},{key:"__getFullValue",value:function(){return this.get('detached')?'':this.getStyleFromLayers()[this.getName()]}},{key:"hasValue",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.noParent,n=e&&this.getParentTarget();return this.getLayers().length>0&&!n}},{key:"clear",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.__getLayers().reset(),this.__upTargetsStyleProps(t),O.prototype.clear.call(this)}},{key:"__canClearProp",value:function(){return!1}}]),n}(_),H=["complete","partial"];function B(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function z(t){for(var e=1;e
\n
\n ")}},{key:"templateLabel",value:function(t){var e=this.pfx,n=this.em,r=t.parent,i=t.attributes,o=i.icon,s=void 0===o?'':o,a=i.info,l=void 0===a?'':a,c=null==n?void 0:n.getConfig('icons'),u=(null==c?void 0:c.close)||'';return"\n \n ").concat(t.getLabel(),"\n \n ").concat(r?'':"
").concat(u,"
"),"\n ")}},{key:"templateInput",value:function(t){return"\n
\n \n
\n ")}},{key:"initialize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,o.bindAll)(this,'__change','__updateStyle');var e=t.config||{},n=e.em;this.config=e,this.em=n,this.pfx=e.stylePrefix||'',this.ppfx=e.pStylePrefix||'',this.__destroyFn=this.destroy?this.destroy.bind(this):function(){};var r=this.model;r.view=this,this.onValueChange=(0,o.debounce)(this.onValueChange.bind(this),10),this.updateStatus=(0,o.debounce)(this.updateStatus.bind(this)),this.listenTo(r,'destroy remove',this.remove),this.listenTo(r,'change:visible',this.updateVisibility),this.listenTo(r,'change:name change:className change:full',this.render),this.listenTo(r,'change:value',this.onValueChange),this.listenTo(n,'change:device',this.onValueChange);var i=this.init&&this.init.bind(this);i&&i()}},{key:"remove",value:function(){var t=this;l.View.prototype.remove.apply(this,arguments),['em','input','$input','view'].forEach((function(e){return t[e]=null})),this.__destroyFn(this._getClbOpts())}},{key:"updateStatus",value:function(){var t,e=this.model,n=this.pfx,r=this.ppfx,i=this.config,o="".concat(r,"four-color"),s="".concat(r,"color-warn"),a=this.$el.children(".".concat(n,"label")),l=this.getClearEl(),c=l?l.style:{};a.removeClass("".concat(o," ").concat(s)),c.display='none',e.hasValue({noParent:!0})&&i.highlightChanged?(a.addClass(o),i.clearProperties&&(c.display='')):e.hasValue()&&i.highlightComputed&&a.addClass(s),null===(t=this.parent)||void 0===t||t.updateStatus()}},{key:"clear",value:function(t){t&&t.stopPropagation(),this.model.clear()}},{key:"getClearEl",value:function(){return this.clearEl||(this.clearEl=this.el.querySelector("[".concat(W,"]"))),this.clearEl}},{key:"inputValueChanged",value:function(t){t&&t.stopPropagation(),this.emit||this.model.upValue(t.target.value)}},{key:"onValueChange",value:function(t,e){this.setValue(this.model.getFullValue()),this.updateStatus()}},{key:"setValue",value:function(t){var e=this.model,n=(0,o.isUndefined)(t)||''===t?e.getDefaultValue():t;if(this.update)return this.__update(n);this.__setValueInput(n)}},{key:"__setValueInput",value:function(t){var e=this.getInputEl();e&&(e.value=t)}},{key:"getInputEl",value:function(){return this.input||(this.input=this.el.querySelector('input')),this.input}},{key:"updateVisibility",value:function(){this.el.style.display=this.model.isVisible()?'':'none'}},{key:"clearCached",value:function(){this.clearEl=null,this.input=null,this.$input=null}},{key:"__unset",value:function(){var t=this.unset&&this.unset.bind(this);t&&t(this._getClbOpts())}},{key:"__update",value:function(t){var e=this.update&&this.update.bind(this);e&&e(z(z({},this._getClbOpts()),{},{value:t}))}},{key:"__change",value:function(){for(var t=this.emit&&this.emit.bind(this),e=arguments.length,n=new Array(e),r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=e.complete,r=e.partial,i=((0,h.Z)(e,H),this.model),o=!1!==n&&!0!==r;(0,s.isObject)(t)?i.__upTargetsStyle(t,{avoidStore:!o}):i.upValue(t,{partial:!o})}},{key:"_getClbOpts",value:function(){var t=this.model;return{el:this.el,createdEl:this.createdEl,property:t,props:t.attributes,change:this.__change,updateStyle:this.__updateStyle}}},{key:"render",value:function(){this.clearCached();var t=this.pfx,e=this.model,n=this.el,r=this.$el,i=e.getName(),o=e.getType(),s=e.get('className')||'',a="".concat(t,"property"),l='number'===o?"".concat(t).concat(o," ").concat(t,"integer"):"".concat(t).concat(o);this.createdEl&&this.__destroyFn(this._getClbOpts()),r.empty().append(this.template(e)),r.find('[data-sm-label]').append(this.templateLabel(e));var c=this.create&&this.create.bind(this);this.createdEl=c&&c(this._getClbOpts()),r.find('[data-sm-fields]').append(this.createdEl||this.templateInput(e)),n.className="".concat(a," ").concat(l," ").concat(a,"__").concat(i," ").concat(s).trim(),n.className+=e.isFull()?" ".concat(a,"--full"):'';var u=this.onRender&&this.onRender.bind(this);u&&u(),this.setValue(e.getValue())}}]),n}(l.View);$.prototype.events=(0,i.Z)({change:'inputValueChanged'},"click [".concat(W,"]"),'clear');var q=n(9283);function G(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,v.Z)(t);if(e){var i=(0,v.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,g.Z)(this,n)}}var K=function(t){(0,p.Z)(n,t);var e=G(n);function n(){return(0,f.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"initialize",value:function(t){this.config=t.config||{},this.pfx=this.config.stylePrefix||'',this.properties=[],this.parent=t.parent;var e=this.collection;this.listenTo(e,'add',this.addTo),this.listenTo(e,'reset',this.render)}},{key:"addTo",value:function(t,e,n){this.add(t,null,n)}},{key:"add",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.parent,i=this.config,o=e||this.el,s=new t.typeView({model:t,config:i});r&&(s.parent=r),s.render();var a=s.el;this.properties.push(s),(0,q.$Q)(o,a,n.at)}},{key:"remove",value:function(){l.View.prototype.remove.apply(this,arguments),this.clearItems()}},{key:"clearItems",value:function(){this.properties.forEach((function(t){return t.remove()})),this.properties=[]}},{key:"render",value:function(){var t=this,e=this.$el,n=this.pfx;this.clearItems();var r=document.createDocumentFragment();return this.collection.forEach((function(e){return t.add(e,r)})),e.empty(),e.append(r),e.attr('class',"".concat(n,"properties")),this}}]),n}(l.View);function Y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function J(t){for(var e=1;e\n \n
\n ")}},{key:"remove",value:function(){var t;null===(t=this.props)||void 0===t||t.remove(),$.prototype.remove.apply(this,arguments)}},{key:"onValueChange",value:function(){}},{key:"onRender",value:function(){var t=this.model,e=this.pfx,n=t.get('properties');if(n.length&&!this.props){var r=t.isDetached(),i=new K({config:J(J({},this.config),{},{highlightComputed:r,highlightChanged:r}),collection:n,parent:this});i.render(),this.$el.find("#".concat(e,"input-holder")).append(i.el),this.props=i}}},{key:"clearCached",value:function(){$.prototype.clearCached.apply(this,arguments),this.props=null}}]),n}($);function tt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,v.Z)(t);if(e){var i=(0,v.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,g.Z)(this,n)}}var et=function(t){(0,p.Z)(n,t);var e=tt(n);function n(){return(0,f.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"events",value:function(){return{click:'select','click [data-close-layer]':'removeItem','mousedown [data-move-layer]':'initSorter','touchstart [data-move-layer]':'initSorter'}}},{key:"template",value:function(){var t=this.pfx,e=this.ppfx,n=this.em,r=null==n?void 0:n.getConfig('icons'),i=(null==r?void 0:r.close)||'',o=(null==r?void 0:r.move)||'';return"\n
\n
\n ").concat(o,"\n
\n
\n
\n
\n
\n
\n ").concat(i,"\n
\n
\n
\n ")}},{key:"initialize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.model,n=t.config||{};this.em=n.em,this.config=n,this.sorter=t.sorter,this.pfx=n.stylePrefix||'',this.ppfx=n.pStylePrefix||'',this.propertyView=t.propertyView;var r=this.propertyView.model;this.listenTo(e,'destroy remove',this.remove),this.listenTo(e,'change:values',this.updateLabel),this.listenTo(r,'change:selectedLayer',this.updateVisibility),e.view=this,e.set({droppable:0,draggable:1}),this.$el.data('model',e)}},{key:"initSorter",value:function(){var t;null===(t=this.sorter)||void 0===t||t.startSort(this.el)}},{key:"removeItem",value:function(t){t&&t.stopPropagation(),this.model.remove()}},{key:"select",value:function(){this.model.select()}},{key:"getPropertiesWrapper",value:function(){return this.propsWrapEl||(this.propsWrapEl=this.el.querySelector('[data-properties]')),this.propsWrapEl}},{key:"getPreviewEl",value:function(){return this.previewEl||(this.previewEl=this.el.querySelector('[data-preview]')),this.previewEl}},{key:"getLabelEl",value:function(){return this.labelEl||(this.labelEl=this.el.querySelector('[data-label]')),this.labelEl}},{key:"updateLabel",value:function(){var t=this.model,e=t.getLabel();if(this.getLabelEl().innerHTML=e,t.hasPreview()){var n=this.getPreviewEl(),r=t.getStylePreview({number:{min:-3,max:3}}),i=(0,o.keys)(r).map((function(t){return"".concat(t,":").concat(r[t])})).join(';');n.setAttribute('style',i)}}},{key:"updateVisibility",value:function(){var t=this.pfx,e=this.model,n=this.propertyView,r=this.getPropertiesWrapper(),i=e.isSelected();r.style.display=i?'':'none',this.$el[i?'addClass':'removeClass']("".concat(t,"active")),i&&r.appendChild(n.props.el)}},{key:"render",value:function(){var t=this.el,e=this.pfx,n=this.model;return t.innerHTML=this.template(),t.className="".concat(e,"layer"),n.hasPreview()&&(t.querySelector("[data-preview-box]").style.display=''),this.updateLabel(),this.updateVisibility(),this}}]),n}(l.View);function nt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,v.Z)(t);if(e){var i=(0,v.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,g.Z)(this,n)}}var rt=function(t){(0,p.Z)(n,t);var e=nt(n);function n(){return(0,f.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"initialize",value:function(t){var e=this.collection,n=t.config||{},r=n.em,i=n.stylePrefix||'',o=n.pStylePrefix||'';this.config=n,this.pfx=i,this.ppfx=o,this.propertyView=t.propertyView,this.className="".concat(i,"layers ").concat(o,"field"),this.listenTo(e,'add',this.addTo),this.listenTo(e,'reset',this.reset),this.items=[];var s=r?r.get('Utils'):'';this.sorter=s?new s.Sorter({container:this.el,ignoreViewChildren:1,containerSel:".".concat(i,"layers"),itemSel:".".concat(i,"layer"),pfx:n.pStylePrefix}):'',e.view=this,this.$el.data('model',e),this.$el.data('collection',e)}},{key:"addTo",value:function(t){var e=this.collection.indexOf(t);this.addToCollection(t,null,e)}},{key:"addToCollection",value:function(t,e,n){var r=e||null,i=this.propertyView,o=this.config,s=this.sorter,a=this.$el,l=new et({model:t,config:o,sorter:s,propertyView:i}),c=l.render().el;if(this.items.push(l),r)r.appendChild(c);else if(void 0!==n){var u='before';a.children().length===n&&(n--,u='after'),n<0?a.append(c):a.children().eq(n)[u](c)}else a.append(c);return c}},{key:"reset",value:function(t,e){this.clearItems(e),this.render()}},{key:"remove",value:function(){this.clearItems(),l.View.prototype.remove.apply(this,arguments)}},{key:"clearItems",value:function(){this.items.forEach((function(t){return t.remove()})),this.items=[]}},{key:"render",value:function(){var t=this,e=this.$el,n=this.sorter,r=document.createDocumentFragment();return e.empty(),this.collection.forEach((function(e){return t.addToCollection(e,r)})),e.append(r),e.attr('class',this.className),n&&(n.plh=null),this}}]),n}(l.View);function it(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ot(t){for(var e=1;e\n \n
\n \n ")}},{key:"init",value:function(){var t=this.model;this.listenTo(t.__getLayers(),'change reset',this.updateStatus)}},{key:"addLayer",value:function(){this.model.addLayer({},{at:0})}},{key:"setValue",value:function(){}},{key:"remove",value:function(){var t;null===(t=this.layersView)||void 0===t||t.remove(),Q.prototype.remove.apply(this,arguments)}},{key:"clearCached",value:function(){Q.prototype.clearCached.apply(this,arguments),this.layersView=null}},{key:"onRender",value:function(){var t=this.model,e=this.el,n=this.config,r=t.get('properties');if(r.length&&!this.props){var i=new K({config:ot(ot({},n),{},{highlightComputed:!1,highlightChanged:!1}),collection:r,parent:this});i.render();var o=new rt({collection:t.__getLayers(),config:n,propertyView:this});o.render(),e.querySelector('[data-layers-wrapper]').appendChild(o.el),this.props=i,this.layersView=o}}}]),n}(Q);function lt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ct(t){for(var e=1;e\n
\n
\n \n
\n
\n
\n
\n
\n
").concat(i,"
\n
\n \n ")}},{key:"__setValueInput",value:function(t){var e=this.model,n=this.el,r=e.getDefaultValue(),i=n.querySelector('[data-preview-box]'),o=n.querySelector('[data-preview]');i.style.display=t&&t!==r?'':'none',o.style.backgroundImage=t||e.getDefaultValue()}},{key:"openAssetManager",value:function(){var t,e=this,n=null===(t=this.em)||void 0===t?void 0:t.get('AssetManager');null==n||n.open({select:function(t,r){var i=(0,o.isString)(t)?t:t.get('src');e.model.upValue(i,{partial:!r}),r&&n.close()},types:['image'],accept:'image/*'})}}]),n}($);function ft(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,v.Z)(t);if(e){var i=(0,v.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,g.Z)(this,n)}}var dt=function(t){(0,p.Z)(n,t);var e=ft(n);function n(){return(0,f.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"templateInput",value:function(){return''}},{key:"init",value:function(){var t=this.model;this.listenTo(t,'change:unit',this.onValueChange),this.listenTo(t,'change:units',this.render)}},{key:"setValue",value:function(){}},{key:"onRender",value:function(){var t=this.ppfx,e=this.model,n=this.el;if(!this.inputInst){var r=e.input;r.ppfx=t,r.render(),n.querySelector(".".concat(t,"fields")).appendChild(r.el),this.input=r.inputEl.get(0),this.inputInst=r}}},{key:"clearCached",value:function(){$.prototype.clearCached.apply(this,arguments),this.inputInst=null}}]),n}($),pt=n(1511);function gt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,v.Z)(t);if(e){var i=(0,v.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,g.Z)(this,n)}}var vt=function(t){(0,p.Z)(n,t);var e=gt(n);function n(){return(0,f.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"setValue",value:function(t){var e;null===(e=this.inputInst)||void 0===e||e.setValue(t,{fromTarget:1,def:this.model.getDefaultValue()})}},{key:"remove",value:function(){var t=this;dt.prototype.remove.apply(this,arguments);var e=this.inputInst;e&&e.remove&&e.remove(),['inputInst','$color'].forEach((function(e){return t[e]=null}))}},{key:"__handleChange",value:function(t,e){this.model.upValue(t,{partial:e})}},{key:"onRender",value:function(){if(!this.inputInst){this.__handleChange=this.__handleChange.bind(this);var t=this.ppfx,e=this.model,n=this.em,r=this.el,i=new pt.Z({target:n,model:e,ppfx:t,onChange:this.__handleChange}).render();r.querySelector(".".concat(t,"fields")).appendChild(i.el),this.input=i.inputEl.get(0),this.inputInst=i}}}]),n}(dt);function mt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function yt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:[];return this.set('options',t),this}},{key:"addOption",value:function(t){if(t){var e=this.getOptions();this.setOptions([].concat((0,r.Z)(e),[t]))}return this}},{key:"getOptionId",value:function(t){return(0,s.isDef)(t.id)?t.id:t.value}},{key:"getOptionLabel",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.locale,i=void 0===r||r,s=((0,o.isString)(t)?this.getOption(t):t)||{},a=this.getOptionId(s),l=s.label||s.name||a,c=this.getId();return i&&(null===(e=this.em)||void 0===e?void 0:e.t("styleManager.options.".concat(c,".").concat(a)))||l}},{key:"initialize",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n\n \n
\n
\n
\n \n ")}},{key:"initialize",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n").concat(i,""))}));var i=this.el.querySelector("#".concat(e,"input-holder"));i.innerHTML=""),this.input=i.firstChild}}},{key:"__setValueInput",value:function(t){var e=this.model,n=this.getInputEl(),r=e.getOptions()[0],i=r?e.getOptionId(r):'';n&&(n.value=t||i)}}]),n}($);function Ct(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function kt(t){for(var e=1;e")}},{key:"onRender",value:function(){var t=this.pfx,e=this.ppfx,n=this.model,r="".concat(e,"radio-item-label"),i=n.getName(),o=n.getOptions(),s="".concat(t,"radio ").concat(t,"radio-").concat(i),a=n.cid;if(!this.input){var l=[];o.forEach((function(o){var c=o.className?"".concat(o.className," ").concat(t,"icon ").concat(r):'',u=n.getOptionId(o),h="".concat(i,"-").concat(u,"-").concat(a),f=c?'':n.getOptionLabel(u),d=o.title?"title=\"".concat(o.title,"\""):'',p=n.getValue()===u?'checked':'';l.push("\n
\n \n \n
\n "))}));var c=this.el.querySelector(".".concat(e,"field"));c.innerHTML="
").concat(l.join(''),"
"),this.input=c.firstChild}}},{key:"__setValueInput",value:function(t){var e,n=this.model,r=t||n.getDefaultValue(),i=null===(e=this.getInputEl())||void 0===e?void 0:e.querySelector("[value=\"".concat(r,"\"]"));i&&(i.checked=!0)}}]),n}(Ot),Et=n(7610);function jt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Dt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};O.callParentInit(O,this,t,e);var n=this.get('unit'),r=this.get('units');this.input=(0,s.hasWin)()&&new Et.Z({model:this}),r.length&&!n&&this.set('unit',r[0],{silent:1}),O.callInit(this,t,e)}},{key:"__getClearProps",value:function(){return Dt(Dt({},O.prototype.__getClearProps()),{},{unit:''})}},{key:"parseValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=O.prototype.parseValue.apply(this,arguments),r=this.input.validateInputValue(n.value,Dt({deepCheck:1},e)),i=r.value,o=r.unit;return n.value=i,n.unit=o,n}},{key:"getFullValue",value:function(){var t=this.get('value'),e=this.get('unit');return t=(0,o.isUndefined)(t)?'':t,e=!(0,o.isUndefined)(e)&&t?e:'',t="".concat(t).concat(e),O.prototype.getFullValue.apply(this,[t])}}]),n}(O);function Lt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Rt(t){for(var e=1;e\n \n \n ")}},{key:"getSliderEl",value:function(){return this.slider||(this.slider=this.el.querySelector('input[type=range]')),this.slider}},{key:"inputValueChanged",value:function(){this.model.upValue(this.getSliderEl().value)}},{key:"inputValueChangedSoft",value:function(){this.model.upValue(this.getSliderEl().value,{partial:!0})}},{key:"setValue",value:function(t){var e=this.model,n=e.parseValue(t);this.getSliderEl().value=''===t?e.getDefaultValue():parseFloat(n.value),dt.prototype.setValue.apply(this,arguments)}},{key:"onRender",value:function(){dt.prototype.onRender.apply(this,arguments),this.model.get('showInput')||(this.inputInst.el.style.display='none')}},{key:"clearCached",value:function(){dt.prototype.clearCached.apply(this,arguments),this.slider=null}}]),n}(dt);const Bt=c().Collection.extend(m.Z).extend({extendViewApi:1,init:function(){var t=this.opts,e=this.em,n=t.module||(null==e?void 0:e.get('StyleManager'));n&&(n.__listenAdd(this,n.events.propertyAdd),n.__listenRemove(this,n.events.propertyRemove))},types:[{id:'stack',model:V,view:at,isType:function(t){if(t&&'stack'==t.type)return t}},{id:'composite',model:_,view:Q,isType:function(t){if(t&&'composite'==t.type)return t}},{id:'file',model:O,view:ht,isType:function(t){if(t&&'file'==t.type)return t}},{id:'color',model:O,view:vt,isType:function(t){if(t&&'color'==t.type)return t}},{id:'select',model:wt,view:Ot,isType:function(t){if(t&&'select'==t.type)return t}},{id:'radio',model:Pt,view:Tt,isType:function(t){if(t&&'radio'==t.type)return t}},{id:'slider',model:Zt,view:Ht,isType:function(t){if(t&&'slider'==t.type)return t}},{id:'integer',model:At,view:dt,isType:function(t){if(t&&'integer'==t.type)return t}},{id:'number',model:At,view:dt,isType:function(t){if(t&&'number'==t.type)return t}},{id:'base',model:O,view:$,isType:function(t){return t.type='base',t}}]});var zt=["extend"];function Ut(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Wt(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},r=n.em;this.em=r;var i=t||{},s=this.buildProperties(i.buildProps),a=this.get('name')||'',l=[];!this.get('id')&&this.set('id',a.replace(/ /g,'_').toLowerCase()),l=(l=s?this.extendProperties(s):this.get('properties').map((function(t){return(0,o.isString)(t)?e.buildProperties(t)[0]:t})).filter(Boolean)).map((function(t){return e.checkExtend(t)}));var c=new Bt(l,{em:r});c.sector=this,this.set('properties',c)}},{key:"getId",value:function(){return this.get('id')}},{key:"getName",value:function(){var t,e=this.getId();return(null===(t=this.em)||void 0===t?void 0:t.t("styleManager.sectors.".concat(e)))||this.get('name')}},{key:"setName",value:function(t){return this.set('name',t)}},{key:"isOpen",value:function(){return!!this.get('open')}},{key:"setOpen",value:function(t){return this.set('open',t)}},{key:"isVisible",value:function(){return!!this.get('visible')}},{key:"getProperties",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.get('properties'),n=e.models?(0,r.Z)(e.models):e;return n.filter((function(e){var n=!0;(t.withValue&&(n=e.hasValue({noParent:!0})),t.withParentValue)&&(n=!e.hasValue({noParent:!0})&&e.hasValue());return n}))}},{key:"getProperty",value:function(t){return this.getProperties().filter((function(e){return e.get('id')===t}))[0]||null}},{key:"addProperty",value:function(t,e){return this.get('properties').add(this.checkExtend(t),e)}},{key:"extendProperties",value:function(t,e,n){for(var r=t.length,i=e||this.get('properties'),s=this.get('extendBuilded'),a=[],l=0,c=i.length;l1&&void 0!==arguments[1]?arguments[1]:{},n=e.module,r=e.em;this.em=r,this.module=n,this.listenTo(this,'reset',this.onReset)}},{key:"model",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.collection.em;return new qt(t,Kt(Kt({},e),{},{em:n}))}},{key:"onReset",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.previousModels||[];n.forEach((function(t){return t.get('properties').reset()}))}}]),n}(l.Collection),Xt=n(885),Qt=["extend"];function te(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ee(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.from||'',i=this.props[r||t]||{},s=ee(ee({},i),{},{property:t},e);return s.properties&&(0,o.isFunction)(s.properties)&&(s.properties=s.properties()),this.props[t]=s,s}},{key:"get",value:function(t){return this.props[t]||null}},{key:"build",value:function(t){var e=this,n=[];return((0,o.isString)(t)?[t]:t).forEach((function(t){n.push(e.get(t)||{property:t})})),n}}]),t}(),oe=n(168),se=n(1629);function ae(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,v.Z)(t);if(e){var i=(0,v.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,g.Z)(this,n)}}var le=function(t){(0,p.Z)(n,t);var e=ae(n);function n(){return(0,f.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"template",value:function(t){var e,n=t.pfx,r=t.label,i=null===(e=this.em)||void 0===e?void 0:e.getConfig('icons'),o=(null==i?void 0:i.caret)||'',s="".concat(n,"sector-");return(0,se.Z)(ne||(ne=(0,oe.Z)(["\n
\n
$","
\n
","
\n
\n "])),s,s,o,s,r)}},{key:"events",value:function(){return{'click [data-sector-title]':'toggle'}}},{key:"initialize",value:function(t){var e=t.config||{},n=this.model,r=e.em;this.config=e,this.em=r,this.pfx=e.stylePrefix||'',this.listenTo(n,'destroy remove',this.remove),this.listenTo(n,'change:open',this.updateOpen),this.listenTo(n,'change:visible',this.updateVisibility)}},{key:"updateOpen",value:function(){var t=this.$el,e=this.model,n=this.pfx,r=e.isOpen();t[r?'addClass':'removeClass']("".concat(n,"open")),this.getPropertiesEl().style.display=r?'':'none'}},{key:"updateVisibility",value:function(){this.el.style.display=this.model.isVisible()?'':'none'}},{key:"getPropertiesEl",value:function(){var t=this.$el,e=this.pfx;return t.find(".".concat(e,"properties")).get(0)}},{key:"toggle",value:function(){var t=this.model;t.setOpen(!t.get('open'))}},{key:"renderProperties",value:function(){var t=this.model,e=this.config,n=t.get('properties');if(n){var r=new K({collection:n,config:e});this.$el.append(r.render().el)}}},{key:"render",value:function(){var t=this.pfx,e=this.model,n=this.$el,r=e.getId(),i=e.getName();return n.html(this.template({pfx:t,label:i})),this.renderProperties(),n.attr('class',"".concat(t,"sector ").concat(t,"sector__").concat(r," no-select")),this.updateOpen(),this}}]),n}(l.View);function ce(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,v.Z)(t);if(e){var i=(0,v.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,g.Z)(this,n)}}var ue=function(t){(0,p.Z)(n,t);var e=ce(n);function n(){return(0,f.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"initialize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.module,n=t.config,r=void 0===n?{}:n,i=this.collection;this.pfx=r.stylePrefix||'',this.ppfx=r.pStylePrefix||'',this.config=r,this.module=e,this.listenTo(i,'add',this.addTo),this.listenTo(i,'reset',this.render)}},{key:"remove",value:function(){var t=this;l.View.prototype.remove.apply(this,arguments),['config','module','em'].forEach((function(e){return t[e]={}}))}},{key:"addTo",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.addToCollection(t,null,n)}},{key:"addToCollection",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.config,i=this.el,o=e||i,s=new le({model:t,config:r}).render().el;return(0,q.$Q)(o,s,n.at),s}},{key:"render",value:function(){var t=this,e=this.$el,n=this.pfx,r=this.ppfx;e.empty();var i=document.createDocumentFragment();return this.collection.each((function(e){return t.addToCollection(e,i)})),e.append(i),e.addClass("".concat(n,"sectors ").concat(r,"one-bg ").concat(r,"two-color")),this}}]),n}(l.View);function he(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function fe(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};(0,o.bindAll)(this,'__clearStateTarget'),this.__initConfig(u,r);var i=this.config,s=i.em,a=i.pStylePrefix;a&&(i.stylePrefix=a+i.stylePrefix),this.builtIn=new ie,t=new Bt([],{em:s,module:this}),e=new Jt([],fe(fe({},i),{},{module:this}));var c=new l.Model({targets:[]});this.model=c,this.__listenAdd(e,ve),this.__listenRemove(e,me),this.__listenUpdate(e,ye);var h='component:toggled component:update:classes change:state change:device frame:resized selector:type',f=(0,o.debounce)((function(){return n.__upSel()}));c.listenTo(s,h,f),c.listenTo(s,'component:toggled',this.__clearStateTarget);var d=(0,o.debounce)((function(){n.__upProps(),n.__trgCustom()}));c.listenTo(s,'styleable:change undo redo',d);var p=(0,o.debounce)((function(){return n.__trgCustom()}));return c.listenTo(s,"".concat(Ce," ").concat(ke),p),c.on('change:lastTarget',(function(){return s.trigger(ke,n.getSelected())})),this},__upSel:function(){this.select(this.em.getSelectedAll())},__trgCustom:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.__ctn=this.__ctn||t.container,this.em.trigger(this.events.custom,{container:this.__ctn})},__trgEv:function(t){for(var e,n=arguments.length,r=new Array(n>1?n-1:0),i=1;i2&&void 0!==arguments[2]?arguments[2]:{},i=this.getSector(t);return i||(n.id=t,i=e.add(n,r)),i},getSector:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.where({id:t})[0];return!r&&n.warn&&this._logNoSector(t),r||null},getSectors:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e&&e.models?t.array?(0,r.Z)(e.models):e:[];return t.visible?n.filter((function(t){return t.isVisible()})):n},removeSector:function(t){return this.getSectors().remove(this.getSector(t,{warn:1}))},addProperty:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.getSector(t,{warn:1}),i=null;return r&&(i=r.addProperty(e,n)),i},getProperty:function(t,e){var n,r=this.getSector(t,{warn:1});return r&&(n=r.get('properties').filter((function(t){return t.get('property')===e||t.get('id')===e}))[0]),n||null},getProperties:function(t){var e=null,n=this.getSector(t,{warn:1});return n&&(e=n.get('properties')),e},removeProperty:function(t,e){var n=this.getProperties(t);return n?n.remove(this.getProperty(t,e)):null},select:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em,i=(0,o.isArray)(t)?t:[t],a=n.stylable,l=r.get('CssComposer'),c=[];i.filter(Boolean).forEach((function(t){var e=t;if((0,o.isString)(t)){var n=l.getRule(t)||l.setRule(t);!(0,o.isUndefined)(a)&&n.set({stylable:a}),e=n}c.push(e)}));var u=n.component||c.filter((function(t){return(0,s.isComponent)(t)})).reverse()[0];c=c.map((function(t){return e.getModelToStyle(t)}));var h=r.getState(),f=c.slice().reverse()[0],d=this.getParentRules(f,{state:h,component:u}),p=this.__getStateTarget();return r.skip((function(){var t;if(h&&null!=f&&null!==(t=f.getState)&&void 0!==t&&t.call(f)){var e=f.getStyle();p?p.setStyle(e):p=l.getAll().add({selectors:'gjs-selected',style:e,shallow:!0,important:!0})}else p&&(l.remove(p),p=null)})),this.model.set({targets:c,lastTarget:f,lastTargetParents:d,stateTarget:p,component:u}),this.__upProps(n),c},getSelected:function(){return this.model.get('lastTarget')||null},getSelectedAll:function(){return this.model.get('targets')},getSelectedParents:function(){return this.model.get('lastTargetParents')||[]},__getStateTarget:function(){return this.model.get('stateTarget')||null},addStyleTargets:function(t,e){this.getSelectedAll().map((function(n){return n.addStyle(t,e)}));var n=this.getSelected(),r=this.__getStateTarget();n&&(null==r||r.setStyle(n.getStyle(),e))},getBuiltIn:function(t){return this.builtIn.get(t)},getBuiltInAll:function(){return this.builtIn.props},addBuiltIn:function(t,e){return this.builtIn.add(t,e)},getModelToStyle:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em,i=n.skipAdd;if(r&&null!==(e=t)&&void 0!==e&&e.toHTML){var o,s=r.getConfig(),a=r.get('UndoManager'),l=r.get('CssComposer'),c=r.get('SelectorManager'),u=c?c.getConfig():{},h=s.devicePreviewMode?'':r.get('state'),f=t.get('classes'),d=f.getStyleable(),p=d.length,g=!u.componentFirst||n.useClasses,v={noCount:1},m={state:h,addOpts:v};if(a.stop(),p&&g){var y=r.getCurrentMedia();(o=l.get(d,h,y))||i||(o=l.add(d,h,y,{},v))}else if(s.avoidInlineStyle){var b=t.getId();!(o=l.getIdRule(b,m))&&!i&&(o=l.setIdRule(b,{},m)),t.is('wrapper')&&o.set('wrapper',1,v)}o&&(t=o),a.start()}return t},getParentRules:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.state,r=e.component,i=this.em,s=[];if(i&&t){var a=r,l=i.get('CssComposer'),c=i.get('CodeManager').getGenerator('css'),u=t.toHTML?t:t.getComponent(),h={combination:!0,array:!0},f=[],d=[],p=[];u?(f=l.getRules("#".concat(u.getId())),p=(d=a?l.getRules(a.getSelectors().getFullName(h)):[]).concat(f)):(f=a?l.getRules("#".concat(a.getId())):[],d=l.getRules(t.getSelectors().getFullName(h)),p=f.concat(d));var g=p.filter((function(t){return(0,o.isUndefined)(n)?1:t.get('state')===n})).sort(c.sortRules).reverse();s=g.slice(g.indexOf(t)+1)}return s},addType:function(e,n){t.addType(e,n)},getType:function(e){return t.getType(e)},getTypes:function(){return t.getTypes()},createType:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.model,r=void 0===n?{}:n,i=e.view,o=void 0===i?{}:i,s=this.config,a=this.getType(t);if(a)return new a.view(fe({model:new a.model(r),config:s},o))},render:function(){var t=this.config,r=this.em,i=n&&n.el;return(n=new ue({el:i,em:r,config:t,collection:e,module:this})).render().el},_logNoSector:function(t){var e=this.em;e&&e.logWarning("'".concat(t,"' sector not found"))},__upProps:function(t){var n=this,r=this.getSelected();if(r){var i=this.model.get('component'),o=this.getSelectedParents(),s=r.getStyle(),a=o.map((function(t){return{target:t,style:t.getStyle()}}));e.map((function(e){e.getProperties().map((function(e){n.__upProp(e,s,a,t)}))})),e.forEach((function(t){var n=t.getProperties();n.forEach((function(t){var n=t.__checkVisibility({target:r,component:i,sectors:e});t.set('visible',n)}));var o=n.some((function(t){return t.isVisible()}));t.set('visible',o)}))}},__upProp:function(t,e,n,r){var i=this,o=t.getName(),s=e[o],a=Pe(s),l='stack'===t.getType(),c='composite'===t.getType(),u=fe(fe({},r),{},{__up:!0}),h=!c&&!l,f=l?t.__getLayersFromStyle(e):[],d=c?t.__getPropsFromStyle(e):{},p=a?s:null,g=null;if(l&&null===f||c&&null===d){var v=l?'__getLayersFromStyle':'__getPropsFromStyle',m=n.filter((function(e){return null!==t[v](e.style)}))[0];if(m){p=m.style[o],g=m.target;var y=t[v](m.style);l?f=y:d=y}}else if(!a){p=null;var b=n.filter((function(t){return Pe(t.style[o])}))[0];b&&(p=b.style[o],g=b.target)}if(t.__setParentTarget(g),h&&t.__getFullValue()!==p&&t.upValue(p,u),l&&t.__setLayers(f||[]),c){var w=t.getProperties();if(t.isDetached()){var x=t.__getPropsFromStyle(e,{byName:!0})||{},O=n.map((function(e){return fe(fe({},e),{},{style:t.__getPropsFromStyle(e.style,{byName:!0})||{}})}));w.map((function(t){return i.__upProp(t,x,O,r)}))}else t.__setProperties(d||{},u),t.getProperties().map((function(t){return t.__setParentTarget(g)}))}},destroy:function(){[t,e].forEach((function(t){t.reset(),t.stopListening()})),n&&n.remove(),[t,e,n].forEach((function(t){return{}})),this.em={},this.config={},this.builtIn={},this.model={}}})}},6388:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>j,evAll:()=>_,evCustom:()=>E,evPfx:()=>T});var r=n(4942),i=n(9050);const o={stylePrefix:'trt-',appendTo:'',optionsTarget:[{value:!1},{value:'_blank'}]};var s=n(6602),a=n(885),l=n(2316),c=n.n(l),u=n(6183);function h(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function f(t){for(var e=1;e").concat(e,"")},templateInput:function(){var t=this.clsField;return"
")},initialize:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.config,r=void 0===n?{}:n,i=this.model,o=this.eventCapture,s=i.target,l=i.attributes.type;this.config=r,this.em=r.em,this.pfx=r.stylePrefix||'',this.ppfx=r.pStylePrefix||'',this.target=s;var c=this.ppfx;this.clsField="".concat(c,"field ").concat(c,"field-").concat(l),[['change:value',this.onValueChange],['remove',this.removeView]].forEach((function(e){var n=(0,a.Z)(e,2),r=n[0],o=n[1];i.off(r,o),t.listenTo(i,r,o)})),i.view=this,this.listenTo(i,'change:label',this.render),this.listenTo(i,'change:placeholder',this.rerender),this.events={},o.forEach((function(e){return t.events[e]='onChange'})),this.delegateEvents(),this.init()},getClbOpts:function(){return{component:this.target,trait:this.model,elInput:this.getInputElem()}},removeView:function(){this.remove(),this.removed()},init:function(){},removed:function(){},onRender:function(){},onUpdate:function(){},onEvent:function(){},onChange:function(t){var e=this.getInputElem();e&&!(0,i.isUndefined)(e.value)&&this.model.set('value',e.value),this.onEvent(f(f({},this.getClbOpts()),{},{event:t}))},getValueForTarget:function(){return this.model.get('value')},setInputValue:function(t){var e=this.getInputElem();e&&(e.value=t)},onValueChange:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(n.fromTarget)this.setInputValue(t.get('value')),this.postUpdate();else{var r=this.getValueForTarget();t.setTargetValue(r,n)}},renderLabel:function(){var t=this.$el,e=this.target,n=this.getLabel(),r=this.templateLabel(e);this.createLabel&&(r=this.createLabel({label:n,component:e,trait:this})||''),t.find('[data-label]').append(r)},getLabel:function(){var t=this.em,e=this.model.attributes,n=e.label,r=e.name;return t.t("traitManager.traits.labels.".concat(r))||(0,u.capitalize)(n||r).replace(/-/g,' ')},getComponent:function(){return this.target},getInputEl:function(){if(!this.$input){var t=this.em,e=this.model,n=e,r=e.attributes.name,o=n.get('placeholder')||n.get('default')||'',s=n.get('type')||'text',a=n.get('min'),l=n.get('max'),c=this.getModelValue(),u=d("")),h=t.t("traitManager.traits.attributes.".concat(r))||{};u.attr(h),(0,i.isUndefined)(c)||(n.set({value:c},{silent:!0}),u.prop('value',c)),a&&u.prop('min',a),l&&u.prop('max',l),this.$input=u}return this.$input.get(0)},getInputElem:function(){var t=this.input,e=this.$input;return t||e&&e.get&&e.get(0)||this.getElInput()},getModelValue:function(){var t,e=this.model,n=this.target,r=e.get('name');if(e.get('changeProp'))t=n.get(r);else{var o=n.get('attributes');t=e.get('value')||o[r]}return(0,i.isUndefined)(t)?'':t},getElInput:function(){return this.elInput},renderField:function(){var t=this.$el,e=this.appendInput,n=this.model,r=t.find('[data-input]'),o=r[r.length-1],s=n.el;s||(s=this.createInput?this.createInput(this.getClbOpts()):this.getInputEl()),(0,i.isString)(s)?(o.innerHTML=s,this.elInput=o.firstChild):(e?o.appendChild(s):o.insertBefore(s,o.firstChild),this.elInput=s),n.el=this.elInput},hasLabel:function(){var t=this.model.attributes.label;return!this.noLabel&&!1!==t},rerender:function(){this.model.el=null,this.render()},postUpdate:function(){this.onUpdate(this.getClbOpts())},render:function(){var t=this.$el,e=this.pfx,n=this.ppfx,r=this.model.attributes,o=r.type,s=r.id,a=this.hasLabel&&this.hasLabel(),l="".concat(e,"trait");this.$input=null;var c="
\n ").concat(a?"
"):'',"\n
\n ").concat(this.templateInput?(0,i.isFunction)(this.templateInput)?this.templateInput(this.getClbOpts()):this.templateInput:'',"\n
\n
");return t.empty().append(c),a&&this.renderLabel(),this.renderField(),this.el.className="".concat(l,"__wrp ").concat(l,"__wrp-").concat(s),this.postUpdate(),this.onRender(this.getClbOpts()),this}}),g=s.Z.extend({ns:'Traits',itemView:p,reuseView:1,initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.config||{},n=e.stylePrefix||'',r=t.editor;this.config=e,this.em=r,this.pfx=n,this.ppfx=e.pStylePrefix||'',this.className="".concat(n,"traits"),this.listenTo(r,'component:toggled',this.updatedCollection)},updatedCollection:function(){var t=this.ppfx,e=this.className,n=this.em.getSelected();this.el.className="".concat(e," ").concat(t,"one-bg ").concat(t,"two-color"),this.collection=n?n.get('traits'):[],this.render()}});var v=c().$;const m=p.extend({init:function(){this.listenTo(this.model,'change:options',this.rerender)},templateInput:function(){var t=this.ppfx,e=this.clsField;return"
\n
\n
\n
\n
\n
")},getInputEl:function(){if(!this.$input){var t=this.model,e=this.em,n=t.get('name'),r=t.get('options')||[],o=[],s='',this.$input=v(s);var a=t.getTargetValue(),l=o.indexOf(a)>=0?a:t.get('default');!(0,i.isUndefined)(l)&&this.$input.val(l)}return this.$input.get(0)}}),y=p.extend({appendInput:0,templateInput:function(){var t=this.ppfx,e=this.clsField;return"")},onChange:function(){var t=this.getInputElem().checked;this.model.set('value',this.getCheckedValue(t))},getCheckedValue:function(t){var e=t,n=this.model.attributes,r=n.valueTrue,o=n.valueFalse;return e&&!(0,i.isUndefined)(r)&&(e=r),e||(0,i.isUndefined)(o)||(e=o),e},getInputEl:function(){for(var t=!this.$input,e=arguments.length,n=new Array(e),r=0;r").concat(s,"")}});var k=n(9304);function S(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function P(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.__initConfig(o,n);var r=this.config,s=new l.Model;this.model=s;var a=this.em,c=r.pStylePrefix;this.types=P({},t),c&&(r.stylePrefix="".concat(c).concat(r.stylePrefix));var u=(0,i.debounce)((function(){return e.__upSel()}));s.listenTo(a,'component:toggled',u);var h=(0,i.debounce)((function(){return e.__onUp()}));return s.listenTo(a,'trait:update',h),this},__upSel:function(){this.select(this.em.getSelected())},__onUp:function(){this.select(this.getSelected())},select:function(t){var e=t?t.getTraits():[];this.model.set({component:t,traits:e}),this.__trgCustom()},getSelected:function(){return this.model.get('component')||null},getCurrent:function(){return this.model.get('traits')||[]},__trgCustom:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.__ctn=this.__ctn||t.container,this.em.trigger(this.events.custom,{container:this.__ctn})},postRender:function(){this.__appendTo()},getTraitsViewer:function(){return this.view},addType:function(t,e){var n=this.getType('text');this.types[t]=n.extend(e)},getType:function(t){return this.getTypes()[t]},getTypes:function(){return this.types},render:function(){var t=this.view,e=this.getConfig(),n=t&&t.el;return(t=new g({el:n,collection:[],editor:e.em,config:e})).itemsView=this.getTypes(),t.updatedCollection(),this.view=t,t.el},destroy:function(){this.__destroy()}})}},8202:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var r=n(2982),i=n(4942),o=n(3410),s=n.n(o),a=n(9050);function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function c(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};n=c(c({},o),f),t=n.em,this.em=t,n._disable&&(n=c(c({},n),{},{maximumStackLength:0}));var d=!0;return(e=new(s())(c({track:!0,register:[]},n))).changeUndoType('change',{condition:function(t){var e=t.get('_undo');if(e){var n=t.get('_undoexc');if((0,a.isArray)(n)&&u(t).some((function(t){return n.indexOf(t)>=0})))return!1;if((0,a.isBoolean)(e))return!0;if((0,a.isArray)(e)&&u(t).some((function(t){return e.indexOf(t)>=0})))return!0}return!1},on:function(t,e,n){!i&&(i=t.previousAttributes());var r=n||e||{};if(r.noUndo&&setTimeout((function(){i=null})),!l(r)){var o=t.toJSON({fromUndo:d}),s={object:t,before:i,after:o};if(i=null,!(0,a.isEmpty)(o))return s}}}),e.changeUndoType('add',{on:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!l(n)&&h.isRegistered(e))return{object:e,before:void 0,after:t,options:c(c({},n),{},{fromUndo:d})}}}),e.changeUndoType('remove',{on:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!l(n)&&h.isRegistered(e))return{object:e,before:t,after:void 0,options:c(c({},n),{},{fromUndo:d})}}}),e.changeUndoType('reset',{undo:function(t,e){t.reset(e,{fromUndo:d})},redo:function(t,e,n){t.reset(n,{fromUndo:d})},on:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!l(e)&&h.isRegistered(t))return{object:t,before:e.previousModels,after:(0,r.Z)(t.models),options:c(c({},e),{},{fromUndo:d})}}}),e.on('undo redo',(function(){t.trigger('change:canvasOffset'),t.getSelectedAll().map((function(t){return t.trigger('rerender:layer')}))})),['undo','redo'].forEach((function(n){return e.on(n,(function(){return t.trigger(n)}))})),this},postLoad:function(){n.trackSelection&&t&&this.add(t.get('selected'))},getConfig:function(){return n},add:function(t){return e.register(t),this},remove:function(t){return e.unregister(t),this},removeAll:function(){return e.unregisterAll(),this},start:function(){return e.startTracking(),this},stop:function(){return e.stopTracking(),this},undo:function(){var n=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return!t.isEditing()&&e.undo(n),this},undoAll:function(){return e.undoAll(),this},redo:function(){var n=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return!t.isEditing()&&e.redo(n),this},redoAll:function(){return e.redoAll(),this},hasUndo:function(){return e.isAvailable('undo')},hasRedo:function(){return e.isAvailable('redo')},isRegistered:function(t){return!!this.getInstance().objectRegistry.isRegistered(t)},getStack:function(){return e.stack},getStackGroup:function(){var t=[],e=[];return this.getStack().forEach((function(n){var r=n.get('magicFusionIndex');e.indexOf(r)<0&&(e.push(r),t.push(n))})),t},skip:function(t){this.stop(),t(),this.start()},getGroupedStack:function(){var t={},e=this.getStack();return e.forEach((function(e,n){var r=e.get('magicFusionIndex'),i=function(t,e){var n=t.attributes,r=n.type,i=n.after,o=n.before,s=n.object,a=n.options;return{index:e,type:r,after:i,before:o,object:s,options:void 0===a?{}:a}}(e,n);t[r]?t[r].push(i):t[r]=[i]})),Object.keys(t).map((function(e){var n=t[e];return{index:n[n.length-1].index,actions:n,labels:(0,a.unique)(n.reduce((function(t,e){var n,r=null===(n=e.options)||void 0===n?void 0:n.action;return r&&t.push(r),t}),[]))}}))},goToGroup:function(t){var e=this;if(t){var n=this.getPointer(),r=t.index-n;(0,a.times)(Math.abs(r),(function(){e[r<0?'undo':'redo'](!1)}))}},getPointer:function(){return this.getStack().pointer},clear:function(){return e.clear(),this},getInstance:function(){return e},destroy:function(){this.clear().removeAll(),[t,e,n,i].forEach((function(t){return{}})),this.em={}}}}},5610:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r=n(4942),i=n(5671),o=n(3144),s=n(9050),a=n(6183);function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function c(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return(0,i.Z)(this,t),this.opts={container:null,onStart:null,onDrag:null,onEnd:null,setPosition:null,getPosition:null,guidesStatic:null,guidesTarget:null,snapOffset:5,doc:0,scale:1},(0,s.bindAll)(this,'drag','stop','keyHandle','handleScroll'),this.setOptions(e),this.delta={x:0,y:0},this}return(0,o.Z)(t,[{key:"setOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.opts=c(c({},this.opts),t)}},{key:"toggleDrag",value:function(t){var e=this.getDocumentEl(),n=this.getContainerEl(),r=this.getWindowEl(),i=t?'on':'off',o={on:a.on,off:a.off};o[i](n,'mousemove dragover',this.drag),o[i](e,'mouseup dragend touchend',this.stop),o[i](e,'keydown',this.keyHandle),o[i](r,'scroll',this.handleScroll)}},{key:"handleScroll",value:function(){var t=this.lastScroll,e=this.delta,n=this.getScrollInfo(),r={x:n.x-t.x,y:n.y-t.y};this.move(e.x+r.x,e.y+r.y),this.lastScrollDiff=r}},{key:"start",value:function(t){var e=this.opts,n=e.onStart;this.toggleDrag(1),this.startPointer=this.getPointerPos(t),this.guidesStatic=(0,s.result)(e,'guidesStatic')||[],this.guidesTarget=(0,s.result)(e,'guidesTarget')||[],(0,s.isFunction)(n)&&n(t,this),this.startPosition=this.getStartPosition(),this.lastScrollDiff={x:0,y:0},this.globScrollDiff={x:0,y:0},this.drag(t)}},{key:"drag",value:function(t){var e=this,n=this.opts,r=this.lastScrollDiff,i=this.globScrollDiff,o=n.onDrag,a=this.startPointer,l=this.getPointerPos(t),u={x:i.x+r.x,y:i.y+r.y};this.globScrollDiff=u;var h={x:l.x-a.x+u.x,y:l.y-a.y+u.y};this.lastScrollDiff={x:0,y:0};var f=this.lockedAxis;'x'===(f=t.shiftKey?!f&&this.detectAxisLock(h.x,h.y):null)?h.x=a.x:'y'===f&&(h.y=a.y);var d=function(r){['x','y'].forEach((function(t){return r[t]=r[t]*(0,s.result)(n,'scale')})),e.delta=r,e.move(r.x,r.y),(0,s.isFunction)(o)&&o(t,e)},p=c({},h);if(this.currentPointer=l,this.lockedAxis=f,this.lastScroll=this.getScrollInfo(),d(h),this.guidesTarget.length){var g=this.snapGuides(p),v=g.newDelta,m=g.trgX,y=g.trgY;(m||y)&&d(v)}0===t.which&&this.stop(t)}},{key:"snapGuides",value:function(t){var e=this,n=t,r=this.trgX,i=this.trgY;return this.guidesTarget.forEach((function(n){n.x&&e.trgX||n.y&&e.trgY||(n.active=0,e.guidesStatic.forEach((function(o){if(!(n.y&&o.x||n.x&&o.y)){var a=n.y&&o.y,l=a?'y':'x',c=n[l],u=o[l],h=t[l],f=a?i:r;if(e.isPointIn(c,u)&&(0,s.isUndefined)(f)){var d=h-(c-u);e.setGuideLock(n,d)}}})))})),r=this.trgX,i=this.trgY,['x','y'].forEach((function(r){var i=r.toUpperCase(),o=e["trg".concat(i)];o&&!e.isPointIn(t[r],o.lock)&&(e.setGuideLock(o,null),o=null),o&&!(0,s.isUndefined)(o.lock)&&(n[r]=o.lock)})),{newDelta:n,trgX:this.trgX,trgY:this.trgY}}},{key:"isPointIn",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.offset,i=r||this.opts.snapOffset;return t>=e&&t<=e+i||t<=e&&t>=e-i}},{key:"setGuideLock",value:function(t,e){var n=(0,s.isUndefined)(t.x)?'Y':'X',r="trg".concat(n);return null!==e?(t.active=1,t.lock=e,this[r]=t):(delete t.active,delete t.lock,delete this[r]),t}},{key:"stop",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.delta,r=e.cancel,i=r?0:n.x,o=r?0:n.y;this.toggleDrag(),this.lockedAxis=null,this.move(i,o,1);var a=this.opts.onEnd;(0,s.isFunction)(a)&&a(t,this,{cancelled:r})}},{key:"keyHandle",value:function(t){(0,a.isEscKey)(t)&&this.stop(t,{cancel:1})}},{key:"move",value:function(t,e,n){var r=this.el,i=this.opts,o=this.startPosition;if(o){var a=i.setPosition,l=o.x+t,c=o.y+e;this.position={x:l,y:c,end:n},(0,s.isFunction)(a)&&a(this.position),r&&(r.style.left="".concat(l,"px"),r.style.top="".concat(c,"px"))}}},{key:"getContainerEl",value:function(){var t=this.opts.container;return t?[t]:this.getDocumentEl()}},{key:"getWindowEl",value:function(){return this.getContainerEl().map((function(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow}))}},{key:"getDocumentEl",value:function(t){var e=this.opts.doc;if(t=t||this.el,!this.docs){var n=[document];t&&n.push(t.ownerDocument),e&&n.push(e),this.docs=n}return this.docs}},{key:"getPointerPos",value:function(t){var e=this.opts.getPointerPosition,n=(0,a.getPointerEvent)(t);return e?e(t):{x:n.clientX,y:n.clientY}}},{key:"getStartPosition",value:function(){var t=this.el,e=this.opts.getPosition,n={x:0,y:0};return(0,s.isFunction)(e)?n=e():t&&(n={x:parseFloat(t.style.left),y:parseFloat(t.style.top)}),n}},{key:"getScrollInfo",value:function(){var t=this.opts.doc,e=t&&t.body;return{y:e?e.scrollTop:0,x:e?e.scrollLeft:0}}},{key:"detectAxisLock",value:function(t,e){var n=t,r=e,i=Math.abs(n),o=Math.abs(r);return r>=i||r<=-i?'x':n>o||n<-o?'y':void 0}}]),t}()},2579:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>pt});var r='undefined'!=typeof document?document:null,i='undefined'!=typeof window?window:null,o=Array.prototype,s=o.filter,a=o.indexOf,l=o.map,c=o.push,u=o.reverse,h=o.slice,f=o.splice,d=/^#[\w-]*$/,p=/^\.[\w-]*$/,g=/<.+>/,v=/^\w+$/;function m(t,e){return void 0===e&&(e=r),p.test(t)?e.getElementsByClassName(t.slice(1)):v.test(t)?e.getElementsByTagName(t):e.querySelectorAll(t)}function y(t,e){if(void 0===e&&(e=r),t){if(t.__cash)return t;var n=t;if(T(t)){if(e.__cash&&(e=e[0]),!(n=d.test(t)?e.getElementById(t.slice(1)):g.test(t)?ht(t):m(t,e)))return}else if(_(t))return this.ready(t);(n.nodeType||n===i)&&(n=[n]),this.length=n.length;for(var o=0,s=this.length;o=0})):n.value=i}))},w.clone=function(){return this.map((function(t,e){return e.cloneNode(!0)}))},w.detach=function(){return this.each((function(t,e){e.parentNode&&e.parentNode.removeChild(e)}))};var lt,ct=/^\s*<(\w+)[^>]*>/,ut=/^\s*<(\w+)\s*\/?>(?:<\/\1>)?\s*$/;function ht(t){if(function(){if(!lt){var t=r.createElement('table'),e=r.createElement('tr');lt={'*':r.createElement('div'),tr:r.createElement('tbody'),td:e,th:e,thead:t,tbody:t,tfoot:t}}}(),!T(t))return[];if(ut.test(t))return[r.createElement(RegExp.$1)];var e=ct.test(t)&&RegExp.$1,n=lt[e]||lt['*'];return n.innerHTML=t,b(n.childNodes).detach().get()}function ft(t,e,n){if(void 0!==e){var r=T(e);!r&&e.length?k(e,(function(e){return ft(t,e,n)})):k(t,r?function(t){t.insertAdjacentHTML(n?'afterbegin':'beforeend',e)}:function(t,r){return function(t,e,n){n?t.insertBefore(e,t.childNodes[0]):t.appendChild(e)}(t,r?e.cloneNode(!0):e,n)})}}b.parseHTML=ht,w.empty=function(){var t=this[0];if(t)for(;t.firstChild;)t.removeChild(t.firstChild);return this},w.append=function(){var t=this;return k(arguments,(function(e){ft(t,e)})),this},w.appendTo=function(t){return ft(b(t),this),this},w.html=function(t){if(void 0===t)return this[0]&&this[0].innerHTML;var e=t.nodeType?t[0].outerHTML:t;return this.each((function(t,n){n.innerHTML=e}))},w.insertAfter=function(t){var e=this;return b(t).each((function(t,n){var r=n.parentNode;e.each((function(e,i){r.insertBefore(t?i.cloneNode(!0):i,n.nextSibling)}))})),this},w.after=function(){var t=this;return k(u.apply(arguments),(function(e){u.apply(b(e).slice()).insertAfter(t)})),this},w.insertBefore=function(t){var e=this;return b(t).each((function(t,n){var r=n.parentNode;e.each((function(e,i){r.insertBefore(t?i.cloneNode(!0):i,n)}))})),this},w.before=function(){var t=this;return k(arguments,(function(e){b(e).insertBefore(t)})),this},w.prepend=function(){var t=this;return k(arguments,(function(e){ft(t,e,!0)})),this},w.prependTo=function(t){return ft(b(t),u.apply(this.slice()),!0),this},w.remove=function(){return this.detach().off()},w.replaceWith=function(t){var e=this;return this.each((function(n,r){var i=r.parentNode;if(i){var o=n?b(t).clone():b(t);if(!o[0])return e.remove(),!1;i.replaceChild(o[0],r),b(o[0]).after(o.slice(1))}}))},w.replaceAll=function(t){return b(t).replaceWith(this),this},w.text=function(t){return void 0===t?this[0]?this[0].textContent:'':this.each((function(e,n){n.textContent=t}))};var dt=r&&r.documentElement;w.offset=function(){var t=this[0];if(t){var e=t.getBoundingClientRect();return{top:e.top+i.pageYOffset-dt.clientTop,left:e.left+i.pageXOffset-dt.clientLeft}}},w.offsetParent=function(){return b(this[0]&&this[0].offsetParent)},w.position=function(){var t=this[0];if(t)return{left:t.offsetLeft,top:t.offsetTop}},w.children=function(t){var e=[];return this.each((function(t,n){c.apply(e,n.children)})),e=b(L(e)),t?e.filter((function(e,n){return P(n,t)})):e},w.contents=function(){var t=[];return this.each((function(e,n){c.apply(t,'IFRAME'===n.tagName?[n.contentDocument]:n.childNodes)})),b(t.length&&L(t))},w.find=function(t){for(var e=[],n=0,r=this.length;n{"use strict";n.d(e,{G1:()=>o,Mx:()=>s,L_:()=>a,sE:()=>l,FW:()=>c,pn:()=>u,dL:()=>h,$Q:()=>f,R3:()=>d,ut:()=>p,rw:()=>g,t3:()=>v,SJ:()=>m});var r=n(9050),i='attributes',o='transitionend oTransitionEnd transitionend webkitTransitionEnd',s=function(t){return t&&9===t.nodeType},a=function(t){var e=t&&t.parentNode;e&&e.removeChild(t)},l=function(t,e){return t.querySelectorAll(e)},c=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t&&t.setAttribute&&(0,r.each)(e,(function(e,n){return t.setAttribute(n,e)}))},u=function(t){return t&&!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},h=function(t,e){t.parentNode.replaceChild(e,t)},f=function(t,e,n){var i=t.childNodes,o=i.length,s=(0,r.isUndefined)(n)?o:n;(0,r.isString)(e)&&(t.insertAdjacentHTML('beforeEnd',e),e=t.lastChild,t.removeChild(e)),s>=o?t.appendChild(e):t.insertBefore(e,i[s])},d=function(t,e){return f(t,e)},p=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'',n=arguments.length>2?arguments[2]:void 0,i=document.createElement(t);return e&&(0,r.each)(e,(function(t,e){return i.setAttribute(e,t)})),n&&((0,r.isString)(n)?i.innerHTML=n:i.appendChild(n)),i},g=function(t){return document.createTextNode(t)},v=function(t,e){var n,r=t.type;try{n=new window[e](r,t)}catch(t){(n=document.createEvent(e)).initEvent(r,!0,!0)}return n._parentEvent=t,0===r.indexOf('key')&&(n.keyCodeVal=t.keyCode,['keyCode','which'].forEach((function(t){Object.defineProperty(n,t,{get:function(){return this.keyCodeVal}})}))),n},m=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=Array.isArray(e)?e:[e];n.forEach((function(e){var n=e.tag||'div',o=e[i]||{},s=document.createElement(n);(0,r.each)(o,(function(t,e){s.setAttribute(e,t)})),t.appendChild(s)}))}},9661:(t,e,n)=>{"use strict";n.d(e,{Z:()=>m});var r=n(1002);const i=function(t){var e=this.constructor;return this.then((function(n){return e.resolve(t()).then((function(){return n}))}),(function(n){return e.resolve(t()).then((function(){return e.reject(n)}))}))};const o=function(t){return new this((function(e,n){if(!t||void 0===t.length)return n(new TypeError((0,r.Z)(t)+' '+t+' is not iterable(cannot read property Symbol(Symbol.iterator))'));var i=Array.prototype.slice.call(t);if(0===i.length)return e([]);var o=i.length;function s(t,n){if(n&&('object'===(0,r.Z)(n)||'function'==typeof n)){var a=n.then;if('function'==typeof a)return void a.call(n,(function(e){s(t,e)}),(function(n){i[t]={status:'rejected',reason:n},0==--o&&e(i)}))}i[t]={status:'fulfilled',value:n},0==--o&&e(i)}for(var a=0;a{"use strict";n.d(e,{Z:()=>i});var r=n(6183);function i(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i{"use strict";n.r(e),n.d(e,{default:()=>k});var r=n(4942),i=n(5610),o=n(2316),s=n.n(o),a=n(9050),l=n(6183);function c(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function u(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},a=this.em,c=this.itemSel,u=this.containerSel,h=this.plh,f=this.getContainerEl(s.container),d=this.getDocuments(t);this.dropModel=null,this.target=null,this.prevTarget=null,this.moved=0,t&&!this.matches(t,"".concat(c,", ").concat(u))&&(t=this.closest(t,c)),this.sourceEl=t,h||(this.plh=this.createPlaceholder(),f.appendChild(this.plh)),t&&((o=this.getSourceModel(t))&&o.set&&o.set('status','freezed'),this.srcModel=o),(0,l.on)(f,'mousemove dragover',this.onMove),(0,l.on)(d,'mouseup dragend touchend',this.endMove),(0,l.on)(d,'keydown',this.rollback),this.onStart({sorter:this,target:o,parent:o&&(null===(e=(n=o).parent)||void 0===e?void 0:e.call(n)),index:o&&(null===(r=(i=o).index)||void 0===r?void 0:r.call(i))}),null==a||a.clearSelection(),this.toggleSortCursor(1),null==a||a.trigger('sorter:drag:start',t,o)},getTargetModel:function(t){var e=t||this.target;return h(e).data('model')},getSourceModel:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.target,i=n.avoidChildren,o=void 0===i?1:i,s=this.em,a=this.sourceEl,l=t||a,c=this.dropModel,f=this.dropContent,d=function(t){return t&&r&&t.opt&&t.opt.avoidChildren&&e.isTextableActive(t,r)};if(f&&s){if(d(c)&&(c=null),!c){var p=s.get('DomComponents').getComponents(),g={avoidChildren:o,avoidStore:1,avoidUpdateStyle:1},v=p.add(f,u(u({},g),{},{temporary:1}));if(c=(c=p.remove(v,g))instanceof Array?c[0]:c,this.dropModel=c,d(c))return this.getSourceModel(l,{target:r,avoidChildren:0})}return c}return l&&h(l).data('model')},selectTargetModel:function(t,e){if(!(t instanceof s().Collection||e&&e===t)){var n=this.targetModel;n&&n!==this.srcModel&&n.set('status',''),t&&t.set&&(t.set('status','selected-parent'),this.targetModel=t)}},onMove:function(t){var e=t,n=this.em,r=this.onMoveClb,i=this.plh,o=this.customTarget;this.moved=1;var s=i.style.display;s&&'none'!==s||(i.style.display='block');var l=this.offset(this.el);this.elT=this.wmargin?Math.abs(l.top):l.top,this.elL=this.wmargin?Math.abs(l.left):l.left;var c=t.pageY-this.elT+this.el.scrollTop,u=t.pageX-this.elL+this.el.scrollLeft;if(this.canvasRelative&&n){var f=n.get('Canvas').getMouseRelativeCanvas(t,{noScroll:1});u=f.x,c=f.y}this.rX=u,this.rY=c,this.eventMove=t;var d=this.getSourceModel(),p=o?o({sorter:this,event:t}):t.target,g=this.dimsFromTarget(p,u,c),v=this.target,m=v&&this.getTargetModel(v);if(this.selectTargetModel(m,d),m||(i.style.display='none'),v){this.lastDims=g;var y=this.findPosition(g,u,c);this.isTextableActive(d,m)?(this.activeTextModel=m,i.style.display='none',this.lastPos=y,this.updateTextViewCursorPosition(e)):(this.disableTextable(),this.activeTextModel=null,this.lastPos&&this.lastPos.index==y.index&&this.lastPos.method==y.method||(this.movePlaceholder(this.plh,g,y,this.prevTargetDim),this.$plh||(this.$plh=h(this.plh)),this.canvasRelative||(this.offTop&&this.$plh.css('top','+='+this.offTop+'px'),this.offLeft&&this.$plh.css('left','+='+this.offLeft+'px')),this.lastPos=y)),(0,a.isFunction)(r)&&r({event:t,target:d,parent:m,index:y.index+('after'==y.method?1:0)}),n&&n.trigger('sorter:drag',{target:v,targetModel:m,sourceModel:d,dims:g,pos:y,x:u,y:c})}},isTextableActive:function(t,e){return t&&t.get&&t.get('textable')&&e&&e.is('text')},disableTextable:function(){var t=this.activeTextModel;t&&t.getView().disableEditing(),this.setContentEditable(t,!1)},isInFlow:function(t,e){if(!t)return!1;e=e||document.body;var n=t;return n.offsetHeight,!!this.styleInFlow(n,e)},styleInFlow:function(t,e){if(!(0,l.isTextNode)(t)){var n=t.style||{},r=h(t),i=e&&h(e);if(!n.overflow||'visible'===n.overflow){var o=r.css('float');if(!(o&&'none'!==o||i&&'flex'==i.css('display')&&'column'!==i.css('flex-direction'))){switch(n.position){case'static':case'relative':case'':break;default:return}switch(t.tagName){case'TR':case'TBODY':case'THEAD':case'TFOOT':return!0}switch(r.css('display')){case'block':case'list-item':case'table':case'flex':return!0}}}}},validTarget:function(t,e){var n=this.getTargetModel(t),r=this.getSourceModel(e,{target:n}),i={valid:!0,src:e=r&&r.view&&r.view.el,srcModel:r,trg:t=n&&n.view&&n.view.el,trgModel:n};if(!e||!t)return i.valid=!1,i;var o=r.get('draggable');if((0,a.isFunction)(o)){var l=o(r,n);i.dragInfo=l,i.draggable=l,o=l}else o=o instanceof Array?o.join(', '):o,i.dragInfo=o,o=(0,a.isString)(o)?this.matches(t,o):o,i.draggable=o;var c=n.get('droppable');if((0,a.isFunction)(c)){var u=c(r,n);i.droppable=u,i.dropInfo=u,c=u}else c=(c=c instanceof s().Collection?1:c)instanceof Array?c.join(', '):c,i.dropInfo=c,c=(0,a.isString)(c)?this.matches(e,c):c,c=o&&this.isTextableActive(r,n)?1:c,i.droppable=c;return c&&o||(i.valid=!1),i},dimsFromTarget:function(t,e,n){var r=this.em,i=[];if(!t)return i;if(this.matches(t,"".concat(this.itemSel,", ").concat(this.containerSel))||(t=this.closest(t,this.itemSel)),this.draggable instanceof Array&&(t=this.closest(t,this.draggable.join(','))),!t)return i;if(this.prevTarget&&this.prevTarget!=t&&(this.prevTarget=null),!this.prevTarget){this.targetP=this.closest(t,this.containerSel);var o=this.validTarget(t);if(r&&r.trigger('sorter:drag:validation',o),!o.valid&&this.targetP)return this.dimsFromTarget(this.targetP,e,n);this.prevTarget=t,this.prevTargetDim=this.getDim(t),this.cacheDimsP=this.getChildrenDim(this.targetP),this.cacheDims=this.getChildrenDim(t)}if(this.prevTarget==t&&(i=this.cacheDims),this.target=this.prevTarget,this.nearBorders(this.prevTargetDim,e,n)||!this.nested&&!this.cacheDims.length){var s=this.targetP;s&&this.validTarget(s).valid&&(i=this.cacheDimsP,this.target=s)}return this.lastPos=null,i},getTargetFromEl:function(t){var e,n=t,r=this.targetPrev,i=this.em,o=this.containerSel,s=this.itemSel;if(this.matches(n,"".concat(s,", ").concat(o))||(n=this.closest(n,s)),this.draggable instanceof Array&&(n=this.closest(n,this.draggable.join(','))),r&&r!=n&&(this.targetPrev=''),!this.targetPrev){e=this.closest(n,o);var a=this.validTarget(n);if(i&&i.trigger('sorter:drag:validation',a),!a.valid&&e)return this.getTargetFromEl(e);this.targetPrev=n}return this.nearElBorders(n)&&(e=this.closest(n,o))&&this.validTarget(e).valid&&(n=e),n},nearElBorders:function(t){var e=t.getBoundingClientRect(),n=t.ownerDocument.body,r=this.getCurrentPos(),i=r.x,o=r.y,s=e.top+n.scrollTop,a=e.left+n.scrollLeft,l=e.width,c=e.height;if(os+c-10||ia+l-10)return 1},getCurrentPos:function(){var t=this.eventMove;return{x:t.pageX||0,y:t.pageY||0}},getDim:function(t){var e,n,r,i,o=this.em,s=this.canvasRelative,a=o&&o.get('Canvas'),l=a?a.getElementOffsets(t):{};if(s&&o){var c=a.getElementPos(t,{noScroll:1});e=c.top,n=c.left,r=c.height,i=c.width}else{var u=this.offset(t);e=this.relative?t.offsetTop:u.top-(this.wmargin?-1:1)*this.elT,n=this.relative?t.offsetLeft:u.left-(this.wmargin?-1:1)*this.elL,r=t.offsetHeight,i=t.offsetWidth}return{top:e,left:n,height:r,width:i,offsets:l}},getChildrenDim:function(t){var e=this,n=[];if(!t)return n;var r=this.getTargetModel(t);if(r&&r.view&&!this.ignoreViewChildren){var i=r.getCurrentView?r.getCurrentView():r.view;t=i.getChildrenContainer()}return(0,a.each)(t.children,(function(r,i){var o=(0,l.getModel)(r,h),s=o&&o.index?o.index():i;if((0,l.isTextNode)(r)||e.matches(r,e.itemSel)){var a=e.getDim(r),c=e.direction;c='v'==c||'h'!=c&&e.isInFlow(r,t),a.dir=c,a.el=r,a.indexEl=s,n.push(a)}})),n},nearBorders:function(t,e,n){var r=0,i=this.borderOffset,o=e||0,s=n||0,a=t.top,l=t.left,c=t.height,u=t.width;return(a+i>s||s>a+c-i||l+i>o||o>l+u-i)&&(r=1),!!r},findPosition:function(t,e,n){for(var r={index:0,indexEl:0,method:'before'},i=0,o=0,s=0,a=0,l=0,c=0,u=0,h=0,f=t.length;ho||s&&l>=s||i&&g+mO&&(w.at=d-1))}r&&(x?(delete w.at,i=v.getView().insertComponent(r,w)):i=g.add(r,w)),this.dropContent=null,this.prevTarget=null}else if(o){var k=p.dropInfo||(null==v?void 0:v.get('droppable')),S=p.dragInfo||(null==m?void 0:m.get('draggable'));!g&&f.push('Target collection not found'),!b&&k&&f.push("Target is not droppable, accepts [".concat(k,"]")),!y&&S&&f.push("Component not draggable, acceptable by [".concat(S,"]")),o.logWarning('Invalid target position',{errors:f,model:m,context:'sorter',target:v})}return null==o||o.trigger('sorter:drag:end',{targetCollection:g,modelToDrop:r,warns:f,validResult:p,dst:t,srcEl:u}),i},rollback:function(t){(0,l.off)(this.getDocuments(),'keydown',this.rollback),27==(t.which||t.keyCode)&&(this.moved=0,this.endMove())}});var p=n(5671),g=n(3144);function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function m(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return(0,p.Z)(this,t),this.setOptions(e),(0,a.bindAll)(this,'handleKeyDown','handleMouseDown','move','stop'),this}return(0,g.Z)(t,[{key:"getConfig",value:function(){return this.opts}},{key:"setOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.opts=(0,a.defaults)(t,y),this.setup()}},{key:"setup",value:function(){var t=this.opts,e=t.prefix||'',n=t.appendTo||document.body,r=this.container;for(r||((r=document.createElement('div')).className="".concat(e,"resizer-c"),n.appendChild(r),this.container=r);r.firstChild;)r.removeChild(r.firstChild);var i={};for(var o in['tl','tc','tr','cl','cr','bl','bc','br'].forEach((function(e){return i[e]=t[e]?function(t,e){var n=e.prefix||'',r=document.createElement('i');return r.className=n+'resizer-h '+n+'resizer-h-'+t,r.setAttribute('data-'+n+'handler',t),r}(e,t):''})),i){var s=i[o];s&&r.appendChild(s)}this.handlers=i,this.mousePosFetcher=t.mousePosFetcher,this.updateTarget=t.updateTarget,this.posFetcher=t.posFetcher,this.onStart=t.onStart,this.onMove=t.onMove,this.onEnd=t.onEnd,this.onUpdateContainer=t.onUpdateContainer}},{key:"toggleFrames",value:function(t){if(this.opts.silentFrames){var e=document.querySelectorAll('iframe');(0,a.each)(e,(function(e){return e.style.pointerEvents=t?'none':''}))}}},{key:"isHandler",value:function(t){var e=this.handlers;for(var n in e)if(e[n]===t)return!0;return!1}},{key:"getFocusedEl",value:function(){return this.el}},{key:"getParentEl",value:function(){return this.el.parentElement}},{key:"getDocumentEl",value:function(){return[this.el.ownerDocument,document]}},{key:"getElementPos",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.posFetcher||'';return n?n(t,e):b(t)}},{key:"focus",value:function(t){t&&t===this.el||(this.el=t,this.updateContainer({forceShow:1}),(0,l.on)(this.getDocumentEl(),'mousedown',this.handleMouseDown))}},{key:"blur",value:function(){this.container.style.display='none',this.el&&((0,l.off)(this.getDocumentEl(),'mousedown',this.handleMouseDown),this.el=null)}},{key:"start",value:function(t){if(0===t.button){t.preventDefault(),t.stopPropagation();var e=this.el,n=this.getParentEl(),r=this.opts||{},i='data-'+r.prefix+'handler',o=this.getElementPos(e,{target:'el'}),s=this.getElementPos(n);this.handlerAttr=t.target.getAttribute(i),this.clickedHandler=t.target,this.startDim={t:o.top,l:o.left,w:o.width,h:o.height},this.rectDim={t:o.top,l:o.left,w:o.width,h:o.height},this.startPos={x:t.clientX,y:t.clientY},this.parentDim={t:s.top,l:s.left,w:s.width,h:s.height};var c=this.getDocumentEl();(0,l.on)(c,'mousemove',this.move),(0,l.on)(c,'keydown',this.handleKeyDown),(0,l.on)(c,'mouseup',this.stop),(0,a.isFunction)(this.onStart)&&this.onStart(t,{docs:c,config:r,el:e,resizer:this}),this.toggleFrames(1),this.move(t)}}},{key:"move",value:function(t){var e=this.onMove,n=this.mousePosFetcher,r=n?n(t):{x:t.clientX,y:t.clientY};this.currentPos=r,this.delta={x:r.x-this.startPos.x,y:r.y-this.startPos.y},this.keys={shift:t.shiftKey,ctrl:t.ctrlKey,alt:t.altKey},this.rectDim=this.calc(this),this.updateRect(0),e&&e(t),0===t.which&&this.stop(t)}},{key:"stop",value:function(t){var e=this.opts,n=this.getDocumentEl();(0,l.off)(n,'mousemove',this.move),(0,l.off)(n,'keydown',this.handleKeyDown),(0,l.off)(n,'mouseup',this.stop),this.updateRect(1),this.toggleFrames(),(0,a.isFunction)(this.onEnd)&&this.onEnd(t,{docs:n,config:e})}},{key:"updateRect",value:function(t){var e=this.el,n=this.opts,r=this.rectDim,i=this.updateTarget,o=this.getSelectedHandler(),s=n.unitHeight,l=n.unitWidth,c=n.keyWidth,u=n.keyHeight;if((0,a.isFunction)(i))i(e,r,{store:t,selectedHandler:o,resizer:this,config:n});else{var h=e.style;h[c]=r.w+l,h[u]=r.h+s}this.updateContainer()}},{key:"updateContainer",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.opts,n=this.container,r=this.el,i=n.style;!e.avoidContainerUpdate&&r&&t.forceShow&&(i.display='block'),this.onUpdateContainer({el:n,resizer:this,opts:m(m({},e),t)})}},{key:"getSelectedHandler",value:function(){var t=this.handlers;if(this.selectedHandler)for(var e in t)if(t[e]===this.selectedHandler)return e}},{key:"handleKeyDown",value:function(t){27===t.keyCode&&(this.rectDim=this.startDim,this.stop(t))}},{key:"handleMouseDown",value:function(t){var e=t.target;this.isHandler(e)?(this.selectedHandler=e,this.start(t)):e!==this.el&&(this.selectedHandler='',this.blur())}},{key:"calc",value:function(t){var e,n=this.opts||{},r=n.step,i=this.startDim,o=n.minDim,s=n.maxDim,a=t.delta.x,c=t.delta.y,u=this.parentDim.w,h=this.parentDim.h,f=this.opts.unitWidth,d=this.opts.unitHeight,p='%'===f?i.w/100*u:i.w,g='%'===d?i.h/100*h:i.h,v={t:0,l:0,w:p,h:g};if(t){var m=t.handlerAttr;~m.indexOf('r')&&(e='%'===f?(0,l.normalizeFloat)((p+a*r)/u*100,.01):(0,l.normalizeFloat)(p+a*r,r),e=Math.max(o,e),s&&(e=Math.min(s,e)),v.w=e),~m.indexOf('b')&&(e='%'===d?(0,l.normalizeFloat)((g+c*r)/h*100,.01):(0,l.normalizeFloat)(g+c*r,r),e=Math.max(o,e),s&&(e=Math.min(s,e)),v.h=e),~m.indexOf('l')&&(e='%'===f?(0,l.normalizeFloat)((p-a*r)/u*100,.01):(0,l.normalizeFloat)(p-a*r,r),e=Math.max(o,e),s&&(e=Math.min(s,e)),v.w=e),~m.indexOf('t')&&(e='%'===d?(0,l.normalizeFloat)((g-c*r)/h*100,.01):(0,l.normalizeFloat)(g-c*r,r),e=Math.max(o,e),s&&(e=Math.min(s,e)),v.h=e);var y=n.ratioDefault?!t.keys.shift:t.keys.shift;if(m.indexOf('c')<0&&y){var b=i.w/i.h;v.w/v.h>b?v.h=Math.round(v.w/b):v.w=Math.round(v.h*b)}return~m.indexOf('l')&&(v.l=i.w-v.w),~m.indexOf('t')&&(v.t=i.h-v.h),v}}}]),t}();const x={init:function(t){return new w(t)}};function O(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function C(t){for(var e=1;e{"use strict";n.r(e),n.d(e,{isDef:()=>s,hasWin:()=>a,getGlobal:()=>l,toLowerCase:()=>c,getUiClass:()=>f,isCommentNode:()=>k,isTaggableNode:()=>S,find:()=>P,escape:()=>_,on:()=>g,off:()=>v,hasDnd:()=>x,upFirst:()=>y,matches:()=>h,getModel:()=>T,getElRect:()=>E,camelCase:()=>b,isTextNode:()=>C,getKeyCode:()=>D,getKeyChar:()=>M,isEscKey:()=>A,isEnterKey:()=>L,getElement:()=>O,shallowDiff:()=>p,normalizeFloat:()=>w,getPointerEvent:()=>j,getUnitFromValue:()=>m,capitalize:()=>Z,getViewEl:()=>V,setViewEl:()=>H,appendStyles:()=>d,isObject:()=>R,isEmptyObj:()=>N,isComponent:()=>I,createId:()=>B,isRule:()=>F});var r=n(1002),i=n(2982),o=n(9050),s=function(t){return void 0!==t},a=function(){return'undefined'!=typeof window},l=function(){return'undefined'!=typeof globalThis?globalThis:'undefined'!=typeof window?window:n.g},c=function(t){return(t||'').toLowerCase()},u=a()?window.Element.prototype:{},h=u.matches||u.webkitMatchesSelector||u.mozMatchesSelector||u.msMatchesSelector,f=function(t,e){var n=t.getConfig(),r=n.stylePrefix;return[n.customUI&&"".concat(r,"cui"),e].filter((function(t){return t})).join(' ')},d=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(0,o.isArray)(e)?(0,i.Z)(e):[e];if(r.length){var s=r.shift();if(s&&(!n.unique||!document.querySelector("link[href=\"".concat(s,"\"]")))){var a=document,l=a.head,c=document.createElement('link');c.href=s,c.rel='stylesheet',n.prepand?l.insertBefore(c,l.firstChild):l.appendChild(c)}t(r)}},p=function(t,e){var n={},r=(0,o.keys)(e);for(var i in t)if(t.hasOwnProperty(i)){var s=t[i],a=e[i];r.indexOf(i)>=0?s!==a&&(n[i]=a):n[i]=null}for(var l in e)e.hasOwnProperty(l)&&(0,o.isUndefined)(t[l])&&(n[l]=e[l]);return n},g=function(t,e,n,r){e=e.split(/\s+/),t=t instanceof Array?t:[t];for(var i=function(i){t.forEach((function(t){return t&&t.addEventListener(e[i],n,r)}))},o=0;o1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=0;if(isNaN(t))return n;if(t=parseFloat(t),Math.floor(t)!==t){var i=e.toString().split('.')[1];r=i?i.length:0}return r?parseFloat(t.toFixed(r)):t},x=function(t){return'draggable'in document.createElement('i')&&(t?t.get('Config').nativeDnD:1)},O=function(t){return(0,o.isElement)(t)||C(t)?t:t&&t.getEl?t.getEl():void 0},C=function(t){return t&&3===t.nodeType},k=function(t){return t&&8===t.nodeType},S=function(t){return t&&!C(t)&&!k(t)},P=function(t,e){var n=null;return t.some((function(r,i){return e(r,i,t)?(n=r,1):0})),n},_=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'';return"".concat(t).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"').replace(/'/g,''').replace(/`/g,'`')},T=function(t,e){var n=t;return!e&&t&&t.__cashData?n=t.__cashData.model:(0,o.isElement)(t)&&(n=e(t).data('model')),n},E=function(t){var e,n={top:0,left:0,width:0,height:0};if(!t)return n;if(C(t)){var r=document.createRange();r.selectNode(t),e=r.getBoundingClientRect(),r.detach()}return e||(t.getBoundingClientRect?t.getBoundingClientRect():n)},j=function(t){return t.touches&&t.touches[0]?t.touches[0]:t},D=function(t){return t.which||t.keyCode},M=function(t){return String.fromCharCode(D(t))},A=function(t){return 27===D(t)},L=function(t){return 13===D(t)},R=function(t){return null!==t&&!Array.isArray(t)&&'object'===(0,r.Z)(t)},N=function(t){return Object.keys(t).length<=0},Z=function(t){return t&&t.charAt(0).toUpperCase()+t.substring(1)},I=function(t){return t&&t.toHTML},F=function(t){return t&&t.toCSS},V=function(t){return t.__gjsv},H=function(t,e){t.__gjsv=e},B=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,e='',n='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',r=n.length,i=0;i{var e=function(t){"use strict";var e,n=Object.prototype,r=n.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",a=i.toStringTag||"@@toStringTag";function l(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,n){return t[e]=n}}function c(t,e,n,r){var i=e&&e.prototype instanceof v?e:v,o=Object.create(i.prototype),s=new T(r||[]);return o._invoke=function(t,e,n){var r=h;return function(i,o){if(r===d)throw new Error("Generator is already running");if(r===p){if("throw"===i)throw o;return j()}for(n.method=i,n.arg=o;;){var s=n.delegate;if(s){var a=S(s,n);if(a){if(a===g)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===h)throw r=p,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=d;var l=u(t,e,n);if("normal"===l.type){if(r=n.done?p:f,l.arg===g)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r=p,n.method="throw",n.arg=l.arg)}}}(t,n,s),o}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var h="suspendedStart",f="suspendedYield",d="executing",p="completed",g={};function v(){}function m(){}function y(){}var b={};b[o]=function(){return this};var w=Object.getPrototypeOf,x=w&&w(w(E([])));x&&x!==n&&r.call(x,o)&&(b=x);var O=y.prototype=v.prototype=Object.create(b);function C(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function k(t,e){function n(i,o,s,a){var l=u(t[i],t,o);if("throw"!==l.type){var c=l.arg,h=c.value;return h&&"object"==typeof h&&r.call(h,"__await")?e.resolve(h.__await).then((function(t){n("next",t,s,a)}),(function(t){n("throw",t,s,a)})):e.resolve(h).then((function(t){c.value=t,s(c)}),(function(t){return n("throw",t,s,a)}))}a(l.arg)}var i;this._invoke=function(t,r){function o(){return new e((function(e,i){n(t,r,e,i)}))}return i=i?i.then(o,o):o()}}function S(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,S(t,n),"throw"===n.method))return g;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var i=u(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var o=i.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function _(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function E(t){if(t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,s=function n(){for(;++i=0;--o){var s=this.tryEntries[o],a=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=r.call(s,"catchLoc"),c=r.call(s,"finallyLoc");if(l&&c){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),_(n),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;_(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:E(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}(t.exports);try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}},2828:(t,e,n)=>{var r={"./CanvasClear":7202,"./CanvasClear.js":7202,"./CanvasMove":327,"./CanvasMove.js":327,"./CommandAbstract":238,"./CommandAbstract.js":238,"./ComponentDelete":5820,"./ComponentDelete.js":5820,"./ComponentDrag":6694,"./ComponentDrag.js":6694,"./ComponentEnter":1947,"./ComponentEnter.js":1947,"./ComponentExit":3888,"./ComponentExit.js":3888,"./ComponentNext":5883,"./ComponentNext.js":5883,"./ComponentPrev":7508,"./ComponentPrev.js":7508,"./ComponentStyleClear":8769,"./ComponentStyleClear.js":8769,"./CopyComponent":2213,"./CopyComponent.js":2213,"./DeleteComponent":5049,"./DeleteComponent.js":5049,"./ExportTemplate":3775,"./ExportTemplate.js":3775,"./Fullscreen":58,"./Fullscreen.js":58,"./MoveComponent":8658,"./MoveComponent.js":8658,"./OpenAssets":9617,"./OpenAssets.js":9617,"./OpenBlocks":5821,"./OpenBlocks.js":5821,"./OpenLayers":3452,"./OpenLayers.js":3452,"./OpenStyleManager":2840,"./OpenStyleManager.js":2840,"./OpenTraitManager":8644,"./OpenTraitManager.js":8644,"./PasteComponent":560,"./PasteComponent.js":560,"./Preview":4944,"./Preview.js":4944,"./Resize":7538,"./Resize.js":7538,"./SelectComponent":2620,"./SelectComponent.js":2620,"./SelectPosition":8463,"./SelectPosition.js":8463,"./ShowOffset":7994,"./ShowOffset.js":7994,"./SwitchVisibility":8352,"./SwitchVisibility.js":8352};function i(t){var e=o(t);return n(e)}function o(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code='MODULE_NOT_FOUND',e}return r[t]}i.keys=function(){return Object.keys(r)},i.resolve=o,t.exports=i,i.id=2828},907:(t,e,n)=>{"use strict";function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nr})},5861:(t,e,n)=>{"use strict";function r(t,e,n,r,i,o,s){try{var a=t[o](s),l=a.value}catch(t){return void n(t)}a.done?e(l):Promise.resolve(l).then(r,i)}function i(t){return function(){var e=this,n=arguments;return new Promise((function(i,o){var s=t.apply(e,n);function a(t){r(s,i,o,a,l,"next",t)}function l(t){r(s,i,o,a,l,"throw",t)}a(void 0)}))}}n.d(e,{Z:()=>i})},5671:(t,e,n)=>{"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}n.d(e,{Z:()=>r})},3144:(t,e,n)=>{"use strict";function r(t,e){for(var n=0;ni})},4942:(t,e,n)=>{"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,{Z:()=>r})},1120:(t,e,n)=>{"use strict";function r(t){return r=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},r(t)}n.d(e,{Z:()=>r})},9340:(t,e,n)=>{"use strict";function r(t,e){return r=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},r(t,e)}function i(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&&r(t,e)}n.d(e,{Z:()=>i})},4925:(t,e,n)=>{"use strict";function r(t,e){if(null==t)return{};var n,r,i=function(t,e){if(null==t)return{};var n,r,i={},o=Object.keys(t);for(r=0;r=0||(i[n]=t[n]);return i}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i}n.d(e,{Z:()=>r})},3930:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(1002);function i(t,e){return!e||"object"!==(0,r.Z)(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}},885:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(181);function i(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=t&&("undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"]);if(null!=n){var r,i,o=[],s=!0,a=!1;try{for(n=n.call(t);!(s=(r=n.next()).done)&&(o.push(r.value),!e||o.length!==e);s=!0);}catch(t){a=!0,i=t}finally{try{s||null==n.return||n.return()}finally{if(a)throw i}}return o}}(t,e)||(0,r.Z)(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},168:(t,e,n)=>{"use strict";function r(t,e){return e||(e=t.slice(0)),Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))}n.d(e,{Z:()=>r})},2982:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(907);var i=n(181);function o(t){return function(t){if(Array.isArray(t))return(0,r.Z)(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||(0,i.Z)(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},1002:(t,e,n)=>{"use strict";function r(t){return r="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},r(t)}n.d(e,{Z:()=>r})},181:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(907);function i(t,e){if(t){if("string"==typeof t)return(0,r.Z)(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?(0,r.Z)(t,e):void 0}}},9050:(t,e,n)=>{"use strict";n.r(e),n.d(e,{VERSION:()=>i,after:()=>Le,all:()=>tn,allKeys:()=>vt,any:()=>en,assign:()=>Lt,before:()=>Re,bind:()=>Oe,bindAll:()=>Se,chain:()=>ye,chunk:()=>In,clone:()=>It,collect:()=>Ge,compact:()=>_n,compose:()=>Ae,constant:()=>X,contains:()=>nn,countBy:()=>gn,create:()=>Zt,debounce:()=>je,default:()=>zn,defaults:()=>Rt,defer:()=>Te,delay:()=>_e,detect:()=>We,difference:()=>En,drop:()=>Sn,each:()=>qe,escape:()=>se,every:()=>tn,extend:()=>At,extendOwn:()=>Lt,filter:()=>Xe,find:()=>We,findIndex:()=>Fe,findKey:()=>Ze,findLastIndex:()=>Ve,findWhere:()=>$e,first:()=>kn,flatten:()=>Tn,foldl:()=>Ye,foldr:()=>Je,forEach:()=>qe,functions:()=>Dt,get:()=>zt,groupBy:()=>dn,has:()=>Ut,head:()=>kn,identity:()=>Wt,include:()=>nn,includes:()=>nn,indexBy:()=>pn,indexOf:()=>ze,initial:()=>Cn,inject:()=>Ye,intersection:()=>An,invert:()=>jt,invoke:()=>rn,isArguments:()=>K,isArray:()=>$,isArrayBuffer:()=>Z,isBoolean:()=>T,isDataView:()=>W,isDate:()=>A,isElement:()=>E,isEmpty:()=>lt,isEqual:()=>gt,isError:()=>R,isFinite:()=>Y,isFunction:()=>V,isMap:()=>kt,isMatch:()=>ct,isNaN:()=>J,isNull:()=>P,isNumber:()=>M,isObject:()=>S,isRegExp:()=>L,isSet:()=>Pt,isString:()=>D,isSymbol:()=>N,isTypedArray:()=>it,isUndefined:()=>_,isWeakMap:()=>St,isWeakSet:()=>_t,iteratee:()=>Yt,keys:()=>at,last:()=>Pn,lastIndexOf:()=>Ue,map:()=>Ge,mapObject:()=>Xt,matcher:()=>$t,matches:()=>$t,max:()=>an,memoize:()=>Pe,methods:()=>Dt,min:()=>ln,mixin:()=>Vn,negate:()=>Me,noop:()=>Qt,now:()=>re,object:()=>Nn,omit:()=>On,once:()=>Ne,pairs:()=>Et,partial:()=>xe,partition:()=>vn,pick:()=>xn,pluck:()=>on,property:()=>qt,propertyOf:()=>te,random:()=>ne,range:()=>Zn,reduce:()=>Ye,reduceRight:()=>Je,reject:()=>Qe,rest:()=>Sn,restArguments:()=>k,result:()=>ge,sample:()=>cn,select:()=>Xe,shuffle:()=>un,size:()=>bn,some:()=>en,sortBy:()=>hn,sortedIndex:()=>He,tail:()=>Sn,take:()=>kn,tap:()=>Ft,template:()=>pe,templateSettings:()=>le,throttle:()=>Ee,times:()=>ee,toArray:()=>yn,toPath:()=>Vt,transpose:()=>Ln,unescape:()=>ae,union:()=>Mn,uniq:()=>Dn,unique:()=>Dn,uniqueId:()=>me,unzip:()=>Ln,values:()=>Tt,where:()=>sn,without:()=>jn,wrap:()=>De,zip:()=>Rn});var r={};n.r(r),n.d(r,{VERSION:()=>i,after:()=>Le,all:()=>tn,allKeys:()=>vt,any:()=>en,assign:()=>Lt,before:()=>Re,bind:()=>Oe,bindAll:()=>Se,chain:()=>ye,chunk:()=>In,clone:()=>It,collect:()=>Ge,compact:()=>_n,compose:()=>Ae,constant:()=>X,contains:()=>nn,countBy:()=>gn,create:()=>Zt,debounce:()=>je,default:()=>Hn,defaults:()=>Rt,defer:()=>Te,delay:()=>_e,detect:()=>We,difference:()=>En,drop:()=>Sn,each:()=>qe,escape:()=>se,every:()=>tn,extend:()=>At,extendOwn:()=>Lt,filter:()=>Xe,find:()=>We,findIndex:()=>Fe,findKey:()=>Ze,findLastIndex:()=>Ve,findWhere:()=>$e,first:()=>kn,flatten:()=>Tn,foldl:()=>Ye,foldr:()=>Je,forEach:()=>qe,functions:()=>Dt,get:()=>zt,groupBy:()=>dn,has:()=>Ut,head:()=>kn,identity:()=>Wt,include:()=>nn,includes:()=>nn,indexBy:()=>pn,indexOf:()=>ze,initial:()=>Cn,inject:()=>Ye,intersection:()=>An,invert:()=>jt,invoke:()=>rn,isArguments:()=>K,isArray:()=>$,isArrayBuffer:()=>Z,isBoolean:()=>T,isDataView:()=>W,isDate:()=>A,isElement:()=>E,isEmpty:()=>lt,isEqual:()=>gt,isError:()=>R,isFinite:()=>Y,isFunction:()=>V,isMap:()=>kt,isMatch:()=>ct,isNaN:()=>J,isNull:()=>P,isNumber:()=>M,isObject:()=>S,isRegExp:()=>L,isSet:()=>Pt,isString:()=>D,isSymbol:()=>N,isTypedArray:()=>it,isUndefined:()=>_,isWeakMap:()=>St,isWeakSet:()=>_t,iteratee:()=>Yt,keys:()=>at,last:()=>Pn,lastIndexOf:()=>Ue,map:()=>Ge,mapObject:()=>Xt,matcher:()=>$t,matches:()=>$t,max:()=>an,memoize:()=>Pe,methods:()=>Dt,min:()=>ln,mixin:()=>Vn,negate:()=>Me,noop:()=>Qt,now:()=>re,object:()=>Nn,omit:()=>On,once:()=>Ne,pairs:()=>Et,partial:()=>xe,partition:()=>vn,pick:()=>xn,pluck:()=>on,property:()=>qt,propertyOf:()=>te,random:()=>ne,range:()=>Zn,reduce:()=>Ye,reduceRight:()=>Je,reject:()=>Qe,rest:()=>Sn,restArguments:()=>k,result:()=>ge,sample:()=>cn,select:()=>Xe,shuffle:()=>un,size:()=>bn,some:()=>en,sortBy:()=>hn,sortedIndex:()=>He,tail:()=>Sn,take:()=>kn,tap:()=>Ft,template:()=>pe,templateSettings:()=>le,throttle:()=>Ee,times:()=>ee,toArray:()=>yn,toPath:()=>Vt,transpose:()=>Ln,unescape:()=>ae,union:()=>Mn,uniq:()=>Dn,unique:()=>Dn,uniqueId:()=>me,unzip:()=>Ln,values:()=>Tt,where:()=>sn,without:()=>jn,wrap:()=>De,zip:()=>Rn});var i='1.13.1',o='object'==typeof self&&self.self===self&&self||'object'==typeof global&&global.global===global&&global||Function('return this')()||{},s=Array.prototype,a=Object.prototype,l='undefined'!=typeof Symbol?Symbol.prototype:null,c=s.push,u=s.slice,h=a.toString,f=a.hasOwnProperty,d='undefined'!=typeof ArrayBuffer,p='undefined'!=typeof DataView,g=Array.isArray,v=Object.keys,m=Object.create,y=d&&ArrayBuffer.isView,b=isNaN,w=isFinite,x=!{toString:null}.propertyIsEnumerable('toString'),O=['valueOf','isPrototypeOf','toString','propertyIsEnumerable','hasOwnProperty','toLocaleString'],C=Math.pow(2,53)-1;function k(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i=0&&n<=C}}function tt(t){return function(e){return null==e?void 0:e[t]}}const et=tt('byteLength'),nt=Q(et);var rt=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;const it=d?function(t){return y?y(t)&&!W(t):nt(t)&&rt.test(h.call(t))}:X(!1),ot=tt('length');function st(t,e){e=function(t){for(var e={},n=t.length,r=0;r':'>','"':'"',"'":''','`':'`'},se=ie(oe),ae=ie(jt(oe)),le=ut.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var ce=/(.)^/,ue={"'":"'",'\\':'\\','\r':'r','\n':'n','\u2028':'u2028','\u2029':'u2029'},he=/\\|'|\r|\n|\u2028|\u2029/g;function fe(t){return'\\'+ue[t]}var de=/^\s*(\w|\$)+\s*$/;function pe(t,e,n){!e&&n&&(e=n),e=Rt({},e,ut.templateSettings);var r=RegExp([(e.escape||ce).source,(e.interpolate||ce).source,(e.evaluate||ce).source].join('|')+'|$','g'),i=0,o="__p+='";t.replace(r,(function(e,n,r,s,a){return o+=t.slice(i,a).replace(he,fe),i=a+e.length,n?o+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?o+="'+\n((__t=("+r+"))==null?'':__t)+\n'":s&&(o+="';\n"+s+"\n__p+='"),e})),o+="';\n";var s,a=e.variable;if(a){if(!de.test(a))throw new Error('variable is not a bare identifier: '+a)}else o='with(obj||{}){\n'+o+'}\n',a='obj';o="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+o+'return __p;\n';try{s=new Function(a,'_',o)}catch(t){throw t.source=o,t}var l=function(t){return s.call(this,t,ut)};return l.source='function('+a+'){\n'+o+'}',l}function ge(t,e,n){var r=(e=Ht(e)).length;if(!r)return V(n)?n.call(t):n;for(var i=0;i1)ke(a,e-1,n,r),i=r.length;else for(var l=0,c=a.length;le?(r&&(clearTimeout(r),r=null),a=c,s=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(l,u)),s};return c.cancel=function(){clearTimeout(r),a=0,r=i=o=null},c}function je(t,e,n){var r,i,o,s,a,l=function(){var c=re()-i;e>c?r=setTimeout(l,e-c):(r=null,n||(s=t.apply(a,o)),r||(o=a=null))},c=k((function(c){return a=this,o=c,i=re(),r||(r=setTimeout(l,e),n&&(s=t.apply(a,o))),s}));return c.cancel=function(){clearTimeout(r),r=o=a=null},c}function De(t,e){return xe(e,t)}function Me(t){return function(){return!t.apply(this,arguments)}}function Ae(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}function Le(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function Re(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}const Ne=xe(Re,2);function Ze(t,e,n){e=Jt(e,n);for(var r,i=at(t),o=0,s=i.length;o0?0:i-1;o>=0&&o0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(n&&o&&a)return r[o=n(r,i)]===i?o:-1;if(i!=i)return(o=e(u.call(r,s,a),J))>=0?o+s:-1;for(o=t>0?s:a-1;o>=0&&o0?0:s-1;for(i||(r=e[o?o[a]:a],a+=t);a>=0&&a=3;return e(t,Gt(n,i,4),r,o)}}const Ye=Ke(1),Je=Ke(-1);function Xe(t,e,n){var r=[];return e=Jt(e,n),qe(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r}function Qe(t,e,n){return Xe(t,Me(Jt(e)),n)}function tn(t,e,n){e=Jt(e,n);for(var r=!Ce(t)&&at(t),i=(r||t).length,o=0;o=0}const rn=k((function(t,e,n){var r,i;return V(e)?i=e:(e=Ht(e),r=e.slice(0,-1),e=e[e.length-1]),Ge(t,(function(t){var o=i;if(!o){if(r&&r.length&&(t=Bt(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))}));function on(t,e){return Ge(t,qt(e))}function sn(t,e){return Xe(t,$t(e))}function an(t,e,n){var r,i,o=-1/0,s=-1/0;if(null==e||'number'==typeof e&&'object'!=typeof t[0]&&null!=t)for(var a=0,l=(t=Ce(t)?t:Tt(t)).length;ao&&(o=r);else e=Jt(e,n),qe(t,(function(t,n,r){((i=e(t,n,r))>s||i===-1/0&&o===-1/0)&&(o=t,s=i)}));return o}function ln(t,e,n){var r,i,o=1/0,s=1/0;if(null==e||'number'==typeof e&&'object'!=typeof t[0]&&null!=t)for(var a=0,l=(t=Ce(t)?t:Tt(t)).length;ar||void 0===n)return 1;if(n1&&(r=Gt(r,e[1])),e=vt(t)):(r=wn,e=ke(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(n=e[1])):(e=Ge(ke(e,!1,!1),String),r=function(t,n){return!nn(e,n)}),xn(t,r,n)}));function Cn(t,e,n){return u.call(t,0,Math.max(0,t.length-(null==e||n?1:e)))}function kn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:Cn(t,t.length-e)}function Sn(t,e,n){return u.call(t,null==e||n?1:e)}function Pn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:Sn(t,Math.max(0,t.length-e))}function _n(t){return Xe(t,Boolean)}function Tn(t,e){return ke(t,e,!1)}const En=k((function(t,e){return e=ke(e,!0,!0),Xe(t,(function(t){return!nn(e,t)}))})),jn=k((function(t,e){return En(t,e)}));function Dn(t,e,n,r){T(e)||(r=n,n=e,e=!1),null!=n&&(n=Jt(n,r));for(var i=[],o=[],s=0,a=ot(t);s{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.g=function(){if('object'==typeof globalThis)return globalThis;try{return this||new Function('return this')()}catch(t){if('object'==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{'undefined'!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:'Module'}),Object.defineProperty(t,'__esModule',{value:!0})};var r={};return(()=>{"use strict";n.d(r,{default:()=>V});var t=n(4942),e=n(9050),i=n(2579);const o={stylePrefix:'gjs-',components:'',style:'',fromElement:0,noticeOnUnload:!0,showOffsets:!1,showOffsetsSelected:!1,forceClass:!0,height:'900px',width:'100%',log:['warning','error'],baseCss:"\n * {\n box-sizing: border-box;\n }\n html, body, [data-gjs-type=wrapper] {\n min-height: 100%;\n }\n body {\n margin: 0;\n height: 100%;\n background-color: #fff\n }\n [data-gjs-type=wrapper] {\n overflow: auto;\n overflow-x: hidden;\n }\n\n * ::-webkit-scrollbar-track {\n background: rgba(0, 0, 0, 0.1)\n }\n\n * ::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.2)\n }\n\n * ::-webkit-scrollbar {\n width: 10px\n }\n ",protectedCss:'* { box-sizing: border-box; } body {margin: 0;}',canvasCss:'',defaultCommand:'select-comp',showToolbar:1,showDevices:1,devicePreviewMode:0,mediaCondition:'max-width',tagVarStart:'{[ ',tagVarEnd:' ]}',keepEmptyTextNodes:0,jsInHtml:!0,nativeDnD:1,multipleSelection:1,optsHtml:{},optsCss:{},avoidInlineStyle:1,avoidDefaults:1,clearStyles:0,dragMode:0,listenToEl:[],cssIcons:'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css',icons:{close:'',move:'',plus:'',caret:'',delete:'',copy:'',arrowUp:''},el:'',i18n:{},undoManager:{},assetManager:{},canvas:{},layers:{},storageManager:{},richTextEditor:{},domComponents:{},modal:{},codeManager:{},panels:{},commands:{},cssComposer:{},selectorManager:{},deviceManager:{},styleManager:{},blockManager:{},traitManager:{},textViewCode:'Code',keepUnusedStyles:0,multiFrames:0,customUI:!1};var s=n(4925),a=n(5671),l=n(3144),c=n(9340),u=n(3930),h=n(1120),f=n(2316),d=n.n(f);var p=n(6183);function g(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,u.Z)(this,n)}}var v=function(t){(0,c.Z)(n,t);var e=g(n);function n(){return(0,a.Z)(this,n),e.apply(this,arguments)}return(0,l.Z)(n)}(f.Model),m=function(t){(0,c.Z)(r,t);var n=g(r);function r(){return(0,a.Z)(this,r),n.apply(this,arguments)}return(0,l.Z)(r,[{key:"getByComponent",value:function(t){var e=this;return this.filter((function(n){return e.getComponent(n)===t}))[0]}},{key:"addComponent",value:function(t,n){var r=this,i=((0,e.isArray)(t)?t:[t]).filter((function(t){return!r.hasComponent(t)})).map((function(t){return{component:t}}));return this.push(i,n)}},{key:"getComponent",value:function(t){return t.get('component')}},{key:"hasComponent",value:function(t){var e=this.getByComponent(t);return e&&this.contains(e)}},{key:"lastComponent",value:function(){var t=this.last();return t&&this.getComponent(t)}},{key:"allComponents",value:function(){var t=this;return this.map((function(e){return t.getComponent(e)})).filter((function(t){return t}))}},{key:"removeComponent",value:function(t,n){var r=this,i=((0,e.isArray)(t)?t:[t]).map((function(t){return r.getByComponent(t)}));return this.remove(i,n)}}]),r}(f.Collection);m.prototype.model=v;var y=["unset"];function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function w(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{};this.config=n,this.set('Config',n),this.set('modules',[]),this.set('toLoad',[]),this.set('storables',[]),this.set('selected',new m),this.set('dmode',n.dragMode),this.set('hasPages',!!n.pageManager);var r=n.el,i=n.log,o=!0===i?(0,e.keys)(S):(0,e.isArray)(i)?i:[];(0,e.bindAll)(this,'initBaseColorPicker'),r&&n.fromElement&&(this.config.components=r.innerHTML),this.attrsOrig=r?(0,e.toArray)(r.attributes).reduce((function(t,e){return t[e.nodeName]=e.nodeValue,t}),{}):'',k.forEach((function(e){return t.loadModule(e)})),this.on('change:componentHovered',this.componentHovered,this),this.on('change:changesCount',this.updateChanges,this),this.on('change:readyLoad change:readyCanvas',this._checkReady,this),o.forEach((function(e){return t.listenLog(e)})),[{from:'change:selectedComponent',to:'component:toggled'}].forEach((function(e){var n=e.from,r=e.to;t.listenTo(t,n,(function(){for(var e=arguments.length,i=new Array(e),o=0;o0&&void 0!==arguments[0]?arguments[0]:null,n=this.get('StorageManager');this.get('toLoad').forEach((function(t){return t.onLoad()}));var i=function(){t.get('modules').forEach((function(e){return e.postLoad&&e.postLoad(t)})),t.set('readyLoad',1),e&&e()};n&&n.canAutoload()?this.load(i):setTimeout(i);var o=new r({noticeOnUnload:!1,storageManager:!1,undoManager:!1});['PageManager','Canvas'].forEach((function(t){return o.get(t).onLoad()})),this.set('shallow',o)}},{key:"updateChanges",value:function(){var t=this,e=this.get('StorageManager'),n=this.get('changesCount');C&&clearTimeout(C),C=setTimeout((function(){return t.trigger('update')})),this.config.noticeOnUnload&&(window.onbeforeunload=n?function(t){return 1}:null),e.isAutosave()&&n>=e.getStepsBeforeSave()&&this.store()}},{key:"loadModule",value:function(t){var n=this.config,r=new(t.default||t),i=r.name.charAt(0).toLowerCase()+r.name.slice(1),o=(0,e.isUndefined)(n[i])?n[r.name]:n[i],s=!0===o?{}:o||{},a=this.get('StorageManager');if(s.pStylePrefix=n.pStylePrefix||'',(0,e.isUndefined)(o)||o||(s._disable=1),r.storageKey&&r.store&&r.load&&a){s.stm=a;var l='domComponents'==i?'unshift':'push';this.get('storables')[l](r)}return s.em=this,r.init(w({},s)),!r.private&&this.set(r.name,r),r.onLoad&&this.get('toLoad').push(r),this.get('modules').push(r),this}},{key:"init",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.destroyed&&(this.initialize(e),this.destroyed=0),this.set('Editor',t)}},{key:"getEditor",value:function(){return this.get('Editor')}},{key:"handleUpdates",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.__skip||r.temporary||r.noCount||r.avoidStore||!this.get('ready')||(O&&clearTimeout(O),O=setTimeout((function(){var t=n.get('changesCount')||0,e=(r.unset,(0,s.Z)(r,y));n.set('changesCount',t+1,e)}),0))}},{key:"changesUp",value:function(t){this.handleUpdates(0,0,t)}},{key:"componentHovered",value:function(t,e,n){var r=this.previous('componentHovered');r&&this.trigger('component:unhovered',r,n),e&&this.trigger('component:hovered',e,n)}},{key:"getSelected",value:function(){return this.get('selected').lastComponent()}},{key:"getSelectedAll",value:function(){return this.get('selected').allComponents()}},{key:"setSelected",value:function(t){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=r.event,s=o&&(o.ctrlKey||o.metaKey),a=o||{},l=a.shiftKey,c=(0,e.isArray)(t),u=(c?t:[t]).map((function(t){return(0,p.getModel)(t,i.default)})),h=this.getSelectedAll(),f=this.getConfig('multipleSelection');c&&this.removeSelected(h.filter((function(t){return!(0,e.contains)(u,t)}))),u.forEach((function(t){var i=(0,p.getModel)(t);if(i&&(n.trigger('component:select:before',i,r),!i.get('selectable')||r.abort)){if(!r.useValid)return;for(var o=i.parent();o&&!o.get('selectable');)o=o.parent();i=o}if(s&&f)return n.toggleSelected(i);if(l&&f){n.clearSelection(n.get('Canvas').getWindow());var a,u,d=i.collection,g=i.index();if(n.getSelectedAll().forEach((function(t){var n=t.collection,r=t.index();n===d&&(rg&&(u=(0,e.isUndefined)(u)?r:Math.min(u,r)))})),!(0,e.isUndefined)(a))for(;a!==g;)n.addSelected(d.at(a)),a++;if(!(0,e.isUndefined)(u))for(;u!==g;)n.addSelected(d.at(u)),u--;return n.addSelected(i)}!c&&n.removeSelected(h.filter((function(t){return t!==i}))),n.addSelected(i,r),i}))}},{key:"addSelected",value:function(t){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=(0,p.getModel)(t,i.default),s=(0,e.isArray)(o)?o:[o];s.forEach((function(t){if(!t||t.get('selectable')){var e=n.get('selected');r.forceChange&&n.removeSelected(t,r),e.addComponent(t,r),t&&n.trigger('component:select',t,r)}}))}},{key:"removeSelected",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.get('selected').removeComponent((0,p.getModel)(t,i.default),e)}},{key:"toggleSelected",value:function(t){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=(0,p.getModel)(t,i.default),s=(0,e.isArray)(o)?o:[o];s.forEach((function(t){n.get('selected').hasComponent(t)?n.removeSelected(t,r):n.addSelected(t,r)}))}},{key:"setHovered",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t)return this.set('componentHovered','');var n='component:hover',r=(0,p.getModel)(t);if(r){if(e.forceChange&&this.set('componentHovered',''),this.trigger("".concat(n,":before"),r,e),!r.get('hoverable')){if(!e.useValid||e.abort)return;for(var i=r&&r.parent();i&&!i.get('hoverable');)i=i.parent();r=i}e.abort||(this.set('componentHovered',r,e),this.trigger(n,r,e))}}},{key:"getHovered",value:function(){return this.get('componentHovered')}},{key:"setComponents",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get('DomComponents').setComponents(t,e)}},{key:"getComponents",value:function(){var t=this.get('DomComponents'),e=this.get('CodeManager');if(t&&e){var n=t.getComponents();return e.getCode(n,'json')}}},{key:"setStyle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.get('CssComposer');return n.clear(e),n.getAll().add(t,e),this}},{key:"addStyle",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.getStyle().add(t,n);return(0,e.isArray)(r)?r:[r]}},{key:"getStyle",value:function(){return this.get('CssComposer').getAll()}},{key:"setState",value:function(t){return this.set('state',t),this}},{key:"getState",value:function(){return this.get('state')||''}},{key:"getHtml",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.config,n=e.optsHtml,r=e.jsInHtml?this.getJs(t):'',i=t.component||this.get('DomComponents').getComponent(),o=i?this.get('CodeManager').getCode(i,'html',w(w({},n),t)):'';return o+=r?"` : '';\n return html;\n }\n\n /**\n * Returns CSS built inside canvas\n * @param {Object} [opts={}] Options\n * @returns {string} CSS string\n * @private\n */\n getCss(opts = {}) {\n const config = this.config;\n const { optsCss } = config;\n const avoidProt = opts.avoidProtected;\n const keepUnusedStyles = !isUndefined(opts.keepUnusedStyles) ? opts.keepUnusedStyles : config.keepUnusedStyles;\n const cssc = this.get('CssComposer');\n const wrp = opts.component || this.get('DomComponents').getComponent();\n const protCss = !avoidProt ? config.protectedCss : '';\n const css =\n wrp &&\n this.get('CodeManager').getCode(wrp, 'css', {\n cssc,\n keepUnusedStyles,\n ...optsCss,\n ...opts,\n });\n return wrp ? (opts.json ? css : protCss + css) : '';\n }\n\n /**\n * Returns JS of all components\n * @return {string} JS string\n * @private\n */\n getJs(opts = {}) {\n var wrp = opts.component || this.get('DomComponents').getWrapper();\n return wrp ? this.get('CodeManager').getCode(wrp, 'js').trim() : '';\n }\n\n /**\n * Store data to the current storage\n * @param {Function} clb Callback function\n * @return {Object} Stored data\n * @private\n */\n store(clb) {\n const sm = this.get('StorageManager');\n if (!sm) return;\n\n const store = this.storeData();\n sm.store(store, res => {\n clb && clb(res, store);\n this.set('changesCount', 0);\n this.trigger('storage:store', store);\n });\n\n return store;\n }\n\n storeData() {\n let result = {};\n // Sync content if there is an active RTE\n const editingCmp = this.getEditing();\n editingCmp && editingCmp.trigger('sync:content', { noCount: true });\n\n this.get('storables').forEach(m => {\n result = { ...result, ...m.store(1) };\n });\n return result;\n }\n\n /**\n * Load data from the current storage\n * @param {Function} clb Callback function\n * @private\n */\n load(clb = null) {\n this.getCacheLoad(1, res => {\n this.loadData(res);\n clb && clb(res);\n });\n }\n\n loadData(data = {}) {\n const sm = this.get('StorageManager');\n const result = sm.__clearKeys(data);\n\n this.get('storables').forEach(module => {\n module.load(result);\n module.postLoad && module.postLoad(this);\n });\n\n return result;\n }\n\n /**\n * Returns cached load\n * @param {Boolean} force Force to reload\n * @param {Function} clb Callback function\n * @return {Object}\n * @private\n */\n getCacheLoad(force, clb) {\n if (this.cacheLoad && !force) return this.cacheLoad;\n const sm = this.get('StorageManager');\n const load = [];\n\n if (!sm) return {};\n\n this.get('storables').forEach(m => {\n let key = m.storageKey;\n key = isFunction(key) ? key() : key;\n const keys = isArray(key) ? key : [key];\n keys.forEach(k => load.push(k));\n });\n\n sm.load(load, res => {\n this.cacheLoad = res;\n clb && clb(res);\n setTimeout(() => this.trigger('storage:load', res));\n });\n }\n\n /**\n * Returns device model by name\n * @return {Device|null}\n * @private\n */\n getDeviceModel() {\n var name = this.get('device');\n return this.get('DeviceManager').get(name);\n }\n\n /**\n * Run default command if setted\n * @param {Object} [opts={}] Options\n * @private\n */\n runDefault(opts = {}) {\n var command = this.get('Commands').get(this.config.defaultCommand);\n if (!command || this.defaultRunning) return;\n command.stop(this, this, opts);\n command.run(this, this, opts);\n this.defaultRunning = 1;\n }\n\n /**\n * Stop default command\n * @param {Object} [opts={}] Options\n * @private\n */\n stopDefault(opts = {}) {\n const commands = this.get('Commands');\n const command = commands.get(this.config.defaultCommand);\n if (!command || !this.defaultRunning) return;\n command.stop(this, this, opts);\n this.defaultRunning = 0;\n }\n\n /**\n * Update canvas dimensions and refresh data useful for tools positioning\n * @private\n */\n refreshCanvas(opts = {}) {\n this.set('canvasOffset', null);\n this.set('canvasOffset', this.get('Canvas').getOffset());\n opts.tools && this.trigger('canvas:updateTools');\n }\n\n /**\n * Clear all selected stuf inside the window, sometimes is useful to call before\n * doing some dragging opearation\n * @param {Window} win If not passed the current one will be used\n * @private\n */\n clearSelection(win) {\n var w = win || window;\n w.getSelection().removeAllRanges();\n }\n\n /**\n * Get the current media text\n * @return {string}\n */\n getCurrentMedia() {\n const config = this.config;\n const device = this.getDeviceModel();\n const condition = config.mediaCondition;\n const preview = config.devicePreviewMode;\n const width = device && device.get('widthMedia');\n return device && width && !preview ? `(${condition}: ${width})` : '';\n }\n\n /**\n * Return the component wrapper\n * @return {Component}\n */\n getWrapper() {\n return this.get('DomComponents').getWrapper();\n }\n\n setCurrentFrame(frameView) {\n return this.set('currentFrame', frameView);\n }\n\n getCurrentFrame() {\n return this.get('currentFrame');\n }\n\n getCurrentFrameModel() {\n return (this.getCurrentFrame() || {}).model;\n }\n\n getIcon(icon) {\n const icons = this.getConfig('icons') || {};\n return icons[icon] || '';\n }\n\n /**\n * Return the count of changes made to the content and not yet stored.\n * This count resets at any `store()`\n * @return {number}\n */\n getDirtyCount() {\n return this.get('changesCount');\n }\n\n getZoomDecimal() {\n return this.get('Canvas').getZoomDecimal();\n }\n\n getZoomMultiplier() {\n return this.get('Canvas').getZoomMultiplier();\n }\n\n setDragMode(value) {\n return this.set('dmode', value);\n }\n\n t(...args) {\n const i18n = this.get('I18n');\n return i18n?.t(...args);\n }\n\n /**\n * Returns true if the editor is in absolute mode\n * @returns {Boolean}\n */\n inAbsoluteMode() {\n return this.get('dmode') === 'absolute';\n }\n\n /**\n * Destroy editor\n */\n destroyAll() {\n const { config, view } = this;\n const editor = this.getEditor();\n const { editors = [] } = config.grapesjs || {};\n const shallow = this.get('shallow');\n shallow?.destroyAll();\n this.stopListening();\n this.stopDefault();\n this.get('modules')\n .slice()\n .reverse()\n .forEach(mod => mod.destroy());\n view && view.remove();\n this.clear({ silent: true });\n this.destroyed = 1;\n ['config', 'view', '_previousAttributes', '_events', '_listeners'].forEach(i => (this[i] = {}));\n editors.splice(editors.indexOf(editor), 1);\n hasWin() && $(config.el).empty().attr(this.attrsOrig);\n }\n\n getEditing() {\n const res = this.get('editing');\n return (res && res.model) || null;\n }\n\n setEditing(value) {\n this.set('editing', value);\n return this;\n }\n\n isEditing() {\n return !!this.get('editing');\n }\n\n log(msg, opts = {}) {\n const { ns, level = 'debug' } = opts;\n this.trigger('log', msg, opts);\n level && this.trigger(`log:${level}`, msg, opts);\n\n if (ns) {\n const logNs = `log-${ns}`;\n this.trigger(logNs, msg, opts);\n level && this.trigger(`${logNs}:${level}`, msg, opts);\n }\n }\n\n logInfo(msg, opts) {\n this.log(msg, { ...opts, level: 'info' });\n }\n\n logWarning(msg, opts) {\n this.log(msg, { ...opts, level: 'warning' });\n }\n\n logError(msg, opts) {\n this.log(msg, { ...opts, level: 'error' });\n }\n\n initBaseColorPicker(el, opts = {}) {\n const config = this.getConfig();\n const { colorPicker = {} } = config;\n const elToAppend = config.el;\n const ppfx = config.stylePrefix;\n\n return $(el).spectrum({\n containerClassName: `${ppfx}one-bg ${ppfx}two-color`,\n appendTo: elToAppend || 'body',\n maxSelectionSize: 8,\n showPalette: true,\n palette: [],\n showAlpha: true,\n chooseText: 'Ok',\n cancelText: '⨯',\n ...opts,\n ...colorPicker,\n });\n }\n\n /**\n * Execute actions without triggering the storage and undo manager.\n * @param {Function} clb\n * @private\n */\n skip(clb) {\n this.__skip = true;\n const um = this.get('UndoManager');\n um ? um.skip(clb) : clb();\n this.__skip = false;\n }\n\n /**\n * Set/get data from the HTMLElement\n * @param {HTMLElement} el\n * @param {string} name Data name\n * @param {any} value Date value\n * @return {any}\n * @private\n */\n data(el, name, value) {\n const varName = '_gjs-data';\n\n if (!el[varName]) {\n el[varName] = {};\n }\n\n if (isUndefined(value)) {\n return el[varName][name];\n } else {\n el[varName][name] = value;\n }\n }\n}\n","import { isObject, isString, each, isUndefined } from 'underscore';\n\nexport default ({ $ }) => {\n if ($ && $.prototype && $.prototype.constructor.name !== 'jQuery') {\n const fn = $.fn;\n\n // Additional helpers\n\n fn.hide = function() {\n return this.css('display', 'none');\n };\n\n fn.show = function() {\n return this.css('display', 'block');\n };\n\n fn.focus = function() {\n const el = this.get(0);\n el && el.focus();\n return this;\n };\n\n // For SVGs in IE\n // (fn.removeClass = function(c) {\n // if (!arguments.length) {\n // return this.attr('class', '');\n // }\n // const classes = isString(c) && c.match(/\\S+/g);\n // return classes\n // ? this.each(function(el) {\n // each(classes, function(c) {\n // if (el.classList) {\n // el.classList.remove(c);\n // } else {\n // const val = el.className;\n // const bval = el.className.baseVal;\n\n // if (!isUndefined(bval)) {\n // val.baseVal = bval.replace(c, '');\n // } else {\n // el.className = val.replace(c, '');\n // }\n // }\n // });\n // })\n // : this;\n // }),\n // (fn.remove = function() {\n // return this.each(node => {\n // return node.parentNode && node.parentNode.removeChild(node);\n // });\n // }),\n\n // For spectrum compatibility\n\n fn.bind = function(ev, h) {\n return this.on(ev, h);\n };\n\n fn.unbind = function(ev, h) {\n if (isObject(ev)) {\n for (let name in ev) {\n ev.hasOwnProperty(name) && this.off(name, ev[name]);\n }\n\n return this;\n } else {\n return this.off(ev, h);\n }\n };\n\n fn.click = function(h) {\n return h ? this.on('click', h) : this.trigger('click');\n };\n\n fn.change = function(h) {\n return h ? this.on('change', h) : this.trigger('change');\n };\n\n fn.keydown = function(h) {\n return h ? this.on('keydown', h) : this.trigger('keydown');\n };\n\n fn.delegate = function(selector, events, data, handler) {\n if (!handler) {\n handler = data;\n }\n\n return this.on(events, selector, function(e) {\n e.data = data;\n handler(e);\n });\n };\n\n fn.scrollLeft = function() {\n let el = this.get(0);\n el = el.nodeType == 9 ? el.defaultView : el;\n let win = el instanceof Window ? el : null;\n return win ? win.pageXOffset : el.scrollLeft || 0;\n };\n\n fn.scrollTop = function() {\n let el = this.get(0);\n el = el.nodeType == 9 ? el.defaultView : el;\n let win = el instanceof Window ? el : null;\n return win ? win.pageYOffset : el.scrollTop || 0;\n };\n\n const offset = $.prototype.offset;\n fn.offset = function(coords) {\n let top, left;\n\n if (coords) {\n top = coords.top;\n left = coords.left;\n }\n\n if (typeof top != 'undefined') {\n this.css('top', `${top}px`);\n }\n if (typeof left != 'undefined') {\n this.css('left', `${left}px`);\n }\n\n return offset.call(this);\n };\n\n $.map = function(items, clb) {\n const ar = [];\n\n for (var i = 0; i < items.length; i++) {\n ar.push(clb(items[i], i));\n }\n\n return ar;\n };\n\n const indexOf = Array.prototype.indexOf;\n\n $.inArray = function(val, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, val, i);\n };\n\n $.Event = function(src, props) {\n if (!(this instanceof $.Event)) {\n return new $.Event(src, props);\n }\n\n this.type = src;\n this.isDefaultPrevented = () => false;\n };\n }\n};\n","import Backbone from 'backbone';\nimport { View } from 'common';\nimport { appendStyles } from 'utils/mixins';\n\nconst $ = Backbone.$;\n\nexport default class EditorView extends View {\n initialize() {\n const { model } = this;\n model.view = this;\n this.conf = model.config;\n this.pn = model.get('Panels');\n this.cv = model.get('Canvas');\n model.once('change:ready', () => {\n this.pn.active();\n this.pn.disableButtons();\n setTimeout(() => {\n model.trigger('load', model.get('Editor'));\n model.set('changesCount', 0);\n });\n });\n }\n\n render() {\n const { $el, conf, model } = this;\n const pfx = conf.stylePrefix;\n const contEl = $(conf.el || `body ${conf.container}`);\n appendStyles(conf.cssIcons, { unique: 1, prepand: 1 });\n $el.empty();\n\n if (conf.width) contEl.css('width', conf.width);\n if (conf.height) contEl.css('height', conf.height);\n\n $el.append(this.cv.render());\n $el.append(this.pn.render());\n\n // Load shallow editor\n const shallow = model.get('shallow');\n const shallowCanvasEl = shallow.get('Canvas').render();\n shallowCanvasEl.style.display = 'none';\n $el.append(shallowCanvasEl);\n\n $el.attr('class', `${pfx}editor ${pfx}one-bg ${pfx}two-color`);\n contEl.addClass(`${pfx}editor-cont`).empty().append($el);\n\n return this;\n }\n}\n","/**\n * Editor contains the top level API which you'll probably use to customize the editor or extend it with plugins.\n * You get the Editor instance on init method and you can pass options via its [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/editor/config/config.js)\n *\n * ```js\n * const editor = grapesjs.init({\n * // options\n * });\n * ```\n *\n * ## Available Events\n *\n * You can make use of available events in this way\n * ```js\n * editor.on('EVENT-NAME', (some, argument) => {\n * // do something\n * })\n * ```\n *\n * * `update` - The structure of the template is updated (its HTML/CSS)\n * * `undo` - Undo executed\n * * `redo` - Redo executed\n * * `load` - Editor is loaded\n *\n * ### Components\n * Check the [Components](/api/components.html) module.\n * ### Keymaps\n * Check the [Keymaps](/api/keymaps.html) module.\n * ### Style Manager\n * Check the [Style Manager](/api/style_manager.html) module.\n * ### Storage\n * Check the [Storage](/api/storage_manager.html) module.\n * ### Canvas\n * Check the [Canvas](/api/canvas.html) module.\n * ### RTE\n * Check the [Rich Text Editor](/api/rich_text_editor.html) module.\n * ### Commands\n * Check the [Commands](/api/commands.html) module.\n * ### Selectors\n * Check the [Selectors](/api/selector_manager.html) module.\n * ### Blocks\n * Check the [Blocks](/api/block_manager.html) module.\n * ### Assets\n * Check the [Assets](/api/assets.html) module.\n * ### Modal\n * Check the [Modal](/api/modal_dialog.html) module.\n * ### Devices\n * Check the [Devices](/api/device_manager.html) module.\n * ### Parser\n * Check the [Parser](/api/parser.html) module.\n * ### Pages\n * Check the [Pages](/api/pages.html) module.\n *\n * ## Methods\n * @module Editor\n */\nimport defaults from './config/config';\nimport EditorModel from './model/Editor';\nimport EditorView from './view/EditorView';\nimport html from 'utils/html';\n\nexport default (config = {}, opts = {}) => {\n const { $ } = opts;\n let c = {\n ...defaults,\n ...config,\n };\n\n c.pStylePrefix = c.stylePrefix;\n let em = new EditorModel(c);\n let editorView;\n\n return {\n $,\n\n /**\n * @property {EditorModel}\n * @private\n */\n editor: em,\n\n modules: [],\n\n /**\n * Initialize editor model\n * @return {this}\n * @private\n */\n init(opts = {}) {\n em.init(this, { ...c, ...opts });\n\n this.modules = [\n 'I18n',\n 'Utils',\n 'Config',\n 'Commands',\n 'Keymaps',\n 'Modal',\n 'Panels',\n 'Canvas',\n 'Parser',\n 'CodeManager',\n 'UndoManager',\n 'RichTextEditor',\n ['Pages', 'PageManager'],\n 'DomComponents',\n ['Components', 'DomComponents'],\n 'LayerManager',\n ['Layers', 'LayerManager'],\n 'CssComposer',\n ['Css', 'CssComposer'],\n 'StorageManager',\n ['Storage', 'StorageManager'],\n 'AssetManager',\n ['Assets', 'AssetManager'],\n 'BlockManager',\n ['Blocks', 'BlockManager'],\n 'TraitManager',\n ['Traits', 'TraitManager'],\n 'SelectorManager',\n ['Selectors', 'SelectorManager'],\n 'StyleManager',\n ['Styles', 'StyleManager'],\n 'DeviceManager',\n ['Devices', 'DeviceManager'],\n ];\n\n this.modules.forEach(prop => {\n if (Array.isArray(prop)) {\n this[prop[0]] = em.get(prop[1]);\n } else {\n this[prop] = em.get(prop);\n }\n });\n\n // Do post render stuff after the iframe is loaded otherwise it'll\n // be empty during tests\n em.once('change:ready', () => {\n this.UndoManager.clear();\n em.get('modules').forEach(module => {\n module.postRender && module.postRender(editorView);\n });\n });\n\n return this;\n },\n\n /**\n * Returns configuration object\n * @param {string} [prop] Property name\n * @returns {any} Returns the configuration object or\n * the value of the specified property\n */\n getConfig(prop) {\n return em.getConfig(prop);\n },\n\n /**\n * Returns HTML built inside canvas\n * @param {Object} [opts={}] Options\n * @param {Component} [opts.component] Return the HTML of a specific Component\n * @param {Boolean} [opts.cleanId=false] Remove unnecessary IDs (eg. those created automatically)\n * @returns {string} HTML string\n */\n getHtml(opts) {\n return em.getHtml(opts);\n },\n\n /**\n * Returns CSS built inside canvas\n * @param {Object} [opts={}] Options\n * @param {Component} [opts.component] Return the CSS of a specific Component\n * @param {Boolean} [opts.json=false] Return an array of CssRules instead of the CSS string\n * @param {Boolean} [opts.avoidProtected=false] Don't include protected CSS\n * @param {Boolean} [opts.onlyMatched=false] Return only rules matched by the passed component.\n * @param {Boolean} [opts.keepUnusedStyles=false] Force keep all defined rules. Toggle on in case output looks different inside/outside of the editor.\n * @returns {String|Array} CSS string or array of CssRules\n */\n getCss(opts) {\n return em.getCss(opts);\n },\n\n /**\n * Returns JS of all components\n * @param {Object} [opts={}] Options\n * @param {Component} [opts.component] Get the JS of a specific component\n * @returns {String} JS string\n */\n getJs(opts) {\n return em.getJs(opts);\n },\n\n /**\n * Return the complete tree of components. Use `getWrapper` to include also the wrapper\n * @return {Components}\n */\n getComponents() {\n return em.get('DomComponents').getComponents();\n },\n\n /**\n * Return the wrapper and its all components\n * @return {Component}\n */\n getWrapper() {\n return em.get('DomComponents').getWrapper();\n },\n\n /**\n * Set components inside editor's canvas. This method overrides actual components\n * @param {Array|Object|string} components HTML string or components model\n * @param {Object} opt the options object to be used by the [setComponents]{@link em#setComponents} method\n * @return {this}\n * @example\n * editor.setComponents('
New component
');\n * // or\n * editor.setComponents({\n * type: 'text',\n * classes:['cls'],\n * content: 'New component'\n * });\n */\n setComponents(components, opt = {}) {\n em.setComponents(components, opt);\n return this;\n },\n\n /**\n * Add components\n * @param {Array|Object|string} components HTML string or components model\n * @param {Object} opts Options\n * @param {Boolean} [opts.avoidUpdateStyle=false] If the HTML string contains styles,\n * by default, they will be created and, if already exist, updated. When this option\n * is true, styles already created will not be updated.\n * @return {Array}\n * @example\n * editor.addComponents('
New component
');\n * // or\n * editor.addComponents({\n * type: 'text',\n * classes:['cls'],\n * content: 'New component'\n * });\n */\n addComponents(components, opts) {\n return this.getWrapper().append(components, opts);\n },\n\n /**\n * Returns style in JSON format object\n * @return {Object}\n */\n getStyle() {\n return em.get('CssComposer').getAll();\n },\n\n /**\n * Set style inside editor's canvas. This method overrides actual style\n * @param {Array|Object|string} style CSS string or style model\n * @return {this}\n * @example\n * editor.setStyle('.cls{color: red}');\n * //or\n * editor.setStyle({\n * selectors: ['cls'],\n * style: { color: 'red' }\n * });\n */\n setStyle(style, opt = {}) {\n em.setStyle(style, opt);\n return this;\n },\n\n /**\n * Add styles to the editor\n * @param {Array|Object|string} style CSS string or style model\n * @returns {Array} Array of created CssRule instances\n * @example\n * editor.addStyle('.cls{color: red}');\n */\n addStyle(style, opts = {}) {\n return em.addStyle(style, opts);\n },\n\n /**\n * Returns the last selected component, if there is one\n * @return {Model}\n */\n getSelected() {\n return em.getSelected();\n },\n\n /**\n * Returns an array of all selected components\n * @return {Array}\n */\n getSelectedAll() {\n return em.getSelectedAll();\n },\n\n /**\n * Get a stylable entity from the selected component.\n * If you select a component without classes the entity is the Component\n * itself and all changes will go inside its 'style' attribute. Otherwise,\n * if the selected component has one or more classes, the function will\n * return the corresponding CSS Rule\n * @return {Model}\n */\n getSelectedToStyle() {\n let selected = em.getSelected();\n\n if (selected) {\n return this.StyleManager.getModelToStyle(selected);\n }\n },\n\n /**\n * Select a component\n * @param {Component|HTMLElement} el Component to select\n * @param {Object} [opts] Options\n * @param {Boolean} [opts.scroll] Scroll canvas to the selected element\n * @return {this}\n * @example\n * // Select dropped block\n * editor.on('block:drag:stop', function(model) {\n * editor.select(model);\n * });\n */\n select(el, opts) {\n em.setSelected(el, opts);\n return this;\n },\n\n /**\n * Add component to selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectAdd(model);\n */\n selectAdd(el) {\n em.addSelected(el);\n return this;\n },\n\n /**\n * Remove component from selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectRemove(model);\n */\n selectRemove(el) {\n em.removeSelected(el);\n return this;\n },\n\n /**\n * Toggle component selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectToggle(model);\n */\n selectToggle(el) {\n em.toggleSelected(el);\n return this;\n },\n\n /**\n * Returns, if active, the Component enabled in rich text editing mode.\n * @returns {Component|null}\n * @example\n * const textComp = editor.getEditing();\n * if (textComp) {\n * console.log('HTML: ', textComp.toHTML());\n * }\n */\n getEditing() {\n return em.getEditing();\n },\n\n /**\n * Set device to the editor. If the device exists it will\n * change the canvas to the proper width\n * @param {string} name Name of the device\n * @return {this}\n * @example\n * editor.setDevice('Tablet');\n */\n setDevice(name) {\n em.set('device', name);\n return this;\n },\n\n /**\n * Return the actual active device\n * @return {string} Device name\n * @example\n * var device = editor.getDevice();\n * console.log(device);\n * // 'Tablet'\n */\n getDevice() {\n return em.get('device');\n },\n\n /**\n * Execute command\n * @param {string} id Command ID\n * @param {Object} options Custom options\n * @return {*} The return is defined by the command\n * @example\n * editor.runCommand('myCommand', {someValue: 1});\n */\n runCommand(id, options = {}) {\n return em.get('Commands').run(id, options);\n },\n\n /**\n * Stop the command if stop method was provided\n * @param {string} id Command ID\n * @param {Object} options Custom options\n * @return {*} The return is defined by the command\n * @example\n * editor.stopCommand('myCommand', {someValue: 1});\n */\n stopCommand(id, options = {}) {\n return em.get('Commands').stop(id, options);\n },\n\n /**\n * Store data to the current storage\n * @param {Function} clb Callback function\n * @return {Object} Stored data\n */\n store(clb) {\n return em.store(clb);\n },\n\n /**\n * Get the JSON project data, which could be stored and loaded back with `editor.loadProject(json)`\n * @returns {Object}\n * @example\n * console.log(editor.getProject());\n * // { pages: [...], styles: [...], ... }\n */\n getProject() {\n return em.storeData();\n },\n\n storeData() {\n return em.storeData();\n },\n\n /**\n * Load data from the current storage\n * @param {Function} clb Callback function\n * @return {Object} Stored data\n */\n load(clb) {\n return em.load(clb);\n },\n\n /**\n * Load data from the JSON project\n * @param {Object} data Project to load\n * @example\n * editor.loadProject({ pages: [...], styles: [...], ... })\n */\n loadProject(data) {\n return em.loadData(data);\n },\n\n loadData(data) {\n return em.loadData(data);\n },\n\n /**\n * Returns container element. The one which was indicated as 'container'\n * on init method\n * @return {HTMLElement}\n */\n getContainer() {\n return c.el;\n },\n\n /**\n * Return the count of changes made to the content and not yet stored.\n * This count resets at any `store()`\n * @return {number}\n */\n getDirtyCount() {\n return em.getDirtyCount();\n },\n\n /**\n * Update editor dimension offsets\n *\n * This method could be useful when you update, for example, some position\n * of the editor element (eg. canvas, panels, etc.) with CSS, where without\n * refresh you'll get misleading position of tools\n * @param {Object} [options] Options\n * @param {Boolean} [options.tools=false] Update the position of tools (eg. rich text editor, component highlighter, etc.)\n */\n refresh(opts) {\n em.refreshCanvas(opts);\n },\n\n /**\n * Replace the built-in Rich Text Editor with a custom one.\n * @param {Object} obj Custom RTE Interface\n * @example\n * editor.setCustomRte({\n * // Function for enabling custom RTE\n * // el is the HTMLElement of the double clicked Text Component\n * // rte is the same instance you have returned the first time you call\n * // enable(). This is useful if need to check if the RTE is already enabled so\n * // ion this case you'll need to return the RTE and the end of the function\n * enable: function(el, rte) {\n * rte = new MyCustomRte(el, {}); // this depends on the Custom RTE API\n * ...\n * return rte; // return the RTE instance\n * },\n *\n * // Disable the editor, called for example when you unfocus the Text Component\n * disable: function(el, rte) {\n * rte.blur(); // this depends on the Custom RTE API\n * }\n *\n * // Called when the Text Component is focused again. If you returned the RTE instance\n * // from the enable function, the enable won't be called again instead will call focus,\n * // in this case to avoid double binding of the editor\n * focus: function (el, rte) {\n * rte.focus(); // this depends on the Custom RTE API\n * }\n * });\n */\n setCustomRte(obj) {\n this.RichTextEditor.customRte = obj;\n },\n\n /**\n * Replace the default CSS parser with a custom one.\n * The parser function receives a CSS string as a parameter and expects\n * an array of CSSRule objects as a result. If you need to remove the\n * custom parser, pass `null` as the argument\n * @param {Function|null} parser Parser function\n * @return {this}\n * @example\n * editor.setCustomParserCss(css => {\n * const result = [];\n * // ... parse the CSS string\n * result.push({\n * selectors: '.someclass, div .otherclass',\n * style: { color: 'red' }\n * })\n * // ...\n * return result;\n * });\n */\n setCustomParserCss(parser) {\n this.Parser.getConfig().parserCss = parser;\n return this;\n },\n\n /**\n * Change the global drag mode of components.\n * To get more about this feature read: https://github.com/artf/grapesjs/issues/1936\n * @param {String} value Drag mode, options: 'absolute' | 'translate'\n * @returns {this}\n */\n setDragMode(value) {\n em.setDragMode(value);\n return this;\n },\n\n /**\n * Trigger event log message\n * @param {*} msg Message to log\n * @param {Object} [opts={}] Custom options\n * @param {String} [opts.ns=''] Namespace of the log (eg. to use in plugins)\n * @param {String} [opts.level='debug'] Level of the log, `debug`, `info`, `warning`, `error`\n * @return {this}\n * @example\n * editor.log('Something done!', { ns: 'from-plugin-x', level: 'info' });\n * // This will trigger following events\n * // `log`, `log:info`, `log-from-plugin-x`, `log-from-plugin-x:info`\n * // Callbacks of those events will always receive the message and\n * // options, as arguments, eg:\n * // editor.on('log:info', (msg, opts) => console.info(msg, opts))\n */\n log(msg, opts = {}) {\n em.log(msg, opts);\n return this;\n },\n\n /**\n * Translate label\n * @param {String} key Label to translate\n * @param {Object} [opts] Options for the translation\n * @param {Object} [opts.params] Params for the translation\n * @param {Boolean} [opts.noWarn] Avoid warnings in case of missing resources\n * @returns {String}\n * @example\n * editor.t('msg');\n * // use params\n * editor.t('msg2', { params: { test: 'hello' } });\n * // custom local\n * editor.t('msg2', { params: { test: 'hello' }, l: 'it' });\n */\n t(...args) {\n return em.t(...args);\n },\n\n /**\n * Attach event\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n on(event, callback) {\n em.on(event, callback);\n return this;\n },\n\n /**\n * Attach event and detach it after the first run\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n once(event, callback) {\n em.once(event, callback);\n return this;\n },\n\n /**\n * Detach event\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n off(event, callback) {\n em.off(event, callback);\n return this;\n },\n\n /**\n * Trigger event\n * @param {string} event Event to trigger\n * @return {this}\n */\n trigger(event) {\n em.trigger.apply(em, arguments);\n return this;\n },\n\n /**\n * Destroy the editor\n */\n destroy() {\n if (!em) return;\n em.destroyAll();\n this.modules.forEach(prop => {\n if (Array.isArray(prop)) {\n this[prop[0]] = 0;\n } else {\n this[prop] = 0;\n }\n });\n this.modules = 0;\n editorView = 0;\n em = 0;\n c = 0;\n },\n\n /**\n * Returns editor element\n * @return {HTMLElement}\n * @private\n */\n getEl() {\n return editorView && editorView.el;\n },\n\n /**\n * Returns editor model\n * @return {Model}\n * @private\n */\n getModel() {\n return em;\n },\n\n /**\n * Render editor\n * @return {HTMLElement}\n */\n render() {\n editorView && editorView.remove();\n editorView = new EditorView({\n model: em,\n config: c,\n });\n return editorView.render().el;\n },\n\n /**\n * Trigger a callback once the editor is loaded and rendered.\n * The callback will be executed immediately if the method is called on the already rendered editor.\n * @param {Function} clb Callback to trigger\n * @example\n * editor.onReady(() => {\n * // perform actions\n * });\n */\n onReady(clb) {\n em.get('ready') ? clb(this) : em.on('load', clb);\n },\n\n /**\n * Print safe HTML by using ES6 tagged template strings.\n * @param {Array} literals\n * @param {Array} substs\n * @returns {String}\n * @example\n * const unsafeStr = '';\n * const safeStr = 'Hello';\n * // Use `$${var}` to avoid escaping\n * const strHtml = editor.html`Escaped ${unsafeStr}, unescaped $${safeStr}`;\n */\n html,\n };\n};\n","export default {\n plugins: []\n};\n","/**\n * File made for IE/Edge support\n * https://github.com/artf/grapesjs/issues/214\n */\nimport { hasWin } from './mixins';\n\nexport default () => {\n /**\n * Check if IE/Edge\n * @return {Boolean}\n */\n const isIE = () => {\n let match;\n const agent = window.navigator.userAgent;\n const rules = [\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/]\n ];\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i];\n match = rule[1].exec(agent);\n if (match) break;\n }\n\n return !!match;\n };\n\n if (hasWin() && isIE()) {\n const originalCreateHTMLDocument =\n DOMImplementation.prototype.createHTMLDocument;\n DOMImplementation.prototype.createHTMLDocument = title => {\n if (!title) title = '';\n return originalCreateHTMLDocument.apply(document.implementation, [title]);\n };\n }\n};\n","import { isElement, isFunction } from 'underscore';\nimport $ from 'utils/cash-dom';\nimport Editor from './editor';\nimport polyfills from 'utils/polyfills';\nimport { getGlobal } from 'utils/mixins';\nimport PluginManager from './plugin_manager';\n\npolyfills();\n\nconst plugins = new PluginManager();\nconst editors = [];\nconst defaultConfig = {\n // If true renders editor on init\n autorender: 1,\n\n // Array of plugins to init\n plugins: [],\n\n // Custom options for plugins\n pluginsOpts: {}\n};\n\nexport default {\n $,\n\n editors,\n\n plugins,\n\n // Will be replaced on build\n version: __GJS_VERSION__,\n\n /**\n * Initialize the editor with passed options\n * @param {Object} config Configuration object\n * @param {string|HTMLElement} config.container Selector which indicates where render the editor\n * @param {Boolean} [config.autorender=true] If true, auto-render the content\n * @param {Array} [config.plugins=[]] Array of plugins to execute on start\n * @param {Object} [config.pluginsOpts={}] Custom options for plugins\n * @param {Boolean} [config.headless=false] Init headless editor\n * @return {Editor} Editor instance\n * @example\n * var editor = grapesjs.init({\n * container: '#myeditor',\n * components: '
Hello world
',\n * style: '.hello{color: red}',\n * })\n */\n init(config = {}) {\n const { headless } = config;\n const els = config.container;\n if (!els && !headless) throw new Error(\"'container' is required\");\n config = { ...defaultConfig, ...config, grapesjs: this };\n config.el =\n !headless && (isElement(els) ? els : document.querySelector(els));\n const editor = new Editor(config, { $ }).init();\n const em = editor.getModel();\n\n // Load plugins\n config.plugins.forEach(pluginId => {\n let plugin = isFunction(pluginId) ? pluginId : plugins.get(pluginId);\n const plgOptions = config.pluginsOpts[pluginId] || {};\n\n // Try to search in global context\n if (!plugin) {\n const wplg = getGlobal()[pluginId];\n plugin = wplg?.default || wplg;\n }\n\n if (plugin) {\n plugin(editor, plgOptions);\n } else if (isFunction(pluginId)) {\n pluginId(editor, plgOptions);\n } else {\n em.logWarning(`Plugin ${pluginId} not found`, {\n context: 'plugins',\n plugin: pluginId\n });\n }\n });\n\n // Execute `onLoad` on modules once all plugins are initialized.\n // A plugin might have extended/added some custom type so this\n // is a good point to load stuff like components, css rules, etc.\n em.loadOnStart();\n config.autorender && !headless && editor.render();\n editors.push(editor);\n\n return editor;\n }\n};\n","import defaults from './config/config';\n\nexport default config => {\n var c = config || {};\n\n // Set default options\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n var plugins = {};\n\n return {\n /**\n * Add new plugin. Plugins could not be overwritten\n * @param {string} id Plugin ID\n * @param {Function} plugin Function which contains all plugin logic\n * @return {Function} The plugin function\n * @example\n * PluginManager.add('some-plugin', function(editor){\n * editor.Commands.add('new-command', {\n * run: function(editor, senderBtn){\n * console.log('Executed new-command');\n * }\n * })\n * });\n */\n add(id, plugin) {\n if (plugins[id]) {\n return plugins[id];\n }\n\n plugins[id] = plugin;\n return plugin;\n },\n\n /**\n * Returns plugin by ID\n * @param {string} id Plugin ID\n * @return {Function|undefined} Plugin\n * @example\n * var plugin = PluginManager.get('some-plugin');\n * plugin(editor);\n */\n get(id) {\n return plugins[id];\n },\n\n /**\n * Returns object with all plugins\n * @return {Object}\n */\n getAll() {\n return plugins;\n }\n };\n};\n"],"names":["root","factory","exports","module","define","amd","globalThis","window","this","_","Backbone","core_slice","Array","prototype","slice","apply","fn","ctx","args","length","call","arr","index","hasKeys","obj","keys","isArray","arguments","all","key","getMagicFusionIndex","callstackWasIndexed","magicFusionIndex","indexCycle","defer","ObjectRegistry","registeredObjects","cidIndexes","onoff","which","objects","i","l","objectRegistry","register","unregister","isFunction","actionUndoRedo","action","type","undoTypes","object","before","after","options","managerUndoRedo","manager","stack","magic","everything","isCurrentlyUndoRedoing","pointer","actions","isUndo","clone","models","at","where","get","pop","shift","trigger","validateUndoActionCreation","undoTypesType","condition","addToStack","track","res","diff","add","maximumStackLength","isRegistered","cid","contains","push","splice","indexOf","map","concat","UndoTypes","collection","ignore","model","remove","undefined","isEmpty","each","unset","set","unsetData","afterAttributes","changedAttributes","keysAfter","previousAttributes","pick","keysPrevious","val","reset","previousModels","OwnedUndoTypes","manipulateUndoType","manipType","undoType","fns","undoTypesInstance","isObject","extend","Action","Model","defaults","undo","attributes","redo","UndoStack","Collection","Infinity","setMaxLength","UndoManager","initialize","attr","on","value","startTracking","isArguments","stopTracking","isTracking","_addToStack","unregisterAll","undoAll","redoAll","isAvailable","s","merge","undoManager","addUndoType","changeUndoType","removeUndoType","clear","defaultAttributes","self","g","global","$","previousBackbone","VERSION","noConflict","emulateHTTP","emulateJSON","addMethod","method","attribute","iteratee","context","cb","defaultVal","unshift","addUnderscoreMethods","Class","methods","instance","_isModel","modelMatcher","isString","attrs","matcher","matches","Events","eventSplitter","eventsApi","events","name","callback","opts","names","test","split","internalOn","listening","_events","onApi","_listeners","id","listenTo","_listenId","uniqueId","listeningTo","_listeningTo","thisId","objId","count","handlers","off","offApi","listeners","stopListening","ids","remaining","j","handler","_callback","once","onceMap","bind","listenToOnce","offer","Math","max","triggerApi","objEvents","allEvents","triggerEvents","ev","a1","a2","a3","unbind","cidPrefix","parse","result","changed","validationError","idAttribute","toJSON","sync","escape","has","_validate","silent","changes","changing","_changing","_previousAttributes","current","prev","isEqual","_pending","hasChanged","old","size","previous","fetch","success","resp","serverAttrs","wrapError","save","wait","validate","isNew","patch","xhr","destroy","url","base","urlError","replace","encodeURIComponent","constructor","isValid","error","values","pairs","invert","omit","chain","comparator","_reset","setOptions","addOptions","array","insert","min","tail","singular","removed","_removeModels","added","merged","toAdd","toMerge","toRemove","modelMap","sort","sortable","sortAttr","existing","_prepareModel","_addReference","orderChanged","some","m","_removeReference","_byId","modelId","first","findWhere","Error","sortBy","pluck","create","callbackOpts","_onModelEvent","event","prevId","forEach","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","any","include","includes","invoke","toArray","head","take","initial","rest","drop","last","without","difference","shuffle","lastIndexOf","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","selector","$el","render","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","match","delegate","eventName","listener","undelegate","_createElement","document","createElement","className","_setAttributes","methodMap","params","dataType","data","contentType","JSON","stringify","_method","beforeSend","setRequestHeader","processData","textStatus","errorThrown","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","history","fragment","_extractParameters","execute","navigate","optional","RegExp","exec","param","decodeURIComponent","History","checkUrl","location","routeStripper","rootStripper","pathStripper","started","interval","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","href","getHash","getPath","path","charAt","getFragment","_usePushState","_wantsHashChange","start","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","rootPath","iframe","src","style","display","tabIndex","body","iWindow","insertBefore","firstChild","contentWindow","open","close","hash","addEventListener","attachEvent","_checkUrlInterval","setInterval","loadUrl","stop","removeEventListener","detachEvent","removeChild","clearInterval","e","title","assign","_updateHash","protoProps","staticProps","child","parent","__super__","CodeMirror","extendMode","commentStart","commentEnd","newlineAfterToken","_type","content","textAfter","state","jsonMode","lexical","inlineElements","inline","configuration","defineExtension","isComment","from","to","cm","curMode","innerMode","getMode","getTokenAt","mode","operation","replaceRange","line","ch","setCursor","selText","getRange","startIndex","endIndex","substr","substring","cmInstance","indentLine","outer","text","copyState","tabSize","getOption","out","lines","atSol","newline","stream","StringStream","eol","inner","token","cur","pos","string","blankLine","end","setSelection","getCursor","mod","userAgent","navigator","platform","gecko","ie_upto10","ie_11up","edge","ie","ie_version","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","Number","flipCtrlCmd","captureRightClick","classTest","cls","range","rmClass","node","removeChildren","childNodes","removeChildrenAndAdd","appendChild","elt","tag","cssText","createTextNode","eltP","setAttribute","nodeType","parentNode","host","activeElt","activeElement","shadowRoot","addClass","joinClasses","a","b","as","createRange","endNode","r","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","f","copyObj","target","overwrite","prop","hasOwnProperty","countColumn","startValue","search","n","nextTab","selectionStart","selectionEnd","_e","Delayed","time","onTimeout","Date","setTimeout","ms","clearTimeout","scrollerGap","Pass","toString","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","col","skipped","spaceStrs","spaceStr","lst","insertSorted","score","priority","nothing","createObj","props","inst","Object","nonASCIISingleCaseWordChar","isWordCharBasic","toUpperCase","toLowerCase","isWordChar","helper","source","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","findFirst","pred","midF","mid","ceil","floor","iterateBidiSections","order","found","part","level","bidiOther","getBidiPartAt","sticky","bidiOrdering","lowTypes","arabicTypes","charType","code","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","direction","outerType","len","types","i$1","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","i$5","cur$1","type$4","i$6","end$1","replace$1","j$1","i$7","isRTL","j$2","nstart","reverse","getOrder","noHandlers","emitter","_handlers","getHandlers","signal","signalDOMEvent","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","nl","rt","hasSelection","getSelection","te","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","hasBadZoomedRects","normal","fromRange","abs","modes","mimeModes","defineMode","dependencies","defineMIME","mime","spec","resolveMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","properties","nstate","info","startState","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","chunk","children","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","height","lineNo","no","lineAtHeight","h","lh","isLine","lineNumberFor","String","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","clipPos","clipToLen","linelen","clipPosArray","sol","peek","next","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","hideFirstChars","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","o","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","styleClasses","highlightFrontier","modeFrontier","precise","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","callBlankLine","readToken","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","indented","retreatFrontier","sawReadOnlySpans","sawCollapsedSpans","seeReadOnlySpans","seeCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","addMarkedSpan","op","inThisOp","WeakSet","markedSpans","attachLine","markedSpansBefore","startCh","isInsert","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","startsBefore","stretchSpansOverChange","change","full","oldFirst","oldLast","sameLine","offset","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","removeReadOnlyRanges","markers","mark","readOnly","parts","mk","p","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","found$1","findMaxLine","d","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","updateLine","estHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","startStyle","endStyle","css","displayText","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","foundBookmarks","endStyles","upto","tokenText","LineView","hidden","buildViewArray","nextPos","view","operationGroup","pushOperation","ops","ownsGroup","delayedCallbacks","fireCallbacksForOps","group","callbacks","cursorActivityCalled","finishOperation","endCb","orphanDelayedCallbacks","signalLater","list","fireOrphanDelayed","delayed","updateLineForChanges","dims","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","updateLineBackground","background","wrap","getLineContent","ext","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","k","gutterSpecs","gutterWidth","alignable","isWidget","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","parseInt","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","ensureLineHeights","rect","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","bottom","top","mapFromLineView","updateExternalMeasurement","lineMeasure","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","measureCharInner","bogus","rtop","rbottom","measureText","nullRect","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","place","maybeUpdateRectForZooming","rSpan","charWidth","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","partPos","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","posFromMouse","liberal","forRect","space","clientX","clientY","e$1","colDiff","round","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","empty","showCursorWhenSelecting","drawSelectionCursor","drawSelectionRange","cursor","cursorHeight","getWrapperElement","charPos","otherCursor","cmpCoords","padding","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","blinker","cursorDiv","visibility","cursorBlinkRate","hasFocus","onBlur","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","draggingText","selForContextMenu","receivedFocus","updateHeightsInViewport","prevBottom","lineDiv","viewTop","oldHeight","mustScroll","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","maybeScrollWindow","doScroll","innerHeight","scrollNode","scrollIntoView","scrollPosIntoView","margin","limit","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","updateScrollTop","setScrollLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToRange","scrollToCoordsRange","sPos","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","markArrays","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","scrollbarsClipped","marginBottom","borderRightWidth","selectionSnapshot","active","anchorNode","anchorOffset","focusNode","focusOffset","restoreSelection","snapshot","nodeName","removeAllRanges","addRange","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","toUpdate","selSnapshot","patchDisplay","selectionDiv","reportedViewFrom","reportedViewTo","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumInnerWidth","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","init","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","movedX","movedY","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","hint","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","linesFor","firstLine","lastText","lastSpans","nlines","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","directionChanged","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","addSelectionToHistory","clearRedo","dest","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","newChanges","extendRange","posBefore","extendSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","filterSelectionChange","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","v","shiftDoc","distance","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","addLineWidget","insertAt","aboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","markTextShared","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","withOp","visual","dHeight","SharedTextMarker","cloneNode","isParent","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","getValue","join","lineSeparator","setValue","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","t","readTextFromFile","file","allowDropFileTypes","reader","onerror","onload","readAsText","text$1","getData","selected","onDragStart","setData","effectAllowed","setDragImage","img","_top","onDragOver","frag","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","registerGlobalHandlers","resizeTimer","onResize","setSize","keyNames","fromCharCode","keyMap","normalizeKeyName","alt","ctrl","cmd","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","moveVisually","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","nextCh","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","lookupKeyForEditor","keyMaps","extraKeys","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","handleKeyBinding","motion","handleCharBinding","lastStoppedKey","onKeyDown","getField","handled","showCrossHair","up","onKeyUp","onKeyPress","charCode","lastClick","lastDoubleClick","DOUBLECLICK_DELAY","PastClick","clickRepeat","now","compare","onMouseDown","supportsTouch","clickInGutter","repeat","selectingText","handleMappedButton","leftButtonDown","onContextMenu","configureMouse","option","unit","addNew","moveOnDrag","contained","behavior","dragDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","rangeForUnit","findWordAt","ourRange","ourIndex","startSel","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","bidiSimplify","editorSize","counter","curCount","move","buttons","anchorLine","boundary","headIndex","usePart","gutterEvent","prevent","mX","mY","touches","lineBox","contextMenuInGutter","themeChanged","theme","Init","optionHandlers","defineOptions","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","spellcheck","autocorrect","autocapitalize","detach","attach","wrappingChanged","integer","blur","readOnlyChanged","screenReaderLabelChanged","dragDropChanged","resetPosition","funcs","dragFunctions","toggle","enter","over","leave","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","registerEventHandlers","finishInit","initHooks","textRendering","word","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","pageX","pageY","inp","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","hiddenTextarea","border","addEditorMethods","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getLineTokens","getTokenTypeAt","getHelper","getHelpers","help","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","hitSide","rtlMoveVisually","findPosV","goalColumn","goals","headPos","startChar","check","scrollTo","getScrollInfo","interpret","swapDoc","phrase","phraseText","phrases","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","origDir","lineDir","findNextLine","moveOnce","boundToLine","astral","sawType","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","isInGutter","scan","badPos","bad","domTextBetween","closing","extraLinebreak","recognizeMarker","addText","walk","cmText","markerID","isBlock","textContent","nodeValue","domToPos","lineNode","locateNodeInLineView","textNode","topNode","curNode","previousSibling","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","contentEditable","updateFromDOM","readFromDOMSoon","forceCompositionEnd","label","removeAttribute","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","TextareaInput","prevInput","pollingFast","fromTextArea","textarea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","addLegacyProps","cmpPos","createField","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","dontDelegate","func","defineDocExtension","version","keySet","config","parserConfig","propertyKeywords","tokenHooks","documentTypes","mediaTypes","mediaFeatures","mediaValueKeywords","nonStandardPropertyKeywords","fontProperties","counterDescriptors","colorKeywords","valueKeywords","allowNested","lineComment","supportsAtComponent","highlightNonStandardPropertyKeywords","ret","tp","tokenBase","tokenize","tokenString","tokenParenthesized","quote","escaped","pushContext","popContext","pass","states","popAndPass","wordAsValue","stateArg","_stream","atBlock","cx","blockCommentStart","blockCommentEnd","blockCommentContinue","fold","documentTypes_","mediaTypes_","mediaFeatures_","mediaValueKeywords_","propertyKeywords_","nonStandardPropertyKeywords_","colorKeywords_","valueKeywords_","allWords","tokenCComment","maybeEnd","defaultTags","script","maybeBackup","pat","attrRegexpCache","getAttrRegexp","regexp","getAttrValue","getTagRegexp","anchored","addTags","findMatchingMode","tagInfo","tagText","htmlMode","multilineTagIndentFactor","multilineTagIndentPastTag","allowMissingTagName","tags","configTags","configScript","scriptTypes","html","htmlState","inTag","endTagA","endTag","localState","localMode","local","statementIndent","jsonldMode","jsonld","json","trackScope","isTS","typescript","wordRE","wordCharacters","keywords","kw","A","B","C","D","operator","atom","isOperatorChar","isJsonldKeyword","readRegexp","inSet","cont","tokenComment","expressionAllowed","tokenQuasi","lastType","propertyIsEnumerable","brackets","findFatArrow","fatArrowAt","arrow","depth","sawSomething","bracket","atomicTypes","JSLexical","inScope","varname","localVars","vars","parseJS","cc","marked","expression","statement","lex","inList","block","newContext","registerVarScoped","Var","globalVars","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","poplex","expect","wanted","exp","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","enumdef","typename","typeexpr","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","maybeTarget","expr","property","continueQuasi","targetNoComma","maybeTypeArgs","getterSetter","afterprop","maybetype","what","sep","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprops","typearg","maybeReturnType","quasiType","typeprop","functiondecl","continueQuasiType","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","forspec1","forspec2","classNameAfter","classBody","classfield","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","isContinuedStatement","basecolumn","firstChar","c","doubleIndentSwitch","closeBrackets","skipExpression","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","editorConf","config_","setStyle","inText","parser","inBlock","doctype","baseState","tagStart","inAttribute","stringStartCol","closure","isInAttribute","terminator","lower","startOfLine","noIndent","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","attrEqState","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","alignCDATA","tagAfter","grabbers","skipAttribute","xmlCurrentTag","xmlCurrentContext","assets","noAssets","stylePrefix","upload","uploadName","headers","credentials","multiUpload","autoAdd","customFetch","uploadFile","embedAsBase64","handleAdd","beforeUpload","showUrlInput","custom","dropzone","openAssetsOnDrop","dropzoneContent","Asset","getFilename","getDefaults","AssetImage","unitDim","pfx","ppfx","pStylePrefix","em","__getBhv","am","__getBehaviour","template","getPreview","getInfo","updateTarget","innerHTML","AssetView","click","dblclick","dim","onClick","coll","onDblClick","onSelect","onRemove","stopImmediatePropagation","TypeableCollection","AssetImageView","isType","renderAssets","addToAsset","removedAsset","deselectAll","handleSubmit","getAddInput","trim","getAssetsEl","globalCollection","inputUrl","toggleNoAssets","addAsset","fragmentEl","rendered","typeView","assetsEl","hide","append","removeClass","fuRendered","fu","uploadId","disableUpload","onUploadStart","__propEv","onUploadEnd","onUploadError","err","console","onUploadResponse","clb","FormData","reqHead","fetchOpts","then","status","Promise","catch","initDrop","that","uploadForm","ondragover","ondragleave","ondrop","initDropzone","addedCls","edEl","editor","frameEl","getBody","updatedCls","dropzoneCls","cleanEditorElCls","onDragLeave","getSelected","runCommand","Modal","AssetManager","setTarget","item","response","promises","mimeTypeMatcher","promise","resolve","image","Image","readAsDataURL","evAll","evPfx","evSelect","evUpdate","evAdd","evRemove","evRemoveBefore","evCustom","evOpen","evClose","evUpload","evUploadStart","evUploadEnd","evUploadError","evUploadRes","assetsVis","assetCmd","Module","storageKey","Assets","removeBefore","uploadStart","uploadEnd","uploadError","uploadResponse","__initListen","getAllVisible","getAll","__onAllEvent","debounce","__trgCustom","getConfig","__customData","bhv","isOpen","asset","complete","run","isActive","__remove","store","noStore","stm","load","getContainer","assts","toRender","__viewParams","FileUploader","AssetsView","addType","definition","getType","getTypes","FileUpload","onLoad","postRender","editorView","__behaviour","_bhv","appendTo","appendOnClick","blocks","Block","media","category","activate","resetId","disable","ctg","Blocks","Category","Categories","mousedown","dragstart","drag","dragend","endDrag","__getModule","handleClick","sorter","getSorter","setDropContent","validTarget","getEl","valid","getWrapper","setSelected","startDrag","refreshCanvas","setDragHelper","startSort","handleDragStart","__startDrag","handleDrag","__drag","handleDragEnd","__endDrag","endMove","class","clsAdd","hasDnd","prefix","CategoryView","caretR","caretD","iconClass","activeClass","updateVisibility","getIconEl","getBlocksEl","iconEl","blocksEl","bindAll","categories","renderedCategories","noCatClass","blockContClass","catsClass","addTo","tac","grabbingCls","canvas","updateConfig","utils","Sorter","placer","getPlacerEl","containerSel","itemSel","onStart","onDrag","onEndMove","onMove","getFrameEl","contentDocument","wmargin","nested","canvasRelative","stopDefault","runDefault","oldActive","BlockView","ignoreCategories","catModel","catId","catView","getCategoriesEl","catsEl","evDrag","evDragStart","evDragStop","blocksVisible","blocksView","bm","dragStop","getContent","_dragBlock","dragResult","dragContent","oldKey","toActive","toSelect","onAll","__getFrameViews","getFrames","frame","fv","droppable","startCustom","endCustom","BlocksView","elTo","isElement","__logWarn","prp","getCategories","external","colls","scripts","customBadgeLabel","autoscrollLimit","extHl","notTextable","Canvas","frames","rulers","zoom","Frames","onZoomChange","updateDevice","evPageSelect","_pageUpdated","mainPage","getMain","getMainFrame","page","device","getDeviceModel","getCurrentFrameModel","noUndo","Droppable","rootEl","getComponent","els","toggleEffects","enable","handleDragEnter","handleDragOver","handleDrop","handleDragLeave","defaultView","frameElement","sortOpts","onEnd","customTarget","__customTglEff","endDrop","updateCounter","dt","inAbsoluteMode","dragger","guidesInfo","center","cancelled","getStyle","addStyle","cnt","preserveSelected","getContentByData","allowfullscreen","tools","frameView","cvModel","getCanvasModel","updateHead","renderStyles","setViewEl","headEl","getHead","attrStr","items","stl","appendVNodes","getModel","getWindow","getJsContainer","jsContainer","createEl","getToolsEl","frameWrapView","elTools","getGlobalToolsEl","getHighlighter","_getTool","getBadgeEl","getOffsetViewerEl","getRect","getOffsetRect","scrollBottom","scrollRight","toolsEl","wrp","_toggleEffects","startAutoscroll","lastMaxHeight","_toggleAutoscrollFx","requestAnimationFrame","autoscroll","dragging","lastClientY","win","actualTop","limitTop","limitBottom","nextTop","isUndefined","opacity","showGlobalTools","updateClientY","getPointerEvent","getZoomDecimal","stopAutoscroll","mt","renderScripts","evLoad","evOpts","appendScript","scriptEl","renderBody","normalize","stls","prevStyles","conf","_isEditor","baseCss","canvasCss","protectedCss","component","CssRulesView","getStyles","createCustomEvent","motionsEv","_emitUpdate","_emitUpdated","canvasView","cv","FrameView","classAnim","updateOffset","updateSize","frameLoaded","updatePos","setupDragger","dragX","dragY","toggleFramesEvents","Dragger","getZoomMultiplier","setPosition","posOpts","__clear","removeEl","md","updateDim","__handleSize","noChanges","isNull","onScroll","onscroll","currW","currH","newW","newH","isNumber","onRender","twrp","toolsWrapper","elTop","elRight","elBottom","elLeft","frameWrapperView","DomainViews","itemView","FrameWrapView","onRemoveBefore","timerZoom","wheel","_initFrames","clearOff","checkSelected","updateFrames","_onFramesUpdate","toggleListeners","_renderFrames","FramesView","currFrame","views","_getFrame","_parentEvent","onCanvasMove","getKeyChar","isInputFocused","onWheel","getZoom","defOpts","mpl","framesArea","transform","isElInViewport","elem","getElement","getElRect","frameRect","getFrameOffset","rTop","rLeft","docBody","noScroll","frmOff","cvsOff","winEl","frEl","getCanvasOffset","getElementPos","eo","frmTop","avoidFrameOffset","frmLeft","getElementOffsets","isTextNode","parseFloat","getPosition","bEl","fo","co","updateScript","getId","scriptContainer","scriptFn","getScriptString","scriptFnStr","scriptProps","__getScriptProps","scr","getFrameView","ready","frms","listenToLoad","mainFrame","setCurrentFrame","$frames","toolsWrp","hlEl","badgeEl","placerEl","ghostEl","toolbarEl","resizerEl","offsetEl","fixedOffsetEl","toolsGlobEl","getUiClass","CanvasView","getCanvasView","getFrame","getFramesEl","getDocument","_getCompFrame","compView","_getLocalEl","globalEl","getGhostEl","getToolbarEl","getResizerEl","getFixedOffsetViewerEl","getOffset","frameOff","canvasOff","setCustomBadgeLabel","topScroll","leftScroll","getTargetToElementDim","canvasPos","elPos","toRight","targetHeight","targetWidth","eventToTrigger","topPos","elementTop","elementLeft","elementWidth","elementHeight","canvasTop","canvasLeft","canvasWidth","canvasHeight","canvasRectOffset","getFrameElFromDoc","rectOff","getTargetToElementFixed","elToMove","cvOff","toolbarH","toolbarW","frCvOff","frameOffset","fullHeight","elIsShort","canvasOffsetTop","canvasOffsetLeft","getMouseRelativePos","addTop","addLeft","subWinOffset","parentWindow","yOffset","xOffset","getMouseRelativeCanvas","toIgnore","getViewEl","fr","getCurrentFrame","setZoom","setCoords","getCoords","addFrame","keyAutoW","keyAutoH","Frame","changesCount","_undo","_undoexc","domc","allRules","idMap","modOpts","isComponent","components","Wrapper","idMapKeys","selectors","sSel","idSel","temporary","noCount","avoidStore","setHead","getHeadByAttr","addHeadItem","removeHeadByAttr","sm","smc","fromUndo","storeHtml","getHtml","storeCss","getCss","onReset","loadedItems","itemsToLoad","listenToLoadItems","itemLoaded","inlineCss","HTMLGenerator","htmlOpts","cleanId","rules","idRules","rule","isId","toHTML","build","beforeEach","mapModel","comps","scrStr","scrProps","mapJs","mapType","hasWin","require","codeName","onChange","ed","setContent","autoFormatRange","noRefresh","EditorView","generators","defGenerators","viewers","defViewers","defaultViewer","gHtml","gCss","gJson","js","gJs","eCM","loadDefaultGenerators","loadDefaultViewers","addGenerator","generator","getGenerator","getGenerators","addViewer","viewer","getViewer","getViewers","createViewer","txtarea","updateViewer","getCode","genId","maxValue","MAX_VALUE","getMediaLength","mediaQuery","compCls","buildFromModel","avoidInline","styleToString","getFullName","cssc","codeJson","clearStyles","atRules","dump","onlyMatched","matchedRules","atRule","getAtRule","mRules","buildFromRule","sortMediaObject","rulesStr","ruleStr","selectorStrNoAdd","selectorsToString","skipAdd","selectorsAdd","singleAtRule","keepUnusedStyles","getDeclaration","__cleanSelector","getQueryLength","itemsArr","isMobFirst","mquery","sortRules","getKey","q","strict","commandsDef","defaultCommands","CommandAbstract","sender","selAll","getSelectedAll","nativeDrag","defComOptions","logWarning","hideTlb","altMode","eventDrag","emitUpdate","cmdMove","Commands","onEndMoveFromModel","initSorterFromModels","oldCmd","default","cmdName","loadDefaultCommands","noStop","command","cmdObj","stopCommand","getActive","callRun","abort","callStop","DomComponents","CssComposer","canvasModel","toggleMove","disableDragger","enableDragger","toggleDragger","methodCls","getCanvas","classList","methodEv","methodsEv","editorModel","hoverClass","badgeClass","plhClass","freezClass","onFrameScroll","getCanvasBody","getCanvasTools","Boolean","evName","guidesStatic","guidesTarget","setupGuides","isTran","guidesContainer","getGuidesContainer","getGuidesTarget","getGuidesStatic","drg","toggleDrag","getEventOpts","guides","guide","guidesEl","elInfoX","elInfoY","guideContent","elGuideInfoX","elGuideInfoY","elGuideInfoContentX","elGuideInfoContentY","updateGuides","debug","renderGuide","getElementGuides","lastEl","getGuidePosUpdate","originRect","un","guideSize","numEl","getTranslate","itemStr","setTranslate","en","styleUp","adds","_getDragData","relPos","parentRel","pStyle","offsetP","renderGuideInfo","hideGuidesInfo","rectOrigin","isY","origEdge1","origEdge1Raw","origEdge2","origEdge2Raw","elGuideInfo","elGuideInfoCnt","guideInfoStyle","stat","statEdge2","isEdge1","statEdge1","statEdge1Raw","statEdge2Raw","posFirst","posSecond","pos2","sizeRaw","matched","snd","incr","getChildAt","wrappers","Pages","getAllWrappers","flatten","findType","SelectComponent","mouseover","startDelete","mouseout","stopDelete","onDelete","$this","attachBadge","badge","removeBadge","clean","updateBadgeLabel","getName","modal","CodeManager","$editors","oHtmlEd","buildEditor","oCsslEd","htmlEditor","cssEditor","textViewCode","codeMirror","isEnabled","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","warn","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","fsChanged","targetEl","SelectPosition","noSelClass","getHighlighterEl","wp","$wrapper","initSorter","toggleClipboard","cacheEl","startSelectPosition","stopSelectComponent","getContentWindow","rollback","initSorterFromModel","lastModel","toMove","onMoveClb","$badge","getBadge","$hl","onceClose","accept","modalTitle","uploadEl","firstRender","pn","Panels","getPanel","addPanel","lm","LayerManager","layers","panels","$cn","trgEvCnt","$cn2","dvm","DeviceManager","showDevices","devicePanel","dvEl","slm","SelectorManager","slmConfig","StyleManager","smConfig","$header","pnCnt","panel","toggleSm","show","Config","tm","TraitManager","confTm","toggleTm","clp","addOpts","copyable","cop","cmdVis","getPanels","preventDrag","tglEffects","mthEv","tlb","elP","querySelectorAll","shouldRunSwVisibility","editorEl","onclick","canvasS","posFetcher","mousePosFetcher","canvasResizer","forceNew","Utils","Resizer","calibrated","ToolbarButtonView","ToolbarButton","showOffsets","adjScroll","startSelectComponent","toggleSelectComponent","listenToEl","onFrameUpdated","onContainerChange","onHovered","updateGlobalPos","_upToolbar","updateAttached","onHover","onOut","trg","isDoc","currentDoc","setHovered","useValid","updateLocalPos","updateToolsLocal","elHovered","toggleToolsEl","currentFrame","getView","isVisible","elSelected","updateToolsGlobal","initResize","getElSelected","getElHovered","showElementOffset","hideElementOffset","showFixedElementOffset","hideFixedElementOffset","hideHighlighter","isEditing","isChildOf","updateBadge","posOnly","icon","getIcon","clsBadge","customeLabel","badgeLabel","bStyle","targetToElem","leftOff","showHighlighter","modelToStyle","resizeClass","isTaggableNode","resizable","toggleBodyClass","docs","resizer","keyHeight","keyWidth","currentUnit","keepAutoHeight","keepAutoWidth","getModelToStyle","computedStyle","modelStyle","currentWidth","autoWidth","currentHeight","autoHeight","startDim","unitHeight","getUnitFromValue","unitWidth","selectedHandler","onlyHeight","onlyWidth","bodyw","updateEvent","eventToListen","noEmit","updateToolbar","toolbarStyle","toolbar","showToolbar","Toolbar","toolbarView","ToolbarView","updateToolbarPos","getCanvasPosition","updateTools","isCompSelected","isHoverEn","isNewEl","lastHovered","badgeOpts","topOff","_trgToolUp","lastSelected","hideBadge","cleanPrevious","isPointed","scale","getOffsetDim","stopSelectPosition","posTargetCollection","posIndex","posMethod","cDim","posIsLastEl","posTargetEl","outsideElem","posTargetModel","nearFloat","isLast","getOffsetMethod","showOffsetsSelected","stateVar","offsetViewer","marginT","marginB","marginL","marginR","padT","padB","padL","padR","stateLow","marginName","paddingName","marginV","paddingV","paddingEls","fullMargName","fullPadName","marginLeftSt","marginRightSt","marginRight","marginTopSt","marginBottomSt","mtStyle","mbStyle","mlStyle","mrStyle","ptStyle","pbStyle","plStyle","prStyle","posLeft","widthEl","marginSideH","marginSideT","padTop","padBot","padSideH","padSideT","padRight","toggleVis","mth","_upFrame","_onFramesChange","__getConfig","getAllMap","acc","__initConfig","def","__catchAllEvent","collections","entity","__appendTo","_createId","ln","allMap","createId","__listenAdd","__listenRemove","__listenUpdate","__destroy","onBeforeStyle","CSS","CssRule","mediaText","stylable","atRuleType","important","shallow","ensureSelectors","__onChange","isEmptyObj","changesUp","toListen","getSelectors","Selectors","typeStr","addSelector","selOpts","getFullString","stateStr","skipState","allowEmpty","devices","getDevices","deviceDefault","getWidthMedia","stateValue","getStates","sngl","cmpId","getById","ruleProps","wd","selAdd","a1S","a2S","Styleable","onAdd","parseCss","rulesView","storeStyles","elStyle","CssRules","postLoad","um","getCacheLoad","hasPages","slc","singleSel","parserCss","checkNode","addCollection","sl","newSels","le","selec","modelExists","updateStyle","avoidUpdateStyle","styleUpdate","addRules","setRule","atRuleParams","getRule","getRules","setIdRule","getCurrentMedia","Selector","getIdRule","setClassRule","getClassRule","getComponentRules","getSelectorsString","toCSS","CssRuleView","getBlockId","addToCollection","renderStarted","atRuleEl","styleEl","CssGroupRuleView","appendData","clsName","defaultBlockId","blockId","getMediaWidth","contRules","prs","pr","widthMedia","Device","checkUnit","Devices","DevicesView","startAdd","updateSelect","devEl","devicesEl","getOptions","evSelectBefore","evAddBefore","chnSel","dv","_onSelect","deviceId","newDevice","draggableComponents","storeWrapper","processor","voidElements","ComponentWrapperView","ComponentView","Component","columns","rows","rowsToAdd","columnsToAdd","clm","ComponentTableBody","svgAttrs","void","editable","highlightable","ratioDefault","traits","fallback","initToolbar","hasButtonBool","tb","getAttrToHTML","getSrcResult","btoa","isDefaultSrc","parseUri","uri","query","qrs","pair","hostname","protocol","port","mapUrl","address","frameborder","OComponent","changeProp","parseFromSrc","updateSrc","getMapUrl","addr","qr","z","classEmpty","fetchFile","modelOpt","srcExists","addAttributes","onActive","getSrc","onError","noDrag","renderAttributes","getIframe","ifrm","frameBorder","updateClasses","ComponentText","ComponentLink","textTags","compProt","updateContentText","syncContent","rte","fromDisable","disableEditing","canActivate","rteEnabled","sameInEdit","getEditing","isInnerText","isInstanceOf","lastContent","activeRte","logError","toggleEvents","onDisable","getChildrenContainer","contentOpt","customRte","resetFromString","insertComponent","startContainer","startOffset","textModel","newCmps","is","cmps","onInput","disablePropagation","mixins","setEditing","elDocs","prevDef","ComponentLinkView","yt","vi","ytnc","videoId","provider","ytUrl","ytncUrl","viUrl","poster","muted","autoplay","controls","color","modestbranding","sources","updateTraits","getYoutubeTraits","getVimeoTraits","getSourceTraits","prov","getYoutubeSrc","getYoutubeNoCookieSrc","getVimeoSrc","getProviderTrait","getAutoplayTrait","getLoopTrait","getControlsTrait","isYtProv","isYtncProv","isViProv","isExtProv","OComponentView","updateProvider","updateVideo","renderByProvider","videoEl","renderYoutube","renderYoutubeNoCookie","renderVimeo","renderSource","initVideoEl","layerable","scrCnt","scriptCount","svar","svarNext","svarFn","svarNextFn","__innerHTML","customName","selectable","hoverable","inSvg","createElementNS","updateStatus","updateAttributes","initClasses","initComponents","createComment","ComponentWrapper","removable","__hasUm","attrUp","__getSrc","getAttributes","componentView","componentsById","componentTypes","ComponentTableCell","ComponentTableCellView","ComponentTableRow","ComponentTableRowView","ComponentTable","ComponentTableView","ComponentTableHead","ComponentTableHeadView","ComponentTableBodyView","ComponentTableFoot","ComponentTableFootView","ComponentMap","ComponentMapView","ComponentLabel","ComponentLabelView","ComponentVideo","ComponentVideoView","ComponentImage","ComponentImageView","ComponentScript","ComponentScriptView","ComponentSvgIn","ComponentSvgView","ComponentSvg","ComponentFrame","ComponentFrameView","ComponentComment","ComponentCommentView","ComponentTextNode","ComponentTextNodeView","ComponentTextView","Components","ComponentsView","storeComponents","compTypes","componentHovered","selectAdd","selectRemove","setComponents","isObj","getComponents","toStore","addComponent","extendView","extendFn","extendFnView","compType","extendType","extendViewType","typeToExtend","modelToExt","viewToExt","getExtendedObj","srcToExt","parentFn","df","it","removeType","getShallowWrapper","shallowEm","keyUpdate","keyUpdateInside","canMove","reason","srcModel","allById","Trait","targetEvent","targetUpdated","locale","getTargetValue","valueOpts","partial","setTargetValue","fromTarget","trait","valueToSet","final","toSet","step","Traits","handleReset","tf","objs","optionsTarget","TraitFactory","keySymbols","keySymbol","keySymbolOvrd","parentAttr","newAttr","toPropagate","ccid","initTraits","initScriptProps","scriptUpdated","tagUpdated","attrUpdated","_idUpdated","__emitUpdateTlb","__propToParent","__postAdd","__isSymbolOrInst","__initSymb","recursive","__changesUp","__propSelfToParent","$els","eq","closest","setClass","attrPrev","shallowDiff","setAttributes","noClass","attrArr","compAttr","optsAdd","parseStyle","propOrig","addId","noStyle","TYPE_ID","__getSymbol","__getSymbols","classe","classStr","toUp","symbol","symbols","log","__symbReady","__upSymbProps","__isSymbol","__isSymbolTop","symbTopSelf","__getSymbTop","symbTop","symb","__getAllById","symbs","idx","ovrd","symbEnabled","fromInstance","noPropagate","__isSymbOvrd","__getSymbToUp","__logSymbol","propsChanged","optUp","toUpOpts","isTemp","addedInstances","isMainSymb","addSymb","toAppend","addedInst","addedTop","symbolInv","isSymbNested","__isSymbolNested","toUpFn","symbPrnt","newMods","attrCls","clsArr","normalizeClasses","__upSymbCls","addChild","avoidChildren","__upSymbComps","__loadTraits","getInitValue","prevProps","newProps","prevPropsEv","newPropsEv","__scriptPropsChange","compArr","prevColl","tr","traitsI","getTraits","getTrait","_inner","cloned","newId","rulesToClone","newRule","defName","nameTag","i18nPfx","i18nName","i18nNameTag","i18nDefName","capitalize","customTag","sTag","customAttr","withProps","isBoolean","valueRes","altQuoteAttr","attrString","getInnerHTML","getChangedProps","modelProps","tagVarStart","tagVarEnd","reg","updated","rmOpts","byType","oldId","setId","idS","_getStyleRule","idUpdate","idPrev","getList","_getStyleSelector","ensureInList","nextId","getIncrementId","getNewId","ilen","uid","random","keepIds","dm","checkId","badgable","unstylable","dmode","getComponentIds","getComponentsFromDefs","itms","newComponents","resetChildren","newIds","allByID","parsed","parseString","canRemoveStyle","rulesRemoved","__postRemove","parseHtml","optsToPass","nodes","isMult","processDef","__firstAdd","mdl","modelPr","$$typeof","parserHtml","splitPropsFromAttr","__onAddEnd","getClasses","updateHighlight","updateContent","handleChange","avoidRender","_clbObj","__isDraggable","childrenView","importClasses","renderChildren","chgArr","selectedCls","selectedParentCls","freezedCls","hoveredCls","selCls","noExtHl","actualCls","avoidHover","isTextable","hl","onAttrUpdate","removeAttr","textable","defaultAttr","contenteditable","hasComps","getChildrenSelector","getTemplate","gtop","gleft","assignRect","isInViewport","elDoc","_setData","replaceWith","triggerAdd","sameFrameView","viewObject","parentEl","ParserHtml","extendStyle","propNew","noEvent","removeStyle","imp","propPrv","newStyle","baseType","getBaseType","typeFound","recognizeType","ModelInst","ViewInst","extendViewApi","holderClass","inputClass","handleModelChange","elementUpdated","getInputEl","__onInputChange","fromInput","inputEl","plh","defaultOpts","beforeShow","noop","flat","showInput","showButtons","clickoutFiresChange","showInitial","showPalette","showPaletteOnly","hideAfterPaletteSelect","togglePaletteOnly","showSelectionPalette","localStorageKey","maxSelectionSize","cancelText","chooseText","togglePaletteMoreText","togglePaletteLessText","clearText","noColorSelectedText","preferredFormat","containerClassName","replacerClassName","showAlpha","palette","selectionPalette","spectrums","IE","rgbaSupport","backgroundColor","replaceInput","markup","gradientFix","dataID","spectrum","extra","spect","removeData","loadOpts","inputTypeColorSupport","_cachedResult","colorInput","localization","palettes","processNativeColorInputs","colorInputs","trimLeft","trimRight","tinyCounter","math","mathRound","mathMin","mathMax","mathRandom","tinycolor","rgb","format","named","matchers","rgba","hsl","hsla","hsv","hsva","hex8","convertHexToDecimal","parseIntFromHex","hex6","hex3","stringInputToObject","bound01","convertToPercentage","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","isDark","getBrightness","isLight","getOriginalInput","getFormat","getAlpha","toRgb","setAlpha","toHsv","rgbToHsv","toHsvString","toHsl","rgbToHsl","toHslString","toHex","allow3Char","rgbToHex","toHexString","toHex8","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","lighten","brighten","darken","desaturate","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","color1","color2","mix","w1","rgb1","rgb2","w2","readability","c1","c2","brightnessA","brightnessB","colorDiff","brightness","isReadable","mostReadable","baseColor","colorList","bestColor","bestScore","bestIsReadable","readable","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flipped","flip","paletteTemplate","tiny","swatchStyle","timeout","callbackContext","instanceOptions","resize","reflow","throttler","isDragging","isDefault","dragWidth","dragHeight","dragHelperHeight","slideHeight","alphaWidth","alphaSlideHelperWidth","slideHelperHeight","currentHue","currentSaturation","currentValue","currentAlpha","paletteArray","paletteLookup","draggingClass","shiftMovementDirection","boundElement","pickerContainer","dragHelper","slider","slideHelper","alphaSliderInner","alphaSlider","alphaSlideHelper","textInput","paletteContainer","initialColorContainer","cancelButton","clearButton","chooseButton","toggleButton","isInput","isInputTypeColor","shouldReplace","replacer","offsetElement","previewElement","initialColor","colorOnShow","currentPreferredFormat","applyOptions","toggleClass","updateSelectionPaletteFromStorage","localStorage","oldPalette","addColorToSelectionPalette","inArray","drawPalette","currentColor","unique","getUniqueSelectionPalette","drawInitial","setFromTextInput","updateOriginalInput","isDefaultPrevented","hideAll","$doc","onkeydown","clickout","updateUI","revert","ignoreFormatChange","newHsv","updateHelperLocations","flatColor","realColor","displayColor","realHex","realRgb","alpha","realAlpha","gradient","alphaX","slideY","fireCallback","picker","extraY","dpWidth","outerWidth","dpHeight","outerHeight","inputHeight","docElem","cW","cH","scL","scT","paletteElementClick","keydown","hasClass","oldDragX","oldDragY","furtherFromX","paletteEvent","optionName","optionValue","coord","onmove","onstart","onstop","maxHeight","maxWidth","hasTouch","duringDragEvents","t0","rightclick","hex","pad2","clamp01","hue","results","slices","modification","isOnePointZero","processPercent","isPercentage","ColorPicker","getColor","cl","Input","colorEl","getColorEl","tc","valueClr","noneColor","previousColor","cpStyle","elToAppend","colorPickerConfig","setValueFromInput","noDefault","contClass","validateInputValue","deepCheck","validObj","handleUnitChange","getUnitEl","handleKeyDown","upArrowClick","downArrowClick","unitEl","units","temp","normalizeValue","downIncrement","moveIncrement","upIncrement","prValue","defValue","stepDecimals","toFixed","limitlessMax","limitlessMin","fixed","regFixed","valCopy","uN","itemsView","itemType","itemViewNotFound","ns","reuseView","typeField","clearItems","traitInputAttr","localeFallback","detectLocale","messages","assetManager","addButton","inputPlh","uploadTitle","blockManager","labels","domComponents","comment","video","link","tfoot","tbody","thead","table","row","cell","deviceManager","desktop","tablet","mobileLandscape","mobilePortrait","titles","preview","fullscreen","selectorManager","emptyState","hover","styleManager","layer","fileButton","sectors","general","layout","typography","decorations","flex","dimension","traitManager","false","_blank","messagesAdd","deepAssign","targValue","srcValue","addMessages","_localLang","setLocale","evObj","valuePrev","getLocale","getMessages","lang","_debug","setMessages","msg","localeFlb","lFlb","_getMsg","_addParams","nav","language","userLanguage","msgSet","_mods","_scope","_MODIFIERS","control","_MAP","backspace","tab","return","esc","down","del","delete","home","pageup","pagedown","_downKeys","compareArray","modifierMap","updateModifierKey","clearModifier","assignKey","resetModifiers","scope","mods","getKeys","getMods","shortcut","getScope","mi","addEvent","setScope","deleteScope","isPressed","getPressedKeyCodes","multipleKeys","modifiersMatch","dispatch","keymaster","configDef","keymaps","defKeys","pk","removeAll","backdrop","ModalView","updateOpen","updateTitle","$collector","$content","$title","getCollector","getTitle","currAttr","updateAttr","triggerEvent","ModalM","enb","_evData","titl","createText","setTitle","onceOpen","getContentEl","hidable","hideTextnode","showWrapper","showHover","scrollCanvas","scrollLayers","highlightHover","onInit","ItemsView","inputProp","styleOpts","isStyleHidden","clsNoEdit","countChildren","clsNoChild","clsTitle","clsTitleC","clsCaret","clsInput","inputNameCls","gut","clsBase","clsCount","clsMove","clsChildren","parentView","checkChildren","updateOpening","updateLayerable","updateName","clsEdit","viewLayer","__render","getInputName","innerText","getVisibilityEl","eyeEl","hClass","toggleVisibility","prevDspKey","prevDisplay","handleEdit","handleEditKey","isEscKey","isEnterKey","handleEditEnd","setName","propName","inputName","opened","chvDown","getCaret","toggleOpening","handleSelect","fromLayers","handleHover","handleHoverOut","freeze","unfreeze","isCountable","caret","setRoot","_rendered","__clearItems","ItemView","componentChanged","getRoot","sortContainer","ignoreViewChildren","created","getSourceModel","forceChange","avoidSelectOnEnd","Page","defFrame","evPageSelectBefore","evPageUpdate","evPageAdd","evPageAddBefore","evPageRemove","evPageRemoveBefore","typeMain","selectBefore","addBefore","cnf","pages","_onPageChange","mainComp","getMainComponent","pg","getAllFrames","pagesMap","swv","expt","osm","otm","ola","obl","ful","prv","togglable","delayBtnsShow","btn","Buttons","Panel","listen","activeCls","disableCls","btnsVisCls","updateActive","checkActive","updateBtnsVis","updateClassName","updateDisable","chnOpt","fromListen","$buttons","fromCollection","commandName","deactivateAll","clicked","toggleActive","parentM","ButtonView","appendContent","toggleVisible","cr","bc","resz","resLen","tl","bl","br","silentFrames","avoidContainerUpdate","forContainer","styleWidth","styleHeight","ButtonsView","PanelView","PanelsViewObj","getPanelsEl","removePanel","panelId","removeButton","getButton","PanelsView","disableButtons","runDefaultCommand","stopDefaultCommand","Button","deactivateAllExceptOne","except","disableAllButtons","disableAllButtonsExceptOne","optionsHtml","htmlType","allowScripts","allowUnsafeAttr","atRuleKeys","singleAtRules","singleAtRulesNames","parseSelector","propValue","getPropertyValue","getPropertyPriority","parseCondition","conditionText","selectorText","createNode","selLen","lastClass","stateArr","parseNode","cssRules","keyText","isSingleAtRule","subRules","lens","subRule","selsParsed","selsAdd","lastRule","len3","selsAddStr","sheet","BrowserCssParser","classSets","classSet","pHtml","pCss","Parser","defaultType","DOMParser","mimeType","strF","parseFromString","hEls","modelAttrStart","modelAttr","valueLen","valStr","lastChar","decls","decl","parseClass","attrsLen","nodePrev","nodeChild","ct","namespaceURI","keepEmptyTextNodes","outerHTML","allTxt","foundTextNode","ci","cType","cf","BrowserParserHtml","__clearUnsafeAttr","styleStr","resHtml","returnArray","btnState","isValidTag","parentAnchor","parentFocus","customElAttr","defActions","bold","italic","underline","strikethrough","insertHTML","RichTextEditor","settings","setEl","updateActiveActions","__onKeydown","__onPaste","acts","actionbar","inactive","actionbarCont","actionbarContainer","addAction","styleWithCSS","getActions","queryCommandSupported","queryCommandState","enabled","__toggleEffects","actionbarEl","syncActions","caretRangeFromPoint","poiner","rangeParent","rangeOffset","textHtml","deleteContents","nd","insertNode","toSel","removeAttributes","adjustToolbar","eventsUp","hideToolbar","initRte","globalRte","updatePosition","rteInst","escapeName","selectedName","iconAdd","iconSync","iconTagOn","iconTagOff","iconTagRemove","componentFirst","State","startEditTag","endEditTag","changeStatus","removeTag","removeSelected","$chk","labelInfo","labelHead","stateInputId","stateInputC","toList","toListCls","__handleStateChange","checkSync","renderClasses","tagRemoved","renderStates","syncStyle","getTarget","cssC","getCommonSelectors","noDisabled","ruleComponents","getTargets","ruleComponent","updateStateVis","addToClasses","startNewTag","$addBtn","$input","endNewTag","onInputKeyUp","addNewTag","checkStates","getState","statesEl","targets","trgs","validSelectors","__getCommonSelectors","_commonSelectors","__common","hasStyle","$btnSyncEl","getStatesC","updateSelector","elSel","__getName","getStyleable","idRes","stateChanged","addSelected","ClassTagView","$states","$statesC","labelStates","getLabel","tmpOpts","renderRes","$classes","isClass","evState","cFirst","__update","selTags","selectorTags","isRule","cOpts","cname","getSelector","setState","setStates","__getCommon","getSelectedTargets","setComponentFirst","getComponentFirst","ClassTagsView","getValid","private","protected","namePreEsc","nameEsc","objLen","TYPE_CLASS","combine","curr","combination","autosave","autoload","stepsBeforeSave","checkLocal","urlStore","urlLoad","jqXHR","onComplete","contentTypeJson","fetchOptions","hasLocal","setItem","getItem","removeItem","clbErr","onResponse","request","typeJson","typeHead","bodyObj","bodyKey","eventStart","eventAfter","eventEnd","eventError","storages","defaultStorages","_disable","remote","RemoteStorage","LocalStorage","currentStorage","loadDefaultProviders","setCurrent","isAutosave","setAutosave","getStepsBeforeSave","setStepsBeforeSave","storage","getStorages","getCurrent","onAfter","keysF","__clearKeys","itemKey","itemKeyR","getCurrentStorage","canAutoload","hideNotStylable","highlightChanged","highlightComputed","showComputed","clearProperties","avoidComputed","Property","__upTargets","callInit","parentProp","isClear","__getFullValue","__getParentProp","kProps","__getClearProps","toProps","applyStyle","__up","__trgEv","propertyUpdate","__upTargetsStyle","addStyleTargets","__p","noTarget","hasValue","getDefaultValue","noParent","parentValue","getParentTarget","camelCase","__parseValue","_up","getParent","__canClearProp","parseValue","valueStr","functionName","numeric","num","withDefault","getFullValue","fnParameter","__parentTarget","toRequire","requires","requiresParent","stylableReq","sector","getProperties","callParentInit","skipInit","fixedValues","isNumberType","PropertyComposite","detached","separator","fromStyle","toStyle","Properties","__upProperties","byName","getSplitSeparator","__getJoin","getValues","isDetached","__clearIn","__upTargetsStyleProps","getStyleFromProps","__setProperties","__getSplitValue","nameProps","allNameProps","__splitValue","props4Nums","__styleHasProps","upValue","valuesStr","Layer","getLayerLabel","getSelectedLayer","selectLayer","removeLayer","moveLayer","getStylePreview","Layers","VALUES_REG","PARTS_REG","PropertyStack","layerSeparator","layerJoin","prepend","layerLabel","selectedLayer","layersColl","__upSelected","__upLayers","__getLayers","getIndex","__select","getLayer","currIndex","getLayers","joinLayers","__getJoinLayers","number","newVal","getStyleFromLayer","upValues","PropertyBase","getStyleFromLayers","layerSelect","__layers","__setLayers","newLayers","layersNew","__parseLayer","parseFn","getLayerSeparator","separatorLayers","__splitStyleName","inLayer","clearProp","icons","iconClose","__destroyFn","onValueChange","_getClbOpts","computedCls","labelEl","clearStyleEl","getClearEl","clearStyle","clearEl","emit","__setValueInput","createdEl","__change","__updateStyle","clearCached","clsType","templateLabel","templateInput","isFull","PropertiesView","appendAtIndex","PropertyCompositeView","PropertyView","propsView","LayerView","iconMove","propertyView","pModel","updateLabel","propsWrapEl","previewEl","getLabelEl","hasPreview","prvEl","getPreviewEl","wrapEl","getPropertiesWrapper","isSelected","LayersView","PropertyStackView","iconPlus","plus","addLayer","layersView","PropertyFileView","valueDef","prvBoxEl","backgroundImage","PropertyNumberView","inputInst","PropertyColorView","__handleChange","InputColor","PropertySelect","getOptionId","isDef","optId","propId","__onOptionChange","PropertySelectView","updateOptions","optionsRes","getOptionLabel","styleAttr","inputH","firstOpt","firstId","PropertyRadio","PropertyRadioView","itemCls","elId","titleAttr","checked","inputHld","inputIn","PropertyNumber","InputNumber","PropertySlider","PropertySliderView","getSliderEl","propertyAdd","propertyRemove","Sector","buildProps","extendBuilded","builded","buildProperties","extendProperties","checkExtend","propsModel","withValue","withParentValue","moProps","ex","pLen","mProps","isolated","mProp","mPProps","buildP","builtIn","Sectors","sect","PropertyFactory","typeNumber","typeColor","typeRadio","typeSelect","typeFile","typeSlider","typeComposite","typeStack","unitsSize","unitsSizeNoPerc","unitsTime","unitsAngle","ss","optsFlex","optsFlexAlign","optsBgSize","optsBgAttach","optsBgRepeat","optsWrap","optsOverflow","optsDir","opstDisplay","optsTransitFn","optsCursor","optsFloat","optsPos","optsTextAlign","optsJustCont","optsAlignCont","optsAlignSelf","optsTransitProp","optsBorderStyle","optsBgPos","optsWeight","optsShadowType","optsFonts","font","fixedFontSizes","fixedLetSpace","requireFlex","__sub","spread","att","fromRes","SectorView","iconCaret","clsPfx","getPropertiesEl","setOpen","renderProperties","SectorsView","evSector","evSectorAdd","evSectorRemove","evSectorUpdate","evProp","evPropAdd","evPropRemove","evPropUp","evLayerSelect","evTarget","propDef","SectView","sectorAdd","sectorRemove","sectorUpdate","upAll","__upSel","__clearStateTarget","upProps","__upProps","trgCustom","__ctn","stateTarget","__getStateTarget","addSector","getSector","_logNoSector","getSectors","removeSector","addProperty","sectorId","getProperty","removeProperty","lastTarget","lastTargetParents","getParentRules","getSelectedParents","targetState","getBuiltIn","getBuiltInAll","addBuiltIn","smConf","devicePreviewMode","hasClasses","useClasses","deviceW","avoidInlineStyle","cssGen","optsSel","cmpRules","otherRules","createType","parentStyles","__upProp","__checkVisibility","sectorVisible","hasVal","isStack","isComposite","canUpdate","__getLayersFromStyle","__getPropsFromStyle","newValue","parentTarget","parentItem","__setParentTarget","newParentStyles","eventCapture","appendInput","clsField","removeView","rerender","getClbOpts","elInput","getInputElem","onUpdate","onEvent","getValueForTarget","setInputValue","postUpdate","renderLabel","tpl","createLabel","getModelValue","i18nAttr","getElInput","renderField","inputs","createInput","hasLabel","noLabel","tmpl","TraitView","updatedCollection","resultName","valResult","getCheckedValue","valueTrue","valueFalse","toInit","targetValue","inputNumber","$unit","labelButton","typesDef","TraitNumberView","TraitSelectView","checkbox","TraitCheckboxView","TraitColorView","TraitButtonView","TraitsView","__onUp","getTraitsViewer","baseView","beforeCache","trackSelection","hasSkip","getChanged","hasUndo","undoExc","chn","hasRedo","getInstance","getStack","getStackGroup","getGroupedStack","createItem","goToGroup","getPointer","goTo","times","snapOffset","getDocumentEl","getContainerEl","getWindowEl","keyHandle","handleScroll","lastScroll","actualScroll","scrollDiff","lastScrollDiff","startPointer","getPointerPos","startPosition","getStartPosition","globScrollDiff","currentPos","glDiff","lockedAxis","detectAxisLock","moveDelta","deltaPre","currentPointer","snapGuides","newDelta","trgX","trgY","axs","trgPoint","statPoint","deltaPoint","trgGuide","isPointIn","trgValue","setGuideLock","lock","ofst","trgName","xPos","yPos","getPos","getPointerPosition","pEv","relX","relY","absX","absY","_Array$prototype","idRe","classRe","htmlRe","tagRe","getElementsByTagName","Cash","__cash","eles","getElementById","parseHTML","cash","ele","camelCaseRe","camelCaseWhitespaceRe","letter","removeProp","guid","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","isNumeric","isFinite","getCompareFunction","splitValuesRe","getSplitValues","computeStyle","isVariable","computeStyleInt","_value","isForce","cssVariableRe","isCSSVariable","prefixedProps","docEl","vendorsPrefixes","getPrefixedProp","propCC","propUC","prefixedProp","numericProps","animationIterationCount","columnCount","flexGrow","flexShrink","fontWeight","lineHeight","orphans","widows","getSuffixedValue","setProperty","dataNamespace","dataAttributeRe","getDataCache","dataset","getExtraSpace","xAxis","hasNamespaces","ns1","ns2","removeEventListeners","_ref","hasData","_this","boxSizing","includeMargins","getEventsCache","parseEventName","removeEvent","namespaces","eventCache","_ref2","eventFullName","_this2","_parseEventName","_one","_this3","_parseEventName2","finalCallback","namespace","thisArg","one","readyState","evt","_parseEventName3","createEvent","initEvent","selectOneRe","selectMultipleRe","selectedIndex","getValueSelectSingle","getValueSelectMultiple","queryEncodeSpaceRe","skippableRe","checkableRe","serialize","elements","queryEncode","isMultiple","eleValue","containers","fragmentRe","singleTagRe","td","initContainers","$1","insertContent","isStr","insertAdjacentHTML","insertElement","_this4","insertAfter","_this5","_this6","_this7","_this8","_this9","prependTo","_this10","$eles","replaceAll","docEle","clientTop","contents","nextElementSibling","not","parents","previousElementSibling","siblings","KEY_ATTR","oldEl","newEl","total","oEvent","keyCodeVal","defineProperty","vNodes","vNodesArr","vnode","TypeError","setTimeoutFunc","_state","_handled","_deferreds","doResolve","deferred","_immediateFn","onFulfilled","onRejected","finale","_unhandledRejectionFn","Handler","prom","promiseFinally","allSettled","race","setImmediate","rej","req","XMLHttpRequest","withCredentials","statusText","responseText","onProgress","onprogress","send","literals","substs","raw","lit","subst","elT","elL","borderOffset","freezeClass","relative","ignoreModels","offTop","offLeft","$document","dropContent","selectOnEnd","activeTextModel","getScale","getDocuments","dropModel","updateTextViewCursorPosition","targetDoc","setContentEditable","toggleSortCursor","clonedEl","computed","moveDragHelper","posY","posX","dragHelperStyle","useBody","createPlaceholder","ins","prevTarget","sourceEl","clearSelection","getTargetModel","isTextableActive","tempModel","selectTargetModel","targetModel","dsp","eO","rY","rX","mousePos","eventMove","sourceModel","dimsFromTarget","lastDims","findPosition","disableTextable","movePlaceholder","prevTargetDim","$plh","isInFlow","styleInFlow","$parent","overflow","propFloat","trgModel","dragInfo","dropInfo","targetP","validResult","getDim","cacheDimsP","getChildrenDim","cacheDims","nearBorders","targetParent","getTargetFromEl","targetPrev","nearElBorders","getCurrentPos","offsets","getCurrentView","elIndex","indexEl","leftLimit","xLimit","yLimit","xCenter","yCenter","dimDown","trgDim","elDim","marg","pT","pL","dst","modelToDrop","srcEl","warns","targetCollection","srcIndex","sameCollection","errors","onUpdateContainer","minDim","maxDim","getBoundingRect","setup","hdl","createHandler","updateContainer","forceShow","handleMouseDown","getParentEl","attrName","parentRect","handlerAttr","clickedHandler","rectDim","startPos","parentDim","toggleFrames","mouseFetch","calc","updateRect","getSelectedHandler","isHandler","deltaX","deltaY","parentW","parentH","startW","startH","normalizeFloat","ratioActive","ratio","getGlobal","elProt","Element","defCls","customUI","appendStyles","prepand","objOrig","objNew","keysNew","origValue","upFirst","nativeDnD","isCommentNode","__cashData","rectText","selectNode","getKeyCode","__gjsv","chars","runtime","Op","hasOwn","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","enumerable","configurable","writable","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","GenStateSuspendedStart","arg","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","setPrototypeOf","__proto__","awrap","async","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","webpackContext","webpackContextResolve","__webpack_require__","_arrayLikeToArray","arr2","asyncGeneratorStep","_next","_throw","_asyncToGenerator","_classCallCheck","Constructor","_defineProperties","descriptor","_createClass","_defineProperty","_getPrototypeOf","_setPrototypeOf","_inherits","subClass","superClass","_objectWithoutProperties","excluded","sourceKeys","getOwnPropertySymbols","sourceSymbolKeys","_possibleConstructorReturn","ReferenceError","_slicedToArray","_i","_s","_arr","_n","_d","unsupportedIterableToArray","_taggedTemplateLiteral","strings","defineProperties","_toConsumableArray","arrayLikeToArray","_typeof","_unsupportedIterableToArray","minLen","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","isView","_isNaN","_isFinite","hasEnumBug","nonEnumerableProps","MAX_ARRAY_INDEX","pow","restArguments","tagTester","nodelist","Int8Array","hasStringTagBug","isIE11","Map","isDataView","getInt8","isArrayBuffer","buffer","isSymbol","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","proto","isMatch","_keys","_wrapped","toBufferView","bufferSource","Uint8Array","byteOffset","valueOf","tagDataView","aStack","bStack","deepEq","areArrays","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","functions","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","tap","interceptor","toPath","deepGet","defaultValue","identity","optimizeCb","argCount","accumulator","baseIteratee","mapObject","currentKey","propertyOf","accum","getTime","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","evaluate","interpolate","noMatch","escapes","escapeChar","bareIdentifier","oldSettings","argument","variable","idCounter","_chain","executeBound","sourceFunc","boundFunc","callingContext","boundArgs","callArgs","memoize","hasher","throttle","later","leading","throttled","_now","trailing","immediate","passed","debounced","_args","negate","compose","memo","findKey","createPredicateIndexFinder","sortedIndex","low","high","createIndexFinder","predicateFind","createReduce","reducer","guard","contextPath","lastComputed","rand","criteria","reStrSymbol","keyInObj","compact","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","chainResult","mixin","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","fromElement","noticeOnUnload","forceClass","defaultCommand","mediaCondition","jsInHtml","multipleSelection","optsHtml","optsCss","avoidDefaults","dragMode","cssIcons","arrowUp","i18n","storageManager","richTextEditor","codeManager","cssComposer","multiFrames","Selectable","Selected","hasComponent","getByComponent","timedInterval","updateItr","deps","Window","ar","Extender","logs","warning","EditorModel","editing","clipboard","previousModel","storables","modules","toLoad","pageManager","toLog","attrsOrig","loadModule","updateChanges","_checkReady","listenLog","eventFrom","eventTo","onbeforeunload","moduleName","Mod","cfgParent","cfg","destroyed","__skip","handleUpdates","lastComponent","allComponents","multiple","mltSel","toggleSelected","selColl","selIndex","removeComponent","getJs","avoidProt","avoidProtected","protCss","storeData","editingCmp","loadData","cacheLoad","defaultRunning","grapesjs","destroyAll","logNs","colorPicker","varName","contEl","shallowCanvasEl","addComponents","getSelectedToStyle","selectToggle","setDevice","getDevice","getProject","loadProject","getDirtyCount","setCustomRte","setCustomParserCss","setDragMode","onReady","plugins","agent","isIE","originalCreateHTMLDocument","DOMImplementation","createHTMLDocument","implementation","polyfills","plugin","defaultConfig","autorender","pluginsOpts","__GJS_VERSION__","headless","Editor","pluginId","plgOptions","wplg","loadOnStart"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"grapes.min.js","mappings":"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","sources":["webpack://grapesjs/webpack/universalModuleDefinition","webpack://grapesjs/./node_modules/@babel/runtime/regenerator/index.js","webpack://grapesjs/./node_modules/backbone-undo/Backbone.Undo.js","webpack://grapesjs/./node_modules/backbone/backbone.js","webpack://grapesjs/./node_modules/codemirror-formatting/formatting.js","webpack://grapesjs/./node_modules/codemirror/lib/codemirror.js","webpack://grapesjs/./node_modules/codemirror/mode/css/css.js","webpack://grapesjs/./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack://grapesjs/./node_modules/codemirror/mode/javascript/javascript.js","webpack://grapesjs/./node_modules/codemirror/mode/xml/xml.js","webpack://grapesjs/./src/abstract/moduleLegacy.js","webpack://grapesjs/./src/asset_manager/config/config.js","webpack://grapesjs/./src/asset_manager/model/Asset.js","webpack://grapesjs/./src/asset_manager/model/AssetImage.js","webpack://grapesjs/./src/asset_manager/view/AssetView.js","webpack://grapesjs/./src/asset_manager/view/AssetImageView.js","webpack://grapesjs/./src/asset_manager/model/Assets.js","webpack://grapesjs/./src/asset_manager/view/AssetsView.js","webpack://grapesjs/./src/asset_manager/view/FileUploader.js","webpack://grapesjs/./src/asset_manager/index.js","webpack://grapesjs/./src/block_manager/config/config.js","webpack://grapesjs/./src/block_manager/model/Block.js","webpack://grapesjs/./src/block_manager/model/Blocks.js","webpack://grapesjs/./src/block_manager/model/Category.js","webpack://grapesjs/./src/block_manager/model/Categories.js","webpack://grapesjs/./src/block_manager/view/BlockView.js","webpack://grapesjs/./src/block_manager/view/CategoryView.js","webpack://grapesjs/./src/block_manager/view/BlocksView.js","webpack://grapesjs/./src/block_manager/index.js","webpack://grapesjs/./src/canvas/config/config.js","webpack://grapesjs/./src/canvas/model/Canvas.ts","webpack://grapesjs/./src/utils/Droppable.js","webpack://grapesjs/./src/canvas/view/FrameView.js","webpack://grapesjs/./src/canvas/view/FrameWrapView.js","webpack://grapesjs/./src/canvas/view/CanvasView.js","webpack://grapesjs/./src/canvas/view/FramesView.js","webpack://grapesjs/./src/canvas/index.js","webpack://grapesjs/./src/code_manager/config/config.js","webpack://grapesjs/./src/code_manager/model/HtmlGenerator.js","webpack://grapesjs/./src/code_manager/model/JsonGenerator.js","webpack://grapesjs/./src/code_manager/model/CodeMirrorEditor.js","webpack://grapesjs/./src/code_manager/model/JsGenerator.js","webpack://grapesjs/./src/code_manager/view/EditorView.js","webpack://grapesjs/./src/code_manager/index.js","webpack://grapesjs/./src/code_manager/model/CssGenerator.js","webpack://grapesjs/./src/commands/config/config.js","webpack://grapesjs/./src/commands/index.js","webpack://grapesjs/./src/commands/view/CanvasClear.js","webpack://grapesjs/./src/commands/view/CanvasMove.js","webpack://grapesjs/./src/commands/view/CommandAbstract.js","webpack://grapesjs/./src/commands/view/ComponentDelete.js","webpack://grapesjs/./src/commands/view/ComponentDrag.js","webpack://grapesjs/./src/commands/view/ComponentEnter.js","webpack://grapesjs/./src/commands/view/ComponentExit.js","webpack://grapesjs/./src/commands/view/ComponentNext.js","webpack://grapesjs/./src/commands/view/ComponentPrev.js","webpack://grapesjs/./src/commands/view/ComponentStyleClear.js","webpack://grapesjs/./src/commands/view/CopyComponent.js","webpack://grapesjs/./src/commands/view/DeleteComponent.js","webpack://grapesjs/./src/commands/view/ExportTemplate.js","webpack://grapesjs/./src/commands/view/Fullscreen.js","webpack://grapesjs/./src/commands/view/MoveComponent.js","webpack://grapesjs/./src/commands/view/OpenAssets.js","webpack://grapesjs/./src/commands/view/OpenBlocks.js","webpack://grapesjs/./src/commands/view/OpenLayers.js","webpack://grapesjs/./src/commands/view/OpenStyleManager.js","webpack://grapesjs/./src/commands/view/OpenTraitManager.js","webpack://grapesjs/./src/commands/view/PasteComponent.js","webpack://grapesjs/./src/commands/view/Preview.js","webpack://grapesjs/./src/commands/view/Resize.js","webpack://grapesjs/./src/dom_components/view/ToolbarButtonView.js","webpack://grapesjs/./src/dom_components/view/ToolbarView.js","webpack://grapesjs/./src/dom_components/model/ToolbarButton.js","webpack://grapesjs/./src/dom_components/model/Toolbar.js","webpack://grapesjs/./src/commands/view/SelectComponent.js","webpack://grapesjs/./src/commands/view/SelectPosition.js","webpack://grapesjs/./src/commands/view/ShowOffset.js","webpack://grapesjs/./src/commands/view/SwitchVisibility.js","webpack://grapesjs/./src/common/module.js","webpack://grapesjs/./src/css_composer/config/config.js","webpack://grapesjs/./src/css_composer/model/CssRule.js","webpack://grapesjs/./src/css_composer/model/CssRules.js","webpack://grapesjs/./src/css_composer/index.js","webpack://grapesjs/./src/css_composer/view/CssRuleView.js","webpack://grapesjs/./src/css_composer/view/CssGroupRuleView.js","webpack://grapesjs/./src/css_composer/view/CssRulesView.js","webpack://grapesjs/./src/device_manager/config/config.js","webpack://grapesjs/./src/device_manager/model/Device.js","webpack://grapesjs/./src/device_manager/model/Devices.js","webpack://grapesjs/./src/device_manager/view/DevicesView.js","webpack://grapesjs/./src/device_manager/index.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/get.js","webpack://grapesjs/./src/trait_manager/model/Trait.js","webpack://grapesjs/./src/trait_manager/model/Traits.js","webpack://grapesjs/./src/trait_manager/model/TraitFactory.js","webpack://grapesjs/./src/dom_components/model/Component.js","webpack://grapesjs/./src/dom_components/model/Components.js","webpack://grapesjs/./src/dom_components/view/ComponentView.js","webpack://grapesjs/./src/dom_components/view/ComponentsView.js","webpack://grapesjs/./src/domain_abstract/model/StyleableModel.js","webpack://grapesjs/./src/domain_abstract/model/TypeableCollection.js","webpack://grapesjs/./src/domain_abstract/ui/Input.js","webpack://grapesjs/./src/domain_abstract/ui/InputColor.js","webpack://grapesjs/./src/utils/ColorPicker.js","webpack://grapesjs/./src/domain_abstract/ui/InputNumber.js","webpack://grapesjs/./src/domain_abstract/view/DomainViews.js","webpack://grapesjs/./src/i18n/locale/en.js","webpack://grapesjs/./src/i18n/config.js","webpack://grapesjs/./src/i18n/index.js","webpack://grapesjs/./src/utils/keymaster.js","webpack://grapesjs/./src/keymaps/index.js","webpack://grapesjs/./src/modal_dialog/config/config.js","webpack://grapesjs/./src/modal_dialog/model/Modal.js","webpack://grapesjs/./src/modal_dialog/view/ModalView.js","webpack://grapesjs/./src/modal_dialog/index.js","webpack://grapesjs/./src/panels/config/config.js","webpack://grapesjs/./src/panels/model/Panel.js","webpack://grapesjs/./src/panels/model/Panels.js","webpack://grapesjs/./src/panels/view/ButtonView.js","webpack://grapesjs/./src/panels/view/ButtonsView.js","webpack://grapesjs/./src/panels/view/PanelView.js","webpack://grapesjs/./src/panels/view/PanelsView.js","webpack://grapesjs/./src/panels/index.js","webpack://grapesjs/./src/panels/model/Button.js","webpack://grapesjs/./src/panels/model/Buttons.js","webpack://grapesjs/./src/parser/config/config.js","webpack://grapesjs/./src/parser/model/BrowserParserCss.js","webpack://grapesjs/./src/parser/model/ParserCss.js","webpack://grapesjs/./src/parser/index.js","webpack://grapesjs/./src/parser/model/BrowserParserHtml.js","webpack://grapesjs/./src/parser/model/ParserHtml.js","webpack://grapesjs/./src/rich_text_editor/model/RichTextEditor.js","webpack://grapesjs/./src/rich_text_editor/config/config.js","webpack://grapesjs/./src/rich_text_editor/index.js","webpack://grapesjs/./src/storage_manager/config/config.js","webpack://grapesjs/./src/storage_manager/model/LocalStorage.js","webpack://grapesjs/./src/storage_manager/model/RemoteStorage.js","webpack://grapesjs/./src/storage_manager/index.js","webpack://grapesjs/./src/style_manager/config/config.js","webpack://grapesjs/./src/style_manager/model/Property.js","webpack://grapesjs/./src/style_manager/model/PropertyComposite.js","webpack://grapesjs/./src/style_manager/model/Layer.js","webpack://grapesjs/./src/style_manager/model/Layers.js","webpack://grapesjs/./src/style_manager/model/PropertyStack.js","webpack://grapesjs/./src/style_manager/view/PropertyView.js","webpack://grapesjs/./src/style_manager/view/PropertiesView.js","webpack://grapesjs/./src/style_manager/view/PropertyCompositeView.js","webpack://grapesjs/./src/style_manager/view/LayerView.js","webpack://grapesjs/./src/style_manager/view/LayersView.js","webpack://grapesjs/./src/style_manager/view/PropertyStackView.js","webpack://grapesjs/./src/style_manager/view/PropertyFileView.js","webpack://grapesjs/./src/style_manager/view/PropertyNumberView.js","webpack://grapesjs/./src/style_manager/view/PropertyColorView.js","webpack://grapesjs/./src/style_manager/model/PropertySelect.js","webpack://grapesjs/./src/style_manager/view/PropertySelectView.js","webpack://grapesjs/./src/style_manager/model/PropertyRadio.js","webpack://grapesjs/./src/style_manager/view/PropertyRadioView.js","webpack://grapesjs/./src/style_manager/model/PropertyNumber.js","webpack://grapesjs/./src/style_manager/model/PropertySlider.js","webpack://grapesjs/./src/style_manager/view/PropertySliderView.js","webpack://grapesjs/./src/style_manager/model/Properties.js","webpack://grapesjs/./src/style_manager/model/Sector.js","webpack://grapesjs/./src/style_manager/model/Sectors.js","webpack://grapesjs/./src/style_manager/model/PropertyFactory.js","webpack://grapesjs/./src/style_manager/view/SectorView.js","webpack://grapesjs/./src/style_manager/view/SectorsView.js","webpack://grapesjs/./src/style_manager/index.js","webpack://grapesjs/./src/trait_manager/config/config.js","webpack://grapesjs/./src/trait_manager/view/TraitView.js","webpack://grapesjs/./src/trait_manager/view/TraitsView.js","webpack://grapesjs/./src/trait_manager/view/TraitSelectView.js","webpack://grapesjs/./src/trait_manager/view/TraitCheckboxView.js","webpack://grapesjs/./src/trait_manager/view/TraitNumberView.js","webpack://grapesjs/./src/trait_manager/view/TraitColorView.js","webpack://grapesjs/./src/trait_manager/view/TraitButtonView.js","webpack://grapesjs/./src/trait_manager/index.js","webpack://grapesjs/./src/undo_manager/index.js","webpack://grapesjs/./src/utils/Dragger.js","webpack://grapesjs/./src/utils/cash-dom.js","webpack://grapesjs/./src/utils/dom.js","webpack://grapesjs/./node_modules/promise-polyfill/src/finally.js","webpack://grapesjs/./node_modules/promise-polyfill/src/allSettled.js","webpack://grapesjs/./node_modules/promise-polyfill/src/index.js","webpack://grapesjs/./src/utils/fetch.js","webpack://grapesjs/./src/utils/Sorter.js","webpack://grapesjs/./src/utils/Resizer.js","webpack://grapesjs/./src/utils/index.js","webpack://grapesjs/./src/abstract/Model.ts","webpack://grapesjs/./src/abstract/Module.ts","webpack://grapesjs/./src/canvas/model/Frame.ts","webpack://grapesjs/./src/canvas/model/Frames.ts","webpack://grapesjs/./src/dom_components/config/config.js","webpack://grapesjs/./src/dom_components/view/ComponentWrapperView.js","webpack://grapesjs/./src/dom_components/model/ComponentTableCell.js","webpack://grapesjs/./src/dom_components/view/ComponentTableCellView.js","webpack://grapesjs/./src/dom_components/model/ComponentTableRow.js","webpack://grapesjs/./src/dom_components/view/ComponentTableRowView.js","webpack://grapesjs/./src/dom_components/model/ComponentTable.js","webpack://grapesjs/./src/dom_components/view/ComponentTableView.js","webpack://grapesjs/./src/dom_components/model/ComponentTableBody.js","webpack://grapesjs/./src/dom_components/model/ComponentTableHead.js","webpack://grapesjs/./src/dom_components/view/ComponentTableHeadView.js","webpack://grapesjs/./src/dom_components/view/ComponentTableBodyView.js","webpack://grapesjs/./src/dom_components/model/ComponentTableFoot.js","webpack://grapesjs/./src/dom_components/view/ComponentTableFootView.js","webpack://grapesjs/./src/dom_components/model/ComponentImage.js","webpack://grapesjs/./src/dom_components/model/ComponentMap.js","webpack://grapesjs/./src/dom_components/view/ComponentImageView.js","webpack://grapesjs/./src/dom_components/view/ComponentMapView.js","webpack://grapesjs/./src/dom_components/model/ComponentText.js","webpack://grapesjs/./src/dom_components/model/ComponentLink.js","webpack://grapesjs/./src/dom_components/view/ComponentTextView.js","webpack://grapesjs/./src/dom_components/view/ComponentLinkView.js","webpack://grapesjs/./src/dom_components/model/ComponentLabel.js","webpack://grapesjs/./src/dom_components/view/ComponentLabelView.js","webpack://grapesjs/./src/dom_components/model/ComponentVideo.js","webpack://grapesjs/./src/dom_components/view/ComponentVideoView.js","webpack://grapesjs/./src/dom_components/model/ComponentScript.js","webpack://grapesjs/./src/dom_components/view/ComponentScriptView.js","webpack://grapesjs/./src/dom_components/model/ComponentSvg.js","webpack://grapesjs/./src/dom_components/model/ComponentSvgIn.js","webpack://grapesjs/./src/dom_components/view/ComponentSvgView.js","webpack://grapesjs/./src/dom_components/model/ComponentTextNode.js","webpack://grapesjs/./src/dom_components/model/ComponentComment.js","webpack://grapesjs/./src/dom_components/view/ComponentTextNodeView.js","webpack://grapesjs/./src/dom_components/view/ComponentCommentView.js","webpack://grapesjs/./src/dom_components/model/ComponentWrapper.js","webpack://grapesjs/./src/dom_components/model/ComponentFrame.js","webpack://grapesjs/./src/dom_components/view/ComponentFrameView.js","webpack://grapesjs/./src/dom_components/index.ts","webpack://grapesjs/./src/navigator/config/config.ts","webpack://grapesjs/./src/abstract/View.ts","webpack://grapesjs/./src/navigator/view/ItemsView.ts","webpack://grapesjs/./src/navigator/view/ItemView.ts","webpack://grapesjs/./src/navigator/index.ts","webpack://grapesjs/./src/pages/model/Page.ts","webpack://grapesjs/./src/pages/model/Pages.ts","webpack://grapesjs/./src/pages/index.ts","webpack://grapesjs/./src/selector_manager/config/config.ts","webpack://grapesjs/./src/selector_manager/model/State.ts","webpack://grapesjs/./src/selector_manager/view/ClassTagView.ts","webpack://grapesjs/./src/selector_manager/view/ClassTagsView.ts","webpack://grapesjs/./src/selector_manager/index.ts","webpack://grapesjs/./src/selector_manager/model/Selector.ts","webpack://grapesjs/./src/selector_manager/model/Selectors.ts","webpack://grapesjs/./src/utils/html.ts","webpack://grapesjs/./src/utils/mixins.ts","webpack://grapesjs/./node_modules/regenerator-runtime/runtime.js","webpack://grapesjs/./src/commands/view/ sync ^\\.\\/.*$","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://grapesjs/./node_modules/underscore/modules/_setup.js","webpack://grapesjs/./node_modules/underscore/modules/restArguments.js","webpack://grapesjs/./node_modules/underscore/modules/isObject.js","webpack://grapesjs/./node_modules/underscore/modules/isNull.js","webpack://grapesjs/./node_modules/underscore/modules/isUndefined.js","webpack://grapesjs/./node_modules/underscore/modules/isBoolean.js","webpack://grapesjs/./node_modules/underscore/modules/isElement.js","webpack://grapesjs/./node_modules/underscore/modules/_tagTester.js","webpack://grapesjs/./node_modules/underscore/modules/isString.js","webpack://grapesjs/./node_modules/underscore/modules/isNumber.js","webpack://grapesjs/./node_modules/underscore/modules/isDate.js","webpack://grapesjs/./node_modules/underscore/modules/isRegExp.js","webpack://grapesjs/./node_modules/underscore/modules/isError.js","webpack://grapesjs/./node_modules/underscore/modules/isSymbol.js","webpack://grapesjs/./node_modules/underscore/modules/isArrayBuffer.js","webpack://grapesjs/./node_modules/underscore/modules/isFunction.js","webpack://grapesjs/./node_modules/underscore/modules/_hasObjectTag.js","webpack://grapesjs/./node_modules/underscore/modules/_stringTagBug.js","webpack://grapesjs/./node_modules/underscore/modules/isDataView.js","webpack://grapesjs/./node_modules/underscore/modules/isArray.js","webpack://grapesjs/./node_modules/underscore/modules/_has.js","webpack://grapesjs/./node_modules/underscore/modules/isArguments.js","webpack://grapesjs/./node_modules/underscore/modules/isFinite.js","webpack://grapesjs/./node_modules/underscore/modules/isNaN.js","webpack://grapesjs/./node_modules/underscore/modules/constant.js","webpack://grapesjs/./node_modules/underscore/modules/_createSizePropertyCheck.js","webpack://grapesjs/./node_modules/underscore/modules/_shallowProperty.js","webpack://grapesjs/./node_modules/underscore/modules/_getByteLength.js","webpack://grapesjs/./node_modules/underscore/modules/_isBufferLike.js","webpack://grapesjs/./node_modules/underscore/modules/isTypedArray.js","webpack://grapesjs/./node_modules/underscore/modules/_getLength.js","webpack://grapesjs/./node_modules/underscore/modules/_collectNonEnumProps.js","webpack://grapesjs/./node_modules/underscore/modules/keys.js","webpack://grapesjs/./node_modules/underscore/modules/isEmpty.js","webpack://grapesjs/./node_modules/underscore/modules/isMatch.js","webpack://grapesjs/./node_modules/underscore/modules/underscore.js","webpack://grapesjs/./node_modules/underscore/modules/_toBufferView.js","webpack://grapesjs/./node_modules/underscore/modules/isEqual.js","webpack://grapesjs/./node_modules/underscore/modules/allKeys.js","webpack://grapesjs/./node_modules/underscore/modules/_methodFingerprint.js","webpack://grapesjs/./node_modules/underscore/modules/isMap.js","webpack://grapesjs/./node_modules/underscore/modules/isWeakMap.js","webpack://grapesjs/./node_modules/underscore/modules/isSet.js","webpack://grapesjs/./node_modules/underscore/modules/isWeakSet.js","webpack://grapesjs/./node_modules/underscore/modules/values.js","webpack://grapesjs/./node_modules/underscore/modules/pairs.js","webpack://grapesjs/./node_modules/underscore/modules/invert.js","webpack://grapesjs/./node_modules/underscore/modules/functions.js","webpack://grapesjs/./node_modules/underscore/modules/_createAssigner.js","webpack://grapesjs/./node_modules/underscore/modules/extend.js","webpack://grapesjs/./node_modules/underscore/modules/extendOwn.js","webpack://grapesjs/./node_modules/underscore/modules/defaults.js","webpack://grapesjs/./node_modules/underscore/modules/_baseCreate.js","webpack://grapesjs/./node_modules/underscore/modules/create.js","webpack://grapesjs/./node_modules/underscore/modules/clone.js","webpack://grapesjs/./node_modules/underscore/modules/tap.js","webpack://grapesjs/./node_modules/underscore/modules/toPath.js","webpack://grapesjs/./node_modules/underscore/modules/_toPath.js","webpack://grapesjs/./node_modules/underscore/modules/_deepGet.js","webpack://grapesjs/./node_modules/underscore/modules/get.js","webpack://grapesjs/./node_modules/underscore/modules/has.js","webpack://grapesjs/./node_modules/underscore/modules/identity.js","webpack://grapesjs/./node_modules/underscore/modules/matcher.js","webpack://grapesjs/./node_modules/underscore/modules/property.js","webpack://grapesjs/./node_modules/underscore/modules/_optimizeCb.js","webpack://grapesjs/./node_modules/underscore/modules/_baseIteratee.js","webpack://grapesjs/./node_modules/underscore/modules/iteratee.js","webpack://grapesjs/./node_modules/underscore/modules/_cb.js","webpack://grapesjs/./node_modules/underscore/modules/mapObject.js","webpack://grapesjs/./node_modules/underscore/modules/noop.js","webpack://grapesjs/./node_modules/underscore/modules/propertyOf.js","webpack://grapesjs/./node_modules/underscore/modules/times.js","webpack://grapesjs/./node_modules/underscore/modules/random.js","webpack://grapesjs/./node_modules/underscore/modules/now.js","webpack://grapesjs/./node_modules/underscore/modules/_createEscaper.js","webpack://grapesjs/./node_modules/underscore/modules/_escapeMap.js","webpack://grapesjs/./node_modules/underscore/modules/escape.js","webpack://grapesjs/./node_modules/underscore/modules/unescape.js","webpack://grapesjs/./node_modules/underscore/modules/_unescapeMap.js","webpack://grapesjs/./node_modules/underscore/modules/templateSettings.js","webpack://grapesjs/./node_modules/underscore/modules/template.js","webpack://grapesjs/./node_modules/underscore/modules/result.js","webpack://grapesjs/./node_modules/underscore/modules/uniqueId.js","webpack://grapesjs/./node_modules/underscore/modules/chain.js","webpack://grapesjs/./node_modules/underscore/modules/_executeBound.js","webpack://grapesjs/./node_modules/underscore/modules/partial.js","webpack://grapesjs/./node_modules/underscore/modules/bind.js","webpack://grapesjs/./node_modules/underscore/modules/_isArrayLike.js","webpack://grapesjs/./node_modules/underscore/modules/_flatten.js","webpack://grapesjs/./node_modules/underscore/modules/bindAll.js","webpack://grapesjs/./node_modules/underscore/modules/memoize.js","webpack://grapesjs/./node_modules/underscore/modules/delay.js","webpack://grapesjs/./node_modules/underscore/modules/defer.js","webpack://grapesjs/./node_modules/underscore/modules/throttle.js","webpack://grapesjs/./node_modules/underscore/modules/debounce.js","webpack://grapesjs/./node_modules/underscore/modules/wrap.js","webpack://grapesjs/./node_modules/underscore/modules/negate.js","webpack://grapesjs/./node_modules/underscore/modules/compose.js","webpack://grapesjs/./node_modules/underscore/modules/after.js","webpack://grapesjs/./node_modules/underscore/modules/before.js","webpack://grapesjs/./node_modules/underscore/modules/once.js","webpack://grapesjs/./node_modules/underscore/modules/findKey.js","webpack://grapesjs/./node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack://grapesjs/./node_modules/underscore/modules/findIndex.js","webpack://grapesjs/./node_modules/underscore/modules/findLastIndex.js","webpack://grapesjs/./node_modules/underscore/modules/sortedIndex.js","webpack://grapesjs/./node_modules/underscore/modules/_createIndexFinder.js","webpack://grapesjs/./node_modules/underscore/modules/indexOf.js","webpack://grapesjs/./node_modules/underscore/modules/lastIndexOf.js","webpack://grapesjs/./node_modules/underscore/modules/find.js","webpack://grapesjs/./node_modules/underscore/modules/findWhere.js","webpack://grapesjs/./node_modules/underscore/modules/each.js","webpack://grapesjs/./node_modules/underscore/modules/map.js","webpack://grapesjs/./node_modules/underscore/modules/_createReduce.js","webpack://grapesjs/./node_modules/underscore/modules/reduce.js","webpack://grapesjs/./node_modules/underscore/modules/reduceRight.js","webpack://grapesjs/./node_modules/underscore/modules/filter.js","webpack://grapesjs/./node_modules/underscore/modules/reject.js","webpack://grapesjs/./node_modules/underscore/modules/every.js","webpack://grapesjs/./node_modules/underscore/modules/some.js","webpack://grapesjs/./node_modules/underscore/modules/contains.js","webpack://grapesjs/./node_modules/underscore/modules/invoke.js","webpack://grapesjs/./node_modules/underscore/modules/pluck.js","webpack://grapesjs/./node_modules/underscore/modules/where.js","webpack://grapesjs/./node_modules/underscore/modules/max.js","webpack://grapesjs/./node_modules/underscore/modules/min.js","webpack://grapesjs/./node_modules/underscore/modules/sample.js","webpack://grapesjs/./node_modules/underscore/modules/shuffle.js","webpack://grapesjs/./node_modules/underscore/modules/sortBy.js","webpack://grapesjs/./node_modules/underscore/modules/_group.js","webpack://grapesjs/./node_modules/underscore/modules/groupBy.js","webpack://grapesjs/./node_modules/underscore/modules/indexBy.js","webpack://grapesjs/./node_modules/underscore/modules/countBy.js","webpack://grapesjs/./node_modules/underscore/modules/partition.js","webpack://grapesjs/./node_modules/underscore/modules/toArray.js","webpack://grapesjs/./node_modules/underscore/modules/size.js","webpack://grapesjs/./node_modules/underscore/modules/_keyInObj.js","webpack://grapesjs/./node_modules/underscore/modules/pick.js","webpack://grapesjs/./node_modules/underscore/modules/omit.js","webpack://grapesjs/./node_modules/underscore/modules/initial.js","webpack://grapesjs/./node_modules/underscore/modules/first.js","webpack://grapesjs/./node_modules/underscore/modules/rest.js","webpack://grapesjs/./node_modules/underscore/modules/last.js","webpack://grapesjs/./node_modules/underscore/modules/compact.js","webpack://grapesjs/./node_modules/underscore/modules/flatten.js","webpack://grapesjs/./node_modules/underscore/modules/difference.js","webpack://grapesjs/./node_modules/underscore/modules/without.js","webpack://grapesjs/./node_modules/underscore/modules/uniq.js","webpack://grapesjs/./node_modules/underscore/modules/union.js","webpack://grapesjs/./node_modules/underscore/modules/intersection.js","webpack://grapesjs/./node_modules/underscore/modules/unzip.js","webpack://grapesjs/./node_modules/underscore/modules/zip.js","webpack://grapesjs/./node_modules/underscore/modules/object.js","webpack://grapesjs/./node_modules/underscore/modules/range.js","webpack://grapesjs/./node_modules/underscore/modules/chunk.js","webpack://grapesjs/./node_modules/underscore/modules/_chainResult.js","webpack://grapesjs/./node_modules/underscore/modules/mixin.js","webpack://grapesjs/./node_modules/underscore/modules/underscore-array-methods.js","webpack://grapesjs/./node_modules/underscore/modules/index-default.js","webpack://grapesjs/webpack/bootstrap","webpack://grapesjs/webpack/runtime/compat get default export","webpack://grapesjs/webpack/runtime/define property getters","webpack://grapesjs/webpack/runtime/global","webpack://grapesjs/webpack/runtime/hasOwnProperty shorthand","webpack://grapesjs/webpack/runtime/make namespace object","webpack://grapesjs/./src/editor/config/config.ts","webpack://grapesjs/./src/editor/model/Selected.ts","webpack://grapesjs/./src/editor/model/Editor.ts","webpack://grapesjs/./src/utils/extender.js","webpack://grapesjs/./src/editor/view/EditorView.ts","webpack://grapesjs/./src/editor/index.ts","webpack://grapesjs/./src/plugin_manager/config/config.js","webpack://grapesjs/./src/utils/polyfills.js","webpack://grapesjs/./src/index.js","webpack://grapesjs/./src/plugin_manager/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"grapesjs\"] = factory();\n\telse\n\t\troot[\"grapesjs\"] = factory();\n})(typeof globalThis !== 'undefined' ? globalThis : (typeof window !== 'undefined' ? window : this), () => {\nreturn ","module.exports = require(\"regenerator-runtime\");\n","/*!\n * Backbone.Undo.js v0.2\n * \n * Copyright (c)2013 Oliver Sartun\n * Released under the MIT License\n *\n * Documentation and full license available at\n * https://github.com/osartun/Backbone.Undo.js\n */\n\n\n(function (factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\t// AMD support\n\t\tdefine([\"underscore\", \"backbone\"], factory);\n\t} else if (typeof exports !== 'undefined') {\n\t\t// CommonJS support\n\t\tmodule.exports = factory(\n\t\t\trequire(\"underscore\"),\n\t\t\trequire(\"backbone\")\n\t\t);\n\t} else {\n\t\t// Non-modular execution\n\t\tfactory(_, Backbone);\n }\n})(function (_, Backbone) {\n\n\tvar core_slice = Array.prototype.slice;\n\n\t/**\n\t * As call is faster than apply, this is a faster version of apply as it uses call.\n\t * \n\t * @param {Function} fn \tThe function to execute \n\t * @param {Object} ctx \tThe context the function should be called in\n\t * @param {Array} args \tThe array of arguments that should be applied to the function\n\t * @return Forwards whatever the called function returns\n\t */\n\tfunction apply (fn, ctx, args) {\n\t\treturn args.length <= 4 ?\n\t\t\tfn.call(ctx, args[0], args[1], args[2], args[3]) :\n\t\t\tfn.apply(ctx, args);\n\t}\n\n\t/**\n\t * Uses slice on an array or an array-like object.\n\t * \n\t * @param {Array|Object} \tarr \tThe array or array-like object.\n\t * @param {Number} \t\t[index]\tThe index from where the array should be sliced. Default is 0.\n\t * @return {Array} The sliced array\n\t */\n\tfunction slice (arr, index) {\n\t\treturn core_slice.call(arr, index);\n\t}\n\n\t/**\n\t * Checks if an object has one or more specific keys. The keys \n\t * don't have to be an owned property.\n\t * You can call this function either this way:\n\t * hasKeys(obj, [\"a\", \"b\", \"c\"])\n\t * or this way:\n\t * hasKeys(obj, \"a\", \"b\", \"c\")\n\t * \n\t * @param {Object} \tobj \tThe object to check on\n\t * @param {Array} \tkeys \tThe keys to check for\n\t * @return {Boolean} True, if the object has all those keys\n\t */\n\tfunction hasKeys (obj, keys) {\n\t\tif (obj == null) return false;\n\t\tif (!_.isArray(keys)) {\n\t\t\tkeys = slice(arguments, 1);\n\t\t}\n\t\treturn _.all(keys, function (key) {\n\t\t\treturn key in obj;\n\t\t});\n\t}\n\n\t/**\n\t * Returns a number that is unique per call stack. The number gets \n\t * changed after the call stack has been completely processed.\n\t * \n\t * @return {number} MagicFusionIndex\n\t */\n\tvar getMagicFusionIndex = (function () {\n\t\t// If you add several models to a collection or set several\n\t\t// attributes on a model all in sequence and yet all for\n\t\t// example in one function, then several Undo-Actions are\n\t\t// generated.\n\t\t// If you want to undo your last action only the last model\n\t\t// would be removed from the collection or the last set\n\t\t// attribute would be changed back to its previous value.\n\t\t// To prevent that we have to figure out a way to combine\n\t\t// all those actions that happened \"at the same time\". \n\t\t// Timestamps aren't exact enough. A complex routine could \n\t\t// run several milliseconds and in that time produce a lot \n\t\t// of actions with different timestamps.\n\t\t// Instead we take advantage of the single-threadedness of\n\t\t// JavaScript:\n\n\t\tvar callstackWasIndexed = false, magicFusionIndex = -1;\n\t\tfunction indexCycle() {\n\t\t\tmagicFusionIndex++;\n\t\t\tcallstackWasIndexed = true;\n\t\t\t_.defer(function () {\n\t\t\t\t// Here comes the magic. With a Timeout of 0 \n\t\t\t\t// milliseconds this function gets called whenever\n\t\t\t\t// the current callstack is completed\n\t\t\t\tcallstackWasIndexed = false;\n\t\t\t})\n\t\t}\n\t\treturn function () {\n\t\t\tif (!callstackWasIndexed) {\n\t\t\t\tindexCycle();\n\t\t\t}\n\t\t\treturn magicFusionIndex;\n\t\t}\n\t})();\n\n\t/**\n\t * To prevent binding a listener several times to one \n\t * object, we register the objects in an ObjectRegistry\n\t *\n\t * @constructor\n\t */\n\tfunction ObjectRegistry () {\n\t\t// This uses two different ways of storing\n\t\t// objects: In case the object has a cid\n\t\t// (which Backbone objects typically have)\n\t\t// it uses this cid as an index. That way\n\t\t// the Array's length attribute doesn't \n\t\t// change and the object isn't an item \n\t\t// in the array, but an object-property.\n\t\t// Otherwise it's added to the Array as an\n\t\t// item.\n\t\t// That way we can use the fast property-\n\t\t// lookup and only have to fall back to \n\t\t// iterating over the array in case \n\t\t// non-Backbone-objects are registered.\n\t\tthis.registeredObjects = [];\n\t\t// To return a list of all registered \n\t\t// objects in the 'get' method we have to\n\t\t// store the objects that have a cid in\n\t\t// an additional array. \n\t\tthis.cidIndexes = [];\n\t}\n\tObjectRegistry.prototype = {\n\t\t/**\n\t\t * Returns whether the object is already registered in this ObjectRegistry or not.\n\t\t * \n\t\t * @this \t{ObjectRegistry}\n\t\t * @param \t{Object} \t\t obj \tThe object to check\n\t\t * @return \t{Boolean} True if the object is already registered\n\t\t */\n\t\tisRegistered: function (obj) {\n\t\t\t// This is where we get a performance boost \n\t\t\t// by using the two different ways of storing \n\t\t\t// objects.\n\t\t\treturn obj && obj.cid ? this.registeredObjects[obj.cid] : _.contains(this.registeredObjects, obj);\n\t\t},\n\t\t/**\n\t\t * Registers an object in this ObjectRegistry.\n\t\t * \n\t\t * @this \t{ObjectRegistry}\n\t\t * @param \t{Object} \t\t obj \tThe object to register\n\t\t * @return \t{undefined}\n\t\t */\n\t\tregister: function (obj) {\n\t\t\tif (!this.isRegistered(obj)) {\n\t\t\t\tif (obj && obj.cid) {\n\t\t\t\t\tthis.registeredObjects[obj.cid] = obj;\n\t\t\t\t\tthis.cidIndexes.push(obj.cid);\n\t\t\t\t} else {\n\t\t\t\t\tthis.registeredObjects.push(obj);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t/**\n\t\t * Unregisters an object from this ObjectRegistry.\n\t\t * \n\t\t * @this {ObjectRegistry}\n\t\t * @param {Object} obj The object to unregister\n\t\t * @return {undefined}\n\t\t */\n\t\tunregister: function (obj) {\n\t\t\tif (this.isRegistered(obj)) {\n\t\t\t\tif (obj && obj.cid) {\n\t\t\t\t\tdelete this.registeredObjects[obj.cid];\n\t\t\t\t\tthis.cidIndexes.splice(_.indexOf(this.cidIndexes, obj.cid), 1);\n\t\t\t\t} else {\n\t\t\t\t\tvar i = _.indexOf(this.registeredObjects, obj);\n\t\t\t\t\tthis.registeredObjects.splice(i, 1);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t/**\n\t\t * Returns an array of all objects that are currently in this ObjectRegistry.\n\t\t * \n\t\t * @return {Array} An array of all the objects which are currently in the ObjectRegistry\n\t\t */\n\t\tget: function () {\n\t\t\treturn (_.map(this.cidIndexes, function (cid) {return this.registeredObjects[cid];}, this)).concat(this.registeredObjects);\n\t\t}\n\t}\n\n\t/**\n\t * Binds or unbinds the \"all\"-listener for one or more objects.\n\t * \n\t * @param {String} which \tEither \"on\" or \"off\"\n\t * @param {Object[]} objects \tArray of the objects on which the \"all\"-listener should be bound / unbound to\n\t * @param {Function} [fn] \t\tThe function that should be bound / unbound. Optional in case of \"off\"\n\t * @param {Object} [ctx] \tThe context the function should be called in\n\t * @return {undefined}\n\t */\n\tfunction onoff(which, objects, fn, ctx) {\n\t\tfor (var i = 0, l = objects.length, obj; i < l; i++) {\n\t\t\tobj = objects[i];\n\t\t\tif (!obj) continue;\n\t\t\tif (which === \"on\") {\n\t\t\t\tif (!ctx.objectRegistry.register(obj)) {\n\t\t\t\t\t// register returned false, so obj was already registered\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!ctx.objectRegistry.unregister(obj)) {\n\t\t\t\t\t// unregister returned false, so obj wasn't registered\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (_.isFunction(obj[which])) {\n\t\t\t\tobj[which](\"all\", fn, ctx);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calls the undo/redo-function for a specific action.\n\t * \n\t * @param {String} which \tEither \"undo\" or \"redo\"\n\t * @param {Object} action \tThe Action's attributes\n\t * @return {undefined}\n\t */\n\tfunction actionUndoRedo (which, action) {\n\t\tvar type = action.type, undoTypes = action.undoTypes, fn = !undoTypes[type] || undoTypes[type][which];\n\t\tif (_.isFunction(fn)) {\n\t\t\tfn(action.object, action.before, action.after, action.options);\n\t\t}\n\t}\n\n\t/**\n\t * The main undo/redo function.\n\t *\n\t * @param {String} \t\twhich \t Either \"undo\" or \"redo\"\n\t * @param {UndoManager} \tmanager\t The UndoManager-instance on which an \"undo\"/\"redo\"-Event is triggered afterwards\n\t * @param {UndoStack} \t\tstack \t The UndoStack on which we perform\n\t * @param {Boolean} \t\tmagic \t If true, undoes / redoes all actions with the same magicFusionIndex\n\t * @param {Boolean} \t\teverything If true, undoes / redoes every action that had been tracked\n\t * @return {undefined}\n\t */\n\tfunction managerUndoRedo (which, manager, stack, magic, everything) {\n\t\tif (stack.isCurrentlyUndoRedoing || \n\t\t\t(which === \"undo\" && stack.pointer === -1) ||\n\t\t\t(which === \"redo\" && stack.pointer === stack.length - 1)) {\n\t\t\t// We're either currently in an undo- / redo-process or \n\t\t\t// we reached the end of the stack\n\t\t\treturn;\n\t\t}\n\t\tstack.isCurrentlyUndoRedoing = true;\n\t\tvar action, actions, isUndo = which === \"undo\";\n\t\tif (everything) {\n\t\t\t// Undo / Redo all steps until you reach the stack's beginning / end\n\t\t\tactions = isUndo && stack.pointer === stack.length - 1 || // If at the stack's end calling undo\n\t\t\t\t\t !isUndo && stack.pointer === -1 ? // or at the stack's beginning calling redo\n\t\t\t\t\t _.clone(stack.models) : // => Take all the models. Otherwise:\n\t\t\t\t\t core_slice.apply(stack.models, isUndo ? [0, stack.pointer] : [stack.pointer, stack.length - 1]);\n\t\t} else {\n\t\t\t// Undo / Redo only one step\n\t\t\taction = stack.at(isUndo ? stack.pointer : stack.pointer + 1);\n\t\t\tactions = magic ? stack.where({\"magicFusionIndex\": action.get(\"magicFusionIndex\")}) : [action];\n\t\t}\n\t\t\n\t\tstack.pointer += (isUndo ? -1 : 1) * actions.length;\n\t\twhile (action = isUndo ? actions.pop() : actions.shift()) {\n\t\t\t// Here we're calling the Action's undo / redo method\n\t\t\taction[which]();\n\t\t}\n\t\tstack.isCurrentlyUndoRedoing = false;\n\n\t\tmanager.trigger(which, manager);\n\t}\n\n\t/**\n\t * Checks whether an UndoAction should be created or not. Therefore it checks\n\t * whether a \"condition\" property is set in the undoTypes-object of the specific\n\t * event type. If not, it returns true. If it's set and a boolean, it returns it.\n\t * If it's a function, it returns its result, converting it into a boolean. \n\t * Otherwise it returns true.\n\t * \n\t * @param {Object} \tundoTypesType \tThe object within the UndoTypes that holds the function for this event type (i.e. \"change\")\n\t * @param {Arguments} \targs \t\tThe arguments the \"condition\" function is called with\n\t * @return {Boolean} \tTrue, if an UndoAction should be created\n\t */\n\tfunction validateUndoActionCreation (undoTypesType, args) {\n\t\tvar condition = undoTypesType.condition, type = typeof condition;\n\t\treturn type === \"function\" ? !!apply(condition, undoTypesType, args) :\n\t\t\ttype === \"boolean\" ? condition : true;\n\t}\n\n\t/**\n\t * Adds an Undo-Action to the stack.\n\t * \n\t * @param {UndoStack} \t\tstack \t\tThe undostack the action should be added to.\n\t * @param {String} \t\t\ttype \t\tThe event type (i.e. \"change\")\n\t * @param {Arguments} \t\targs \t\tThe arguments passed to the undoTypes' \"on\"-handler\n\t * @param {OwnedUndoTypes} \tundoTypes \tThe undoTypes-object which has the \"on\"-handler\n\t * @return {undefined}\n\t */\n\tfunction addToStack(stack, type, args, undoTypes) {\n\t\tif (stack.track && !stack.isCurrentlyUndoRedoing && type in undoTypes &&\n\t\t\tvalidateUndoActionCreation(undoTypes[type], args)) {\n\t\t\t// An UndoAction should be created\n\t\t\tvar res = apply(undoTypes[type][\"on\"], undoTypes[type], args), diff;\n\t\t\tif (hasKeys(res, \"object\", \"before\", \"after\")) {\n\t\t\t\tres.type = type;\n\t\t\t\tres.magicFusionIndex = getMagicFusionIndex();\n\t\t\t\tres.undoTypes = undoTypes;\n\t\t\t\tif (stack.pointer < stack.length - 1) {\n\t\t\t\t\t// New Actions must always be added to the end of the stack.\n\t\t\t\t\t// If the pointer is not pointed to the last action in the\n\t\t\t\t\t// stack, presumably because actions were undone before, then\n\t\t\t\t\t// all following actions must be discarded\n\t\t\t\t\tvar diff = stack.length - stack.pointer - 1;\n\t\t\t\t\twhile (diff--) {\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstack.pointer = stack.length;\n\t\t\t\tstack.add(res);\n\t\t\t\tif (stack.length > stack.maximumStackLength) {\n\t\t\t\t\tstack.shift();\n\t\t\t\t\tstack.pointer--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t * Predefined UndoTypes object with default handlers for the most common events.\n\t * @type {Object}\n\t */\n\tvar UndoTypes = {\n\t\t\"add\": {\n\t\t\t\"undo\": function (collection, ignore, model, options) {\n\t\t\t\t// Undo add = remove\n\t\t\t\tcollection.remove(model, options);\n\t\t\t},\n\t\t\t\"redo\": function (collection, ignore, model, options) {\n\t\t\t\t// Redo add = add\n\t\t\t\tif (options.index) {\n\t\t\t\t\toptions.at = options.index;\n\t\t\t\t}\n\t\t\t\tcollection.add(model, options);\n\t\t\t},\n\t\t\t\"on\": function (model, collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: undefined,\n\t\t\t\t\tafter: model,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"remove\": {\n\t\t\t\"undo\": function (collection, model, ignore, options) {\n\t\t\t\tif (\"index\" in options) {\n\t\t\t\t\toptions.at = options.index;\n\t\t\t\t}\n\t\t\t\tcollection.add(model, options);\n\t\t\t},\n\t\t\t\"redo\": function (collection, model, ignore, options) {\n\t\t\t\tcollection.remove(model, options);\n\t\t\t},\n\t\t\t\"on\": function (model, collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: model,\n\t\t\t\t\tafter: undefined,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"change\": {\n\t\t\t\"undo\": function (model, before, after, options) {\n\t\t\t\tif (_.isEmpty(before)) {\n\t\t\t\t\t_.each(_.keys(after), model.unset, model);\n\t\t\t\t} else {\n\t\t\t\t\tmodel.set(before);\n\t\t\t\t\tif (options && options.unsetData && options.unsetData.before && options.unsetData.before.length) {\n\t\t\t\t\t\t_.each(options.unsetData.before, model.unset, model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"redo\": function (model, before, after, options) {\n\t\t\t\tif (_.isEmpty(after)) {\n\t\t\t\t\t_.each(_.keys(before), model.unset, model);\n\t\t\t\t} else {\n\t\t\t\t\tmodel.set(after);\n\t\t\t\t\tif (options && options.unsetData && options.unsetData.after && options.unsetData.after.length) {\n\t\t\t\t\t\t_.each(options.unsetData.after, model.unset, model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"on\": function (model, options) {\n\t\t\t\tvar\n\t\t\t\tafterAttributes = model.changedAttributes(),\n\t\t\t\tkeysAfter = _.keys(afterAttributes),\n\t\t\t\tpreviousAttributes = _.pick(model.previousAttributes(), keysAfter),\n\t\t\t\tkeysPrevious = _.keys(previousAttributes),\n\t\t\t\tunsetData = (options || (options = {})).unsetData = {\n\t\t\t\t\tafter: [],\n\t\t\t\t\tbefore: []\n\t\t\t\t};\n\n\t\t\t\tif (keysAfter.length != keysPrevious.length) {\n\t\t\t\t\t// There are new attributes or old attributes have been unset\n\t\t\t\t\tif (keysAfter.length > keysPrevious.length) {\n\t\t\t\t\t\t// New attributes have been added\n\t\t\t\t\t\t_.each(keysAfter, function (val) {\n\t\t\t\t\t\t\tif (!(val in previousAttributes)) {\n\t\t\t\t\t\t\t\tunsetData.before.push(val);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Old attributes have been unset\n\t\t\t\t\t\t_.each(keysPrevious, function (val) {\n\t\t\t\t\t\t\tif (!(val in afterAttributes)) {\n\t\t\t\t\t\t\t\tunsetData.after.push(val);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tobject: model,\n\t\t\t\t\tbefore: previousAttributes,\n\t\t\t\t\tafter: afterAttributes,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"reset\": {\n\t\t\t\"undo\": function (collection, before, after) {\n\t\t\t\tcollection.reset(before);\n\t\t\t},\n\t\t\t\"redo\": function (collection, before, after) {\n\t\t\t\tcollection.reset(after);\n\t\t\t},\n\t\t\t\"on\": function (collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: options.previousModels,\n\t\t\t\t\tafter: _.clone(collection.models)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Every UndoManager instance has an own undoTypes object\n\t * which is an instance of OwnedUndoTypes. OwnedUndoTypes' \n\t * prototype is the global UndoTypes object. Changes to the \n\t * global UndoTypes object take effect on every instance of\n\t * UndoManager as the object is its prototype. And yet every \n\t * local UndoTypes object can be changed individually.\n\t *\n\t * @constructor\n\t */\n\tfunction OwnedUndoTypes () {}\n\tOwnedUndoTypes.prototype = UndoTypes;\n\n\t/**\n\t * Adds, changes or removes an undo-type from an UndoTypes-object.\n\t * You can call it this way:\n\t * manipulateUndoType (1, \"reset\", {\"on\": function () {}}, undoTypes)\n\t * or this way to perform bulk actions:\n\t * manipulateUndoType (1, {\"reset\": {\"on\": function () {}}}, undoTypes)\n\t * In case of removing undo-types you can pass an Array for performing\n\t * bulk actions:\n\t * manipulateUndoType(2, [\"reset\", \"change\"], undoTypes)\n\t * \n\t * @param {Number} \t\t\t\t manipType \t\tIndicates the kind of action to execute: 0 for add, 1 for change, 2 for remove\n\t * @param {String|Object|Array} \t undoType \t\t\tThe type of undoType that should be added/changed/removed. Can be an object / array to perform bulk actions\n\t * @param {Object} \t\t\t\t [fns] \t\t\tObject with the functions to add / change. Is optional in case you passed an object as undoType that contains these functions\n\t * @param {OwnedUndoTypes|UndoTypes} undoTypesInstance The undoTypes object to act on\n\t * @return {undefined}\n\t */\n\tfunction manipulateUndoType (manipType, undoType, fns, undoTypesInstance) {\n\t\t// manipType, passed by the calling function\n\t\t// 0: add\n\t\t// 1: change\n\t\t// 2: remove\n\t\tif (typeof undoType === \"object\") {\n\t\t\t// bulk action. Iterate over this data.\n\t\t\treturn _.each(undoType, function (val, key) {\n\t\t\t\t\tif (manipType === 2) { // remove\n\t\t\t\t\t\t// undoType is an array\n\t\t\t\t\t\tmanipulateUndoType (manipType, val, fns, undoTypesInstance);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// undoType is an object\n\t\t\t\t\t\tmanipulateUndoType (manipType, key, val, fns);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\tswitch (manipType) {\n\t\t\tcase 0: // add\n\t\t\t\tif (hasKeys(fns, \"undo\", \"redo\", \"on\") && _.all(_.pick(fns, \"undo\", \"redo\", \"on\"), _.isFunction)) {\n\t\t\t\t\tundoTypesInstance[undoType] = fns;\n\t\t\t\t} \n\t\t\tbreak;\n\t\t\tcase 1: // change\n\t\t\t\tif (undoTypesInstance[undoType] && _.isObject(fns)) {\n\t\t\t\t\t// undoTypeInstance[undoType] may be a prototype's property\n\t\t\t\t\t// So, if we did this _.extend(undoTypeInstance[undoType], fns)\n\t\t\t\t\t// we would extend the object on the prototype which means\n\t\t\t\t\t// that this change would have a global effect\n\t\t\t\t\t// Instead we just want to manipulate this instance. That's why\n\t\t\t\t\t// we're doing this:\n\t\t\t\t\tundoTypesInstance[undoType] = _.extend({}, undoTypesInstance[undoType], fns);\n\t\t\t\t} \n\t\t\tbreak;\n\t\t\tcase 2: // remove\n\t\t\t\tdelete undoTypesInstance[undoType]; \n\t\t\tbreak;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Instantiating \"Action\" creates the UndoActions that \n\t * are collected in an UndoStack. It holds all relevant \n\t * data to undo / redo an action and has an undo / redo \n\t * method.\n\t */\n\tvar Action = Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\ttype: null, // \"add\", \"change\", \"reset\", etc.\n\t\t\tobject: null, // The object on which the action occurred\n\t\t\tbefore: null, // The previous values which were changed with this action\n\t\t\tafter: null, // The values after this action\n\t\t\tmagicFusionIndex: null // The magicFusionIndex helps to combine \n\t\t\t// all actions that occurred \"at the same time\" to undo/redo them altogether\n\t\t},\n\t\t/**\n\t\t * Undoes this action.\n\t\t * @param {OwnedUndoTypes|UndoTypes} undoTypes The undoTypes object which contains the \"undo\"-handler that should be used\n\t\t * @return {undefined}\n\t\t */\n\t\tundo: function (undoTypes) {\n\t\t\tactionUndoRedo(\"undo\", this.attributes);\n\t\t},\n\t\t/**\n\t\t * Redoes this action.\n\t\t * @param {OwnedUndoTypes|UndoTypes} undoTypes The undoTypes object which contains the \"redo\"-handler that should be used\n\t\t * @return {undefined}\n\t\t */\n\t\tredo: function (undoTypes) {\n\t\t\tactionUndoRedo(\"redo\", this.attributes);\n\t\t}\n\t}),\n\t/**\n\t * An UndoStack is a collection of UndoActions in \n\t * chronological order.\n\t */\n\tUndoStack = Backbone.Collection.extend({\n\t\tmodel: Action,\n\t\tpointer: -1, // The pointer indicates the index where we are located within the stack. We start at -1\n\t\ttrack: false,\n\t\tisCurrentlyUndoRedoing: false,\n\t\tmaximumStackLength: Infinity,\n\t\tsetMaxLength: function (val) {\n\t\t\tthis.maximumStackLength = val;\n\t\t}\n\t}),\n\t/**\n\t * An instance of UndoManager can keep track of \n\t * changes to objects and helps to undo them.\n\t */\n\tUndoManager = Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\tmaximumStackLength: Infinity,\n\t\t\ttrack: false\n\t\t},\n\t\t/**\n\t\t * The constructor function.\n\t\t * @param {attr} \t\t[attr] Object with parameters. The available parameters are:\n\t\t * \t - maximumStackLength {number} \tSet the undo-stack's maximum size\n\t\t * - track \t\t\t\t{boolean}\tStart tracking changes right away\n\t\t * @return {undefined}\n\t\t */\n\t\tinitialize: function (attr) {\n\t\t\tthis.stack = new UndoStack;\n\t\t\tthis.objectRegistry = new ObjectRegistry();\n\t\t\tthis.undoTypes = new OwnedUndoTypes();\n\n\t\t\t// sync the maximumStackLength attribute with our stack\n\t\t\tthis.stack.setMaxLength(this.get(\"maximumStackLength\"));\n\t\t\tthis.on(\"change:maximumStackLength\", function (model, value) {\n\t\t\t\tthis.stack.setMaxLength(value);\n\t\t\t}, this);\n\n\t\t\t// Start tracking, if attr.track == true\n\t\t\tif (attr && attr.track) {\n\t\t\t\tthis.startTracking();\n\t\t\t}\n\n\t\t\t// Register objects passed in the \"register\" attribute\n\t\t\tif (attr && attr.register) {\n\t\t\t\tif (_.isArray(attr.register) || _.isArguments(attr.register)) {\n\t\t\t\t\tapply(this.register, this, attr.register);\n\t\t\t\t} else {\n\t\t\t\t\tthis.register(attr.register);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Starts tracking. Changes of registered objects won't be processed until you've called this function\n\t\t * @return {undefined}\n\t\t */\n\t\tstartTracking: function () {\n\t\t\tthis.set(\"track\", true);\n\t\t\tthis.stack.track = true;\n\t\t},\n\t\t/**\n\t\t * Stops tracking. Afterwards changes of registered objects won't be processed.\n\t\t * @return {undefined}\n\t\t */\n\t\tstopTracking: function () {\n\t\t\tthis.set(\"track\", false);\n\t\t\tthis.stack.track = false;\n\t\t},\n\t\t/**\n\t\t * Return the state of the tracking\n\t\t * @return {boolean}\n\t\t */\n\t\tisTracking: function () {\n\t\t\treturn this.get(\"track\");\n\t\t},\n\t\t/**\n\t\t * This is the \"all\"-handler which is bound to registered \n\t\t * objects. It creates an UndoAction from the event and adds \n\t\t * it to the stack.\n\t\t * \n\t\t * @param {String} \ttype \tThe event type\n\t\t * @return {undefined}\n\t\t */\n\t\t_addToStack: function (type) {\n\t\t\taddToStack(this.stack, type, slice(arguments, 1), this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Registers one or more objects to track their changes.\n\t\t * @param {...Object} \tobj \tThe object or objects of which changes should be tracked\n\t\t * @return {undefined}\n\t\t */\n\t\tregister: function () {\n\t\t\tonoff(\"on\", arguments, this._addToStack, this);\n\t\t},\n\t\t/**\n\t\t * Unregisters one or more objects.\n\t\t * @param {...Object} \tobj \tThe object or objects of which changes shouldn't be tracked any longer\n\t\t * @return {undefined}\n\t\t */\n\t\tunregister: function () {\n\t\t\tonoff(\"off\", arguments, this._addToStack, this);\n\t\t},\n\t\t/**\n\t\t * Unregisters all previously registered objects.\n\t\t * @return {undefined}\n\t\t */\n\t\tunregisterAll: function () {\n\t\t\tapply(this.unregister, this, this.objectRegistry.get());\n\t\t},\n\t\t/**\n\t\t * Undoes the last action or the last set of actions in case 'magic' is true.\n\t\t * @param {Boolean} \t[magic] \tIf true, all actions that happened basically at the same time are undone together\n\t\t * @return {undefined}\n\t\t */\n\t\tundo: function (magic) {\n\t\t\tmanagerUndoRedo(\"undo\", this, this.stack, magic);\n\t\t},\n\n\t\t/**\n\t\t * Undoes all actions ever tracked by the undo manager\n\t\t * @return {undefined}\n\t\t */\n\t\tundoAll: function () {\n\t\t\tmanagerUndoRedo(\"undo\", this, this.stack, false, true);\n\t\t},\n\n\t\t/**\n\t\t * Redoes a previously undone action or a set of actions.\n\t\t * @param {Boolean} \t[magic] \tIf true, all actions that happened basically at the same time are redone together\n\t\t * @return {undefined}\n\t\t */\n\t\tredo: function (magic) {\n\t\t\tmanagerUndoRedo(\"redo\", this, this.stack, magic);\n\t\t},\n\n\t\t/**\n\t\t * Redoes all actions ever tracked by the undo manager\n\t\t * @return {undefined}\n\t\t */\n\t\tredoAll: function () {\n\t\t\tmanagerUndoRedo(\"redo\", this, this.stack, false, true);\n\t\t},\n\t\t/**\n\t\t * Checks if there's an action in the stack that can be undone / redone\n\t\t * @param {String} \ttype \tEither \"undo\" or \"redo\"\n\t\t * @return {Boolean} True if there is a set of actions which can be undone / redone\n\t\t */\n\t\tisAvailable: function (type) {\n\t\t\tvar s = this.stack, l = s.length;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase \"undo\": return l > 0 && s.pointer > -1;\n\t\t\t\tcase \"redo\": return l > 0 && s.pointer < l - 1;\n\t\t\t\tdefault: return false;\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Sets the stack-reference to the stack of another undoManager.\n\t\t * @param {UndoManager} \tundoManager \tThe undoManager whose stack-reference is set to this stack\n\t\t * @return {undefined}\n\t\t */\n\t\tmerge: function (undoManager) {\n\t\t\t// This sets the stack-reference to the stack of another \n\t\t\t// undoManager so that the stack of this other undoManager \n\t\t\t// is used by two different managers.\n\t\t\t// This enables to set up a main-undoManager and besides it\n\t\t\t// several others for special, exceptional cases (by using\n\t\t\t// instance-based custom UndoTypes). Models / collections \n\t\t\t// which need this special treatment are only registered at \n\t\t\t// those special undoManagers. Those special ones are then \n\t\t\t// merged into the main-undoManager to write on its stack. \n\t\t\t// That way it's easier to manage exceptional cases.\n\t\t\tvar args = _.isArray(undoManager) ? undoManager : slice(arguments), manager;\n\t\t\twhile (manager = args.pop()) {\n\t\t\t\tif (manager instanceof UndoManager &&\n\t\t\t\t\tmanager.stack instanceof UndoStack) {\n\t\t\t\t\t// set the stack reference to our stack\n\t\t\t\t\tmanager.stack = this.stack;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Add an UndoType to this specific UndoManager-instance.\n\t\t * @param {String} type The event this UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. Must have the properties \"undo\", \"redo\" and \"on\". Can have the property \"condition\".\n\t\t * @return {undefined}\n\t\t */\n\t\taddUndoType: function (type, fns) {\n\t\t\tmanipulateUndoType(0, type, fns, this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Overwrite properties of an existing UndoType for this specific UndoManager-instance.\n\t\t * @param {String} type The event the UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. It extends the existing object.\n\t\t * @return {undefined}\n\t\t */\n\t\tchangeUndoType: function (type, fns) {\n\t\t\tmanipulateUndoType(1, type, fns, this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Remove one or more UndoTypes of this specific UndoManager-instance to fall back to the global UndoTypes.\n\t\t * @param {String|Array} type The event the UndoType that should be removed is made for. You can also pass an array of events.\n\t\t * @return {undefined}\n\t\t */\n\t\tremoveUndoType: function (type) {\n\t\t\tmanipulateUndoType(2, type, undefined, this.undoTypes);\n\t\t},\n\n\t\t/**\n\t\t * Removes all actions from the stack.\n\t\t * @return {undefined}\n\t\t */\n\t\tclear: function() {\n\t\t\tthis.stack.reset();\n\t\t\tthis.stack.pointer = -1;\n\t\t}\n\t});\n\n\t_.extend(UndoManager, {\n\t\t/**\n\t\t * Change the UndoManager's default attributes\n\t\t * @param {Object} defaultAttributes An object with the new default values.\n\t\t * @return {undefined}\n\t\t */\n\t\tdefaults: function (defaultAttributes) {\n\t\t\t_.extend(UndoManager.prototype.defaults, defaultAttributes);\n\t\t},\n\t\t/**\n\t\t * Add an UndoType to the global UndoTypes-object.\n\t\t * @param {String} type The event this UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. Must have the properties \"undo\", \"redo\" and \"on\". Can have the property \"condition\".\n\t\t * @return {undefined}\n\t\t */\n\t\t\"addUndoType\": function (type, fns) {\n\t\t\tmanipulateUndoType(0, type, fns, UndoTypes);\n\t\t},\n\t\t/**\n\t\t * Overwrite properties of an existing UndoType in the global UndoTypes-object.\n\t\t * @param {String} type The event the UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. It extends the existing object.\n\t\t * @return {undefined}\n\t\t */\n\t\t\"changeUndoType\": function (type, fns) {\n\t\t\tmanipulateUndoType(1, type, fns, UndoTypes)\n\t\t},\n\t\t/**\n\t\t * Remove one or more UndoTypes of this specific UndoManager-instance to fall back to the global UndoTypes.\n\t\t * @param {String|Array} type The event the UndoType that should be removed is made for. You can also pass an array of events.\n\t\t * @return {undefined}\n\t\t */\n\t\t\"removeUndoType\": function (type) {\n\t\t\tmanipulateUndoType(2, type, undefined, UndoTypes);\n\t\t}\n\t})\n\n\treturn Backbone.UndoManager = UndoManager;\n\n});\n","// Backbone.js 1.3.3\n\n// (c) 2010-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global);\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.3.3';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return _[method](this[attribute]);\n };\n case 2: return function(value) {\n return _[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return _[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return _[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return _[method].apply(_, args);\n };\n }\n };\n var addUnderscoreMethods = function(Class, methods, attribute) {\n _.each(methods, function(length, method) {\n if (_[method]) Class.prototype[method] = addMethod(length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n return internalOn(this, name, callback, context);\n };\n\n // Guard the `listening` argument from the public API.\n var internalOn = function(obj, name, callback, context, listening) {\n obj._events = eventsApi(onApi, obj._events || {}, name, callback, {\n context: context,\n ctx: obj,\n listening: listening\n });\n\n if (listening) {\n var listeners = obj._listeners || (obj._listeners = {});\n listeners[listening.id] = listening;\n }\n\n return obj;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n var thisId = this._listenId || (this._listenId = _.uniqueId('l'));\n listening = listeningTo[id] = {obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0};\n }\n\n // Bind callbacks on obj, and keep track of them on listening.\n internalOn(obj, name, callback, this, listening);\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n }\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var i = 0, listening;\n var context = options.context, listeners = options.listeners;\n\n // Delete all events listeners and \"drop\" events.\n if (!name && !callback && !context) {\n var ids = _.keys(listeners);\n for (; i < ids.length; i++) {\n listening = listeners[ids[i]];\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n return;\n }\n\n var names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Replace events if there are any remaining. Otherwise, clean up.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n listening = handler.listening;\n if (listening && --listening.count === 0) {\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n }\n }\n\n // Update tail event if the list has any events. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.off, this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.stopListening, this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) this.id = this.get(this.idAttribute);\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n }\n return _.size(changed) ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Model#attributes`.\n addUnderscoreMethods(Model, modelMethods, 'attributes');\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(obj.attributes || obj)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = _.bind(comparator, this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) collection.add(m, callbackOpts);\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs) {\n return attrs[this.model.prototype.idAttribute || 'id'];\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n var model = new this.model(attrs, options);\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'change') {\n var prevId = this.modelId(model.previousAttributes());\n var id = this.modelId(model.attributes);\n if (prevId !== id) {\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n }\n this.trigger.apply(this, arguments);\n }\n\n });\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n addUnderscoreMethods(Collection, collectionMethods, 'models');\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], _.bind(method, this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = _.bind(this.checkUrl, this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Don't include a trailing slash on the root.\n var rootPath = this.root;\n if (fragment === '' || fragment.charAt(0) === '?') {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the hash and decode for matching.\n fragment = this.decodeFragment(fragment.replace(pathStripper, ''));\n\n if (this.fragment === fragment) return;\n this.fragment = fragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n return Backbone;\n});\n","(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"codemirror/lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"codemirror/lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\n CodeMirror.extendMode(\"css\", {\n commentStart: \"/*\",\n commentEnd: \"*/\",\n newlineAfterToken: function(_type, content) {\n return /^[;{}]$/.test(content);\n }\n });\n\n CodeMirror.extendMode(\"javascript\", {\n commentStart: \"/*\",\n commentEnd: \"*/\",\n // FIXME semicolons inside of for\n newlineAfterToken: function(_type, content, textAfter, state) {\n if (this.jsonMode) {\n return /^[\\[,{]$/.test(content) || /^}/.test(textAfter);\n } else {\n if (content == \";\" && state.lexical && state.lexical.type == \")\") return false;\n return /^[;{}]$/.test(content) && !/^;/.test(textAfter);\n }\n }\n });\n\n var inlineElements = /^(a|abbr|acronym|area|base|bdo|big|br|button|caption|cite|code|col|colgroup|dd|del|dfn|em|frame|hr|iframe|img|input|ins|kbd|label|legend|link|map|object|optgroup|option|param|q|samp|script|select|small|span|strong|sub|sup|textarea|tt|var)$/;\n\n CodeMirror.extendMode(\"xml\", {\n commentStart: \"\",\n newlineAfterToken: function(type, content, textAfter, state) {\n var inline = false;\n if (this.configuration == \"html\")\n inline = state.context ? inlineElements.test(state.context.tagName) : false;\n return !inline && ((type == \"tag\" && />$/.test(content) && state.context) ||\n /^ -1 && endIndex > -1 && endIndex > startIndex) {\n // Take string till comment start\n selText = selText.substr(0, startIndex) +\n // From comment start till comment end\n selText.substring(startIndex + curMode.commentStart.length, endIndex) +\n // From comment end till string end\n selText.substr(endIndex + curMode.commentEnd.length);\n }\n cm.replaceRange(selText, from, to);\n }\n });\n });\n\n // Applies automatic mode-aware indentation to the specified range\n CodeMirror.defineExtension(\"autoIndentRange\", function (from, to) {\n var cmInstance = this;\n this.operation(function () {\n for (var i = from.line; i <= to.line; i++) {\n cmInstance.indentLine(i, \"smart\");\n }\n });\n });\n\n // Applies automatic formatting to the specified range\n CodeMirror.defineExtension(\"autoFormatRange\", function (from, to) {\n var cm = this;\n var outer = cm.getMode(), text = cm.getRange(from, to).split(\"\\n\");\n var state = CodeMirror.copyState(outer, cm.getTokenAt(from).state);\n var tabSize = cm.getOption(\"tabSize\");\n\n var out = \"\", lines = 0, atSol = from.ch === 0;\n function newline() {\n out += \"\\n\";\n atSol = true;\n ++lines;\n }\n\n for (var i = 0; i < text.length; ++i) {\n var stream = new CodeMirror.StringStream(text[i], tabSize);\n while (!stream.eol()) {\n var inner = CodeMirror.innerMode(outer, state);\n var style = outer.token(stream, state), cur = stream.current();\n stream.start = stream.pos;\n if (!atSol || /\\S/.test(cur)) {\n out += cur;\n atSol = false;\n }\n if (!atSol && inner.mode.newlineAfterToken &&\n inner.mode.newlineAfterToken(style, cur, stream.string.slice(stream.pos) || text[i+1] || \"\", inner.state))\n newline();\n }\n if (!stream.pos && outer.blankLine) outer.blankLine(state);\n if (!atSol && i < text.length - 1) newline();\n }\n\n cm.operation(function () {\n cm.replaceRange(out, from, to);\n for (var cur = from.line + 1, end = from.line + lines; cur <= end; ++cur)\n cm.indentLine(cur, \"smart\");\n cm.setSelection(from, cm.getCursor(false));\n });\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n { height += widgetHeight(lineObj.widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (collapsed || cm.options.showCursorWhenSelecting)\n { drawSelectionCursor(cm, range.head, curFragment); }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n if (charPos.right - charPos.left > 0) {\n cursor.style.width = (charPos.right - charPos.left) + \"px\";\n }\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.63.0\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\", \"button-bevel\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-controls-background\", \"media-current-time-display\",\n \"media-fullscreen-button\", \"media-mute-button\", \"media-play-button\",\n \"media-return-to-realtime-button\", \"media-rewind-button\",\n \"media-seek-back-button\", \"media-seek-forward-button\", \"media-slider\",\n \"media-sliderthumb\", \"media-time-remaining-display\", \"media-volume-slider\",\n \"media-volume-slider-container\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\", \"menulist-text\",\n \"menulist-textfield\", \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\",\n \"repeating-radial-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\s*\" + tagName + \"\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag,\n allowMissingTagName: parserConfig.allowMissingTagName,\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","import { isString, isElement } from 'underscore';\nimport { createId, deepMerge, isDef } from 'utils/mixins';\n\nexport default class ModuleLegacy {\n getConfig(name) {\n return this.__getConfig(name);\n }\n\n getProjectData(data) {\n const obj = {};\n const key = this.storageKey;\n if (key) {\n obj[key] = data || this.getAll();\n }\n return obj;\n }\n\n loadProjectData(data = {}, { all, onResult, reset } = {}) {\n const key = this.storageKey;\n const opts = { action: 'load' };\n const coll = all || this.getAll();\n let result = data[key];\n\n if (typeof result == 'string') {\n try {\n result = JSON.parse(result);\n } catch (err) {\n this.__logWarn('Data parsing failed', { input: result });\n }\n }\n\n reset && result && coll.reset(null, opts);\n\n if (onResult) {\n result && onResult(result, opts);\n } else if (result && isDef(result.length)) {\n coll.reset(result, opts);\n }\n\n return result;\n }\n\n clear(opts = {}) {\n const { all } = this;\n all && all.reset(null, opts);\n return this;\n }\n\n __getConfig(name) {\n const res = this.config || {};\n return name ? res[name] : res;\n }\n\n getAll(opts = {}) {\n return this.all ? (opts.array ? [...this.all.models] : this.all) : [];\n }\n\n getAllMap() {\n return this.getAll().reduce((acc, i) => {\n acc[i.get(i.idAttribute)] = i;\n return acc;\n }, {});\n }\n\n __initConfig(def = {}, conf = {}) {\n this.config = deepMerge(def, conf);\n this.em = this.config.em;\n this.cls = [];\n }\n\n __initListen(opts = {}) {\n const { all, em, events } = this;\n all &&\n em &&\n all\n .on('add', (m, c, o) => em.trigger(events.add, m, o))\n .on('remove', (m, c, o) => em.trigger(events.remove, m, o))\n .on('change', (p, c) => em.trigger(events.update, p, p.changedAttributes(), c))\n .on('all', this.__catchAllEvent, this);\n // Register collections\n this.cls = [all].concat(opts.collections || []);\n // Propagate events\n (opts.propagate || []).forEach(({ entity, event }) => {\n entity.on('all', (ev, model, coll, opts) => {\n const options = opts || coll;\n const opt = { event: ev, ...options };\n [em, all].map(md => md.trigger(event, model, opt));\n });\n });\n }\n\n __remove(model, opts = {}) {\n const { em } = this;\n const md = isString(model) ? this.get(model) : model;\n const rm = () => {\n md && this.all.remove(md, opts);\n return md;\n };\n !opts.silent && em && em.trigger(this.events.removeBefore, md, rm, opts);\n return !opts.abort && rm();\n }\n\n __catchAllEvent(event, model, coll, opts) {\n const { em, events } = this;\n const options = opts || coll;\n em && events.all && em.trigger(events.all, { event, model, options });\n this.__onAllEvent();\n }\n\n __appendTo() {\n const elTo = this.getConfig().appendTo;\n\n if (elTo) {\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\n if (!el) return this.__logWarn('\"appendTo\" element not found');\n el.appendChild(this.render());\n }\n }\n\n __onAllEvent() {}\n\n __logWarn(str, opts) {\n this.em.logWarning(`[${this.name}]: ${str}`, opts);\n }\n\n _createId(len = 16) {\n const all = this.getAll();\n const ln = all.length + len;\n const allMap = this.getAllMap();\n let id;\n\n do {\n id = createId(ln);\n } while (allMap[id]);\n\n return id;\n }\n\n __listenAdd(model, event) {\n model.on('add', (m, c, o) => this.em.trigger(event, m, o));\n }\n\n __listenRemove(model, event) {\n model.on('remove', (m, c, o) => this.em.trigger(event, m, o));\n }\n\n __listenUpdate(model, event) {\n model.on('change', (p, c) => this.em.trigger(event, p, p.changedAttributes(), c));\n }\n\n __destroy() {\n this.cls.forEach(coll => {\n coll.stopListening();\n coll.reset();\n });\n this.em = 0;\n this.config = 0;\n this.view?.remove();\n this.view = 0;\n }\n}\n","export default {\n // Default assets\n // eg. [\n // 'https://...image1.png',\n // 'https://...image2.png',\n // {type: 'image', src: 'https://...image3.png', someOtherCustomProp: 1},\n // ..\n // ]\n assets: [],\n\n // Content to add where there is no assets to show\n // eg. 'No assets here, drag to upload'\n noAssets: '',\n\n // Style prefix\n stylePrefix: 'am-',\n\n // Upload endpoint, set `false` to disable upload\n // upload: 'https://endpoint/upload/assets',\n // upload: false,\n upload: 0,\n\n // The name used in POST to pass uploaded files\n uploadName: 'files',\n\n // Custom headers to pass with the upload request\n headers: {},\n\n // Custom parameters to pass with the upload request, eg. csrf token\n params: {},\n\n // The credentials setting for the upload request, eg. 'include', 'omit'\n credentials: 'include',\n\n // Allow uploading multiple files per request.\n // If disabled filename will not have '[]' appended\n multiUpload: true,\n\n // If true, tries to add automatically uploaded assets.\n // To make it work the server should respond with a JSON containing assets\n // in a data key, eg:\n // {\n // data: [\n // 'https://.../image.png',\n // ...\n // {src: 'https://.../image2.png'},\n // ...\n // ]\n // }\n autoAdd: true,\n\n // To upload your assets, the module uses Fetch API, with this option you\n // overwrite it with something else.\n // It should return a Promise\n // @example\n // customFetch: (url, options) => axios(url, { data: options.body }),\n customFetch: null,\n\n // Custom uploadFile function.\n // Differently from the `customFetch` option, this gives a total control\n // over the uploading process, but you also have to emit all `asset:upload:*` events\n // by yourself (if you need to use them somewhere)\n // @example\n // uploadFile: (e) => {\n // var files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\n // // ...send somewhere\n // }\n uploadFile: null,\n\n // In the absence of 'uploadFile' or 'upload' assets will be embedded as Base64\n embedAsBase64: true,\n\n // Handle the image url submit from the built-in 'Add image' form\n // @example\n // handleAdd: (textFromInput) => {\n // // some check...\n // editor.AssetManager.add(textFromInput);\n // }\n handleAdd: null,\n\n // Method called before upload, on return false upload is canceled.\n // @example\n // beforeUpload: (files) => {\n // // logic...\n // var stopUpload = true;\n // if(stopUpload) return false;\n // }\n beforeUpload: null,\n\n // Toggles visiblity of assets url input\n showUrlInput: true,\n\n // Avoid rendering the default asset manager.\n custom: false,\n\n // WARNING: all the options below are considered DEPRECATED.\n // ---------------------------------------------------------------\n\n // Enable an upload dropzone on the entire editor (not document) when dragging\n // files over it\n // If active the dropzone disable/hide the upload dropzone in asset modal,\n // otherwise you will get double drops (#507)\n dropzone: false,\n\n // Open the asset manager once files are been dropped via the dropzone\n openAssetsOnDrop: 1,\n\n // Any dropzone content to append inside dropzone element\n dropzoneContent: '',\n};\n","import { result } from 'underscore';\nimport { Model } from '../../common';\n\n/**\n * @property {String} type Asset type, eg. `'image'`.\n * @property {String} src Asset URL, eg. `'https://.../image.png'`.\n *\n * @module docsjs.Asset\n */\nexport default class Asset extends Model {\n defaults() {\n return {\n type: '',\n src: '',\n };\n }\n\n /**\n * Get asset type.\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png', type: 'image' }\n * asset.getType(); // -> 'image'\n * */\n getType() {\n return this.get('type');\n }\n\n /**\n * Get asset URL.\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png' }\n * asset.getSrc(); // -> 'https://.../image.png'\n * */\n getSrc() {\n return this.get('src');\n }\n\n /**\n * Get filename of the asset (based on `src`).\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png' }\n * asset.getFilename(); // -> 'image.png'\n * // Asset: { src: 'https://.../image' }\n * asset.getFilename(); // -> 'image'\n * */\n getFilename() {\n return this.get('src').split('/').pop().split('?').shift();\n }\n\n /**\n * Get extension of the asset (based on `src`).\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png' }\n * asset.getExtension(); // -> 'png'\n * // Asset: { src: 'https://.../image' }\n * asset.getExtension(); // -> ''\n * */\n getExtension() {\n return this.getFilename().split('.').pop();\n }\n}\n\nAsset.prototype.idAttribute = 'src';\n\nAsset.getDefaults = function () {\n return result(this.prototype, 'defaults');\n};\n","import Asset from './Asset';\n\nexport default class AssetImage extends Asset {\n defaults() {\n return {\n ...Asset.getDefaults(),\n type: 'image',\n unitDim: 'px',\n height: 0,\n width: 0,\n };\n }\n}\n","import { View } from '../../common';\nimport { clone } from 'underscore';\n\nexport default class AssetView extends View {\n initialize(o = {}) {\n this.options = o;\n this.collection = o.collection;\n const config = o.config || {};\n this.config = config;\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.em = config.em;\n this.className = this.pfx + 'asset';\n this.listenTo(this.model, 'destroy remove', this.remove);\n this.model.view = this;\n const init = this.init && this.init.bind(this);\n init && init(o);\n }\n\n __getBhv() {\n const { em } = this;\n const am = em && em.get('AssetManager');\n return (am && am.__getBehaviour()) || {};\n }\n\n template() {\n const pfx = this.pfx;\n return `\n
\n ${this.getPreview()}\n
\n
\n ${this.getInfo()}\n
\n
\n ⨯\n
\n `;\n }\n\n /**\n * Update target if exists\n * @param {Model} target\n * @private\n * */\n updateTarget(target) {\n if (target && target.set) {\n target.set('attributes', clone(target.get('attributes')));\n target.set('src', this.model.get('src'));\n }\n }\n\n getPreview() {\n return '';\n }\n\n getInfo() {\n return '';\n }\n\n render() {\n const el = this.el;\n el.innerHTML = this.template(this, this.model);\n el.className = this.className;\n return this;\n }\n}\n","import { isFunction } from 'underscore';\nimport AssetView from './AssetView';\nimport html from '../../utils/html';\n\nexport default class AssetImageView extends AssetView {\n getPreview() {\n const { pfx, ppfx, model } = this;\n const src = model.get('src');\n return html`\n
\n
\n `;\n }\n\n getInfo() {\n const { pfx, model } = this;\n let name = model.get('name');\n let width = model.get('width');\n let height = model.get('height');\n let unit = model.get('unitDim');\n let dim = width && height ? `${width}x${height}${unit}` : '';\n name = name || model.getFilename();\n return html`\n
${name}
\n
${dim}
\n `;\n }\n\n init(o) {\n const pfx = this.pfx;\n this.className += ` ${pfx}asset-image`;\n }\n\n /**\n * Triggered when the asset is clicked\n * @private\n * */\n onClick() {\n const { model, pfx } = this;\n const { select } = this.__getBhv();\n const { onClick } = this.config;\n const coll = this.collection;\n coll.trigger('deselectAll');\n this.$el.addClass(pfx + 'highlight');\n\n if (isFunction(select)) {\n select(model, false);\n } else if (isFunction(onClick)) {\n onClick(model);\n } else {\n this.updateTarget(coll.target);\n }\n }\n\n /**\n * Triggered when the asset is double clicked\n * @private\n * */\n onDblClick() {\n const { em, model } = this;\n const { select } = this.__getBhv();\n const { onDblClick } = this.config;\n const { target, onSelect } = this.collection;\n\n if (isFunction(select)) {\n select(model, true);\n } else if (isFunction(onDblClick)) {\n onDblClick(model);\n } else {\n this.updateTarget(target);\n em && em.get('Modal').close();\n }\n isFunction(onSelect) && onSelect(model);\n }\n\n /**\n * Remove asset from collection\n * @private\n * */\n onRemove(e) {\n e.stopImmediatePropagation();\n this.model.collection.remove(this.model);\n }\n}\n\nAssetImageView.prototype.events = {\n 'click [data-toggle=asset-remove]': 'onRemove',\n click: 'onClick',\n dblclick: 'onDblClick',\n};\n","import { Collection } from '../../common';\nimport AssetImage from './AssetImage';\nimport AssetImageView from './../view/AssetImageView';\nimport TypeableCollection from '../../domain_abstract/model/TypeableCollection';\n\nexport default class Assets extends Collection.extend(TypeableCollection) {}\n\nAssets.prototype.types = [\n {\n id: 'image',\n model: AssetImage,\n view: AssetImageView,\n isType(value) {\n if (typeof value == 'string') {\n return {\n type: 'image',\n src: value,\n };\n }\n return value;\n },\n },\n];\n","import { View } from '../../common';\n\nexport default class AssetsView extends View {\n template({ pfx, ppfx, em }) {\n let form = '';\n if (this.config.showUrlInput) {\n form = `\n
\n
\n \n
\n \n
\n
\n `;\n }\n\n return `\n
\n
\n ${form}\n
\n
\n
\n
\n `;\n }\n\n initialize(o) {\n this.options = o;\n this.config = o.config;\n this.pfx = this.config.stylePrefix || '';\n this.ppfx = this.config.pStylePrefix || '';\n this.em = this.config.em;\n const coll = this.collection;\n this.listenTo(coll, 'reset', this.renderAssets);\n this.listenTo(coll, 'add', this.addToAsset);\n this.listenTo(coll, 'remove', this.removedAsset);\n this.listenTo(coll, 'deselectAll', this.deselectAll);\n }\n\n /**\n * Add new asset to the collection via string\n * @param {Event} e Event object\n * @return {this}\n * @private\n */\n handleSubmit(e) {\n e.preventDefault();\n const input = this.getAddInput();\n const url = input && input.value.trim();\n const handleAdd = this.config.handleAdd;\n\n if (!url) {\n return;\n }\n\n input.value = '';\n this.getAssetsEl().scrollTop = 0;\n\n if (handleAdd) {\n handleAdd.bind(this)(url);\n } else {\n this.options.globalCollection.add(url, { at: 0 });\n }\n }\n\n /**\n * Returns assets element\n * @return {HTMLElement}\n * @private\n */\n getAssetsEl() {\n //if(!this.assets) // Not able to cache as after the rerender it losses the ref\n return this.el.querySelector(`.${this.pfx}assets`);\n }\n\n /**\n * Returns input url element\n * @return {HTMLElement}\n * @private\n */\n getAddInput() {\n if (!this.inputUrl || !this.inputUrl.value) this.inputUrl = this.el.querySelector(`.${this.pfx}add-asset input`);\n return this.inputUrl;\n }\n\n /**\n * Triggered when an asset is removed\n * @param {Asset} model Removed asset\n * @private\n */\n removedAsset(model) {\n if (!this.collection.length) {\n this.toggleNoAssets();\n }\n }\n\n /**\n * Add asset to collection\n * @private\n * */\n addToAsset(model) {\n if (this.collection.length == 1) {\n this.toggleNoAssets(1);\n }\n this.addAsset(model);\n }\n\n /**\n * Add new asset to collection\n * @param Object Model\n * @param Object Fragment collection\n * @return Object Object created\n * @private\n * */\n addAsset(model, fragmentEl = null) {\n const fragment = fragmentEl;\n const collection = this.collection;\n const config = this.config;\n const rendered = new model.typeView({\n model,\n collection,\n config,\n }).render().el;\n\n if (fragment) {\n fragment.appendChild(rendered);\n } else {\n const assetsEl = this.getAssetsEl();\n if (assetsEl) {\n assetsEl.insertBefore(rendered, assetsEl.firstChild);\n }\n }\n\n return rendered;\n }\n\n /**\n * Checks if to show noAssets\n * @param {Boolean} hide\n * @private\n */\n toggleNoAssets(hide) {\n const assetsEl = this.$el.find(`.${this.pfx}assets`);\n\n if (hide) {\n assetsEl.empty();\n } else {\n const noAssets = this.config.noAssets;\n noAssets && assetsEl.append(noAssets);\n }\n }\n\n /**\n * Deselect all assets\n * @private\n * */\n deselectAll() {\n const pfx = this.pfx;\n this.$el.find(`.${pfx}highlight`).removeClass(`${pfx}highlight`);\n }\n\n renderAssets() {\n const fragment = document.createDocumentFragment();\n const assets = this.$el.find(`.${this.pfx}assets`);\n assets.empty();\n this.toggleNoAssets(this.collection.length);\n this.collection.each(model => this.addAsset(model, fragment));\n assets.append(fragment);\n }\n\n render() {\n const fuRendered = this.options.fu.render().el;\n this.$el.empty();\n this.$el.append(fuRendered).append(this.template(this));\n this.el.className = `${this.ppfx}asset-manager`;\n this.renderAssets();\n return this;\n }\n}\n\nAssetsView.prototype.events = {\n submit: 'handleSubmit',\n};\n","import { View } from '../../common';\nimport fetch from '../../utils/fetch';\nimport html from '../../utils/html';\n\nexport default class FileUploaderView extends View {\n template({ pfx, title, uploadId, disabled, multiUpload }) {\n return html`\n
\n
${title}
\n \n
\n \n `;\n }\n\n initialize(opts = {}) {\n this.options = opts;\n const c = opts.config || {};\n this.module = opts.module;\n this.config = c;\n this.em = this.config.em;\n this.pfx = c.stylePrefix || '';\n this.ppfx = c.pStylePrefix || '';\n this.target = this.options.globalCollection || {};\n this.uploadId = this.pfx + 'uploadFile';\n this.disabled = c.disableUpload !== undefined ? c.disableUpload : !c.upload && !c.embedAsBase64;\n this.multiUpload = c.multiUpload !== undefined ? c.multiUpload : true;\n this.events = {\n [`change #${this.uploadId}`]: 'uploadFile',\n };\n let uploadFile = c.uploadFile;\n\n if (uploadFile) {\n this.uploadFile = uploadFile.bind(this);\n } else if (!c.upload && c.embedAsBase64) {\n this.uploadFile = this.constructor.embedAsBase64;\n }\n\n this.delegateEvents();\n }\n\n /**\n * Triggered before the upload is started\n * @private\n */\n onUploadStart() {\n const { module } = this;\n module && module.__propEv('asset:upload:start');\n }\n\n /**\n * Triggered after the upload is ended\n * @param {Object|string} res End result\n * @private\n */\n onUploadEnd(res) {\n const { $el, module } = this;\n module && module.__propEv('asset:upload:end', res);\n const input = $el.find('input');\n input && input.val('');\n }\n\n /**\n * Triggered on upload error\n * @param {Object} err Error\n * @private\n */\n onUploadError(err) {\n const { module } = this;\n console.error(err);\n this.onUploadEnd(err);\n module && module.__propEv('asset:upload:error', err);\n }\n\n /**\n * Triggered on upload response\n * @param {string} text Response text\n * @private\n */\n onUploadResponse(text, clb) {\n const { module, config, target } = this;\n let json;\n try {\n json = typeof text === 'string' ? JSON.parse(text) : text;\n } catch (e) {\n json = text;\n }\n\n module && module.__propEv('asset:upload:response', json);\n\n if (config.autoAdd && target) {\n target.add(json.data, { at: 0 });\n }\n\n this.onUploadEnd(text);\n clb && clb(json);\n }\n\n /**\n * Upload files\n * @param {Object} e Event\n * @return {Promise}\n * @private\n * */\n uploadFile(e, clb) {\n const files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\n const { config } = this;\n const { beforeUpload } = config;\n\n const beforeUploadResponse = beforeUpload && beforeUpload(files);\n if (beforeUploadResponse === false) return;\n\n const body = new FormData();\n const { params, customFetch } = config;\n\n for (let param in params) {\n body.append(param, params[param]);\n }\n\n if (this.multiUpload) {\n for (let i = 0; i < files.length; i++) {\n body.append(`${config.uploadName}[]`, files[i]);\n }\n } else if (files.length) {\n body.append(config.uploadName, files[0]);\n }\n\n var target = this.target;\n const url = config.upload;\n const headers = config.headers;\n const reqHead = 'X-Requested-With';\n\n if (typeof headers[reqHead] == 'undefined') {\n headers[reqHead] = 'XMLHttpRequest';\n }\n\n if (url) {\n this.onUploadStart();\n const fetchOpts = {\n method: 'post',\n credentials: config.credentials || 'include',\n headers,\n body,\n };\n const fetchResult = customFetch\n ? customFetch(url, fetchOpts)\n : fetch(url, fetchOpts).then(res =>\n ((res.status / 200) | 0) == 1 ? res.text() : res.text().then(text => Promise.reject(text))\n );\n return fetchResult.then(text => this.onUploadResponse(text, clb)).catch(err => this.onUploadError(err));\n }\n }\n\n /**\n * Make input file droppable\n * @private\n * */\n initDrop() {\n var that = this;\n if (!this.uploadForm) {\n this.uploadForm = this.$el.find('form').get(0);\n if ('draggable' in this.uploadForm) {\n var uploadFile = this.uploadFile;\n this.uploadForm.ondragover = function () {\n this.className = that.pfx + 'hover';\n return false;\n };\n this.uploadForm.ondragleave = function () {\n this.className = '';\n return false;\n };\n this.uploadForm.ondrop = function (e) {\n this.className = '';\n e.preventDefault();\n that.uploadFile(e);\n return;\n };\n }\n }\n }\n\n initDropzone(ev) {\n let addedCls = 0;\n const c = this.config;\n const em = ev.model;\n const edEl = ev.el;\n const editor = em.get('Editor');\n const container = em.get('Config').el;\n const frameEl = em.get('Canvas').getBody();\n const ppfx = this.ppfx;\n const updatedCls = `${ppfx}dropzone-active`;\n const dropzoneCls = `${ppfx}dropzone`;\n const cleanEditorElCls = () => {\n edEl.className = edEl.className.replace(updatedCls, '').trim();\n addedCls = 0;\n };\n const onDragOver = () => {\n if (!addedCls) {\n edEl.className += ` ${updatedCls}`;\n addedCls = 1;\n }\n return false;\n };\n const onDragLeave = () => {\n cleanEditorElCls();\n return false;\n };\n const onDrop = e => {\n cleanEditorElCls();\n e.preventDefault();\n e.stopPropagation();\n this.uploadFile(e);\n\n if (c.openAssetsOnDrop && editor) {\n const target = editor.getSelected();\n editor.runCommand('open-assets', {\n target,\n onSelect() {\n editor.Modal.close();\n editor.AssetManager.setTarget(null);\n },\n });\n }\n\n return false;\n };\n\n ev.$el.append(`
${c.dropzoneContent}
`);\n cleanEditorElCls();\n\n if ('draggable' in edEl) {\n [edEl, frameEl].forEach(item => {\n item.ondragover = onDragOver;\n item.ondragleave = onDragLeave;\n item.ondrop = onDrop;\n });\n }\n }\n\n render() {\n const { $el, pfx, em } = this;\n $el.html(\n this.template({\n title: em && em.t('assetManager.uploadTitle'),\n uploadId: this.uploadId,\n disabled: this.disabled,\n multiUpload: this.multiUpload,\n pfx,\n })\n );\n this.initDrop();\n $el.attr('class', pfx + 'file-uploader');\n return this;\n }\n}\n\nFileUploaderView.embedAsBase64 = function (e, clb) {\n // List files dropped\n const files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\n const response = { data: [] };\n\n // Unlikely, widely supported now\n if (!FileReader) {\n this.onUploadError(new Error('Unsupported platform, FileReader is not defined'));\n return;\n }\n\n const promises = [];\n const mimeTypeMatcher = /^(.+)\\/(.+)$/;\n\n for (const file of files) {\n // For each file a reader (to read the base64 URL)\n // and a promise (to track and merge results and errors)\n const promise = new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('load', event => {\n let type;\n const name = file.name;\n\n // Try to find the MIME type of the file.\n const match = mimeTypeMatcher.exec(file.type);\n if (match) {\n type = match[1]; // The first part in the MIME, \"image\" in image/png\n } else {\n type = file.type;\n }\n\n /*\n // Show local video files, http://jsfiddle.net/dsbonev/cCCZ2/embedded/result,js,html,css/\n var URL = window.URL || window.webkitURL\n var file = this.files[0]\n var type = file.type\n var videoNode = document.createElement('video');\n var canPlay = videoNode.canPlayType(type) // can use also for 'audio' types\n if (canPlay === '') canPlay = 'no'\n var message = 'Can play type \"' + type + '\": ' + canPlay\n var isError = canPlay === 'no'\n displayMessage(message, isError)\n\n if (isError) {\n return\n }\n\n var fileURL = URL.createObjectURL(file)\n videoNode.src = fileURL\n */\n\n // If it's an image, try to find its size\n if (type === 'image') {\n const data = {\n src: reader.result,\n name,\n type,\n height: 0,\n width: 0,\n };\n\n const image = new Image();\n image.addEventListener('error', error => {\n reject(error);\n });\n image.addEventListener('load', () => {\n data.height = image.height;\n data.width = image.width;\n resolve(data);\n });\n image.src = data.src;\n } else if (type) {\n // Not an image, but has a type\n resolve({\n src: reader.result,\n name,\n type,\n });\n } else {\n // No type found, resolve with the URL only\n resolve(reader.result);\n }\n });\n reader.addEventListener('error', error => {\n reject(error);\n });\n reader.addEventListener('abort', error => {\n reject('Aborted');\n });\n\n reader.readAsDataURL(file);\n });\n\n promises.push(promise);\n }\n\n Promise.all(promises).then(\n data => {\n response.data = data;\n this.onUploadResponse(response, clb);\n },\n error => {\n this.onUploadError(error);\n }\n );\n};\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/asset_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * assetManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const assetManager = editor.AssetManager;\n * ```\n *\n * ## Available Events\n * * `asset:open` - Asset Manager opened.\n * * `asset:close` - Asset Manager closed.\n * * `asset:add` - Asset added. The [Asset] is passed as an argument to the callback.\n * * `asset:remove` - Asset removed. The [Asset] is passed as an argument to the callback.\n * * `asset:update` - Asset updated. The updated [Asset] and the object containing changes are passed as arguments to the callback.\n * * `asset:upload:start` - Before the upload is started.\n * * `asset:upload:end` - After the upload is ended.\n * * `asset:upload:error` - On any error in upload, passes the error as an argument.\n * * `asset:upload:response` - On upload response, passes the result as an argument.\n * * `asset` - Catch-all event for all the events mentioned above. An object containing all the available data about the triggered event is passed as an argument to the callback.\n * * `asset:custom` - Event for handling custom Asset Manager UI.\n *\n * ## Methods\n * * [open](#open)\n * * [close](#close)\n * * [isOpen](#isopen)\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getall)\n * * [getAllVisible](#getallvisible)\n * * [remove](#remove)\n * * [getContainer](#getcontainer)\n *\n * [Asset]: asset.html\n *\n * @module AssetManager\n */\n\nimport { debounce, isFunction } from 'underscore';\nimport { Module } from '../common';\nimport defaults from './config/config';\nimport Asset from './model/Assets';\nimport Assets from './model/Assets';\nimport AssetsView from './view/AssetsView';\nimport FileUpload from './view/FileUploader';\n\nexport const evAll = 'asset';\nexport const evPfx = `${evAll}:`;\nexport const evSelect = `${evPfx}select`;\nexport const evUpdate = `${evPfx}update`;\nexport const evAdd = `${evPfx}add`;\nexport const evRemove = `${evPfx}remove`;\nexport const evRemoveBefore = `${evRemove}:before`;\nexport const evCustom = `${evPfx}custom`;\nexport const evOpen = `${evPfx}open`;\nexport const evClose = `${evPfx}close`;\nexport const evUpload = `${evPfx}upload`;\nexport const evUploadStart = `${evUpload}:start`;\nexport const evUploadEnd = `${evUpload}:end`;\nexport const evUploadError = `${evUpload}:error`;\nexport const evUploadRes = `${evUpload}:response`;\n\nexport default () => {\n let c = {};\n let assets, assetsVis, am, fu;\n const assetCmd = 'open-assets';\n\n return {\n ...Module,\n\n name: 'AssetManager',\n\n storageKey: 'assets',\n\n Asset,\n\n Assets,\n\n events: {\n all: evAll,\n select: evSelect,\n update: evUpdate,\n add: evAdd,\n remove: evRemove,\n removeBefore: evRemoveBefore,\n custom: evCustom,\n open: evOpen,\n close: evClose,\n uploadStart: evUploadStart,\n uploadEnd: evUploadEnd,\n uploadError: evUploadError,\n uploadResponse: evUploadRes,\n },\n\n init(config = {}) {\n c = { ...defaults, ...config };\n const ppfx = c.pStylePrefix;\n const { em } = c;\n this.config = c;\n this.em = em;\n\n if (ppfx) {\n c.stylePrefix = ppfx + c.stylePrefix;\n }\n\n // Global assets collection\n assets = new Assets([]);\n assetsVis = new Assets([]);\n this.all = assets;\n this.__initListen();\n\n // Setup the sync between the global and public collections\n assets.on('add', model => this.getAllVisible().add(model));\n assets.on('remove', model => this.getAllVisible().remove(model));\n\n return this;\n },\n\n __propEv(ev, ...data) {\n this.em.trigger(ev, ...data);\n this.getAll().trigger(ev, ...data);\n },\n\n __onAllEvent: debounce(function () {\n this.__trgCustom();\n }),\n\n __trgCustom() {\n const bhv = this.__getBehaviour();\n if (!bhv.container && !this.getConfig().custom.open) {\n return;\n }\n this.em.trigger(this.events.custom, this.__customData());\n },\n\n __customData() {\n const bhv = this.__getBehaviour();\n return {\n am: this,\n open: this.isOpen(),\n assets: this.getAll().models,\n types: bhv.types || [],\n container: bhv.container,\n close: () => this.close(),\n remove: (...args) => this.remove(...args),\n select: (asset, complete) => {\n const res = this.add(asset);\n isFunction(bhv.select) && bhv.select(res, complete);\n },\n // extra\n options: bhv.options || {},\n };\n },\n\n /**\n * Open the asset manager.\n * @param {Object} [options] Options for the asset manager.\n * @param {Array} [options.types=['image']] Types of assets to show.\n * @param {Function} [options.select] Type of operation to perform on asset selection. If not specified, nothing will happen.\n * @example\n * assetManager.open({\n * select(asset, complete) {\n * const selected = editor.getSelected();\n * if (selected && selected.is('image')) {\n * selected.addAttributes({ src: asset.getSrc() });\n * // The default AssetManager UI will trigger `select(asset, false)` on asset click\n * // and `select(asset, true)` on double-click\n * complete && assetManager.close();\n * }\n * }\n * });\n * // with your custom types (you should have assets with those types declared)\n * assetManager.open({ types: ['doc'], ... });\n */\n open(options = {}) {\n const cmd = this.em.get('Commands');\n cmd.run(assetCmd, {\n types: ['image'],\n select: () => {},\n ...options,\n });\n },\n\n /**\n * Close the asset manager.\n * @example\n * assetManager.close();\n */\n close() {\n const cmd = this.em.get('Commands');\n cmd.stop(assetCmd);\n },\n\n /**\n * Checks if the asset manager is open\n * @returns {Boolean}\n * @example\n * assetManager.isOpen(); // true | false\n */\n isOpen() {\n const cmd = this.em.get('Commands');\n return !!(cmd && cmd.isActive(assetCmd));\n },\n\n /**\n * Add new asset/s to the collection. URLs are supposed to be unique\n * @param {String|Object|Array|Array} asset URL strings or an objects representing the resource.\n * @param {Object} [opts] Options\n * @returns {[Asset]}\n * @example\n * // As strings\n * assetManager.add('http://img.jpg');\n * assetManager.add(['http://img.jpg', './path/to/img.png']);\n *\n * // Using objects you can indicate the type and other meta informations\n * assetManager.add({\n * // type: 'image',\t// image is default\n * \tsrc: 'http://img.jpg',\n * \theight: 300,\n *\twidth: 200,\n * });\n * assetManager.add([{ src: 'img2.jpg' }, { src: 'img2.png' }]);\n */\n add(asset, opts = {}) {\n // Put the model at the beginning\n if (typeof opts.at == 'undefined') {\n opts.at = 0;\n }\n\n return assets.add(asset, opts);\n },\n\n /**\n * Return asset by URL\n * @param {String} src URL of the asset\n * @returns {[Asset]|null}\n * @example\n * const asset = assetManager.get('http://img.jpg');\n */\n get(src) {\n return assets.where({ src })[0] || null;\n },\n\n /**\n * Return the global collection, containing all the assets\n * @returns {Collection<[Asset]>}\n */\n getAll() {\n return assets;\n },\n\n /**\n * Return the visible collection, which contains assets actually rendered\n * @returns {Collection<[Asset]>}\n */\n getAllVisible() {\n return assetsVis;\n },\n\n /**\n * Remove asset\n * @param {String|[Asset]} asset Asset or asset URL\n * @returns {[Asset]} Removed asset\n * @example\n * const removed = assetManager.remove('http://img.jpg');\n * // or by passing the Asset\n * const asset = assetManager.get('http://img.jpg');\n * assetManager.remove(asset);\n */\n remove(asset, opts) {\n return this.__remove(asset, opts);\n },\n\n store() {\n return this.getProjectData();\n },\n\n load(data) {\n return this.loadProjectData(data);\n },\n\n /**\n * Return the Asset Manager Container\n * @returns {HTMLElement}\n */\n getContainer() {\n const bhv = this.__getBehaviour();\n return bhv.container || (am && am.el);\n },\n\n /**\n * Get assets element container\n * @returns {HTMLElement}\n * @private\n */\n getAssetsEl() {\n return am.el.querySelector('[data-el=assets]');\n },\n\n /**\n * Render assets\n * @param {array} assets Assets to render, without the argument will render all global assets\n * @returns {HTMLElement}\n * @private\n * @example\n * // Render all assets\n * assetManager.render();\n *\n * // Render some of the assets\n * const assets = assetManager.getAll();\n * assetManager.render(assets.filter(\n * asset => asset.get('category') == 'cats'\n * ));\n */\n render(assts) {\n if (this.getConfig().custom) return;\n const toRender = assts || this.getAll().models;\n\n if (!am) {\n const obj = this.__viewParams();\n obj.fu = this.FileUploader();\n const el = am && am.el;\n am = new AssetsView({\n el,\n ...obj,\n });\n am.render();\n }\n\n assetsVis.reset(toRender);\n return this.getContainer();\n },\n\n __viewParams() {\n return {\n collection: assetsVis, // Collection visible in asset manager\n globalCollection: assets,\n config: c,\n module: this,\n };\n },\n\n /**\n * Add new type. If you want to get more about type definition we suggest to read the [module's page](/modules/Assets.html)\n * @param {string} id Type ID\n * @param {Object} definition Definition of the type. Each definition contains\n * `model` (business logic), `view` (presentation logic)\n * and `isType` function which recognize the type of the\n * passed entity\n * @private\n * @example\n * assetManager.addType('my-type', {\n * model: {},\n * view: {},\n * isType: (value) => {},\n * })\n */\n addType(id, definition) {\n this.getAll().addType(id, definition);\n },\n\n /**\n * Get type\n * @param {string} id Type ID\n * @returns {Object} Type definition\n * @private\n */\n getType(id) {\n return this.getAll().getType(id);\n },\n\n /**\n * Get types\n * @returns {Array}\n * @private\n */\n getTypes() {\n return this.getAll().getTypes();\n },\n\n //-------\n\n AssetsView() {\n return am;\n },\n\n FileUploader() {\n if (!fu) {\n fu = new FileUpload(this.__viewParams());\n }\n return fu;\n },\n\n onLoad() {\n this.getAll().reset(c.assets);\n const { em, events } = this;\n em.on(`run:${assetCmd}`, () => this.__propEv(events.open));\n em.on(`stop:${assetCmd}`, () => this.__propEv(events.close));\n },\n\n postRender(editorView) {\n c.dropzone && fu && fu.initDropzone(editorView);\n },\n\n /**\n * Set new target\n * @param\t{Object}\tm Model\n * @private\n * */\n setTarget(m) {\n assetsVis.target = m;\n },\n\n /**\n * Set callback after asset was selected\n * @param\t{Object}\tf Callback function\n * @private\n * */\n onSelect(f) {\n assetsVis.onSelect = f;\n },\n\n /**\n * Set callback to fire when the asset is clicked\n * @param {function} func\n * @private\n */\n onClick(func) {\n c.onClick = func;\n },\n\n /**\n * Set callback to fire when the asset is double clicked\n * @param {function} func\n * @private\n */\n onDblClick(func) {\n c.onDblClick = func;\n },\n\n __behaviour(opts = {}) {\n return (this._bhv = {\n ...(this._bhv || {}),\n ...opts,\n });\n },\n\n __getBehaviour(opts = {}) {\n return this._bhv || {};\n },\n\n destroy() {\n assets.stopListening();\n assetsVis.stopListening();\n assets.reset();\n assetsVis.reset();\n fu && fu.remove();\n am && am.remove();\n [assets, assetsVis, am, fu].forEach(i => (i = null));\n this._bhv = {};\n this.all = {};\n c = {};\n },\n };\n};\n","export default {\n // Specify the element to use as a container, string (query) or HTMLElement\n // With the empty value, nothing will be rendered\n appendTo: '',\n\n // Append blocks to canvas on click.\n // With the `true` value, it will try to append the block to the selected component.\n // If there is no selected component, the block will be appened to the wrapper.\n // You can also pass a function to this option, use it as a catch-all for all block\n // clicks and implement a custom logic for each block.\n // appendOnClick: (block, editor) => {\n // if (block.get('id') === 'some-id')\n // editor.getSelected().append(block.get('content'))\n // else\n // editor.getWrapper().append(block.get('content'))\n // }\n appendOnClick: false,\n\n // Default blocks\n blocks: [],\n\n // Avoid rendering the default block manager.\n custom: false,\n};\n","import { Model } from '../../common';\nimport { isFunction } from 'underscore';\n\n/**\n * @property {String} label Block label, eg. `My block`\n * @property {String|Object} content The content of the block. Might be an HTML string or a [Component Defintion](/modules/Components.html#component-definition)\n * @property {String} [media=''] HTML string for the media/icon of the block, eg. ` editor.getWrapper().append(block.get('content'))`\n * @property {Object} [attributes={}] Block attributes to apply in the view element\n *\n * @module docsjs.Block\n */\nexport default class Block extends Model {\n defaults() {\n return {\n label: '',\n content: '',\n media: '',\n category: '',\n activate: false,\n select: null,\n resetId: false,\n disable: false,\n onClick: null,\n attributes: {},\n };\n }\n\n /**\n * Get block id\n * @returns {String}\n */\n getId() {\n return this.id;\n }\n\n /**\n * Get block label\n * @returns {String}\n */\n getLabel() {\n return this.get('label');\n }\n\n /**\n * Get block media\n * @returns {String}\n */\n getMedia() {\n return this.get('media');\n }\n\n /**\n * Get block content\n * @returns {Object|String|Array}\n */\n getContent() {\n return this.get('content');\n }\n\n /**\n * Get block category label\n * @returns {String}\n */\n getCategoryLabel() {\n const ctg = this.get('category');\n return isFunction(ctg.get) ? ctg.get('label') : ctg.label ? ctg.label : ctg;\n }\n}\n","import { Collection } from '../../common';\nimport Block from './Block';\n\nexport default class Blocks extends Collection {}\n\nBlocks.prototype.model = Block;\n","import { Model } from '../../common';\n\nexport default class Category extends Model {\n defaults() {\n return {\n id: '',\n label: '',\n open: true,\n attributes: {},\n };\n }\n}\n","import { Collection } from '../../common';\nimport Category from './Category';\n\nexport default class Categories extends Collection {}\n\nCategories.prototype.model = Category;\n","import { isFunction } from 'underscore';\nimport { View } from '../../common';\nimport { on, off, hasDnd } from '../../utils/mixins';\n\nexport default class BlockView extends View {\n events() {\n return {\n click: 'handleClick',\n mousedown: 'startDrag',\n dragstart: 'handleDragStart',\n drag: 'handleDrag',\n dragend: 'handleDragEnd',\n };\n }\n\n initialize(o, config = {}) {\n const { model } = this;\n this.em = config.em;\n this.config = config;\n this.endDrag = this.endDrag.bind(this);\n this.ppfx = config.pStylePrefix || '';\n this.listenTo(model, 'destroy remove', this.remove);\n this.listenTo(model, 'change', this.render);\n }\n\n __getModule() {\n return this.em.get('BlockManager');\n }\n\n handleClick(ev) {\n const { config, model, em } = this;\n const onClick = model.get('onClick') || config.appendOnClick;\n em.trigger('block:click', model, ev);\n if (!onClick) {\n return;\n } else if (isFunction(onClick)) {\n return onClick(model, em.getEditor(), { event: ev });\n }\n const sorter = config.getSorter();\n const content = model.get('content');\n const selected = em.getSelected();\n sorter.setDropContent(content);\n let target, valid, insertAt;\n\n // If there is a selected component, try first to append\n // the block inside, otherwise, try to place it as a next sibling\n if (selected) {\n valid = sorter.validTarget(selected.getEl(), content);\n\n if (valid.valid) {\n target = selected;\n } else {\n const parent = selected.parent();\n valid = sorter.validTarget(parent.getEl(), content);\n if (valid.valid) {\n target = parent;\n insertAt = parent.components().indexOf(selected) + 1;\n }\n }\n }\n\n // If no target found yet, try to append the block to the wrapper\n if (!target) {\n const wrapper = em.getWrapper();\n valid = sorter.validTarget(wrapper.getEl(), content);\n if (valid.valid) target = wrapper;\n }\n\n const result = target && target.append(content, { at: insertAt })[0];\n result && em.setSelected(result, { scroll: 1 });\n }\n\n /**\n * Start block dragging\n * @private\n */\n startDrag(e) {\n const { config, em, model } = this;\n const disable = model.get('disable');\n //Right or middel click\n if (e.button !== 0 || !config.getSorter || this.el.draggable || disable) return;\n em.refreshCanvas();\n const sorter = config.getSorter();\n sorter.setDragHelper(this.el, e);\n sorter.setDropContent(this.model.get('content'));\n sorter.startSort(this.el);\n on(document, 'mouseup', this.endDrag);\n }\n\n handleDragStart(ev) {\n this.__getModule().__startDrag(this.model, ev);\n }\n\n handleDrag(ev) {\n this.__getModule().__drag(ev);\n }\n\n handleDragEnd() {\n this.__getModule().__endDrag();\n }\n\n /**\n * Drop block\n * @private\n */\n endDrag(e) {\n off(document, 'mouseup', this.endDrag);\n const sorter = this.config.getSorter();\n\n // After dropping the block in the canvas the mouseup event is not yet\n // triggerd on 'this.doc' and so clicking outside, the sorter, tries to move\n // things (throws false positives). As this method just need to drop away\n // the block helper I use the trick of 'moved = 0' to void those errors.\n sorter.moved = 0;\n sorter.endMove();\n }\n\n render() {\n const { em, el, $el, ppfx, model } = this;\n const disable = model.get('disable');\n const attr = model.get('attributes') || {};\n const cls = attr.class || '';\n const className = `${ppfx}block`;\n const label = (em && em.t(`blockManager.labels.${model.id}`)) || model.get('label');\n const render = model.get('render');\n const media = model.get('media');\n const clsAdd = disable ? `${className}--disable` : `${ppfx}four-color-h`;\n $el.attr(attr);\n el.className = `${cls} ${className} ${ppfx}one-bg ${clsAdd}`.trim();\n el.innerHTML = `\n ${media ? `
${media}
` : ''}\n
${label}
\n `;\n el.title = attr.title || el.textContent.trim();\n el.setAttribute('draggable', hasDnd(em) && !disable ? true : false);\n const result = render && render({ el, model, className, prefix: ppfx });\n if (result) el.innerHTML = result;\n return this;\n }\n}\n","import { View } from '../../common';\nimport html from '../../utils/html';\n\nexport default class CategoryView extends View {\n template({ pfx, label }) {\n return html`\n
\n \n ${label}\n
\n
\n `;\n }\n\n attributes() {\n return this.model.get('attributes');\n }\n\n initialize(o = {}, config = {}) {\n this.config = config;\n const pfx = config.pStylePrefix || '';\n this.em = config.em;\n this.pfx = pfx;\n this.caretR = 'fa fa-caret-right';\n this.caretD = 'fa fa-caret-down';\n this.iconClass = `${pfx}caret-icon`;\n this.activeClass = `${pfx}open`;\n this.className = `${pfx}block-category`;\n this.events = {};\n this.events[`click .${pfx}title`] = 'toggle';\n this.listenTo(this.model, 'change:open', this.updateVisibility);\n this.delegateEvents();\n this.model.view = this;\n }\n\n updateVisibility() {\n if (this.model.get('open')) this.open();\n else this.close();\n }\n\n open() {\n this.$el.addClass(this.activeClass);\n this.getIconEl().className = `${this.iconClass} ${this.caretD}`;\n this.getBlocksEl().style.display = '';\n }\n\n close() {\n this.$el.removeClass(this.activeClass);\n this.getIconEl().className = `${this.iconClass} ${this.caretR}`;\n this.getBlocksEl().style.display = 'none';\n }\n\n toggle() {\n var model = this.model;\n model.set('open', !model.get('open'));\n }\n\n getIconEl() {\n if (!this.iconEl) {\n this.iconEl = this.el.querySelector('.' + this.iconClass);\n }\n\n return this.iconEl;\n }\n\n getBlocksEl() {\n if (!this.blocksEl) {\n this.blocksEl = this.el.querySelector('.' + this.pfx + 'blocks-c');\n }\n\n return this.blocksEl;\n }\n\n append(el) {\n this.getBlocksEl().appendChild(el);\n }\n\n render() {\n const { em, el, $el, model, pfx } = this;\n const label = em.t(`blockManager.categories.${model.id}`) || model.get('label');\n el.innerHTML = this.template({ pfx, label });\n $el.addClass(this.className);\n $el.css({ order: model.get('order') });\n this.updateVisibility();\n\n return this;\n }\n}\n","import { isString, isObject, bindAll } from 'underscore';\nimport { View } from '../../common';\nimport BlockView from './BlockView';\nimport CategoryView from './CategoryView';\n\nexport default class BlocksView extends View {\n initialize(opts, config) {\n bindAll(this, 'getSorter', 'onDrag', 'onDrop', 'onMove');\n this.config = config || {};\n this.categories = opts.categories || '';\n this.renderedCategories = [];\n var ppfx = this.config.pStylePrefix || '';\n this.ppfx = ppfx;\n this.noCatClass = `${ppfx}blocks-no-cat`;\n this.blockContClass = `${ppfx}blocks-c`;\n this.catsClass = `${ppfx}block-categories`;\n const coll = this.collection;\n this.listenTo(coll, 'add', this.addTo);\n this.listenTo(coll, 'reset', this.render);\n this.em = this.config.em;\n this.tac = 'test-tac';\n this.grabbingCls = this.ppfx + 'grabbing';\n\n if (this.em) {\n this.config.getSorter = this.getSorter;\n this.canvas = this.em.get('Canvas');\n }\n }\n\n updateConfig(opts = {}) {\n this.config = {\n ...this.config,\n ...opts,\n };\n }\n\n /**\n * Get sorter\n * @private\n */\n getSorter() {\n if (!this.em) return;\n if (!this.sorter) {\n var utils = this.em.get('Utils');\n var canvas = this.canvas;\n this.sorter = new utils.Sorter({\n container: canvas.getBody(),\n placer: canvas.getPlacerEl(),\n containerSel: '*',\n itemSel: '*',\n pfx: this.ppfx,\n onStart: this.onDrag,\n onEndMove: this.onDrop,\n onMove: this.onMove,\n document: canvas.getFrameEl().contentDocument,\n direction: 'a',\n wmargin: 1,\n nested: 1,\n em: this.em,\n canvasRelative: 1,\n });\n }\n return this.sorter;\n }\n\n /**\n * Callback when block is on drag\n * @private\n */\n onDrag(e) {\n this.em.stopDefault();\n this.em.trigger('block:drag:start', e);\n }\n\n onMove(e) {\n this.em.trigger('block:drag:move', e);\n }\n\n /**\n * Callback when block is dropped\n * @private\n */\n onDrop(model) {\n const { em } = this;\n em.runDefault();\n\n if (model && model.get) {\n const oldActive = 'activeOnRender';\n\n if (model.get(oldActive)) {\n model.trigger('active');\n model.unset(oldActive);\n }\n\n em.trigger('block:drag:stop', model);\n }\n }\n\n /**\n * Add new model to the collection\n * @param {Model} model\n * @private\n * */\n addTo(model) {\n this.add(model);\n }\n\n /**\n * Render new model inside the view\n * @param {Model} model\n * @param {Object} fragment Fragment collection\n * @private\n * */\n add(model, fragment) {\n const { config } = this;\n var frag = fragment || null;\n var view = new BlockView(\n {\n model,\n attributes: model.get('attributes'),\n },\n config\n );\n var rendered = view.render().el;\n var category = model.get('category');\n\n // Check for categories\n if (category && this.categories && !config.ignoreCategories) {\n if (isString(category)) {\n category = {\n id: category,\n label: category,\n };\n } else if (isObject(category) && !category.id) {\n category.id = category.label;\n }\n\n var catModel = this.categories.add(category);\n var catId = catModel.get('id');\n var catView = this.renderedCategories[catId];\n var categories = this.getCategoriesEl();\n model.set('category', catModel, { silent: true });\n\n if (!catView && categories) {\n catView = new CategoryView(\n {\n model: catModel,\n },\n this.config\n ).render();\n this.renderedCategories[catId] = catView;\n categories.appendChild(catView.el);\n }\n\n catView && catView.append(rendered);\n return;\n }\n\n if (frag) frag.appendChild(rendered);\n else this.append(rendered);\n }\n\n getCategoriesEl() {\n if (!this.catsEl) {\n this.catsEl = this.el.querySelector(`.${this.catsClass}`);\n }\n\n return this.catsEl;\n }\n\n getBlocksEl() {\n if (!this.blocksEl) {\n this.blocksEl = this.el.querySelector(`.${this.noCatClass} .${this.blockContClass}`);\n }\n\n return this.blocksEl;\n }\n\n append(el) {\n let blocks = this.getBlocksEl();\n blocks && blocks.appendChild(el);\n }\n\n render() {\n const ppfx = this.ppfx;\n const frag = document.createDocumentFragment();\n this.catsEl = null;\n this.blocksEl = null;\n this.renderedCategories = [];\n this.el.innerHTML = `\n
\n
\n
\n
\n `;\n\n this.collection.each(model => this.add(model, frag));\n this.append(frag);\n const cls = `${this.blockContClass}s ${ppfx}one-bg ${ppfx}two-color`;\n this.$el.addClass(cls);\n this.rendered = true;\n return this;\n }\n}\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/block_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * blockManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API and listen to its events. Before using these methods, you should get the module from the instance.\n *\n * ```js\n * // Listen to events\n * editor.on('block:add', (block) => { ... });\n *\n * // Use the API\n * const blockManager = editor.Blocks;\n * blockManager.add(...);\n * ```\n *\n * ## Available Events\n * * `block:add` - Block added. The [Block] is passed as an argument to the callback.\n * * `block:remove` - Block removed. The [Block] is passed as an argument to the callback.\n * * `block:update` - Block updated. The [Block] and the object containing changes are passed as arguments to the callback.\n * * `block:drag:start` - Started dragging block, the [Block] is passed as an argument.\n * * `block:drag` - Dragging block, the [Block] is passed as an argument.\n * * `block:drag:stop` - Dragging of the block is stopped. The dropped [Component] (if dropped successfully) and the [Block] are passed as arguments.\n * * `block` - Catch-all event for all the events mentioned above. An object containing all the available data about the triggered event is passed as an argument to the callback.\n *\n * ## Methods\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getall)\n * * [getAllVisible](#getallvisible)\n * * [remove](#remove)\n * * [getConfig](#getconfig)\n * * [getCategories](#getcategories)\n * * [getContainer](#getcontainer)\n * * [render](#render)\n *\n * [Block]: block.html\n * [Component]: component.html\n *\n * @module Blocks\n */\nimport { isElement, isArray } from 'underscore';\nimport Module from '../abstract/moduleLegacy';\nimport defaults from './config/config';\nimport Block from './model/Block';\nimport Blocks from './model/Blocks';\nimport Category from './model/Category';\nimport Categories from './model/Categories';\nimport BlocksView from './view/BlocksView';\n\nexport const evAll = 'block';\nexport const evPfx = `${evAll}:`;\nexport const evAdd = `${evPfx}add`;\nexport const evUpdate = `${evPfx}update`;\nexport const evRemove = `${evPfx}remove`;\nexport const evRemoveBefore = `${evRemove}:before`;\nexport const evDrag = `${evPfx}drag`;\nexport const evDragStart = `${evDrag}:start`;\nexport const evDragStop = `${evDrag}:stop`;\nexport const evCustom = `${evPfx}custom`;\n\nexport default class BlockManager extends Module {\n name = 'BlockManager';\n\n Block = Block;\n\n Blocks = Blocks;\n\n Category = Category;\n\n Categories = Categories;\n\n events = {\n all: evAll,\n update: evUpdate,\n add: evAdd,\n remove: evRemove,\n removeBefore: evRemoveBefore,\n drag: evDrag,\n dragStart: evDragStart,\n dragEnd: evDragStop,\n custom: evCustom,\n };\n\n init(config = {}) {\n this.c = { ...defaults, ...config };\n const { em } = this.c;\n this.em = em;\n\n // Global blocks collection\n this.blocks = new Blocks(this.c.blocks);\n this.blocksVisible = new Blocks(this.blocks.models);\n this.categories = new Categories();\n this.all = this.blocks;\n this.__initListen();\n\n // Setup the sync between the global and public collections\n this.blocks.on('add', model => this.blocksVisible.add(model));\n this.blocks.on('remove', model => this.blocksVisible.remove(model));\n this.blocks.on('reset', coll => this.blocksVisible.reset(coll.models));\n\n return this;\n }\n\n __trgCustom() {\n this.em.trigger(this.events.custom, this.__customData());\n }\n\n __customData() {\n const bhv = this.__getBehaviour();\n return {\n bm: this,\n blocks: this.getAll().models,\n container: bhv.container,\n dragStart: (block, ev) => this.startDrag(block, ev),\n drag: ev => this.__drag(ev),\n dragStop: cancel => this.endDrag(cancel),\n };\n }\n\n __startDrag(block, ev) {\n const { em, events, blocks } = this;\n const content = block.getContent ? block.getContent() : block;\n this._dragBlock = block;\n em.set({ dragResult: null, dragContent: content });\n [em, blocks].map(i => i.trigger(events.dragStart, block, ev));\n }\n\n __drag(ev) {\n const { em, events, blocks } = this;\n const block = this._dragBlock;\n [em, blocks].map(i => i.trigger(events.drag, block, ev));\n }\n\n __endDrag() {\n const { em, events, blocks } = this;\n const block = this._dragBlock;\n const cmp = em.get('dragResult');\n this._dragBlock = null;\n\n if (cmp) {\n const oldKey = 'activeOnRender';\n const oldActive = cmp.get && cmp.get(oldKey);\n const toActive = block.get('activate') || oldActive;\n const toSelect = block.get('select');\n const first = isArray(cmp) ? cmp[0] : cmp;\n\n if (toSelect || (toActive && toSelect !== false)) {\n em.setSelected(first);\n }\n\n if (toActive) {\n first.trigger('active');\n oldActive && first.unset(oldKey);\n }\n\n if (block.get('resetId')) {\n first.onAll(block => block.resetId());\n }\n }\n\n em.set({ dragResult: null, dragContent: null });\n [em, blocks].map(i => i.trigger(events.dragEnd, cmp, block));\n }\n\n __getFrameViews() {\n return this.em\n .get('Canvas')\n .getFrames()\n .map(frame => frame.view);\n }\n\n __behaviour(opts = {}) {\n return (this._bhv = {\n ...(this._bhv || {}),\n ...opts,\n });\n }\n\n __getBehaviour() {\n return this._bhv || {};\n }\n\n startDrag(block, ev) {\n this.__startDrag(block, ev);\n this.__getFrameViews().forEach(fv => fv.droppable.startCustom());\n }\n\n endDrag(cancel) {\n this.__getFrameViews().forEach(fv => fv.droppable.endCustom(cancel));\n this.__endDrag();\n }\n\n /**\n * Get configuration object\n * @return {Object}\n */\n getConfig() {\n return this.c;\n }\n\n postRender() {\n const { categories } = this;\n const collection = this.blocksVisible;\n this.blocksView = new BlocksView({ collection, categories }, this.c);\n const elTo = this.getConfig().appendTo;\n\n if (elTo) {\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\n if (!el) return this.__logWarn('\"appendTo\" element not found');\n el.appendChild(this.render(this.blocksVisible.models));\n }\n\n this.__trgCustom();\n }\n\n /**\n * Add new block.\n * @param {String} id Block ID\n * @param {[Block]} props Block properties\n * @returns {[Block]} Added block\n * @example\n * blockManager.add('h1-block', {\n * label: 'Heading',\n * content: '

Put your title here

',\n * category: 'Basic',\n * attributes: {\n * title: 'Insert h1 block'\n * }\n * });\n */\n add(id, props, opts = {}) {\n const prp = props || {};\n prp.id = id;\n return this.blocks.add(prp, opts);\n }\n\n /**\n * Get the block by id.\n * @param {String} id Block id\n * @returns {[Block]}\n * @example\n * const block = blockManager.get('h1-block');\n * console.log(JSON.stringify(block));\n * // {label: 'Heading', content: '

Put your ...', ...}\n */\n get(id) {\n return this.blocks.get(id);\n }\n\n /**\n * Return all blocks.\n * @returns {Collection<[Block]>}\n * @example\n * const blocks = blockManager.getAll();\n * console.log(JSON.stringify(blocks));\n * // [{label: 'Heading', content: '

Put your ...'}, ...]\n */\n getAll() {\n return this.blocks;\n }\n\n /**\n * Return the visible collection, which containes blocks actually rendered\n * @returns {Collection<[Block]>}\n */\n getAllVisible() {\n return this.blocksVisible;\n }\n\n /**\n * Remove block.\n * @param {String|[Block]} block Block or block ID\n * @returns {[Block]} Removed block\n * @example\n * const removed = blockManager.remove('BLOCK_ID');\n * // or by passing the Block\n * const block = blockManager.get('BLOCK_ID');\n * blockManager.remove(block);\n */\n remove(block, opts = {}) {\n return this.__remove(block, opts);\n }\n\n /**\n * Get all available categories.\n * It's possible to add categories only within blocks via 'add()' method\n * @return {Array|Collection}\n */\n getCategories() {\n return this.categories;\n }\n\n /**\n * Return the Blocks container element\n * @return {HTMLElement}\n */\n getContainer() {\n return this.blocksView.el;\n }\n\n /**\n * Render blocks\n * @param {Array} blocks Blocks to render, without the argument will render all global blocks\n * @param {Object} [opts={}] Options\n * @param {Boolean} [opts.external] Render blocks in a new container (HTMLElement will be returned)\n * @param {Boolean} [opts.ignoreCategories] Render blocks without categories\n * @return {HTMLElement} Rendered element\n * @example\n * // Render all blocks (inside the global collection)\n * blockManager.render();\n *\n * // Render new set of blocks\n * const blocks = blockManager.getAll();\n * const filtered = blocks.filter(block => block.get('category') == 'sections')\n *\n * blockManager.render(filtered);\n * // Or a new set from an array\n * blockManager.render([\n * {label: 'Label text', content: '
Content
'}\n * ]);\n *\n * // Back to blocks from the global collection\n * blockManager.render();\n *\n * // You can also render your blocks outside of the main block container\n * const newBlocksEl = blockManager.render(filtered, { external: true });\n * document.getElementById('some-id').appendChild(newBlocksEl);\n */\n render(blocks, opts = {}) {\n const { categories } = this.categories;\n const toRender = blocks || this.getAll().models;\n\n if (opts.external) {\n const collection = new Blocks(toRender);\n return new BlocksView({ collection, categories }, { ...this.c, ...opts }).render().el;\n }\n\n if (this.blocksView) {\n this.blocksView.updateConfig(opts);\n this.blocksView.collection.reset(toRender);\n\n if (!this.blocksView.rendered) {\n this.blocksView.render();\n this.blocksView.rendered = 1;\n }\n }\n\n return this.getContainer();\n }\n\n destroy() {\n const colls = [this.blocks, this.blocksVisible, this.categories];\n colls.map(c => c.stopListening());\n colls.map(c => c.reset());\n this.blocksView?.remove();\n this.c = {};\n this.blocks = {};\n this.blocksVisible = {};\n this.blocksView = {};\n this.categories = [];\n this.all = {};\n }\n}\n","export default {\n stylePrefix: 'cv-',\n\n /*\n * Append external scripts to the `` of the iframe.\n * Be aware that these scripts will not be printed in the export code\n * @example\n * scripts: [ 'https://...1.js', 'https://...2.js' ]\n * * // or passing objects as attributes\n * scripts: [ { src: '/file.js', someattr: 'value' }, ... ]\n */\n scripts: [],\n\n /*\n * Append external styles to the `` of the iframe\n * Be aware that these styles will not be printed in the export code\n * @example\n * styles: [ 'https://...1.css', 'https://...2.css' ]\n * // or passing objects as attributes\n * styles: [ { href: '/style.css', someattr: 'value' }, ... ]\n */\n styles: [],\n\n /**\n * Add custom badge naming strategy\n * @example\n * customBadgeLabel: function(component) {\n * return component.getName();\n * }\n */\n customBadgeLabel: '',\n\n /**\n * Indicate when to start the auto scroll of the canvas on component/block dragging (value in px )\n */\n autoscrollLimit: 50,\n\n // Experimental: external highlighter box\n extHl: 0,\n\n /**\n * Initial content to load in all frames.\n * The default value enables the standard mode for the iframe.\n */\n frameContent: '',\n\n /**\n * Initial style to load in all frames.\n */\n frameStyle: `\n body { background-color: #fff }\n * ::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.1) }\n * ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.2) }\n * ::-webkit-scrollbar { width: 10px }\n `,\n\n /**\n * When some textable component is selected and focused (eg. input or text component) the editor\n * stops some commands (eg. disables the copy/paste of components with CTRL+C/V to allow the copy/paste of the text).\n * This option allows to customize, by a selector, which element should not be considered textable\n */\n notTextable: ['button', 'a', 'input[type=checkbox]', 'input[type=radio]'],\n};\n","import { Model } from '../../common';\nimport Backbone from 'backbone';\nimport { evPageSelect } from '../../pages';\nimport Frames from './Frames';\nimport EditorModel from '../../editor/model/Editor';\nimport Page from '../../pages/model/Page';\n\nexport default class Canvas extends Backbone.Model {\n defaults() {\n return {\n frame: '',\n frames: new Frames(),\n rulers: false,\n zoom: 100,\n x: 0,\n y: 0,\n // Scripts to apply on all frames\n scripts: [],\n // Styles to apply on all frames\n styles: [],\n };\n }\n em: EditorModel;\n config: any;\n\n constructor(props: any, config: any = {}) {\n super(props);\n const { em } = config;\n this.config = config;\n this.em = em;\n this.listenTo(this, 'change:zoom', this.onZoomChange);\n this.listenTo(em, 'change:device', this.updateDevice);\n this.listenTo(em, evPageSelect, this._pageUpdated);\n }\n get frames(): Frames {\n return this.get('frames');\n }\n\n init() {\n const { em } = this;\n const mainPage = em.get('PageManager').getMain();\n const frame = mainPage.getMainFrame();\n this.set('frames', mainPage.getFrames());\n this.updateDevice({ frame });\n }\n\n _pageUpdated(page: Page, prev?: Page) {\n const { em } = this;\n em.setSelected();\n em.get('readyCanvas') && em.stopDefault(); // We have to stop before changing current frames\n //@ts-ignore\n prev?.getFrames().map((frame) => frame.disable());\n this.set('frames', page.getFrames());\n }\n\n updateDevice(opts: any = {}) {\n const { em } = this;\n const device = em.getDeviceModel();\n const model = opts.frame || em.getCurrentFrameModel();\n\n if (model && device) {\n const { width, height } = device.attributes;\n model.set({ width, height }, { noUndo: 1 });\n }\n }\n\n onZoomChange() {\n const zoom = this.get('zoom');\n zoom < 1 && this.set('zoom', 1);\n }\n}\n","/*\n This class makes the canvas droppable\n */\n\nimport { bindAll, indexOf } from 'underscore';\nimport { on, off } from './mixins';\n\nexport default class Droppable {\n constructor(em, rootEl) {\n this.em = em;\n const el =\n rootEl ||\n em\n .get('Canvas')\n .getFrames()\n .map(frame => frame.getComponent().getEl());\n const els = Array.isArray(el) ? el : [el];\n this.el = el;\n this.counter = 0;\n bindAll(this, 'handleDragEnter', 'handleDragOver', 'handleDrop', 'handleDragLeave');\n els.forEach(el => this.toggleEffects(el, 1));\n\n return this;\n }\n\n toggleEffects(el, enable) {\n const methods = { on, off };\n const method = enable ? 'on' : 'off';\n methods[method](el, 'dragenter', this.handleDragEnter);\n methods[method](el, 'dragover', this.handleDragOver);\n methods[method](el, 'drop', this.handleDrop);\n methods[method](el, 'dragleave', this.handleDragLeave);\n }\n\n __customTglEff(enable) {\n const method = enable ? on : off;\n const doc = this.el.ownerDocument;\n const frameEl = doc.defaultView.frameElement;\n this.sortOpts = enable\n ? {\n onStart({ sorter }) {\n on(frameEl, 'pointermove', sorter.onMove);\n },\n onEnd({ sorter }) {\n off(frameEl, 'pointermove', sorter.onMove);\n },\n customTarget({ event }) {\n return doc.elementFromPoint(event.clientX, event.clientY);\n },\n }\n : null;\n method(frameEl, 'pointerenter', this.handleDragEnter);\n method(frameEl, 'pointermove', this.handleDragOver);\n method(document, 'pointerup', this.handleDrop);\n method(frameEl, 'pointerout', this.handleDragLeave);\n\n // Test with touch devices (seems like frameEl is not capturing pointer events).\n // on/off(document, 'pointermove', sorter.onMove); // for the sorter\n // enable && this.handleDragEnter({}); // no way to use pointerenter/pointerout\n }\n\n startCustom() {\n this.__customTglEff(true);\n }\n\n endCustom(cancel) {\n this.over ? this.endDrop(cancel) : this.__customTglEff(false);\n }\n\n endDrop(cancel, ev) {\n const { em, dragStop } = this;\n this.counter = 0;\n dragStop && dragStop(cancel);\n this.__customTglEff(false);\n em.trigger('canvas:dragend', ev);\n }\n\n handleDragLeave(ev) {\n this.updateCounter(-1, ev);\n }\n\n updateCounter(value, ev) {\n this.counter += value;\n this.counter === 0 && this.endDrop(1, ev);\n }\n\n handleDragEnter(ev) {\n const { em } = this;\n const dt = ev.dataTransfer;\n this.updateCounter(1, ev);\n if (this.over) return;\n this.over = 1;\n const utils = em.get('Utils');\n const canvas = em.get('Canvas');\n // For security reason I can't read the drag data on dragenter, but\n // as I need it for the Sorter context I will use `dragContent` or just\n // any not empty element\n let content = em.get('dragContent') || '
';\n let dragStop, dragContent;\n em.stopDefault();\n\n // Select the right drag provider\n if (em.inAbsoluteMode()) {\n const wrapper = em.get('DomComponents').getWrapper();\n const target = wrapper.append({})[0];\n const dragger = em.get('Commands').run('core:component-drag', {\n event: ev,\n guidesInfo: 1,\n center: 1,\n target,\n onEnd: (ev, dragger, { cancelled }) => {\n let comp;\n if (!cancelled) {\n comp = wrapper.append(content)[0];\n const { left, top, position } = target.getStyle();\n comp.addStyle({ left, top, position });\n }\n this.handleDragEnd(comp, dt);\n target.remove();\n },\n });\n dragStop = cancel => dragger.stop(ev, { cancel });\n dragContent = cnt => (content = cnt);\n } else {\n const sorter = new utils.Sorter({\n em,\n wmargin: 1,\n nested: 1,\n canvasRelative: 1,\n direction: 'a',\n container: this.el,\n placer: canvas.getPlacerEl(),\n containerSel: '*',\n itemSel: '*',\n pfx: 'gjs-',\n onEndMove: model => this.handleDragEnd(model, dt),\n document: this.el.ownerDocument,\n ...(this.sortOpts || {}),\n });\n sorter.setDropContent(content);\n sorter.startSort();\n this.sorter = sorter;\n dragStop = cancel => {\n cancel && (sorter.moved = 0);\n sorter.endMove();\n };\n dragContent = content => sorter.setDropContent(content);\n }\n\n this.dragStop = dragStop;\n this.dragContent = dragContent;\n em.trigger('canvas:dragenter', dt, content);\n }\n\n handleDragEnd(model, dt) {\n const { em } = this;\n this.over = 0;\n if (model) {\n em.set('dragResult', model);\n em.trigger('canvas:drop', dt, model);\n }\n em.runDefault({ preserveSelected: 1 });\n }\n\n /**\n * Always need to have this handler active for enabling the drop\n * @param {Event} ev\n */\n handleDragOver(ev) {\n ev.preventDefault();\n this.em.trigger('canvas:dragover', ev);\n }\n\n /**\n * WARNING: This function might fail to run on drop, for example, when the\n * drop, accidentally, happens on some external element (DOM not inside the iframe)\n */\n handleDrop(ev) {\n ev.preventDefault();\n const { dragContent } = this;\n const dt = ev.dataTransfer;\n const content = this.getContentByData(dt).content;\n ev.target.style.border = '';\n content && dragContent && dragContent(content);\n this.endDrop(!content, ev);\n }\n\n getContentByData(dt) {\n const em = this.em;\n const types = dt && dt.types;\n const files = (dt && dt.files) || [];\n const dragContent = em.get('dragContent');\n let content = dt && dt.getData('text');\n\n if (files.length) {\n content = [];\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n const type = file.type.split('/')[0];\n\n if (type == 'image') {\n content.push({\n type,\n file,\n attributes: { alt: file.name },\n });\n }\n }\n } else if (dragContent) {\n content = dragContent;\n } else if (indexOf(types, 'text/html') >= 0) {\n content = dt && dt.getData('text/html').replace(/<\\/?meta[^>]*>/g, '');\n } else if (indexOf(types, 'text/uri-list') >= 0) {\n content = {\n type: 'link',\n attributes: { href: content },\n content: content,\n };\n } else if (indexOf(types, 'text/json') >= 0) {\n const json = dt && dt.getData('text/json');\n json && (content = JSON.parse(json));\n } else if (types.length === 1 && types[0] === 'text/plain') {\n // Avoid dropping non-selectable and non-editable text nodes inside the editor\n content = `
${content}
`;\n }\n\n const result = { content };\n em.trigger('canvas:dragdata', dt, result);\n\n return result;\n }\n}\n","import { bindAll, isString, debounce, isUndefined } from 'underscore';\nimport { appendVNodes, append, createEl, createCustomEvent, motionsEv } from '../../utils/dom';\nimport { on, off, setViewEl, hasDnd, getPointerEvent } from '../../utils/mixins';\nimport { View } from '../../common';\nimport CssRulesView from '../../css_composer/view/CssRulesView';\nimport Droppable from '../../utils/Droppable';\n\nexport default class FrameView extends View {\n tagName() {\n return 'iframe';\n }\n\n attributes() {\n return {\n allowfullscreen: 'allowfullscreen',\n };\n }\n\n initialize(o) {\n bindAll(this, 'updateClientY', 'stopAutoscroll', 'autoscroll', '_emitUpdate');\n const { model, el } = this;\n this.tools = {};\n this.config = {\n ...(o.config || {}),\n frameView: this,\n };\n this.ppfx = this.config.pStylePrefix || '';\n this.em = this.config.em;\n this.showGlobalTools = debounce(this.showGlobalTools.bind(this), 50);\n const cvModel = this.getCanvasModel();\n this.listenTo(model, 'change:head', this.updateHead);\n this.listenTo(cvModel, 'change:styles', this.renderStyles);\n model.view = this;\n setViewEl(el, this);\n }\n\n /**\n * Update `` content of the frame\n */\n updateHead() {\n const { model } = this;\n const headEl = this.getHead();\n const toRemove = [];\n const toAdd = [];\n const current = model.get('head');\n const prev = model.previous('head');\n const attrStr = (attr = {}) =>\n Object.keys(attr)\n .sort()\n .map(i => `[${i}=\"${attr[i]}\"]`)\n .join('');\n const find = (items, stack, res) => {\n items.forEach(item => {\n const { tag, attributes } = item;\n const has = stack.some(s => s.tag === tag && attrStr(s.attributes) === attrStr(attributes));\n !has && res.push(item);\n });\n };\n find(current, prev, toAdd);\n find(prev, current, toRemove);\n toRemove.forEach(stl => {\n const el = headEl.querySelector(`${stl.tag}${attrStr(stl.attributes)}`);\n el && el.parentNode.removeChild(el);\n });\n appendVNodes(headEl, toAdd);\n }\n\n getEl() {\n return this.el;\n }\n\n getCanvasModel() {\n return this.em.get('Canvas').getModel();\n }\n\n getWindow() {\n return this.getEl().contentWindow;\n }\n\n getDoc() {\n return this.getEl().contentDocument;\n }\n\n getHead() {\n return this.getDoc().querySelector('head');\n }\n\n getBody() {\n return this.getDoc().querySelector('body');\n }\n\n getWrapper() {\n return this.getBody().querySelector('[data-gjs-type=wrapper]');\n }\n\n getJsContainer() {\n if (!this.jsContainer) {\n this.jsContainer = createEl('div', { class: `${this.ppfx}js-cont` });\n }\n\n return this.jsContainer;\n }\n\n getToolsEl() {\n const { frameWrapView } = this.config;\n return frameWrapView && frameWrapView.elTools;\n }\n\n getGlobalToolsEl() {\n return this.em.get('Canvas').getGlobalToolsEl();\n }\n\n getHighlighter() {\n return this._getTool('[data-hl]');\n }\n\n getBadgeEl() {\n return this._getTool('[data-badge]');\n }\n\n getOffsetViewerEl() {\n return this._getTool('[data-offset]');\n }\n\n getRect() {\n if (!this.rect) {\n this.rect = this.el.getBoundingClientRect();\n }\n\n return this.rect;\n }\n\n /**\n * Get rect data, not affected by the canvas zoom\n */\n getOffsetRect() {\n const { el } = this;\n const { scrollTop, scrollLeft } = this.getBody();\n const height = el.offsetHeight;\n const width = el.offsetWidth;\n\n return {\n top: el.offsetTop,\n left: el.offsetLeft,\n height,\n width,\n scrollTop,\n scrollLeft,\n scrollBottom: scrollTop + height,\n scrollRight: scrollLeft + width,\n };\n }\n\n _getTool(name) {\n const { tools } = this;\n const toolsEl = this.getToolsEl();\n\n if (!tools[name]) {\n tools[name] = toolsEl.querySelector(name);\n }\n\n return tools[name];\n }\n\n remove() {\n const wrp = this.wrapper;\n this._toggleEffects();\n this.tools = {};\n wrp && wrp.remove();\n View.prototype.remove.apply(this, arguments);\n }\n\n startAutoscroll() {\n this.lastMaxHeight = this.getWrapper().offsetHeight - this.el.offsetHeight;\n\n // By detaching those from the stack avoid browsers lags\n // Noticeable with \"fast\" drag of blocks\n setTimeout(() => {\n this._toggleAutoscrollFx(1);\n requestAnimationFrame(this.autoscroll);\n }, 0);\n }\n\n autoscroll() {\n if (this.dragging) {\n const { lastClientY } = this;\n const canvas = this.em.get('Canvas');\n const win = this.getWindow();\n const actualTop = win.pageYOffset;\n const clientY = lastClientY || 0;\n const limitTop = canvas.getConfig().autoscrollLimit;\n const limitBottom = this.getRect().height - limitTop;\n let nextTop = actualTop;\n\n if (clientY < limitTop) {\n nextTop -= limitTop - clientY;\n }\n\n if (clientY > limitBottom) {\n nextTop += clientY - limitBottom;\n }\n\n if (\n !isUndefined(lastClientY) && // Fixes #3134\n nextTop !== actualTop &&\n nextTop > 0 &&\n nextTop < this.lastMaxHeight\n ) {\n const toolsEl = this.getGlobalToolsEl();\n toolsEl.style.opacity = 0;\n this.showGlobalTools();\n win.scrollTo(0, nextTop);\n }\n\n requestAnimationFrame(this.autoscroll);\n }\n }\n\n updateClientY(ev) {\n ev.preventDefault();\n this.lastClientY = getPointerEvent(ev).clientY * this.em.getZoomDecimal();\n }\n\n showGlobalTools() {\n this.getGlobalToolsEl().style.opacity = '';\n }\n\n stopAutoscroll() {\n this.dragging && this._toggleAutoscrollFx();\n }\n\n _toggleAutoscrollFx(enable) {\n this.dragging = enable;\n const win = this.getWindow();\n const method = enable ? 'on' : 'off';\n const mt = { on, off };\n mt[method](win, 'mousemove dragover', this.updateClientY);\n mt[method](win, 'mouseup', this.stopAutoscroll);\n }\n\n render() {\n const { $el, ppfx } = this;\n $el.attr({ class: `${ppfx}frame` });\n this.renderScripts();\n return this;\n }\n\n renderScripts() {\n const { el, model, em } = this;\n const evLoad = 'frame:load';\n const evOpts = { el, model, view: this };\n const canvas = this.getCanvasModel();\n const appendScript = scripts => {\n if (scripts.length > 0) {\n const src = scripts.shift();\n const scriptEl = createEl('script', {\n type: 'text/javascript',\n ...(isString(src) ? { src } : src),\n });\n scriptEl.onerror = scriptEl.onload = appendScript.bind(null, scripts);\n el.contentDocument.head.appendChild(scriptEl);\n } else {\n this.renderBody();\n em && em.trigger(evLoad, evOpts);\n }\n };\n\n el.onload = () => {\n const { frameContent } = this.config;\n if (frameContent) {\n const doc = this.getDoc();\n doc.open();\n doc.write(frameContent);\n doc.close();\n }\n em && em.trigger(`${evLoad}:before`, evOpts);\n appendScript([...canvas.get('scripts')]);\n };\n }\n\n renderStyles(opts = {}) {\n const head = this.getHead();\n const canvas = this.getCanvasModel();\n const normalize = stls =>\n stls.map(href => ({\n tag: 'link',\n attributes: {\n rel: 'stylesheet',\n ...(isString(href) ? { href } : href),\n },\n }));\n const prevStyles = normalize(opts.prev || canvas.previous('styles'));\n const styles = normalize(canvas.get('styles'));\n const toRemove = [];\n const toAdd = [];\n const find = (items, stack, res) => {\n items.forEach(item => {\n const { href } = item.attributes;\n const has = stack.some(s => s.attributes.href === href);\n !has && res.push(item);\n });\n };\n find(styles, prevStyles, toAdd);\n find(prevStyles, styles, toRemove);\n toRemove.forEach(stl => {\n const el = head.querySelector(`link[href=\"${stl.attributes.href}\"]`);\n el && el.parentNode.removeChild(el);\n });\n appendVNodes(head, toAdd);\n }\n\n renderBody() {\n const { config, model, ppfx } = this;\n const { em } = config;\n const doc = this.getDoc();\n const body = this.getBody();\n const win = this.getWindow();\n const conf = em.get('Config');\n win._isEditor = true;\n this.renderStyles({ prev: [] });\n\n const colorWarn = '#ffca6f';\n\n append(\n body,\n ``\n );\n const component = model.getComponent();\n const { view } = em.get('DomComponents').getType('wrapper');\n this.wrapper = new view({\n model: component,\n config: {\n ...component.config,\n frameView: this,\n },\n }).render();\n append(body, this.wrapper.el);\n append(\n body,\n new CssRulesView({\n collection: model.getStyles(),\n config: {\n ...em.get('CssComposer').getConfig(),\n frameView: this,\n },\n }).render().el\n );\n append(body, this.getJsContainer());\n // em.trigger('loaded'); // I need to manage only the first one maybe\n //this.updateOffset(); // TOFIX (check if I need it)\n\n // Avoid some default behaviours\n on(body, 'click', ev => ev && ev.target.tagName == 'A' && ev.preventDefault());\n on(body, 'submit', ev => ev && ev.preventDefault());\n\n // When the iframe is focused the event dispatcher is not the same so\n // I need to delegate all events to the parent document\n [\n { event: 'keydown keyup keypress', class: 'KeyboardEvent' },\n { event: 'mousedown mousemove mouseup', class: 'MouseEvent' },\n { event: 'pointerdown pointermove pointerup', class: 'PointerEvent' },\n { event: 'wheel', class: 'WheelEvent' },\n ].forEach(obj =>\n obj.event.split(' ').forEach(event => {\n doc.addEventListener(event, ev => this.el.dispatchEvent(createCustomEvent(ev, obj.class)));\n })\n );\n\n this._toggleEffects(1);\n this.droppable = hasDnd(em) && new Droppable(em, this.wrapper.el);\n model.trigger('loaded');\n }\n\n _toggleEffects(enable) {\n const method = enable ? on : off;\n const win = this.getWindow();\n win && method(win, `${motionsEv} resize`, this._emitUpdate);\n }\n\n _emitUpdate() {\n this.model._emitUpdated();\n }\n}\n","import { bindAll, isNumber, isNull, debounce } from 'underscore';\nimport { View } from '../../common';\nimport FrameView from './FrameView';\nimport { createEl, removeEl } from '../../utils/dom';\nimport Dragger from '../../utils/Dragger';\n\nexport default class FrameWrapView extends View {\n events() {\n return {\n 'click [data-action-remove]': 'remove',\n 'mousedown [data-action-move]': 'startDrag',\n };\n }\n\n initialize(opts = {}, conf = {}) {\n bindAll(this, 'onScroll', 'frameLoaded', 'updateOffset', 'remove', 'startDrag');\n const { model } = this;\n const config = {\n ...(opts.config || conf),\n frameWrapView: this,\n };\n const { canvasView, em } = config;\n this.cv = canvasView;\n this.config = config;\n this.em = em;\n this.canvas = em && em.get('Canvas');\n this.ppfx = config.pStylePrefix || '';\n this.frame = new FrameView({ model, config });\n this.classAnim = `${this.ppfx}frame-wrapper--anim`;\n this.updateOffset = debounce(this.updateOffset.bind(this));\n this.updateSize = debounce(this.updateSize.bind(this));\n this.listenTo(model, 'loaded', this.frameLoaded);\n this.listenTo(model, 'change:x change:y', this.updatePos);\n this.listenTo(model, 'change:width change:height', this.updateSize);\n this.listenTo(model, 'destroy remove', this.remove);\n this.updatePos();\n this.setupDragger();\n }\n\n setupDragger() {\n const { canvas, model } = this;\n let dragX, dragY, zoom;\n const toggleEffects = on => {\n canvas.toggleFramesEvents(on);\n };\n\n this.dragger = new Dragger({\n onStart: () => {\n const { x, y } = model.attributes;\n zoom = this.em.getZoomMultiplier();\n dragX = x;\n dragY = y;\n toggleEffects();\n },\n onEnd: () => toggleEffects(1),\n setPosition: posOpts => {\n model.set({\n x: dragX + posOpts.x * zoom,\n y: dragY + posOpts.y * zoom,\n });\n },\n });\n }\n\n startDrag(ev) {\n ev && this.dragger.start(ev);\n }\n\n __clear(opts) {\n const { frame } = this;\n frame && frame.remove(opts);\n removeEl(this.elTools);\n }\n\n remove(opts) {\n this.__clear(opts);\n View.prototype.remove.apply(this, arguments);\n ['frame', 'dragger', 'cv', 'em', 'canvas', 'elTools'].forEach(i => (this[i] = 0));\n return this;\n }\n\n updateOffset() {\n const { em, $el, frame } = this;\n if (!em) return;\n em.runDefault({ preserveSelected: 1 });\n $el.removeClass(this.classAnim);\n frame.model._emitUpdated();\n }\n\n updatePos(md) {\n const { model, el } = this;\n const { x, y } = model.attributes;\n const { style } = el;\n this.frame.rect = 0;\n style.left = isNaN(x) ? x : `${x}px`;\n style.top = isNaN(y) ? y : `${y}px`;\n md && this.updateOffset();\n }\n\n updateSize() {\n this.updateDim();\n }\n\n /**\n * Update dimensions of the frame\n * @private\n */\n updateDim() {\n const { em, el, $el, model, classAnim, frame } = this;\n if (!frame) return;\n frame.rect = 0;\n $el.addClass(classAnim);\n const { noChanges, width, height } = this.__handleSize();\n\n // Set width and height from DOM (should be done only once)\n if (isNull(width) || isNull(height)) {\n model.set(\n {\n ...(!width ? { width: el.offsetWidth } : {}),\n ...(!height ? { height: el.offsetHeight } : {}),\n },\n { silent: 1 }\n );\n }\n\n // Prevent fixed highlighting box which appears when on\n // component hover during the animation\n em.stopDefault({ preserveSelected: 1 });\n noChanges ? this.updateOffset() : setTimeout(this.updateOffset, 350);\n }\n\n onScroll() {\n const { frame, em } = this;\n em.trigger('frame:scroll', {\n frame,\n body: frame.getBody(),\n target: frame.getWindow(),\n });\n }\n\n frameLoaded() {\n const { frame } = this;\n frame.getWindow().onscroll = this.onScroll;\n this.updateDim();\n }\n\n __handleSize() {\n const un = 'px';\n const { model, el } = this;\n const { style } = el;\n const { width, height } = model.attributes;\n const currW = style.width || '';\n const currH = style.height || '';\n const newW = width || '';\n const newH = height || '';\n const noChanges = currW == newW && currH == newH;\n style.width = isNumber(newW) ? `${newW}${un}` : newW;\n style.height = isNumber(newH) ? `${newH}${un}` : newH;\n return { noChanges, width, height, newW, newH };\n }\n\n render() {\n const { frame, $el, ppfx, cv, model, el } = this;\n const { onRender } = model.attributes;\n this.__clear();\n this.__handleSize();\n frame.render();\n $el\n .empty()\n .attr({ class: `${ppfx}frame-wrapper` })\n .append(\n `\n
\n
\n ${model.get('name') || ''}\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n `\n )\n .append(frame.el);\n const elTools = createEl(\n 'div',\n {\n class: `${ppfx}tools`,\n style: 'pointer-events:none; display: none',\n },\n `\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n `\n );\n this.elTools = elTools;\n const twrp = cv.toolsWrapper;\n twrp && twrp.appendChild(elTools); // TODO remove on frame remove\n onRender &&\n onRender({\n el,\n elTop: el.querySelector('[data-frame-top]'),\n elRight: el.querySelector('[data-frame-right]'),\n elBottom: el.querySelector('[data-frame-bottom]'),\n elLeft: el.querySelector('[data-frame-left]'),\n frame: model,\n frameWrapperView: this,\n remove: this.remove,\n startDrag: this.startDrag,\n });\n return this;\n }\n}\n","import { bindAll } from 'underscore';\nimport { View } from '../../common';\nimport { on, off, getElement, getKeyChar, isTextNode, getElRect, getUiClass } from '../../utils/mixins';\nimport { createEl } from '../../utils/dom';\nimport FramesView from './FramesView';\n\nlet timerZoom;\n\nexport default class CanvasView extends View {\n events() {\n return {\n wheel: 'onWheel',\n };\n }\n\n template() {\n const { pfx } = this;\n return `\n
\n
\n `;\n }\n\n initialize(o) {\n bindAll(this, 'clearOff', 'onKeyPress', 'onCanvasMove');\n const { model } = this;\n this.config = o.config || {};\n this.em = this.config.em || {};\n this.pfx = this.config.stylePrefix || '';\n this.ppfx = this.config.pStylePrefix || '';\n this.className = this.config.stylePrefix + 'canvas';\n const { em } = this;\n this._initFrames();\n this.listenTo(em, 'change:canvasOffset', this.clearOff);\n this.listenTo(em, 'component:selected', this.checkSelected);\n this.listenTo(model, 'change:zoom change:x change:y', this.updateFrames);\n this.listenTo(model, 'change:frames', this._onFramesUpdate);\n this.toggleListeners(1);\n }\n\n _onFramesUpdate() {\n this._initFrames();\n this._renderFrames();\n }\n\n _initFrames() {\n const { frames, model, config, em } = this;\n const collection = model.get('frames');\n em.set('readyCanvas', 0);\n collection.once('loaded:all', () => em.set('readyCanvas', 1));\n frames && frames.remove();\n this.frames = new FramesView({\n collection,\n config: {\n ...config,\n canvasView: this,\n },\n });\n }\n\n checkSelected(component, opts = {}) {\n const { scroll } = opts;\n const currFrame = this.em.get('currentFrame');\n\n scroll &&\n component.views.forEach(view => {\n view._getFrame() === currFrame && view.scrollIntoView(scroll);\n });\n }\n\n remove() {\n this.frames.remove();\n this.frames = {};\n View.prototype.remove.apply(this, arguments);\n this.toggleListeners();\n }\n\n preventDefault(ev) {\n if (ev) {\n ev.preventDefault();\n ev._parentEvent && ev._parentEvent.preventDefault();\n }\n }\n\n onCanvasMove(ev) {\n // const data = { x: ev.clientX, y: ev.clientY };\n // const data2 = this.em.get('Canvas').getMouseRelativeCanvas(ev);\n // const data3 = this.em.get('Canvas').getMouseRelativePos(ev);\n // this.em.trigger('canvas:over', data, data2, data3);\n }\n\n toggleListeners(enable) {\n const { el } = this;\n const fn = enable ? on : off;\n fn(document, 'keypress', this.onKeyPress);\n fn(window, 'scroll resize', this.clearOff);\n // fn(el, 'mousemove dragover', this.onCanvasMove);\n }\n\n onKeyPress(ev) {\n const { em } = this;\n const key = getKeyChar(ev);\n\n if (key === ' ' && em.getZoomDecimal() !== 1 && !em.get('Canvas').isInputFocused()) {\n this.preventDefault(ev);\n em.get('Editor').runCommand('core:canvas-move');\n }\n }\n\n onWheel(ev) {\n if ((ev.ctrlKey || ev.metaKey) && this.em.getConfig().multiFrames) {\n this.preventDefault(ev);\n const { model } = this;\n const delta = Math.max(-1, Math.min(1, ev.wheelDelta || -ev.detail));\n const zoom = model.get('zoom');\n model.set('zoom', zoom + delta * 2);\n }\n }\n\n updateFrames(ev) {\n const { em, model } = this;\n const { x, y } = model.attributes;\n const zoom = this.getZoom();\n const defOpts = { preserveSelected: 1 };\n const mpl = zoom ? 1 / zoom : 1;\n this.framesArea.style.transform = `scale(${zoom}) translate(${x * mpl}px, ${y * mpl}px)`;\n this.clearOff();\n em.stopDefault(defOpts);\n em.trigger('canvas:update', ev);\n timerZoom && clearTimeout(timerZoom);\n timerZoom = setTimeout(() => em.runDefault(defOpts), 300);\n }\n\n getZoom() {\n return this.em.getZoomDecimal();\n }\n\n /**\n * Checks if the element is visible in the canvas's viewport\n * @param {HTMLElement} el\n * @return {Boolean}\n */\n isElInViewport(el) {\n const elem = getElement(el);\n const rect = getElRect(elem);\n const frameRect = this.getFrameOffset(elem);\n const rTop = rect.top;\n const rLeft = rect.left;\n return rTop >= 0 && rLeft >= 0 && rTop <= frameRect.height && rLeft <= frameRect.width;\n }\n\n /**\n * Get the offset of the element\n * @param {HTMLElement} el\n * @return {Object}\n */\n offset(el, opts = {}) {\n const rect = getElRect(el);\n const docBody = el.ownerDocument.body;\n const { noScroll } = opts;\n\n return {\n top: rect.top + (noScroll ? 0 : docBody.scrollTop),\n left: rect.left + (noScroll ? 0 : docBody.scrollLeft),\n width: rect.width,\n height: rect.height,\n };\n }\n\n /**\n * Cleare cached offsets\n * @private\n */\n clearOff() {\n this.frmOff = null;\n this.cvsOff = null;\n }\n\n /**\n * Return frame offset\n * @return {Object}\n * @private\n */\n getFrameOffset(el) {\n if (!this.frmOff || el) {\n const frame = this.frame.el;\n const winEl = el && el.ownerDocument.defaultView;\n const frEl = winEl ? winEl.frameElement : frame;\n this.frmOff = this.offset(frEl || frame);\n }\n return this.frmOff;\n }\n\n /**\n * Return canvas offset\n * @return {Object}\n * @private\n */\n getCanvasOffset() {\n if (!this.cvsOff) this.cvsOff = this.offset(this.el);\n return this.cvsOff;\n }\n\n /**\n * Returns element's rect info\n * @param {HTMLElement} el\n * @return {Object}\n * @private\n */\n getElementPos(el, opts) {\n const zoom = this.getZoom();\n const opt = opts || {};\n const frameOffset = this.getFrameOffset(el);\n const canvasEl = this.el;\n const canvasOffset = this.getCanvasOffset();\n const elRect = this.offset(el, opts);\n const frameTop = opt.avoidFrameOffset ? 0 : frameOffset.top;\n const frameLeft = opt.avoidFrameOffset ? 0 : frameOffset.left;\n\n const top = elRect.top * zoom + frameTop - canvasOffset.top + canvasEl.scrollTop;\n const left = elRect.left * zoom + frameLeft - canvasOffset.left + canvasEl.scrollLeft;\n const height = elRect.height * zoom;\n const width = elRect.width * zoom;\n\n return { top, left, height, width, zoom, rect: elRect };\n }\n\n /**\n * Returns element's offsets like margins and paddings\n * @param {HTMLElement} el\n * @return {Object}\n * @private\n */\n getElementOffsets(el) {\n if (!el || isTextNode(el)) return {};\n const result = {};\n const styles = window.getComputedStyle(el);\n [\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n ].forEach(offset => {\n result[offset] = parseFloat(styles[offset]) * this.getZoom();\n });\n\n return result;\n }\n\n /**\n * Returns position data of the canvas element\n * @return {Object} obj Position object\n * @private\n */\n getPosition(opts = {}) {\n const doc = this.frame.el.contentDocument;\n if (!doc) return;\n const bEl = doc.body;\n const zoom = this.getZoom();\n const fo = this.getFrameOffset();\n const co = this.getCanvasOffset();\n const { noScroll } = opts;\n\n return {\n top: fo.top + (noScroll ? 0 : bEl.scrollTop) * zoom - co.top,\n left: fo.left + (noScroll ? 0 : bEl.scrollLeft) * zoom - co.left,\n width: co.width,\n height: co.height,\n };\n }\n\n /**\n * Update javascript of a specific component passed by its View\n * @param {View} view Component's View\n * @private\n */\n updateScript(view) {\n const model = view.model;\n const id = model.getId();\n\n if (!view.scriptContainer) {\n view.scriptContainer = createEl('div', { 'data-id': id });\n this.getJsContainer().appendChild(view.scriptContainer);\n }\n\n view.el.id = id;\n view.scriptContainer.innerHTML = '';\n // In editor, I make use of setTimeout as during the append process of elements\n // those will not be available immediately, therefore 'item' variable\n const script = document.createElement('script');\n const scriptFn = model.getScriptString();\n const scriptFnStr = model.get('script-props') ? scriptFn : `function(){\\n${scriptFn}\\n;}`;\n const scriptProps = JSON.stringify(model.__getScriptProps());\n script.innerHTML = `\n setTimeout(function() {\n var item = document.getElementById('${id}');\n if (!item) return;\n (${scriptFnStr}.bind(item))(${scriptProps})\n }, 1);`;\n // #873\n // Adding setTimeout will make js components work on init of the editor\n setTimeout(() => {\n const scr = view.scriptContainer;\n scr?.appendChild(script);\n }, 0);\n }\n\n /**\n * Get javascript container\n * @private\n */\n getJsContainer(view) {\n const frameView = this.getFrameView(view);\n return frameView && frameView.getJsContainer();\n }\n\n getFrameView(view) {\n return (view && view._getFrame()) || this.em.get('currentFrame');\n }\n\n _renderFrames() {\n if (!this.ready) return;\n const { model, frames, em, framesArea } = this;\n const frms = model.get('frames');\n frms.listenToLoad();\n frames.render();\n const mainFrame = frms.at(0);\n const currFrame = mainFrame && mainFrame.view;\n em.setCurrentFrame(currFrame);\n framesArea && framesArea.appendChild(frames.el);\n this.frame = currFrame;\n }\n\n render() {\n const { el, $el, ppfx, config, em } = this;\n $el.html(this.template());\n const $frames = $el.find('[data-frames]');\n this.framesArea = $frames.get(0);\n\n const toolsWrp = $el.find('[data-tools]');\n this.toolsWrapper = toolsWrp.get(0);\n toolsWrp.append(`\n
\n
\n
\n
\n
\n
\n ${config.extHl ? `
` : ''}\n
\n
\n
\n
\n
\n
\n
\n `);\n const toolsEl = el.querySelector(`#${ppfx}tools`);\n this.hlEl = el.querySelector(`.${ppfx}highlighter`);\n this.badgeEl = el.querySelector(`.${ppfx}badge`);\n this.placerEl = el.querySelector(`.${ppfx}placeholder`);\n this.ghostEl = el.querySelector(`.${ppfx}ghost`);\n this.toolbarEl = el.querySelector(`.${ppfx}toolbar`);\n this.resizerEl = el.querySelector(`.${ppfx}resizer`);\n this.offsetEl = el.querySelector(`.${ppfx}offset-v`);\n this.fixedOffsetEl = el.querySelector(`.${ppfx}offset-fixed-v`);\n this.toolsGlobEl = el.querySelector(`.${ppfx}tools-gl`);\n this.toolsEl = toolsEl;\n this.el.className = getUiClass(em, this.className);\n this.ready = 1;\n this._renderFrames();\n\n return this;\n }\n}\n","import DomainViews from '../../domain_abstract/view/DomainViews';\nimport FrameWrapView from './FrameWrapView';\n\nexport default class FramesView extends DomainViews {\n constructor(opts = {}, config) {\n super(opts, config, true);\n this.listenTo(this.collection, 'reset', this.render);\n }\n\n onRemoveBefore(items, opts) {\n items.forEach(item => item.remove(opts));\n }\n\n onRender() {\n const { config, $el } = this;\n const { em } = config;\n em && $el.attr({ class: `${em.getConfig().stylePrefix}frames` });\n }\n}\n\nFramesView.prototype.itemView = FrameWrapView;\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/canvas/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * canvas: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API and listen to its events. Before using these methods, you should get the module from the instance.\n *\n * ```js\n * // Listen to events\n * editor.on('canvas:drop', () => { ... });\n *\n * // Use the API\n * const canvas = editor.Canvas;\n * canvas.setCoords(...);\n * ```\n * ## Available Events\n * * `canvas:dragenter` - When something is dragged inside the canvas, `DataTransfer` instance passed as an argument\n * * `canvas:dragover` - When something is dragging on canvas, `DataTransfer` instance passed as an argument\n * * `canvas:drop` - Something is dropped in canvas, `DataTransfer` instance and the dropped model are passed as arguments\n * * `canvas:dragend` - When a drag operation is ended, `DataTransfer` instance passed as an argument\n * * `canvas:dragdata` - On any dataTransfer parse, `DataTransfer` instance and the `result` are passed as arguments.\n * By changing `result.content` you're able to customize what is dropped\n *\n * ## Methods\n * * [getConfig](#getconfig)\n * * [getElement](#getelement)\n * * [getFrameEl](#getframeel)\n * * [getWindow](#getwindow)\n * * [getDocument](#getdocument)\n * * [getBody](#getbody)\n * * [setCustomBadgeLabel](#setcustombadgelabel)\n * * [hasFocus](#hasfocus)\n * * [scrollTo](#scrollto)\n * * [setZoom](#setzoom)\n * * [getZoom](#getzoom)\n * * [getCoords](#getcoords)\n * * [setCoords](#setcoords)\n *\n * [Component]: component.html\n * [Frame]: frame.html\n *\n * @module Canvas\n */\n\nimport { isUndefined } from 'underscore';\nimport { getElement, getViewEl } from '../utils/mixins';\nimport defaults from './config/config';\nimport Canvas from './model/Canvas';\nimport Frame from './model/Frame';\nimport CanvasView from './view/CanvasView';\n\nexport default class CanvasModule {\n /**\n * Used inside RTE\n * @private\n */\n getCanvasView() {\n return this.canvasView;\n }\n\n name = 'Canvas';\n\n c = {};\n canvas;\n canvasView;\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config = {}) {\n this.c = {\n ...defaults,\n ...config,\n module: this,\n };\n\n this.em = this.c.em;\n const { scripts, styles } = this.c;\n const ppfx = this.c.pStylePrefix;\n if (ppfx) this.c.stylePrefix = ppfx + this.c.stylePrefix;\n this.canvas = new Canvas({ scripts, styles }, config);\n this.model = this.canvas;\n this.startAutoscroll = this.startAutoscroll.bind(this);\n this.stopAutoscroll = this.stopAutoscroll.bind(this);\n return this;\n }\n\n onLoad() {\n this.model.init();\n }\n\n getModel() {\n return this.canvas;\n }\n\n /**\n * Get the configuration object\n * @returns {Object} Configuration object\n * @example\n * console.log(canvas.getConfig())\n */\n getConfig() {\n return this.c;\n }\n\n /**\n * Get the canvas element\n * @returns {HTMLElement}\n */\n getElement() {\n return this.canvasView.el;\n }\n\n getFrame(index) {\n return this.getFrames()[index || 0];\n }\n\n /**\n * Get the main frame element of the canvas\n * @returns {HTMLIFrameElement}\n */\n getFrameEl() {\n const { frame } = this.canvasView || {};\n return frame && frame.el;\n }\n\n getFramesEl() {\n return this.canvasView.framesArea;\n }\n\n /**\n * Get the main frame window instance\n * @returns {Window}\n */\n getWindow() {\n return this.getFrameEl().contentWindow;\n }\n\n /**\n * Get the main frame document element\n * @returns {HTMLDocument}\n */\n getDocument() {\n const frame = this.getFrameEl();\n return frame && frame.contentDocument;\n }\n\n /**\n * Get the main frame body element\n * @return {HTMLBodyElement}\n */\n getBody() {\n const doc = this.getDocument();\n return doc && doc.body;\n }\n\n _getCompFrame(compView) {\n return compView && compView._getFrame();\n }\n\n _getLocalEl(globalEl, compView, method) {\n let result = globalEl;\n const frameView = this._getCompFrame(compView);\n result = frameView ? frameView[method]() : result;\n\n return result;\n }\n\n /**\n * Returns element containing all global canvas tools\n * @returns {HTMLElement}\n * @private\n */\n getGlobalToolsEl() {\n return this.canvasView.toolsGlobEl;\n }\n\n /**\n * Returns element containing all canvas tools\n * @returns {HTMLElement}\n * @private\n */\n getToolsEl(compView) {\n return this._getLocalEl(this.canvasView.toolsEl, compView, 'getToolsEl');\n }\n\n /**\n * Returns highlighter element\n * @returns {HTMLElement}\n * @private\n */\n getHighlighter(compView) {\n return this._getLocalEl(this.canvasView.hlEl, compView, 'getHighlighter');\n }\n\n /**\n * Returns badge element\n * @returns {HTMLElement}\n * @private\n */\n getBadgeEl(compView) {\n return this._getLocalEl(this.canvasView.badgeEl, compView, 'getBadgeEl');\n }\n\n /**\n * Returns placer element\n * @returns {HTMLElement}\n * @private\n */\n getPlacerEl() {\n return this.canvasView.placerEl;\n }\n\n /**\n * Returns ghost element\n * @returns {HTMLElement}\n * @private\n */\n getGhostEl() {\n return this.canvasView.ghostEl;\n }\n\n /**\n * Returns toolbar element\n * @returns {HTMLElement}\n * @private\n */\n getToolbarEl() {\n return this.canvasView.toolbarEl;\n }\n\n /**\n * Returns resizer element\n * @returns {HTMLElement}\n * @private\n */\n getResizerEl() {\n return this.canvasView.resizerEl;\n }\n\n /**\n * Returns offset viewer element\n * @returns {HTMLElement}\n * @private\n */\n getOffsetViewerEl(compView) {\n return this._getLocalEl(this.canvasView.offsetEl, compView, 'getOffsetViewerEl');\n }\n\n /**\n * Returns fixed offset viewer element\n * @returns {HTMLElement}\n * @private\n */\n getFixedOffsetViewerEl() {\n return this.canvasView.fixedOffsetEl;\n }\n\n render() {\n this.canvasView?.remove();\n this.canvasView = new CanvasView({\n model: this.canvas,\n config: this.c,\n });\n return this.canvasView.render().el;\n }\n\n /**\n * Get frame position\n * @returns {Object}\n * @private\n */\n getOffset() {\n var frameOff = this.offset(this.getFrameEl());\n var canvasOff = this.offset(this.getElement());\n return {\n top: frameOff.top - canvasOff.top,\n left: frameOff.left - canvasOff.left,\n };\n }\n\n /**\n * Get the offset of the passed component element\n * @param {HTMLElement} el\n * @returns {Object}\n * @private\n */\n offset(el) {\n return this.canvasView.offset(el);\n }\n\n /**\n * Set custom badge naming strategy\n * @param {Function} f\n * @example\n * canvas.setCustomBadgeLabel(function(component){\n * return component.getName();\n * });\n */\n setCustomBadgeLabel(f) {\n this.c.customBadgeLabel = f;\n }\n\n /**\n * Get element position relative to the canvas\n * @param {HTMLElement} el\n * @returns {Object}\n * @private\n */\n getElementPos(el, opts) {\n return this.canvasView.getElementPos(el, opts);\n }\n\n /**\n * Returns element's offsets like margins and paddings\n * @param {HTMLElement} el\n * @returns {Object}\n * @private\n */\n getElementOffsets(el) {\n return this.canvasView.getElementOffsets(el);\n }\n\n /**\n * Get canvas rectangular data\n * @returns {Object}\n */\n getRect() {\n const { top, left } = this.canvasView.getPosition();\n return {\n ...this.canvasView.getCanvasOffset(),\n topScroll: top,\n leftScroll: left,\n };\n }\n\n /**\n * This method comes handy when you need to attach something like toolbars\n * to elements inside the canvas, dealing with all relative position,\n * offsets, etc. and returning as result the object with positions which are\n * viewable by the user (when the canvas is scrolled the top edge of the element\n * is not viewable by the user anymore so the new top edge is the one of the canvas)\n *\n * The target should be visible before being passed here as invisible elements\n * return empty string as width\n * @param {HTMLElement} target The target in this case could be the toolbar\n * @param {HTMLElement} element The element on which I'd attach the toolbar\n * @param {Object} options Custom options\n * @param {Boolean} options.toRight Set to true if you want the toolbar attached to the right\n * @return {Object}\n * @private\n */\n getTargetToElementDim(target, element, options = {}) {\n var opts = options || {};\n var canvasPos = this.canvasView.getPosition();\n if (!canvasPos) return;\n var pos = opts.elPos || this.canvasView.getElementPos(element);\n var toRight = options.toRight || 0;\n var targetHeight = opts.targetHeight || target.offsetHeight;\n var targetWidth = opts.targetWidth || target.offsetWidth;\n var eventToTrigger = opts.event || null;\n\n var elTop = pos.top - targetHeight;\n var elLeft = pos.left;\n elLeft += toRight ? pos.width : 0;\n elLeft = toRight ? elLeft - targetWidth : elLeft;\n\n var leftPos = elLeft < canvasPos.left ? canvasPos.left : elLeft;\n var topPos = elTop < canvasPos.top ? canvasPos.top : elTop;\n topPos = topPos > pos.top + pos.height ? pos.top + pos.height : topPos;\n\n var result = {\n top: topPos,\n left: leftPos,\n elementTop: pos.top,\n elementLeft: pos.left,\n elementWidth: pos.width,\n elementHeight: pos.height,\n targetWidth: target.offsetWidth,\n targetHeight: target.offsetHeight,\n canvasTop: canvasPos.top,\n canvasLeft: canvasPos.left,\n canvasWidth: canvasPos.width,\n canvasHeight: canvasPos.height,\n };\n\n // In this way I can catch data and also change the position strategy\n if (eventToTrigger && this.c.em) {\n this.c.em.trigger(eventToTrigger, result);\n }\n\n return result;\n }\n\n canvasRectOffset(el, pos, opts = {}) {\n const getFrameElFromDoc = doc => {\n const { defaultView } = doc;\n return defaultView && defaultView.frameElement;\n };\n\n const rectOff = (el, top = 1, pos) => {\n const zoom = this.em.getZoomDecimal();\n const side = top ? 'top' : 'left';\n const doc = el.ownerDocument;\n const { offsetTop = 0, offsetLeft = 0 } = opts.offset ? getFrameElFromDoc(doc) : {};\n const { scrollTop = 0, scrollLeft = 0 } = doc.body || {};\n const scroll = top ? scrollTop : scrollLeft;\n const offset = top ? offsetTop : offsetLeft;\n\n // if (!top) {\n // console.log('LEFT', { posLeft: pos[side], scroll, offset }, el);\n // }\n\n return pos[side] - (scroll - offset) * zoom;\n };\n\n return {\n top: rectOff(el, 1, pos),\n left: rectOff(el, 0, pos),\n };\n }\n\n getTargetToElementFixed(el, elToMove, opts = {}) {\n const pos = opts.pos || this.getElementPos(el);\n const cvOff = opts.canvasOff || this.canvasRectOffset(el, pos);\n const toolbarH = elToMove.offsetHeight || 0;\n const toolbarW = elToMove.offsetWidth || 0;\n const elRight = pos.left + pos.width;\n const cv = this.getCanvasView();\n const frCvOff = cv.getPosition();\n const frameOffset = cv.getFrameOffset(el);\n const { event } = opts;\n\n let top = -toolbarH;\n let left = !isUndefined(opts.left) ? opts.left : pos.width - toolbarW;\n left = pos.left < -left ? -pos.left : left;\n left = elRight > frCvOff.width ? left - (elRight - frCvOff.width) : left;\n\n // Scroll with the window if the top edge is reached and the\n // element is bigger than the canvas\n const fullHeight = pos.height + toolbarH;\n const elIsShort = fullHeight < frameOffset.height;\n\n if (cvOff.top < toolbarH) {\n if (elIsShort) {\n top = top + fullHeight;\n } else {\n top = -cvOff.top < pos.height ? -cvOff.top : pos.height;\n }\n }\n\n const result = {\n top,\n left,\n canvasOffsetTop: cvOff.top,\n canvasOffsetLeft: cvOff.left,\n };\n\n // In this way I can catch data and also change the position strategy\n event && this.em.trigger(event, result);\n\n return result;\n }\n\n /**\n * Instead of simply returning e.clientX and e.clientY this function\n * calculates also the offset based on the canvas. This is helpful when you\n * need to get X and Y position while moving between the editor area and\n * canvas area, which is in the iframe\n * @param {Event} e\n * @return {Object}\n * @private\n */\n getMouseRelativePos(e, options) {\n var opts = options || {};\n var addTop = 0;\n var addLeft = 0;\n var subWinOffset = opts.subWinOffset;\n var doc = e.target.ownerDocument;\n var win = doc.defaultView || doc.parentWindow;\n var frame = win.frameElement;\n var yOffset = subWinOffset ? win.pageYOffset : 0;\n var xOffset = subWinOffset ? win.pageXOffset : 0;\n\n if (frame) {\n var frameRect = frame.getBoundingClientRect();\n addTop = frameRect.top || 0;\n addLeft = frameRect.left || 0;\n }\n\n return {\n y: e.clientY + addTop - yOffset,\n x: e.clientX + addLeft - xOffset,\n };\n }\n\n /**\n * X and Y mouse position relative to the canvas\n * @param {Event} ev\n * @return {Object}\n * @private\n */\n getMouseRelativeCanvas(ev, opts) {\n const zoom = this.getZoomDecimal();\n const { top, left } = this.canvasView.getPosition(opts);\n\n return {\n y: ev.clientY * zoom + top,\n x: ev.clientX * zoom + left,\n };\n }\n\n /**\n * Check if the canvas is focused\n * @returns {Boolean}\n */\n hasFocus() {\n return this.getDocument().hasFocus();\n }\n\n /**\n * Detects if some input is focused (input elements, text components, etc.)\n * @return {Boolean}\n * @private\n */\n isInputFocused() {\n const doc = this.getDocument();\n const frame = this.getFrameEl();\n const toIgnore = ['body', ...this.getConfig().notTextable];\n const docActive = frame && document.activeElement === frame;\n const focused = docActive ? doc && doc.activeElement : document.activeElement;\n\n return focused && !toIgnore.some(item => focused.matches(item));\n }\n\n /**\n * Scroll canvas to the element if it's not visible. The scrolling is\n * executed via `scrollIntoView` API and options of this method are\n * passed to it. For instance, you can scroll smoothly by using\n * `{ behavior: 'smooth' }`.\n * @param {HTMLElement|[Component]} el\n * @param {Object} [opts={}] Options, same as options for `scrollIntoView`\n * @param {Boolean} [opts.force=false] Force the scroll, even if the element is already visible\n * @example\n * const selected = editor.getSelected();\n * // Scroll smoothly (this behavior can be polyfilled)\n * canvas.scrollTo(selected, { behavior: 'smooth' });\n * // Force the scroll, even if the element is alredy visible\n * canvas.scrollTo(selected, { force: true });\n */\n scrollTo(el, opts = {}) {\n const elem = getElement(el);\n const view = elem && getViewEl(elem);\n view && view.scrollIntoView(opts);\n }\n\n /**\n * Start autoscroll\n * @private\n */\n startAutoscroll(frame) {\n const fr = (frame && frame.view) || this.em.getCurrentFrame();\n fr && fr.startAutoscroll();\n }\n\n /**\n * Stop autoscroll\n * @private\n */\n stopAutoscroll(frame) {\n const fr = (frame && frame.view) || this.em.getCurrentFrame();\n fr && fr.stopAutoscroll();\n }\n\n /**\n * Set canvas zoom value\n * @param {Number} value The zoom value, from 0 to 100\n * @returns {this}\n * @example\n * canvas.setZoom(50); // set zoom to 50%\n */\n setZoom(value) {\n this.canvas.set('zoom', parseFloat(value));\n return this;\n }\n\n /**\n * Get canvas zoom value\n * @returns {Number}\n * @example\n * canvas.setZoom(50); // set zoom to 50%\n * const zoom = canvas.getZoom(); // 50\n */\n getZoom() {\n return parseFloat(this.canvas.get('zoom'));\n }\n\n /**\n * Set canvas position coordinates\n * @param {Number} x Horizontal position\n * @param {Number} y Vertical position\n * @returns {this}\n * @example\n * canvas.setCoords(100, 100);\n */\n setCoords(x, y) {\n this.canvas.set({ x: parseFloat(x), y: parseFloat(y) });\n return this;\n }\n\n /**\n * Get canvas position coordinates\n * @returns {Object} Object containing coordinates\n * @example\n * canvas.setCoords(100, 100);\n * const coords = canvas.getCoords();\n * // { x: 100, y: 100 }\n */\n getCoords() {\n const { x, y } = this.canvas.attributes;\n return { x, y };\n }\n\n getZoomDecimal() {\n return this.getZoom() / 100;\n }\n\n getZoomMultiplier() {\n const zoom = this.getZoomDecimal();\n return zoom ? 1 / zoom : 1;\n }\n\n toggleFramesEvents(on) {\n const { style } = this.getFramesEl();\n style.pointerEvents = on ? '' : 'none';\n }\n\n getFrames() {\n return this.canvas.get('frames').map(item => item);\n }\n\n /**\n * Add new frame to the canvas\n * @param {Object} props Frame properties\n * @returns {[Frame]}\n * @example\n * canvas.addFrame({\n * name: 'Mobile home page',\n * x: 100, // Position in canvas\n * y: 100,\n * width: 500, // Frame dimensions\n * height: 600,\n * // device: 'DEVICE-ID',\n * components: [\n * '

Title frame

',\n * '

Paragraph frame

',\n * ],\n * styles: `\n * .testh { color: red; }\n * .testp { color: blue; }\n * `,\n * });\n */\n addFrame(props = {}, opts = {}) {\n return this.canvas.frames.add(new Frame({ ...props }, { em: this.em }), opts);\n }\n\n destroy() {\n this.canvas.stopListening();\n this.canvasView?.remove();\n [this.c, this.canvas, this.canvasView].forEach(i => (i = {}));\n ['em', 'model', 'droppable'].forEach(i => (this[i] = {}));\n }\n}\n","export default {\n // Style prefix\n stylePrefix: 'cm-',\n\n inlineCss: false,\n};\n","import { Model } from '../../common';\n\nexport default class HTMLGenerator extends Model {\n build(model, opts = {}) {\n const htmlOpts = {};\n const { em } = opts;\n\n // Remove unnecessary IDs\n if (opts.cleanId && em) {\n const rules = em.get('CssComposer').getAll();\n const idRules = rules\n .toJSON()\n .map(rule => {\n const sels = rule.selectors;\n const sel = sels && sels.length === 1 && sels.models[0];\n return sel && sel.isId() && sel.get('name');\n })\n .filter(i => i);\n\n htmlOpts.attributes = (mod, attrs) => {\n const { id } = attrs;\n if (\n id &&\n id[0] === 'i' && // all autogenerated IDs start with 'i'\n !mod.get('script') && // if the component has script, we have to leave the ID\n !mod.get('attributes').id && // id is not intentionally in attributes\n idRules.indexOf(id) < 0 // we shouldn't have any rule with this ID\n ) {\n delete attrs.id;\n }\n return attrs;\n };\n }\n\n return model.toHTML(htmlOpts);\n }\n}\n","import { each } from 'underscore';\nimport { Model, Collection } from '../../common';\n\nexport default class JsonGenerator extends Model {\n build(model) {\n var json = model.toJSON();\n this.beforeEach(json);\n\n each(\n json,\n function (v, attr) {\n var obj = json[attr];\n if (obj instanceof Model) {\n json[attr] = this.build(obj);\n } else if (obj instanceof Collection) {\n var coll = obj;\n json[attr] = [];\n if (coll.length) {\n coll.each(function (el, index) {\n json[attr][index] = this.build(el);\n }, this);\n }\n }\n },\n this\n );\n\n return json;\n }\n\n /**\n * Execute on each object\n * @param {Object} obj\n */\n beforeEach(obj) {\n delete obj.status;\n }\n}\n","import { bindAll } from 'underscore';\nimport { Model } from '../../common';\nimport { hasWin } from '../../utils/mixins';\n\nlet CodeMirror;\n\nif (hasWin()) {\n CodeMirror = require('codemirror/lib/codemirror');\n require('codemirror/mode/htmlmixed/htmlmixed');\n require('codemirror/mode/css/css');\n require('codemirror-formatting');\n}\n\nexport default class CodeMirrorEditor extends Model {\n defaults() {\n return {\n input: '',\n label: '',\n codeName: '',\n theme: 'hopscotch',\n readOnly: true,\n lineNumbers: true,\n };\n }\n\n init(el) {\n bindAll(this, 'onChange');\n this.editor = CodeMirror.fromTextArea(el, {\n dragDrop: false,\n lineWrapping: true,\n mode: this.get('codeName'),\n ...this.attributes,\n });\n this.element = el;\n this.editor.on('change', this.onChange);\n\n return this;\n }\n\n onChange() {\n this.trigger('update', this);\n }\n\n getEditor() {\n return this.editor;\n }\n\n /**\n * The element where the viewer is attached\n * @return {HTMLElement}\n */\n getElement() {\n return this.element;\n }\n\n /**\n * Set the element which contains the viewer attached.\n * Generally, it should be just a textarea, but some editor might require\n * a container for it some in that case this method can be used\n * @param {HTMLElement} el\n * @return {self}\n */\n setElement(el) {\n this.element = el;\n return this;\n }\n\n /**\n * Refresh the viewer\n * @return {self}\n */\n refresh() {\n this.getEditor().refresh();\n return this;\n }\n\n /**\n * Focus the viewer\n * @return {self}\n */\n focus() {\n this.getEditor().focus();\n return this;\n }\n\n getContent() {\n const ed = this.getEditor();\n return ed && ed.getValue();\n }\n\n /** @inheritdoc */\n setContent(v, opts = {}) {\n const { editor } = this;\n if (!editor) return;\n editor.setValue(v);\n\n if (editor.autoFormatRange) {\n CodeMirror.commands.selectAll(editor);\n editor.autoFormatRange(editor.getCursor(true), editor.getCursor(false));\n CodeMirror.commands.goDocStart(editor);\n }\n\n !opts.noRefresh && setTimeout(() => this.refresh());\n }\n}\n\nCodeMirrorEditor.prototype.CodeMirror = CodeMirror;\n","import { extend } from 'underscore';\nimport { Model } from '../../common';\n\nfunction isFunctionEmpty(fn) {\n const content = fn.toString().match(/\\{([\\s\\S]*)\\}/m)[1]; // content between first and last { }\n return content.replace(/^\\s*\\/\\/.*$/gm, '').trim().length === 0; // remove comments\n}\n\nexport default class JsGenerator extends Model {\n mapModel(model) {\n var code = '';\n var script = model.get('script-export') || model.get('script');\n var type = model.get('type');\n var comps = model.get('components');\n var id = model.getId();\n\n if (script) {\n // If the component has scripts we need to expose his ID\n var attr = model.get('attributes');\n attr = extend({}, attr, { id });\n model.set('attributes', attr, { silent: 1 });\n var scrStr = model.getScriptString(script);\n const scrProps = model.get('script-props');\n\n // If the script was updated, I'll put its code in a separate container\n if (model.get('scriptUpdated') && !scrProps) {\n this.mapJs[type + '-' + id] = { ids: [id], code: scrStr };\n } else {\n let props;\n const mapType = this.mapJs[type];\n\n if (scrProps) {\n props = model.__getScriptProps();\n }\n\n if (mapType) {\n mapType.ids.push(id);\n if (props) mapType.props[id] = props;\n } else {\n const res = { ids: [id], code: scrStr };\n if (props) res.props = { [id]: props };\n this.mapJs[type] = res;\n }\n }\n }\n\n comps.each(function (model) {\n code += this.mapModel(model);\n }, this);\n\n return code;\n }\n\n build(model) {\n this.mapJs = {};\n this.mapModel(model);\n let code = '';\n\n for (let type in this.mapJs) {\n const mapType = this.mapJs[type];\n\n if (!mapType.code) {\n continue;\n }\n\n if (mapType.props) {\n if (isFunctionEmpty(mapType.code)) {\n continue;\n }\n\n code += `\n var props = ${JSON.stringify(mapType.props)};\n var ids = Object.keys(props).map(function(id) { return '#'+id }).join(',');\n var els = document.querySelectorAll(ids);\n for (var i = 0, len = els.length; i < len; i++) {\n var el = els[i];\n (${mapType.code}.bind(el))(props[el.id]);\n }`;\n } else {\n // Deprecated\n const ids = '#' + mapType.ids.join(', #');\n code += `\n var items = document.querySelectorAll('${ids}');\n for (var i = 0, len = items.length; i < len; i++) {\n (function(){\\n${mapType.code}\\n}.bind(items[i]))();\n }`;\n }\n }\n\n return code;\n }\n}\n","import { View } from '../../common';\nimport html from '../../utils/html';\n\nexport default class EditorView extends View {\n template({ pfx, codeName, label }) {\n return html`\n
\n
${label}
\n
\n
\n `;\n }\n\n initialize(o) {\n this.config = o.config || {};\n this.pfx = this.config.stylePrefix;\n }\n\n render() {\n const { model, pfx, $el } = this;\n const obj = model.toJSON();\n obj.pfx = pfx;\n $el.html(this.template(obj));\n $el.attr('class', `${pfx}editor-c`);\n $el.find(`#${pfx}code`).append(model.get('input'));\n return this;\n }\n}\n","/**\n * - [addGenerator](#addgenerator)\n * - [getGenerator](#getgenerator)\n * - [getGenerators](#getgenerators)\n * - [addViewer](#addviewer)\n * - [getViewer](#getviewer)\n * - [getViewers](#getviewers)\n * - [updateViewer](#updateviewer)\n * - [getCode](#getcode)\n *\n *\n * Before using methods you should get first the module from the editor instance, in this way:\n *\n * ```js\n * var codeManager = editor.CodeManager;\n * ```\n *\n * @module CodeManager\n */\nimport { isUndefined } from 'underscore';\nimport defaults from './config/config';\nimport gHtml from './model/HtmlGenerator';\nimport gCss from './model/CssGenerator';\nimport gJson from './model/JsonGenerator';\nimport gJs from './model/JsGenerator';\nimport eCM from './model/CodeMirrorEditor';\nimport editorView from './view/EditorView';\n\nexport default () => {\n var c = {};\n var generators = {},\n defGenerators = {},\n viewers = {},\n defViewers = {};\n\n const defaultViewer = 'CodeMirror';\n\n return {\n getConfig() {\n return c;\n },\n\n config: c,\n\n EditorView: editorView,\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'CodeManager',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n */\n init(config) {\n c = config || {};\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n var ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n defGenerators.html = new gHtml();\n defGenerators.css = new gCss();\n defGenerators.json = new gJson();\n defGenerators.js = new gJs();\n defViewers.CodeMirror = new eCM();\n this.loadDefaultGenerators().loadDefaultViewers();\n\n return this;\n },\n\n /**\n * Add new code generator to the collection\n * @param {string} id Code generator ID\n * @param {Object} generator Code generator wrapper\n * @param {Function} generator.build Function that builds the code\n * @return {this}\n * @example\n * codeManager.addGenerator('html7',{\n * build: function(model){\n * return 'myCode';\n * }\n * });\n * */\n addGenerator(id, generator) {\n generators[id] = generator;\n return this;\n },\n\n /**\n * Get code generator by id\n * @param {string} id Code generator ID\n * @return {Object|null}\n * @example\n * var generator = codeManager.getGenerator('html7');\n * generator.build = function(model){\n * //extend\n * };\n * */\n getGenerator(id) {\n return generators[id] || null;\n },\n\n /**\n * Returns all code generators\n * @return {Array}\n * */\n getGenerators() {\n return generators;\n },\n\n /**\n * Add new code viewer\n * @param {string} id Code viewer ID\n * @param {Object} viewer Code viewer wrapper\n * @param {Function} viewer.init Set element on which viewer will be displayed\n * @param {Function} viewer.setContent Set content to the viewer\n * @return {this}\n * @example\n * codeManager.addViewer('ace',{\n * init: function(el){\n * var ace = require('ace-editor');\n * this.editor = ace.edit(el.id);\n * },\n * setContent: function(code){\n * this.editor.setValue(code);\n * }\n * });\n * */\n addViewer(id, viewer) {\n viewers[id] = viewer;\n return this;\n },\n\n /**\n * Get code viewer by id\n * @param {string} id Code viewer ID\n * @return {Object|null}\n * @example\n * var viewer = codeManager.getViewer('ace');\n * */\n getViewer(id) {\n return viewers[id] || null;\n },\n\n /**\n * Returns all code viewers\n * @return {Array}\n * */\n getViewers() {\n return viewers;\n },\n\n createViewer(opts = {}) {\n const type = !isUndefined(opts.type) ? opts.type : defaultViewer;\n const viewer = this.getViewer(type) && this.getViewer(type).clone();\n const cont = document.createElement('div');\n const txtarea = document.createElement('textarea');\n cont.appendChild(txtarea);\n viewer.set(opts);\n viewer.init(txtarea);\n viewer.setElement(cont);\n\n return viewer;\n },\n\n /**\n * Update code viewer content\n * @param {Object} viewer Viewer instance\n * @param {string} code Code string\n * @example\n * var AceViewer = codeManager.getViewer('ace');\n * // ...\n * var viewer = AceViewer.init(el);\n * // ...\n * codeManager.updateViewer(AceViewer, 'code');\n * */\n updateViewer(viewer, code) {\n viewer.setContent(code);\n },\n\n /**\n * Get code from model\n * @param {Object} model Any kind of model that will be passed to the build method of generator\n * @param {string} genId Code generator id\n * @param {Object} [opt] Options\n * @return {string}\n * @example\n * var codeStr = codeManager.getCode(model, 'html');\n * */\n getCode(model, genId, opt = {}) {\n opt.em = c.em;\n var generator = this.getGenerator(genId);\n return generator ? generator.build(model, opt) : '';\n },\n\n /**\n * Load default code generators\n * @return {this}\n * @private\n * */\n loadDefaultGenerators() {\n for (var id in defGenerators) this.addGenerator(id, defGenerators[id]);\n\n return this;\n },\n\n /**\n * Load default code viewers\n * @return {this}\n * @private\n * */\n loadDefaultViewers() {\n for (var id in defViewers) this.addViewer(id, defViewers[id]);\n\n return this;\n },\n\n destroy() {\n [c, generators, defGenerators, viewers, defViewers].forEach(i => (i = {}));\n },\n };\n};\n","import { bindAll, isUndefined, each } from 'underscore';\nimport { Model } from '../../common';\nimport { hasWin } from '../../utils/mixins';\n\nconst maxValue = Number.MAX_VALUE;\n\nexport const getMediaLength = mediaQuery => {\n const length = /(-?\\d*\\.?\\d+)\\w{0,}/.exec(mediaQuery);\n return !length ? '' : length[0];\n};\n\nexport default class CssGenerator extends Model {\n initialize() {\n bindAll(this, 'sortRules');\n this.compCls = [];\n this.ids = [];\n }\n\n /**\n * Get CSS from a component\n * @param {Model} model\n * @return {String}\n */\n buildFromModel(model, opts = {}) {\n let code = '';\n const em = this.em;\n const avoidInline = em && em.getConfig().avoidInlineStyle;\n const style = model.styleToString();\n const classes = model.get('classes');\n this.ids.push(`#${model.getId()}`);\n\n // Let's know what classes I've found\n classes.each(model => this.compCls.push(model.getFullName()));\n\n if (!avoidInline && style) {\n code = `#${model.getId()}{${style}}`;\n }\n\n const components = model.components();\n components.each(model => (code += this.buildFromModel(model, opts)));\n return code;\n }\n\n build(model, opts = {}) {\n const { json } = opts;\n const em = opts.em || '';\n const cssc = opts.cssc || (em && em.get('CssComposer'));\n this.em = em;\n this.compCls = [];\n this.ids = [];\n this.model = model;\n const codeJson = [];\n let code = model ? this.buildFromModel(model, opts) : '';\n const clearStyles = isUndefined(opts.clearStyles) && em ? em.getConfig().clearStyles : opts.clearStyles;\n\n if (cssc) {\n let rules = opts.rules || cssc.getAll();\n const atRules = {};\n const dump = [];\n\n if (opts.onlyMatched && model && hasWin()) {\n rules = this.matchedRules(model, rules);\n }\n\n rules.forEach(rule => {\n const atRule = rule.getAtRule();\n\n if (atRule) {\n const mRules = atRules[atRule];\n if (mRules) {\n mRules.push(rule);\n } else {\n atRules[atRule] = [rule];\n }\n return;\n }\n\n const res = this.buildFromRule(rule, dump, opts);\n\n if (json) {\n codeJson.push(res);\n } else {\n code += res;\n }\n });\n\n this.sortMediaObject(atRules).forEach(item => {\n let rulesStr = '';\n const atRule = item.key;\n const mRules = item.value;\n\n mRules.forEach(rule => {\n const ruleStr = this.buildFromRule(rule, dump, opts);\n\n if (rule.get('singleAtRule')) {\n code += `${atRule}{${ruleStr}}`;\n } else {\n rulesStr += ruleStr;\n }\n\n json && codeJson.push(ruleStr);\n });\n\n if (rulesStr) {\n code += `${atRule}{${rulesStr}}`;\n }\n });\n\n em && clearStyles && rules.remove && rules.remove(dump);\n }\n\n return json ? codeJson.filter(r => r) : code;\n }\n\n /**\n * Get CSS from the rule model\n * @param {Model} rule\n * @return {string} CSS string\n */\n buildFromRule(rule, dump, opts = {}) {\n let result = '';\n const { model } = this;\n const selectorStrNoAdd = rule.selectorsToString({ skipAdd: 1 });\n const selectorsAdd = rule.get('selectorsAdd');\n const singleAtRule = rule.get('singleAtRule');\n let found;\n\n // This will not render a rule if there is no its component\n rule.get('selectors').each(selector => {\n const name = selector.getFullName();\n if (this.compCls.indexOf(name) >= 0 || this.ids.indexOf(name) >= 0 || opts.keepUnusedStyles) {\n found = 1;\n }\n });\n\n if ((selectorStrNoAdd && found) || selectorsAdd || singleAtRule || !model) {\n const block = rule.getDeclaration({ body: 1 });\n block && (opts.json ? (result = rule) : (result += block));\n } else {\n dump.push(rule);\n }\n\n return result;\n }\n\n /**\n * Get matched rules of a component\n * @param {Component} component\n * @param {Array} rules\n * @returns {Array}\n */\n matchedRules(component, rules) {\n const el = component.getEl();\n let result = [];\n\n rules.forEach(rule => {\n try {\n if (\n rule\n .selectorsToString()\n .split(',')\n .some(selector => el.matches(this.__cleanSelector(selector)))\n ) {\n result.push(rule);\n }\n } catch (err) {}\n });\n\n component.components().forEach(component => {\n result = result.concat(this.matchedRules(component, rules));\n });\n\n // Remove duplicates\n result = result.filter((rule, i) => result.indexOf(rule) === i);\n\n return result;\n }\n\n /**\n * Get the numeric length of the media query string\n * @param {String} mediaQuery Media query string\n * @return {Number}\n */\n getQueryLength(mediaQuery) {\n const length = /(-?\\d*\\.?\\d+)\\w{0,}/.exec(mediaQuery);\n if (!length) return maxValue;\n\n return parseFloat(length[1]);\n }\n\n /**\n * Return a sorted array from media query object\n * @param {Object} items\n * @return {Array}\n */\n sortMediaObject(items = {}) {\n const itemsArr = [];\n each(items, (value, key) => itemsArr.push({ key, value }));\n return itemsArr.sort((a, b) => {\n const isMobFirst = [a.key, b.key].every(mquery => mquery.indexOf('min-width') !== -1);\n const left = isMobFirst ? a.key : b.key;\n const right = isMobFirst ? b.key : a.key;\n return this.getQueryLength(left) - this.getQueryLength(right);\n });\n }\n\n sortRules(a, b) {\n const getKey = rule => rule.get('mediaText');\n const isMobFirst = [getKey(a), getKey(b)].every(q => q.indexOf('min-width') !== -1);\n const left = isMobFirst ? getKey(a) : getKey(b);\n const right = isMobFirst ? getKey(b) : getKey(a);\n return this.getQueryLength(left) - this.getQueryLength(right);\n }\n\n /**\n * Return passed selector without states\n * @param {String} selector\n * @returns {String}\n * @private\n */\n __cleanSelector(selector) {\n return selector\n .split(' ')\n .map(item => item.split(':')[0])\n .join(' ');\n }\n}\n","export default {\n stylePrefix: 'com-',\n\n // Default array of commands\n defaults: [],\n\n // If true, stateful commands (with `run` and `stop` methods) can't be runned multiple times.\n // So, if the command is already active, running it again will not execute the `run` method\n strict: 1,\n};\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/commands/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * commands: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API and listen to its events. Before using these methods, you should get the module from the instance.\n *\n * ```js\n * // Listen to events\n * editor.on('run', () => { ... });\n *\n * // Use the API\n * const commands = editor.Commands;\n * commands.add(...);\n * ```\n *\n ** ## Available Events\n * * `run:{commandName}` - Triggered when some command is called to run (eg. editor.runCommand('preview'))\n * * `stop:{commandName}` - Triggered when some command is called to stop (eg. editor.stopCommand('preview'))\n * * `run:{commandName}:before` - Triggered before the command is called\n * * `stop:{commandName}:before` - Triggered before the command is called to stop\n * * `abort:{commandName}` - Triggered when the command execution is aborted (`editor.on(`run:preview:before`, opts => opts.abort = 1);`)\n * * `run` - Triggered on run of any command. The id and the result are passed as arguments to the callback\n * * `stop` - Triggered on stop of any command. The id and the result are passed as arguments to the callback\n *\n * ## Methods\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getall)\n * * [extend](#extend)\n * * [has](#has)\n * * [run](#run)\n * * [stop](#stop)\n * * [isActive](#isactive)\n * * [getActive](#getactive)\n *\n * @module Commands\n */\n\nimport { isFunction, includes } from 'underscore';\nimport CommandAbstract from './view/CommandAbstract';\nimport defaults from './config/config';\nimport { eventDrag } from '../dom_components/model/Component';\n\nconst commandsDef = [\n ['preview', 'Preview', 'preview'],\n ['resize', 'Resize', 'resize'],\n ['fullscreen', 'Fullscreen', 'fullscreen'],\n ['copy', 'CopyComponent'],\n ['paste', 'PasteComponent'],\n ['canvas-move', 'CanvasMove'],\n ['canvas-clear', 'CanvasClear'],\n ['open-code', 'ExportTemplate', 'export-template'],\n ['open-layers', 'OpenLayers', 'open-layers'],\n ['open-styles', 'OpenStyleManager', 'open-sm'],\n ['open-traits', 'OpenTraitManager', 'open-tm'],\n ['open-blocks', 'OpenBlocks', 'open-blocks'],\n ['open-assets', 'OpenAssets', 'open-assets'],\n ['component-select', 'SelectComponent', 'select-comp'],\n ['component-outline', 'SwitchVisibility', 'sw-visibility'],\n ['component-offset', 'ShowOffset', 'show-offset'],\n ['component-move', 'MoveComponent', 'move-comp'],\n ['component-next', 'ComponentNext'],\n ['component-prev', 'ComponentPrev'],\n ['component-enter', 'ComponentEnter'],\n ['component-exit', 'ComponentExit', 'select-parent'],\n ['component-delete', 'ComponentDelete'],\n ['component-style-clear', 'ComponentStyleClear'],\n ['component-drag', 'ComponentDrag'],\n];\n\nexport default () => {\n let em;\n let c = {};\n const commands = {};\n const defaultCommands = {};\n const active = {};\n\n // Need it here as it would be used below\n const add = function (id, obj) {\n if (isFunction(obj)) obj = { run: obj };\n if (!obj.stop) obj.noStop = 1;\n delete obj.initialize;\n obj.id = id;\n commands[id] = CommandAbstract.extend(obj);\n return this;\n };\n\n return {\n CommandAbstract,\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Commands',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config = {}) {\n c = {\n ...defaults,\n ...config,\n };\n em = c.em;\n const ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n // Load commands passed via configuration\n Object.keys(c.defaults).forEach(k => {\n const obj = c.defaults[k];\n if (obj.id) this.add(obj.id, obj);\n });\n\n defaultCommands['tlb-delete'] = {\n run(ed) {\n return ed.runCommand('core:component-delete');\n },\n };\n\n defaultCommands['tlb-clone'] = {\n run(ed) {\n ed.runCommand('core:copy');\n ed.runCommand('core:paste', { action: 'clone-component' });\n },\n };\n\n defaultCommands['tlb-move'] = {\n run(ed, sender, opts = {}) {\n let dragger;\n const em = ed.getModel();\n const event = opts && opts.event;\n const { target } = opts;\n const sel = target || ed.getSelected();\n const selAll = target ? [target] : [...ed.getSelectedAll()];\n const nativeDrag = event && event.type == 'dragstart';\n const defComOptions = { preserveSelected: 1 };\n const modes = ['absolute', 'translate'];\n\n if (!sel || !sel.get('draggable')) {\n return em.logWarning('The element is not draggable');\n }\n\n const mode = sel.get('dmode') || em.get('dmode');\n const hideTlb = () => em.stopDefault(defComOptions);\n const altMode = includes(modes, mode);\n selAll.forEach(sel => sel.trigger('disable'));\n\n // Without setTimeout the ghost image disappears\n nativeDrag ? setTimeout(hideTlb, 0) : hideTlb();\n\n const onStart = data => {\n em.trigger(`${eventDrag}:start`, data);\n };\n const onDrag = data => {\n em.trigger(eventDrag, data);\n };\n const onEnd = (e, opts, data) => {\n selAll.forEach(sel => sel.set('status', 'selected'));\n ed.select(selAll);\n sel.emitUpdate();\n em.trigger(`${eventDrag}:end`, data);\n\n // Defer selectComponent in order to prevent canvas \"freeze\" #2692\n setTimeout(() => em.runDefault(defComOptions));\n\n // Dirty patch to prevent parent selection on drop\n (altMode || data.cancelled) && em.set('_cmpDrag', 1);\n };\n\n if (altMode) {\n // TODO move grabbing func in editor/canvas from the Sorter\n dragger = ed.runCommand('core:component-drag', {\n guidesInfo: 1,\n mode,\n target: sel,\n onStart,\n onDrag,\n onEnd,\n event,\n });\n } else {\n if (nativeDrag) {\n event.dataTransfer.setDragImage(sel.view.el, 0, 0);\n //sel.set('status', 'freezed');\n }\n\n const cmdMove = ed.Commands.get('move-comp');\n cmdMove.onStart = onStart;\n cmdMove.onDrag = onDrag;\n cmdMove.onEndMoveFromModel = onEnd;\n cmdMove.initSorterFromModels(selAll);\n }\n\n selAll.forEach(sel => sel.set('status', 'freezed-selected'));\n },\n };\n\n // Core commands\n defaultCommands['core:undo'] = e => e.UndoManager.undo();\n defaultCommands['core:redo'] = e => e.UndoManager.redo();\n commandsDef.forEach(item => {\n const oldCmd = item[2];\n const cmd = require(`./view/${item[1]}`).default;\n const cmdName = `core:${item[0]}`;\n defaultCommands[cmdName] = cmd;\n if (oldCmd) {\n defaultCommands[oldCmd] = cmd;\n // Propogate old commands (can be removed once we stop to call old commands)\n ['run', 'stop'].forEach(name => {\n em.on(`${name}:${oldCmd}`, (...args) => em.trigger(`${name}:${cmdName}`, ...args));\n });\n }\n });\n\n if (c.em) c.model = c.em.get('Canvas');\n\n this.loadDefaultCommands();\n\n return this;\n },\n\n /**\n * Add new command to the collection\n * @param\t{string} id Command's ID\n * @param\t{Object|Function} command Object representing your command,\n * By passing just a function it's intended as a stateless command\n * (just like passing an object with only `run` method).\n * @return {this}\n * @example\n * commands.add('myCommand', {\n * \trun(editor, sender) {\n * \t\talert('Hello world!');\n * \t},\n * \tstop(editor, sender) {\n * \t},\n * });\n * // As a function\n * commands.add('myCommand2', editor => { ... });\n * */\n add,\n\n /**\n * Get command by ID\n * @param\t{string}\tid Command's ID\n * @return {Object} Object representing the command\n * @example\n * var myCommand = commands.get('myCommand');\n * myCommand.run();\n * */\n get(id) {\n let el = commands[id];\n\n if (isFunction(el)) {\n el = new el(c);\n commands[id] = el;\n } else if (!el) {\n em.logWarning(`'${id}' command not found`);\n }\n\n return el;\n },\n\n /**\n * Extend the command. The command to extend should be defined as an object\n * @param\t{string}\tid Command's ID\n * @param {Object} Object with the new command functions\n * @returns {this}\n * @example\n * commands.extend('old-command', {\n * someInnerFunction() {\n * // ...\n * }\n * });\n * */\n extend(id, cmd = {}) {\n const command = this.get(id);\n if (command) {\n const cmdObj = {\n ...command.constructor.prototype,\n ...cmd,\n };\n this.add(id, cmdObj);\n // Extend also old name commands if exist\n const oldCmd = commandsDef.filter(cmd => `core:${cmd[0]}` === id && cmd[2])[0];\n oldCmd && this.add(oldCmd[2], cmdObj);\n }\n return this;\n },\n\n /**\n * Check if command exists\n * @param\t{string}\tid Command's ID\n * @return {Boolean}\n * */\n has(id) {\n return !!commands[id];\n },\n\n /**\n * Get an object containing all the commands\n * @return {Object}\n */\n getAll() {\n return commands;\n },\n\n /**\n * Execute the command\n * @param {String} id Command ID\n * @param {Object} [options={}] Options\n * @return {*} The return is defined by the command\n * @example\n * commands.run('myCommand', { someOption: 1 });\n */\n run(id, options = {}) {\n return this.runCommand(this.get(id), options);\n },\n\n /**\n * Stop the command\n * @param {String} id Command ID\n * @param {Object} [options={}] Options\n * @return {*} The return is defined by the command\n * @example\n * commands.stop('myCommand', { someOption: 1 });\n */\n stop(id, options = {}) {\n return this.stopCommand(this.get(id), options);\n },\n\n /**\n * Check if the command is active. You activate commands with `run`\n * and disable them with `stop`. If the command was created without `stop`\n * method it can't be registered as active\n * @param {String} id Command id\n * @return {Boolean}\n * @example\n * const cId = 'some-command';\n * commands.run(cId);\n * commands.isActive(cId);\n * // -> true\n * commands.stop(cId);\n * commands.isActive(cId);\n * // -> false\n */\n isActive(id) {\n return this.getActive().hasOwnProperty(id);\n },\n\n /**\n * Get all active commands\n * @return {Object}\n * @example\n * console.log(commands.getActive());\n * // -> { someCommand: itsLastReturn, anotherOne: ... };\n */\n getActive() {\n return active;\n },\n\n /**\n * Load default commands\n * @return {this}\n * @private\n * */\n loadDefaultCommands() {\n for (var id in defaultCommands) {\n this.add(id, defaultCommands[id]);\n }\n\n return this;\n },\n\n /**\n * Run command via its object\n * @param {Object} command\n * @param {Object} options\n * @return {*} Result of the command\n * @private\n */\n runCommand(command, options = {}) {\n let result;\n\n if (command && command.run) {\n const id = command.id;\n const editor = em.get('Editor');\n\n if (!this.isActive(id) || options.force || !c.strict) {\n result = editor && command.callRun(editor, options);\n if (id && command.stop && !command.noStop && !options.abort) {\n active[id] = result;\n }\n }\n }\n\n return result;\n },\n\n /**\n * Stop the command\n * @param {Object} command\n * @param {Object} options\n * @return {*} Result of the command\n * @private\n */\n stopCommand(command, options = {}) {\n let result;\n\n if (command && command.run) {\n const id = command.id;\n const editor = em.get('Editor');\n\n if (this.isActive(id) || options.force || !c.strict) {\n if (id) delete active[id];\n result = command.callStop(editor, options);\n }\n }\n\n return result;\n },\n\n /**\n * Create anonymous Command instance\n * @param {Object} command Command object\n * @return {Command}\n * @private\n * */\n create(command) {\n if (!command.stop) command.noStop = 1;\n const cmd = CommandAbstract.extend(command);\n return new cmd(c);\n },\n\n destroy() {\n [em, c, commands, defaultCommands, active].forEach(i => (i = {}));\n },\n };\n};\n","export default {\n run(ed) {\n ed.DomComponents.clear();\n ed.CssComposer.clear();\n },\n};\n","import { bindAll } from 'underscore';\nimport { on, off, getKeyChar } from '../../utils/mixins';\nimport Dragger from '../../utils/Dragger';\n\nexport default {\n run(ed) {\n bindAll(this, 'onKeyUp', 'enableDragger', 'disableDragger');\n this.editor = ed;\n this.canvasModel = this.canvas.getCanvasView().model;\n this.toggleMove(1);\n },\n stop(ed) {\n this.toggleMove();\n this.disableDragger();\n },\n\n onKeyUp(ev) {\n if (getKeyChar(ev) === ' ') {\n this.editor.stopCommand(this.id);\n }\n },\n\n enableDragger(ev) {\n this.toggleDragger(1, ev);\n },\n\n disableDragger(ev) {\n this.toggleDragger(0, ev);\n },\n\n toggleDragger(enable, ev) {\n const { canvasModel, em } = this;\n let { dragger } = this;\n const methodCls = enable ? 'add' : 'remove';\n this.getCanvas().classList[methodCls](`${this.ppfx}is__grabbing`);\n\n if (!dragger) {\n dragger = new Dragger({\n getPosition() {\n return {\n x: canvasModel.get('x'),\n y: canvasModel.get('y'),\n };\n },\n setPosition({ x, y }) {\n canvasModel.set({ x, y });\n },\n onStart(ev, dragger) {\n em.trigger('canvas:move:start', dragger);\n },\n onDrag(ev, dragger) {\n em.trigger('canvas:move', dragger);\n },\n onEnd(ev, dragger) {\n em.trigger('canvas:move:end', dragger);\n },\n });\n this.dragger = dragger;\n }\n\n enable ? dragger.start(ev) : dragger.stop();\n },\n\n toggleMove(enable) {\n const { ppfx } = this;\n const methodCls = enable ? 'add' : 'remove';\n const methodEv = enable ? 'on' : 'off';\n const methodsEv = { on, off };\n const canvas = this.getCanvas();\n const classes = [`${ppfx}is__grab`];\n !enable && classes.push(`${ppfx}is__grabbing`);\n classes.forEach(cls => canvas.classList[methodCls](cls));\n methodsEv[methodEv](document, 'keyup', this.onKeyUp);\n methodsEv[methodEv](canvas, 'mousedown', this.enableDragger);\n methodsEv[methodEv](document, 'mouseup', this.disableDragger);\n },\n};\n","import { Model } from '../../common';\n\nexport default class CommandAbstract extends Model {\n /**\n * Initialize method that can't be removed\n * @param {Object} o Options\n * @private\n * */\n initialize(o) {\n this.config = o || {};\n this.editorModel = this.em = this.config.em || {};\n this.pfx = this.config.stylePrefix;\n this.ppfx = this.config.pStylePrefix;\n this.hoverClass = this.pfx + 'hover';\n this.badgeClass = this.pfx + 'badge';\n this.plhClass = this.pfx + 'placeholder';\n this.freezClass = this.ppfx + 'freezed';\n\n this.canvas = this.em.get && this.em.get('Canvas');\n this.init(this.config);\n }\n\n /**\n * On frame scroll callback\n * @param {[type]} e [description]\n * @return {[type]} [description]\n */\n onFrameScroll(e) {}\n\n /**\n * Returns canval element\n * @return {HTMLElement}\n */\n getCanvas() {\n return this.canvas.getElement();\n }\n\n /**\n * Get canvas body element\n * @return {HTMLElement}\n */\n getCanvasBody() {\n return this.canvas.getBody();\n }\n\n /**\n * Get canvas wrapper element\n * @return {HTMLElement}\n */\n getCanvasTools() {\n return this.canvas.getToolsEl();\n }\n\n /**\n * Get the offset of the element\n * @param {HTMLElement} el\n * @return {Object}\n */\n offset(el) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top + el.ownerDocument.body.scrollTop,\n left: rect.left + el.ownerDocument.body.scrollLeft,\n };\n }\n\n /**\n * Callback triggered after initialize\n * @param {Object} o Options\n * @private\n * */\n init(o) {}\n\n /**\n * Method that run command\n * @param {Object} editor Editor instance\n * @param {Object} [options={}] Options\n * @private\n * */\n callRun(editor, options = {}) {\n const id = this.id;\n editor.trigger(`run:${id}:before`, options);\n\n if (options && options.abort) {\n editor.trigger(`abort:${id}`, options);\n return;\n }\n\n const sender = options.sender || editor;\n const result = this.run(editor, sender, options);\n editor.trigger(`run:${id}`, result, options);\n editor.trigger('run', id, result, options);\n return result;\n }\n\n /**\n * Method that run command\n * @param {Object} editor Editor instance\n * @param {Object} [options={}] Options\n * @private\n * */\n callStop(editor, options = {}) {\n const id = this.id;\n const sender = options.sender || editor;\n editor.trigger(`stop:${id}:before`, options);\n const result = this.stop(editor, sender, options);\n editor.trigger(`stop:${id}`, result, options);\n editor.trigger('stop', id, result, options);\n return result;\n }\n\n /**\n * Stop current command\n */\n stopCommand() {\n this.em.get('Commands').stop(this.id);\n }\n\n /**\n * Method that run command\n * @param {Object} em Editor model\n * @param {Object} sender Button sender\n * @private\n * */\n run(em, sender) {}\n\n /**\n * Method that stop command\n * @param {Object} em Editor model\n * @param {Object} sender Button sender\n * @private\n * */\n stop(em, sender) {}\n}\n","import { isArray } from 'underscore';\n\nexport default {\n run(ed, s, opts = {}) {\n const toSelect = [];\n let components = opts.component || ed.getSelectedAll();\n components = isArray(components) ? [...components] : [components];\n\n components.filter(Boolean).forEach(component => {\n if (!component.get('removable')) {\n toSelect.push(component);\n return this.em.logWarning('The element is not removable', {\n component,\n });\n }\n component.remove();\n });\n\n ed.select(toSelect);\n\n return components;\n },\n};\n","import { keys, bindAll, each, isUndefined, debounce } from 'underscore';\nimport Dragger from '../../utils/Dragger';\n\nconst evName = 'dmode';\n\nexport default {\n run(editor, sender, opts = {}) {\n bindAll(\n this,\n 'setPosition',\n 'onStart',\n 'onDrag',\n 'onEnd',\n 'getPosition',\n 'getGuidesStatic',\n 'renderGuide',\n 'getGuidesTarget'\n );\n const { target, event, mode, dragger = {} } = opts;\n const el = target.getEl();\n const config = {\n doc: el.ownerDocument,\n onStart: this.onStart,\n onEnd: this.onEnd,\n onDrag: this.onDrag,\n getPosition: this.getPosition,\n setPosition: this.setPosition,\n guidesStatic: () => this.guidesStatic,\n guidesTarget: () => this.guidesTarget,\n ...dragger,\n };\n this.setupGuides();\n this.opts = opts;\n this.editor = editor;\n this.em = editor.getModel();\n this.target = target;\n this.isTran = mode == 'translate';\n this.guidesContainer = this.getGuidesContainer();\n this.guidesTarget = this.getGuidesTarget();\n this.guidesStatic = this.getGuidesStatic();\n let drg = this.dragger;\n\n if (!drg) {\n drg = new Dragger(config);\n this.dragger = drg;\n } else {\n drg.setOptions(config);\n }\n\n event && drg.start(event);\n this.toggleDrag(1);\n this.em.trigger(`${evName}:start`, this.getEventOpts());\n\n return drg;\n },\n\n getEventOpts() {\n return {\n mode: this.opts.mode,\n target: this.target,\n guidesTarget: this.guidesTarget,\n guidesStatic: this.guidesStatic,\n };\n },\n\n stop() {\n this.toggleDrag();\n },\n\n setupGuides() {\n (this.guides || []).forEach(item => {\n const { guide } = item;\n guide && guide.parentNode.removeChild(guide);\n });\n this.guides = [];\n },\n\n getGuidesContainer() {\n let { guidesEl } = this;\n\n if (!guidesEl) {\n const { editor, em, opts } = this;\n const pfx = editor.getConfig().stylePrefix;\n const elInfoX = document.createElement('div');\n const elInfoY = document.createElement('div');\n const guideContent = `
\n
\n
`;\n guidesEl = document.createElement('div');\n guidesEl.className = `${pfx}guides`;\n elInfoX.className = `${pfx}guide-info ${pfx}guide-info__x`;\n elInfoY.className = `${pfx}guide-info ${pfx}guide-info__y`;\n elInfoX.innerHTML = guideContent;\n elInfoY.innerHTML = guideContent;\n guidesEl.appendChild(elInfoX);\n guidesEl.appendChild(elInfoY);\n editor.Canvas.getGlobalToolsEl().appendChild(guidesEl);\n this.guidesEl = guidesEl;\n this.elGuideInfoX = elInfoX;\n this.elGuideInfoY = elInfoY;\n this.elGuideInfoContentX = elInfoX.querySelector(`.${pfx}guide-info__content`);\n this.elGuideInfoContentY = elInfoY.querySelector(`.${pfx}guide-info__content`);\n\n em.on(\n 'canvas:update frame:scroll',\n debounce(() => {\n this.updateGuides();\n opts.debug && this.guides.forEach(item => this.renderGuide(item));\n }, 200)\n );\n }\n\n return guidesEl;\n },\n\n getGuidesStatic() {\n let result = [];\n const el = this.target.getEl();\n const { parentNode = {} } = el;\n each(parentNode.children, item => (result = result.concat(el !== item ? this.getElementGuides(item) : [])));\n\n return result.concat(this.getElementGuides(parentNode));\n },\n\n getGuidesTarget() {\n return this.getElementGuides(this.target.getEl());\n },\n\n updateGuides(guides) {\n let lastEl, lastPos;\n (guides || this.guides).forEach(item => {\n const { origin } = item;\n const pos = lastEl === origin ? lastPos : this.getElementPos(origin);\n lastEl = origin;\n lastPos = pos;\n each(this.getGuidePosUpdate(item, pos), (val, key) => (item[key] = val));\n item.originRect = pos;\n });\n },\n\n getGuidePosUpdate(item, rect) {\n const result = {};\n const { top, height, left, width } = rect;\n\n switch (item.type) {\n case 't':\n result.y = top;\n break;\n case 'b':\n result.y = top + height;\n break;\n case 'l':\n result.x = left;\n break;\n case 'r':\n result.x = left + width;\n break;\n case 'x':\n result.x = left + width / 2;\n break;\n case 'y':\n result.y = top + height / 2;\n break;\n }\n\n return result;\n },\n\n renderGuide(item = {}) {\n const el = item.guide || document.createElement('div');\n const un = 'px';\n const guideSize = item.active ? 2 : 1;\n let numEl = el.children[0];\n el.style = `position: absolute; background-color: ${item.active ? 'green' : 'red'};`;\n\n if (!el.children.length) {\n numEl = document.createElement('div');\n numEl.style = 'position: absolute; color: red; padding: 5px; top: 0; left: 0;';\n el.appendChild(numEl);\n }\n\n if (item.y) {\n el.style.width = '100%';\n el.style.height = `${guideSize}${un}`;\n el.style.top = `${item.y}${un}`;\n el.style.left = 0;\n } else {\n el.style.width = `${guideSize}${un}`;\n el.style.height = '100%';\n el.style.left = `${item.x}${un}`;\n el.style.top = `0${un}`;\n }\n\n !item.guide && this.guidesContainer.appendChild(el);\n return el;\n },\n\n getElementPos(el) {\n return this.editor.Canvas.getElementPos(el, { noScroll: 1 });\n },\n\n getElementGuides(el) {\n const { opts } = this;\n const originRect = this.getElementPos(el);\n const { top, height, left, width } = originRect;\n const guides = [\n { type: 't', y: top }, // Top\n { type: 'b', y: top + height }, // Bottom\n { type: 'l', x: left }, // Left\n { type: 'r', x: left + width }, // Right\n { type: 'x', x: left + width / 2 }, // Mid x\n { type: 'y', y: top + height / 2 }, // Mid y\n ].map(item => ({\n ...item,\n origin: el,\n originRect,\n guide: opts.debug && this.renderGuide(item),\n }));\n guides.forEach(item => this.guides.push(item));\n\n return guides;\n },\n\n getTranslate(transform, axis = 'x') {\n let result = 0;\n (transform || '').split(' ').forEach(item => {\n const itemStr = item.trim();\n const fn = `translate${axis.toUpperCase()}(`;\n if (itemStr.indexOf(fn) === 0) result = parseFloat(itemStr.replace(fn, ''));\n });\n return result;\n },\n\n setTranslate(transform, axis, value) {\n const fn = `translate${axis.toUpperCase()}(`;\n const val = `${fn}${value})`;\n let result = (transform || '')\n .split(' ')\n .map(item => {\n const itemStr = item.trim();\n if (itemStr.indexOf(fn) === 0) item = val;\n return item;\n })\n .join(' ');\n if (result.indexOf(fn) < 0) result += ` ${val}`;\n\n return result;\n },\n\n getPosition() {\n const { target, isTran } = this;\n const { left, top, transform } = target.getStyle();\n let x = 0;\n let y = 0;\n\n if (isTran) {\n x = this.getTranslate(transform);\n y = this.getTranslate(transform, 'y');\n } else {\n x = parseFloat(left || 0);\n y = parseFloat(top || 0);\n }\n\n return { x, y };\n },\n\n setPosition({ x, y, end, position, width, height }) {\n const { target, isTran, em } = this;\n const unit = 'px';\n const en = !end ? 1 : ''; // this will trigger the final change\n const left = `${x}${unit}`;\n const top = `${y}${unit}`;\n let styleUp = {};\n\n if (isTran) {\n let transform = target.getStyle()['transform'] || '';\n transform = this.setTranslate(transform, 'x', left);\n transform = this.setTranslate(transform, 'y', top);\n styleUp = { transform, en };\n target.addStyle(styleUp, { avoidStore: !end });\n } else {\n const adds = { position, width, height };\n const style = { left, top, en };\n keys(adds).forEach(add => {\n const prop = adds[add];\n if (prop) style[add] = prop;\n });\n styleUp = style;\n target.addStyle(styleUp, { avoidStore: !end });\n }\n\n // Update StyleManager properties\n em.getSelected() && keys(styleUp).forEach(i => em.trigger(`update:component:style:${i}`));\n },\n\n _getDragData() {\n const { target } = this;\n return {\n target,\n parent: target.parent(),\n index: target.index(),\n };\n },\n\n onStart(event) {\n const { target, editor, isTran, opts } = this;\n const { center, onStart } = opts;\n const { Canvas } = editor;\n const style = target.getStyle();\n const position = 'absolute';\n const relPos = [position, 'relative'];\n onStart && onStart(this._getDragData());\n if (isTran) return;\n\n if (style.position !== position) {\n let { left, top, width, height } = Canvas.offset(target.getEl());\n let parent = target.parent();\n let parentRel;\n\n // Check for the relative parent\n do {\n const pStyle = parent.getStyle();\n parentRel = relPos.indexOf(pStyle.position) >= 0 ? parent : null;\n parent = parent.parent();\n } while (parent && !parentRel);\n\n // Center the target to the pointer position (used in Droppable for Blocks)\n if (center) {\n const { x, y } = Canvas.getMouseRelativeCanvas(event);\n left = x;\n top = y;\n } else if (parentRel) {\n const offsetP = Canvas.offset(parentRel.getEl());\n left = left - offsetP.left;\n top = top - offsetP.top;\n }\n\n this.setPosition({\n x: left,\n y: top,\n width: `${width}px`,\n height: `${height}px`,\n position,\n });\n }\n },\n\n onDrag(...args) {\n const { guidesTarget, opts } = this;\n const { onDrag } = opts;\n this.updateGuides(guidesTarget);\n opts.debug && guidesTarget.forEach(item => this.renderGuide(item));\n opts.guidesInfo && this.renderGuideInfo(guidesTarget.filter(item => item.active));\n onDrag && onDrag(this._getDragData());\n },\n\n onEnd(ev, dragger, opt = {}) {\n const { editor, opts, id } = this;\n const { onEnd } = opts;\n onEnd && onEnd(ev, opt, { event: ev, ...opt, ...this._getDragData() });\n editor.stopCommand(id);\n this.hideGuidesInfo();\n this.em.trigger(`${evName}:end`, this.getEventOpts());\n },\n\n hideGuidesInfo() {\n ['X', 'Y'].forEach(item => {\n const guide = this[`elGuideInfo${item}`];\n if (guide) guide.style.display = 'none';\n });\n },\n\n /**\n * Render guides with spacing information\n */\n renderGuideInfo(guides = []) {\n const { guidesStatic } = this;\n this.hideGuidesInfo();\n guides.forEach(item => {\n const { origin, x } = item;\n const rectOrigin = this.getElementPos(origin);\n const axis = isUndefined(x) ? 'y' : 'x';\n const isY = axis === 'y';\n const origEdge1 = rectOrigin[isY ? 'left' : 'top'];\n const origEdge1Raw = rectOrigin.rect[isY ? 'left' : 'top'];\n const origEdge2 = isY ? origEdge1 + rectOrigin.width : origEdge1 + rectOrigin.height;\n const origEdge2Raw = isY ? origEdge1Raw + rectOrigin.rect.width : origEdge1Raw + rectOrigin.rect.height;\n const elGuideInfo = this[`elGuideInfo${axis.toUpperCase()}`];\n const elGuideInfoCnt = this[`elGuideInfoContent${axis.toUpperCase()}`];\n const guideInfoStyle = elGuideInfo.style;\n\n // Find the nearest element\n const res = guidesStatic\n .filter(stat => stat.type === item.type)\n .map(stat => {\n const { left, width, top, height } = stat.originRect;\n const statEdge1 = isY ? left : top;\n const statEdge2 = isY ? left + width : top + height;\n return {\n gap: statEdge2 < origEdge1 ? origEdge1 - statEdge2 : statEdge1 - origEdge2,\n guide: stat,\n };\n })\n .filter(item => item.gap > 0)\n .sort((a, b) => a.gap - b.gap)\n .map(item => item.guide)[0];\n\n if (res) {\n const { left, width, top, height, rect } = res.originRect;\n const isEdge1 = isY ? left < rectOrigin.left : top < rectOrigin.top;\n const statEdge1 = isY ? left : top;\n const statEdge1Raw = isY ? rect.left : rect.top;\n const statEdge2 = isY ? left + width : top + height;\n const statEdge2Raw = isY ? rect.left + rect.width : rect.top + rect.height;\n const posFirst = isY ? item.y : item.x;\n const posSecond = isEdge1 ? statEdge2 : origEdge2;\n const pos2 = `${posFirst}px`;\n const size = isEdge1 ? origEdge1 - statEdge2 : statEdge1 - origEdge2;\n const sizeRaw = isEdge1 ? origEdge1Raw - statEdge2Raw : statEdge1Raw - origEdge2Raw;\n guideInfoStyle.display = '';\n guideInfoStyle[isY ? 'top' : 'left'] = pos2;\n guideInfoStyle[isY ? 'left' : 'top'] = `${posSecond}px`;\n guideInfoStyle[isY ? 'width' : 'height'] = `${size}px`;\n elGuideInfoCnt.innerHTML = `${Math.round(sizeRaw)}px`;\n this.em.trigger(`${evName}:active`, {\n ...this.getEventOpts(),\n guide: item,\n guidesStatic,\n matched: res,\n posFirst,\n posSecond,\n size,\n sizeRaw,\n elGuideInfo,\n elGuideInfoCnt,\n });\n }\n });\n },\n\n toggleDrag(enable) {\n const { ppfx, editor } = this;\n const methodCls = enable ? 'add' : 'remove';\n const classes = [`${ppfx}is__grabbing`];\n const { Canvas } = editor;\n const body = Canvas.getBody();\n classes.forEach(cls => body.classList[methodCls](cls));\n Canvas[enable ? 'startAutoscroll' : 'stopAutoscroll']();\n },\n};\n","export default {\n run(ed) {\n if (!ed.Canvas.hasFocus()) return;\n const toSelect = [];\n\n ed.getSelectedAll().forEach(component => {\n const coll = component.components();\n const next = coll && coll.filter(c => c.get('selectable'))[0];\n next && toSelect.push(next);\n });\n\n toSelect.length && ed.select(toSelect);\n },\n};\n","export default {\n run(ed, snd, opts = {}) {\n if (!ed.Canvas.hasFocus() && !opts.force) return;\n const toSelect = [];\n\n ed.getSelectedAll().forEach(component => {\n let next = component.parent();\n\n // Recurse through the parent() chain until a selectable parent is found\n while (next && !next.get('selectable')) {\n next = next.parent();\n }\n\n next && toSelect.push(next);\n });\n\n toSelect.length && ed.select(toSelect);\n },\n};\n","export default {\n run(ed) {\n if (!ed.Canvas.hasFocus()) return;\n const toSelect = [];\n\n ed.getSelectedAll().forEach(cmp => {\n const parent = cmp.parent();\n if (!parent) return;\n\n const len = parent.components().length;\n let incr = 0;\n let at = 0;\n let next;\n\n // Get the next selectable component\n do {\n incr++;\n at = cmp.index() + incr;\n next = at <= len ? parent.getChildAt(at) : null;\n } while (next && !next.get('selectable'));\n\n toSelect.push(next || cmp);\n });\n\n toSelect.length && ed.select(toSelect);\n },\n};\n","export default {\n run(ed) {\n if (!ed.Canvas.hasFocus()) return;\n const toSelect = [];\n\n ed.getSelectedAll().forEach(cmp => {\n const parent = cmp.parent();\n if (!parent) return;\n\n let incr = 0;\n let at = 0;\n let next;\n\n // Get the first selectable component\n do {\n incr++;\n at = cmp.index() - incr;\n next = at >= 0 ? parent.getChildAt(at) : null;\n } while (next && !next.get('selectable'));\n\n toSelect.push(next || cmp);\n });\n\n toSelect.length && ed.select(toSelect);\n },\n};\n","import { flatten } from 'underscore';\n\nexport default {\n run(ed, s, opts = {}) {\n const { target } = opts;\n let toRemove = [];\n\n if (!target.get('styles')) return toRemove;\n\n // Find all components in the project, of the target component type\n const type = target.get('type');\n const wrappers = ed.Pages.getAllWrappers();\n const len = flatten(wrappers.map(wrp => wrp.findType(type))).length;\n\n // Remove component related styles only if there are no more components\n // of that type in the project\n if (!len) {\n const rules = ed.CssComposer.getAll();\n toRemove = rules.filter(rule => rule.get('group') === `cmp:${type}`);\n rules.remove(toRemove);\n }\n\n return toRemove;\n },\n};\n","export default {\n run(ed) {\n const em = ed.getModel();\n const models = [...ed.getSelectedAll()];\n models.length && em.set('clipboard', models);\n },\n};\n","import { extend, bindAll } from 'underscore';\nimport Backbone from 'backbone';\nimport SelectComponent from './SelectComponent';\n\nconst $ = Backbone.$;\n\nexport default extend({}, SelectComponent, {\n init(o) {\n bindAll(this, 'startDelete', 'stopDelete', 'onDelete');\n this.hoverClass = this.pfx + 'hover-delete';\n this.badgeClass = this.pfx + 'badge-red';\n },\n\n enable() {\n var that = this;\n this.$el.find('*').mouseover(this.startDelete).mouseout(this.stopDelete).click(this.onDelete);\n },\n\n /**\n * Start command\n * @param {Object} e\n * @private\n */\n startDelete(e) {\n e.stopPropagation();\n var $this = $(e.target);\n\n // Show badge if possible\n if ($this.data('model').get('removable')) {\n $this.addClass(this.hoverClass);\n this.attachBadge($this.get(0));\n }\n },\n\n /**\n * Stop command\n * @param {Object} e\n * @private\n */\n stopDelete(e) {\n e.stopPropagation();\n var $this = $(e.target);\n $this.removeClass(this.hoverClass);\n\n // Hide badge if possible\n if (this.badge) this.badge.css({ left: -1000, top: -1000 });\n },\n\n /**\n * Delete command\n * @param {Object} e\n * @private\n */\n onDelete(e) {\n e.stopPropagation();\n var $this = $(e.target);\n\n // Do nothing in case can't remove\n if (!$this.data('model').get('removable')) return;\n\n $this.data('model').destroy();\n this.removeBadge();\n this.clean();\n },\n\n /**\n * Updates badge label\n * @param {Object} model\n * @private\n * */\n updateBadgeLabel(model) {\n this.badge.html('Remove ' + model.getName());\n },\n});\n","import Backbone from 'backbone';\nconst $ = Backbone.$;\n\nexport default {\n run(editor, sender, opts = {}) {\n sender && sender.set && sender.set('active', 0);\n const config = editor.getConfig();\n const modal = editor.Modal;\n const pfx = config.stylePrefix;\n this.cm = editor.CodeManager || null;\n\n if (!this.$editors) {\n const oHtmlEd = this.buildEditor('htmlmixed', 'hopscotch', 'HTML');\n const oCsslEd = this.buildEditor('css', 'hopscotch', 'CSS');\n this.htmlEditor = oHtmlEd.el;\n this.cssEditor = oCsslEd.el;\n const $editors = $(`
`);\n $editors.append(oHtmlEd.$el).append(oCsslEd.$el);\n this.$editors = $editors;\n }\n\n modal\n .open({\n title: config.textViewCode,\n content: this.$editors,\n })\n .getModel()\n .once('change:open', () => editor.stopCommand(this.id));\n this.htmlEditor.setContent(editor.getHtml());\n this.cssEditor.setContent(editor.getCss());\n },\n\n stop(editor) {\n const modal = editor.Modal;\n modal && modal.close();\n },\n\n buildEditor(codeName, theme, label) {\n const input = document.createElement('textarea');\n !this.codeMirror && (this.codeMirror = this.cm.getViewer('CodeMirror'));\n\n const el = this.codeMirror.clone().set({\n label,\n codeName,\n theme,\n input,\n });\n\n const $el = new this.cm.EditorView({\n model: el,\n config: this.cm.getConfig(),\n }).render().$el;\n\n el.init(input);\n\n return { el, $el };\n },\n};\n","import { isElement } from 'underscore';\n\nexport default {\n /**\n * Check if fullscreen mode is enabled\n * @return {Boolean}\n */\n isEnabled() {\n var d = document;\n if (d.fullscreenElement || d.webkitFullscreenElement || d.mozFullScreenElement) return 1;\n else return 0;\n },\n\n /**\n * Enable fullscreen mode and return browser prefix\n * @param {HTMLElement} el\n * @return {string}\n */\n enable(el) {\n var pfx = '';\n if (el.requestFullscreen) el.requestFullscreen();\n else if (el.webkitRequestFullscreen) {\n pfx = 'webkit';\n el.webkitRequestFullscreen();\n } else if (el.mozRequestFullScreen) {\n pfx = 'moz';\n el.mozRequestFullScreen();\n } else if (el.msRequestFullscreen) el.msRequestFullscreen();\n else console.warn('Fullscreen not supported');\n return pfx;\n },\n\n /**\n * Disable fullscreen mode\n */\n disable() {\n const d = document;\n if (this.isEnabled()) {\n if (d.exitFullscreen) d.exitFullscreen();\n else if (d.webkitExitFullscreen) d.webkitExitFullscreen();\n else if (d.mozCancelFullScreen) d.mozCancelFullScreen();\n else if (d.msExitFullscreen) d.msExitFullscreen();\n }\n },\n\n /**\n * Triggered when the state of the fullscreen is changed. Inside detects if\n * it's enabled\n * @param {strinf} pfx Browser prefix\n * @param {Event} e\n */\n fsChanged(pfx, e) {\n var d = document;\n var ev = (pfx || '') + 'fullscreenchange';\n if (!this.isEnabled()) {\n this.stop(null, this.sender);\n document.removeEventListener(ev, this.fsChanged);\n }\n },\n\n run(editor, sender, opts = {}) {\n this.sender = sender;\n const { target } = opts;\n const targetEl = isElement(target) ? target : document.querySelector(target);\n const pfx = this.enable(targetEl || editor.getContainer());\n this.fsChanged = this.fsChanged.bind(this, pfx);\n document.addEventListener(pfx + 'fullscreenchange', this.fsChanged);\n editor.trigger('change:canvasOffset');\n },\n\n stop(editor, sender) {\n if (sender && sender.set) sender.set('active', false);\n this.disable();\n if (editor) editor.trigger('change:canvasOffset');\n },\n};\n","import { extend, bindAll } from 'underscore';\nimport Backbone from 'backbone';\nimport { on, off } from '../../utils/mixins';\nimport SelectComponent from './SelectComponent';\nimport SelectPosition from './SelectPosition';\n\nconst $ = Backbone.$;\n\nexport default extend({}, SelectPosition, SelectComponent, {\n init(o) {\n SelectComponent.init.apply(this, arguments);\n bindAll(this, 'initSorter', 'rollback', 'onEndMove');\n this.opt = o;\n this.hoverClass = this.ppfx + 'highlighter-warning';\n this.badgeClass = this.ppfx + 'badge-warning';\n this.noSelClass = this.ppfx + 'no-select';\n },\n\n enable(...args) {\n SelectComponent.enable.apply(this, args);\n this.getBadgeEl().addClass(this.badgeClass);\n this.getHighlighterEl().addClass(this.hoverClass);\n var wp = this.$wrapper;\n wp.css('cursor', 'move');\n wp.on('mousedown', this.initSorter);\n\n // Avoid strange moving behavior\n wp.addClass(this.noSelClass);\n },\n\n /**\n * Overwrite for doing nothing\n * @private\n */\n toggleClipboard() {},\n\n /**\n * Delegate sorting\n * @param {Event} e\n * @private\n * */\n initSorter(e) {\n var el = $(e.target).data('model');\n var drag = el.get('draggable');\n if (!drag) return;\n\n // Avoid badge showing on move\n this.cacheEl = null;\n this.startSelectPosition(e.target, this.frameEl.contentDocument);\n this.sorter.draggable = drag;\n this.sorter.onEndMove = this.onEndMove.bind(this);\n this.stopSelectComponent();\n this.$wrapper.off('mousedown', this.initSorter);\n on(this.getContentWindow(), 'keydown', this.rollback);\n },\n\n /**\n * Init sorter from model\n * @param {Object} model\n * @private\n */\n initSorterFromModel(model) {\n var drag = model.get('draggable');\n if (!drag) return;\n // Avoid badge showing on move\n this.cacheEl = null;\n var el = model.view.el;\n this.startSelectPosition(el, this.frameEl.contentDocument);\n this.sorter.draggable = drag;\n this.sorter.onEndMove = this.onEndMoveFromModel.bind(this);\n\n /*\n this.sorter.setDragHelper(el);\n var dragHelper = this.sorter.dragHelper;\n dragHelper.className = this.ppfx + 'drag-helper';\n dragHelper.innerHTML = '';\n dragHelper.backgroundColor = 'white';\n */\n\n this.stopSelectComponent();\n on(this.getContentWindow(), 'keydown', this.rollback);\n },\n\n /**\n * Init sorter from models\n * @param {Object} model\n * @private\n */\n initSorterFromModels(models) {\n // TODO: if one only check for `draggable`\n // Avoid badge showing on move\n this.cacheEl = null;\n const lastModel = models[models.length - 1];\n const frame = (this.em.get('currentFrame') || {}).model;\n const el = lastModel.getEl(frame);\n const doc = el.ownerDocument;\n this.startSelectPosition(el, doc, { onStart: this.onStart });\n this.sorter.draggable = lastModel.get('draggable');\n this.sorter.toMove = models;\n this.sorter.onMoveClb = this.onDrag;\n this.sorter.onEndMove = this.onEndMoveFromModel.bind(this);\n this.stopSelectComponent();\n on(this.getContentWindow(), 'keydown', this.rollback);\n },\n\n onEndMoveFromModel() {\n off(this.getContentWindow(), 'keydown', this.rollback);\n },\n\n /**\n * Callback after sorting\n * @private\n */\n onEndMove() {\n this.enable();\n off(this.getContentWindow(), 'keydown', this.rollback);\n },\n\n /**\n * Say what to do after the component was selected (selectComponent)\n * @param {Event} e\n * @param {Object} Selected element\n * @private\n * */\n onSelect(e, el) {},\n\n /**\n * Used to bring the previous situation before start moving the component\n * @param {Event} e\n * @param {Boolean} Indicates if rollback in anycase\n * @private\n * */\n rollback(e, force) {\n var key = e.which || e.keyCode;\n if (key == 27 || force) {\n this.sorter.moved = false;\n this.sorter.endMove();\n }\n return;\n },\n\n /**\n * Returns badge element\n * @return {HTMLElement}\n * @private\n */\n getBadgeEl() {\n if (!this.$badge) this.$badge = $(this.getBadge());\n return this.$badge;\n },\n\n /**\n * Returns highlighter element\n * @return {HTMLElement}\n * @private\n */\n getHighlighterEl() {\n if (!this.$hl) this.$hl = $(this.canvas.getHighlighter());\n return this.$hl;\n },\n\n stop(...args) {\n SelectComponent.stop.apply(this, args);\n this.getBadgeEl().removeClass(this.badgeClass);\n this.getHighlighterEl().removeClass(this.hoverClass);\n var wp = this.$wrapper;\n wp.css('cursor', '').unbind().removeClass(this.noSelClass);\n },\n});\n","import { isFunction } from 'underscore';\nimport { createEl } from '../../utils/dom';\n\nexport default {\n open(content) {\n const { editor, title, config, am } = this;\n const { custom } = config;\n if (isFunction(custom.open)) {\n return custom.open(am.__customData());\n }\n const { Modal } = editor;\n Modal.open({ title, content }).onceClose(() => editor.stopCommand(this.id));\n },\n\n close() {\n const { custom } = this.config;\n if (isFunction(custom.close)) {\n return custom.close(this.am.__customData());\n }\n const { Modal } = this.editor;\n Modal && Modal.close();\n },\n\n run(editor, sender, opts = {}) {\n const am = editor.AssetManager;\n const config = am.getConfig();\n const { types = [], accept, select } = opts;\n this.title = opts.modalTitle || editor.t('assetManager.modalTitle') || '';\n this.editor = editor;\n this.config = config;\n this.am = am;\n\n am.setTarget(opts.target);\n am.onClick(opts.onClick);\n am.onDblClick(opts.onDblClick);\n am.onSelect(opts.onSelect);\n am.__behaviour({\n select,\n types,\n options: opts,\n });\n\n if (config.custom) {\n this.rendered = this.rendered || createEl('div');\n this.rendered.className = `${config.stylePrefix}custom-wrp`;\n am.__behaviour({ container: this.rendered });\n am.__trgCustom();\n } else {\n if (!this.rendered || types) {\n let assets = am.getAll().filter(i => i);\n\n if (types && types.length) {\n assets = assets.filter(a => types.indexOf(a.get('type')) !== -1);\n }\n\n am.render(assets);\n this.rendered = am.getContainer();\n }\n\n if (accept) {\n const uploadEl = this.rendered.querySelector(`input#${config.stylePrefix}uploadFile`);\n uploadEl && uploadEl.setAttribute('accept', accept);\n }\n }\n\n this.open(this.rendered);\n return this;\n },\n\n stop(editor) {\n this.editor = editor;\n this.close(this.rendered);\n },\n};\n","import { isFunction } from 'underscore';\nimport { createEl } from '../../utils/dom';\n\nexport default {\n open() {\n const { container, editor, bm, config } = this;\n const { custom, appendTo } = config;\n\n if (isFunction(custom.open)) {\n return custom.open(bm.__customData());\n }\n\n if (this.firstRender && !appendTo) {\n const id = 'views-container';\n const pn = editor.Panels;\n const panels = pn.getPanel(id) || pn.addPanel({ id });\n panels.set('appendContent', container).trigger('change:appendContent');\n if (!custom) container.appendChild(bm.render());\n }\n\n if (container) container.style.display = 'block';\n },\n\n close() {\n const { container, config } = this;\n const { custom } = config;\n\n if (isFunction(custom.close)) {\n return custom.close(this.bm.__customData());\n }\n\n if (container) container.style.display = 'none';\n },\n\n run(editor) {\n const bm = editor.Blocks;\n this.config = bm.getConfig();\n this.firstRender = !this.container;\n this.container = this.container || createEl('div');\n this.editor = editor;\n this.bm = bm;\n const { container } = this;\n bm.__behaviour({\n container,\n });\n\n if (this.config.custom) {\n bm.__trgCustom();\n }\n\n this.open();\n },\n\n stop() {\n this.close();\n },\n};\n","export default {\n run(editor) {\n const lm = editor.LayerManager;\n const pn = editor.Panels;\n\n if (lm.getConfig().appendTo) return;\n\n if (!this.layers) {\n const id = 'views-container';\n const layers = document.createElement('div');\n const panels = pn.getPanel(id) || pn.addPanel({ id });\n layers.appendChild(lm.render());\n panels.set('appendContent', layers).trigger('change:appendContent');\n this.layers = layers;\n }\n\n this.layers.style.display = 'block';\n },\n\n stop() {\n const { layers } = this;\n layers && (layers.style.display = 'none');\n },\n};\n","import Backbone from 'backbone';\nconst $ = Backbone.$;\n\nexport default {\n run(editor, sender) {\n this.sender = sender;\n\n if (!this.$cn) {\n const config = editor.getConfig();\n const panels = editor.Panels;\n const trgEvCnt = 'change:appendContent';\n this.$cn = $('
');\n this.$cn2 = $('
');\n this.$cn.append(this.$cn2);\n\n // Device Manager\n const dvm = editor.DeviceManager;\n if (dvm && config.showDevices) {\n const devicePanel = panels.addPanel({ id: 'devices-c' });\n const dvEl = dvm.render();\n devicePanel.set('appendContent', dvEl).trigger(trgEvCnt);\n }\n\n // Selector Manager container\n const slm = editor.SelectorManager;\n this.slm = slm;\n const slmConfig = slm.getConfig();\n if (slmConfig.custom) {\n slm.__trgCustom({ container: this.$cn2.get(0) });\n } else if (!slmConfig.appendTo) {\n this.$cn2.append(slm.render([]));\n }\n\n // Style Manager\n const sm = editor.StyleManager;\n this.sm = sm;\n const smConfig = sm.getConfig();\n const pfx = smConfig.stylePrefix;\n this.$header = $(`
${editor.t('styleManager.empty')}
`);\n this.$cn.append(this.$header);\n\n if (smConfig.custom) {\n sm.__trgCustom({ container: this.$cn2.get(0) });\n } else if (!smConfig.appendTo) {\n this.$cn2.append(sm.render());\n }\n\n // Create panel if not exists\n const pnCnt = 'views-container';\n this.panel = panels.getPanel(pnCnt);\n if (!this.panel) this.panel = panels.addPanel({ id: pnCnt });\n\n // Add all containers to the panel\n this.panel.set('appendContent', this.$cn).trigger(trgEvCnt);\n\n // Toggle Style Manager on target selection\n this.em = editor.getModel();\n this.listenTo(this.em, sm.events.target, this.toggleSm);\n }\n\n this.toggleSm();\n },\n\n /**\n * Toggle Style Manager visibility\n * @private\n */\n toggleSm() {\n const { sender, sm } = this;\n if ((sender && sender.get && !sender.get('active')) || !sm) return;\n\n if (sm.getSelected()) {\n this.$cn2?.show();\n this.$header?.hide();\n } else {\n this.$cn2?.hide();\n this.$header?.show();\n }\n },\n\n stop() {\n this.$cn2?.hide();\n this.$header?.hide();\n },\n};\n","import Backbone from 'backbone';\n\nconst $ = Backbone.$;\n\nexport default {\n run(editor, sender) {\n this.sender = sender;\n const em = editor.getModel();\n\n const config = editor.Config;\n const pfx = config.stylePrefix;\n const tm = editor.TraitManager;\n const confTm = tm.getConfig();\n let panelC;\n\n if (confTm.appendTo) return;\n\n if (!this.$cn) {\n this.$cn = $('
');\n this.$cn2 = $('
');\n this.$cn.append(this.$cn2);\n this.$header = $('
').append(`
${em.t('traitManager.empty')}
`);\n this.$cn.append(this.$header);\n this.$cn2.append(`
${em.t('traitManager.label')}
`);\n this.$cn2.append(tm.render());\n var panels = editor.Panels;\n\n if (!panels.getPanel('views-container')) panelC = panels.addPanel({ id: 'views-container' });\n else panelC = panels.getPanel('views-container');\n\n panelC.set('appendContent', this.$cn.get(0)).trigger('change:appendContent');\n\n this.target = editor.getModel();\n this.listenTo(this.target, 'component:toggled', this.toggleTm);\n }\n\n this.toggleTm();\n },\n\n /**\n * Toggle Trait Manager visibility\n * @private\n */\n toggleTm() {\n const sender = this.sender;\n if (sender && sender.get && !sender.get('active')) return;\n\n if (this.target.getSelectedAll().length === 1) {\n this.$cn2.show();\n this.$header.hide();\n } else {\n this.$cn2.hide();\n this.$header.show();\n }\n },\n\n stop() {\n this.$cn2 && this.$cn2.hide();\n this.$header && this.$header.hide();\n },\n};\n","import { isArray, contains } from 'underscore';\n\nexport default {\n run(ed, s, opts = {}) {\n const em = ed.getModel();\n const clp = em.get('clipboard');\n const lastSelected = ed.getSelected();\n\n if (clp && lastSelected) {\n ed.getSelectedAll().forEach(selected => {\n const { collection } = selected;\n if (!collection) return;\n\n let added;\n const at = selected.index() + 1;\n const addOpts = { at, action: opts.action || 'paste-component' };\n\n if (contains(clp, selected) && selected.get('copyable')) {\n added = collection.add(selected.clone(), addOpts);\n } else {\n const copyable = clp.filter(cop => cop.get('copyable'));\n const pasteable = copyable.filter(cop => ed.Components.canMove(selected.parent(), cop).result);\n added = collection.add(\n pasteable.map(cop => cop.clone()),\n addOpts\n );\n }\n\n added = isArray(added) ? added : [added];\n added.forEach(add => ed.trigger('component:paste', add));\n });\n\n lastSelected.emitUpdate();\n }\n },\n};\n","import { each } from 'underscore';\n\nconst cmdVis = 'sw-visibility';\n\nexport default {\n getPanels(editor) {\n if (!this.panels) {\n this.panels = editor.Panels.getPanels();\n }\n\n return this.panels;\n },\n\n preventDrag(opts) {\n opts.abort = 1;\n },\n\n tglEffects(on) {\n const { em } = this;\n const mthEv = on ? 'on' : 'off';\n if (em) {\n const canvas = em.get('Canvas');\n const body = canvas.getBody();\n const tlb = canvas.getToolbarEl();\n tlb && (tlb.style.display = on ? 'none' : '');\n const elP = body.querySelectorAll(`.${this.ppfx}no-pointer`);\n each(elP, item => (item.style.pointerEvents = on ? 'all' : ''));\n em[mthEv]('run:tlb-move:before', this.preventDrag);\n }\n },\n\n run(editor, sender) {\n this.sender = sender;\n this.selected = [...editor.getSelectedAll()];\n editor.select();\n\n if (!this.shouldRunSwVisibility) {\n this.shouldRunSwVisibility = editor.Commands.isActive(cmdVis);\n }\n\n this.shouldRunSwVisibility && editor.stopCommand(cmdVis);\n editor.getModel().stopDefault();\n\n const panels = this.getPanels(editor);\n const canvas = editor.Canvas.getElement();\n const editorEl = editor.getEl();\n const pfx = editor.Config.stylePrefix;\n\n if (!this.helper) {\n const helper = document.createElement('span');\n helper.className = `${pfx}off-prv fa fa-eye-slash`;\n editorEl.appendChild(helper);\n helper.onclick = () => this.stopCommand();\n this.helper = helper;\n }\n\n this.helper.style.display = 'inline-block';\n\n panels.forEach(panel => panel.set('visible', false));\n\n const canvasS = canvas.style;\n canvasS.width = '100%';\n canvasS.height = '100%';\n canvasS.top = '0';\n canvasS.left = '0';\n canvasS.padding = '0';\n canvasS.margin = '0';\n editor.refresh();\n this.tglEffects(1);\n },\n\n stop(editor) {\n const { sender = {}, selected } = this;\n sender.set && sender.set('active', 0);\n const panels = this.getPanels(editor);\n\n if (this.shouldRunSwVisibility) {\n editor.runCommand(cmdVis);\n this.shouldRunSwVisibility = false;\n }\n\n editor.getModel().runDefault();\n panels.forEach(panel => panel.set('visible', true));\n\n const canvas = editor.Canvas.getElement();\n canvas.setAttribute('style', '');\n selected && editor.select(selected);\n delete this.selected;\n\n if (this.helper) {\n this.helper.style.display = 'none';\n }\n\n editor.refresh();\n this.tglEffects();\n },\n};\n","export default {\n run(editor, sender, opts) {\n const opt = opts || {};\n const canvas = editor.Canvas;\n const canvasView = canvas.getCanvasView();\n const options = {\n appendTo: canvas.getResizerEl(),\n prefix: editor.getConfig().stylePrefix,\n posFetcher: canvasView.getElementPos.bind(canvasView),\n mousePosFetcher: canvas.getMouseRelativePos,\n ...(opt.options || {}),\n };\n let { canvasResizer } = this;\n\n // Create the resizer for the canvas if not yet created\n if (!canvasResizer || opt.forceNew) {\n this.canvasResizer = editor.Utils.Resizer.init(options);\n canvasResizer = this.canvasResizer;\n }\n\n canvasResizer.setOptions(options);\n canvasResizer.blur();\n canvasResizer.focus(opt.el);\n return canvasResizer;\n },\n\n stop() {\n this.canvasResizer?.blur();\n },\n};\n","import Backbone from 'backbone';\n\nexport default class ToolbarButtonView extends Backbone.View {\n events() {\n return (\n this.model.get('events') || {\n mousedown: 'handleClick',\n }\n );\n }\n\n attributes() {\n return this.model.get('attributes');\n }\n\n initialize(opts = {}) {\n const { config = {} } = opts;\n this.em = config.em;\n this.editor = config.editor;\n }\n\n handleClick(event) {\n event.preventDefault();\n event.stopPropagation();\n\n /*\n * Since the toolbar lives outside the canvas frame, the event's\n * generated on it have clientX and clientY relative to the page.\n *\n * This causes issues during events like dragging, where they depend\n * on the clientX and clientY.\n *\n * This makes sure the offsets are calculated.\n *\n * More information on\n * https://github.com/artf/grapesjs/issues/2372\n * https://github.com/artf/grapesjs/issues/2207\n */\n\n const { editor, em } = this;\n const { left, top } = editor.Canvas.getFrameEl().getBoundingClientRect();\n\n const calibrated = {\n ...event,\n clientX: event.clientX - left,\n clientY: event.clientY - top,\n };\n\n em.trigger('toolbar:run:before');\n this.execCommand(calibrated);\n }\n\n execCommand(event) {\n const opts = { event };\n const command = this.model.get('command');\n const editor = this.editor;\n\n if (typeof command === 'function') {\n command(editor, null, opts);\n }\n\n if (typeof command === 'string') {\n editor.runCommand(command, opts);\n }\n }\n\n render() {\n const { editor, $el, model } = this;\n const id = model.get('id');\n const label = model.get('label');\n const pfx = editor.getConfig().stylePrefix;\n $el.addClass(`${pfx}toolbar-item`);\n id && $el.addClass(`${pfx}toolbar-item__${id}`);\n label && $el.append(label);\n return this;\n }\n}\n","import DomainViews from 'domain_abstract/view/DomainViews';\nimport ToolbarButtonView from './ToolbarButtonView';\n\nexport default class ToolbarView extends DomainViews {\n constructor(opts = {}, config) {\n super(opts, config);\n this.config = { editor: opts.editor || '', em: opts.em };\n this.listenTo(this.collection, 'reset', this.render);\n }\n}\n\nToolbarView.prototype.itemView = ToolbarButtonView;\n","import Backbone from 'backbone';\n\nexport default class ToolbarButton extends Backbone.Model {\n defaults() {\n return {\n command: '',\n attributes: {},\n };\n }\n}\n","import Backbone from 'backbone';\nimport ToolbarButton from './ToolbarButton';\n\nexport default Backbone.Collection.extend({ model: ToolbarButton });\n","import Backbone from 'backbone';\nimport { bindAll, isElement, debounce } from 'underscore';\nimport { on, off, getUnitFromValue, isTaggableNode, getViewEl, hasWin } from '../../utils/mixins';\nimport { isVisible, isDoc } from '../../utils/dom';\nimport ToolbarView from '../../dom_components/view/ToolbarView';\nimport Toolbar from '../../dom_components/model/Toolbar';\n\nconst $ = Backbone.$;\nlet showOffsets;\n/**\n * This command is responsible for show selecting components and displaying\n * all the necessary tools around (component toolbar, badge, highlight box, etc.)\n *\n * The command manages different boxes to display tools and when something in\n * the canvas is updated, the command triggers the appropriate method to update\n * their position (across multiple frames/components):\n * - Global Tools (updateToolsGlobal/updateGlobalPos)\n * This box contains tools intended to be displayed only on ONE component per time,\n * like Component Toolbar (updated by updateToolbar/updateToolbarPos), this means\n * you won't be able to see more than one Component Toolbar (even with multiple\n * frames or multiple selected components)\n * - Local Tools (updateToolsLocal/updateLocalPos)\n * Each frame in the canvas has its own local box, so we're able to see more than\n * one active container at the same time. When you put a mouse over an element\n * you can see stuff like the highlight box, badge, margins/paddings offsets, etc.\n * so those elements are inside the Local Tools box\n *\n *\n */\nexport default {\n init(o) {\n bindAll(this, 'onHover', 'onOut', 'onClick', 'onFrameScroll', 'onFrameUpdated', 'onContainerChange');\n },\n\n enable() {\n this.frameOff = this.canvasOff = this.adjScroll = null;\n this.startSelectComponent();\n showOffsets = 1;\n },\n\n /**\n * Start select component event\n * @private\n * */\n startSelectComponent() {\n this.toggleSelectComponent(1);\n this.em.getSelected() && this.onSelect();\n },\n\n /**\n * Stop select component event\n * @private\n * */\n stopSelectComponent() {\n this.toggleSelectComponent();\n },\n\n /**\n * Toggle select component event\n * @private\n * */\n toggleSelectComponent(enable) {\n const { em } = this;\n const listenToEl = em.getConfig().listenToEl;\n const { parentNode } = em.getContainer();\n const method = enable ? 'on' : 'off';\n const methods = { on, off };\n !listenToEl.length && parentNode && listenToEl.push(parentNode);\n const trigger = (win, body) => {\n methods[method](body, 'mouseover', this.onHover);\n methods[method](body, 'mouseleave', this.onOut);\n methods[method](body, 'click touchend', this.onClick);\n methods[method](win, 'scroll', this.onFrameScroll, true);\n };\n methods[method](window, 'resize', this.onFrameUpdated);\n methods[method](listenToEl, 'scroll', this.onContainerChange);\n em[method]('component:toggled component:update undo redo', this.onSelect, this);\n em[method]('change:componentHovered', this.onHovered, this);\n em[method](\n 'component:resize styleable:change component:input', // component:styleUpdate\n this.updateGlobalPos,\n this\n );\n em[method]('component:update:toolbar', this._upToolbar, this);\n em[method]('change:canvasOffset', this.updateAttached, this);\n em[method]('frame:updated', this.onFrameUpdated, this);\n em[method]('canvas:updateTools', this.onFrameUpdated, this);\n em.get('Canvas')\n .getFrames()\n .forEach(frame => {\n const { view } = frame;\n const win = view?.getWindow();\n win && trigger(win, view.getBody());\n });\n },\n\n /**\n * Hover command\n * @param {Object} e\n * @private\n */\n onHover(e) {\n e.stopPropagation();\n const { em } = this;\n const trg = e.target;\n const view = getViewEl(trg);\n const frameView = view && view._getFrame();\n const $el = $(trg);\n let model = $el.data('model');\n\n // Get first valid model\n if (!model) {\n let parent = $el.parent();\n while (!model && parent.length && !isDoc(parent[0])) {\n model = parent.data('model');\n parent = parent.parent();\n }\n }\n\n this.currentDoc = trg.ownerDocument;\n em.setHovered(model, { useValid: true });\n frameView && em.set('currentFrame', frameView);\n },\n\n onFrameUpdated() {\n this.updateLocalPos();\n this.updateGlobalPos();\n },\n\n onHovered(em, component) {\n let result = {};\n\n if (component) {\n component.views.forEach(view => {\n const el = view.el;\n const pos = this.getElementPos(el);\n result = { el, pos, component, view: getViewEl(el) };\n this.updateToolsLocal(result);\n\n if (el.ownerDocument === this.currentDoc) this.elHovered = result;\n });\n } else {\n this.currentDoc = null;\n this.elHovered = 0;\n this.updateToolsLocal();\n this.canvas.getFrames().forEach(frame => {\n const { view } = frame;\n const el = view && view.getToolsEl();\n el && this.toggleToolsEl(0, 0, { el });\n });\n }\n },\n\n /**\n * Say what to do after the component was selected\n * @param {Object} e\n * @param {Object} el\n * @private\n * */\n onSelect: debounce(function () {\n const { em } = this;\n const component = em.getSelected();\n const currentFrame = em.get('currentFrame') || {};\n const view = component && component.getView(currentFrame.model);\n let el = view && view.el;\n let result = {};\n\n if (el && isVisible(el)) {\n const pos = this.getElementPos(el);\n result = { el, pos, component, view: getViewEl(el) };\n }\n\n this.elSelected = result;\n this.updateToolsGlobal();\n // This will hide some elements from the select component\n this.updateLocalPos(result);\n this.initResize(component);\n }),\n\n updateGlobalPos() {\n const sel = this.getElSelected();\n if (!sel.el) return;\n sel.pos = this.getElementPos(sel.el);\n this.updateToolsGlobal();\n },\n\n updateLocalPos(data) {\n const sel = this.getElHovered();\n if (!sel.el) return;\n sel.pos = this.getElementPos(sel.el);\n this.updateToolsLocal(data);\n },\n\n getElHovered() {\n return this.elHovered || {};\n },\n\n getElSelected() {\n return this.elSelected || {};\n },\n\n onOut() {\n this.em.setHovered(0);\n },\n\n toggleToolsEl(on, view, opts = {}) {\n const el = opts.el || this.canvas.getToolsEl(view);\n el && (el.style.display = on ? '' : 'none');\n return el || {};\n },\n\n /**\n * Show element offset viewer\n * @param {HTMLElement} el\n * @param {Object} pos\n */\n showElementOffset(el, pos, opts = {}) {\n if (!showOffsets) return;\n this.editor.runCommand('show-offset', {\n el,\n elPos: pos,\n view: opts.view,\n force: 1,\n top: 0,\n left: 0,\n });\n },\n\n /**\n * Hide element offset viewer\n * @param {HTMLElement} el\n * @param {Object} pos\n */\n hideElementOffset(view) {\n this.editor.stopCommand('show-offset', {\n view,\n });\n },\n\n /**\n * Show fixed element offset viewer\n * @param {HTMLElement} el\n * @param {Object} pos\n */\n showFixedElementOffset(el, pos) {\n this.editor.runCommand('show-offset', {\n el,\n elPos: pos,\n state: 'Fixed',\n });\n },\n\n /**\n * Hide fixed element offset viewer\n * @param {HTMLElement} el\n * @param {Object} pos\n */\n hideFixedElementOffset(el, pos) {\n if (this.editor) this.editor.stopCommand('show-offset', { state: 'Fixed' });\n },\n\n /**\n * Hide Highlighter element\n */\n hideHighlighter(view) {\n this.canvas.getHighlighter(view).style.opacity = 0;\n },\n\n /**\n * On element click\n * @param {Event} e\n * @private\n */\n onClick(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n const { em } = this;\n if (em.get('_cmpDrag')) return em.set('_cmpDrag');\n const $el = $(ev.target);\n let model = $el.data('model');\n\n if (!model) {\n let parent = $el.parent();\n while (!model && parent.length && !isDoc(parent[0])) {\n model = parent.data('model');\n parent = parent.parent();\n }\n }\n\n if (model) {\n // Avoid selection of inner text components during editing\n if (em.isEditing() && !model.get('textable') && model.isChildOf('text')) {\n return;\n }\n this.select(model, ev);\n }\n },\n\n /**\n * Select component\n * @param {Component} model\n * @param {Event} event\n */\n select(model, event = {}) {\n if (!model) return;\n this.editor.select(model, { event, useValid: true });\n this.initResize(model);\n },\n\n /**\n * Update badge for the component\n * @param {Object} Component\n * @param {Object} pos Position object\n * @private\n * */\n updateBadge(el, pos, opts = {}) {\n const { canvas } = this;\n const model = $(el).data('model');\n if (!model || !model.get('badgable')) return;\n const badge = this.getBadge(opts);\n\n if (!opts.posOnly) {\n const config = this.canvas.getConfig();\n const icon = model.getIcon();\n const ppfx = config.pStylePrefix || '';\n const clsBadge = `${ppfx}badge`;\n const customeLabel = config.customBadgeLabel;\n const badgeLabel = `${icon ? `
${icon}
` : ''}\n
${model.getName()}
`;\n badge.innerHTML = customeLabel ? customeLabel(model) : badgeLabel;\n }\n\n const un = 'px';\n const bStyle = badge.style;\n bStyle.display = 'block';\n\n const targetToElem = canvas.getTargetToElementFixed(el, badge, {\n pos: pos,\n });\n\n const top = targetToElem.top; //opts.topOff - badgeH < 0 ? -opts.topOff : posTop;\n const left = opts.leftOff < 0 ? -opts.leftOff : 0;\n\n bStyle.top = top + un;\n bStyle.left = left + un;\n },\n\n /**\n * Update highlighter element\n * @param {HTMLElement} el\n * @param {Object} pos Position object\n * @private\n */\n showHighlighter(view) {\n this.canvas.getHighlighter(view).style.opacity = '';\n },\n\n /**\n * Init resizer on the element if possible\n * @param {HTMLElement|Component} elem\n * @private\n */\n initResize(elem) {\n const { em, canvas } = this;\n const editor = em ? em.get('Editor') : '';\n const config = em ? em.get('Config') : '';\n const pfx = config.stylePrefix || '';\n const resizeClass = `${pfx}resizing`;\n const model = !isElement(elem) && isTaggableNode(elem) ? elem : em.getSelected();\n const resizable = model && model.get('resizable');\n let options = {};\n let modelToStyle;\n\n var toggleBodyClass = (method, e, opts) => {\n const docs = opts.docs;\n docs &&\n docs.forEach(doc => {\n const body = doc.body;\n const cls = body.className || '';\n body.className = (method == 'add' ? `${cls} ${resizeClass}` : cls.replace(resizeClass, '')).trim();\n });\n };\n\n if (editor && resizable) {\n const el = isElement(elem) ? elem : model.getEl();\n options = {\n // Here the resizer is updated with the current element height and width\n onStart(e, opts = {}) {\n const { el, config, resizer } = opts;\n const { keyHeight, keyWidth, currentUnit, keepAutoHeight, keepAutoWidth } = config;\n toggleBodyClass('add', e, opts);\n modelToStyle = em.get('StyleManager').getModelToStyle(model);\n canvas.toggleFramesEvents();\n const computedStyle = getComputedStyle(el);\n const modelStyle = modelToStyle.getStyle();\n\n let currentWidth = modelStyle[keyWidth];\n config.autoWidth = keepAutoWidth && currentWidth === 'auto';\n if (isNaN(parseFloat(currentWidth))) {\n currentWidth = computedStyle[keyWidth];\n }\n\n let currentHeight = modelStyle[keyHeight];\n config.autoHeight = keepAutoHeight && currentHeight === 'auto';\n if (isNaN(parseFloat(currentHeight))) {\n currentHeight = computedStyle[keyHeight];\n }\n\n resizer.startDim.w = parseFloat(currentWidth);\n resizer.startDim.h = parseFloat(currentHeight);\n showOffsets = 0;\n\n if (currentUnit) {\n config.unitHeight = getUnitFromValue(currentHeight);\n config.unitWidth = getUnitFromValue(currentWidth);\n }\n },\n\n // Update all positioned elements (eg. component toolbar)\n onMove() {\n editor.trigger('component:resize');\n },\n\n onEnd(e, opts) {\n toggleBodyClass('remove', e, opts);\n editor.trigger('component:resize');\n canvas.toggleFramesEvents(1);\n showOffsets = 1;\n },\n\n updateTarget(el, rect, options = {}) {\n if (!modelToStyle) {\n return;\n }\n\n const { store, selectedHandler, config } = options;\n const { keyHeight, keyWidth, autoHeight, autoWidth, unitWidth, unitHeight } = config;\n const onlyHeight = ['tc', 'bc'].indexOf(selectedHandler) >= 0;\n const onlyWidth = ['cl', 'cr'].indexOf(selectedHandler) >= 0;\n const style = {};\n const en = !store ? 1 : ''; // this will trigger the final change\n\n if (!onlyHeight) {\n const bodyw = canvas.getBody().offsetWidth;\n const width = rect.w < bodyw ? rect.w : bodyw;\n style[keyWidth] = autoWidth ? 'auto' : `${width}${unitWidth}`;\n }\n\n if (!onlyWidth) {\n style[keyHeight] = autoHeight ? 'auto' : `${rect.h}${unitHeight}`;\n }\n\n modelToStyle.addStyle({ ...style, en }, { avoidStore: !store });\n const updateEvent = 'update:component:style';\n const eventToListen = `${updateEvent}:${keyHeight} ${updateEvent}:${keyWidth}`;\n em && em.trigger(eventToListen, null, null, { noEmit: 1 });\n },\n };\n\n if (typeof resizable == 'object') {\n options = { ...options, ...resizable, parent: options };\n }\n\n this.resizer = editor.runCommand('resize', { el, options, force: 1 });\n } else {\n editor.stopCommand('resize');\n this.resizer = null;\n }\n },\n\n /**\n * Update toolbar if the component has one\n * @param {Object} mod\n */\n updateToolbar(mod) {\n const { em } = this.config;\n const model = mod == em ? em.getSelected() : mod;\n const toolbarEl = this.canvas.getToolbarEl();\n const toolbarStyle = toolbarEl.style;\n const toolbar = model.get('toolbar');\n const showToolbar = em.get('Config').showToolbar;\n\n if (model && showToolbar && toolbar && toolbar.length) {\n toolbarStyle.display = '';\n if (!this.toolbar) {\n toolbarEl.innerHTML = '';\n this.toolbar = new Toolbar(toolbar);\n const toolbarView = new ToolbarView({\n collection: this.toolbar,\n editor: this.editor,\n em,\n });\n toolbarEl.appendChild(toolbarView.render().el);\n }\n\n this.toolbar.reset(toolbar);\n toolbarStyle.top = '-100px';\n toolbarStyle.left = 0;\n } else {\n toolbarStyle.display = 'none';\n }\n },\n\n /**\n * Update toolbar positions\n * @param {HTMLElement} el\n * @param {Object} pos\n */\n updateToolbarPos(pos) {\n const unit = 'px';\n const { style } = this.canvas.getToolbarEl();\n style.top = `${pos.top}${unit}`;\n style.left = `${pos.left}${unit}`;\n style.opacity = '';\n },\n\n /**\n * Return canvas dimensions and positions\n * @return {Object}\n */\n getCanvasPosition() {\n return this.canvas.getCanvasView().getPosition();\n },\n\n /**\n * Returns badge element\n * @return {HTMLElement}\n * @private\n */\n getBadge(opts = {}) {\n return this.canvas.getBadgeEl(opts.view);\n },\n\n /**\n * On frame scroll callback\n * @private\n */\n onFrameScroll() {\n this.updateTools();\n },\n\n updateTools() {\n this.updateLocalPos();\n this.updateGlobalPos();\n },\n\n isCompSelected(comp) {\n return comp && comp.get('status') === 'selected';\n },\n\n /**\n * Update tools visible on hover\n * @param {HTMLElement} el\n * @param {Object} pos\n */\n updateToolsLocal(data) {\n const { el, pos, view, component } = data || this.getElHovered();\n\n if (!el) {\n this.lastHovered = 0;\n return;\n }\n\n const isHoverEn = component.get('hoverable');\n const isNewEl = this.lastHovered !== el;\n const badgeOpts = isNewEl ? {} : { posOnly: 1 };\n\n if (isNewEl && isHoverEn) {\n this.lastHovered = el;\n this.showHighlighter(view);\n this.showElementOffset(el, pos, { view });\n }\n\n if (this.isCompSelected(component)) {\n this.hideHighlighter(view);\n this.hideElementOffset(view);\n }\n\n const unit = 'px';\n const toolsEl = this.toggleToolsEl(1, view);\n const { style } = toolsEl;\n const frameOff = this.canvas.canvasRectOffset(el, pos);\n const topOff = frameOff.top;\n const leftOff = frameOff.left;\n\n this.updateBadge(el, pos, {\n ...badgeOpts,\n view,\n topOff,\n leftOff,\n });\n\n style.top = topOff + unit;\n style.left = leftOff + unit;\n style.width = pos.width + unit;\n style.height = pos.height + unit;\n\n this._trgToolUp('local', {\n component,\n el: toolsEl,\n top: topOff,\n left: leftOff,\n width: pos.width,\n height: pos.height,\n });\n },\n\n _upToolbar: debounce(function () {\n this.updateToolsGlobal({ force: 1 });\n }),\n\n _trgToolUp(type, opts = {}) {\n this.em.trigger('canvas:tools:update', {\n type,\n ...opts,\n });\n },\n\n updateToolsGlobal(opts = {}) {\n const { el, pos, component } = this.getElSelected();\n\n if (!el) {\n this.toggleToolsEl(); // Hides toolbar\n this.lastSelected = 0;\n return;\n }\n\n const { canvas } = this;\n const isNewEl = this.lastSelected !== el;\n\n if (isNewEl || opts.force) {\n this.lastSelected = el;\n this.updateToolbar(component);\n }\n\n const unit = 'px';\n const toolsEl = this.toggleToolsEl(1);\n const { style } = toolsEl;\n const targetToElem = canvas.getTargetToElementFixed(el, canvas.getToolbarEl(), { pos });\n const topOff = targetToElem.canvasOffsetTop;\n const leftOff = targetToElem.canvasOffsetLeft;\n style.top = topOff + unit;\n style.left = leftOff + unit;\n style.width = pos.width + unit;\n style.height = pos.height + unit;\n\n this.updateToolbarPos({ top: targetToElem.top, left: targetToElem.left });\n this._trgToolUp('global', {\n component,\n el: toolsEl,\n top: topOff,\n left: leftOff,\n width: pos.width,\n height: pos.height,\n });\n },\n\n /**\n * Update attached elements, eg. component toolbar\n */\n updateAttached: debounce(function () {\n this.updateGlobalPos();\n }),\n\n onContainerChange: debounce(function () {\n this.em.refreshCanvas();\n }, 150),\n\n /**\n * Returns element's data info\n * @param {HTMLElement} el\n * @return {Object}\n * @private\n */\n getElementPos(el) {\n return this.canvas.getCanvasView().getElementPos(el);\n },\n\n /**\n * Hide badge\n * @private\n * */\n hideBadge() {\n this.getBadge().style.display = 'none';\n },\n\n /**\n * Clean previous model from different states\n * @param {Component} model\n * @private\n */\n cleanPrevious(model) {\n model &&\n model.set({\n status: '',\n state: '',\n });\n },\n\n /**\n * Returns content window\n * @private\n */\n getContentWindow() {\n return this.canvas.getWindow();\n },\n\n run(editor) {\n if (!hasWin()) return;\n this.editor = editor && editor.get('Editor');\n this.enable();\n },\n\n stop(ed, sender, opts = {}) {\n if (!hasWin()) return;\n const { em, editor } = this;\n this.onHovered(); // force to hide toolbar\n this.stopSelectComponent();\n !opts.preserveSelected && em.setSelected(null);\n this.toggleToolsEl();\n editor && editor.stopCommand('resize');\n },\n};\n","import Backbone from 'backbone';\nconst $ = Backbone.$;\n\nexport default {\n /**\n * Start select position event\n * @param {HTMLElement} trg\n * @private\n * */\n startSelectPosition(trg, doc, opts = {}) {\n this.isPointed = false;\n var utils = this.editorModel.get('Utils');\n const container = trg.ownerDocument.body;\n\n if (utils && !this.sorter)\n this.sorter = new utils.Sorter({\n container,\n placer: this.canvas.getPlacerEl(),\n containerSel: '*',\n itemSel: '*',\n pfx: this.ppfx,\n direction: 'a',\n document: doc,\n wmargin: 1,\n nested: 1,\n em: this.editorModel,\n canvasRelative: 1,\n scale: () => this.em.getZoomDecimal(),\n });\n\n if (opts.onStart) this.sorter.onStart = opts.onStart;\n trg && this.sorter.startSort(trg, { container });\n },\n\n /**\n * Get frame position\n * @return {Object}\n * @private\n */\n getOffsetDim() {\n var frameOff = this.offset(this.canvas.getFrameEl());\n var canvasOff = this.offset(this.canvas.getElement());\n var top = frameOff.top - canvasOff.top;\n var left = frameOff.left - canvasOff.left;\n return { top, left };\n },\n\n /**\n * Stop select position event\n * @private\n * */\n stopSelectPosition() {\n this.posTargetCollection = null;\n this.posIndex = this.posMethod == 'after' && this.cDim.length !== 0 ? this.posIndex + 1 : this.posIndex; //Normalize\n if (this.sorter) {\n this.sorter.moved = 0;\n this.sorter.endMove();\n }\n if (this.cDim) {\n this.posIsLastEl = this.cDim.length !== 0 && this.posMethod == 'after' && this.posIndex == this.cDim.length;\n this.posTargetEl =\n this.cDim.length === 0\n ? $(this.outsideElem)\n : !this.posIsLastEl && this.cDim[this.posIndex]\n ? $(this.cDim[this.posIndex][5]).parent()\n : $(this.outsideElem);\n this.posTargetModel = this.posTargetEl.data('model');\n this.posTargetCollection = this.posTargetEl.data('model-comp');\n }\n },\n\n /**\n * Enabel select position\n * @private\n */\n enable() {\n this.startSelectPosition();\n },\n\n /**\n * Check if the pointer is near to the float component\n * @param {number} index\n * @param {string} method\n * @param {Array} dims\n * @return {Boolean}\n * @private\n * */\n nearFloat(index, method, dims) {\n var i = index || 0;\n var m = method || 'before';\n var len = dims.length;\n var isLast = len !== 0 && m == 'after' && i == len;\n if (len !== 0 && ((!isLast && !dims[i][4]) || (dims[i - 1] && !dims[i - 1][4]) || (isLast && !dims[i - 1][4])))\n return 1;\n return 0;\n },\n\n run() {\n this.enable();\n },\n\n stop() {\n this.stopSelectPosition();\n this.$wrapper.css('cursor', '');\n this.$wrapper.unbind();\n },\n};\n","import Backbone from 'backbone';\nimport { isUndefined } from 'underscore';\nimport { isTextNode } from '../../utils/mixins';\nconst $ = Backbone.$;\n\nexport default {\n getOffsetMethod(state) {\n var method = state || '';\n return 'get' + method + 'OffsetViewerEl';\n },\n\n run(editor, sender, opts) {\n var opt = opts || {};\n var state = opt.state || '';\n var config = editor.getConfig();\n const zoom = this.em.getZoomDecimal();\n const el = opt.el || '';\n\n if (!config.showOffsets || isTextNode(el) || (!config.showOffsetsSelected && state == 'Fixed')) {\n editor.stopCommand(this.id, opts);\n return;\n }\n\n var canvas = editor.Canvas;\n var pos = { ...(opt.elPos || canvas.getElementPos(el)) };\n\n if (!isUndefined(opt.top)) {\n pos.top = opt.top;\n }\n if (!isUndefined(opt.left)) {\n pos.left = opt.left;\n }\n\n var style = window.getComputedStyle(el);\n var ppfx = this.ppfx;\n var stateVar = state + 'State';\n var method = this.getOffsetMethod(state);\n var offsetViewer = canvas[method](opts.view);\n offsetViewer.style.opacity = '';\n\n let marginT = this['marginT' + state];\n let marginB = this['marginB' + state];\n let marginL = this['marginL' + state];\n let marginR = this['marginR' + state];\n let padT = this['padT' + state];\n let padB = this['padB' + state];\n let padL = this['padL' + state];\n let padR = this['padR' + state];\n\n if (offsetViewer.childNodes.length) {\n this[stateVar] = '1';\n marginT = offsetViewer.querySelector('[data-offset-m-t]');\n marginB = offsetViewer.querySelector('[data-offset-m-b]');\n marginL = offsetViewer.querySelector('[data-offset-m-l]');\n marginR = offsetViewer.querySelector('[data-offset-m-r]');\n padT = offsetViewer.querySelector('[data-offset-p-t]');\n padB = offsetViewer.querySelector('[data-offset-p-b]');\n padL = offsetViewer.querySelector('[data-offset-p-l]');\n padR = offsetViewer.querySelector('[data-offset-p-r]');\n }\n\n if (!this[stateVar]) {\n var stateLow = state.toLowerCase();\n var marginName = stateLow + 'margin-v';\n var paddingName = stateLow + 'padding-v';\n var marginV = $(`
`).get(0);\n var paddingV = $(`
`).get(0);\n var marginEls = ppfx + marginName + '-el';\n var paddingEls = ppfx + paddingName + '-el';\n const fullMargName = `${marginEls} ${ppfx + marginName}`;\n const fullPadName = `${paddingEls} ${ppfx + paddingName}`;\n marginT = $(`
`).get(0);\n marginB = $(`
`).get(0);\n marginL = $(`
`).get(0);\n marginR = $(`
`).get(0);\n padT = $(`
`).get(0);\n padB = $(`
`).get(0);\n padL = $(`
`).get(0);\n padR = $(`
`).get(0);\n this['marginT' + state] = marginT;\n this['marginB' + state] = marginB;\n this['marginL' + state] = marginL;\n this['marginR' + state] = marginR;\n this['padT' + state] = padT;\n this['padB' + state] = padB;\n this['padL' + state] = padL;\n this['padR' + state] = padR;\n marginV.appendChild(marginT);\n marginV.appendChild(marginB);\n marginV.appendChild(marginL);\n marginV.appendChild(marginR);\n paddingV.appendChild(padT);\n paddingV.appendChild(padB);\n paddingV.appendChild(padL);\n paddingV.appendChild(padR);\n offsetViewer.appendChild(marginV);\n offsetViewer.appendChild(paddingV);\n this[stateVar] = '1';\n }\n\n var unit = 'px';\n var marginLeftSt = parseFloat(style.marginLeft.replace(unit, '')) * zoom;\n var marginRightSt = parseFloat(style.marginRight.replace(unit, '')) * zoom;\n var marginTopSt = parseFloat(style.marginTop.replace(unit, '')) * zoom;\n var marginBottomSt = parseFloat(style.marginBottom.replace(unit, '')) * zoom;\n var mtStyle = marginT.style;\n var mbStyle = marginB.style;\n var mlStyle = marginL.style;\n var mrStyle = marginR.style;\n var ptStyle = padT.style;\n var pbStyle = padB.style;\n var plStyle = padL.style;\n var prStyle = padR.style;\n var posLeft = parseFloat(pos.left);\n var widthEl = parseFloat(style.width) * zoom + unit;\n\n // Margin style\n mtStyle.height = marginTopSt + unit;\n mtStyle.width = widthEl;\n mtStyle.top = pos.top - marginTopSt + unit;\n mtStyle.left = posLeft + unit;\n\n mbStyle.height = marginBottomSt + unit;\n mbStyle.width = widthEl;\n mbStyle.top = pos.top + pos.height + unit;\n mbStyle.left = posLeft + unit;\n\n var marginSideH = pos.height + marginTopSt + marginBottomSt + unit;\n var marginSideT = pos.top - marginTopSt + unit;\n mlStyle.height = marginSideH;\n mlStyle.width = marginLeftSt + unit;\n mlStyle.top = marginSideT;\n mlStyle.left = posLeft - marginLeftSt + unit;\n\n mrStyle.height = marginSideH;\n mrStyle.width = marginRightSt + unit;\n mrStyle.top = marginSideT;\n mrStyle.left = posLeft + pos.width + unit;\n\n // Padding style\n var padTop = parseFloat(style.paddingTop) * zoom;\n ptStyle.height = padTop + unit;\n // ptStyle.width = widthEl;\n // ptStyle.top = pos.top + unit;\n // ptStyle.left = posLeft + unit;\n\n var padBot = parseFloat(style.paddingBottom) * zoom;\n pbStyle.height = padBot + unit;\n // pbStyle.width = widthEl;\n // pbStyle.top = pos.top + pos.height - padBot + unit;\n // pbStyle.left = posLeft + unit;\n\n var padSideH = pos.height - padBot - padTop + unit;\n var padSideT = pos.top + padTop + unit;\n plStyle.height = padSideH;\n plStyle.width = parseFloat(style.paddingLeft) * zoom + unit;\n plStyle.top = padSideT;\n // plStyle.left = pos.left + unit;\n // plStyle.right = 0;\n\n var padRight = parseFloat(style.paddingRight) * zoom;\n prStyle.height = padSideH;\n prStyle.width = padRight + unit;\n prStyle.top = padSideT;\n // prStyle.left = pos.left + pos.width - padRight + unit;\n // prStyle.left = 0;\n },\n\n stop(editor, sender, opts = {}) {\n var opt = opts || {};\n var state = opt.state || '';\n var method = this.getOffsetMethod(state);\n var canvas = editor.Canvas;\n var offsetViewer = canvas[method](opts.view);\n offsetViewer.style.opacity = 0;\n },\n};\n","import { bindAll } from 'underscore';\n\nexport default {\n init() {\n bindAll(this, '_onFramesChange');\n },\n\n run(ed) {\n this.toggleVis(ed);\n },\n\n stop(ed) {\n this.toggleVis(ed, 0);\n },\n\n toggleVis(ed, active = 1) {\n if (!ed.Commands.isActive('preview')) {\n const cv = ed.Canvas;\n const mth = active ? 'on' : 'off';\n cv.getFrames().forEach(frame => this._upFrame(frame, active));\n cv.getModel()[mth]('change:frames', this._onFramesChange);\n }\n },\n\n _onFramesChange(m, frames) {\n frames.forEach(frame => frame.once('loaded', () => this._upFrame(frame, true)));\n },\n\n _upFrame(frame, active) {\n const method = active ? 'add' : 'remove';\n frame.view.getBody().classList[method](`${this.ppfx}dashed`);\n },\n};\n","import { isString, isElement } from 'underscore';\nimport { createId, deepMerge, isDef } from 'utils/mixins';\n\nexport default {\n getConfig(name) {\n return this.__getConfig(name);\n },\n\n getProjectData(data) {\n const obj = {};\n const key = this.storageKey;\n if (key) {\n obj[key] = data || this.getAll();\n }\n return obj;\n },\n\n loadProjectData(data = {}, { all, onResult, reset } = {}) {\n const key = this.storageKey;\n const opts = { action: 'load' };\n const coll = all || this.getAll();\n let result = data[key];\n\n if (typeof result == 'string') {\n try {\n result = JSON.parse(result);\n } catch (err) {\n this.__logWarn('Data parsing failed', { input: result });\n }\n }\n\n reset && result && coll.reset(null, opts);\n\n if (onResult) {\n result && onResult(result, opts);\n } else if (result && isDef(result.length)) {\n coll.reset(result, opts);\n }\n\n return result;\n },\n\n clear(opts = {}) {\n const { all } = this;\n all && all.reset(null, opts);\n return this;\n },\n\n __getConfig(name) {\n const res = this.config || {};\n return name ? res[name] : res;\n },\n\n getAll(opts = {}) {\n return this.all ? (opts.array ? [...this.all.models] : this.all) : [];\n },\n\n getAllMap() {\n return this.getAll().reduce((acc, i) => {\n acc[i.get(i.idAttribute)] = i;\n return acc;\n }, {});\n },\n\n __initConfig(def = {}, conf = {}) {\n this.config = deepMerge(def, conf);\n this.em = this.config.em;\n this.cls = [];\n },\n\n __initListen(opts = {}) {\n const { all, em, events } = this;\n all &&\n em &&\n all\n .on('add', (m, c, o) => em.trigger(events.add, m, o))\n .on('remove', (m, c, o) => em.trigger(events.remove, m, o))\n .on('change', (p, c) => em.trigger(events.update, p, p.changedAttributes(), c))\n .on('all', this.__catchAllEvent, this);\n // Register collections\n this.cls = [all].concat(opts.collections || []);\n // Propagate events\n (opts.propagate || []).forEach(({ entity, event }) => {\n entity.on('all', (ev, model, coll, opts) => {\n const options = opts || coll;\n const opt = { event: ev, ...options };\n [em, all].map(md => md.trigger(event, model, opt));\n });\n });\n },\n\n __remove(model, opts = {}) {\n const { em } = this;\n const md = isString(model) ? this.get(model) : model;\n const rm = () => {\n md && this.all.remove(md, opts);\n return md;\n };\n !opts.silent && em && em.trigger(this.events.removeBefore, md, rm, opts);\n return !opts.abort && rm();\n },\n\n __catchAllEvent(event, model, coll, opts) {\n const { em, events } = this;\n const options = opts || coll;\n em && events.all && em.trigger(events.all, { event, model, options });\n this.__onAllEvent();\n },\n\n __appendTo() {\n const elTo = this.getConfig().appendTo;\n\n if (elTo) {\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\n if (!el) return this.__logWarn('\"appendTo\" element not found');\n el.appendChild(this.render());\n }\n },\n\n __onAllEvent() {},\n\n __logWarn(str, opts) {\n this.em.logWarning(`[${this.name}]: ${str}`, opts);\n },\n\n _createId(len = 16) {\n const all = this.getAll();\n const ln = all.length + len;\n const allMap = this.getAllMap();\n let id;\n\n do {\n id = createId(ln);\n } while (allMap[id]);\n\n return id;\n },\n\n __listenAdd(model, event) {\n model.on('add', (m, c, o) => this.em.trigger(event, m, o));\n },\n\n __listenRemove(model, event) {\n model.on('remove', (m, c, o) => this.em.trigger(event, m, o));\n },\n\n __listenUpdate(model, event) {\n model.on('change', (p, c) => this.em.trigger(event, p, p.changedAttributes(), c));\n },\n\n __destroy() {\n this.cls.forEach(coll => {\n coll.stopListening();\n coll.reset();\n });\n this.em = 0;\n this.config = 0;\n this.view?.remove();\n this.view = 0;\n },\n};\n","export default {\n // Style prefix\n stylePrefix: 'css-',\n\n // Default CSS style\n rules: [],\n\n /**\n * Adjust style object before creation/update.\n * @example\n * onBeforeStyle(style) {\n * const padValue = style.padding;\n * if (padValue === '10px') {\n * delete style.padding;\n * style['padding-top'] = padValue;\n * // ...\n * }\n * return style;\n * }\n */\n onBeforeStyle: null,\n};\n","import { isEmpty, forEach, isString, isArray } from 'underscore';\nimport { Model } from '../../common';\nimport StyleableModel from '../../domain_abstract/model/StyleableModel';\nimport Selectors from '../../selector_manager/model/Selectors';\nimport { getMediaLength } from '../../code_manager/model/CssGenerator';\nimport { isEmptyObj, hasWin } from '../../utils/mixins';\n\nconst { CSS } = hasWin() ? window : {};\n\n/**\n * @typedef CssRule\n * @property {Array} selectors Array of selectors\n * @property {Object} style Object containing style definitions\n * @property {String} [selectorsAdd=''] Additional string css selectors\n * @property {String} [atRuleType=''] Type of at-rule, eg. `media`, 'font-face'\n * @property {String} [mediaText=''] At-rule value, eg. `(max-width: 1000px)`\n * @property {Boolean} [singleAtRule=false] This property is used only on at-rules, like 'page' or 'font-face', where the block containes only style declarations\n * @property {String} [state=''] State of the rule, eg: `hover`, `focused`\n * @property {Boolean|Array} [important=false] If true, sets `!important` on all properties. You can also pass an array to specify properties on which use important\n * @property {Boolean} [stylable=true] Indicates if the rule is stylable from the editor\n *\n * [Device]: device.html\n * [State]: state.html\n * [Component]: component.html\n */\nexport default class CssRule extends StyleableModel {\n defaults() {\n return {\n selectors: [],\n selectorsAdd: '',\n style: {},\n mediaText: '',\n state: '',\n stylable: true,\n atRuleType: '',\n singleAtRule: false,\n important: false,\n group: '',\n // If true, won't be stored in JSON or showed in CSS\n shallow: false,\n _undo: true,\n };\n }\n\n initialize(c, opt = {}) {\n this.config = c || {};\n this.opt = opt;\n this.em = opt.em;\n this.ensureSelectors();\n this.on('change', this.__onChange);\n }\n\n __onChange(m, opts) {\n const { em } = this;\n const changed = this.changedAttributes();\n !isEmptyObj(changed) && em && em.changesUp(opts);\n }\n\n clone() {\n const opts = { ...this.opt };\n const attr = { ...this.attributes };\n attr.selectors = this.get('selectors').map(s => s.clone());\n return new this.constructor(attr, opts);\n }\n\n ensureSelectors(m, c, opts) {\n const { em } = this;\n const sm = em && em.get('SelectorManager');\n const toListen = [this, 'change:selectors', this.ensureSelectors];\n let sels = this.getSelectors();\n this.stopListening(...toListen);\n\n if (sels.models) {\n sels = [...sels.models];\n }\n\n sels = isString(sels) ? [sels] : sels;\n\n if (Array.isArray(sels)) {\n const res = sels.filter(i => i).map(i => (sm ? sm.add(i) : i));\n sels = new Selectors(res);\n }\n\n this.set('selectors', sels, opts);\n this.listenTo(...toListen);\n }\n\n /**\n * Returns the at-rule statement when exists, eg. `@media (...)`, `@keyframes`\n * @returns {String}\n * @example\n * const cssRule = editor.Css.setRule('.class1', { color: 'red' }, {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)'\n * });\n * cssRule.getAtRule(); // \"@media (min-width: 500px)\"\n */\n getAtRule() {\n const type = this.get('atRuleType');\n const condition = this.get('mediaText');\n // Avoid breaks with the last condition\n const typeStr = type ? `@${type}` : condition ? '@media' : '';\n\n return typeStr + (condition && typeStr ? ` ${condition}` : '');\n }\n\n /**\n * Return selectors of the rule as a string\n * @param {Object} [opts] Options\n * @param {Boolean} [opts.skipState] Skip state from the result\n * @returns {String}\n * @example\n * const cssRule = editor.Css.setRule('.class1:hover', { color: 'red' });\n * cssRule.selectorsToString(); // \".class1:hover\"\n * cssRule.selectorsToString({ skipState: true }); // \".class1\"\n */\n selectorsToString(opts = {}) {\n const result = [];\n const state = this.get('state');\n const addSelector = this.get('selectorsAdd');\n const selOpts = {\n escape: str => (CSS && CSS.escape ? CSS.escape(str) : str),\n };\n const selectors = this.get('selectors').getFullString(0, selOpts);\n const stateStr = state && !opts.skipState ? `:${state}` : '';\n selectors && result.push(`${selectors}${stateStr}`);\n addSelector && !opts.skipAdd && result.push(addSelector);\n return result.join(', ');\n }\n\n /**\n * Get declaration block (without the at-rule statement)\n * @param {Object} [opts={}] Options (same as in `selectorsToString`)\n * @returns {String}\n * @example\n * const cssRule = editor.Css.setRule('.class1', { color: 'red' }, {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)'\n * });\n * cssRule.getDeclaration() // \".class1{color:red;}\"\n */\n getDeclaration(opts = {}) {\n let result = '';\n const { important } = this.attributes;\n const selectors = this.selectorsToString(opts);\n const style = this.styleToString({ important, ...opts });\n const singleAtRule = this.get('singleAtRule');\n\n if ((selectors || singleAtRule) && (style || opts.allowEmpty)) {\n result = singleAtRule ? style : `${selectors}{${style}}`;\n }\n\n return result;\n }\n\n /**\n * Get the Device the rule is related to.\n * @returns {[Device]|null}\n * @example\n * const device = rule.getDevice();\n * console.log(device?.getName());\n */\n getDevice() {\n const { em } = this;\n const { atRuleType, mediaText } = this.attributes;\n const devices = em?.get('DeviceManager').getDevices() || [];\n const deviceDefault = devices.filter(d => d.getWidthMedia() === '')[0];\n if (atRuleType !== 'media' || !mediaText) {\n return deviceDefault || null;\n }\n return devices.filter(d => d.getWidthMedia() === getMediaLength(mediaText))[0] || null;\n }\n\n /**\n * Get the State the rule is related to.\n * @returns {[State]|null}\n * @example\n * const state = rule.getState();\n * console.log(state?.getLabel());\n */\n getState() {\n const { em } = this;\n const stateValue = this.get('state');\n const states = em.get('SelectorManager').getStates() || [];\n return states.filter(s => s.getName() === stateValue)[0] || null;\n }\n\n /**\n * Returns the related Component (valid only for component-specific rules).\n * @returns {[Component]|null}\n * @example\n * const cmp = rule.getComponent();\n * console.log(cmp?.toHTML());\n */\n getComponent() {\n const sel = this.getSelectors();\n const sngl = sel.length == 1 && sel.at(0);\n const cmpId = sngl && sngl.isId() && sngl.get('name');\n return (cmpId && this.em?.get('DomComponents').getById(cmpId)) || null;\n }\n\n /**\n * Return the CSS string of the rule\n * @param {Object} [opts={}] Options (same as in `getDeclaration`)\n * @return {String} CSS string\n * @example\n * const cssRule = editor.Css.setRule('.class1', { color: 'red' }, {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)'\n * });\n * cssRule.toCSS() // \"@media (min-width: 500px){.class1{color:red;}}\"\n */\n toCSS(opts = {}) {\n let result = '';\n const atRule = this.getAtRule();\n const block = this.getDeclaration(opts);\n if (block || opts.allowEmpty) {\n result = block;\n }\n\n if (atRule && result) {\n result = `${atRule}{${result}}`;\n }\n\n return result;\n }\n\n toJSON(...args) {\n const obj = Model.prototype.toJSON.apply(this, args);\n\n if (this.em.getConfig().avoidDefaults) {\n const defaults = this.defaults();\n\n forEach(defaults, (value, key) => {\n if (obj[key] === value) {\n delete obj[key];\n }\n });\n\n // Delete the property used for partial updates\n delete obj.style.__p;\n\n if (isEmpty(obj.selectors)) delete obj.selectors;\n if (isEmpty(obj.style)) delete obj.style;\n }\n\n return obj;\n }\n\n /**\n * Compare the actual model with parameters\n * @param {Object} selectors Collection of selectors\n * @param {String} state Css rule state\n * @param {String} width For which device this style is oriented\n * @param {Object} ruleProps Other rule props\n * @returns {Boolean}\n * @private\n */\n compare(selectors, state, width, ruleProps = {}) {\n const st = state || '';\n const wd = width || '';\n const selAdd = ruleProps.selectorsAdd || '';\n let atRule = ruleProps.atRuleType || '';\n const sel = !isArray(selectors) && !selectors.models ? [selectors] : selectors.models || selectors;\n\n // Fix atRuleType in case is not specified with width\n if (wd && !atRule) atRule = 'media';\n\n const a1 = sel.map(model => model.getFullName());\n const a2 = this.get('selectors').map(model => model.getFullName());\n\n // Check selectors\n const a1S = a1.slice().sort();\n const a2S = a2.slice().sort();\n if (a1.length !== a2.length || !a1S.every((v, i) => v === a2S[i])) {\n return false;\n }\n\n // Check other properties\n if (\n this.get('state') !== st ||\n this.get('mediaText') !== wd ||\n this.get('selectorsAdd') !== selAdd ||\n this.get('atRuleType') !== atRule\n ) {\n return false;\n }\n\n return true;\n }\n}\n","import { Collection } from '../../common';\nimport CssRule from './CssRule';\n\nexport default class CssRules extends Collection {\n initialize(models, opt) {\n // Inject editor\n if (opt && opt.em) this.editor = opt.em;\n\n // This will put the listener post CssComposer.postLoad\n setTimeout(() => {\n this.on('remove', this.onRemove);\n this.on('add', this.onAdd);\n });\n }\n\n toJSON(opts) {\n const result = Collection.prototype.toJSON.call(this, opts);\n return result.filter(rule => rule.style && !rule.shallow);\n }\n\n onAdd(model, c, o) {\n model.ensureSelectors(model, c, o); // required for undo\n }\n\n onRemove(removed) {\n const em = this.editor;\n em.stopListening(removed);\n em.get('UndoManager').remove(removed);\n }\n\n add(models, opt = {}) {\n if (typeof models === 'string') {\n models = this.editor.get('Parser').parseCss(models);\n }\n opt.em = this.editor;\n return Collection.prototype.add.apply(this, [models, opt]);\n }\n}\n\nCssRules.prototype.model = CssRule;\n","/**\n * This module manages CSS rules in the canvas.\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/css_composer/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * cssComposer: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const css = editor.Css;\n * ```\n *\n * * [addRules](#addrules)\n * * [setRule](#setrule)\n * * [getRule](#getrule)\n * * [getRules](#getrules)\n * * [remove](#remove)\n * * [clear](#clear)\n *\n * [CssRule]: css_rule.html\n *\n * @module Css\n */\n\nimport { isArray, isString, isUndefined } from 'underscore';\nimport { isObject } from '../utils/mixins';\nimport Module from '../abstract/moduleLegacy';\nimport Selectors from '../selector_manager/model/Selectors';\nimport Selector from '../selector_manager/model/Selector';\nimport defaults from './config/config';\nimport CssRule from './model/CssRule';\nimport CssRules from './model/CssRules';\nimport CssRulesView from './view/CssRulesView';\n\nexport default class CssComposer extends Module {\n Selectors = Selectors;\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name = 'CssComposer';\n\n storageKey = 'styles';\n\n getConfig() {\n return this.c;\n }\n\n /**\n * Initializes module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config) {\n this.c = config || {};\n for (var name in defaults) {\n if (!(name in this.c)) this.c[name] = defaults[name];\n }\n\n var ppfx = this.c.pStylePrefix;\n if (ppfx) this.c.stylePrefix = ppfx + this.c.stylePrefix;\n\n var elStyle = (this.c.em && this.c.em.config.style) || '';\n this.c.rules = elStyle || this.c.rules;\n\n this.em = this.c.em;\n this.rules = new CssRules([], this.c);\n return this;\n }\n\n /**\n * On load callback\n * @private\n */\n onLoad() {\n this.rules.add(this.c.rules, { silent: 1 });\n }\n\n /**\n * Do stuff after load\n * @param {Editor} em\n * @private\n */\n postLoad() {\n const um = this.em?.get('UndoManager');\n um && um.add(this.getAll());\n }\n\n store() {\n return this.getProjectData();\n }\n\n load(data) {\n return this.loadProjectData(data);\n }\n\n /**\n * Add new rule to the collection, if not yet exists with the same selectors\n * @param {Array} selectors Array of selectors\n * @param {String} state Css rule state\n * @param {String} width For which device this style is oriented\n * @param {Object} props Other props for the rule\n * @param {Object} opts Options for the add of new rule\n * @return {Model}\n * @private\n * @example\n * var sm = editor.SelectorManager;\n * var sel1 = sm.add('myClass1');\n * var sel2 = sm.add('myClass2');\n * var rule = cssComposer.add([sel1, sel2], 'hover');\n * rule.set('style', {\n * width: '100px',\n * color: '#fff',\n * });\n * */\n add(selectors, state, width, opts = {}, addOpts = {}) {\n var s = state || '';\n var w = width || '';\n var opt = { ...opts };\n var rule = this.get(selectors, s, w, opt);\n\n // do not create rules that were found before\n // unless this is a single at-rule, for which multiple declarations\n // make sense (e.g. multiple `@font-type`s)\n if (rule && rule.config && !rule.config.singleAtRule) {\n return rule;\n } else {\n opt.state = s;\n opt.mediaText = w;\n opt.selectors = [];\n w && (opt.atRuleType = 'media');\n rule = new CssRule(opt, this.c);\n rule.get('selectors').add(selectors, addOpts);\n this.rules.add(rule, addOpts);\n return rule;\n }\n }\n\n /**\n * Get the rule\n * @param {String|Array} selectors Array of selectors or selector string, eg `.myClass1.myClass2`\n * @param {String} state Css rule state, eg. 'hover'\n * @param {String} width Media rule value, eg. '(max-width: 992px)'\n * @param {Object} ruleProps Other rule props\n * @return {Model|null}\n * @private\n * @example\n * const sm = editor.SelectorManager;\n * const sel1 = sm.add('myClass1');\n * const sel2 = sm.add('myClass2');\n * const rule = cssComposer.get([sel1, sel2], 'hover', '(max-width: 992px)');\n * // Update the style\n * rule.set('style', {\n * width: '300px',\n * color: '#000',\n * });\n * */\n get(selectors, state, width, ruleProps) {\n let slc = selectors;\n if (isString(selectors)) {\n const sm = this.em.get('SelectorManager');\n const singleSel = selectors.split(',')[0].trim();\n const node = this.em.get('Parser').parserCss.checkNode({ selectors: singleSel })[0];\n slc = sm.get(node.selectors);\n }\n return this.rules.find(rule => rule.compare(slc, state, width, ruleProps)) || null;\n }\n\n getAll() {\n return this.rules;\n }\n\n /**\n * Add a raw collection of rule objects\n * This method overrides styles, in case, of already defined rule\n * @param {String|Array} data CSS string or an array of rule objects, eg. [{selectors: ['class1'], style: {....}}, ..]\n * @param {Object} opts Options\n * @param {Object} props Additional properties to add on rules\n * @return {Array}\n * @private\n */\n addCollection(data, opts = {}, props = {}) {\n const result = [];\n\n if (isString(data)) {\n data = this.em.get('Parser').parseCss(data);\n }\n\n const d = data instanceof Array ? data : [data];\n\n for (var i = 0, l = d.length; i < l; i++) {\n var rule = d[i] || {};\n if (!rule.selectors) continue;\n var sm = this.em?.get('SelectorManager');\n if (!sm) console.warn('Selector Manager not found');\n var sl = rule.selectors;\n var sels = sl instanceof Array ? sl : [sl];\n var newSels = [];\n\n for (var j = 0, le = sels.length; j < le; j++) {\n var selec = sm.add(sels[j]);\n newSels.push(selec);\n }\n\n var modelExists = this.get(newSels, rule.state, rule.mediaText, rule);\n var model = this.add(newSels, rule.state, rule.mediaText, rule, opts);\n var updateStyle = !modelExists || !opts.avoidUpdateStyle;\n const style = rule.style || {};\n\n isObject(props) && model.set(props, opts);\n\n if (updateStyle) {\n let styleUpdate = opts.extend ? { ...model.get('style'), ...style } : style;\n model.set('style', styleUpdate, opts);\n }\n\n result.push(model);\n }\n\n return result;\n }\n\n /**\n * Add CssRules via CSS string.\n * @param {String} css CSS string of rules to add.\n * @returns {Array<[CssRule]>} Array of rules\n * @example\n * const addedRules = css.addRules('.my-cls{ color: red } @media (max-width: 992px) { .my-cls{ color: darkred } }');\n * // Check rules\n * console.log(addedRules.map(rule => rule.toCSS()));\n */\n addRules(css) {\n return this.addCollection(css);\n }\n\n /**\n * Add/update the CssRule.\n * @param {String} selectors Selector string, eg. `.myclass`\n * @param {Object} style Style properties and values\n * @param {Object} [opts={}] Additional properties\n * @param {String} [opts.atRuleType=''] At-rule type, eg. `media`\n * @param {String} [opts.atRuleParams=''] At-rule parameters, eg. `(min-width: 500px)`\n * @returns {[CssRule]} The new/updated CssRule\n * @example\n * // Simple class-based rule\n * const rule = css.setRule('.class1.class2', { color: 'red' });\n * console.log(rule.toCSS()) // output: .class1.class2 { color: red }\n * // With state and other mixed selector\n * const rule = css.setRule('.class1.class2:hover, div#myid', { color: 'red' });\n * // output: .class1.class2:hover, div#myid { color: red }\n * // With media\n * const rule = css.setRule('.class1:hover', { color: 'red' }, {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)',\n * });\n * // output: @media (min-width: 500px) { .class1:hover { color: red } }\n */\n setRule(selectors, style, opts = {}) {\n const { atRuleType, atRuleParams } = opts;\n const node = this.em.get('Parser').parserCss.checkNode({\n selectors,\n style,\n })[0];\n const { state, selectorsAdd } = node;\n const sm = this.em.get('SelectorManager');\n const selector = sm.add(node.selectors);\n const rule = this.add(selector, state, atRuleParams, {\n selectorsAdd,\n atRule: atRuleType,\n });\n rule.setStyle(style, opts);\n return rule;\n }\n\n /**\n * Get the CssRule.\n * @param {String} selectors Selector string, eg. `.myclass:hover`\n * @param {Object} [opts={}] Additional properties\n * @param {String} [opts.atRuleType=''] At-rule type, eg. `media`\n * @param {String} [opts.atRuleParams=''] At-rule parameters, eg. '(min-width: 500px)'\n * @returns {[CssRule]}\n * @example\n * const rule = css.getRule('.myclass1:hover');\n * const rule2 = css.getRule('.myclass1:hover, div#myid');\n * const rule3 = css.getRule('.myclass1', {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)',\n * });\n */\n getRule(selectors, opts = {}) {\n const sm = this.em.get('SelectorManager');\n const node = this.em.get('Parser').parserCss.checkNode({ selectors })[0];\n const selector = sm.get(node.selectors);\n const { state, selectorsAdd } = node;\n const { atRuleType, atRuleParams } = opts;\n return (\n selector &&\n this.get(selector, state, atRuleParams, {\n selectorsAdd,\n atRule: atRuleType,\n })\n );\n }\n\n /**\n * Get all rules or filtered by a matching selector.\n * @param {String} [selector=''] Selector, eg. `.myclass`\n * @returns {Array<[CssRule]>}\n * @example\n * // Take all the component specific rules\n * const id = someComponent.getId();\n * const rules = css.getRules(`#${id}`);\n * console.log(rules.map(rule => rule.toCSS()))\n * // All rules in the project\n * console.log(css.getRules())\n */\n getRules(selector) {\n const rules = this.getAll();\n if (!selector) return [...rules.models];\n const optRuleSel = { sort: true };\n const sels = isString(selector) ? selector.split(',').map(s => s.trim()) : selector;\n const result = rules.filter(r => sels.indexOf(r.getSelectors().getFullString(null, optRuleSel)) >= 0);\n return result;\n }\n\n /**\n * Add/update the CSS rule with id selector\n * @param {string} name Id selector name, eg. 'my-id'\n * @param {Object} style Style properties and values\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule} The new/updated rule\n * @private\n * @example\n * const rule = css.setIdRule('myid', { color: 'red' });\n * const ruleHover = css.setIdRule('myid', { color: 'blue' }, { state: 'hover' });\n * // This will add current CSS:\n * // #myid { color: red }\n * // #myid:hover { color: blue }\n */\n setIdRule(name, style = {}, opts = {}) {\n const { addOpts = {}, mediaText } = opts;\n const state = opts.state || '';\n const media = !isUndefined(mediaText) ? mediaText : this.em.getCurrentMedia();\n const sm = this.em.get('SelectorManager');\n const selector = sm.add({ name, type: Selector.TYPE_ID }, addOpts);\n const rule = this.add(selector, state, media, {}, addOpts);\n rule.setStyle(style, { ...opts, ...addOpts });\n return rule;\n }\n\n /**\n * Get the CSS rule by id selector\n * @param {string} name Id selector name, eg. 'my-id'\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule}\n * @private\n * @example\n * const rule = css.getIdRule('myid');\n * const ruleHover = css.setIdRule('myid', { state: 'hover' });\n */\n getIdRule(name, opts = {}) {\n const { mediaText } = opts;\n const state = opts.state || '';\n const media = !isUndefined(mediaText) ? mediaText : this.em.getCurrentMedia();\n const selector = this.em.get('SelectorManager').get(name, Selector.TYPE_ID);\n return selector && this.get(selector, state, media);\n }\n\n /**\n * Add/update the CSS rule with class selector\n * @param {string} name Class selector name, eg. 'my-class'\n * @param {Object} style Style properties and values\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule} The new/updated rule\n * @private\n * @example\n * const rule = css.setClassRule('myclass', { color: 'red' });\n * const ruleHover = css.setClassRule('myclass', { color: 'blue' }, { state: 'hover' });\n * // This will add current CSS:\n * // .myclass { color: red }\n * // .myclass:hover { color: blue }\n */\n setClassRule(name, style = {}, opts = {}) {\n const state = opts.state || '';\n const media = opts.mediaText || this.em.getCurrentMedia();\n const sm = this.em.get('SelectorManager');\n const selector = sm.add({ name, type: Selector.TYPE_CLASS });\n const rule = this.add(selector, state, media);\n rule.setStyle(style, opts);\n return rule;\n }\n\n /**\n * Get the CSS rule by class selector\n * @param {string} name Class selector name, eg. 'my-class'\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule}\n * @private\n * @example\n * const rule = css.getClassRule('myclass');\n * const ruleHover = css.getClassRule('myclass', { state: 'hover' });\n */\n getClassRule(name, opts = {}) {\n const state = opts.state || '';\n const media = opts.mediaText || this.em.getCurrentMedia();\n const selector = this.em.get('SelectorManager').get(name, Selector.TYPE_CLASS);\n return selector && this.get(selector, state, media);\n }\n\n /**\n * Remove rule, by CssRule or matching selector (eg. the selector will match also at-rules like `@media`)\n * @param {String|[CssRule]|Array<[CssRule]>} rule CssRule or matching selector.\n * @return {Array<[CssRule]>} Removed rules\n * @example\n * // Remove by CssRule\n * const toRemove = css.getRules('.my-cls');\n * css.remove(toRemove);\n * // Remove by selector\n * css.remove('.my-cls-2');\n */\n remove(rule, opts) {\n const toRemove = isString(rule) ? this.getRules(rule) : rule;\n const result = this.getAll().remove(toRemove, opts);\n return isArray(result) ? result : [result];\n }\n\n /**\n * Remove all rules\n * @return {this}\n */\n clear(opts = {}) {\n this.getAll().reset(null, opts);\n return this;\n }\n\n getComponentRules(cmp, opts = {}) {\n let { state, mediaText, current } = opts;\n if (current) {\n state = this.em.get('state') || '';\n mediaText = this.em.getCurrentMedia();\n }\n const id = cmp.getId();\n const rules = this.getAll().filter(r => {\n if (!isUndefined(state) && r.get('state') !== state) return;\n if (!isUndefined(mediaText) && r.get('mediaText') !== mediaText) return;\n return r.getSelectorsString() === `#${id}`;\n });\n return rules;\n }\n\n /**\n * Render the block of CSS rules\n * @return {HTMLElement}\n * @private\n */\n render() {\n this.rulesView?.remove();\n this.rulesView = new CssRulesView({\n collection: this.rules,\n config: this.c,\n });\n return this.rulesView.render().el;\n }\n\n destroy() {\n this.rules.reset();\n this.rules.stopListening();\n this.rulesView?.remove();\n [this.em, this.rules, this.rulesView].forEach(i => (i = null));\n this.c = {};\n }\n}\n","import { View } from '../../common';\n\nexport default class CssRuleView extends View {\n tagName() {\n return 'style';\n }\n\n initialize(o = {}) {\n this.config = o.config || {};\n const { model } = this;\n this.listenTo(model, 'change', this.render);\n this.listenTo(model, 'destroy remove', this.remove);\n this.listenTo(model.get('selectors'), 'change', this.render);\n }\n\n render() {\n const { model, el } = this;\n const important = model.get('important');\n el.innerHTML = model.toCSS({ important });\n return this;\n }\n}\n","import CssRuleView from './CssRuleView';\n\nexport default class CssGroupRuleView extends CssRuleView {\n _createElement() {\n return document.createTextNode('');\n }\n\n render() {\n const model = this.model;\n const important = model.get('important');\n this.el.textContent = model.getDeclaration({ important });\n return this;\n }\n}\n","import { View } from '../../common';\nimport { createEl } from '../../utils/dom';\nimport CssRuleView from './CssRuleView';\nimport CssGroupRuleView from './CssGroupRuleView';\n\nconst getBlockId = (pfx, order) => `${pfx}${order ? `-${parseFloat(order)}` : ''}`;\n\nexport default class CssRulesView extends View {\n initialize(o) {\n const config = o.config || {};\n this.atRules = {};\n this.config = config;\n this.em = config.em;\n this.pfx = config.stylePrefix || '';\n this.className = this.pfx + 'rules';\n const coll = this.collection;\n this.listenTo(coll, 'add', this.addTo);\n this.listenTo(coll, 'reset', this.render);\n }\n\n /**\n * Add to collection\n * @param {Object} model\n * @private\n * */\n addTo(model) {\n this.addToCollection(model);\n }\n\n /**\n * Add new object to collection\n * @param {Object} model\n * @param {Object} fragmentEl\n * @return {Object}\n * @private\n * */\n addToCollection(model, fragmentEl) {\n // If the render is not yet started\n if (!this.renderStarted) {\n return;\n }\n\n const fragment = fragmentEl || null;\n const { config } = this;\n const opts = { model, config };\n let rendered, view;\n\n // I have to render keyframes of the same name together\n // Unfortunately at the moment I didn't find the way of appending them\n // if not staticly, via appendData\n if (model.get('atRuleType') === 'keyframes') {\n const atRule = model.getAtRule();\n let atRuleEl = this.atRules[atRule];\n\n if (!atRuleEl) {\n const styleEl = document.createElement('style');\n atRuleEl = document.createTextNode('');\n styleEl.appendChild(document.createTextNode(`${atRule}{`));\n styleEl.appendChild(atRuleEl);\n styleEl.appendChild(document.createTextNode('}'));\n this.atRules[atRule] = atRuleEl;\n rendered = styleEl;\n }\n\n view = new CssGroupRuleView(opts);\n atRuleEl.appendData(view.render().el.textContent);\n } else {\n view = new CssRuleView(opts);\n rendered = view.render().el;\n }\n\n const clsName = this.className;\n const mediaText = model.get('mediaText');\n const defaultBlockId = getBlockId(clsName);\n let blockId = defaultBlockId;\n\n // If the rule contains a media query it might have a different container\n // for it (eg. rules created with Device Manager)\n if (mediaText) {\n blockId = getBlockId(clsName, this.getMediaWidth(mediaText));\n }\n\n if (rendered) {\n const container = fragment || this.el;\n let contRules;\n\n // Try to find a specific container for the rule (if it\n // containes a media query), otherwise get the default one\n try {\n contRules = container.querySelector(`#${blockId}`);\n } catch (e) {}\n\n if (!contRules) {\n contRules = container.querySelector(`#${defaultBlockId}`);\n }\n\n contRules.appendChild(rendered);\n }\n\n return rendered;\n }\n\n getMediaWidth(mediaText) {\n return mediaText && mediaText.replace(`(${this.em.getConfig().mediaCondition}: `, '').replace(')', '');\n }\n\n render() {\n this.renderStarted = 1;\n this.atRules = {};\n const { em, $el, className, collection } = this;\n const frag = document.createDocumentFragment();\n $el.empty();\n\n // Create devices related DOM structure, ensure also to have a default container\n const prs = em.get('DeviceManager').getAll().pluck('priority');\n prs.every(pr => pr) && prs.unshift(0);\n prs.forEach(pr => frag.appendChild(createEl('div', { id: getBlockId(className, pr) })));\n\n collection.each(model => this.addToCollection(model, frag));\n $el.append(frag);\n $el.attr('class', className);\n return this;\n }\n}\n","export default {\n // The device `id` to select on start, if not indicated, the first available from `devices` will be used.\n default: null,\n\n // Default devices\n devices: [\n {\n id: 'desktop',\n name: 'Desktop',\n width: '',\n },\n {\n id: 'tablet',\n name: 'Tablet',\n width: '770px',\n widthMedia: '992px',\n },\n {\n id: 'mobileLandscape',\n name: 'Mobile landscape',\n width: '568px',\n widthMedia: '768px',\n },\n {\n id: 'mobilePortrait',\n name: 'Mobile portrait',\n width: '320px',\n widthMedia: '480px',\n },\n ],\n};\n","import { Model } from '../../common';\n\n/**\n * @typedef Device\n * @property {String} [name=''] Device type, eg. `Mobile`\n * @property {String} [width] Width to set for the editor iframe, eg. '900px'\n * @property {String} [height=''] Height to set for the editor iframe, eg. '600px'\n * @property {String} [widthMedia=''] The width which will be used in media queries, If empty the width will be used\n * @property {Number} [priority=null] Setup the order of media queries\n */\nexport default class Device extends Model {\n defaults() {\n return {\n name: '',\n width: null,\n height: '',\n widthMedia: null,\n priority: null,\n };\n }\n\n initialize() {\n this.get('widthMedia') === null && this.set('widthMedia', this.get('width'));\n this.get('width') === null && this.set('width', this.get('widthMedia'));\n !this.get('priority') && this.set('priority', parseFloat(this.get('widthMedia')) || 0);\n const toCheck = ['width', 'height', 'widthMedia'];\n toCheck.forEach(prop => this.checkUnit(prop));\n }\n\n checkUnit(prop) {\n const pr = this.get(prop) || '';\n const noUnit = (parseFloat(pr) || 0).toString() === pr.toString();\n noUnit && this.set(prop, `${pr}px`);\n }\n\n getName() {\n return this.get('name') || this.get('id');\n }\n\n getWidthMedia() {\n return this.get('widthMedia') || '';\n }\n}\n","import { Collection } from '../../common';\nimport Device from './Device';\n\nexport default class Devices extends Collection {\n comparator(left, right) {\n const max = Number.MAX_VALUE;\n return (right.get('priority') || max) - (left.get('priority') || max);\n }\n\n getSorted() {\n return this.sort();\n }\n}\n\nDevices.prototype.model = Device;\n","import { View } from '../../common';\nimport html from '../../utils/html';\n\nexport default class DevicesView extends View {\n template({ ppfx, label }) {\n return html`\n
${label}
\n
\n \n \n \n
\n
\n
\n
\n \n `;\n }\n\n events() {\n return {\n change: 'updateDevice',\n };\n }\n\n initialize(o) {\n this.config = o.config || {};\n this.em = this.config.em;\n this.ppfx = this.config.pStylePrefix || '';\n this.events['click .' + this.ppfx + 'add-trasp'] = this.startAdd;\n this.listenTo(this.em, 'change:device', this.updateSelect);\n this.delegateEvents();\n }\n\n /**\n * Start adding new device\n * @return {[type]} [description]\n * @private\n */\n startAdd() {}\n\n /**\n * Update device of the editor\n * @private\n */\n updateDevice() {\n var em = this.em;\n if (em) {\n var devEl = this.devicesEl;\n var val = devEl ? devEl.val() : '';\n em.set('device', val);\n }\n }\n\n /**\n * Update select value on device update\n * @private\n */\n updateSelect() {\n var em = this.em;\n var devEl = this.devicesEl;\n if (em && em.getDeviceModel && devEl) {\n var device = em.getDeviceModel();\n var name = device ? device.get('id') : '';\n devEl.val(name);\n }\n }\n\n /**\n * Return devices options\n * @return {string} String of options\n * @private\n */\n getOptions() {\n const { collection, em } = this;\n let result = '';\n\n collection.each(device => {\n const { name, id } = device.attributes;\n const label = (em && em.t && em.t(`deviceManager.devices.${id}`)) || name;\n result += ``;\n });\n\n return result;\n }\n\n render() {\n const { em, ppfx, $el, el } = this;\n const label = em && em.t && em.t('deviceManager.device');\n $el.html(this.template({ ppfx, label }));\n this.devicesEl = $el.find(`.${ppfx}devices`);\n this.devicesEl.append(this.getOptions());\n this.devicesEl.val(em.get('device'));\n el.className = `${ppfx}devices-c`;\n return this;\n }\n}\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/device_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * deviceManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const deviceManager = editor.Devices;\n * ```\n * ## Available Events\n * * `device:add` - Added new device. The [Device] is passed as an argument to the callback\n * * `device:remove` - Device removed. The [Device] is passed as an argument to the callback\n * * `device:select` - New device selected. The newly selected [Device] and the previous one, are passed as arguments to the callback\n * * `device:update` - Device updated. The updated [Device] and the object containing changes are passed as arguments to the callback\n * * `device` - Catch-all event for all the events mentioned above. An object containing all the available data about the triggered event is passed as an argument to the callback\n *\n * ## Methods\n * * [add](#add)\n * * [get](#get)\n * * [getDevices](#getdevices)\n * * [remove](#remove)\n * * [select](#select)\n * * [getSelected](#getselected)\n *\n * [Device]: device.html\n *\n * @module Devices\n */\nimport { isString } from 'underscore';\nimport Module from '../abstract/moduleLegacy';\nimport defaults from './config/config';\nimport Device from './model/Device';\nimport Devices from './model/Devices';\nimport DevicesView from './view/DevicesView';\n\nexport const evAll = 'device';\nexport const evPfx = `${evAll}:`;\nexport const evSelect = `${evPfx}select`;\nexport const evSelectBefore = `${evSelect}:before`;\nexport const evUpdate = `${evPfx}update`;\nexport const evAdd = `${evPfx}add`;\nexport const evAddBefore = `${evAdd}:before`;\nexport const evRemove = `${evPfx}remove`;\nexport const evRemoveBefore = `${evRemove}:before`;\nconst chnSel = 'change:device';\n\nexport default class DeviceManager extends Module {\n name = 'DeviceManager';\n\n Device = Device;\n\n Devices = Devices;\n\n events = {\n all: evAll,\n select: evSelect,\n // selectBefore: evSelectBefore,\n update: evUpdate,\n add: evAdd,\n // addBefore: evAddBefore,\n remove: evRemove,\n removeBefore: evRemoveBefore,\n };\n\n init(config = {}) {\n this.c = { ...defaults, ...config };\n const { em } = this.c;\n\n this.devices = new Devices();\n this.c.devices.forEach(dv => this.add(dv));\n this.em = em;\n this.all = this.devices;\n this.select(this.c.default || this.devices.at(0));\n this.__initListen();\n em.on(chnSel, this._onSelect, this);\n\n return this;\n }\n\n _onSelect(m, deviceId, opts) {\n const { em, events } = this;\n const prevId = m.previous('device');\n const newDevice = this.get(deviceId);\n const ev = events.select;\n em.trigger(ev, newDevice, this.get(prevId));\n this.__catchAllEvent(ev, newDevice, opts);\n }\n\n /**\n * Add new device\n * @param {Object} props Device properties\n * @returns {[Device]} Added device\n * @example\n * const device1 = deviceManager.add({\n * // Without an explicit ID, the `name` will be taken. In case of missing `name`, a random ID will be created.\n * id: 'tablet',\n * name: 'Tablet',\n * width: '900px', // This width will be applied on the canvas frame and for the CSS media\n * });\n * const device2 = deviceManager.add({\n * id: 'tablet2',\n * name: 'Tablet 2',\n * width: '800px', // This width will be applied on the canvas frame\n * widthMedia: '810px', // This width that will be used for the CSS media\n * height: '600px', // Height will be applied on the canvas frame\n * });\n */\n add(props, options = {}) {\n let result;\n let opts = options;\n\n // Support old API\n if (isString(props)) {\n const width = options;\n opts = arguments[2] || {};\n result = {\n ...opts,\n id: props,\n name: opts.name || props,\n width,\n };\n } else {\n result = props;\n }\n\n if (!result.id) {\n result.id = result.name || this._createId();\n }\n\n return this.devices.add(result, opts);\n }\n\n /**\n * Return device by ID\n * @param {String} id ID of the device\n * @returns {[Device]|null}\n * @example\n * const device = deviceManager.get('Tablet');\n * console.log(JSON.stringify(device));\n * // {name: 'Tablet', width: '900px'}\n */\n get(id) {\n // Support old API\n const byName = this.getAll().filter(d => d.get('name') === id)[0];\n return byName || this.devices.get(id) || null;\n }\n\n /**\n * Remove device\n * @param {String|[Device]} device Device or device id\n * @returns {[Device]} Removed device\n * @example\n * const removed = deviceManager.remove('device-id');\n * // or by passing the Device\n * const device = deviceManager.get('device-id');\n * deviceManager.remove(device);\n */\n remove(device, opts = {}) {\n return this.__remove(device, opts);\n }\n\n /**\n * Return all devices\n * @returns {Array<[Device]>}\n * @example\n * const devices = deviceManager.getDevices();\n * console.log(JSON.stringify(devices));\n * // [{name: 'Desktop', width: ''}, ...]\n */\n getDevices() {\n return this.devices.models;\n }\n\n /**\n * Change the selected device. This will update the frame in the canvas\n * @param {String|[Device]} device Device or device id\n * @example\n * deviceManager.select('some-id');\n * // or by passing the page\n * const device = deviceManager.get('some-id');\n * deviceManager.select(device);\n */\n select(device, opts = {}) {\n const md = isString(device) ? this.get(device) : device;\n md && this.em.set('device', md.get('id'), opts);\n return this;\n }\n\n /**\n * Get the selected device\n * @returns {[Device]}\n * @example\n * const selected = deviceManager.getSelected();\n */\n getSelected() {\n return this.get(this.em.get('device'));\n }\n\n getAll() {\n return this.devices;\n }\n\n render() {\n this.view?.remove();\n this.view = new DevicesView({\n collection: this.devices,\n config: this.c,\n });\n return this.view.render().el;\n }\n\n destroy() {\n this.devices.stopListening();\n this.devices.reset();\n this.view?.remove();\n [this.devices, this.view].forEach(i => (i = null));\n this.c = {};\n }\n}\n","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","import { isUndefined } from 'underscore';\nimport { Model } from '../../common';\n\n/**\n * @typedef Trait\n * @property {String} id Trait id, eg. `my-trait-id`.\n * @property {String} type Trait type, defines how the trait should rendered. Possible values: `text` (default), `number`, `select`, `checkbox`, `color`, `button`\n * @property {String} label The trait label to show for the rendered trait.\n * @property {String} name The name of the trait used as a key for the attribute/property. By default, the name is used as attribute name or property in case `changeProp` in enabled.\n * @property {Boolean} changeProp If `true` the trait value is applied on component\n *\n */\nexport default class Trait extends Model {\n initialize() {\n const { target, name, changeProp } = this.attributes;\n !this.get('id') && this.set('id', name);\n\n if (target) {\n this.target = target;\n this.unset('target');\n const targetEvent = changeProp ? `change:${name}` : `change:attributes:${name}`;\n this.listenTo(target, targetEvent, this.targetUpdated);\n }\n }\n\n /**\n * Get the trait id.\n * @returns {String}\n */\n getId() {\n return this.get('id');\n }\n\n /**\n * Get the trait type.\n * @returns {String}\n */\n getType() {\n return this.get('type');\n }\n\n /**\n * Get the trait name.\n * @returns {String}\n */\n getName() {\n return this.get('name');\n }\n\n /**\n * Get the trait label.\n * @param {Object} [opts={}] Options.\n * @param {Boolean} [opts.locale=true] Use the locale string from i18n module.\n * @returns {String}\n */\n getLabel(opts = {}) {\n const { locale = true } = opts;\n const id = this.getId();\n const name = this.get('label') || this.getName();\n return (locale && this.em?.t(`traitManager.traits.labels.${id}`)) || name;\n }\n\n /**\n * Get the trait value.\n * The value is taken from component attributes by default or from properties if the trait has the `changeProp` enabled.\n * @returns {any}\n */\n getValue() {\n return this.getTargetValue();\n }\n\n /**\n * Update the trait value.\n * The value is applied on component attributes by default or on properties if the trait has the `changeProp` enabled.\n * @param {any} value Value of the trait.\n * @param {Object} [opts={}] Options.\n * @param {Boolean} [opts.partial] If `true` the update won't be considered complete (not stored in UndoManager).\n */\n setValue(value, opts = {}) {\n const valueOpts = {};\n\n if (opts.partial) {\n valueOpts.avoidStore = true;\n }\n\n this.setTargetValue(value, valueOpts);\n\n if (opts.partial === false) {\n this.setTargetValue('');\n this.setTargetValue(value);\n }\n }\n\n props() {\n return this.attributes;\n }\n\n targetUpdated() {\n const value = this.getTargetValue();\n this.set({ value }, { fromTarget: 1 });\n this.em?.trigger('trait:update', {\n trait: this,\n component: this.target,\n });\n }\n\n getTargetValue() {\n const name = this.get('name');\n const target = this.target;\n let value;\n\n if (this.get('changeProp')) {\n value = target.get(name);\n } else {\n value = target.getAttributes()[name];\n }\n\n return !isUndefined(value) ? value : '';\n }\n\n setTargetValue(value, opts = {}) {\n const target = this.target;\n const name = this.get('name');\n if (isUndefined(value)) return;\n let valueToSet = value;\n\n if (value === 'false') {\n valueToSet = false;\n } else if (value === 'true') {\n valueToSet = true;\n }\n\n if (this.get('changeProp')) {\n target.set(name, valueToSet, opts);\n } else {\n const attrs = { ...target.get('attributes') };\n attrs[name] = valueToSet;\n target.set('attributes', attrs, opts);\n }\n }\n\n setValueFromInput(value, final = 1, opts = {}) {\n const toSet = { value };\n this.set(toSet, { ...opts, avoidStore: 1 });\n\n // Have to trigger the change\n if (final) {\n this.set('value', '', opts);\n this.set(toSet, opts);\n }\n }\n\n getInitValue() {\n const target = this.target;\n const name = this.get('name');\n let value;\n\n if (target) {\n const attrs = target.get('attributes');\n value = this.get('changeProp') ? target.get(name) : attrs[name];\n }\n\n return value || this.get('value') || this.get('default');\n }\n}\n\nTrait.prototype.defaults = {\n type: 'text',\n label: '',\n name: '',\n min: '',\n max: '',\n unit: '',\n step: 1,\n value: '',\n target: '',\n default: '',\n placeholder: '',\n changeProp: 0,\n options: [],\n};\n","import { isString, isArray } from 'underscore';\nimport { Collection } from '../../common';\nimport Trait from './Trait';\nimport TraitFactory from './TraitFactory';\n\nexport default class Traits extends Collection {\n initialize(coll, options = {}) {\n this.em = options.em;\n this.listenTo(this, 'add', this.handleAdd);\n this.listenTo(this, 'reset', this.handleReset);\n }\n\n handleReset(coll, { previousModels = [] } = {}) {\n previousModels.forEach(model => model.trigger('remove'));\n }\n\n handleAdd(model) {\n model.em = this.em;\n const target = this.target;\n\n if (target) {\n model.target = target;\n }\n }\n\n setTarget(target) {\n this.target = target;\n }\n\n add(models, opt) {\n const em = this.em;\n\n // Use TraitFactory if necessary\n if (isString(models) || isArray(models)) {\n const tm = em && em.get && em.get('TraitManager');\n const tmOpts = tm && tm.getConfig();\n const tf = TraitFactory(tmOpts);\n\n if (isString(models)) {\n models = [models];\n }\n\n for (var i = 0, len = models.length; i < len; i++) {\n const str = models[i];\n const model = isString(str) ? tf.build(str)[0] : str;\n model.target = this.target;\n models[i] = model;\n }\n }\n\n return Collection.prototype.add.apply(this, [models, opt]);\n }\n}\n\nTraits.prototype.model = Trait;\n","export default (config = {}) => ({\n /**\n * Build props object by their name\n * @param {Array|string} props Array of properties name\n * @return {Array}\n */\n build(props) {\n const objs = [];\n\n if (typeof props === 'string') props = [props];\n\n for (let i = 0; i < props.length; i++) {\n const obj = {};\n const prop = props[i];\n obj.name = prop;\n\n switch (prop) {\n case 'target':\n obj.type = 'select';\n obj.default = false;\n obj.options = config.optionsTarget;\n break;\n }\n\n objs.push(obj);\n }\n\n return objs;\n },\n});\n","import {\n isUndefined,\n isFunction,\n isArray,\n isEmpty,\n isBoolean,\n has,\n isString,\n forEach,\n result,\n bindAll,\n keys,\n} from 'underscore';\nimport { shallowDiff, capitalize, isEmptyObj, isObject, toLowerCase } from 'utils/mixins';\nimport StyleableModel from '../../domain_abstract/model/StyleableModel';\nimport { Model } from 'backbone';\nimport Components from './Components';\nimport Selector from 'selector_manager/model/Selector';\nimport Selectors from 'selector_manager/model/Selectors';\nimport Traits from 'trait_manager/model/Traits';\n\nconst escapeRegExp = str => {\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nconst avoidInline = em => em && em.getConfig().avoidInlineStyle;\n\nexport const eventDrag = 'component:drag';\nexport const keySymbols = '__symbols';\nexport const keySymbol = '__symbol';\nexport const keySymbolOvrd = '__symbol_ovrd';\nexport const keyUpdate = 'component:update';\nexport const keyUpdateInside = `${keyUpdate}-inside`;\n\n/**\n * The Component object represents a single node of our template structure, so when you update its properties the changes are\n * immediately reflected on the canvas and in the code to export (indeed, when you ask to export the code we just go through all\n * the tree of nodes).\n * An example on how to update properties:\n * ```js\n * component.set({\n * tagName: 'span',\n * attributes: { ... },\n * removable: false,\n * });\n * component.get('tagName');\n * // -> 'span'\n * ```\n *\n * [Component]: component.html\n *\n * @property {String} [type=''] Component type, eg. `text`, `image`, `video`, etc.\n * @property {String} [tagName='div'] HTML tag of the component, eg. `span`. Default: `div`\n * @property {Object} [attributes={}] Key-value object of the component's attributes, eg. `{ title: 'Hello' }` Default: `{}`\n * @property {String} [name=''] Name of the component. Will be used, for example, in Layers and badges\n * @property {Boolean} [removable=true] When `true` the component is removable from the canvas, default: `true`\n * @property {Boolean|String|Function} [draggable=true] Indicates if it's possible to drag the component inside others.\n * You can also specify a query string to indentify elements,\n * eg. `'.some-class[title=Hello], [data-gjs-type=column]'` means you can drag the component only inside elements\n * containing `some-class` class and `Hello` title, and `column` components. In the case of a function, target and destination components are passed as arguments, return a Boolean to indicate if the drag is possible. Default: `true`\n * @property {Boolean|String|Function} [droppable=true] Indicates if it's possible to drop other components inside. You can use\n * a query string as with `draggable`. In the case of a function, target and destination components are passed as arguments, return a Boolean to indicate if the drop is possible. Default: `true`\n * @property {Boolean} [badgable=true] Set to false if you don't want to see the badge (with the name) over the component. Default: `true`\n * @property {Boolean|Array} [stylable=true] True if it's possible to style the component.\n * You can also indicate an array of CSS properties which is possible to style, eg. `['color', 'width']`, all other properties\n * will be hidden from the style manager. Default: `true`\n * @property {Array} [stylable-require=[]] Indicate an array of style properties to show up which has been marked as `toRequire`. Default: `[]`\n * @property {Array} [unstylable=[]] Indicate an array of style properties which should be hidden from the style manager. Default: `[]`\n * @property {Boolean} [highlightable=true] It can be highlighted with 'dotted' borders if true. Default: `true`\n * @property {Boolean} [copyable=true] True if it's possible to clone the component. Default: `true`\n * @property {Boolean} [resizable=false] Indicates if it's possible to resize the component. It's also possible to pass an object as [options for the Resizer](https://github.com/artf/grapesjs/blob/master/src/utils/Resizer.js). Default: `false`\n * @property {Boolean} [editable=false] Allow to edit the content of the component (used on Text components). Default: `false`\n * @property {Boolean} [layerable=true] Set to `false` if you need to hide the component inside Layers. Default: `true`\n * @property {Boolean} [selectable=true] Allow component to be selected when clicked. Default: `true`\n * @property {Boolean} [hoverable=true] Shows a highlight outline when hovering on the element if `true`. Default: `true`\n * @property {Boolean} [locked=false] Disable the selection of the component and its children in the canvas. Default: `false`\n * @property {Boolean} [void=false] This property is used by the HTML exporter as void elements don't have closing tags, eg. `
`, `
`, etc. Default: `false`\n * @property {Object} [style={}] Component default style, eg. `{ width: '100px', height: '100px', 'background-color': 'red' }`\n * @property {String} [styles=''] Component related styles, eg. `.my-component-class { color: red }`\n * @property {String} [content=''] Content of the component (not escaped) which will be appended before children rendering. Default: `''`\n * @property {String} [icon=''] Component's icon, this string will be inserted before the name (in Layers and badge), eg. it can be an HTML string ''. Default: `''`\n * @property {String|Function} [script=''] Component's javascript. More about it [here](/modules/Components-js.html). Default: `''`\n * @property {String|Function} [script-export=''] You can specify javascript available only in export functions (eg. when you get the HTML).\n * If this property is defined it will overwrite the `script` one (in export functions). Default: `''`\n * @property {Array} [traits=''] Component's traits. More about it [here](/modules/Traits.html). Default: `['id', 'title']`\n * @property {Array} [propagate=[]] Indicates an array of properties which will be inhereted by all NEW appended children.\n * For example if you create a component likes this: `{ removable: false, draggable: false, propagate: ['removable', 'draggable'] }`\n * and append some new component inside, the new added component will get the exact same properties indicated in the `propagate` array (and the `propagate` property itself). Default: `[]`\n * @property {Array} [toolbar=null] Set an array of items to show up inside the toolbar when the component is selected (move, clone, delete).\n * Eg. `toolbar: [ { attributes: {class: 'fa fa-arrows'}, command: 'tlb-move' }, ... ]`.\n * By default, when `toolbar` property is falsy the editor will add automatically commands `core:component-exit` (select parent component, added if there is one), `tlb-move` (added if `draggable`) , `tlb-clone` (added if `copyable`), `tlb-delete` (added if `removable`).\n * @property {Collection} [components=null] Children components. Default: `null`\n *\n * @module docsjs.Component\n */\nexport default class Component extends StyleableModel {\n /**\n * Hook method, called once the model is created\n */\n init() {}\n\n /**\n * Hook method, called when the model has been updated (eg. updated some model's property)\n * @param {String} property Property name, if triggered after some property update\n * @param {*} value Property value, if triggered after some property update\n * @param {*} previous Property previous value, if triggered after some property update\n */\n updated(property, value, previous) {}\n\n /**\n * Hook method, called once the model has been removed\n */\n removed() {}\n\n initialize(props = {}, opt = {}) {\n bindAll(this, '__upSymbProps', '__upSymbCls', '__upSymbComps');\n const em = opt.em;\n\n // Propagate properties from parent if indicated\n const parent = this.parent();\n const parentAttr = parent && parent.attributes;\n const propagate = this.get('propagate');\n propagate && this.set('propagate', isArray(propagate) ? propagate : [propagate]);\n\n if (parentAttr && parentAttr.propagate && !propagate) {\n const newAttr = {};\n const toPropagate = parentAttr.propagate;\n toPropagate.forEach(prop => (newAttr[prop] = parent.get(prop)));\n newAttr.propagate = toPropagate;\n this.set({ ...newAttr, ...props });\n }\n\n // Check void elements\n if (opt && opt.config && opt.config.voidElements.indexOf(this.get('tagName')) >= 0) {\n this.set('void', true);\n }\n\n opt.em = em;\n this.opt = opt;\n this.em = em;\n this.frame = opt.frame;\n this.config = opt.config || {};\n this.set('attributes', {\n ...(result(this, 'defaults').attributes || {}),\n ...(this.get('attributes') || {}),\n });\n this.ccid = Component.createId(this, opt);\n this.initClasses();\n this.initTraits();\n this.initComponents();\n this.initToolbar();\n this.initScriptProps();\n this.listenTo(this, 'change:script', this.scriptUpdated);\n this.listenTo(this, 'change:tagName', this.tagUpdated);\n this.listenTo(this, 'change:attributes', this.attrUpdated);\n this.listenTo(this, 'change:attributes:id', this._idUpdated);\n this.on('change:toolbar', this.__emitUpdateTlb);\n this.on('change', this.__onChange);\n this.on(keyUpdateInside, this.__propToParent);\n this.set('status', '');\n this.views = [];\n\n // Register global updates for collection properties\n ['classes', 'traits', 'components'].forEach(name => {\n const events = `add remove ${name !== 'components' ? 'change' : ''}`;\n this.listenTo(this.get(name), events.trim(), (...args) => this.emitUpdate(name, ...args));\n });\n\n if (!opt.temporary) {\n // Add component styles\n const cssc = em && em.get('CssComposer');\n const { styles, type } = this.attributes;\n if (styles && cssc) {\n cssc.addCollection(styles, {}, { group: `cmp:${type}` });\n }\n\n this.__postAdd();\n this.init();\n this.__isSymbolOrInst() && this.__initSymb();\n em && em.trigger('component:create', this);\n }\n }\n\n __postAdd(opts = {}) {\n const { em } = this;\n const um = em && em.get('UndoManager');\n const comps = this.components();\n if (um && !this.__hasUm) {\n um.add(comps);\n um.add(this.getSelectors());\n this.__hasUm = 1;\n }\n opts.recursive && comps.map(c => c.__postAdd(opts));\n }\n\n __postRemove() {\n const { em } = this;\n const um = em && em.get('UndoManager');\n if (um) {\n um.remove(this.components());\n um.remove(this.getSelectors());\n delete this.__hasUm;\n }\n }\n\n __onChange(m, opts) {\n const changed = this.changedAttributes();\n keys(changed).forEach(prop => this.emitUpdate(prop));\n ['status', 'open', 'toolbar', 'traits'].forEach(name => delete changed[name]);\n // Propagate component prop changes\n if (!isEmptyObj(changed)) {\n this.__changesUp(opts);\n this.__propSelfToParent({ component: this, changed, options: opts });\n }\n }\n\n __changesUp(opts) {\n const { em, frame } = this;\n [frame, em].forEach(md => md && md.changesUp(opts));\n }\n\n __propSelfToParent(props) {\n this.trigger(keyUpdate, props);\n this.__propToParent(props);\n }\n\n __propToParent(props) {\n const parent = this.parent();\n parent && parent.trigger(keyUpdateInside, props);\n }\n\n __emitUpdateTlb() {\n this.emitUpdate('toolbar');\n }\n\n /**\n * Check component's type\n * @param {string} type Component type\n * @return {Boolean}\n * @example\n * component.is('image')\n * // -> false\n */\n is(type) {\n return !!(this.get('type') == type);\n }\n\n /**\n * Return all the propeties\n * @returns {Object}\n */\n props() {\n return this.attributes;\n }\n\n /**\n * Get the index of the component in the parent collection.\n * @return {Number}\n */\n index() {\n const { collection } = this;\n return collection ? collection.indexOf(this) : 0;\n }\n\n /**\n * Change the drag mode of the component.\n * To get more about this feature read: https://github.com/artf/grapesjs/issues/1936\n * @param {String} value Drag mode, options: 'absolute' | 'translate'\n * @returns {this}\n */\n setDragMode(value) {\n return this.set('dmode', value);\n }\n\n /**\n * Find inner components by query string.\n * **ATTENTION**: this method works only with already rendered component\n * @param {String} query Query string\n * @return {Array} Array of components\n * @example\n * component.find('div > .class');\n * // -> [Component, Component, ...]\n */\n find(query) {\n const result = [];\n const $els = this.view.$el.find(query);\n $els.each(i => {\n const $el = $els.eq(i);\n const model = $el.data('model');\n model && result.push(model);\n });\n\n return result;\n }\n\n /**\n * Find all inner components by component type.\n * The advantage of this method over `find` is that you can use it\n * also before rendering the component\n * @param {String} type Component type\n * @returns {Array}\n * @example\n * const allImages = component.findType('image');\n * console.log(allImages[0]) // prints the first found component\n */\n findType(type) {\n const result = [];\n const find = components =>\n components.forEach(item => {\n item.is(type) && result.push(item);\n find(item.components());\n });\n find(this.components());\n return result;\n }\n\n /**\n * Find the closest parent component by query string.\n * **ATTENTION**: this method works only with already rendered component\n * @param {string} query Query string\n * @return {Component}\n * @example\n * component.closest('div.some-class');\n * // -> Component\n */\n closest(query) {\n const result = this.view.$el.closest(query);\n return result.length && result.data('model');\n }\n\n /**\n * Find the closest parent component by its type.\n * The advantage of this method over `closest` is that you can use it\n * also before rendering the component\n * @param {String} type Component type\n * @returns {Component} Found component, otherwise `undefined`\n * @example\n * const Section = component.closestType('section');\n * console.log(Section);\n */\n closestType(type) {\n let parent = this.parent();\n\n while (parent && !parent.is(type)) {\n parent = parent.parent();\n }\n\n return parent;\n }\n\n /**\n * The method returns a Boolean value indicating whether the passed\n * component is a descendant of a given component\n * @param {Component} component Component to check\n * @returns {Boolean}\n */\n contains(component) {\n let result = !1;\n if (!component) return result;\n const contains = components => {\n !result &&\n components.forEach(item => {\n if (item === component) result = !0;\n !result && contains(item.components());\n });\n };\n contains(this.components());\n return result;\n }\n\n /**\n * Once the tag is updated I have to rerender the element\n * @private\n */\n tagUpdated() {\n this.trigger('rerender');\n }\n\n /**\n * Replace a component with another one\n * @param {String|Component} el Component or HTML string\n * @return {Component|Array} New added component/s\n * @example\n * component.replaceWith('
Some new content
');\n * // -> Component\n */\n replaceWith(el) {\n const coll = this.collection;\n const at = coll.indexOf(this);\n coll.remove(this);\n return coll.add(el, { at });\n }\n\n /**\n * Emit changes for each updated attribute\n * @private\n */\n attrUpdated(m, v, opts = {}) {\n const attrs = this.get('attributes');\n // Handle classes\n const classes = attrs.class;\n classes && this.setClass(classes);\n delete attrs.class;\n\n // Handle style\n const style = attrs.style;\n style && this.setStyle(style);\n delete attrs.style;\n\n const attrPrev = { ...this.previous('attributes') };\n const diff = shallowDiff(attrPrev, this.get('attributes'));\n keys(diff).forEach(pr => this.trigger(`change:attributes:${pr}`, this, diff[pr], opts));\n }\n\n /**\n * Update attributes of the component\n * @param {Object} attrs Key value attributes\n * @param {Object} options Options for the model update\n * @return {this}\n * @example\n * component.setAttributes({ id: 'test', 'data-key': 'value' });\n */\n setAttributes(attrs, opts = {}) {\n this.set('attributes', { ...attrs }, opts);\n return this;\n }\n\n /**\n * Add attributes to the component\n * @param {Object} attrs Key value attributes\n * @param {Object} options Options for the model update\n * @return {this}\n * @example\n * component.addAttributes({ 'data-key': 'value' });\n */\n addAttributes(attrs, opts = {}) {\n return this.setAttributes(\n {\n ...this.getAttributes({ noClass: 1 }),\n ...attrs,\n },\n opts\n );\n }\n\n /**\n * Remove attributes from the component\n * @param {String|Array} attrs Array of attributes to remove\n * @param {Object} options Options for the model update\n * @return {this}\n * @example\n * component.removeAttributes('some-attr');\n * component.removeAttributes(['some-attr1', 'some-attr2']);\n */\n removeAttributes(attrs = [], opts = {}) {\n const attrArr = Array.isArray(attrs) ? attrs : [attrs];\n const compAttr = this.getAttributes();\n attrArr.map(i => delete compAttr[i]);\n return this.setAttributes(compAttr, opts);\n }\n\n /**\n * Get the style of the component\n * @return {Object}\n */\n getStyle(options = {}, optsAdd = {}) {\n const em = this.em;\n const prop = isString(options) ? options : '';\n const opts = prop ? optsAdd : options;\n\n if (em && em.getConfig().avoidInlineStyle && !opts.inline) {\n const state = em.get('state');\n const cc = em.get('CssComposer');\n const rule = cc.getIdRule(this.getId(), { state, ...opts });\n this.rule = rule;\n\n if (rule) {\n return rule.getStyle(prop);\n }\n }\n\n return super.getStyle.call(this, prop);\n }\n\n /**\n * Set the style on the component\n * @param {Object} prop Key value style object\n * @return {Object}\n * @example\n * component.setStyle({ color: 'red' });\n */\n setStyle(prop = {}, opts = {}) {\n const em = this.em;\n const { opt } = this;\n\n if (em && em.getConfig().avoidInlineStyle && !opt.temporary && !opts.inline) {\n const style = this.get('style') || {};\n prop = isString(prop) ? this.parseStyle(prop) : prop;\n prop = { ...prop, ...style };\n const state = em.get('state');\n const cc = em.get('CssComposer');\n const propOrig = this.getStyle(opts);\n this.rule = cc.setIdRule(this.getId(), prop, { ...opts, state });\n const diff = shallowDiff(propOrig, prop);\n this.set('style', '', { silent: 1 });\n keys(diff).forEach(pr => this.trigger(`change:style:${pr}`));\n } else {\n prop = super.setStyle.apply(this, arguments);\n }\n\n return prop;\n }\n\n /**\n * Return all component's attributes\n * @return {Object}\n */\n getAttributes(opts = {}) {\n const { em } = this;\n const classes = [];\n const attributes = { ...this.get('attributes') };\n const sm = em && em.get('SelectorManager');\n const id = this.getId();\n\n // Add classes\n if (!opts.noClass) {\n this.get('classes').forEach(cls => classes.push(isString(cls) ? cls : cls.get('name')));\n classes.length && (attributes.class = classes.join(' '));\n }\n\n // Add style\n if (!opts.noStyle) {\n const style = this.get('style');\n if (isObject(style) && !isEmptyObj(style)) {\n attributes.style = this.styleToString({ inline: 1 });\n }\n }\n\n // Check if we need an ID on the component\n if (!has(attributes, 'id')) {\n let addId;\n\n // If we don't rely on inline styling we have to check\n // for the ID selector\n if (avoidInline(em)) {\n addId = sm && sm.get(id, sm.Selector.TYPE_ID);\n } else if (!isEmpty(this.getStyle())) {\n addId = 1;\n }\n\n // Symbols should always have an id\n if (this.__getSymbol() || this.__getSymbols()) {\n addId = 1;\n }\n\n if (addId) {\n attributes.id = id;\n }\n }\n\n return attributes;\n }\n\n /**\n * Add classes\n * @param {Array|String} classes Array or string of classes\n * @return {Array} Array of added selectors\n * @example\n * model.addClass('class1');\n * model.addClass('class1 class2');\n * model.addClass(['class1', 'class2']);\n * // -> [SelectorObject, ...]\n */\n addClass(classes) {\n const added = this.em.get('SelectorManager').addClass(classes);\n return this.get('classes').add(added);\n }\n\n /**\n * Set classes (resets current collection)\n * @param {Array|String} classes Array or string of classes\n * @return {Array} Array of added selectors\n * @example\n * model.setClass('class1');\n * model.setClass('class1 class2');\n * model.setClass(['class1', 'class2']);\n * // -> [SelectorObject, ...]\n */\n setClass(classes) {\n this.get('classes').reset();\n return this.addClass(classes);\n }\n\n /**\n * Remove classes\n * @param {Array|String} classes Array or string of classes\n * @return {Array} Array of removed selectors\n * @example\n * model.removeClass('class1');\n * model.removeClass('class1 class2');\n * model.removeClass(['class1', 'class2']);\n * // -> [SelectorObject, ...]\n */\n removeClass(classes) {\n const removed = [];\n classes = isArray(classes) ? classes : [classes];\n const selectors = this.get('classes');\n const type = Selector.TYPE_CLASS;\n\n classes.forEach(classe => {\n const classes = classe.split(' ');\n classes.forEach(name => {\n const selector = selectors.where({ name, type })[0];\n selector && removed.push(selectors.remove(selector));\n });\n });\n\n return removed;\n }\n\n /**\n * Returns component's classes as an array of strings\n * @return {Array}\n */\n getClasses() {\n const attr = this.getAttributes();\n const classStr = attr.class;\n return classStr ? classStr.split(' ') : [];\n }\n\n __logSymbol(type, toUp, opts = {}) {\n const symbol = this.__getSymbol();\n const symbols = this.__getSymbols();\n if (!symbol && !symbols) return;\n this.em.log(type, { model: this, toUp, context: 'symbols', opts });\n }\n\n __initSymb() {\n if (this.__symbReady) return;\n this.on('change', this.__upSymbProps);\n this.__symbReady = 1;\n }\n\n __isSymbol() {\n return isArray(this.get(keySymbols));\n }\n\n __isSymbolOrInst() {\n return !!(this.__isSymbol() || this.get(keySymbol));\n }\n\n __isSymbolTop() {\n const parent = this.parent();\n const symb = this.__isSymbolOrInst();\n return symb && (!parent || (parent && !parent.__isSymbol() && !parent.__getSymbol()));\n }\n\n __isSymbolNested() {\n if (!this.__isSymbolOrInst() || this.__isSymbolTop()) return false;\n const symbTopSelf = (this.__isSymbol() ? this : this.__getSymbol()).__getSymbTop();\n const symbTop = this.__getSymbTop();\n const symbTopMain = symbTop.__isSymbol() ? symbTop : symbTop.__getSymbol();\n return symbTopMain !== symbTopSelf;\n }\n\n __getAllById() {\n const { em } = this;\n return em ? em.get('DomComponents').allById() : {};\n }\n\n __getSymbol() {\n let symb = this.get(keySymbol);\n if (symb && isString(symb)) {\n const ref = this.__getAllById()[symb];\n if (ref) {\n symb = ref;\n this.set(keySymbol, ref);\n } else {\n symb = 0;\n }\n }\n return symb;\n }\n\n __getSymbols() {\n let symbs = this.get(keySymbols);\n if (symbs && isArray(symbs)) {\n symbs.forEach((symb, idx) => {\n if (symb && isString(symb)) {\n symbs[idx] = this.__getAllById()[symb];\n }\n });\n symbs = symbs.filter(symb => symb && !isString(symb));\n }\n return symbs;\n }\n\n __isSymbOvrd(prop = '') {\n const ovrd = this.get(keySymbolOvrd);\n const [prp] = prop.split(':');\n const props = prop !== prp ? [prop, prp] : [prop];\n return ovrd === true || (isArray(ovrd) && props.some(p => ovrd.indexOf(p) >= 0));\n }\n\n __getSymbToUp(opts = {}) {\n let result = [];\n const { em } = this;\n const { changed } = opts;\n const symbEnabled = em && em.config.symbols;\n\n if (\n opts.fromInstance ||\n opts.noPropagate ||\n opts.fromUndo ||\n !symbEnabled ||\n // Avoid updating others if the current component has override\n (changed && this.__isSymbOvrd(changed))\n ) {\n return result;\n }\n\n const symbols = this.__getSymbols() || [];\n const symbol = this.__getSymbol();\n const all = symbol ? [symbol, ...(symbol.__getSymbols() || [])] : symbols;\n result = all\n .filter(s => s !== this)\n // Avoid updating those with override\n .filter(s => !(changed && s.__isSymbOvrd(changed)));\n\n return result;\n }\n\n __getSymbTop(opts) {\n let result = this;\n let parent = this.parent(opts);\n\n while (parent && (parent.__isSymbol() || parent.__getSymbol())) {\n result = parent;\n parent = parent.parent(opts);\n }\n\n return result;\n }\n\n __upSymbProps(m, opts = {}) {\n const changed = this.changedAttributes();\n const attrs = changed.attributes || {};\n delete changed.status;\n delete changed.open;\n delete changed[keySymbols];\n delete changed[keySymbol];\n delete changed[keySymbolOvrd];\n delete changed.attributes;\n delete attrs.id;\n if (!isEmptyObj(attrs)) changed.attributes = attrs;\n if (!isEmptyObj(changed)) {\n const toUp = this.__getSymbToUp(opts);\n // Avoid propagating overrides to other symbols\n keys(changed).map(prop => {\n if (this.__isSymbOvrd(prop)) delete changed[prop];\n });\n\n this.__logSymbol('props', toUp, { opts, changed });\n toUp.forEach(child => {\n const propsChanged = { ...changed };\n // Avoid updating those with override\n keys(propsChanged).map(prop => {\n if (child.__isSymbOvrd(prop)) delete propsChanged[prop];\n });\n child.set(propsChanged, { fromInstance: this, ...opts });\n });\n }\n }\n\n __upSymbCls(m, c, opts = {}) {\n const toUp = this.__getSymbToUp(opts);\n this.__logSymbol('classes', toUp, { opts });\n toUp.forEach(child => {\n // This will propagate the change up to __upSymbProps\n child.set('classes', this.get('classes'), { fromInstance: this });\n });\n this.__changesUp(opts);\n }\n\n __upSymbComps(m, c, o) {\n const optUp = o || c || {};\n const { fromInstance, fromUndo } = optUp;\n const toUpOpts = { fromInstance, fromUndo };\n const isTemp = m.opt.temporary;\n\n // Reset\n if (!o) {\n const toUp = this.__getSymbToUp({\n ...toUpOpts,\n changed: 'components:reset',\n });\n this.__logSymbol('reset', toUp, { components: m.models });\n toUp.forEach(symb => {\n const newMods = m.models.map(mod => mod.clone({ symbol: 1 }));\n symb.components().reset(newMods, { fromInstance: this, ...c });\n });\n // Add\n } else if (o.add) {\n let addedInstances = [];\n const isMainSymb = !!this.__getSymbols();\n const toUp = this.__getSymbToUp({\n ...toUpOpts,\n changed: 'components:add',\n });\n if (toUp.length) {\n const addSymb = m.__getSymbol();\n addedInstances = (addSymb ? addSymb.__getSymbols() : m.__getSymbols()) || [];\n addedInstances = [...addedInstances];\n addedInstances.push(addSymb ? addSymb : m);\n }\n !isTemp &&\n this.__logSymbol('add', toUp, {\n opts: o,\n addedInstances: addedInstances.map(c => c.cid),\n added: m.cid,\n });\n // Here, before appending a new symbol, I have to ensure there are no previously\n // created symbols (eg. used mainly when drag components around)\n toUp.forEach(symb => {\n const symbTop = symb.__getSymbTop();\n const symbPrev = addedInstances.filter(addedInst => {\n const addedTop = addedInst.__getSymbTop({ prev: 1 });\n return symbTop && addedTop && addedTop === symbTop;\n })[0];\n const toAppend = symbPrev || m.clone({ symbol: 1, symbolInv: isMainSymb });\n symb.append(toAppend, { fromInstance: this, ...o });\n });\n // Remove\n } else {\n // Remove instance reference from the symbol\n const symb = m.__getSymbol();\n symb &&\n !o.temporary &&\n symb.set(\n keySymbols,\n symb.__getSymbols().filter(i => i !== m)\n );\n\n // Propagate remove only if the component is an inner symbol\n if (!m.__isSymbolTop()) {\n const changed = 'components:remove';\n const { index } = o;\n const parent = m.parent();\n const opts = { fromInstance: m, ...o };\n const isSymbNested = m.__isSymbolNested();\n let toUpFn = symb => {\n const symbPrnt = symb.parent();\n symbPrnt && !symbPrnt.__isSymbOvrd(changed) && symb.remove(opts);\n };\n // Check if the parent allows the removing\n let toUp = !parent.__isSymbOvrd(changed) ? m.__getSymbToUp(toUpOpts) : [];\n\n if (isSymbNested) {\n toUp = parent.__getSymbToUp({ ...toUpOpts, changed });\n toUpFn = symb => {\n const toRemove = symb.components().at(index);\n toRemove && toRemove.remove({ fromInstance: parent, ...opts });\n };\n }\n\n !isTemp &&\n this.__logSymbol('remove', toUp, {\n opts: o,\n removed: m.cid,\n isSymbNested,\n });\n toUp.forEach(toUpFn);\n }\n }\n\n this.__changesUp(optUp);\n }\n\n initClasses(m, c, opts = {}) {\n const event = 'change:classes';\n const attrCls = this.get('attributes').class || [];\n const toListen = [this, event, this.initClasses];\n const cls = this.get('classes') || attrCls;\n const clsArr = isString(cls) ? cls.split(' ') : cls;\n this.stopListening(...toListen);\n const classes = this.normalizeClasses(clsArr);\n const selectors = new Selectors([]);\n this.set('classes', selectors, opts);\n selectors.add(classes);\n selectors.on('add remove reset', this.__upSymbCls);\n this.listenTo(...toListen);\n return this;\n }\n\n initComponents() {\n const event = 'change:components';\n const toListen = [this, event, this.initComponents];\n this.stopListening(...toListen);\n // Have to add components after the init, otherwise the parent\n // is not visible\n const comps = new Components(null, this.opt);\n comps.parent = this;\n const components = this.get('components');\n const addChild = !this.opt.avoidChildren;\n this.set('components', comps);\n addChild && components && comps.add(isFunction(components) ? components(this) : components, this.opt);\n comps.on('add remove reset', this.__upSymbComps);\n this.listenTo(...toListen);\n return this;\n }\n\n initTraits(changed) {\n const { em } = this;\n const event = 'change:traits';\n this.off(event, this.initTraits);\n this.__loadTraits();\n const attrs = { ...this.get('attributes') };\n const traits = this.get('traits');\n traits.each(trait => {\n if (!trait.get('changeProp')) {\n const name = trait.get('name');\n const value = trait.getInitValue();\n if (name && value) attrs[name] = value;\n }\n });\n traits.length && this.set('attributes', attrs);\n this.on(event, this.initTraits);\n changed && em && em.trigger('component:toggled');\n return this;\n }\n\n initScriptProps() {\n if (this.opt.temporary) return;\n const prop = 'script-props';\n const toListen = [`change:${prop}`, this.initScriptProps];\n this.off(...toListen);\n const prevProps = this.previous(prop) || [];\n const newProps = this.get(prop) || [];\n const prevPropsEv = prevProps.map(e => `change:${e}`).join(' ');\n const newPropsEv = newProps.map(e => `change:${e}`).join(' ');\n prevPropsEv && this.off(prevPropsEv, this.__scriptPropsChange);\n newPropsEv && this.on(newPropsEv, this.__scriptPropsChange);\n this.on(...toListen);\n }\n\n __scriptPropsChange(m, v, opts = {}) {\n if (opts.avoidStore) return;\n this.trigger('rerender');\n }\n\n /**\n * Add new component children\n * @param {Component|String} components Component to add\n * @param {Object} [opts={}] Options for the append action\n * @return {Array} Array of appended components\n * @example\n * someComponent.get('components').length // -> 0\n * const videoComponent = someComponent.append('
')[0];\n * // This will add 2 components (`video` and `div`) to your `someComponent`\n * someComponent.get('components').length // -> 2\n * // You can pass components directly\n * otherComponent.append(otherComponent2);\n * otherComponent.append([otherComponent3, otherComponent4]);\n * // append at specific index (eg. at the beginning)\n * someComponent.append(otherComponent, { at: 0 });\n */\n append(components, opts = {}) {\n const compArr = isArray(components) ? components : [components];\n const toAppend = compArr.map(comp => {\n if (isString(comp)) {\n return comp;\n } else {\n // I have to remove components from the old container before adding them to a new one\n comp.collection && comp.collection.remove(comp, { temporary: 1 });\n return comp;\n }\n });\n const result = this.components().add(toAppend, opts);\n return isArray(result) ? result : [result];\n }\n\n /**\n * Set new collection if `components` are provided, otherwise the\n * current collection is returned\n * @param {Component|Component[]|String} [components] Component Definitions or HTML string\n * @param {Object} [opts={}] Options, same as in `Component.append()`\n * @returns {Collection|Array<[Component]>}\n * @example\n * // Set new collection\n * component.components('
');\n * // Get current collection\n * const collection = component.components();\n * console.log(collection.length);\n * // -> 2\n */\n components(components, opts = {}) {\n const coll = this.get('components');\n\n if (isUndefined(components)) {\n return coll;\n } else {\n coll.reset(null, opts);\n return components ? this.append(components, opts) : [];\n }\n }\n\n /**\n * If exists, returns the child component at specific index.\n * @param {Number} index Index of the component to return\n * @returns {[Component]|null}\n * @example\n * // Return first child\n * component.getChildAt(0);\n * // Return second child\n * component.getChildAt(1);\n */\n getChildAt(index) {\n return this.components().at(index || 0) || null;\n }\n\n /**\n * If exists, returns the last child component.\n * @returns {[Component]|null}\n * @example\n * const lastChild = component.getLastChild();\n */\n getLastChild() {\n const children = this.components();\n return children.at(children.length - 1) || null;\n }\n\n /**\n * Remove all inner components\n * * @return {this}\n */\n empty(opts = {}) {\n this.components().reset(null, opts);\n return this;\n }\n\n /**\n * Get the parent component, if exists\n * @return {Component|null}\n * @example\n * component.parent();\n * // -> Component\n */\n parent(opts = {}) {\n const coll = this.collection || (opts.prev && this.prevColl);\n return coll ? coll.parent : null;\n }\n\n /**\n * Script updated\n * @private\n */\n scriptUpdated() {\n this.set('scriptUpdated', 1);\n }\n\n /**\n * Init toolbar\n * @private\n */\n initToolbar() {\n const { em } = this;\n const model = this;\n const ppfx = (em && em.getConfig().stylePrefix) || '';\n\n if (!model.get('toolbar') && em) {\n const tb = [];\n model.collection &&\n tb.push({\n label: em.getIcon('arrowUp'),\n command: ed => ed.runCommand('core:component-exit', { force: 1 }),\n });\n model.get('draggable') &&\n tb.push({\n attributes: { class: `${ppfx}no-touch-actions`, draggable: true },\n label: em.getIcon('move'),\n command: 'tlb-move',\n });\n model.get('copyable') &&\n tb.push({\n label: em.getIcon('copy'),\n command: 'tlb-clone',\n });\n model.get('removable') &&\n tb.push({\n label: em.getIcon('delete'),\n command: 'tlb-delete',\n });\n model.set('toolbar', tb);\n }\n }\n\n __loadTraits(tr, opts = {}) {\n let traitsI = tr || this.get('traits');\n\n if (!(traitsI instanceof Traits)) {\n traitsI = isFunction(traitsI) ? traitsI(this) : traitsI;\n const traits = new Traits([], this.opt);\n traits.setTarget(this);\n\n if (traitsI.length) {\n traitsI.forEach(tr => tr.attributes && delete tr.attributes.value);\n traits.add(traitsI);\n }\n\n this.set({ traits }, opts);\n }\n\n return this;\n }\n\n /**\n * Get traits.\n * @returns {Array}\n * @example\n * const traits = component.getTraits();\n * console.log(traits);\n * // [Trait, Trait, Trait, ...]\n */\n getTraits() {\n this.__loadTraits();\n return [...this.get('traits').models];\n }\n\n /**\n * Replace current collection of traits with a new one.\n * @param {Array} traits Array of trait definitions\n * @returns {Array}\n * @example\n * const traits = component.setTraits([{ type: 'checkbox', name: 'disabled'}, ...]);\n * console.log(traits);\n * // [Trait, ...]\n */\n setTraits(traits) {\n const tr = isArray(traits) ? traits : [traits];\n this.set({ traits: tr });\n return this.getTraits();\n }\n\n /**\n * Get the trait by id/name.\n * @param {String} id The `id` or `name` of the trait\n * @return {Trait|null} Trait getModelToStyle\n * @example\n * const traitTitle = component.getTrait('title');\n * traitTitle && traitTitle.set('label', 'New label');\n */\n getTrait(id) {\n return (\n this.getTraits().filter(trait => {\n return trait.get('id') === id || trait.get('name') === id;\n })[0] || null\n );\n }\n\n /**\n * Update a trait.\n * @param {String} id The `id` or `name` of the trait\n * @param {Object} props Object with the props to update\n * @return {this}\n * @example\n * component.updateTrait('title', {\n * type: 'select',\n * options: [ 'Option 1', 'Option 2' ],\n * });\n */\n updateTrait(id, props) {\n const trait = this.getTrait(id);\n trait && trait.set(props);\n this.em?.trigger('component:toggled');\n return this;\n }\n\n /**\n * Get the trait position index by id/name. Useful in case you want to\n * replace some trait, at runtime, with something else.\n * @param {String} id The `id` or `name` of the trait\n * @return {Number} Index position of the current trait\n * @example\n * const traitTitle = component.getTraitIndex('title');\n * console.log(traitTitle); // 1\n */\n getTraitIndex(id) {\n const trait = this.getTrait(id);\n return trait ? this.get('traits').indexOf(trait) : -1;\n }\n\n /**\n * Remove trait/s by id/s.\n * @param {String|Array} id The `id`/`name` of the trait (or an array)\n * @return {Array} Array of removed traits\n * @example\n * component.removeTrait('title');\n * component.removeTrait(['title', 'id']);\n */\n removeTrait(id) {\n const ids = isArray(id) ? id : [id];\n const toRemove = ids.map(id => this.getTrait(id));\n const traits = this.get('traits');\n const removed = toRemove.length ? traits.remove(toRemove) : [];\n this.em?.trigger('component:toggled');\n return isArray(removed) ? removed : [removed];\n }\n\n /**\n * Add new trait/s.\n * @param {String|Object|Array} trait Trait to add (or an array of traits)\n * @param {Options} opts Options for the add\n * @return {Array} Array of added traits\n * @example\n * component.addTrait('title', { at: 1 }); // Add title trait (`at` option is the position index)\n * component.addTrait({\n * type: 'checkbox',\n * name: 'disabled',\n * });\n * component.addTrait(['title', {...}, ...]);\n */\n addTrait(trait, opts = {}) {\n this.__loadTraits();\n const added = this.get('traits').add(trait, opts);\n this.em?.trigger('component:toggled');\n return isArray(added) ? added : [added];\n }\n\n /**\n * Normalize input classes from array to array of objects\n * @param {Array} arr\n * @return {Array}\n * @private\n */\n normalizeClasses(arr) {\n const res = [];\n const { em } = this;\n const clm = em && em.get('SelectorManager');\n if (!clm) return;\n if (arr.models) return [...arr.models];\n arr.forEach(val => res.push(clm.add(val)));\n return res;\n }\n\n /**\n * Override original clone method\n * @private\n */\n clone(opt = {}) {\n const em = this.em;\n const attr = { ...this.attributes };\n const opts = { ...this.opt };\n const id = this.getId();\n const cssc = em && em.get('CssComposer');\n attr.attributes = { ...attr.attributes };\n delete attr.attributes.id;\n attr.components = [];\n attr.classes = [];\n attr.traits = [];\n\n if (this.__isSymbolTop()) {\n opt.symbol = 1;\n }\n\n this.get('components').each((md, i) => {\n attr.components[i] = md.clone({ ...opt, _inner: 1 });\n });\n this.get('traits').each((md, i) => {\n attr.traits[i] = md.clone();\n });\n this.get('classes').each((md, i) => {\n attr.classes[i] = md.get('name');\n });\n\n attr.status = '';\n opts.collection = null;\n\n const cloned = new this.constructor(attr, opts);\n\n // Clone component specific rules\n const newId = `#${cloned.getId()}`;\n const rulesToClone = cssc ? cssc.getRules(`#${id}`) : [];\n rulesToClone.forEach(rule => {\n const newRule = rule.clone();\n newRule.set('selectors', [newId]);\n cssc.getAll().add(newRule);\n });\n\n // Symbols\n // If I clone an inner symbol, I have to reset it\n cloned.set(keySymbols, 0);\n const symbol = this.__getSymbol();\n const symbols = this.__getSymbols();\n\n if (!opt.symbol && (symbol || symbols)) {\n cloned.set(keySymbol, 0);\n cloned.set(keySymbols, 0);\n } else if (symbol) {\n // Contains already a reference to a symbol\n symbol.set(keySymbols, [...symbol.__getSymbols(), cloned]);\n cloned.__initSymb();\n } else if (opt.symbol) {\n // Request to create a symbol\n if (this.__isSymbol()) {\n // Already a symbol, cloned should be an instance\n this.set(keySymbols, [...symbols, cloned]);\n cloned.set(keySymbol, this);\n cloned.__initSymb();\n } else if (opt.symbolInv) {\n // Inverted, cloned is the instance, the origin is the main symbol\n this.set(keySymbols, [cloned]);\n cloned.set(keySymbol, this);\n [this, cloned].map(i => i.__initSymb());\n } else {\n // Cloned becomes the main symbol\n cloned.set(keySymbols, [this]);\n [this, cloned].map(i => i.__initSymb());\n this.set(keySymbol, cloned);\n }\n }\n\n const event = 'component:clone';\n em && em.trigger(event, cloned);\n this.trigger(event, cloned);\n\n return cloned;\n }\n\n /**\n * Get the name of the component\n * @return {String}\n * */\n getName() {\n const { em } = this;\n const { type, tagName, name } = this.attributes;\n const defName = type || tagName;\n const nameTag = !type && tagName;\n const i18nPfx = 'domComponents.names.';\n const i18nName = name && em?.t(`${i18nPfx}${name}`);\n const i18nNameTag = nameTag && em?.t(`${i18nPfx}${nameTag}`);\n const i18nDefName = em && (em.t(`${i18nPfx}${type}`) || em.t(`${i18nPfx}${tagName}`));\n return (\n this.get('custom-name') || // Used in Layers (when the user changes the name)\n i18nName || // Use local component `name` key (eg. `domComponents.names.myComponentName`)\n name || // Use component `name` key\n i18nNameTag || // Use local component `tagName` key (eg. `domComponents.names.div`)\n capitalize(nameTag) || // Use component `tagName` key\n i18nDefName || // Use local component `type` key (eg. `domComponents.names.image`)\n capitalize(defName) // Use component `type` key\n );\n }\n\n /**\n * Get the icon string\n * @return {String}\n */\n getIcon() {\n let icon = this.get('icon');\n return icon ? icon + ' ' : '';\n }\n\n /**\n * Return HTML string of the component\n * @param {Object} [opts={}] Options\n * @param {String} [opts.tag] Custom tagName\n * @param {Object|Function} [opts.attributes=null] You can pass an object of custom attributes to replace with the current ones or you can even pass a function to generate attributes dynamically.\n * @param {Boolean} [opts.withProps] Include component properties as `data-gjs-*` attributes. This allows you to have re-importable HTML.\n * @param {Boolean} [opts.altQuoteAttr] In case the attribute value contains a `\"` char, instead of escaping it (`attr=\"value "\"`), the attribute will be quoted using single quotes (`attr='value \"'`).\n * @return {String} HTML string\n * @example\n * // Simple HTML return\n * component.set({ tagName: 'span' });\n * component.setAttributes({ title: 'Hello' });\n * component.toHTML();\n * // -> \n *\n * // Custom attributes\n * component.toHTML({ attributes: { 'data-test': 'Hello' } });\n * // -> \n *\n * // Custom dynamic attributes\n * component.toHTML({\n * attributes(component, attributes) {\n * if (component.get('tagName') == 'span') {\n * attributes.title = 'Custom attribute';\n * }\n * return attributes;\n * },\n * });\n * // -> \n */\n toHTML(opts = {}) {\n const model = this;\n const attrs = [];\n const customTag = opts.tag;\n const tag = customTag || model.get('tagName');\n const sTag = model.get('void');\n const customAttr = opts.attributes;\n let attributes = this.getAttrToHTML();\n delete opts.tag;\n\n // Get custom attributes if requested\n if (customAttr) {\n if (isFunction(customAttr)) {\n attributes = customAttr(model, attributes) || {};\n } else if (isObject(customAttr)) {\n attributes = customAttr;\n }\n }\n\n if (opts.withProps) {\n const props = this.toJSON();\n\n forEach(props, (value, key) => {\n const skipProps = ['classes', 'attributes', 'components'];\n if (key[0] !== '_' && skipProps.indexOf(key) < 0) {\n attributes[`data-gjs-${key}`] = isArray(value) || isObject(value) ? JSON.stringify(value) : value;\n }\n });\n }\n\n for (let attr in attributes) {\n const val = attributes[attr];\n\n if (!isUndefined(val) && val !== null) {\n if (isBoolean(val)) {\n val && attrs.push(attr);\n } else {\n let valueRes = '';\n if (opts.altQuoteAttr && isString(val) && val.indexOf('\"') >= 0) {\n valueRes = `'${val.replace(/'/g, ''')}'`;\n } else {\n const value = isString(val) ? val.replace(/\"/g, '"') : val;\n valueRes = `\"${value}\"`;\n }\n\n attrs.push(`${attr}=${valueRes}`);\n }\n }\n }\n\n const attrString = attrs.length ? ` ${attrs.join(' ')}` : '';\n const inner = model.getInnerHTML(opts);\n let code = `<${tag}${attrString}${sTag ? '/' : ''}>${inner}`;\n !sTag && (code += ``);\n\n return code;\n }\n\n /**\n * Get inner HTML of the component\n * @param {Object} [opts={}] Same options of `toHTML`\n * @returns {String} HTML string\n */\n getInnerHTML(opts) {\n return this.__innerHTML(opts);\n }\n\n __innerHTML(opts = {}) {\n const cmps = this.components();\n return !cmps.length ? this.get('content') : cmps.map(c => c.toHTML(opts)).join('');\n }\n\n /**\n * Returns object of attributes for HTML\n * @return {Object}\n * @private\n */\n getAttrToHTML() {\n var attr = this.getAttributes();\n delete attr.style;\n return attr;\n }\n\n /**\n * Return a shallow copy of the model's attributes for JSON\n * stringification.\n * @return {Object}\n * @private\n */\n toJSON(opts = {}) {\n const obj = Model.prototype.toJSON.call(this, opts);\n obj.attributes = this.getAttributes();\n delete obj.attributes.class;\n delete obj.toolbar;\n delete obj.traits;\n delete obj.status;\n delete obj.open; // used in Layers\n\n if (!opts.fromUndo) {\n const symbol = obj[keySymbol];\n const symbols = obj[keySymbols];\n if (symbols && isArray(symbols)) {\n obj[keySymbols] = symbols.filter(i => i).map(i => (i.getId ? i.getId() : i));\n }\n if (symbol && !isString(symbol)) {\n obj[keySymbol] = symbol.getId();\n }\n }\n\n if (this.em.getConfig().avoidDefaults) {\n this.getChangedProps(obj);\n }\n\n return obj;\n }\n\n /**\n * Return an object containing only changed props\n */\n getChangedProps(res) {\n const obj = res || Model.prototype.toJSON.apply(this);\n const defaults = result(this, 'defaults');\n\n forEach(defaults, (value, key) => {\n if (['type'].indexOf(key) === -1 && obj[key] === value) {\n delete obj[key];\n }\n });\n\n if (isEmpty(obj.type)) {\n delete obj.type;\n }\n\n forEach(['attributes', 'style'], prop => {\n if (isEmpty(defaults[prop]) && isEmpty(obj[prop])) {\n delete obj[prop];\n }\n });\n\n forEach(['classes', 'components'], prop => {\n if (!obj[prop] || (isEmpty(defaults[prop]) && !obj[prop].length)) {\n delete obj[prop];\n }\n });\n\n return obj;\n }\n\n /**\n * Return the component id\n * @return {String}\n */\n getId() {\n let attrs = this.get('attributes') || {};\n return attrs.id || this.ccid || this.cid;\n }\n\n /**\n * Set new id on the component\n * @param {String} id\n * @return {this}\n */\n setId(id, opts) {\n const attrs = { ...this.get('attributes') };\n attrs.id = id;\n this.set('attributes', attrs, opts);\n return this;\n }\n\n /**\n * Get the DOM element of the component.\n * This works only if the component is already rendered\n * @param {Frame} frame Specific frame from which taking the element\n * @return {HTMLElement}\n */\n getEl(frame = undefined) {\n const view = this.getView(frame);\n return view && view.el;\n }\n\n /**\n * Get the View of the component.\n * This works only if the component is already rendered\n * @param {Frame} frame Get View of a specific frame\n * @return {ComponentView}\n */\n getView(frame) {\n let { view, views } = this;\n\n if (frame) {\n view = views.filter(view => view._getFrame() === frame.view)[0];\n }\n\n return view;\n }\n\n getCurrentView() {\n const frame = (this.em.get('currentFrame') || {}).model;\n return this.getView(frame);\n }\n\n __getScriptProps() {\n const modelProps = this.props();\n const scrProps = this.get('script-props') || [];\n return scrProps.reduce((acc, prop) => {\n acc[prop] = modelProps[prop];\n return acc;\n }, {});\n }\n\n /**\n * Return script in string format, cleans 'function() {..' from scripts\n * if it's a function\n * @param {string|Function} script\n * @return {string}\n * @private\n */\n getScriptString(script) {\n let scr = script || this.get('script');\n\n if (!scr) {\n return scr;\n }\n\n if (this.get('script-props')) {\n scr = scr.toString().trim();\n } else {\n // Deprecated\n // Need to convert script functions to strings\n if (typeof scr == 'function') {\n var scrStr = scr.toString().trim();\n scrStr = scrStr.replace(/^function[\\s\\w]*\\(\\)\\s?\\{/, '').replace(/\\}$/, '');\n scr = scrStr.trim();\n }\n\n var config = this.em.getConfig();\n var tagVarStart = escapeRegExp(config.tagVarStart || '{[ ');\n var tagVarEnd = escapeRegExp(config.tagVarEnd || ' ]}');\n var reg = new RegExp(`${tagVarStart}([\\\\w\\\\d-]*)${tagVarEnd}`, 'g');\n scr = scr.replace(reg, (match, v) => {\n // If at least one match is found I have to track this change for a\n // better optimization inside JS generator\n this.scriptUpdated();\n const result = this.attributes[v] || '';\n return isArray(result) || typeof result == 'object' ? JSON.stringify(result) : result;\n });\n }\n return scr;\n }\n\n emitUpdate(property, ...args) {\n const { em } = this;\n const event = keyUpdate + (property ? `:${property}` : '');\n const item = property && this.get(property);\n property && this.updated(property, item, property && this.previous(property), ...args);\n this.trigger(event, ...args);\n em && em.trigger(event, this, ...args);\n ['components', 'classes'].indexOf(property) >= 0 &&\n this.__propSelfToParent({\n component: this,\n changed: { [property]: item },\n options: args[2] || args[1] || {},\n });\n }\n\n /**\n * Execute callback function on itself and all inner components\n * @param {Function} clb Callback function, the model is passed as an argument\n * @return {this}\n * @example\n * component.onAll(component => {\n * // do something with component\n * })\n */\n onAll(clb) {\n if (isFunction(clb)) {\n clb(this);\n this.components().forEach(model => model.onAll(clb));\n }\n return this;\n }\n\n /**\n * Remove the component\n * @return {this}\n */\n remove(opts = {}) {\n const { em } = this;\n const coll = this.collection;\n const remove = () => {\n coll && coll.remove(this, { ...opts, action: 'remove-component' });\n // Component without parent\n if (!coll) {\n this.components('', opts);\n this.components().removeChildren(this, null, opts);\n }\n };\n const rmOpts = { ...opts };\n [this, em].map(i => i.trigger('component:remove:before', this, remove, rmOpts));\n !rmOpts.abort && remove();\n return this;\n }\n\n /**\n * Move the component to another destination component\n * @param {Component} component Destination component (so the current one will be appended as a child)\n * @param {Object} opts Options for the append action\n * @returns {this}\n * @example\n * // Move the selected component on top of the wrapper\n * const dest = editor.getWrapper();\n * editor.getSelected().move(dest, { at: 0 });\n */\n move(component, opts = {}) {\n this.remove({ temporary: 1 });\n component && component.append(this, opts);\n return this;\n }\n\n /**\n * Check if the component is an instance of some component type.\n * @param {String} type Component type\n * @returns {Boolean}\n * @example\n * // Add a new component type by extending an existing one\n * editor.Components.addType('text-ext', { extend: 'text' });\n * // Append a new component somewhere\n * const newTextExt = editor.getSelected().append({ type: 'text-ext' })[0];\n * newTextExt.isInstanceOf('text-ext'); // true\n * newTextExt.isInstanceOf('text'); // true\n */\n isInstanceOf(type) {\n const cmp = this.em?.get('DomComponents').getType(type)?.model;\n\n if (!cmp) return false;\n\n return this instanceof cmp;\n }\n\n /**\n * Check if the component is a child of some other component (or component type)\n * @param {[Component]|String} component Component parent to check. In case a string is passed,\n * the check will be performed on the component type.\n * @returns {Boolean}\n * @example\n * const newTextComponent = editor.getSelected().append({\n * type: 'text',\n * components: 'My text here',\n * })[0];\n * const innerComponent = newTextComponent.find('b')[0];\n * innerComponent.isChildOf(newTextComponent); // true\n * innerComponent.isChildOf('text'); // true\n */\n isChildOf(component) {\n const byType = isString(component);\n let parent = this.parent();\n\n while (parent) {\n if (byType) {\n if (parent.isInstanceOf(component)) {\n return true;\n }\n } else {\n if (parent === component) {\n return true;\n }\n }\n\n parent = parent.parent();\n }\n\n return false;\n }\n\n /**\n * Reset id of the component and any of its style rule\n * @param {Object} [opts={}] Options\n * @return {this}\n * @private\n */\n resetId(opts = {}) {\n const { em } = this;\n const oldId = this.getId();\n if (!oldId) return;\n const newId = Component.createId(this);\n this.setId(newId);\n const rule = em && em.get('CssComposer').getIdRule(oldId);\n const selector = rule && rule.get('selectors').at(0);\n selector && selector.set('name', newId);\n return this;\n }\n\n _getStyleRule({ id } = {}) {\n const { em } = this;\n const idS = id || this.getId();\n return em && em.get('CssComposer').getIdRule(idS);\n }\n\n _getStyleSelector(opts) {\n const rule = this._getStyleRule(opts);\n return rule && rule.get('selectors').at(0);\n }\n\n _idUpdated(m, v, opts = {}) {\n if (opts.idUpdate) return;\n\n const { ccid } = this;\n const { id } = this.get('attributes') || {};\n const idPrev = (this.previous('attributes') || {}).id || ccid;\n const list = Component.getList(this);\n\n // If the ID already exists I need to rollback to the old one\n if (list[id] || (!id && idPrev)) {\n return this.setId(idPrev, { idUpdate: 1 });\n }\n\n // Remove the old ID reference and add the new one\n delete list[idPrev];\n list[id] = this;\n this.ccid = id;\n\n // Update the style selector name\n const selector = this._getStyleSelector({ id: idPrev });\n selector && selector.set({ name: id, label: id });\n }\n}\n\n/**\n * Detect if the passed element is a valid component.\n * In case the element is valid an object abstracted\n * from the element will be returned\n * @param {HTMLElement}\n * @return {Object}\n * @private\n */\nComponent.isComponent = el => {\n return { tagName: toLowerCase(el.tagName) };\n};\n\nComponent.ensureInList = model => {\n const list = Component.getList(model);\n const id = model.getId();\n const current = list[id];\n\n if (!current) {\n // Insert in list\n list[id] = model;\n } else if (current !== model) {\n // Create new ID\n const nextId = Component.getIncrementId(id, list);\n model.setId(nextId);\n list[nextId] = model;\n }\n\n model.components().forEach(i => Component.ensureInList(i));\n};\n\n/**\n * Relying simply on the number of components becomes a problem when you\n * store and load them back, you might hit collisions with new components\n * @param {Model} model\n * @return {string}\n * @private\n */\nComponent.createId = (model, opts = {}) => {\n const list = Component.getList(model);\n const { idMap = {} } = opts;\n let { id } = model.get('attributes');\n let nextId;\n\n if (id) {\n nextId = Component.getIncrementId(id, list, opts);\n model.setId(nextId);\n if (id !== nextId) idMap[id] = nextId;\n } else {\n nextId = Component.getNewId(list);\n }\n\n list[nextId] = model;\n return nextId;\n};\n\nComponent.getNewId = list => {\n const count = Object.keys(list).length;\n // Testing 1000000 components with `+ 2` returns 0 collisions\n const ilen = count.toString().length + 2;\n const uid = (Math.random() + 1.1).toString(36).slice(-ilen);\n let newId = `i${uid}`;\n\n while (list[newId]) {\n newId = Component.getNewId(list);\n }\n\n return newId;\n};\n\nComponent.getIncrementId = (id, list, opts = {}) => {\n const { keepIds = [] } = opts;\n let counter = 1;\n let newId = id;\n\n if (keepIds.indexOf(id) < 0) {\n while (list[newId]) {\n counter++;\n newId = `${id}-${counter}`;\n }\n }\n\n return newId;\n};\n\n/**\n * The list of components is taken from the Components module.\n * Initially, the list, was set statically on the Component object but it was\n * not ok, as it was shared between multiple editor instances\n * @private\n */\nComponent.getList = model => {\n const { opt = {} } = model;\n const { domc, em } = opt;\n const dm = domc || (em && em.get('DomComponents'));\n return dm ? dm.componentsById : {};\n};\n\n/**\n * This method checks, for each parsed component and style object\n * (are not Components/CSSRules yet), for duplicated id and fixes them\n * This method is used in Components.js just after the parsing\n * @private\n */\nComponent.checkId = (components, styles = [], list = {}, opts = {}) => {\n const comps = isArray(components) ? components : [components];\n const { keepIds = [] } = opts;\n comps.forEach(comp => {\n const { attributes = {}, components } = comp;\n const { id } = attributes;\n\n // Check if we have collisions with current components\n if (id && list[id] && keepIds.indexOf(id) < 0) {\n const newId = Component.getIncrementId(id, list);\n attributes.id = newId;\n // Update passed styles\n isArray(styles) &&\n styles.forEach(style => {\n const { selectors } = style;\n selectors.forEach((sel, idx) => {\n if (sel === `#${id}`) selectors[idx] = `#${newId}`;\n });\n });\n }\n\n components && Component.checkId(components, styles, list, opts);\n });\n};\n\nComponent.getDefaults = function () {\n return result(this.prototype, 'defaults');\n};\n\nComponent.prototype.defaults = {\n tagName: 'div',\n type: '',\n name: '',\n removable: true,\n draggable: true,\n droppable: true,\n badgable: true,\n stylable: true,\n 'stylable-require': '',\n 'style-signature': '',\n unstylable: '',\n highlightable: true,\n copyable: true,\n resizable: false,\n editable: false,\n layerable: true,\n selectable: true,\n hoverable: true,\n locked: false,\n void: false,\n state: '', // Indicates if the component is in some CSS state like ':hover', ':active', etc.\n status: '', // State, eg. 'selected'\n content: '',\n icon: '',\n style: '',\n styles: '', // Component related styles\n classes: '', // Array of classes\n script: '',\n 'script-props': '',\n 'script-export': '',\n attributes: '',\n traits: ['id', 'title'],\n propagate: '',\n dmode: '',\n toolbar: null,\n [keySymbol]: 0,\n [keySymbols]: 0,\n [keySymbolOvrd]: 0,\n _undo: true,\n _undoexc: ['status', 'open'],\n};\n","import Backbone from 'backbone';\nimport { isEmpty, isArray, isString, isFunction, each, includes, extend, flatten, debounce } from 'underscore';\nimport Component, { keySymbol, keySymbols } from './Component';\n\nexport const getComponentIds = (cmp, res = []) => {\n if (!cmp) return [];\n const cmps = isArray(cmp) || isFunction(cmp.map) ? cmp : [cmp];\n cmps.map(cmp => {\n res.push(cmp.getId());\n getComponentIds(cmp.components().models, res);\n });\n return res;\n};\n\nconst getComponentsFromDefs = (items, all = {}, opts = {}) => {\n const itms = isArray(items) ? items : [items];\n\n return itms.map(item => {\n const { attributes = {}, components, tagName } = item;\n const { id } = attributes;\n let result = item;\n\n if (id && all[id]) {\n result = all[id];\n tagName && result.set({ tagName }, { ...opts, silent: true });\n }\n\n if (components) {\n const newComponents = getComponentsFromDefs(components, all);\n\n if (isFunction(result.components)) {\n const cmps = result.components();\n cmps.length > 0 && cmps.reset(newComponents, opts);\n } else {\n result.components = newComponents;\n }\n }\n\n return result;\n });\n};\n\nexport default class Components extends Backbone.Collection {\n initialize(models, opt = {}) {\n this.opt = opt;\n this.listenTo(this, 'add', this.onAdd);\n this.listenTo(this, 'remove', this.removeChildren);\n this.listenTo(this, 'reset', this.resetChildren);\n const { em, config } = opt;\n this.config = config;\n this.em = em;\n this.domc = opt.domc || (em && em.get('DomComponents'));\n }\n\n resetChildren(models, opts = {}) {\n const coll = this;\n const prev = opts.previousModels || [];\n const toRemove = prev.filter(prev => !models.get(prev.cid));\n const newIds = getComponentIds(models);\n opts.keepIds = getComponentIds(prev).filter(pr => newIds.indexOf(pr) >= 0);\n toRemove.forEach(md => this.removeChildren(md, coll, opts));\n models.each(model => this.onAdd(model));\n }\n\n resetFromString(input = '', opts = {}) {\n opts.keepIds = getComponentIds(this);\n const { domc } = this;\n const allByID = domc?.allById() || {};\n const parsed = this.parseString(input, opts);\n const cmps = isArray(parsed) ? parsed : [parsed];\n const newCmps = getComponentsFromDefs(cmps, allByID, opts);\n this.reset(newCmps, opts);\n this.em?.trigger('component:content', this.parent, opts, input);\n }\n\n removeChildren(removed, coll, opts = {}) {\n // Removing a parent component can cause this function\n // to be called with an already removed child element\n if (!removed) {\n return;\n }\n\n const { domc, em } = this;\n const isTemp = opts.temporary || opts.fromUndo;\n removed.prevColl = this; // This one is required for symbols\n\n if (!isTemp) {\n // Remove the component from the global list\n const id = removed.getId();\n const sels = em.get('SelectorManager').getAll();\n const rules = em.get('CssComposer').getAll();\n const canRemoveStyle = (opts.keepIds || []).indexOf(id) < 0;\n const allByID = domc ? domc.allById() : {};\n delete allByID[id];\n\n // Remove all component related styles\n const rulesRemoved = canRemoveStyle\n ? rules.remove(\n rules.filter(r => r.getSelectors().getFullString() === `#${id}`),\n opts\n )\n : [];\n\n // Clean selectors\n sels.remove(rulesRemoved.map(rule => rule.getSelectors().at(0)));\n\n if (!removed.opt.temporary) {\n em.get('Commands').run('core:component-style-clear', {\n target: removed,\n });\n removed.removed();\n removed.trigger('removed');\n em.trigger('component:remove', removed);\n }\n\n const inner = removed.components();\n inner.forEach(it => this.removeChildren(it, coll, opts));\n }\n\n // Remove stuff registered in DomComponents.handleChanges\n const inner = removed.components();\n em.stopListening(inner);\n em.stopListening(removed);\n em.stopListening(removed.get('classes'));\n removed.__postRemove();\n }\n\n model(attrs, options) {\n const { opt } = options.collection;\n const { em } = opt;\n let model;\n const df = em.get('DomComponents').componentTypes;\n options.em = em;\n options.config = opt.config;\n options.componentTypes = df;\n options.domc = opt.domc;\n\n for (let it = 0; it < df.length; it++) {\n const dfId = df[it].id;\n if (dfId == attrs.type) {\n model = df[it].model;\n break;\n }\n }\n\n // If no model found, get the default one\n if (!model) {\n model = df[df.length - 1].model;\n em &&\n attrs.type &&\n em.logWarning(`Component type '${attrs.type}' not found`, {\n attrs,\n options,\n });\n }\n\n return new model(attrs, options);\n }\n\n parseString(value, opt = {}) {\n const { em, domc } = this;\n const cssc = em.get('CssComposer');\n const parsed = em.get('Parser').parseHtml(value);\n // We need this to avoid duplicate IDs\n Component.checkId(parsed.html, parsed.css, domc.componentsById, opt);\n\n if (parsed.css && cssc && !opt.temporary) {\n const { at, ...optsToPass } = opt;\n cssc.addCollection(parsed.css, {\n ...optsToPass,\n extend: 1,\n });\n }\n\n return parsed.html;\n }\n\n add(models, opt = {}) {\n opt.keepIds = [...(opt.keepIds || []), ...getComponentIds(opt.previousModels)];\n\n if (isString(models)) {\n models = this.parseString(models, opt);\n } else if (isArray(models)) {\n models = [...models];\n models.forEach((item, index) => {\n if (isString(item)) {\n const nodes = this.parseString(item, opt);\n models[index] = isArray(nodes) && !nodes.length ? null : nodes;\n }\n });\n }\n\n const isMult = isArray(models);\n models = (isMult ? models : [models]).filter(i => i).map(model => this.processDef(model));\n models = isMult ? flatten(models, 1) : models[0];\n\n const result = Backbone.Collection.prototype.add.apply(this, [models, opt]);\n this.__firstAdd = result;\n return result;\n }\n\n /**\n * Process component definition.\n */\n processDef(mdl) {\n // Avoid processing Models\n if (mdl.cid && mdl.ccid) return mdl;\n const { em, config = {} } = this;\n const { processor } = config;\n let model = mdl;\n\n if (processor) {\n model = { ...model }; // Avoid 'Cannot delete property ...'\n const modelPr = processor(model);\n if (modelPr) {\n each(model, (val, key) => delete model[key]);\n extend(model, modelPr);\n }\n }\n\n // React JSX preset\n if (model.$$typeof && typeof model.props == 'object') {\n model = { ...model };\n model.props = { ...model.props };\n const domc = em.get('DomComponents');\n const parser = em.get('Parser');\n const { parserHtml } = parser;\n\n each(model, (value, key) => {\n if (!includes(['props', 'type'], key)) delete model[key];\n });\n const { props } = model;\n const comps = props.children;\n delete props.children;\n delete model.props;\n const res = parserHtml.splitPropsFromAttr(props);\n model.attributes = res.attrs;\n\n if (comps) {\n model.components = comps;\n }\n if (!model.type) {\n model.type = 'textnode';\n } else if (!domc.getType(model.type)) {\n model.tagName = model.type;\n delete model.type;\n }\n\n extend(model, res.props);\n }\n\n return model;\n }\n\n onAdd(model, c, opts = {}) {\n const { domc, em } = this;\n const style = model.getStyle();\n const avoidInline = em && em.getConfig().avoidInlineStyle;\n domc && domc.Component.ensureInList(model);\n\n if (!isEmpty(style) && !avoidInline && em && em.get && em.getConfig().forceClass && !opts.temporary) {\n const name = model.cid;\n const rule = em.get('CssComposer').setClassRule(name, style);\n model.setStyle({});\n model.addClass(name);\n }\n\n model.__postAdd({ recursive: 1 });\n this.__onAddEnd();\n }\n\n __onAddEnd = debounce(function () {\n // TODO to check symbols on load, probably this might be removed as symbols\n // are always recovered from the model\n // const { domc } = this;\n // const allComp = (domc && domc.allById()) || {};\n // const firstAdd = this.__firstAdd;\n // const toCheck = isArray(firstAdd) ? firstAdd : [firstAdd];\n // const silent = { silent: true };\n // const onAll = comps => {\n // comps.forEach(comp => {\n // const symbol = comp.get(keySymbols);\n // const symbolOf = comp.get(keySymbol);\n // if (symbol && isArray(symbol) && isString(symbol[0])) {\n // comp.set(\n // keySymbols,\n // symbol.map(smb => allComp[smb]).filter(i => i),\n // silent\n // );\n // }\n // if (isString(symbolOf)) {\n // comp.set(keySymbol, allComp[symbolOf], silent);\n // }\n // onAll(comp.components());\n // });\n // };\n // onAll(toCheck);\n });\n}\n","import Backbone from 'backbone';\nimport { isEmpty, each, keys, result } from 'underscore';\nimport Components from '../model/Components';\nimport ComponentsView from './ComponentsView';\nimport Selectors from 'selector_manager/model/Selectors';\nimport { replaceWith } from 'utils/dom';\nimport { setViewEl } from 'utils/mixins';\n\nexport default class ComponentView extends Backbone.View {\n className() {\n return this.getClasses();\n }\n\n tagName() {\n return this.model.get('tagName');\n }\n\n initialize(opt = {}) {\n const model = this.model;\n const config = opt.config || {};\n const em = config.em;\n const modelOpt = model.opt || {};\n const { $el, el } = this;\n this.opts = opt;\n this.modelOpt = modelOpt;\n this.config = config;\n this.em = em || '';\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.attr = model.get('attributes');\n this.classe = this.attr.class || [];\n this.listenTo(model, 'change:style', this.updateStyle);\n this.listenTo(model, 'change:attributes', this.renderAttributes);\n this.listenTo(model, 'change:highlightable', this.updateHighlight);\n this.listenTo(model, 'change:status change:locked', this.updateStatus);\n this.listenTo(model, 'change:script rerender', this.reset);\n this.listenTo(model, 'change:content', this.updateContent);\n this.listenTo(model, 'change', this.handleChange);\n this.listenTo(model, 'active', this.onActive);\n this.listenTo(model, 'disable', this.onDisable);\n $el.data('model', model);\n setViewEl(el, this);\n model.view = this;\n this._getFrame() && model.views.push(this);\n this.initClasses();\n this.initComponents({ avoidRender: 1 });\n this.events = {\n ...this.constructor.getEvents(),\n dragstart: 'handleDragStart',\n };\n this.delegateEvents();\n !modelOpt.temporary && this.init(this._clbObj());\n }\n\n __isDraggable() {\n const { model, config } = this;\n const { draggable } = model.attributes;\n return config.draggableComponents && draggable;\n }\n\n _clbObj() {\n const { em, model, el } = this;\n return {\n editor: em && em.getEditor(),\n model,\n el,\n };\n }\n\n /**\n * Initialize callback\n */\n init() {}\n\n /**\n * Remove callback\n */\n removed() {}\n\n /**\n * Callback executed when the `active` event is triggered on component\n */\n onActive() {}\n\n /**\n * Callback executed when the `disable` event is triggered on component\n */\n onDisable() {}\n\n remove() {\n Backbone.View.prototype.remove.apply(this, arguments);\n const { model, $el } = this;\n const { views } = model;\n const frame = this._getFrame() || {};\n model.components().forEach(comp => {\n const view = comp.getView(frame.model);\n view?.remove();\n });\n this.childrenView?.remove();\n views.splice(views.indexOf(this), 1);\n this.removed(this._clbObj());\n $el.data({ model: '', collection: '', view: '' });\n // delete model.view; // Sorter relies on this property\n return this;\n }\n\n handleDragStart(event) {\n if (!this.__isDraggable()) return false;\n event.stopPropagation();\n event.preventDefault();\n this.em.get('Commands').run('tlb-move', {\n target: this.model,\n event,\n });\n }\n\n initClasses() {\n const { model } = this;\n const event = 'change:classes';\n const classes = model.get('classes');\n\n if (classes instanceof Selectors) {\n this.stopListening(model, event, this.initClasses);\n this.listenTo(model, event, this.initClasses);\n this.listenTo(classes, 'add remove change', this.updateClasses);\n classes.length && this.importClasses();\n }\n }\n\n initComponents(opts = {}) {\n const { model, $el, childrenView } = this;\n const event = 'change:components';\n const comps = model.get('components');\n const toListen = [model, event, this.initComponents];\n\n if (comps instanceof Components) {\n $el.data('collection', comps);\n childrenView && childrenView.remove();\n this.stopListening(...toListen);\n !opts.avoidRender && this.renderChildren();\n this.listenTo(...toListen);\n }\n }\n\n /**\n * Handle any property change\n * @private\n */\n handleChange() {\n const { model } = this;\n const chgArr = keys(model.changed);\n if (chgArr.length === 1 && chgArr[0] === 'status') return;\n model.emitUpdate();\n\n for (let prop in model.changed) {\n model.emitUpdate(prop);\n }\n }\n\n /**\n * Import, if possible, classes inside main container\n * @private\n * */\n importClasses() {\n var clm = this.config.em.get('SelectorManager');\n\n if (clm) {\n this.model.get('classes').each(m => {\n clm.add(m.get('name'));\n });\n }\n }\n\n /**\n * Update item on status change\n * @param {Event} e\n * @private\n * */\n updateStatus(opts = {}) {\n const { em, el, ppfx, model } = this;\n const { extHl } = em ? em.get('Canvas').getConfig() : {};\n const status = model.get('status');\n const selectedCls = `${ppfx}selected`;\n const selectedParentCls = `${selectedCls}-parent`;\n const freezedCls = `${ppfx}freezed`;\n const hoveredCls = `${ppfx}hovered`;\n const noPointerCls = `${ppfx}no-pointer`;\n const toRemove = [selectedCls, selectedParentCls, freezedCls, hoveredCls, noPointerCls];\n const selCls = extHl && !opts.noExtHl ? '' : selectedCls;\n this.$el.removeClass(toRemove.join(' '));\n const actualCls = el.getAttribute('class') || '';\n const cls = [actualCls];\n\n switch (status) {\n case 'selected':\n cls.push(selCls);\n break;\n case 'selected-parent':\n cls.push(selectedParentCls);\n break;\n case 'freezed':\n cls.push(freezedCls);\n break;\n case 'freezed-selected':\n cls.push(freezedCls, selCls);\n break;\n case 'hovered':\n !opts.avoidHover && cls.push(hoveredCls);\n break;\n }\n\n model.get('locked') && cls.push(noPointerCls);\n\n const clsStr = cls.filter(Boolean).join(' ');\n clsStr && el.setAttribute('class', clsStr);\n }\n\n /**\n * Update highlight attribute\n * @private\n * */\n updateHighlight() {\n const { model } = this;\n const isTextable = model.get('textable');\n const hl = model.get('highlightable') && (isTextable || !model.isChildOf('text'));\n this.setAttribute('data-gjs-highlightable', hl ? true : '');\n }\n\n /**\n * Update style attribute\n * @private\n * */\n updateStyle(m, v, opts = {}) {\n const { model, em } = this;\n\n if (em && em.getConfig().avoidInlineStyle && !opts.inline) {\n const style = model.getStyle();\n !isEmpty(style) && model.setStyle(style);\n } else {\n this.setAttribute('style', model.styleToString(opts));\n }\n }\n\n /**\n * Update classe attribute\n * @private\n * */\n updateClasses() {\n const str = this.model.get('classes').pluck('name').join(' ');\n this.setAttribute('class', str);\n\n // Regenerate status class\n this.updateStatus();\n this.onAttrUpdate();\n }\n\n /**\n * Update single attribute\n * @param {[type]} name [description]\n * @param {[type]} value [description]\n */\n setAttribute(name, value) {\n const el = this.$el;\n value ? el.attr(name, value) : el.removeAttr(name);\n }\n\n /**\n * Get classes from attributes.\n * This method is called before initialize\n *\n * @return {Array}|null\n * @private\n * */\n getClasses() {\n return this.model.getClasses().join(' ');\n }\n\n /**\n * Update attributes\n * @private\n * */\n updateAttributes() {\n const attrs = [];\n const { model, $el, el } = this;\n const { textable, type } = model.attributes;\n\n const defaultAttr = {\n id: model.getId(),\n 'data-gjs-type': type || 'default',\n ...(this.__isDraggable() && { draggable: true }),\n ...(textable && { contenteditable: 'false' }),\n };\n\n // Remove all current attributes\n each(el.attributes, attr => attrs.push(attr.nodeName));\n attrs.forEach(attr => $el.removeAttr(attr));\n this.updateStyle();\n this.updateHighlight();\n const attr = {\n ...defaultAttr,\n ...model.getAttributes(),\n };\n\n // Remove all `false` attributes\n keys(attr).forEach(key => attr[key] === false && delete attr[key]);\n\n $el.attr(attr);\n }\n\n /**\n * Update component content\n * @private\n * */\n updateContent() {\n const content = this.model.get('content');\n const hasComps = this.model.components().length;\n this.getChildrenContainer().innerHTML = hasComps ? '' : content;\n }\n\n /**\n * Prevent default helper\n * @param {Event} e\n * @private\n */\n prevDef(e) {\n e.preventDefault();\n }\n\n /**\n * Render component's script\n * @private\n */\n updateScript() {\n const { model, em } = this;\n if (!model.get('script')) return;\n em && em.get('Canvas').getCanvasView().updateScript(this);\n }\n\n /**\n * Return children container\n * Differently from a simple component where children container is the\n * component itself\n * \n * \n * \n * You could have the children container more deeper\n * \n *
\n *
\n *
\n *
\n * \n *
\n *
\n *
\n * @return HTMLElement\n * @private\n */\n getChildrenContainer() {\n var container = this.el;\n\n if (typeof this.getChildrenSelector == 'function') {\n container = this.el.querySelector(this.getChildrenSelector());\n } else if (typeof this.getTemplate == 'function') {\n // Need to find deepest first child\n }\n\n return container;\n }\n\n /**\n * This returns rect informations not affected by the canvas zoom.\n * The method `getBoundingClientRect` doesn't work here and we\n * have to take in account offsetParent\n */\n getOffsetRect() {\n const rect = {};\n const target = this.el;\n let gtop = 0;\n let gleft = 0;\n\n const assignRect = el => {\n const { offsetParent } = el;\n\n if (offsetParent) {\n gtop += offsetParent.offsetTop;\n gleft += offsetParent.offsetLeft;\n assignRect(offsetParent);\n } else {\n rect.top = target.offsetTop + gtop;\n rect.left = target.offsetLeft + gleft;\n rect.bottom = rect.top + target.offsetHeight;\n rect.right = rect.left + target.offsetWidth;\n }\n };\n assignRect(target);\n\n return rect;\n }\n\n isInViewport({ rect } = {}) {\n const { el } = this;\n const elDoc = el.ownerDocument;\n const { body } = elDoc;\n const { frameElement } = elDoc.defaultView;\n const { top, left } = rect || this.getOffsetRect();\n const frame = this._getFrame().getOffsetRect();\n\n return (\n top >= frame.scrollTop &&\n left >= frame.scrollLeft &&\n top <= frame.scrollBottom &&\n left <= frameElement.offsetWidth + body.scrollLeft\n );\n }\n\n scrollIntoView(opts = {}) {\n const rect = this.getOffsetRect();\n const isInViewport = this.isInViewport({ rect });\n\n if (!isInViewport || opts.force) {\n const { el } = this;\n\n // PATCH: scrollIntoView won't work with multiple requests from iframes\n if (opts.behavior !== 'smooth') {\n el.ownerDocument.defaultView.scrollTo(0, rect.top);\n } else {\n el.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n ...opts,\n });\n }\n }\n }\n\n /**\n * Recreate the element of the view\n */\n reset() {\n const { el } = this;\n this.el = '';\n this._ensureElement();\n this._setData();\n replaceWith(el, this.el);\n this.render();\n }\n\n _setData() {\n const { model } = this;\n const collection = model.components();\n const view = this;\n this.$el.data({ model, collection, view });\n }\n\n _getFrame() {\n return this.config.frameView;\n }\n\n /**\n * Render children components\n * @private\n */\n renderChildren() {\n this.updateContent();\n const container = this.getChildrenContainer();\n const view =\n this.childrenView ||\n new ComponentsView({\n collection: this.model.get('components'),\n config: this.config,\n componentTypes: this.opts.componentTypes,\n });\n\n view.render(container);\n this.childrenView = view;\n const childNodes = Array.prototype.slice.call(view.el.childNodes);\n\n for (var i = 0, len = childNodes.length; i < len; i++) {\n container.appendChild(childNodes.shift());\n }\n }\n\n renderAttributes() {\n this.updateAttributes();\n this.updateClasses();\n }\n\n onAttrUpdate() {}\n\n render() {\n this.renderAttributes();\n if (this.modelOpt.temporary) return this;\n this.renderChildren();\n this.updateScript();\n setViewEl(this.el, this);\n this.postRender();\n\n return this;\n }\n\n postRender() {\n if (!this.modelOpt.temporary) {\n this.onRender(this._clbObj());\n }\n }\n\n onRender() {}\n}\n\n// Due to the Backbone extend mechanism, static methods are not properly extended\nComponentView.getEvents = function () {\n return result(this.prototype, 'events');\n};\n","import Backbone from 'backbone';\nimport { isUndefined } from 'underscore';\nimport { removeEl } from '../../utils/dom';\n\nexport default class ComponentsView extends Backbone.View {\n initialize(o) {\n this.opts = o || {};\n this.config = o.config || {};\n this.em = this.config.em;\n const coll = this.collection;\n this.listenTo(coll, 'add', this.addTo);\n this.listenTo(coll, 'reset', this.resetChildren);\n this.listenTo(coll, 'remove', this.removeChildren);\n }\n\n removeChildren(removed, coll, opts = {}) {\n removed.views.forEach(view => {\n if (!view) return;\n const { childrenView, scriptContainer } = view;\n childrenView && childrenView.stopListening();\n removeEl(scriptContainer);\n view.remove.apply(view);\n });\n\n const inner = removed.components();\n inner.forEach(it => this.removeChildren(it, coll, opts));\n }\n\n /**\n * Add to collection\n * @param {Model} model\n * @param {Collection} coll\n * @param {Object} opts\n * @private\n * */\n addTo(model, coll = {}, opts = {}) {\n const em = this.config.em;\n const i = this.collection.indexOf(model);\n this.addToCollection(model, null, i);\n\n if (em && !opts.temporary) {\n const triggerAdd = model => {\n em.trigger('component:add', model);\n model.components().forEach(comp => triggerAdd(comp));\n };\n triggerAdd(model);\n }\n }\n\n /**\n * Add new object to collection\n * @param {Object} Model\n * @param {Object} Fragment collection\n * @param {Integer} Index of append\n *\n * @return {Object} Object rendered\n * @private\n * */\n addToCollection(model, fragmentEl, index) {\n if (!this.compView) this.compView = require('./ComponentView').default;\n const { config, opts, em } = this;\n const fragment = fragmentEl || null;\n const { frameView = {} } = config;\n const sameFrameView = frameView.model && model.getView(frameView.model);\n const dt = opts.componentTypes || (em && em.get('DomComponents').getTypes());\n const type = model.get('type') || 'default';\n let viewObject = this.compView;\n\n for (let it = 0; it < dt.length; it++) {\n if (dt[it].id == type) {\n viewObject = dt[it].view;\n break;\n }\n }\n const view =\n sameFrameView ||\n new viewObject({\n model,\n config,\n componentTypes: dt,\n });\n let rendered;\n\n try {\n // Avoid breaking on DOM rendering (eg. invalid attribute name)\n rendered = view.render().el;\n } catch (error) {\n rendered = document.createTextNode('');\n em.logError(error);\n }\n\n if (fragment) {\n fragment.appendChild(rendered);\n } else {\n const parent = this.parentEl;\n const children = parent.childNodes;\n\n if (!isUndefined(index)) {\n const lastIndex = children.length == index;\n\n // If the added model is the last of collection\n // need to change the logic of append\n if (lastIndex) {\n index--;\n }\n\n // In case the added is new in the collection index will be -1\n if (lastIndex || !children.length) {\n parent.appendChild(rendered);\n } else {\n parent.insertBefore(rendered, children[index]);\n }\n } else {\n parent.appendChild(rendered);\n }\n }\n\n if (!model.opt.temporary) {\n em?.trigger('component:mount', model);\n }\n\n return rendered;\n }\n\n resetChildren(models, { previousModels = [] } = {}) {\n this.parentEl.innerHTML = '';\n previousModels.forEach(md => this.removeChildren(md, this.collection));\n models.each(model => this.addToCollection(model));\n }\n\n render(parent) {\n const el = this.el;\n const frag = document.createDocumentFragment();\n this.parentEl = parent || this.el;\n this.collection.each(model => this.addToCollection(model, frag));\n el.innerHTML = '';\n el.appendChild(frag);\n return this;\n }\n}\n","import { isString, isArray, keys, isUndefined } from 'underscore';\nimport { shallowDiff } from '../../utils/mixins';\nimport ParserHtml from '../../parser/model/ParserHtml';\nimport { Model } from '../../common';\n\nexport default class StyleableModel extends Model {\n parseStyle = ParserHtml().parseStyle;\n\n /**\n * To trigger the style change event on models I have to\n * pass a new object instance\n * @param {Object} prop\n * @return {Object}\n */\n extendStyle(prop) {\n return { ...this.getStyle(), ...prop };\n }\n\n /**\n * Get style object\n * @return {Object}\n */\n getStyle(prop) {\n const style = this.get('style') || {};\n const result = { ...style };\n return prop && isString(prop) ? result[prop] : result;\n }\n\n /**\n * Set new style object\n * @param {Object|string} prop\n * @param {Object} opts\n * @return {Object} Applied properties\n */\n setStyle(prop = {}, opts = {}) {\n if (isString(prop)) {\n prop = this.parseStyle(prop);\n }\n\n const propOrig = this.getStyle(opts);\n const propNew = { ...prop };\n const newStyle = { ...propNew };\n // Remove empty style properties\n keys(newStyle).forEach(prop => {\n if (newStyle[prop] === '') {\n delete newStyle[prop];\n }\n });\n this.set('style', newStyle, opts);\n const diff = shallowDiff(propOrig, propNew);\n // Delete the property used for partial updates\n delete diff.__p;\n keys(diff).forEach(pr => {\n const em = this.em;\n if (opts.noEvent) return;\n this.trigger(`change:style:${pr}`);\n if (em) {\n em.trigger('styleable:change', this, pr, opts);\n em.trigger(`styleable:change:${pr}`, this, pr, opts);\n }\n });\n\n return propNew;\n }\n\n /**\n * Add style property\n * @param {Object|string} prop\n * @param {string} value\n * @example\n * this.addStyle({color: 'red'});\n * this.addStyle('color', 'blue');\n */\n addStyle(prop, value = '', opts = {}) {\n if (typeof prop == 'string') {\n prop = {\n prop: value,\n };\n } else {\n opts = value || {};\n }\n\n prop = this.extendStyle(prop);\n this.setStyle(prop, opts);\n }\n\n /**\n * Remove style property\n * @param {string} prop\n */\n removeStyle(prop) {\n let style = this.getStyle();\n delete style[prop];\n this.setStyle(style);\n }\n\n /**\n * Returns string of style properties\n * @param {Object} [opts={}] Options\n * @return {String}\n */\n styleToString(opts = {}) {\n const result = [];\n const style = this.getStyle(opts);\n\n for (let prop in style) {\n const imp = opts.important;\n const important = isArray(imp) ? imp.indexOf(prop) >= 0 : imp;\n const value = `${style[prop]}${important ? ' !important' : ''}`;\n const propPrv = prop.substr(0, 2) == '__';\n value && !propPrv && result.push(`${prop}:${value};`);\n }\n\n return result.join('');\n }\n\n getSelectors() {\n return this.get('selectors') || this.get('classes');\n }\n\n getSelectorsString(opts) {\n return this.selectorsToString ? this.selectorsToString(opts) : this.getSelectors().getFullString();\n }\n\n _validate(attr, opts) {\n const { style } = attr;\n const em = this.em || opts.em;\n const onBeforeStyle = em?.get('CssComposer')?.getConfig().onBeforeStyle;\n\n if (style && onBeforeStyle) {\n const newStyle = onBeforeStyle({ ...style });\n newStyle &&\n keys(style).map(prop => {\n if (isUndefined(newStyle[prop])) delete attr.style[prop];\n });\n newStyle &&\n keys(newStyle).map(prop => {\n attr.style[prop] = newStyle[prop];\n });\n }\n\n return true;\n }\n}\n","import { isFunction } from 'underscore';\nimport { View, Model } from '../../common';\n\nexport default {\n types: [],\n\n initialize(models, opts = {}) {\n const { em } = opts;\n this.em = em;\n this.opts = opts;\n this.model = (attrs = {}, options = {}) => {\n let Model, View, type;\n\n if (attrs && attrs.type) {\n const baseType = this.getBaseType();\n type = this.getType(attrs.type);\n Model = type ? type.model : baseType.model;\n View = type ? type.view : baseType.view;\n } else {\n const typeFound = this.recognizeType(attrs);\n type = typeFound.type;\n Model = type.model;\n View = type.view;\n attrs = typeFound.attributes;\n }\n\n const model = new Model(attrs, { ...options, em });\n model.typeView = View;\n return model;\n };\n const init = this.init && this.init.bind(this);\n init && init();\n },\n\n /**\n * Recognize type by any value\n * @param {mixed} value\n * @return {Object} Found type\n */\n recognizeType(value) {\n const types = this.getTypes();\n\n for (let i = 0; i < types.length; i++) {\n const type = types[i];\n let typeFound = type.isType(value);\n typeFound = typeof typeFound == 'boolean' && typeFound ? { type: type.id } : typeFound;\n\n if (typeFound) {\n return {\n type,\n attributes: typeFound,\n };\n }\n }\n\n // If, for any reason, the type is not found it'll return the base one\n return {\n type: this.getBaseType(),\n attributes: value,\n };\n },\n\n /**\n * Returns the base type (last object in the stack)\n * @return {Object}\n */\n getBaseType() {\n const types = this.getTypes();\n return types[types.length - 1];\n },\n\n /**\n * Get types\n * @return {Array}\n */\n getTypes() {\n return this.types;\n },\n\n /**\n * Get type\n * @param {string} id Type ID\n * @return {Object} Type definition\n */\n getType(id) {\n const types = this.getTypes();\n\n for (let i = 0; i < types.length; i++) {\n const type = types[i];\n if (type.id === id) {\n return type;\n }\n }\n },\n\n /**\n * Add new type\n * @param {string} id Type ID\n * @param {Object} definition Definition of the type. Each definition contains\n * `model` (business logic), `view` (presentation logic)\n * and `isType` function which recognize the type of the\n * passed entity\n * addType('my-type', {\n * model: {},\n * view: {},\n * isType: (value) => {},\n * })\n */\n addType(id, definition) {\n const type = this.getType(id);\n const baseType = this.getBaseType();\n const ModelInst = type ? type.model : baseType.model;\n const ViewInst = type ? type.view : baseType.view;\n let { model, view, isType } = definition;\n model = model instanceof Model || isFunction(model) ? model : ModelInst.extend(model || {});\n view = view instanceof View || isFunction(view) ? view : ViewInst.extend(view || {});\n\n // New API\n if (this.extendViewApi && !definition.model && !definition.view) {\n view = view.extend(definition);\n }\n\n if (type) {\n type.model = model;\n type.view = view;\n type.isType = isType || type.isType;\n } else {\n definition.id = id;\n definition.model = model;\n definition.view = view;\n definition.isType =\n isType ||\n function (value) {\n if (value && value.type == id) {\n return true;\n }\n };\n this.getTypes().unshift(definition);\n }\n },\n};\n","import Backbone from 'backbone';\n\nconst $ = Backbone.$;\n\nexport default class Input extends Backbone.View {\n template() {\n return ``;\n }\n\n inputClass() {\n return `${this.ppfx}field`;\n }\n\n holderClass() {\n return `${this.ppfx}input-holder`;\n }\n\n constructor(opts = {}) {\n super(opts);\n const ppfx = opts.ppfx || '';\n this.opts = opts;\n this.ppfx = ppfx;\n this.em = opts.target || {};\n !opts.onChange && this.listenTo(this.model, 'change:value', this.handleModelChange);\n }\n\n /**\n * Fired when the element of the property is updated\n */\n elementUpdated() {\n this.model.trigger('el:change');\n }\n\n /**\n * Set value to the input element\n * @param {string} value\n */\n setValue(value) {\n const model = this.model;\n let val = value || model.get('defaults');\n const input = this.getInputEl();\n input && (input.value = val);\n }\n\n /**\n * Updates the view when the model is changed\n * */\n handleModelChange(model, value, opts) {\n this.setValue(value, opts);\n }\n\n /**\n * Handled when the view is changed\n */\n handleChange(e) {\n e.stopPropagation();\n const value = this.getInputEl().value;\n this.__onInputChange(value);\n this.elementUpdated();\n }\n\n __onInputChange(value) {\n this.model.set({ value }, { fromInput: 1 });\n }\n\n /**\n * Get the input element\n * @return {HTMLElement}\n */\n getInputEl() {\n if (!this.inputEl) {\n const { model, opts } = this;\n const type = opts.type || 'text';\n const plh = model.get('placeholder') || model.get('defaults') || model.get('default') || '';\n this.inputEl = $(``);\n }\n\n return this.inputEl.get(0);\n }\n\n render() {\n this.inputEl = null;\n const el = this.$el;\n el.addClass(this.inputClass());\n el.html(this.template());\n el.find(`.${this.holderClass()}`).append(this.getInputEl());\n return this;\n }\n}\n\nInput.prototype.events = {\n change: 'handleChange',\n};\n","import Backbone from 'backbone';\nimport { isUndefined } from 'underscore';\nimport ColorPicker from '../../utils/ColorPicker';\nimport Input from './Input';\n\nconst { $ } = Backbone;\n$ && ColorPicker($);\n\nconst getColor = color => {\n const name = color.getFormat() === 'name' && color.toName();\n const cl = color.getAlpha() == 1 ? color.toHexString() : color.toRgbString();\n return name || cl.replace(/ /g, '');\n};\n\nexport default class InputColor extends Input {\n template() {\n const ppfx = this.ppfx;\n return `\n
\n
\n
\n
\n
\n
\n `;\n }\n\n inputClass() {\n const ppfx = this.ppfx;\n return `${ppfx}field ${ppfx}field-color`;\n }\n\n holderClass() {\n return `${this.ppfx}input-holder`;\n }\n\n remove() {\n Input.prototype.remove.apply(this, arguments);\n this.colorEl.spectrum('destroy');\n }\n\n handleChange(e) {\n e.stopPropagation();\n const { value } = e.target;\n if (isUndefined(value)) return;\n this.__onInputChange(value);\n }\n\n __onInputChange(val) {\n const { model, opts } = this;\n const { onChange } = opts;\n let value = val;\n const colorEl = this.getColorEl();\n\n // Check the color by using the ColorPicker's parser\n if (colorEl) {\n colorEl.spectrum('set', value);\n const tc = colorEl.spectrum('get');\n const color = value && getColor(tc);\n color && (value = color);\n }\n\n onChange ? onChange(value) : model.set({ value }, { fromInput: 1 });\n }\n\n /**\n * Set value to the model\n * @param {string} val\n * @param {Object} opts\n */\n setValue(val, opts = {}) {\n const { model } = this;\n const def = !isUndefined(opts.def) ? opts.def : model.get('defaults');\n const value = !isUndefined(val) ? val : !isUndefined(def) ? def : '';\n const inputEl = this.getInputEl();\n const colorEl = this.getColorEl();\n const valueClr = value != 'none' ? value : '';\n inputEl.value = value;\n colorEl.get(0).style.backgroundColor = valueClr;\n\n // This prevents from adding multiple thumbs in spectrum\n if (opts.fromTarget || (opts.fromInput && !opts.avoidStore)) {\n colorEl.spectrum('set', valueClr);\n this.noneColor = value == 'none';\n }\n }\n\n /**\n * Get the color input element\n * @return {HTMLElement}\n */\n getColorEl() {\n if (!this.colorEl) {\n const { em, model, opts } = this;\n const self = this;\n const ppfx = this.ppfx;\n const { onChange } = opts;\n\n var colorEl = $(`
`);\n var cpStyle = colorEl.get(0).style;\n var elToAppend = em && em.config ? em.config.el : '';\n var colorPickerConfig = (em && em.getConfig && em.getConfig().colorPicker) || {};\n\n let changed = false;\n let movedColor = '';\n let previousColor;\n this.$el.find('[data-colorp-c]').append(colorEl);\n\n const handleChange = (value, complete = true) => {\n if (onChange) {\n onChange(value, !complete);\n } else {\n complete && model.setValueFromInput(0, false); // for UndoManager\n model.setValueFromInput(value, complete);\n }\n };\n\n colorEl.spectrum({\n color: model.getValue() || false,\n containerClassName: `${ppfx}one-bg ${ppfx}two-color`,\n appendTo: elToAppend || 'body',\n maxSelectionSize: 8,\n showPalette: true,\n showAlpha: true,\n chooseText: 'Ok',\n cancelText: '⨯',\n palette: [],\n\n // config expanded here so that the functions below are not overridden\n ...colorPickerConfig,\n ...(model.get('colorPicker') || {}),\n\n move(color) {\n const cl = getColor(color);\n movedColor = cl;\n cpStyle.backgroundColor = cl;\n handleChange(cl, false);\n },\n change(color) {\n changed = true;\n const cl = getColor(color);\n cpStyle.backgroundColor = cl;\n handleChange(cl);\n self.noneColor = 0;\n },\n show(color) {\n changed = false;\n movedColor = '';\n previousColor = onChange ? model.getValue({ noDefault: true }) : getColor(color);\n },\n hide() {\n if (!changed && (previousColor || onChange)) {\n if (self.noneColor) {\n previousColor = '';\n }\n cpStyle.backgroundColor = previousColor;\n colorEl.spectrum('set', previousColor);\n handleChange(previousColor, false);\n }\n },\n });\n\n if (em && em.on) {\n this.listenTo(em, 'component:selected', () => {\n movedColor && handleChange(movedColor);\n changed = true;\n movedColor = '';\n colorEl.spectrum('hide');\n });\n }\n\n this.colorEl = colorEl;\n }\n return this.colorEl;\n }\n\n render() {\n Input.prototype.render.call(this);\n // This will make the color input available on render\n this.getColorEl();\n return this;\n }\n}\n","// Without jquery I have to update few stuff\n//\n// Spectrum Colorpicker v1.8.0\n// https://github.com/bgrins/spectrum\n// Author: Brian Grinstead\n// License: MIT\nimport { hasWin } from './mixins';\n\nexport default function ($, undefined) {\n 'use strict';\n if (!hasWin()) return;\n\n var defaultOpts = {\n // Callbacks\n beforeShow: noop,\n move: noop,\n change: noop,\n show: noop,\n hide: noop,\n\n // Options\n color: false,\n flat: false,\n showInput: false,\n allowEmpty: false,\n showButtons: true,\n clickoutFiresChange: true,\n showInitial: false,\n showPalette: false,\n showPaletteOnly: false,\n hideAfterPaletteSelect: false,\n togglePaletteOnly: false,\n showSelectionPalette: true,\n localStorageKey: false,\n appendTo: 'body',\n maxSelectionSize: 7,\n cancelText: 'cancel',\n chooseText: 'choose',\n togglePaletteMoreText: 'more',\n togglePaletteLessText: 'less',\n clearText: 'Clear Color Selection',\n noColorSelectedText: 'No Color Selected',\n preferredFormat: false,\n className: '', // Deprecated - use containerClassName and replacerClassName instead.\n containerClassName: '',\n replacerClassName: '',\n showAlpha: false,\n theme: 'sp-light',\n palette: [['#ffffff', '#000000', '#ff0000', '#ff8000', '#ffff00', '#008000', '#0000ff', '#4b0082', '#9400d3']],\n selectionPalette: [],\n disabled: false,\n offset: null,\n },\n spectrums = [],\n IE = !!/msie/i.exec(window.navigator.userAgent),\n rgbaSupport = (function () {\n function contains(str, substr) {\n return !!~('' + str).indexOf(substr);\n }\n\n var elem = document.createElement('div');\n var style = elem.style;\n style.cssText = 'background-color:rgba(0,0,0,.5)';\n return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla');\n })(),\n replaceInput = [\n \"
\",\n \"
\",\n \"
▼
\",\n '
',\n ].join(''),\n markup = (function () {\n // IE does not support gradients with multiple stops, so we need to simulate\n // that for the rainbow slider with 8 divs that each have a single gradient\n var gradientFix = '';\n if (IE) {\n for (var i = 1; i <= 6; i++) {\n gradientFix += \"
\";\n }\n }\n\n return [\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n \"\",\n '
',\n '
',\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n '
',\n '
',\n '
',\n \"
\",\n '
',\n \"
\",\n \"
\",\n gradientFix,\n '
',\n '
',\n \"
\",\n '
',\n \"
\",\n \"\",\n '
',\n \"
\",\n \"
\",\n \"\",\n \"\",\n '
',\n '
',\n '
',\n ].join('');\n })();\n\n function paletteTemplate(p, color, className, opts) {\n var html = [];\n for (var i = 0; i < p.length; i++) {\n var current = p[i];\n if (current) {\n var tiny = tinycolor(current);\n var c = tiny.toHsl().l < 0.5 ? 'sp-thumb-el sp-thumb-dark' : 'sp-thumb-el sp-thumb-light';\n c += tinycolor.equals(color, current) ? ' sp-thumb-active' : '';\n var formattedString = tiny.toString(opts.preferredFormat || 'rgb');\n var swatchStyle = rgbaSupport ? 'background-color:' + tiny.toRgbString() : 'filter:' + tiny.toFilter();\n html.push(\n ''\n );\n } else {\n var cls = 'sp-clear-display';\n html.push(\n $('
')\n .append(\n $('').attr(\n 'title',\n opts.noColorSelectedText\n )\n )\n .html()\n );\n }\n }\n return \"
\" + html.join('') + '
';\n }\n\n function hideAll() {\n for (var i = 0; i < spectrums.length; i++) {\n if (spectrums[i]) {\n spectrums[i].hide();\n }\n }\n }\n\n function instanceOptions(o, callbackContext) {\n var opts = $.extend({}, defaultOpts, o);\n opts.callbacks = {\n move: bind(opts.move, callbackContext),\n change: bind(opts.change, callbackContext),\n show: bind(opts.show, callbackContext),\n hide: bind(opts.hide, callbackContext),\n beforeShow: bind(opts.beforeShow, callbackContext),\n };\n return opts;\n }\n\n function spectrum(element, o) {\n var opts = instanceOptions(o, element),\n flat = opts.flat,\n showSelectionPalette = opts.showSelectionPalette,\n localStorageKey = opts.localStorageKey,\n theme = opts.theme,\n callbacks = opts.callbacks,\n resize = throttle(reflow, 10),\n visible = false,\n isDragging = false,\n isDefault = true,\n dragWidth = 0,\n dragHeight = 0,\n dragHelperHeight = 0,\n slideHeight = 0,\n slideWidth = 0,\n alphaWidth = 0,\n alphaSlideHelperWidth = 0,\n slideHelperHeight = 0,\n currentHue = 0,\n currentSaturation = 0,\n currentValue = 0,\n currentAlpha = 1,\n palette = [],\n paletteArray = [],\n paletteLookup = {},\n selectionPalette = opts.selectionPalette.slice(0),\n maxSelectionSize = opts.maxSelectionSize,\n draggingClass = 'sp-dragging',\n shiftMovementDirection = null;\n\n var doc = element.ownerDocument,\n body = doc.body,\n boundElement = $(element),\n disabled = false,\n container = $(markup, doc).addClass(theme),\n pickerContainer = container.find('.sp-picker-container'),\n dragger = container.find('.sp-color'),\n dragHelper = container.find('.sp-dragger'),\n slider = container.find('.sp-hue'),\n slideHelper = container.find('.sp-slider'),\n alphaSliderInner = container.find('.sp-alpha-inner'),\n alphaSlider = container.find('.sp-alpha'),\n alphaSlideHelper = container.find('.sp-alpha-handle'),\n textInput = container.find('.sp-input'),\n paletteContainer = container.find('.sp-palette'),\n initialColorContainer = container.find('.sp-initial'),\n cancelButton = container.find('.sp-cancel'),\n clearButton = container.find('.sp-clear'),\n chooseButton = container.find('.sp-choose'),\n toggleButton = container.find('.sp-palette-toggle'),\n isInput = boundElement.is('input'),\n isInputTypeColor = isInput && boundElement.attr('type') === 'color' && inputTypeColorSupport(),\n shouldReplace = isInput && !flat,\n replacer = shouldReplace\n ? $(replaceInput).addClass(theme).addClass(opts.className).addClass(opts.replacerClassName)\n : $([]),\n offsetElement = shouldReplace ? replacer : boundElement,\n previewElement = replacer.find('.sp-preview-inner'),\n initialColor = opts.color || (isInput && boundElement.val()),\n colorOnShow = false,\n currentPreferredFormat = opts.preferredFormat,\n clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange,\n isEmpty = !initialColor,\n allowEmpty = opts.allowEmpty && !isInputTypeColor;\n\n function applyOptions() {\n if (opts.showPaletteOnly) {\n opts.showPalette = true;\n }\n\n toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText);\n\n if (opts.palette) {\n palette = opts.palette.slice(0);\n paletteArray = $.isArray(palette[0]) ? palette : [palette];\n paletteLookup = {};\n for (var i = 0; i < paletteArray.length; i++) {\n for (var j = 0; j < paletteArray[i].length; j++) {\n var rgb = tinycolor(paletteArray[i][j]).toRgbString();\n paletteLookup[rgb] = true;\n }\n }\n }\n\n container.toggleClass('sp-flat', flat);\n container.toggleClass('sp-input-disabled', !opts.showInput);\n container.toggleClass('sp-alpha-enabled', opts.showAlpha);\n container.toggleClass('sp-clear-enabled', allowEmpty);\n container.toggleClass('sp-buttons-disabled', !opts.showButtons);\n container.toggleClass('sp-palette-buttons-disabled', !opts.togglePaletteOnly);\n container.toggleClass('sp-palette-disabled', !opts.showPalette);\n container.toggleClass('sp-palette-only', opts.showPaletteOnly);\n container.toggleClass('sp-initial-disabled', !opts.showInitial);\n container.addClass(opts.className).addClass(opts.containerClassName);\n\n reflow();\n }\n\n function initialize() {\n if (IE) {\n container.find('*:not(input)').attr('unselectable', 'on');\n }\n\n applyOptions();\n\n if (shouldReplace) {\n boundElement.after(replacer).hide();\n }\n\n if (!allowEmpty) {\n clearButton.hide();\n }\n\n if (flat) {\n boundElement.after(container).hide();\n } else {\n var appendTo = opts.appendTo === 'parent' ? boundElement.parent() : $(opts.appendTo);\n if (appendTo.length !== 1) {\n appendTo = $('body');\n }\n\n appendTo.append(container);\n }\n\n updateSelectionPaletteFromStorage();\n\n offsetElement.bind('click.spectrum touchstart.spectrum', function (e) {\n if (!disabled) {\n toggle();\n }\n\n e.stopPropagation();\n\n if (!$(e.target).is('input')) {\n e.preventDefault();\n }\n });\n\n if (boundElement.is(':disabled') || opts.disabled === true) {\n disable();\n }\n\n // Prevent clicks from bubbling up to document. This would cause it to be hidden.\n container.click(stopPropagation);\n\n // Handle user typed input\n textInput.change(setFromTextInput);\n textInput.bind('paste', function () {\n setTimeout(setFromTextInput, 1);\n });\n textInput.keydown(function (e) {\n if (e.keyCode == 13) {\n setFromTextInput();\n }\n });\n\n cancelButton.text(opts.cancelText);\n cancelButton.bind('click.spectrum', function (e) {\n e.stopPropagation();\n e.preventDefault();\n revert();\n hide();\n });\n\n clearButton.attr('title', opts.clearText);\n clearButton.bind('click.spectrum', function (e) {\n e.stopPropagation();\n e.preventDefault();\n isEmpty = true;\n move();\n\n if (flat) {\n //for the flat style, this is a change event\n updateOriginalInput(true);\n }\n });\n\n chooseButton.text(opts.chooseText);\n chooseButton.bind('click.spectrum', function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n if (IE && textInput.is(':focus')) {\n textInput.trigger('change');\n }\n\n if (isValid()) {\n updateOriginalInput(true);\n hide();\n }\n });\n\n toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText);\n toggleButton.bind('click.spectrum', function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n opts.showPaletteOnly = !opts.showPaletteOnly;\n\n // To make sure the Picker area is drawn on the right, next to the\n // Palette area (and not below the palette), first move the Palette\n // to the left to make space for the picker, plus 5px extra.\n // The 'applyOptions' function puts the whole container back into place\n // and takes care of the button-text and the sp-palette-only CSS class.\n if (!opts.showPaletteOnly && !flat) {\n container.css('left', '-=' + (pickerContainer.outerWidth(true) + 5));\n }\n applyOptions();\n });\n\n draggable(\n alphaSlider,\n function (dragX, dragY, e) {\n currentAlpha = dragX / alphaWidth;\n isEmpty = false;\n if (e.shiftKey) {\n currentAlpha = Math.round(currentAlpha * 10) / 10;\n }\n\n move();\n },\n dragStart,\n dragStop\n );\n\n draggable(\n slider,\n function (dragX, dragY) {\n currentHue = parseFloat(dragY / slideHeight);\n isEmpty = false;\n if (!opts.showAlpha) {\n currentAlpha = 1;\n }\n move();\n },\n dragStart,\n dragStop\n );\n\n draggable(\n dragger,\n function (dragX, dragY, e) {\n // shift+drag should snap the movement to either the x or y axis.\n if (!e.shiftKey) {\n shiftMovementDirection = null;\n } else if (!shiftMovementDirection) {\n var oldDragX = currentSaturation * dragWidth;\n var oldDragY = dragHeight - currentValue * dragHeight;\n var furtherFromX = Math.abs(dragX - oldDragX) > Math.abs(dragY - oldDragY);\n\n shiftMovementDirection = furtherFromX ? 'x' : 'y';\n }\n\n var setSaturation = !shiftMovementDirection || shiftMovementDirection === 'x';\n var setValue = !shiftMovementDirection || shiftMovementDirection === 'y';\n\n if (setSaturation) {\n currentSaturation = parseFloat(dragX / dragWidth);\n }\n if (setValue) {\n currentValue = parseFloat((dragHeight - dragY) / dragHeight);\n }\n\n isEmpty = false;\n if (!opts.showAlpha) {\n currentAlpha = 1;\n }\n\n move();\n },\n dragStart,\n dragStop\n );\n\n if (!!initialColor) {\n set(initialColor);\n\n // In case color was black - update the preview UI and set the format\n // since the set function will not run (default color is black).\n updateUI();\n currentPreferredFormat = opts.preferredFormat || tinycolor(initialColor).getFormat();\n\n addColorToSelectionPalette(initialColor);\n } else {\n updateUI();\n }\n\n if (flat) {\n show();\n }\n\n function paletteElementClick(e) {\n if (e.data && e.data.ignore) {\n set($(e.target).closest('.sp-thumb-el').data('color'));\n move();\n } else {\n set($(e.target).closest('.sp-thumb-el').data('color'));\n move();\n if (opts.hideAfterPaletteSelect) {\n updateOriginalInput(true);\n hide();\n }\n }\n\n return false;\n }\n\n var paletteEvent = IE ? 'mousedown.spectrum' : 'click.spectrum touchstart.spectrum';\n paletteContainer.delegate('.sp-thumb-el', paletteEvent, paletteElementClick);\n initialColorContainer.delegate('.sp-thumb-el:nth-child(1)', paletteEvent, { ignore: true }, paletteElementClick);\n }\n\n function updateSelectionPaletteFromStorage() {\n if (localStorageKey && window.localStorage) {\n // Migrate old palettes over to new format. May want to remove this eventually.\n try {\n var oldPalette = window.localStorage[localStorageKey].split(',#');\n if (oldPalette.length > 1) {\n delete window.localStorage[localStorageKey];\n $.each(oldPalette, function (i, c) {\n addColorToSelectionPalette(c);\n });\n }\n } catch (e) {}\n\n try {\n selectionPalette = window.localStorage[localStorageKey].split(';');\n } catch (e) {}\n }\n }\n\n function addColorToSelectionPalette(color) {\n if (showSelectionPalette) {\n var rgb = tinycolor(color).toRgbString();\n if (!paletteLookup[rgb] && $.inArray(rgb, selectionPalette) === -1) {\n selectionPalette.push(rgb);\n while (selectionPalette.length > maxSelectionSize) {\n selectionPalette.shift();\n }\n }\n\n if (localStorageKey && window.localStorage) {\n try {\n window.localStorage[localStorageKey] = selectionPalette.join(';');\n } catch (e) {}\n }\n }\n }\n\n function getUniqueSelectionPalette() {\n var unique = [];\n if (opts.showPalette) {\n for (var i = 0; i < selectionPalette.length; i++) {\n var rgb = tinycolor(selectionPalette[i]).toRgbString();\n\n if (!paletteLookup[rgb]) {\n unique.push(selectionPalette[i]);\n }\n }\n }\n\n return unique.reverse().slice(0, opts.maxSelectionSize);\n }\n\n function drawPalette() {\n var currentColor = get();\n\n var html = $.map(paletteArray, function (palette, i) {\n return paletteTemplate(palette, currentColor, 'sp-palette-row sp-palette-row-' + i, opts);\n });\n\n updateSelectionPaletteFromStorage();\n\n if (selectionPalette) {\n html.push(\n paletteTemplate(getUniqueSelectionPalette(), currentColor, 'sp-palette-row sp-palette-row-selection', opts)\n );\n }\n\n paletteContainer.html(html.join(''));\n }\n\n function drawInitial() {\n if (opts.showInitial) {\n var initial = colorOnShow;\n var current = get();\n initialColorContainer.html(paletteTemplate([initial, current], current, 'sp-palette-row-initial', opts));\n }\n }\n\n function dragStart() {\n if (dragHeight <= 0 || dragWidth <= 0 || slideHeight <= 0) {\n reflow();\n }\n isDragging = true;\n container.addClass(draggingClass);\n shiftMovementDirection = null;\n boundElement.trigger('dragstart.spectrum', [get()]);\n }\n\n function dragStop() {\n isDragging = false;\n container.removeClass(draggingClass);\n boundElement.trigger('dragstop.spectrum', [get()]);\n }\n\n function setFromTextInput() {\n var value = textInput.val();\n\n if ((value === null || value === '') && allowEmpty) {\n set(null);\n updateOriginalInput(true);\n } else {\n var tiny = tinycolor(value);\n if (tiny.isValid()) {\n set(tiny);\n updateOriginalInput(true);\n } else {\n textInput.addClass('sp-validation-error');\n }\n }\n }\n\n function toggle() {\n if (visible) {\n hide();\n } else {\n show();\n }\n }\n\n function show() {\n var event = $.Event('beforeShow.spectrum');\n\n if (visible) {\n reflow();\n return;\n }\n\n boundElement.trigger('beforeShow.spectrum', [get()]);\n\n if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) {\n return;\n }\n\n hideAll();\n visible = true;\n\n var $doc = $(doc);\n $doc.bind('keydown.spectrum', onkeydown);\n $doc.bind('click.spectrum', clickout);\n $(window).bind('resize.spectrum', resize);\n replacer.addClass('sp-active');\n container.removeClass('sp-hidden');\n\n reflow();\n updateUI();\n\n colorOnShow = get();\n\n drawInitial();\n callbacks.show(colorOnShow);\n boundElement.trigger('show.spectrum', [colorOnShow]);\n }\n\n function onkeydown(e) {\n // Close on ESC\n if (e.keyCode === 27) {\n hide();\n }\n }\n\n function clickout(e) {\n // Return on right click.\n if (e.button == 2) {\n return;\n }\n\n // If a drag event was happening during the mouseup, don't hide\n // on click.\n if (isDragging) {\n return;\n }\n\n if (clickoutFiresChange) {\n updateOriginalInput(true);\n } else {\n revert();\n }\n hide();\n }\n\n function hide() {\n // Return if hiding is unnecessary\n if (!visible || flat) {\n return;\n }\n visible = false;\n\n $(doc).unbind('keydown.spectrum', onkeydown);\n $(doc).unbind('click.spectrum', clickout);\n $(window).unbind('resize.spectrum', resize);\n\n replacer.removeClass('sp-active');\n container.addClass('sp-hidden');\n\n callbacks.hide(get());\n boundElement.trigger('hide.spectrum', [get()]);\n }\n\n function revert() {\n set(colorOnShow, true);\n }\n\n function set(color, ignoreFormatChange) {\n if (tinycolor.equals(color, get())) {\n // Update UI just in case a validation error needs\n // to be cleared.\n updateUI();\n return;\n }\n\n var newColor, newHsv;\n if (!color && allowEmpty) {\n isEmpty = true;\n } else {\n isEmpty = false;\n isDefault = !color; // if no color is available an empty string will be passed. tinycolor will then set it to #000\n newColor = tinycolor(color);\n newHsv = newColor.toHsv();\n\n currentHue = (newHsv.h % 360) / 360;\n currentSaturation = newHsv.s;\n currentValue = newHsv.v;\n currentAlpha = newHsv.a;\n }\n updateUI();\n\n if (newColor && newColor.isValid() && !ignoreFormatChange) {\n currentPreferredFormat = opts.preferredFormat || newColor.getFormat();\n }\n }\n\n function get(opts) {\n opts = opts || {};\n\n if (allowEmpty && isEmpty) {\n return null;\n }\n\n return tinycolor.fromRatio(\n {\n h: currentHue,\n s: currentSaturation,\n v: currentValue,\n a: Math.round(currentAlpha * 100) / 100,\n },\n { format: opts.format || currentPreferredFormat }\n );\n }\n\n function isValid() {\n return !textInput.hasClass('sp-validation-error');\n }\n\n function move() {\n updateUI();\n\n callbacks.move(get());\n boundElement.trigger('move.spectrum', [get()]);\n }\n\n function updateUI() {\n textInput.removeClass('sp-validation-error');\n\n updateHelperLocations();\n\n // Update dragger background color (gradients take care of saturation and value).\n var flatColor = tinycolor.fromRatio({ h: currentHue, s: 1, v: 1 });\n dragger.css('background-color', flatColor.toHexString());\n\n // Get a format that alpha will be included in (hex and names ignore alpha)\n var format = currentPreferredFormat;\n if (currentAlpha < 1 && !(currentAlpha === 0 && format === 'name')) {\n if (format === 'hex' || format === 'hex3' || format === 'hex6' || format === 'name') {\n format = 'rgb';\n }\n }\n\n var realColor = get({ format: format }),\n displayColor = '';\n\n //reset background info for preview element\n previewElement.removeClass('sp-clear-display');\n previewElement.css('background-color', 'transparent');\n\n if (!realColor && allowEmpty) {\n // Update the replaced elements background with icon indicating no color selection\n previewElement.addClass('sp-clear-display');\n } else {\n var realHex = realColor.toHexString(),\n realRgb = realColor.toRgbString();\n\n // Update the replaced elements background color (with actual selected color)\n if (rgbaSupport || realColor.alpha === 1) {\n previewElement.css('background-color', realRgb);\n } else {\n previewElement.css('background-color', 'transparent');\n previewElement.css('filter', realColor.toFilter());\n }\n\n if (opts.showAlpha) {\n var rgb = realColor.toRgb();\n rgb.a = 0;\n var realAlpha = tinycolor(rgb).toRgbString();\n var gradient = 'linear-gradient(left, ' + realAlpha + ', ' + realHex + ')';\n\n if (IE) {\n alphaSliderInner.css('filter', tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex));\n } else {\n alphaSliderInner.css('background', '-webkit-' + gradient);\n alphaSliderInner.css('background', '-moz-' + gradient);\n alphaSliderInner.css('background', '-ms-' + gradient);\n // Use current syntax gradient on unprefixed property.\n alphaSliderInner.css('background', 'linear-gradient(to right, ' + realAlpha + ', ' + realHex + ')');\n }\n }\n\n displayColor = realColor.toString(format);\n }\n\n // Update the text entry input as it changes happen\n if (opts.showInput) {\n textInput.val(displayColor);\n }\n\n if (opts.showPalette) {\n drawPalette();\n }\n\n drawInitial();\n }\n\n function updateHelperLocations() {\n var s = currentSaturation;\n var v = currentValue;\n\n if (allowEmpty && isEmpty) {\n //if selected color is empty, hide the helpers\n alphaSlideHelper.hide();\n slideHelper.hide();\n dragHelper.hide();\n } else {\n //make sure helpers are visible\n alphaSlideHelper.show();\n slideHelper.show();\n dragHelper.show();\n\n // Where to show the little circle in that displays your current selected color\n var dragX = s * dragWidth;\n var dragY = dragHeight - v * dragHeight;\n dragX = Math.max(-dragHelperHeight, Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight));\n dragY = Math.max(-dragHelperHeight, Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight));\n dragHelper.css({\n top: dragY + 'px',\n left: dragX + 'px',\n });\n\n var alphaX = currentAlpha * alphaWidth;\n alphaSlideHelper.css({\n left: alphaX - alphaSlideHelperWidth / 2 + 'px',\n });\n\n // Where to show the bar that displays your current selected hue\n var slideY = currentHue * slideHeight;\n slideHelper.css({\n top: slideY - slideHelperHeight + 'px',\n });\n }\n }\n\n function updateOriginalInput(fireCallback) {\n var color = get(),\n displayColor = '',\n hasChanged = isDefault ? true : !tinycolor.equals(color, colorOnShow);\n\n if (color) {\n displayColor = color.toString(currentPreferredFormat);\n // Update the selection palette with the current color\n !visible && addColorToSelectionPalette(color);\n }\n\n if (isInput) {\n boundElement.val(displayColor);\n }\n\n if (fireCallback && hasChanged) {\n callbacks.change(color);\n boundElement.trigger('change', [color]);\n }\n }\n\n function reflow() {\n if (!visible) {\n return; // Calculations would be useless and wouldn't be reliable anyways\n }\n dragWidth = dragger.width();\n dragHeight = dragger.height();\n dragHelperHeight = dragHelper.height();\n slideWidth = slider.width();\n slideHeight = slider.height();\n slideHelperHeight = slideHelper.height();\n alphaWidth = alphaSlider.width();\n alphaSlideHelperWidth = alphaSlideHelper.width();\n\n if (!flat) {\n container.css('position', 'absolute');\n if (opts.offset) {\n container.offset(opts.offset);\n } else {\n container.offset(getOffset(container, offsetElement));\n }\n }\n\n updateHelperLocations();\n\n if (opts.showPalette) {\n drawPalette();\n }\n\n boundElement.trigger('reflow.spectrum');\n }\n\n function destroy() {\n boundElement.show();\n offsetElement.unbind('click.spectrum touchstart.spectrum');\n container.remove();\n replacer.remove();\n spectrums[spect.id] = null;\n }\n\n function option(optionName, optionValue) {\n if (optionName === undefined) {\n return $.extend({}, opts);\n }\n if (optionValue === undefined) {\n return opts[optionName];\n }\n\n opts[optionName] = optionValue;\n\n if (optionName === 'preferredFormat') {\n currentPreferredFormat = opts.preferredFormat;\n }\n applyOptions();\n }\n\n function enable() {\n disabled = false;\n boundElement.attr('disabled', false);\n offsetElement.removeClass('sp-disabled');\n }\n\n function disable() {\n hide();\n disabled = true;\n boundElement.attr('disabled', true);\n offsetElement.addClass('sp-disabled');\n }\n\n function setOffset(coord) {\n opts.offset = coord;\n reflow();\n }\n\n initialize();\n\n var spect = {\n show: show,\n hide: hide,\n toggle: toggle,\n reflow: reflow,\n option: option,\n enable: enable,\n disable: disable,\n offset: setOffset,\n set: function (c) {\n set(c);\n updateOriginalInput();\n },\n get: get,\n destroy: destroy,\n container: container,\n };\n\n spect.id = spectrums.push(spect) - 1;\n\n return spect;\n }\n\n /**\n * checkOffset - get the offset below/above and left/right element depending on screen position\n * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js\n */\n function getOffset(picker, input) {\n var extraY = 0;\n var dpWidth = picker.outerWidth();\n var dpHeight = picker.outerHeight();\n var inputHeight = input.outerHeight();\n var doc = picker[0].ownerDocument;\n var docElem = doc.documentElement;\n var cW = docElem.clientWidth;\n var cH = docElem.clientHeight;\n var scL = $(doc).scrollLeft();\n var scT = $(doc).scrollTop();\n var viewWidth = cW + scL;\n var viewHeight = cH + scT;\n var offset = input.offset();\n\n offset.top += inputHeight;\n\n offset.left -= Math.min(\n offset.left,\n offset.left + dpWidth > viewWidth && viewWidth > dpWidth ? Math.abs(offset.left + dpWidth - viewWidth) : 0\n );\n\n offset.top -= Math.min(\n offset.top,\n offset.top + dpHeight > viewHeight && viewHeight > dpHeight ? Math.abs(dpHeight + inputHeight - extraY) : extraY\n );\n\n return offset;\n }\n\n /**\n * noop - do nothing\n */\n function noop() {}\n\n /**\n * stopPropagation - makes the code only doing this a little easier to read in line\n */\n function stopPropagation(e) {\n e.stopPropagation();\n }\n\n /**\n * Create a function bound to a given object\n * Thanks to underscore.js\n */\n function bind(func, obj) {\n var slice = Array.prototype.slice;\n var args = slice.call(arguments, 2);\n return function () {\n return func.apply(obj, args.concat(slice.call(arguments)));\n };\n }\n\n /**\n * Lightweight drag helper. Handles containment within the element, so that\n * when dragging, the x is within [0,element.width] and y is within [0,element.height]\n */\n function draggable(element, onmove, onstart, onstop) {\n onmove = onmove || function () {};\n onstart = onstart || function () {};\n onstop = onstop || function () {};\n var doc = document;\n var dragging = false;\n var offset = {};\n var maxHeight = 0;\n var maxWidth = 0;\n var hasTouch = 'ontouchstart' in window;\n\n var duringDragEvents = {};\n duringDragEvents['selectstart'] = prevent;\n duringDragEvents['dragstart'] = prevent;\n duringDragEvents['touchmove mousemove'] = move;\n duringDragEvents['touchend mouseup'] = stop;\n\n function prevent(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n if (e.preventDefault) {\n e.preventDefault();\n }\n e.returnValue = false;\n }\n\n function move(e) {\n if (dragging) {\n // Mouseup happened outside of window\n if (IE && doc.documentMode < 9 && !e.button) {\n return stop();\n }\n\n var t0 = e && e.touches && e.touches[0];\n var pageX = (t0 && t0.pageX) || e.pageX;\n var pageY = (t0 && t0.pageY) || e.pageY;\n\n var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth));\n var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight));\n\n if (hasTouch) {\n // Stop scrolling in iOS\n prevent(e);\n }\n\n onmove.apply(element, [dragX, dragY, e]);\n }\n }\n\n function start(e) {\n var rightclick = e.which ? e.which == 3 : e.button == 2;\n\n if (!rightclick && !dragging) {\n if (onstart.apply(element, arguments) !== false) {\n dragging = true;\n maxHeight = $(element).height();\n maxWidth = $(element).width();\n offset = $(element).offset();\n\n $(doc).bind(duringDragEvents);\n $(doc.body).addClass('sp-dragging');\n\n move(e);\n\n prevent(e);\n }\n }\n }\n\n function stop() {\n if (dragging) {\n $(doc).unbind(duringDragEvents);\n $(doc.body).removeClass('sp-dragging');\n\n // Wait a tick before notifying observers to allow the click event\n // to fire in Chrome.\n setTimeout(function () {\n onstop.apply(element, arguments);\n }, 0);\n }\n dragging = false;\n }\n\n $(element).bind('touchstart mousedown', start);\n }\n\n function throttle(func, wait, debounce) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n var throttler = function () {\n timeout = null;\n func.apply(context, args);\n };\n if (debounce) clearTimeout(timeout);\n if (debounce || !timeout) timeout = setTimeout(throttler, wait);\n };\n }\n\n function inputTypeColorSupport() {\n return $.fn.spectrum.inputTypeColorSupport();\n }\n\n /**\n * Define a jQuery plugin\n */\n var dataID = 'spectrum.id';\n $.fn.spectrum = function (opts, extra) {\n if (typeof opts == 'string') {\n var returnValue = this;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var spect = spectrums[$(this).data(dataID)];\n if (spect) {\n var method = spect[opts];\n if (!method) {\n throw new Error(\"Spectrum: no such method: '\" + opts + \"'\");\n }\n\n if (opts == 'get') {\n returnValue = spect.get();\n } else if (opts == 'container') {\n returnValue = spect.container;\n } else if (opts == 'option') {\n returnValue = spect.option.apply(spect, args);\n } else if (opts == 'destroy') {\n spect.destroy();\n $(this).removeData(dataID);\n } else {\n method.apply(spect, args);\n }\n }\n });\n\n return returnValue;\n }\n\n // Initializing a new instance of spectrum\n return this.spectrum('destroy').each(function () {\n var options = $.extend({}, opts, $(this).data());\n var spect = spectrum(this, options);\n $(this).data(dataID, spect.id);\n });\n };\n\n $.fn.spectrum.load = true;\n $.fn.spectrum.loadOpts = {};\n $.fn.spectrum.draggable = draggable;\n $.fn.spectrum.defaults = defaultOpts;\n $.fn.spectrum.inputTypeColorSupport = function inputTypeColorSupport() {\n if (typeof inputTypeColorSupport._cachedResult === 'undefined') {\n var colorInput = $(\"\")[0]; // if color element is supported, value will default to not null\n inputTypeColorSupport._cachedResult = colorInput.type === 'color' && colorInput.value !== '';\n }\n return inputTypeColorSupport._cachedResult;\n };\n\n $.spectrum = {};\n $.spectrum.localization = {};\n $.spectrum.palettes = {};\n\n $.fn.spectrum.processNativeColorInputs = function () {\n var colorInputs = $('input[type=color]');\n if (colorInputs.length && !inputTypeColorSupport()) {\n colorInputs.spectrum({\n preferredFormat: 'hex6',\n });\n }\n };\n\n // TinyColor v1.1.2\n // https://github.com/bgrins/TinyColor\n // Brian Grinstead, MIT License\n\n //(function() {\n\n var trimLeft = /^[\\s,#]+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n math = Math,\n mathRound = math.round,\n mathMin = math.min,\n mathMax = math.max,\n mathRandom = math.random;\n\n var tinycolor = function (color, opts) {\n color = color ? color : '';\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n (this._originalInput = color),\n (this._r = rgb.r),\n (this._g = rgb.g),\n (this._b = rgb.b),\n (this._a = rgb.a),\n (this._roundA = mathRound(100 * this._a) / 100),\n (this._format = opts.format || rgb.format);\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) {\n this._r = mathRound(this._r);\n }\n if (this._g < 1) {\n this._g = mathRound(this._g);\n }\n if (this._b < 1) {\n this._b = mathRound(this._b);\n }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n };\n\n tinycolor.prototype = {\n isDark: function () {\n return this.getBrightness() < 128;\n },\n isLight: function () {\n return !this.isDark();\n },\n isValid: function () {\n return this._ok;\n },\n getOriginalInput: function () {\n return this._originalInput;\n },\n getFormat: function () {\n return this._format;\n },\n getAlpha: function () {\n return this._a;\n },\n getBrightness: function () {\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n setAlpha: function (value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100 * this._a) / 100;\n return this;\n },\n toHsv: function () {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function () {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360),\n s = mathRound(hsv.s * 100),\n v = mathRound(hsv.v * 100);\n return this._a == 1\n ? 'hsv(' + h + ', ' + s + '%, ' + v + '%)'\n : 'hsva(' + h + ', ' + s + '%, ' + v + '%, ' + this._roundA + ')';\n },\n toHsl: function () {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function () {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360),\n s = mathRound(hsl.s * 100),\n l = mathRound(hsl.l * 100);\n return this._a == 1\n ? 'hsl(' + h + ', ' + s + '%, ' + l + '%)'\n : 'hsla(' + h + ', ' + s + '%, ' + l + '%, ' + this._roundA + ')';\n },\n toHex: function (allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function (allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function () {\n return rgbaToHex(this._r, this._g, this._b, this._a);\n },\n toHex8String: function () {\n return '#' + this.toHex8();\n },\n toRgb: function () {\n return {\n r: mathRound(this._r),\n g: mathRound(this._g),\n b: mathRound(this._b),\n a: this._a,\n };\n },\n toRgbString: function () {\n return this._a == 1\n ? 'rgb(' + mathRound(this._r) + ', ' + mathRound(this._g) + ', ' + mathRound(this._b) + ')'\n : 'rgba(' +\n mathRound(this._r) +\n ', ' +\n mathRound(this._g) +\n ', ' +\n mathRound(this._b) +\n ', ' +\n this._roundA +\n ')';\n },\n toPercentageRgb: function () {\n return {\n r: mathRound(bound01(this._r, 255) * 100) + '%',\n g: mathRound(bound01(this._g, 255) * 100) + '%',\n b: mathRound(bound01(this._b, 255) * 100) + '%',\n a: this._a,\n };\n },\n toPercentageRgbString: function () {\n return this._a == 1\n ? 'rgb(' +\n mathRound(bound01(this._r, 255) * 100) +\n '%, ' +\n mathRound(bound01(this._g, 255) * 100) +\n '%, ' +\n mathRound(bound01(this._b, 255) * 100) +\n '%)'\n : 'rgba(' +\n mathRound(bound01(this._r, 255) * 100) +\n '%, ' +\n mathRound(bound01(this._g, 255) * 100) +\n '%, ' +\n mathRound(bound01(this._b, 255) * 100) +\n '%, ' +\n this._roundA +\n ')';\n },\n toName: function () {\n if (this._a === 0) {\n return 'transparent';\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function (secondColor) {\n var hex8String = '#' + rgbaToHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? 'GradientType = 1, ' : '';\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = s.toHex8String();\n }\n\n return (\n 'progid:DXImageTransform.Microsoft.gradient(' +\n gradientType +\n 'startColorstr=' +\n hex8String +\n ',endColorstr=' +\n secondHex8String +\n ')'\n );\n },\n toString: function (format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat =\n !formatSet && hasAlpha && (format === 'hex' || format === 'hex6' || format === 'hex3' || format === 'name');\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === 'name' && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === 'rgb') {\n formattedString = this.toRgbString();\n }\n if (format === 'prgb') {\n formattedString = this.toPercentageRgbString();\n }\n if (format === 'hex' || format === 'hex6') {\n formattedString = this.toHexString();\n }\n if (format === 'hex3') {\n formattedString = this.toHexString(true);\n }\n if (format === 'hex8') {\n formattedString = this.toHex8String();\n }\n if (format === 'name') {\n formattedString = this.toName();\n }\n if (format === 'hsl') {\n formattedString = this.toHslString();\n }\n if (format === 'hsv') {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n\n _applyModification: function (fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function () {\n return this._applyModification(lighten, arguments);\n },\n brighten: function () {\n return this._applyModification(brighten, arguments);\n },\n darken: function () {\n return this._applyModification(darken, arguments);\n },\n desaturate: function () {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function () {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function () {\n return this._applyModification(greyscale, arguments);\n },\n spin: function () {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function (fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function () {\n return this._applyCombination(analogous, arguments);\n },\n complement: function () {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function () {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function () {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function () {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function () {\n return this._applyCombination(tetrad, arguments);\n },\n };\n\n // If input is an object, force 1 into \"1.0\" to handle ratios properly\n // String input requires \"1.0\" as input, so 1 will be treated as 1\n tinycolor.fromRatio = function (color, opts) {\n if (typeof color == 'object') {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === 'a') {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n };\n\n // Given a string or object, convert that input to RGB\n // Possible string inputs:\n //\n // \"red\"\n // \"#f00\" or \"f00\"\n // \"#ff0000\" or \"ff0000\"\n // \"#ff000000\" or \"ff000000\"\n // \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n // \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n // \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n // \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n // \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n // \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n // \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n //\n function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var ok = false;\n var format = false;\n\n if (typeof color == 'string') {\n color = stringInputToObject(color);\n }\n\n if (typeof color == 'object') {\n if (color.hasOwnProperty('r') && color.hasOwnProperty('g') && color.hasOwnProperty('b')) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n } else if (color.hasOwnProperty('h') && color.hasOwnProperty('s') && color.hasOwnProperty('v')) {\n color.s = convertToPercentage(color.s);\n color.v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, color.s, color.v);\n ok = true;\n format = 'hsv';\n } else if (color.hasOwnProperty('h') && color.hasOwnProperty('s') && color.hasOwnProperty('l')) {\n color.s = convertToPercentage(color.s);\n color.l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, color.s, color.l);\n ok = true;\n format = 'hsl';\n }\n\n if (color.hasOwnProperty('a')) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a,\n };\n }\n\n // Conversion Functions\n // --------------------\n\n // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n // \n\n // `rgbToRgb`\n // Handle bounds / percentage checking to conform to CSS color spec\n // \n // *Assumes:* r, g, b in [0, 255] or [0, 1]\n // *Returns:* { r, g, b } in [0, 255]\n function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n }\n\n // `rgbToHsl`\n // Converts an RGB color value to HSL.\n // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n // *Returns:* { h, s, l } in [0,1]\n function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b),\n min = mathMin(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n }\n\n // `hslToRgb`\n // Converts an HSL color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n }\n\n // `rgbToHsv`\n // Converts an RGB color value to HSV\n // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n // *Returns:* { h, s, v } in [0,1]\n function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b),\n min = mathMin(r, g, b);\n var h,\n s,\n v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n }\n\n // `hsvToRgb`\n // Converts an HSV color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n }\n\n // `rgbToHex`\n // Converts an RGB color to hex\n // Assumes r, g, and b are contained in the set [0, 255]\n // Returns a 3 or 6 character hex\n function rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (\n allow3Char &&\n hex[0].charAt(0) == hex[0].charAt(1) &&\n hex[1].charAt(0) == hex[1].charAt(1) &&\n hex[2].charAt(0) == hex[2].charAt(1)\n ) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join('');\n }\n // `rgbaToHex`\n // Converts an RGBA color plus alpha transparency to hex\n // Assumes r, g, b and a are contained in the set [0, 255]\n // Returns an 8 character hex\n function rgbaToHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n ];\n\n return hex.join('');\n }\n\n // `equals`\n // Can be called with any tinycolor input\n tinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) {\n return false;\n }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n };\n tinycolor.random = function () {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom(),\n });\n };\n\n // Modification Functions\n // ----------------------\n // Thanks to less.js for some of the basics here\n // \n\n function desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n\n function saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n\n function greyscale(color) {\n return tinycolor(color).desaturate(100);\n }\n\n function lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n\n function brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * -(amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * -(amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * -(amount / 100))));\n return tinycolor(rgb);\n }\n\n function darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n\n // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n // Values outside of this range will be wrapped into this range.\n function spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (mathRound(hsl.h) + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n }\n\n // Combination Functions\n // ---------------------\n // Thanks to jQuery xColor for some of the ideas behind these\n // \n\n function complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n }\n\n function triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }),\n ];\n }\n\n function tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }),\n ];\n }\n\n function splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n ];\n }\n\n function analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n }\n\n function monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v }));\n v = (v + modification) % 1;\n }\n\n return ret;\n }\n\n // Utility Functions\n // ---------------------\n\n tinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n var w = p * 2 - 1;\n var a = rgb2.a - rgb1.a;\n\n var w1;\n\n if (w * a == -1) {\n w1 = w;\n } else {\n w1 = (w + a) / (1 + w * a);\n }\n\n w1 = (w1 + 1) / 2;\n\n var w2 = 1 - w1;\n\n var rgba = {\n r: rgb2.r * w1 + rgb1.r * w2,\n g: rgb2.g * w1 + rgb1.g * w2,\n b: rgb2.b * w1 + rgb1.b * w2,\n a: rgb2.a * p + rgb1.a * (1 - p),\n };\n\n return tinycolor(rgba);\n };\n\n // Readability Functions\n // ---------------------\n // \n\n // `readability`\n // Analyze the 2 colors and returns an object with the following properties:\n // `brightness`: difference in brightness between the two colors\n // `color`: difference in color/hue between the two colors\n tinycolor.readability = function (color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n var rgb1 = c1.toRgb();\n var rgb2 = c2.toRgb();\n var brightnessA = c1.getBrightness();\n var brightnessB = c2.getBrightness();\n var colorDiff =\n Math.max(rgb1.r, rgb2.r) -\n Math.min(rgb1.r, rgb2.r) +\n Math.max(rgb1.g, rgb2.g) -\n Math.min(rgb1.g, rgb2.g) +\n Math.max(rgb1.b, rgb2.b) -\n Math.min(rgb1.b, rgb2.b);\n\n return {\n brightness: Math.abs(brightnessA - brightnessB),\n color: colorDiff,\n };\n };\n\n // `readable`\n // http://www.w3.org/TR/AERT#color-contrast\n // Ensure that foreground and background color combinations provide sufficient contrast.\n // *Example*\n // tinycolor.isReadable(\"#000\", \"#111\") => false\n tinycolor.isReadable = function (color1, color2) {\n var readability = tinycolor.readability(color1, color2);\n return readability.brightness > 125 && readability.color > 500;\n };\n\n // `mostReadable`\n // Given a base color and a list of possible foreground or background\n // colors for that base, returns the most readable color.\n // *Example*\n // tinycolor.mostReadable(\"#123\", [\"#fff\", \"#000\"]) => \"#000\"\n tinycolor.mostReadable = function (baseColor, colorList) {\n var bestColor = null;\n var bestScore = 0;\n var bestIsReadable = false;\n for (var i = 0; i < colorList.length; i++) {\n // We normalize both around the \"acceptable\" breaking point,\n // but rank brightness constrast higher than hue.\n\n var readability = tinycolor.readability(baseColor, colorList[i]);\n var readable = readability.brightness > 125 && readability.color > 500;\n var score = 3 * (readability.brightness / 125) + readability.color / 500;\n\n if (\n (readable && !bestIsReadable) ||\n (readable && bestIsReadable && score > bestScore) ||\n (!readable && !bestIsReadable && score > bestScore)\n ) {\n bestIsReadable = readable;\n bestScore = score;\n bestColor = tinycolor(colorList[i]);\n }\n }\n return bestColor;\n };\n\n // Big List of Colors\n // ------------------\n // \n var names = (tinycolor.names = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '0ff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000',\n blanchedalmond: 'ffebcd',\n blue: '00f',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n burntsienna: 'ea7e5d',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '0ff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkgrey: 'a9a9a9',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkslategrey: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dimgrey: '696969',\n dodgerblue: '1e90ff',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'f0f',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n grey: '808080',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred: 'cd5c5c',\n indigo: '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgray: 'd3d3d3',\n lightgreen: '90ee90',\n lightgrey: 'd3d3d3',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslategray: '789',\n lightslategrey: '789',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '0f0',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'f0f',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370db',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'db7093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '663399',\n red: 'f00',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n slategrey: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n wheat: 'f5deb3',\n white: 'fff',\n whitesmoke: 'f5f5f5',\n yellow: 'ff0',\n yellowgreen: '9acd32',\n });\n\n // Make it easy to access colors via `hexNames[hex]`\n var hexNames = (tinycolor.hexNames = flip(names));\n\n // Utilities\n // ---------\n\n // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\n function flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n }\n\n // Return a valid alpha value [0,1] with all invalid values being set to 1\n function boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n }\n\n // Take input from [0, n] and return it as [0, 1]\n function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n }\n\n // Force a number between 0 and 1\n function clamp01(val) {\n return mathMin(1, mathMax(0, val));\n }\n\n // Parse a base-16 hex value into a base-10 integer\n function parseIntFromHex(val) {\n return parseInt(val, 16);\n }\n\n // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n // \n function isOnePointZero(n) {\n return typeof n == 'string' && n.indexOf('.') != -1 && parseFloat(n) === 1;\n }\n\n // Check to see if string passed in is a percentage\n function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') != -1;\n }\n\n // Force a hex value to have 2 characters\n function pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n }\n\n // Replace a decimal with it's percentage value\n function convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + '%';\n }\n\n return n;\n }\n\n // Converts a decimal to a hex value\n function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n }\n // Converts a hex value to a decimal\n function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n }\n\n var matchers = (function () {\n // \n var CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n\n // \n var CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = '(?:' + CSS_NUMBER + ')|(?:' + CSS_INTEGER + ')';\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = '[\\\\s|\\\\(]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')\\\\s*\\\\)?';\n var PERMISSIVE_MATCH4 =\n '[\\\\s|\\\\(]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')\\\\s*\\\\)?';\n\n return {\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n };\n })();\n\n // `stringInputToObject`\n // Permissive string parsing. Take in a number of formats, and output an object\n // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n function stringInputToObject(color) {\n color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n a: convertHexToDecimal(match[1]),\n r: parseIntFromHex(match[2]),\n g: parseIntFromHex(match[3]),\n b: parseIntFromHex(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n\n return false;\n }\n\n window.tinycolor = tinycolor;\n //})();\n\n $(function () {\n if ($.fn.spectrum.load) {\n $.fn.spectrum.processNativeColorInputs();\n }\n });\n}\n","import Backbone from 'backbone';\nimport { bindAll, isUndefined, indexOf } from 'underscore';\nimport { on, off } from '../../utils/mixins';\nimport Input from './Input';\n\nconst $ = Backbone.$;\n\nexport default class InputNumber extends Input {\n template() {\n const ppfx = this.ppfx;\n return `\n \n \n
\n
\n
\n
\n `;\n }\n\n inputClass() {\n const ppfx = this.ppfx;\n return this.opts.contClass || `${ppfx}field ${ppfx}field-integer`;\n }\n\n constructor(opts = {}) {\n super(opts);\n bindAll(this, 'moveIncrement', 'upIncrement');\n this.doc = document;\n this.listenTo(this.model, 'change:unit', this.handleModelChange);\n }\n\n /**\n * Set value to the model\n * @param {string} value\n * @param {Object} opts\n */\n setValue(value, opts) {\n var opt = opts || {};\n var valid = this.validateInputValue(value, { deepCheck: 1 });\n var validObj = { value: valid.value };\n\n // If found some unit value\n if (valid.unit || valid.force) {\n validObj.unit = valid.unit;\n }\n\n this.model.set(validObj, opt);\n\n // Generally I get silent when I need to reflect data to view without\n // reupdating the target\n if (opt.silent) {\n this.handleModelChange();\n }\n }\n\n /**\n * Handled when the view is changed\n */\n handleChange(e) {\n e.stopPropagation();\n this.setValue(this.getInputEl().value);\n this.elementUpdated();\n }\n\n /**\n * Handled when the view is changed\n */\n handleUnitChange(e) {\n e.stopPropagation();\n var value = this.getUnitEl().value;\n this.model.set('unit', value);\n this.elementUpdated();\n }\n\n /**\n * Handled when user uses keyboard\n */\n handleKeyDown(e) {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n this.upArrowClick();\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n this.downArrowClick();\n }\n }\n\n /**\n * Fired when the element of the property is updated\n */\n elementUpdated() {\n this.model.trigger('el:change');\n }\n\n /**\n * Updates the view when the model is changed\n * */\n handleModelChange() {\n const model = this.model;\n this.getInputEl().value = model.get('value');\n const unitEl = this.getUnitEl();\n unitEl && (unitEl.value = model.get('unit') || '');\n }\n\n /**\n * Get the unit element\n * @return {HTMLElement}\n */\n getUnitEl() {\n if (!this.unitEl) {\n const model = this.model;\n const units = model.get('units') || [];\n\n if (units.length) {\n const options = [''];\n\n units.forEach(unit => {\n const selected = unit == model.get('unit') ? 'selected' : '';\n options.push(``);\n });\n\n const temp = document.createElement('div');\n temp.innerHTML = ``;\n this.unitEl = temp.firstChild;\n }\n }\n\n return this.unitEl;\n }\n\n /**\n * Invoked when the up arrow is clicked\n * */\n upArrowClick() {\n const { model } = this;\n const step = model.get('step');\n let value = parseFloat(model.get('value'));\n this.setValue(this.normalizeValue(value + step));\n this.elementUpdated();\n }\n\n /**\n * Invoked when the down arrow is clicked\n * */\n downArrowClick() {\n const { model } = this;\n const step = model.get('step');\n const value = parseFloat(model.get('value'));\n this.setValue(this.normalizeValue(value - step));\n this.elementUpdated();\n }\n\n /**\n * Change easily integer input value with click&drag method\n * @param Event\n *\n * @return void\n * */\n downIncrement(e) {\n e.preventDefault();\n this.moved = 0;\n var value = this.model.get('value') || 0;\n value = this.normalizeValue(value);\n this.current = { y: e.pageY, val: value };\n on(this.doc, 'mousemove', this.moveIncrement);\n on(this.doc, 'mouseup', this.upIncrement);\n }\n\n /** While the increment is clicked, moving the mouse will update input value\n * @param Object\n *\n * @return bool\n * */\n moveIncrement(ev) {\n this.moved = 1;\n const model = this.model;\n const step = model.get('step');\n const data = this.current;\n var pos = this.normalizeValue(data.val + (data.y - ev.pageY) * step);\n const { value, unit } = this.validateInputValue(pos);\n this.prValue = value;\n model.set({ value, unit }, { avoidStore: 1 });\n return false;\n }\n\n /**\n * Stop moveIncrement method\n * */\n upIncrement() {\n const model = this.model;\n const step = model.get('step');\n off(this.doc, 'mouseup', this.upIncrement);\n off(this.doc, 'mousemove', this.moveIncrement);\n\n if (this.prValue && this.moved) {\n var value = this.prValue - step;\n model.set('value', value, { avoidStore: 1 }).set('value', value + step);\n this.elementUpdated();\n }\n }\n\n normalizeValue(value, defValue = 0) {\n const model = this.model;\n const step = model.get('step');\n let stepDecimals = 0;\n\n if (isNaN(value)) {\n return defValue;\n }\n\n value = parseFloat(value);\n\n if (Math.floor(value) !== value) {\n const side = step.toString().split('.')[1];\n stepDecimals = side ? side.length : 0;\n }\n\n return stepDecimals ? parseFloat(value.toFixed(stepDecimals)) : value;\n }\n\n /**\n * Validate input value\n * @param {String} value Raw value\n * @param {Object} opts Options\n * @return {Object} Validated string\n */\n validateInputValue(value, opts = {}) {\n var force = 0;\n var opt = opts || {};\n var model = this.model;\n const defValue = ''; //model.get('defaults');\n var val = !isUndefined(value) ? value : defValue;\n var units = opts.units || model.get('units') || [];\n var unit = model.get('unit') || (units.length && units[0]) || '';\n var max = !isUndefined(opts.max) ? opts.max : model.get('max');\n var min = !isUndefined(opts.min) ? opts.min : model.get('min');\n var limitlessMax = !!model.get('limitlessMax');\n var limitlessMin = !!model.get('limitlessMin');\n\n if (opt.deepCheck) {\n var fixed = model.get('fixedValues') || [];\n\n if (val === '') unit = '';\n\n if (val) {\n // If the value is one of the fixed values I leave it as it is\n var regFixed = new RegExp('^' + fixed.join('|'), 'g');\n if (fixed.length && regFixed.test(val)) {\n val = val.match(regFixed)[0];\n unit = '';\n force = 1;\n } else {\n var valCopy = val + '';\n val += ''; // Make it suitable for replace\n val = parseFloat(val.replace(',', '.'));\n val = !isNaN(val) ? val : defValue;\n var uN = valCopy.replace(val, '');\n // Check if exists as unit\n if (indexOf(units, uN) >= 0) unit = uN;\n }\n }\n }\n\n if (!limitlessMax && !isUndefined(max) && max !== '') val = val > max ? max : val;\n if (!limitlessMin && !isUndefined(min) && min !== '') val = val < min ? min : val;\n\n return {\n force,\n value: val,\n unit,\n };\n }\n\n render() {\n Input.prototype.render.call(this);\n this.unitEl = null;\n const unit = this.getUnitEl();\n unit && this.$el.find(`.${this.ppfx}field-units`).get(0).appendChild(unit);\n return this;\n }\n}\n\nInputNumber.prototype.events = {\n 'change input': 'handleChange',\n 'change select': 'handleUnitChange',\n 'click [data-arrow-up]': 'upArrowClick',\n 'click [data-arrow-down]': 'downArrowClick',\n 'mousedown [data-arrows]': 'downIncrement',\n keydown: 'handleKeyDown',\n};\n","import { includes } from 'underscore';\nimport Backbone from 'backbone';\n\nexport default class DomainViews extends Backbone.View {\n // Defines the View per type\n itemsView = '';\n\n itemType = 'type';\n\n reuseView = false;\n\n constructor(opts = {}, config, autoAdd = false) {\n super(opts);\n this.config = config || opts.config || {};\n autoAdd && this.listenTo(this.collection, 'add', this.addTo);\n this.items = [];\n }\n\n /**\n * Add new model to the collection\n * @param {Model} model\n * @private\n * */\n addTo(model) {\n this.add(model);\n }\n\n itemViewNotFound(type) {\n const { config, ns } = this;\n const { em } = config;\n const warn = `${ns ? `[${ns}]: ` : ''}'${type}' type not found`;\n em && em.logWarning(warn);\n }\n\n /**\n * Render new model inside the view\n * @param {Model} model\n * @param {Object} fragment Fragment collection\n * @private\n * */\n add(model, fragment) {\n const { config, reuseView, items, itemsView = {} } = this;\n const inputTypes = [\n 'button',\n 'checkbox',\n 'color',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n ];\n var frag = fragment || null;\n var itemView = this.itemView;\n var typeField = model.get(this.itemType);\n let view;\n\n if (itemsView[typeField]) {\n itemView = itemsView[typeField];\n } else if (typeField && !itemsView[typeField] && !includes(inputTypes, typeField)) {\n this.itemViewNotFound(typeField);\n }\n\n if (model.view && reuseView) {\n view = model.view;\n } else {\n view = new itemView({ model, config }, config);\n }\n\n items && items.push(view);\n const rendered = view.render().el;\n\n if (frag) frag.appendChild(rendered);\n else this.$el.append(rendered);\n }\n\n render() {\n var frag = document.createDocumentFragment();\n this.clearItems();\n this.$el.empty();\n\n if (this.collection.length)\n this.collection.each(function (model) {\n this.add(model, frag);\n }, this);\n\n this.$el.append(frag);\n this.onRender();\n return this;\n }\n\n onRender() {}\n\n onRemoveBefore() {}\n onRemove() {}\n\n remove(opts = {}) {\n const { items } = this;\n this.onRemoveBefore(items, opts);\n this.clearItems();\n Backbone.View.prototype.remove.apply(this, arguments);\n this.onRemove(items, opts);\n }\n\n clearItems() {\n const items = this.items || [];\n // TODO Traits do not update the target anymore\n // items.forEach(item => item.remove());\n // this.items = [];\n }\n}\n\n// Default view\nDomainViews.prototype.itemView = '';\n","const traitInputAttr = { placeholder: 'eg. Text here' };\n\nexport default {\n assetManager: {\n addButton: 'Add image',\n inputPlh: 'http://path/to/the/image.jpg',\n modalTitle: 'Select Image',\n uploadTitle: 'Drop files here or click to upload',\n },\n // Here just as a reference, GrapesJS core doesn't contain any block,\n // so this should be omitted from other local files\n blockManager: {\n labels: {\n // 'block-id': 'Block Label',\n },\n categories: {\n // 'category-id': 'Category Label',\n },\n },\n domComponents: {\n names: {\n '': 'Box',\n wrapper: 'Body',\n text: 'Text',\n comment: 'Comment',\n image: 'Image',\n video: 'Video',\n label: 'Label',\n link: 'Link',\n map: 'Map',\n tfoot: 'Table foot',\n tbody: 'Table body',\n thead: 'Table head',\n table: 'Table',\n row: 'Table row',\n cell: 'Table cell',\n },\n },\n deviceManager: {\n device: 'Device',\n devices: {\n desktop: 'Desktop',\n tablet: 'Tablet',\n mobileLandscape: 'Mobile Landscape',\n mobilePortrait: 'Mobile Portrait',\n },\n },\n panels: {\n buttons: {\n titles: {\n preview: 'Preview',\n fullscreen: 'Fullscreen',\n 'sw-visibility': 'View components',\n 'export-template': 'View code',\n 'open-sm': 'Open Style Manager',\n 'open-tm': 'Settings',\n 'open-layers': 'Open Layer Manager',\n 'open-blocks': 'Open Blocks',\n },\n },\n },\n selectorManager: {\n label: 'Classes',\n selected: 'Selected',\n emptyState: '- State -',\n states: {\n hover: 'Hover',\n active: 'Click',\n 'nth-of-type(2n)': 'Even/Odd',\n },\n },\n styleManager: {\n empty: 'Select an element before using Style Manager',\n layer: 'Layer',\n fileButton: 'Images',\n sectors: {\n general: 'General',\n layout: 'Layout',\n typography: 'Typography',\n decorations: 'Decorations',\n extra: 'Extra',\n flex: 'Flex',\n dimension: 'Dimension',\n },\n // Default names for sub properties in Composite and Stack types.\n // Other labels are generated directly from their property names (eg. 'font-size' will be 'Font size').\n properties: {\n 'text-shadow-h': 'X',\n 'text-shadow-v': 'Y',\n 'text-shadow-blur': 'Blur',\n 'text-shadow-color': 'Color',\n 'box-shadow-h': 'X',\n 'box-shadow-v': 'Y',\n 'box-shadow-blur': 'Blur',\n 'box-shadow-spread': 'Spread',\n 'box-shadow-color': 'Color',\n 'box-shadow-type': 'Type',\n 'margin-top-sub': 'Top',\n 'margin-right-sub': 'Right',\n 'margin-bottom-sub': 'Bottom',\n 'margin-left-sub': 'Left',\n 'padding-top-sub': 'Top',\n 'padding-right-sub': 'Right',\n 'padding-bottom-sub': 'Bottom',\n 'padding-left-sub': 'Left',\n 'border-width-sub': 'Width',\n 'border-style-sub': 'Style',\n 'border-color-sub': 'Color',\n 'border-top-left-radius-sub': 'Top Left',\n 'border-top-right-radius-sub': 'Top Right',\n 'border-bottom-right-radius-sub': 'Bottom Right',\n 'border-bottom-left-radius-sub': 'Bottom Left',\n 'transform-rotate-x': 'Rotate X',\n 'transform-rotate-y': 'Rotate Y',\n 'transform-rotate-z': 'Rotate Z',\n 'transform-scale-x': 'Scale X',\n 'transform-scale-y': 'Scale Y',\n 'transform-scale-z': 'Scale Z',\n 'transition-property-sub': 'Property',\n 'transition-duration-sub': 'Duration',\n 'transition-timing-function-sub': 'Timing',\n 'background-image-sub': 'Image',\n 'background-repeat-sub': 'Repeat',\n 'background-position-sub': 'Position',\n 'background-attachment-sub': 'Attachment',\n 'background-size-sub': 'Size',\n },\n // Translate options in style properties\n // options: {\n // float: { // Id of the property\n // ...\n // left: 'Left', // {option id}: {Option label}\n // }\n // }\n },\n traitManager: {\n empty: 'Select an element before using Trait Manager',\n label: 'Component settings',\n traits: {\n // The core library generates the name by their `name` property\n labels: {\n // id: 'Id',\n // alt: 'Alt',\n // title: 'Title',\n // href: 'Href',\n },\n // In a simple trait, like text input, these are used on input attributes\n attributes: {\n id: traitInputAttr,\n alt: traitInputAttr,\n title: traitInputAttr,\n href: { placeholder: 'eg. https://google.com' },\n },\n // In a trait like select, these are used to translate option names\n options: {\n target: {\n false: 'This window',\n _blank: 'New window',\n },\n },\n },\n },\n storageManager: {\n recover: 'Do you want to recover unsaved changes?',\n },\n};\n","import en from './locale/en';\n\nexport default {\n // Locale value\n locale: 'en',\n\n // Fallback locale\n localeFallback: 'en',\n\n // Detect locale by checking browser language\n detectLocale: true,\n\n // Show warnings when some of the i18n resources are missing\n debug: false,\n\n // Messages to translate\n messages: {\n en,\n },\n\n // Additional messages. This allows extending the default `messages` set directly from the configuration.\n messagesAdd: null,\n};\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/i18n/config.js)\n * ```js\n * const editor = grapesjs.init({\n * i18n: {\n * locale: 'en',\n * localeFallback: 'en',\n * messages: {\n * it: { hello: 'Ciao', ... },\n * ...\n * }\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const i18n = editor.I18n;\n * ```\n *\n * ### Events\n * * `i18n:add` - New set of messages is added\n * * `i18n:update` - The set of messages is updated\n * * `i18n:locale` - Locale changed\n *\n * @module I18n\n */\nimport { isUndefined, isString } from 'underscore';\nimport { hasWin, deepMerge } from '../utils/mixins';\nimport defaults from './config';\n\nexport default class I18nModule {\n name = 'I18n';\n\n //config;\n\n /**\n * Initialize module\n * @param {Object} config Configurations\n * @private\n */\n init(opts = {}) {\n this.config = {\n ...defaults,\n ...opts,\n messages: {\n ...defaults.messages,\n ...(opts.messages || {}),\n },\n };\n const add = this.config.messagesAdd;\n add && this.addMessages(add);\n\n if (this.config.detectLocale) {\n this.config.locale = this._localLang();\n }\n\n this.em = opts.em;\n return this;\n }\n\n /**\n * Get module configurations\n * @returns {Object} Configuration object\n */\n getConfig() {\n return this.config;\n }\n\n /**\n * Update current locale\n * @param {String} locale Locale value\n * @returns {this}\n * @example\n * i18n.setLocale('it');\n */\n setLocale(locale) {\n const { em, config } = this;\n const evObj = { value: locale, valuePrev: config.locale };\n em && em.trigger('i18n:locale', evObj);\n config.locale = locale;\n return this;\n }\n\n /**\n * Get current locale\n * @returns {String} Current locale value\n */\n getLocale() {\n return this.config.locale;\n }\n\n /**\n * Get all messages\n * @param {String} [lang] Specify the language of messages to return\n * @param {Object} [opts] Options\n * @param {Boolean} [opts.debug] Show warnings in case of missing language\n * @returns {Object}\n * @example\n * i18n.getMessages();\n * // -> { en: { hello: '...' }, ... }\n * i18n.getMessages('en');\n * // -> { hello: '...' }\n */\n getMessages(lang, opts = {}) {\n const { messages } = this.config;\n lang && !messages[lang] && this._debug(`'${lang}' i18n lang not found`, opts);\n return lang ? messages[lang] : messages;\n }\n\n /**\n * Set new set of messages\n * @param {Object} msg Set of messages\n * @returns {this}\n * @example\n * i18n.getMessages();\n * // -> { en: { msg1: 'Msg 1', msg2: 'Msg 2', } }\n * i18n.setMessages({ en: { msg2: 'Msg 2 up', msg3: 'Msg 3', } });\n * // Set replaced\n * i18n.getMessages();\n * // -> { en: { msg2: 'Msg 2 up', msg3: 'Msg 3', } }\n */\n setMessages(msg) {\n const { em, config } = this;\n config.messages = msg;\n em && em.trigger('i18n:update', msg);\n return this;\n }\n\n /**\n * Update messages\n * @param {Object} msg Set of messages to add\n * @returns {this}\n * @example\n * i18n.getMessages();\n * // -> { en: { msg1: 'Msg 1', msg2: 'Msg 2', } }\n * i18n.addMessages({ en: { msg2: 'Msg 2 up', msg3: 'Msg 3', } });\n * // Set updated\n * i18n.getMessages();\n * // -> { en: { msg1: 'Msg 1', msg2: 'Msg 2 up', msg3: 'Msg 3', } }\n */\n addMessages(msg) {\n const { em } = this;\n const { messages } = this.config;\n em && em.trigger('i18n:add', msg);\n this.setMessages(deepMerge(messages, msg));\n\n return this;\n }\n\n /**\n * Translate the locale message\n * @param {String} key Label to translate\n * @param {Object} [opts] Options for the translation\n * @param {Object} [opts.params] Params for the translation\n * @param {Boolean} [opts.debug] Show warnings in case of missing resources\n * @returns {String}\n * @example\n * obj.setMessages({\n * en: { msg: 'Msg', msg2: 'Msg {test}'},\n * it: { msg2: 'Msg {test} it'},\n * });\n * obj.t('msg');\n * // -> outputs `Msg`\n * obj.t('msg2', { params: { test: 'hello' } }); // use params\n * // -> outputs `Msg hello`\n * obj.t('msg2', { l: 'it', params: { test: 'hello' } }); // custom local\n * // -> outputs `Msg hello it`\n */\n t(key, opts = {}) {\n const { config } = this;\n const param = opts.params || {};\n const locale = opts.l || this.getLocale();\n const localeFlb = opts.lFlb || config.localeFallback;\n let result = this._getMsg(key, locale, opts);\n\n // Try with fallback\n if (!result) result = this._getMsg(key, localeFlb, opts);\n\n !result && this._debug(`'${key}' i18n key not found in '${locale}' lang`, opts);\n result = result && isString(result) ? this._addParams(result, param) : result;\n\n return result;\n }\n\n _localLang() {\n const nav = (hasWin() && window.navigator) || {};\n const lang = nav.language || nav.userLanguage;\n return lang ? lang.split('-')[0] : 'en';\n }\n\n _addParams(str, params) {\n const reg = new RegExp('{([\\\\w\\\\d-]*)}', 'g');\n return str.replace(reg, (m, val) => params[val] || '').trim();\n }\n\n _getMsg(key, locale, opts = {}) {\n const msgSet = this.getMessages(locale, opts);\n\n // Lang set is missing\n if (!msgSet) return;\n\n let result = msgSet[key];\n\n // Check for nested getter\n if (!result && key.indexOf('.') > 0) {\n result = key.split('.').reduce((lang, key) => {\n if (isUndefined(lang)) return;\n return lang[key];\n }, msgSet);\n }\n\n return result;\n }\n\n _debug(str, opts = {}) {\n const { em, config } = this;\n (opts.debug || config.debug) && em && em.logWarning(str);\n }\n\n destroy() {\n this.config = {};\n this.em = {};\n }\n}\n","// The initial version of this library was borrowed from https://github.com/madrobby/keymaster\n// and adapted to the GrapesJS's need\n\nvar k,\n _handlers = {},\n _mods = {\n 16: false,\n 18: false,\n 17: false,\n 91: false,\n },\n _scope = 'all',\n // modifier keys\n _MODIFIERS = {\n '⇧': 16,\n shift: 16,\n '⌥': 18,\n alt: 18,\n option: 18,\n '⌃': 17,\n ctrl: 17,\n control: 17,\n '⌘': 91,\n command: 91,\n },\n // special keys\n _MAP = {\n backspace: 8,\n tab: 9,\n clear: 12,\n enter: 13,\n return: 13,\n esc: 27,\n escape: 27,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n del: 46,\n delete: 46,\n home: 36,\n end: 35,\n pageup: 33,\n pagedown: 34,\n ',': 188,\n '.': 190,\n '/': 191,\n '`': 192,\n '-': 189,\n '=': 187,\n ';': 186,\n \"'\": 222,\n '[': 219,\n ']': 221,\n '\\\\': 220,\n },\n code = function (x) {\n return _MAP[x] || x.toUpperCase().charCodeAt(0);\n },\n _downKeys = [];\n\nfor (k = 1; k < 20; k++) _MAP['f' + k] = 111 + k;\n\n// IE doesn't support Array#indexOf, so have a simple replacement\nfunction index(array, item) {\n var i = array.length;\n while (i--) if (array[i] === item) return i;\n return -1;\n}\n\n// for comparing mods before unassignment\nfunction compareArray(a1, a2) {\n if (a1.length != a2.length) return false;\n for (var i = 0; i < a1.length; i++) {\n if (a1[i] !== a2[i]) return false;\n }\n return true;\n}\n\nvar modifierMap = {\n 16: 'shiftKey',\n 18: 'altKey',\n 17: 'ctrlKey',\n 91: 'metaKey',\n};\n\nfunction updateModifierKey(event) {\n for (k in _mods) _mods[k] = event[modifierMap[k]];\n}\n\n// handle keydown event\nfunction dispatch(event) {\n var key, handler, k, i, modifiersMatch, scope;\n key = event.keyCode;\n\n if (index(_downKeys, key) == -1) {\n _downKeys.push(key);\n }\n\n // if a modifier key, set the key. property to true and return\n if (key == 93 || key == 224) key = 91; // right command on webkit, command on Gecko\n if (key in _mods) {\n _mods[key] = true;\n // 'assignKey' from inside this closure is exported to window.key\n for (k in _MODIFIERS) if (_MODIFIERS[k] == key) assignKey[k] = true;\n return;\n }\n updateModifierKey(event);\n\n // see if we need to ignore the keypress (filter() can can be overridden)\n // by default ignore key presses if a select, textarea, or input is focused\n if (!assignKey.filter.call(this, event)) return;\n\n // abort if no potentially matching shortcuts found\n if (!(key in _handlers)) return;\n\n scope = getScope();\n\n // for each potential shortcut\n for (i = 0; i < _handlers[key].length; i++) {\n handler = _handlers[key][i];\n\n // see if it's in the current scope\n if (handler.scope == scope || handler.scope == 'all') {\n // check if modifiers match if any\n modifiersMatch = handler.mods.length > 0;\n for (k in _mods)\n if ((!_mods[k] && index(handler.mods, +k) > -1) || (_mods[k] && index(handler.mods, +k) == -1))\n modifiersMatch = false;\n // call the handler and stop the event if neccessary\n if ((handler.mods.length == 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91]) || modifiersMatch) {\n if (handler.method(event, handler) === false) {\n if (event.preventDefault) event.preventDefault();\n else event.returnValue = false;\n if (event.stopPropagation) event.stopPropagation();\n if (event.cancelBubble) event.cancelBubble = true;\n }\n }\n }\n }\n}\n\n// unset modifier keys on keyup\nfunction clearModifier(event) {\n var key = event.keyCode,\n k,\n i = index(_downKeys, key);\n\n // remove key from _downKeys\n if (i >= 0) {\n _downKeys.splice(i, 1);\n }\n\n if (key == 93 || key == 224) key = 91;\n if (key in _mods) {\n _mods[key] = false;\n for (k in _MODIFIERS) if (_MODIFIERS[k] == key) assignKey[k] = false;\n }\n}\n\nfunction resetModifiers() {\n for (k in _mods) _mods[k] = false;\n for (k in _MODIFIERS) assignKey[k] = false;\n}\n\n// parse and assign shortcut\nfunction assignKey(key, scope, method) {\n var keys, mods;\n keys = getKeys(key);\n if (method === undefined) {\n method = scope;\n scope = 'all';\n }\n\n // for each shortcut\n for (var i = 0; i < keys.length; i++) {\n // set modifier keys if any\n mods = [];\n key = keys[i].split('+');\n if (key.length > 1) {\n mods = getMods(key);\n key = [key[key.length - 1]];\n }\n // convert to keycode and...\n key = key[0];\n key = code(key);\n // ...store handler\n if (!(key in _handlers)) _handlers[key] = [];\n _handlers[key].push({\n shortcut: keys[i],\n scope: scope,\n method: method,\n key: keys[i],\n mods: mods,\n });\n }\n}\n\n// unbind all handlers for given key in current scope\nfunction unbindKey(key, scope) {\n var multipleKeys,\n keys,\n mods = [],\n i,\n j,\n obj;\n\n multipleKeys = getKeys(key);\n\n for (j = 0; j < multipleKeys.length; j++) {\n keys = multipleKeys[j].split('+');\n\n if (keys.length > 1) {\n mods = getMods(keys);\n }\n\n key = keys[keys.length - 1];\n key = code(key);\n\n if (scope === undefined) {\n scope = getScope();\n }\n if (!_handlers[key]) {\n return;\n }\n for (i = 0; i < _handlers[key].length; i++) {\n obj = _handlers[key][i];\n // only clear handlers if correct scope and mods match\n if (obj.scope === scope && compareArray(obj.mods, mods)) {\n _handlers[key][i] = {};\n }\n }\n }\n}\n\n// Returns true if the key with code 'keyCode' is currently down\n// Converts strings into key codes.\nfunction isPressed(keyCode) {\n if (typeof keyCode == 'string') {\n keyCode = code(keyCode);\n }\n return index(_downKeys, keyCode) != -1;\n}\n\nfunction getPressedKeyCodes() {\n return _downKeys.slice(0);\n}\n\nfunction filter(event) {\n var tagName = (event.target || event.srcElement).tagName;\n // ignore keypressed in any elements that support keyboard data input\n return !(tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA');\n}\n\n// initialize key. to false\nfor (k in _MODIFIERS) assignKey[k] = false;\n\n// set current scope (default 'all')\nfunction setScope(scope) {\n _scope = scope || 'all';\n}\n\nfunction getScope() {\n return _scope || 'all';\n}\n\n// delete all handlers for a given scope\nfunction deleteScope(scope) {\n var key, handlers, i;\n\n for (key in _handlers) {\n handlers = _handlers[key];\n for (i = 0; i < handlers.length; ) {\n if (handlers[i].scope === scope) handlers.splice(i, 1);\n else i++;\n }\n }\n}\n\n// abstract key logic for assign and unassign\nfunction getKeys(key) {\n var keys;\n key = key.replace(/\\s/g, '');\n keys = key.split(',');\n if (keys[keys.length - 1] == '') {\n keys[keys.length - 2] += ',';\n }\n return keys;\n}\n\n// abstract mods logic for assign and unassign\nfunction getMods(key) {\n var mods = key.slice(0, key.length - 1);\n for (var mi = 0; mi < mods.length; mi++) mods[mi] = _MODIFIERS[mods[mi]];\n return mods;\n}\n\n// cross-browser events\nfunction addEvent(object, event, method) {\n if (object.addEventListener) object.addEventListener(event, method, false);\n else if (object.attachEvent)\n object.attachEvent('on' + event, function () {\n method(window.event);\n });\n}\n\n// set window.key and window.key.set/get/deleteScope, and the default filter\nassignKey.setScope = setScope;\nassignKey.getScope = getScope;\nassignKey.deleteScope = deleteScope;\nassignKey.filter = filter;\nassignKey.isPressed = isPressed;\nassignKey.getPressedKeyCodes = getPressedKeyCodes;\nassignKey.unbind = unbindKey;\nassignKey.handlers = _handlers;\nassignKey.init = win => {\n // set the handlers globally on document\n // Passing _scope to a callback to ensure it remains the same by execution. Fixes #48\n addEvent(win.document, 'keydown', function (event) {\n dispatch(event);\n });\n addEvent(win.document, 'keyup', clearModifier);\n addEvent(win, 'focus', resetModifiers);\n};\n\nexport default assignKey;\n","/**\n * You can customize the initial state of the module from the editor initialization\n * ```js\n * const editor = grapesjs.init({\n * keymaps: {\n * // Object of keymaps\n * defaults: {\n * 'your-namespace:keymap-name' {\n * keys: '⌘+z, ctrl+z',\n * handler: 'some-command-id'\n * },\n * ...\n * }\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API and listen to its events. Before using these methods, you should get the module from the instance.\n *\n * ```js\n * // Listen to events\n * editor.on('keymap:add', () => { ... });\n *\n * // Use the API\n * const keymaps = editor.Keymaps;\n * keymaps.add(...);\n * ```\n *\n * ## Available Events\n * * `keymap:add` - New keymap added. The new keyamp object is passed as an argument\n * * `keymap:remove` - Keymap removed. The removed keyamp object is passed as an argument\n * * `keymap:emit` - Some keymap emitted, in arguments you get keymapId, shortcutUsed, Event\n * * `keymap:emit:{keymapId}` - `keymapId` emitted, in arguments you get keymapId, shortcutUsed, Event\n *\n * ## Methods\n * * [getConfig](#getconfig)\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getAll)\n * * [remove](#remove)\n * * [removeAll](#removeall)\n *\n * @module Keymaps\n */\n\nimport { isString } from 'underscore';\nimport { hasWin } from '../utils/mixins';\nimport keymaster from '../utils/keymaster';\n\nhasWin() && keymaster.init(window);\n\nexport default () => {\n const configDef = {\n defaults: {\n 'core:undo': {\n keys: '⌘+z, ctrl+z',\n handler: 'core:undo',\n },\n 'core:redo': {\n keys: '⌘+shift+z, ctrl+shift+z',\n handler: 'core:redo',\n },\n 'core:copy': {\n keys: '⌘+c, ctrl+c',\n handler: 'core:copy',\n },\n 'core:paste': {\n keys: '⌘+v, ctrl+v',\n handler: 'core:paste',\n },\n 'core:component-next': {\n keys: 's',\n handler: 'core:component-next',\n },\n 'core:component-prev': {\n keys: 'w',\n handler: 'core:component-prev',\n },\n 'core:component-enter': {\n keys: 'd',\n handler: 'core:component-enter',\n },\n 'core:component-exit': {\n keys: 'a',\n handler: 'core:component-exit',\n },\n 'core:component-delete': {\n keys: 'backspace, delete',\n handler: 'core:component-delete',\n opts: { prevent: 1 },\n },\n },\n };\n\n return {\n keymaster,\n\n name: 'Keymaps',\n\n /**\n * Get module configurations\n * @return {Object} Configuration object\n */\n getConfig() {\n return this.config;\n },\n\n /**\n * Initialize module\n * @param {Object} config Configurations\n * @private\n */\n init(opts = {}) {\n this.config = { ...configDef, ...opts };\n this.em = this.config.em;\n this.keymaps = {};\n return this;\n },\n\n onLoad() {\n const defKeys = this.config.defaults;\n\n for (let id in defKeys) {\n const value = defKeys[id];\n this.add(id, value.keys, value.handler, value.opts || {});\n }\n },\n\n /**\n * Add new keymap\n * @param {string} id Keymap id\n * @param {string} keys Keymap keys, eg. `ctrl+a`, `⌘+z, ctrl+z`\n * @param {Function|string} handler Keymap handler, might be a function\n * @param {Object} [opts={}] Options\n * @return {Object} Added keymap\n * or just a command id as a string\n * @example\n * // 'ns' is just a custom namespace\n * keymaps.add('ns:my-keymap', '⌘+j, ⌘+u, ctrl+j, alt+u', editor => {\n * console.log('do stuff');\n * });\n * // or\n * keymaps.add('ns:my-keymap', '⌘+s, ctrl+s', 'some-gjs-command');\n *\n * // listen to events\n * editor.on('keymap:emit', (id, shortcut, e) => {\n * // ...\n * })\n */\n add(id, keys, handler, opts = {}) {\n const { em } = this;\n const cmd = em.get('Commands');\n const editor = em.getEditor();\n const canvas = em.get('Canvas');\n const keymap = { id, keys, handler };\n const pk = this.keymaps[id];\n pk && this.remove(id);\n this.keymaps[id] = keymap;\n keymaster(keys, (e, h) => {\n // It's safer putting handlers resolution inside the callback\n const opt = { event: e, h };\n handler = isString(handler) ? cmd.get(handler) : handler;\n const ableTorun = !em.isEditing() && !editor.Canvas.isInputFocused();\n if (ableTorun || opts.force) {\n opts.prevent && canvas.getCanvasView().preventDefault(e);\n typeof handler == 'object' ? cmd.runCommand(handler, opt) : handler(editor, 0, opt);\n const args = [id, h.shortcut, e];\n em.trigger('keymap:emit', ...args);\n em.trigger(`keymap:emit:${id}`, ...args);\n }\n });\n em.trigger('keymap:add', keymap);\n return keymap;\n },\n\n /**\n * Get the keymap by id\n * @param {string} id Keymap id\n * @return {Object} Keymap object\n * @example\n * keymaps.get('ns:my-keymap');\n * // -> {keys, handler};\n */\n get(id) {\n return this.keymaps[id];\n },\n\n /**\n * Get all keymaps\n * @return {Object}\n * @example\n * keymaps.getAll();\n * // -> {id1: {}, id2: {}};\n */\n getAll() {\n return this.keymaps;\n },\n\n /**\n * Remove the keymap by id\n * @param {string} id Keymap id\n * @return {Object} Removed keymap\n * @example\n * keymaps.remove('ns:my-keymap');\n * // -> {keys, handler};\n */\n remove(id) {\n const em = this.em;\n const keymap = this.get(id);\n\n if (keymap) {\n delete this.keymaps[id];\n keymap.keys.split(', ').forEach(k => keymaster.unbind(k.trim()));\n em && em.trigger('keymap:remove', keymap);\n return keymap;\n }\n },\n\n /**\n * Remove all binded keymaps\n * @return {this}\n */\n removeAll() {\n Object.keys(this.keymaps).forEach(keymap => this.remove(keymap));\n keymaster.handlers = {};\n return this;\n },\n\n destroy() {\n this.removeAll();\n this.keymaps = {};\n this.em = {};\n },\n };\n};\n","export default {\n stylePrefix: 'mdl-',\n\n title: '',\n\n content: '',\n\n // Close modal on interact with backdrop\n backdrop: true,\n\n // Avoid rendering the default modal.\n custom: false,\n\n /**\n * Extend ModalView object (view/ModalView.js)\n * @example\n * extend: {\n * template() {\n * return '
...New modal template...
';\n * },\n * },\n */\n extend: {},\n};\n","import { Model } from '../../common';\n\nexport default class Modal extends Model {\n defaults() {\n return {\n title: '',\n content: '',\n attributes: {},\n open: false,\n };\n }\n\n open() {\n this.set('open', true);\n }\n\n close() {\n this.set('open', false);\n }\n}\n","import { View } from '../../common';\n\nexport default class ModalView extends View {\n template({ pfx, ppfx, content, title }) {\n return `
\n
\n
${title}
\n
⨯
\n
\n
\n
${content}
\n
\n
\n
\n
`;\n }\n\n events() {\n return {\n click: 'onClick',\n 'click [data-close-modal]': 'hide',\n };\n }\n\n initialize(o) {\n const model = this.model;\n const config = o.config || {};\n const pfx = config.stylePrefix || '';\n this.config = config;\n this.pfx = pfx;\n this.ppfx = config.pStylePrefix || '';\n this.listenTo(model, 'change:open', this.updateOpen);\n this.listenTo(model, 'change:title', this.updateTitle);\n this.listenTo(model, 'change:content', this.updateContent);\n }\n\n onClick(e) {\n const bkd = this.config.backdrop;\n bkd && e.target === this.el && this.hide();\n }\n\n /**\n * Returns collector element\n * @return {HTMLElement}\n * @private\n */\n getCollector() {\n if (!this.$collector) this.$collector = this.$el.find('.' + this.pfx + 'collector');\n return this.$collector;\n }\n\n /**\n * Returns content element\n * @return {HTMLElement}\n * @private\n */\n getContent() {\n const pfx = this.pfx;\n\n if (!this.$content) {\n this.$content = this.$el.find(`.${pfx}content #${pfx}c`);\n }\n\n return this.$content;\n }\n\n /**\n * Returns title element\n * @return {HTMLElement}\n * @private\n */\n getTitle(opts = {}) {\n if (!this.$title) this.$title = this.$el.find('.' + this.pfx + 'title');\n return opts.$ ? this.$title : this.$title.get(0);\n }\n\n /**\n * Update content\n * @private\n * */\n updateContent() {\n var content = this.getContent();\n const children = content.children();\n const coll = this.getCollector();\n const body = this.model.get('content');\n children.length && coll.append(children);\n content.empty().append(body);\n }\n\n /**\n * Update title\n * @private\n * */\n updateTitle() {\n const title = this.getTitle({ $: true });\n title && title.empty().append(this.model.get('title'));\n }\n\n /**\n * Update open\n * @private\n * */\n updateOpen() {\n this.el.style.display = this.model.get('open') ? '' : 'none';\n }\n\n /**\n * Hide modal\n * @private\n * */\n hide() {\n this.model.close();\n }\n\n /**\n * Show modal\n * @private\n * */\n show() {\n this.model.open();\n }\n\n updateAttr(attr) {\n const { pfx, $el, el } = this;\n const currAttr = [].slice.call(el.attributes).map(i => i.name);\n $el.removeAttr(currAttr.join(' '));\n $el.attr({\n ...(attr || {}),\n class: `${pfx}container ${(attr && attr.class) || ''}`.trim(),\n });\n }\n\n render() {\n const el = this.$el;\n const obj = this.model.toJSON();\n obj.pfx = this.pfx;\n obj.ppfx = this.ppfx;\n el.html(this.template(obj));\n this.updateAttr();\n this.updateOpen();\n return this;\n }\n}\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/modal_dialog/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * modal: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const modal = editor.Modal;\n * ```\n *\n * ## Available Events\n * * `modal:open` - Modal is opened\n * * `modal:close` - Modal is closed\n * * `modal` - Event triggered on any change related to the modal. An object containing all the available data about the triggered event is passed as an argument to the callback.\n *\n * ## Methods\n * * [open](#open)\n * * [close](#close)\n * * [isOpen](#isopen)\n * * [setTitle](#settitle)\n * * [getTitle](#gettitle)\n * * [setContent](#setcontent)\n * * [getContent](#getcontent)\n * * [onceClose](#onceclose)\n * * [onceOpen](#onceopen)\n *\n * @module Modal\n */\n\nimport { debounce, isFunction, isString } from 'underscore';\nimport { createText } from '../utils/dom';\nimport defaults from './config/config';\nimport ModalM from './model/Modal';\nimport ModalView from './view/ModalView';\n\nexport default () => {\n var c = {};\n var model, modal;\n\n const triggerEvent = (enable, em) => {\n em && em.trigger(`modal:${enable ? 'open' : 'close'}`);\n };\n\n return {\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Modal',\n\n getConfig() {\n return c;\n },\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config = {}) {\n c = {\n ...defaults,\n ...config,\n };\n\n const em = c.em;\n this.em = em;\n var ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n model = new ModalM(c);\n model.on('change:open', (m, enb) => triggerEvent(enb, em));\n model.on(\n 'change',\n debounce(() => {\n const data = this._evData();\n const { custom } = this.getConfig();\n isFunction(custom) && custom(data);\n em.trigger('modal', data);\n })\n );\n\n return this;\n },\n\n _evData() {\n const titl = this.getTitle();\n const cnt = this.getContent();\n const { open, attributes } = model.attributes;\n return {\n open,\n attributes,\n title: isString(titl) ? createText(titl) : titl,\n content: isString(cnt) ? createText(cnt) : cnt.get ? cnt.get(0) : cnt,\n close: () => this.close(),\n };\n },\n\n postRender(view) {\n const el = view.model.getConfig().el || view.el;\n const res = this.render();\n res && res.appendTo(el);\n },\n\n /**\n * Open the modal window\n * @param {Object} [opts={}] Options\n * @param {String|HTMLElement} [opts.title] Title to set for the modal\n * @param {String|HTMLElement} [opts.content] Content to set for the modal\n * @param {Object} [opts.attributes] Updates the modal wrapper with custom attributes\n * @returns {this}\n * @example\n * modal.open({\n * title: 'My title',\n * content: 'My content',\n * attributes: { class: 'my-class' },\n * });\n */\n open(opts = {}) {\n const attr = opts.attributes || {};\n opts.title && this.setTitle(opts.title);\n opts.content && this.setContent(opts.content);\n model.set('attributes', attr);\n model.open();\n modal && modal.updateAttr(attr);\n return this;\n },\n\n /**\n * Close the modal window\n * @returns {this}\n * @example\n * modal.close();\n */\n close() {\n model.close();\n return this;\n },\n\n /**\n * Execute callback when the modal will be closed.\n * The callback will be called one only time\n * @param {Function} clb Callback to call\n * @returns {this}\n * @example\n * modal.onceClose(() => {\n * console.log('The modal is closed');\n * });\n */\n onceClose(clb) {\n this.em.once('modal:close', clb);\n return this;\n },\n\n /**\n * Execute callback when the modal will be opened.\n * The callback will be called one only time\n * @param {Function} clb Callback to call\n * @returns {this}\n * @example\n * modal.onceOpen(() => {\n * console.log('The modal is opened');\n * });\n */\n onceOpen(clb) {\n this.em.once('modal:open', clb);\n return this;\n },\n\n /**\n * Checks if the modal window is open\n * @returns {Boolean}\n * @example\n * modal.isOpen(); // true | false\n */\n isOpen() {\n return !!model.get('open');\n },\n\n /**\n * Set the title to the modal window\n * @param {string | HTMLElement} title Title\n * @returns {this}\n * @example\n * // pass a string\n * modal.setTitle('Some title');\n * // or an HTMLElement\n * const el = document.createElement('div');\n * el.innerText = 'New title';\n * modal.setTitle(el);\n */\n setTitle(title) {\n model.set('title', title);\n return this;\n },\n\n /**\n * Returns the title of the modal window\n * @returns {string | HTMLElement}\n * @example\n * modal.getTitle();\n */\n getTitle() {\n return model.get('title');\n },\n\n /**\n * Set the content of the modal window\n * @param {string | HTMLElement} content Content\n * @returns {this}\n * @example\n * // pass a string\n * modal.setContent('Some content');\n * // or an HTMLElement\n * const el = document.createElement('div');\n * el.innerText = 'New content';\n * modal.setContent(el);\n */\n setContent(content) {\n model.set('content', ' ');\n model.set('content', content);\n return this;\n },\n\n /**\n * Get the content of the modal window\n * @returns {string | HTMLElement}\n * @example\n * modal.getContent();\n */\n getContent() {\n return model.get('content');\n },\n\n /**\n * Returns content element\n * @return {HTMLElement}\n * @private\n */\n getContentEl() {\n return modal.getContent().get(0);\n },\n\n /**\n * Returns modal model\n * @return {Model}\n * @private\n */\n getModel() {\n return model;\n },\n\n /**\n * Render the modal window\n * @return {HTMLElement}\n * @private\n */\n render() {\n if (this.getConfig().custom) return;\n const View = ModalView.extend(c.extend);\n const el = modal && modal.el;\n modal = new View({\n el,\n model,\n config: c,\n });\n return modal.render().$el;\n },\n\n destroy() {\n modal && modal.remove();\n [c, model, modal].forEach(i => (i = {}));\n this.em = {};\n },\n };\n};\n","const swv = 'sw-visibility';\nconst expt = 'export-template';\nconst osm = 'open-sm';\nconst otm = 'open-tm';\nconst ola = 'open-layers';\nconst obl = 'open-blocks';\nconst ful = 'fullscreen';\nconst prv = 'preview';\n\nexport default {\n stylePrefix: 'pn-',\n\n // Default panels fa-sliders for features\n defaults: [\n {\n id: 'commands',\n buttons: [{}],\n },\n {\n id: 'options',\n buttons: [\n {\n active: true,\n id: swv,\n className: 'fa fa-square-o',\n command: swv,\n context: swv,\n attributes: { title: 'View components' },\n },\n {\n id: prv,\n className: 'fa fa-eye',\n command: prv,\n context: prv,\n attributes: { title: 'Preview' },\n },\n {\n id: ful,\n className: 'fa fa-arrows-alt',\n command: ful,\n context: ful,\n attributes: { title: 'Fullscreen' },\n },\n {\n id: expt,\n className: 'fa fa-code',\n command: expt,\n attributes: { title: 'View code' },\n },\n ],\n },\n {\n id: 'views',\n buttons: [\n {\n id: osm,\n className: 'fa fa-paint-brush',\n command: osm,\n active: true,\n togglable: 0,\n attributes: { title: 'Open Style Manager' },\n },\n {\n id: otm,\n className: 'fa fa-cog',\n command: otm,\n togglable: 0,\n attributes: { title: 'Settings' },\n },\n {\n id: ola,\n className: 'fa fa-bars',\n command: ola,\n togglable: 0,\n attributes: { title: 'Open Layer Manager' },\n },\n {\n id: obl,\n className: 'fa fa-th-large',\n command: obl,\n togglable: 0,\n attributes: { title: 'Open Blocks' },\n },\n ],\n },\n ],\n\n // Editor model\n em: null,\n\n // Delay before show children buttons (in milliseconds)\n delayBtnsShow: 300,\n};\n","import { Model } from '../../common';\nimport Buttons from './Buttons';\n\nexport default class Panel extends Model {\n defaults() {\n return {\n id: '',\n content: '',\n visible: true,\n buttons: [],\n attributes: {},\n };\n }\n\n initialize(options) {\n this.btn = this.get('buttons') || [];\n this.buttons = new Buttons(this.btn);\n this.set('buttons', this.buttons);\n }\n}\n","import { Collection } from '../../common';\nimport Panel from './Panel';\n\nexport default class Panels extends Collection {}\n\nPanels.prototype.model = Panel;\n","import { isString, isObject, isFunction } from 'underscore';\nimport { View } from '../../common';\n\nexport default class ButtonView extends View {\n tagName() {\n return this.model.get('tagName');\n }\n\n events() {\n return {\n click: 'clicked',\n };\n }\n\n initialize(o) {\n const { model } = this;\n const cls = model.get('className');\n const { command, listen } = model.attributes;\n const config = o.config || {};\n const { em } = config;\n this.config = config;\n this.em = em;\n const pfx = this.config.stylePrefix || '';\n const ppfx = this.config.pStylePrefix || '';\n this.pfx = pfx;\n this.ppfx = this.config.pStylePrefix || '';\n this.id = pfx + model.get('id');\n this.activeCls = `${pfx}active ${ppfx}four-color`;\n this.disableCls = `${ppfx}disabled`;\n this.btnsVisCls = `${pfx}visible`;\n this.className = pfx + 'btn' + (cls ? ' ' + cls : '');\n this.listenTo(model, 'change', this.render);\n this.listenTo(model, 'change:active updateActive', this.updateActive);\n this.listenTo(model, 'checkActive', this.checkActive);\n this.listenTo(model, 'change:bntsVis', this.updateBtnsVis);\n this.listenTo(model, 'change:attributes', this.updateAttributes);\n this.listenTo(model, 'change:className', this.updateClassName);\n this.listenTo(model, 'change:disable', this.updateDisable);\n\n if (em && isString(command) && listen) {\n const chnOpt = { fromListen: 1 };\n this.listenTo(em, `run:${command}`, () => model.set('active', true, chnOpt));\n this.listenTo(em, `stop:${command}`, () => model.set('active', false, chnOpt));\n }\n\n if (em && em.get) this.commands = em.get('Commands');\n }\n\n /**\n * Updates class name of the button\n *\n * @return void\n * */\n updateClassName() {\n const { model, pfx } = this;\n const cls = model.get('className');\n const attrCls = model.get('attributes').class;\n const classStr = `${attrCls ? attrCls : ''} ${pfx}btn ${cls ? cls : ''}`;\n this.$el.attr('class', classStr.trim());\n }\n\n /**\n * Updates attributes of the button\n *\n * @return void\n * */\n updateAttributes() {\n const { em, model, $el } = this;\n const attr = model.get('attributes') || {};\n const title = em && em.t && em.t(`panels.buttons.titles.${model.id}`);\n $el.attr(attr);\n title && $el.attr({ title });\n\n this.updateClassName();\n }\n\n /**\n * Updates visibility of children buttons\n *\n * @return void\n * */\n updateBtnsVis() {\n if (!this.$buttons) return;\n\n if (this.model.get('bntsVis')) this.$buttons.addClass(this.btnsVisCls);\n else this.$buttons.removeClass(this.btnsVisCls);\n }\n\n /**\n * Update active status of the button\n *\n * @return void\n * */\n updateActive(m, v, opts = {}) {\n const { model, commands, $el, activeCls } = this;\n const { fromCollection, fromListen } = opts;\n const context = model.get('context');\n const options = model.get('options');\n const commandName = model.get('command');\n let command = {};\n\n if (!commandName) return;\n\n if (commands && isString(commandName)) {\n command = commands.get(commandName) || {};\n } else if (isFunction(commandName)) {\n command = commands.create({ run: commandName });\n } else if (commandName !== null && isObject(commandName)) {\n command = commands.create(commandName);\n }\n\n if (model.get('active')) {\n !fromCollection && model.collection.deactivateAll(context, model);\n model.set('active', true, { silent: true }).trigger('checkActive');\n !fromListen && commands.runCommand(command, { ...options, sender: model });\n\n // Disable button if the command has no stop method\n command.noStop && model.set('active', false);\n } else {\n $el.removeClass(activeCls);\n !fromListen && commands.stopCommand(command, { ...options, sender: model, force: 1 });\n }\n }\n\n updateDisable() {\n const { disableCls, model } = this;\n const disable = model.get('disable');\n this.$el[disable ? 'addClass' : 'removeClass'](disableCls);\n }\n\n /**\n * Update active style status\n *\n * @return void\n * */\n checkActive() {\n const { model, $el, activeCls } = this;\n model.get('active') ? $el.addClass(activeCls) : $el.removeClass(activeCls);\n }\n\n /**\n * Triggered when button is clicked\n * @param {Object} e Event\n *\n * @return void\n * */\n clicked(e) {\n const { model } = this;\n\n if (model.get('bntsVis') || model.get('disable') || !model.get('command')) return;\n\n this.toggleActive();\n }\n\n toggleActive() {\n const { model, em } = this;\n const { active, togglable } = model.attributes;\n\n if (active && !togglable) return;\n\n model.set('active', !active);\n\n // If the stop is requested\n if (active) {\n if (model.get('runDefaultCommand')) em.runDefault();\n } else {\n if (model.get('stopDefaultCommand')) em.stopDefault();\n }\n }\n\n render() {\n const { model } = this;\n const label = model.get('label');\n const { $el } = this;\n !model.get('el') && $el.empty();\n this.updateAttributes();\n label && $el.append(label);\n this.checkActive();\n this.updateDisable();\n\n return this;\n }\n}\n","import { result } from 'underscore';\nimport { View } from '../../common';\nimport ButtonView from './ButtonView';\n\nexport default class ButtonsView extends View {\n initialize(o) {\n this.opt = o || {};\n this.config = this.opt.config || {};\n this.pfx = this.config.stylePrefix || '';\n this.parentM = this.opt.parentM || null;\n this.listenTo(this.collection, 'add', this.addTo);\n this.listenTo(this.collection, 'reset remove', this.render);\n this.className = this.pfx + 'buttons';\n }\n\n /**\n * Add to collection\n * @param Object Model\n *\n * @return Object\n * */\n addTo(model) {\n this.addToCollection(model);\n }\n\n /**\n * Add new object to collection\n * @param Object Model\n * @param Object Fragment collection\n *\n * @return Object Object created\n * */\n addToCollection(model, fragmentEl) {\n const fragment = fragmentEl || null;\n const viewObject = ButtonView;\n const el = model.get('el');\n const view = new viewObject({\n el,\n model,\n config: this.config,\n parentM: this.parentM,\n });\n const rendered = view.render().el;\n\n if (fragment) {\n fragment.appendChild(rendered);\n } else {\n this.$el.append(rendered);\n }\n\n return rendered;\n }\n\n render() {\n var fragment = document.createDocumentFragment();\n this.$el.empty();\n\n this.collection.each(function (model) {\n this.addToCollection(model, fragment);\n }, this);\n\n this.$el.append(fragment);\n this.$el.attr('class', result(this, 'className'));\n return this;\n }\n}\n","import { View } from '../../common';\nimport ButtonsView from './ButtonsView';\n\nexport default class PanelView extends View {\n initialize(o) {\n const config = o.config || {};\n const model = this.model;\n this.config = config;\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.buttons = model.get('buttons');\n this.className = this.pfx + 'panel';\n this.id = this.pfx + model.get('id');\n this.listenTo(model, 'change:appendContent', this.appendContent);\n this.listenTo(model, 'change:content', this.updateContent);\n this.listenTo(model, 'change:visible', this.toggleVisible);\n model.view = this;\n }\n\n /**\n * Append content of the panel\n * */\n appendContent() {\n this.$el.append(this.model.get('appendContent'));\n }\n\n /**\n * Update content\n * */\n updateContent() {\n this.$el.html(this.model.get('content'));\n }\n\n toggleVisible() {\n if (!this.model.get('visible')) {\n this.$el.addClass(`${this.ppfx}hidden`);\n return;\n }\n this.$el.removeClass(`${this.ppfx}hidden`);\n }\n\n attributes() {\n return this.model.get('attributes');\n }\n\n initResize() {\n const em = this.config.em;\n const editor = em ? em.get('Editor') : '';\n const resizable = this.model.get('resizable');\n\n if (editor && resizable) {\n var resz = resizable === true ? [1, 1, 1, 1] : resizable;\n var resLen = resz.length;\n var tc,\n cr,\n bc,\n cl = 0;\n\n // Choose which sides of the panel are resizable\n if (resLen == 2) {\n tc = resz[0];\n bc = resz[0];\n cr = resz[1];\n cl = resz[1];\n } else if (resLen == 4) {\n tc = resz[0];\n cr = resz[1];\n bc = resz[2];\n cl = resz[3];\n }\n\n var resizer = editor.Utils.Resizer.init({\n tc,\n cr,\n bc,\n cl,\n tl: 0,\n tr: 0,\n bl: 0,\n br: 0,\n appendTo: this.el,\n silentFrames: 1,\n avoidContainerUpdate: 1,\n prefix: editor.getConfig().stylePrefix,\n onEnd() {\n em && em.trigger('change:canvasOffset');\n },\n posFetcher: (el, { target }) => {\n const style = el.style;\n const config = resizer.getConfig();\n const keyWidth = config.keyWidth;\n const keyHeight = config.keyHeight;\n const rect = el.getBoundingClientRect();\n const forContainer = target == 'container';\n const styleWidth = style[keyWidth];\n const styleHeight = style[keyHeight];\n const width = styleWidth && !forContainer ? parseFloat(styleWidth) : rect.width;\n const height = styleHeight && !forContainer ? parseFloat(styleHeight) : rect.height;\n return {\n left: 0,\n top: 0,\n width,\n height,\n };\n },\n ...resizable,\n });\n resizer.blur = () => {};\n resizer.focus(this.el);\n }\n }\n\n render() {\n const $el = this.$el;\n const ppfx = this.ppfx;\n const cls = `${this.className} ${this.id} ${ppfx}one-bg ${ppfx}two-color`;\n $el.addClass(cls);\n\n this.toggleVisible();\n\n if (this.buttons.length) {\n var buttons = new ButtonsView({\n collection: this.buttons,\n config: this.config,\n });\n $el.append(buttons.render().el);\n }\n\n $el.append(this.model.get('content'));\n return this;\n }\n}\n","import { View } from '../../common';\nimport PanelView from './PanelView';\n\nexport default class PanelsView extends View {\n initialize(o) {\n this.opt = o || {};\n this.config = this.opt.config || {};\n this.pfx = this.config.stylePrefix || '';\n const items = this.collection;\n this.listenTo(items, 'add', this.addTo);\n this.listenTo(items, 'reset', this.render);\n this.listenTo(items, 'remove', this.onRemove);\n this.className = this.pfx + 'panels';\n }\n\n onRemove(model) {\n const view = model.view;\n view && view.remove();\n }\n\n /**\n * Add to collection\n * @param Object Model\n *\n * @return Object\n * @private\n * */\n addTo(model) {\n this.addToCollection(model);\n }\n\n /**\n * Add new object to collection\n * @param Object Model\n * @param Object Fragment collection\n * @param integer Index of append\n *\n * @return Object Object created\n * @private\n * */\n addToCollection(model, fragmentEl) {\n const fragment = fragmentEl || null;\n const config = this.config;\n const el = model.get('el');\n const view = new PanelView({\n el,\n model,\n config,\n });\n const rendered = view.render().el;\n const appendTo = model.get('appendTo');\n\n // Do nothing if the panel was requested to be another element\n if (el) {\n } else if (appendTo) {\n var appendEl = document.querySelector(appendTo);\n appendEl.appendChild(rendered);\n } else {\n if (fragment) {\n fragment.appendChild(rendered);\n } else {\n this.$el.append(rendered);\n }\n }\n\n view.initResize();\n return rendered;\n }\n\n render() {\n const $el = this.$el;\n const frag = document.createDocumentFragment();\n $el.empty();\n this.collection.each(model => this.addToCollection(model, frag));\n $el.append(frag);\n $el.attr('class', this.className);\n return this;\n }\n}\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/panels/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * panels: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const panelManager = editor.Panels;\n * ```\n *\n * * [addPanel](#addpanel)\n * * [addButton](#addbutton)\n * * [getButton](#getbutton)\n * * [getPanel](#getpanel)\n * * [getPanels](#getpanels)\n * * [getPanelsEl](#getpanelsel)\n * * [removePanel](#removepanel)\n * * [removeButton](#removebutton)\n *\n * @module Panels\n */\nimport defaults from './config/config';\nimport Panel from './model/Panel';\nimport Panels from './model/Panels';\nimport PanelsView from './view/PanelsView';\n\nexport default () => {\n var c = {};\n var panels, PanelsViewObj;\n\n return {\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Panels',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config) {\n c = config || {};\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n var ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n panels = new Panels(c.defaults);\n return this;\n },\n\n /**\n * Returns the collection of panels\n * @return {Collection} Collection of panel\n */\n getPanels() {\n return panels;\n },\n\n /**\n * Returns panels element\n * @return {HTMLElement}\n */\n getPanelsEl() {\n return PanelsViewObj && PanelsViewObj.el;\n },\n\n /**\n * Add new panel to the collection\n * @param {Object|Panel} panel Object with right properties or an instance of Panel\n * @return {Panel} Added panel. Useful in case passed argument was an Object\n * @example\n * var newPanel = panelManager.addPanel({\n * id: 'myNewPanel',\n * visible : true,\n * buttons : [...],\n * });\n */\n addPanel(panel) {\n return panels.add(panel);\n },\n\n /**\n * Remove a panel from the collection\n * @param {Object|Panel|String} panel Object with right properties or an instance of Panel or Painel id\n * @return {Panel} Removed panel. Useful in case passed argument was an Object\n * @example\n * const newPanel = panelManager.removePanel({\n * id: 'myNewPanel',\n * visible : true,\n * buttons : [...],\n * });\n *\n * const newPanel = panelManager.removePanel('myNewPanel');\n *\n */\n removePanel(panel) {\n return panels.remove(panel);\n },\n\n /**\n * Get panel by ID\n * @param {string} id Id string\n * @return {Panel|null}\n * @example\n * var myPanel = panelManager.getPanel('myNewPanel');\n */\n getPanel(id) {\n var res = panels.where({ id });\n return res.length ? res[0] : null;\n },\n\n /**\n * Add button to the panel\n * @param {string} panelId Panel's ID\n * @param {Object|Button} button Button object or instance of Button\n * @return {Button|null} Added button. Useful in case passed button was an Object\n * @example\n * var newButton = panelManager.addButton('myNewPanel',{\n * id: 'myNewButton',\n * className: 'someClass',\n * command: 'someCommand',\n * attributes: { title: 'Some title'},\n * active: false,\n * });\n * // It's also possible to pass the command as an object\n * // with .run and .stop methods\n * ...\n * command: {\n * run: function(editor) {\n * ...\n * },\n * stop: function(editor) {\n * ...\n * }\n * },\n * // Or simply like a function which will be evaluated as a single .run command\n * ...\n * command: function(editor) {\n * ...\n * }\n */\n addButton(panelId, button) {\n var pn = this.getPanel(panelId);\n return pn ? pn.get('buttons').add(button) : null;\n },\n\n /**\n * Remove button from the panel\n * @param {String} panelId Panel's ID\n * @param {String} buttonId Button's ID\n * @return {Button|null} Removed button.\n * @example\n * const removedButton = panelManager.addButton('myNewPanel',{\n * id: 'myNewButton',\n * className: 'someClass',\n * command: 'someCommand',\n * attributes: { title: 'Some title'},\n * active: false,\n * });\n *\n * const removedButton = panelManager.removeButton('myNewPanel', 'myNewButton');\n *\n */\n removeButton(panelId, button) {\n var pn = this.getPanel(panelId);\n return pn && pn.get('buttons').remove(button);\n },\n\n /**\n * Get button from the panel\n * @param {string} panelId Panel's ID\n * @param {string} id Button's ID\n * @return {Button|null}\n * @example\n * var button = panelManager.getButton('myPanel','myButton');\n */\n getButton(panelId, id) {\n var pn = this.getPanel(panelId);\n if (pn) {\n var res = pn.get('buttons').where({ id });\n return res.length ? res[0] : null;\n }\n return null;\n },\n\n /**\n * Render panels and buttons\n * @return {HTMLElement}\n * @private\n */\n render() {\n PanelsViewObj && PanelsViewObj.remove();\n PanelsViewObj = new PanelsView({\n collection: panels,\n config: c,\n });\n return PanelsViewObj.render().el;\n },\n\n /**\n * Active activable buttons\n * @private\n */\n active() {\n this.getPanels().each(p => {\n p.get('buttons').each(btn => {\n btn.get('active') && btn.trigger('updateActive');\n });\n });\n },\n\n /**\n * Disable buttons flagged as disabled\n * @private\n */\n disableButtons() {\n this.getPanels().each(p => {\n p.get('buttons').each(btn => {\n if (btn.get('disable')) btn.trigger('change:disable');\n });\n });\n },\n\n destroy() {\n panels.reset();\n panels.stopListening();\n PanelsViewObj && PanelsViewObj.remove();\n [c, panels, PanelsViewObj].forEach(i => (i = {}));\n },\n\n Panel,\n };\n};\n","import { Model } from '../../common';\n\nexport default class Button extends Model {\n defaults() {\n return {\n id: '',\n label: '',\n tagName: 'span',\n className: '',\n command: '',\n context: '',\n buttons: [],\n attributes: {},\n options: {},\n active: false,\n dragDrop: false,\n togglable: true,\n runDefaultCommand: true,\n stopDefaultCommand: false,\n disable: false,\n };\n }\n\n initialize(options) {\n if (this.get('buttons').length) {\n var Buttons = require('./Buttons').default;\n this.set('buttons', new Buttons(this.get('buttons')));\n }\n }\n}\n","import { Collection } from '../../common';\nimport Button from './Button';\n\nexport default class Buttons extends Collection {\n /**\n * Deactivate all buttons, except one passed\n * @param {Object} except Model to ignore\n * @param {Boolean} r Recursive flag\n *\n * @return void\n * */\n deactivateAllExceptOne(except, r) {\n this.forEach((model, index) => {\n if (model !== except) {\n model.set('active', false);\n if (r && model.get('buttons').length) model.get('buttons').deactivateAllExceptOne(except, r);\n }\n });\n }\n\n /**\n * Deactivate all buttons\n * @param {String} ctx Context string\n *\n * @return void\n * */\n deactivateAll(ctx, sender) {\n const context = ctx || '';\n this.forEach(model => {\n if (model.get('context') == context && model !== sender) {\n model.set('active', false, { fromCollection: 1 });\n }\n });\n }\n\n /**\n * Disables all buttons\n * @param {String} ctx Context string\n *\n * @return void\n * */\n disableAllButtons(ctx) {\n var context = ctx || '';\n this.forEach((model, index) => {\n if (model.get('context') == context) {\n model.set('disable', true);\n }\n });\n }\n\n /**\n * Disables all buttons, except one passed\n * @param {Object} except Model to ignore\n * @param {Boolean} r Recursive flag\n *\n * @return void\n * */\n disableAllButtonsExceptOne(except, r) {\n this.forEach((model, index) => {\n if (model !== except) {\n model.set('disable', true);\n if (r && model.get('buttons').length) model.get('buttons').disableAllButtonsExceptOne(except, r);\n }\n });\n }\n}\n\nButtons.prototype.model = Button;\n","export default {\n textTags: ['br', 'b', 'i', 'u', 'a', 'ul', 'ol'],\n\n // Custom CSS parser\n // @see https://grapesjs.com/docs/guides/Custom-CSS-parser.html\n parserCss: null,\n\n // Custom HTML parser\n // At the moment, the custom HTML parser should rely on DOM Node instance as the result\n // @example\n // The return should be an instance of an Node as the root to traverse\n // https://developer.mozilla.org/en-US/docs/Web/API/Node\n // parserHtml: (input, opts = {}) => (new DOMParser()).parseFromString(input, 'text/xml')\n // Here the result will be XMLDocument, which extends Node\n parserHtml: null,\n\n // Default HTML parser options (used in `parserModule.parseHtml(' tags\n allowScripts: false,\n\n // Allow unsafe HTML attributes (eg. `on*` inline event handlers)\n allowUnsafeAttr: false,\n },\n};\n","import { keys } from 'underscore';\n\n// At-rules\n// https://developer.mozilla.org/it/docs/Web/API/CSSRule#Type_constants\nconst atRules = {\n 4: 'media',\n 5: 'font-face',\n 6: 'page',\n 7: 'keyframes',\n 11: 'counter-style',\n 12: 'supports',\n 13: 'document',\n 14: 'font-feature-values',\n 15: 'viewport',\n};\nconst atRuleKeys = keys(atRules);\nconst singleAtRules = ['5', '6', '11', '15'];\nconst singleAtRulesNames = ['font-face', 'page', 'counter-style', 'viewport'];\n\n/**\n * Parse selector string to array.\n * Only classe based are valid as CSS rules inside editor, not valid\n * selectors will be dropped as additional\n * It's ok with the last part of the string as state (:hover, :active)\n * @param {string} str Selectors string\n * @return {Object}\n * @example\n * var res = parseSelector('.test1, .test1.test2, .test2 .test3');\n * console.log(res);\n * // {\n * //result: [['test1'], ['test1', 'test2']],\n * //add: ['.test2 .test3']\n * //}\n */\nexport const parseSelector = (str = '') => {\n const add = [];\n const result = [];\n const sels = str.split(',');\n\n for (var i = 0, len = sels.length; i < len; i++) {\n var sel = sels[i].trim();\n\n // Will accept only concatenated classes and last\n // class might be with state (eg. :hover), nothing else.\n // Can also accept SINGLE ID selectors, eg. `#myid`, `#myid:hover`\n // Composed are not valid: `#myid.some-class`, `#myid.some-class:hover`\n if (/^(\\.{1}[\\w\\-]+)+(:{1,2}[\\w\\-()]+)?$/gi.test(sel) || /^(#{1}[\\w\\-]+){1}(:{1,2}[\\w\\-()]+)?$/gi.test(sel)) {\n var cls = sel.split('.').filter(Boolean);\n result.push(cls);\n } else {\n add.push(sel);\n }\n }\n\n return {\n result,\n add,\n };\n};\n\n/**\n * Parse style declarations of the node\n * @param {CSSRule} node\n * @return {Object}\n */\nexport const parseStyle = node => {\n const stl = node.style;\n const style = {};\n\n for (var i = 0, len = stl.length; i < len; i++) {\n const propName = stl[i];\n const propValue = stl.getPropertyValue(propName);\n const important = stl.getPropertyPriority(propName);\n style[propName] = `${propValue}${important ? ` !${important}` : ''}`;\n }\n\n return style;\n};\n\n/**\n * Get the condition when possible\n * @param {CSSRule} node\n * @return {string}\n */\nexport const parseCondition = node => {\n const condition = node.conditionText || (node.media && node.media.mediaText) || node.name || node.selectorText || '';\n return condition.trim();\n};\n\n/**\n * Create node for the editor\n * @param {Array} selectors Array containing strings of classes\n * @param {Object} style Key-value object of style declarations\n * @return {Object}\n */\nexport const createNode = (selectors, style = {}, opts = {}) => {\n const node = {};\n const selLen = selectors.length;\n const lastClass = selectors[selLen - 1];\n const stateArr = lastClass ? lastClass.split(/:(.+)/) : [];\n const state = stateArr[1];\n const { atRule, selectorsAdd, mediaText } = opts;\n const singleAtRule = singleAtRulesNames.indexOf(atRule) >= 0;\n singleAtRule && (node.singleAtRule = 1);\n atRule && (node.atRuleType = atRule);\n selectorsAdd && (node.selectorsAdd = selectorsAdd);\n mediaText && (node.mediaText = mediaText);\n\n // Isolate the state from selectors\n if (state) {\n selectors[selLen - 1] = stateArr[0];\n node.state = state;\n stateArr.splice(stateArr.length - 1, 1);\n }\n\n node.selectors = selectors;\n node.style = style;\n\n return node;\n};\n\n/**\n * Fetch data from node\n * @param {StyleSheet|CSSRule} el\n * @return {Array}\n */\nexport const parseNode = el => {\n var result = [];\n var nodes = el.cssRules || [];\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n const type = node.type.toString();\n let singleAtRule = 0;\n let atRuleType = '';\n let condition = '';\n // keyText is for CSSKeyframeRule\n let sels = node.selectorText || node.keyText;\n const isSingleAtRule = singleAtRules.indexOf(type) >= 0;\n\n // Check if the node is an at-rule\n if (isSingleAtRule) {\n singleAtRule = 1;\n atRuleType = atRules[type];\n condition = parseCondition(node);\n } else if (atRuleKeys.indexOf(type) >= 0) {\n var subRules = parseNode(node);\n condition = parseCondition(node);\n\n for (var s = 0, lens = subRules.length; s < lens; s++) {\n var subRule = subRules[s];\n condition && (subRule.mediaText = condition);\n subRule.atRuleType = atRules[type];\n }\n result = result.concat(subRules);\n }\n\n if (!sels && !isSingleAtRule) continue;\n const style = parseStyle(node);\n const selsParsed = parseSelector(sels);\n const selsAdd = selsParsed.add;\n sels = selsParsed.result;\n\n let lastRule;\n // For each group of selectors\n for (var k = 0, len3 = sels.length; k < len3; k++) {\n const model = createNode(sels[k], style, {\n atRule: atRules[type],\n });\n result.push(model);\n lastRule = model;\n }\n\n // Need to push somewhere not class-based selectors, if some rule was\n // created will push them there, otherwise will create a new rule\n if (selsAdd.length) {\n var selsAddStr = selsAdd.join(', ');\n if (lastRule) {\n lastRule.selectorsAdd = selsAddStr;\n } else {\n const model = {\n selectors: [],\n selectorsAdd: selsAddStr,\n style,\n };\n singleAtRule && (model.singleAtRule = singleAtRule);\n atRuleType && (model.atRuleType = atRuleType);\n condition && (model.mediaText = condition);\n result.push(model);\n }\n }\n }\n\n return result;\n};\n\n/**\n * Parse CSS string and return the array of objects\n * @param {String} str CSS string\n * @return {Array} Array of objects for the definition of CSSRules\n */\nexport default str => {\n const el = document.createElement('style');\n el.innerHTML = str;\n\n // There is no .sheet before adding it to the \n document.head.appendChild(el);\n const sheet = el.sheet;\n document.head.removeChild(el);\n\n return parseNode(sheet);\n};\n","import { isString } from 'underscore';\nimport BrowserCssParser, { parseSelector, createNode } from './BrowserParserCss';\n\nexport default (config = {}) => ({\n /**\n * Parse CSS string to a desired model object\n * @param {String} str CSS string\n * @return {Array}\n */\n parse(str) {\n let result = [];\n const { parserCss, em } = config;\n const editor = em && em.get && em.get('Editor');\n const nodes = parserCss ? parserCss(str, editor) : BrowserCssParser(str);\n nodes.forEach(node => (result = result.concat(this.checkNode(node))));\n em && em.trigger('parse:css', { input: str, output: result });\n\n return result;\n },\n\n /**\n * Check the returned node from a custom parser and transforms it to\n * a valid object for the CSS composer\n * @return {[type]}\n */\n checkNode(node) {\n const { selectors, style } = node;\n\n if (isString(selectors)) {\n const nodes = [];\n const selsParsed = parseSelector(selectors);\n const classSets = selsParsed.result;\n const selectorsAdd = selsParsed.add.join(', ');\n const opts = {\n atRule: node.atRule,\n mediaText: node.params,\n };\n\n if (classSets.length) {\n classSets.forEach(classSet => {\n nodes.push(createNode(classSet, style, opts));\n });\n } else {\n nodes.push(createNode([], style, opts));\n }\n\n if (selectorsAdd) {\n const lastNode = nodes[nodes.length - 1];\n lastNode.selectorsAdd = selectorsAdd;\n }\n\n node = nodes;\n }\n\n return node;\n },\n});\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/parser/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * parser: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const { Parser } = editor;\n * ```\n * ## Available Events\n * * `parse:html` - On HTML parse, an object containing the input and the output of the parser is passed as an argument\n * * `parse:css` - On CSS parse, an object containing the input and the output of the parser is passed as an argument\n *\n * ## Methods\n * * [getConfig](#getconfig)\n * * [parseHtml](#parsehtml)\n * * [parseCss](#parsecss)\n *\n * @module Parser\n */\nimport defaults from './config/config';\nimport parserCss from './model/ParserCss';\nimport parserHtml from './model/ParserHtml';\n\nexport default () => {\n let conf = {};\n let pHtml, pCss;\n\n return {\n compTypes: '',\n\n parserCss: null,\n\n parserHtml: null,\n\n name: 'Parser',\n\n init(config = {}) {\n conf = { ...defaults, ...config };\n conf.Parser = this;\n pHtml = new parserHtml(conf);\n pCss = new parserCss(conf);\n this.em = conf.em;\n this.parserCss = pCss;\n this.parserHtml = pHtml;\n return this;\n },\n\n /**\n * Get the configuration object\n * @returns {Object} Configuration object\n * @example\n * console.log(Parser.getConfig())\n */\n getConfig() {\n return conf;\n },\n\n /**\n * Parse HTML string and return the object containing the Component Definition\n * @param {String} input HTML string to parse\n * @param {Object} [options] Options\n * @param {String} [options.htmlType] [HTML mime type](https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02) to parse\n * @param {Boolean} [options.allowScripts=false] Allow `` : '';\n return html;\n }\n\n /**\n * Returns CSS built inside canvas\n * @param {Object} [opts={}] Options\n * @returns {string} CSS string\n * @public\n */\n getCss(opts: any = {}) {\n const config = this.config;\n const { optsCss } = config;\n const avoidProt = opts.avoidProtected;\n const keepUnusedStyles = !isUndefined(opts.keepUnusedStyles)\n ? opts.keepUnusedStyles\n : config.keepUnusedStyles;\n const cssc = this.get('CssComposer');\n const wrp = opts.component || this.get('DomComponents').getComponent();\n const protCss = !avoidProt ? config.protectedCss : '';\n const css =\n wrp &&\n this.get('CodeManager').getCode(wrp, 'css', {\n cssc,\n keepUnusedStyles,\n ...optsCss,\n ...opts,\n });\n return wrp ? (opts.json ? css : protCss + css) : '';\n }\n\n /**\n * Returns JS of all components\n * @return {string} JS string\n * @public\n */\n getJs(opts: any = {}) {\n var wrp = opts.component || this.get('DomComponents').getWrapper();\n return wrp ? this.get('CodeManager').getCode(wrp, 'js').trim() : '';\n }\n\n /**\n * Store data to the current storage.\n * @public\n */\n async store(options?: any) {\n const data = this.storeData();\n await this.get('StorageManager').store(data, options);\n this.clearDirtyCount();\n return data;\n }\n\n /**\n * Load data from the current storage.\n * @public\n */\n async load(options?: any) {\n const result = await this.get('StorageManager').load(options);\n this.loadData(result);\n return result;\n }\n\n storeData() {\n let result = {};\n // Sync content if there is an active RTE\n const editingCmp = this.getEditing();\n editingCmp && editingCmp.trigger('sync:content', { noCount: true });\n\n this.storables.forEach((m) => {\n result = { ...result, ...m.store(1) };\n });\n return JSON.parse(JSON.stringify(result));\n }\n\n loadData(data = {}) {\n if (!isEmptyObj(data)) {\n this.storables.forEach((module) => module.clear());\n this.storables.forEach((module) => module.load(data));\n }\n return data;\n }\n\n /**\n * Returns device model by name\n * @return {Device|null}\n * @private\n */\n getDeviceModel() {\n var name = this.get('device');\n return this.get('DeviceManager').get(name);\n }\n\n /**\n * Run default command if setted\n * @param {Object} [opts={}] Options\n * @private\n */\n runDefault(opts = {}) {\n var command = this.get('Commands').get(this.config.defaultCommand);\n if (!command || this.defaultRunning) return;\n command.stop(this, this, opts);\n command.run(this, this, opts);\n this.defaultRunning = true;\n }\n\n /**\n * Stop default command\n * @param {Object} [opts={}] Options\n * @private\n */\n stopDefault(opts = {}) {\n const commands = this.get('Commands');\n const command = commands.get(this.config.defaultCommand);\n if (!command || !this.defaultRunning) return;\n command.stop(this, this, opts);\n this.defaultRunning = false;\n }\n\n /**\n * Update canvas dimensions and refresh data useful for tools positioning\n * @public\n */\n refreshCanvas(opts: any = {}) {\n this.set('canvasOffset', null);\n this.set('canvasOffset', this.get('Canvas').getOffset());\n opts.tools && this.trigger('canvas:updateTools');\n }\n\n /**\n * Clear all selected stuf inside the window, sometimes is useful to call before\n * doing some dragging opearation\n * @param {Window} win If not passed the current one will be used\n * @private\n */\n clearSelection(win?: Window) {\n var w = win || window;\n w.getSelection()?.removeAllRanges();\n }\n\n /**\n * Get the current media text\n * @return {string}\n */\n getCurrentMedia() {\n const config = this.config;\n const device = this.getDeviceModel();\n const condition = config.mediaCondition;\n const preview = config.devicePreviewMode;\n const width = device && device.get('widthMedia');\n return device && width && !preview ? `(${condition}: ${width})` : '';\n }\n\n /**\n * Return the component wrapper\n * @return {Component}\n */\n getWrapper() {\n return this.get('DomComponents').getWrapper();\n }\n\n setCurrentFrame(frameView: FrameView) {\n return this.set('currentFrame', frameView);\n }\n\n getCurrentFrame(): FrameView {\n return this.get('currentFrame');\n }\n\n getCurrentFrameModel() {\n return (this.getCurrentFrame() || {}).model;\n }\n\n getIcon(icon: string) {\n const icons = this.config.icons || {};\n return icons[icon] || '';\n }\n\n /**\n * Return the count of changes made to the content and not yet stored.\n * This count resets at any `store()`\n * @return {number}\n */\n getDirtyCount(): number {\n return this.get('changesCount');\n }\n\n clearDirtyCount() {\n return this.set('changesCount', 0);\n }\n\n getZoomDecimal() {\n return this.get('Canvas').getZoomDecimal();\n }\n\n getZoomMultiplier() {\n return this.get('Canvas').getZoomMultiplier();\n }\n\n setDragMode(value: string) {\n return this.set('dmode', value);\n }\n\n t(...args: any[]) {\n const i18n = this.get('I18n');\n return i18n?.t(...args);\n }\n\n /**\n * Returns true if the editor is in absolute mode\n * @returns {Boolean}\n */\n inAbsoluteMode() {\n return this.get('dmode') === 'absolute';\n }\n\n /**\n * Destroy editor\n */\n destroyAll() {\n const { config, view } = this;\n const editor = this.getEditor();\n const { editors = [] } = config.grapesjs || {};\n const shallow = this.get('shallow');\n shallow?.destroyAll();\n this.stopListening();\n this.stopDefault();\n this.modules\n .slice()\n .reverse()\n .forEach((mod) => mod.destroy());\n view && view.remove();\n this.clear({ silent: true });\n this.destroyed = true;\n ['_config', 'view', '_previousAttributes', '_events', '_listeners'].forEach(\n //@ts-ignore\n (i) => (this[i] = {})\n );\n editors.splice(editors.indexOf(editor), 1);\n //@ts-ignore\n hasWin() && $(config.el).empty().attr(this.attrsOrig);\n }\n\n getEditing() {\n const res = this.get('editing');\n return (res && res.model) || null;\n }\n\n setEditing(value: boolean) {\n this.set('editing', value);\n return this;\n }\n\n isEditing() {\n return !!this.get('editing');\n }\n\n log(msg: string, opts: any = {}) {\n const { ns, level = 'debug' } = opts;\n this.trigger('log', msg, opts);\n level && this.trigger(`log:${level}`, msg, opts);\n\n if (ns) {\n const logNs = `log-${ns}`;\n this.trigger(logNs, msg, opts);\n level && this.trigger(`${logNs}:${level}`, msg, opts);\n }\n }\n\n logInfo(msg: string, opts?: any) {\n this.log(msg, { ...opts, level: 'info' });\n }\n\n logWarning(msg: string, opts?: any) {\n this.log(msg, { ...opts, level: 'warning' });\n }\n\n logError(msg: string, opts?: any) {\n this.log(msg, { ...opts, level: 'error' });\n }\n\n initBaseColorPicker(el: any, opts = {}) {\n const { config } = this;\n const { colorPicker = {} } = config;\n const elToAppend = config.el;\n const ppfx = config.stylePrefix;\n\n //@ts-ignore\n return $(el).spectrum({\n containerClassName: `${ppfx}one-bg ${ppfx}two-color`,\n appendTo: elToAppend || 'body',\n maxSelectionSize: 8,\n showPalette: true,\n palette: [],\n showAlpha: true,\n chooseText: 'Ok',\n cancelText: '⨯',\n ...opts,\n ...colorPicker,\n });\n }\n\n /**\n * Execute actions without triggering the storage and undo manager.\n * @param {Function} clb\n * @private\n */\n skip(clb: Function) {\n this.__skip = true;\n const um = this.get('UndoManager');\n um ? um.skip(clb) : clb();\n this.__skip = false;\n }\n\n /**\n * Set/get data from the HTMLElement\n * @param {HTMLElement} el\n * @param {string} name Data name\n * @param {any} value Date value\n * @return {any}\n * @private\n */\n data(el: any, name: string, value: any) {\n const varName = '_gjs-data';\n\n if (!el[varName]) {\n el[varName] = {};\n }\n\n if (isUndefined(value)) {\n return el[varName][name];\n } else {\n el[varName][name] = value;\n }\n }\n}\n","import { isObject } from 'underscore';\n\nexport default ({ $ }) => {\n if ($ && $.prototype && $.prototype.constructor.name !== 'jQuery') {\n const fn = $.fn;\n\n // Additional helpers\n\n fn.hide = function () {\n return this.css('display', 'none');\n };\n\n fn.show = function () {\n return this.css('display', 'block');\n };\n\n fn.focus = function () {\n const el = this.get(0);\n el && el.focus();\n return this;\n };\n\n // For SVGs in IE\n // (fn.removeClass = function(c) {\n // if (!arguments.length) {\n // return this.attr('class', '');\n // }\n // const classes = isString(c) && c.match(/\\S+/g);\n // return classes\n // ? this.each(function(el) {\n // each(classes, function(c) {\n // if (el.classList) {\n // el.classList.remove(c);\n // } else {\n // const val = el.className;\n // const bval = el.className.baseVal;\n\n // if (!isUndefined(bval)) {\n // val.baseVal = bval.replace(c, '');\n // } else {\n // el.className = val.replace(c, '');\n // }\n // }\n // });\n // })\n // : this;\n // }),\n // (fn.remove = function() {\n // return this.each(node => {\n // return node.parentNode && node.parentNode.removeChild(node);\n // });\n // }),\n\n // For spectrum compatibility\n\n fn.bind = function (ev, h) {\n return this.on(ev, h);\n };\n\n fn.unbind = function (ev, h) {\n if (isObject(ev)) {\n for (let name in ev) {\n ev.hasOwnProperty(name) && this.off(name, ev[name]);\n }\n\n return this;\n } else {\n return this.off(ev, h);\n }\n };\n\n fn.click = function (h) {\n return h ? this.on('click', h) : this.trigger('click');\n };\n\n fn.change = function (h) {\n return h ? this.on('change', h) : this.trigger('change');\n };\n\n fn.keydown = function (h) {\n return h ? this.on('keydown', h) : this.trigger('keydown');\n };\n\n fn.delegate = function (selector, events, data, handler) {\n if (!handler) {\n handler = data;\n }\n\n return this.on(events, selector, function (e) {\n e.data = data;\n handler(e);\n });\n };\n\n fn.scrollLeft = function () {\n let el = this.get(0);\n el = el.nodeType == 9 ? el.defaultView : el;\n let win = el instanceof Window ? el : null;\n return win ? win.pageXOffset : el.scrollLeft || 0;\n };\n\n fn.scrollTop = function () {\n let el = this.get(0);\n el = el.nodeType == 9 ? el.defaultView : el;\n let win = el instanceof Window ? el : null;\n return win ? win.pageYOffset : el.scrollTop || 0;\n };\n\n const offset = $.prototype.offset;\n fn.offset = function (coords) {\n let top, left;\n\n if (coords) {\n top = coords.top;\n left = coords.left;\n }\n\n if (typeof top != 'undefined') {\n this.css('top', `${top}px`);\n }\n if (typeof left != 'undefined') {\n this.css('left', `${left}px`);\n }\n\n return offset.call(this);\n };\n\n $.map = function (items, clb) {\n const ar = [];\n\n for (var i = 0; i < items.length; i++) {\n ar.push(clb(items[i], i));\n }\n\n return ar;\n };\n\n const indexOf = Array.prototype.indexOf;\n\n $.inArray = function (val, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, val, i);\n };\n\n $.Event = function (src, props) {\n if (!(this instanceof $.Event)) {\n return new $.Event(src, props);\n }\n\n this.type = src;\n this.isDefaultPrevented = () => false;\n };\n }\n};\n","import Backbone from 'backbone';\nimport { View } from '../../common';\nimport { appendStyles } from '../../utils/mixins';\nimport EditorModel from '../model/Editor';\n\nconst $ = Backbone.$;\n\nexport default class EditorView extends View {\n constructor(model: EditorModel) {\n super({model})\n //const { model } = this;\n const { Panels, UndoManager } = model.attributes;\n model.view = this;\n model.once('change:ready', () => {\n Panels.active();\n Panels.disableButtons();\n UndoManager.clear();\n setTimeout(() => {\n model.trigger('load', model.get('Editor'));\n model.clearDirtyCount();\n });\n });\n }\n\n render() {\n const { $el, model } = this;\n const { Panels, Canvas } = model.attributes;\n const { config, modules } = model;\n const pfx = config.stylePrefix;\n const contEl = $(config.el || `body ${config.container}`);\n appendStyles(config.cssIcons, { unique: true, prepand: true });\n $el.empty();\n\n if (config.width) contEl.css('width', config.width);\n if (config.height) contEl.css('height', config.height);\n\n $el.append(Canvas.render());\n $el.append(Panels.render());\n\n // Load shallow editor\n const shallow = model.get('shallow');\n const shallowCanvasEl = shallow.get('Canvas').render();\n shallowCanvasEl.style.display = 'none';\n $el.append(shallowCanvasEl);\n\n $el.attr('class', `${pfx}editor ${pfx}one-bg ${pfx}two-color`);\n contEl.addClass(`${pfx}editor-cont`).empty().append($el);\n modules.forEach(md => md.postRender && md.postRender(this));\n\n return this;\n }\n}\n","/**\n * Editor contains the top level API which you'll probably use to customize the editor or extend it with plugins.\n * You get the Editor instance on init method and you can pass options via its [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/editor/config/config.js)\n *\n * ```js\n * const editor = grapesjs.init({\n * // options\n * });\n * ```\n *\n * ## Available Events\n *\n * You can make use of available events in this way\n * ```js\n * editor.on('EVENT-NAME', (some, argument) => {\n * // do something\n * })\n * ```\n *\n * * `update` - The structure of the template is updated (its HTML/CSS)\n * * `undo` - Undo executed\n * * `redo` - Redo executed\n * * `load` - Editor is loaded\n *\n * ### Components\n * Check the [Components](/api/components.html) module.\n * ### Keymaps\n * Check the [Keymaps](/api/keymaps.html) module.\n * ### Style Manager\n * Check the [Style Manager](/api/style_manager.html) module.\n * ### Storage\n * Check the [Storage](/api/storage_manager.html) module.\n * ### Canvas\n * Check the [Canvas](/api/canvas.html) module.\n * ### RTE\n * Check the [Rich Text Editor](/api/rich_text_editor.html) module.\n * ### Commands\n * Check the [Commands](/api/commands.html) module.\n * ### Selectors\n * Check the [Selectors](/api/selector_manager.html) module.\n * ### Blocks\n * Check the [Blocks](/api/block_manager.html) module.\n * ### Assets\n * Check the [Assets](/api/assets.html) module.\n * ### Modal\n * Check the [Modal](/api/modal_dialog.html) module.\n * ### Devices\n * Check the [Devices](/api/device_manager.html) module.\n * ### Parser\n * Check the [Parser](/api/parser.html) module.\n * ### Pages\n * Check the [Pages](/api/pages.html) module.\n *\n * ## Methods\n * @module Editor\n */\nimport { EventHandler } from 'backbone';\nimport { isUndefined } from 'underscore';\nimport { IBaseModule } from '../abstract/Module';\nimport cash from '../utils/cash-dom';\nimport html from '../utils/html';\nimport defaults from './config/config';\nimport EditorModel from './model/Editor';\nimport EditorView from './view/EditorView';\n\nexport default class EditorModule implements IBaseModule {\n constructor(config = {}, opts: any = {}) {\n //@ts-ignore\n this.config = {\n ...defaults,\n ...config,\n //@ts-ignore\n pStylePrefix: defaults.stylePrefix,\n };\n this.em = new EditorModel(this.config);\n this.$ = opts.$;\n this.em.init(this);\n this.editor = this.em;\n }\n editorView?: EditorView;\n editor: EditorModel;\n $: cash;\n em: EditorModel;\n config: typeof defaults;\n\n modules = [];\n\n //@ts-ignore\n get I18n(): I18nModule {\n return this.em.get('I18n');\n }\n //@ts-ignore\n get Utils(): UtilsModule {\n return this.em.get('Utils');\n }\n get Config(): any {\n return this.em.config;\n }\n //@ts-ignore\n get Commands(): CommandsModule {\n return this.em.get('Commands');\n }\n //@ts-ignore\n get Keymaps(): KeymapsModule {\n return this.em.get('Keymaps');\n }\n //@ts-ignore\n get Modal(): ModalModule {\n return this.em.get('Modal');\n }\n //@ts-ignore\n get Panels(): PanelsModule {\n return this.em.get('Panels');\n }\n //@ts-ignore\n get Canvas(): CanvasModule {\n return this.em.get('Canvas');\n }\n //@ts-ignore\n get Parser(): ParserModule {\n return this.em.get('Parser');\n }\n //@ts-ignore\n get CodeManager(): CodeManagerModule {\n return this.em.get('CodeManager');\n }\n //@ts-ignore\n get UndoManager(): UndoManagerModule {\n return this.em.get('UndoManager');\n }\n //@ts-ignore\n get RichTextEditor(): RichTextEditorModule {\n return this.em.get('RichTextEditor');\n }\n //@ts-ignore\n get Pages(): PageManagerModule {\n return this.em.get('PageManager');\n }\n //@ts-ignore\n get Components(): DomComponentsModule {\n return this.em.get('DomComponents');\n }\n //@ts-ignore\n get DomComponents(): DomComponentsModule {\n return this.em.get('DomComponents');\n }\n //@ts-ignore\n get Layers(): LayerManagerModule {\n return this.em.get('LayerManager');\n }\n //@ts-ignore\n get LayerManager(): LayerManagerModule {\n return this.em.get('LayerManager');\n }\n //@ts-ignore\n get Css(): CssComposerModule {\n return this.em.get('CssComposer');\n }\n //@ts-ignore\n get CssComposer(): CssComposerModule {\n return this.em.get('CssComposer');\n }\n //@ts-ignore\n get Storage(): StorageManagerModule {\n return this.em.get('StorageManager');\n }\n //@ts-ignore\n get StorageManager(): StorageManagerModule {\n return this.em.get('StorageManager');\n }\n //@ts-ignore\n get Assets(): AssetManagerModule {\n return this.em.get('AssetManager');\n }\n //@ts-ignore\n get AssetManager(): AssetManagerModule {\n return this.em.get('AssetManager');\n }\n //@ts-ignore\n get Blocks(): BlockManagerModule {\n return this.em.get('BlockManager');\n }\n //@ts-ignore\n get BlockManager(): BlockManagerModule {\n return this.em.get('BlockManager');\n }\n //@ts-ignore\n get Traits(): TraitManagerModule {\n return this.em.get('TraitManager');\n }\n //@ts-ignore\n get TraitManager(): TraitManagerModule {\n return this.em.get('TraitManager');\n }\n //@ts-ignore\n get Selectors(): SelectorManagerCollectionModule {\n return this.em.get('SelectorManager');\n }\n //@ts-ignore\n get SelectorManager(): SelectorManagerCollectionModule {\n return this.em.get('SelectorManager');\n }\n //@ts-ignore\n get Styles(): StyleManagerModule {\n return this.em.get('StyleManager');\n }\n //@ts-ignore\n get StyleManager(): StyleManagerModule {\n return this.em.get('StyleManager');\n }\n //@ts-ignore\n get Devices(): DeviceManagerModule {\n return this.em.get('DeviceManager');\n }\n //@ts-ignore\n get DeviceManager(): DeviceManagerModule {\n return this.em.get('DeviceManager');\n }\n\n /**\n * Returns configuration object\n * @returns {any} Returns the configuration object or the value of the specified property\n */\n getConfig(prop?: string) {\n const config = this.config;\n //@ts-ignore\n return isUndefined(prop) ? config : config[prop];\n }\n\n /**\n * Returns HTML built inside canvas\n * @param {Object} [opts={}] Options\n * @param {Component} [opts.component] Return the HTML of a specific Component\n * @param {Boolean} [opts.cleanId=false] Remove unnecessary IDs (eg. those created automatically)\n * @returns {string} HTML string\n */\n getHtml(opts: any) {\n return this.em.getHtml(opts);\n }\n\n /**\n * Returns CSS built inside canvas\n * @param {Object} [opts={}] Options\n * @param {Component} [opts.component] Return the CSS of a specific Component\n * @param {Boolean} [opts.json=false] Return an array of CssRules instead of the CSS string\n * @param {Boolean} [opts.avoidProtected=false] Don't include protected CSS\n * @param {Boolean} [opts.onlyMatched=false] Return only rules matched by the passed component.\n * @param {Boolean} [opts.keepUnusedStyles=false] Force keep all defined rules. Toggle on in case output looks different inside/outside of the editor.\n * @returns {String|Array} CSS string or array of CssRules\n */\n getCss(opts: any) {\n return this.em.getCss(opts);\n }\n\n /**\n * Returns JS of all components\n * @param {Object} [opts={}] Options\n * @param {Component} [opts.component] Get the JS of a specific component\n * @returns {String} JS string\n */\n getJs(opts: any) {\n return this.em.getJs(opts);\n }\n\n /**\n * Return the complete tree of components. Use `getWrapper` to include also the wrapper\n * @return {Components}\n */\n getComponents() {\n return this.em.get('DomComponents').getComponents();\n }\n\n /**\n * Return the wrapper and its all components\n * @return {Component}\n */\n getWrapper() {\n return this.em.get('DomComponents').getWrapper();\n }\n\n /**\n * Set components inside editor's canvas. This method overrides actual components\n * @param {Array|Object|string} components HTML string or components model\n * @param {Object} opt the options object to be used by the [setComponents]{@link em#setComponents} method\n * @return {this}\n * @example\n * editor.setComponents('
New component
');\n * // or\n * editor.setComponents({\n * type: 'text',\n * classes:['cls'],\n * content: 'New component'\n * });\n */\n setComponents(components: any, opt = {}) {\n this.em.setComponents(components, opt);\n return this;\n }\n\n /**\n * Add components\n * @param {Array|Object|string} components HTML string or components model\n * @param {Object} opts Options\n * @param {Boolean} [opts.avoidUpdateStyle=false] If the HTML string contains styles,\n * by default, they will be created and, if already exist, updated. When this option\n * is true, styles already created will not be updated.\n * @return {Array}\n * @example\n * editor.addComponents('
New component
');\n * // or\n * editor.addComponents({\n * type: 'text',\n * classes:['cls'],\n * content: 'New component'\n * });\n */\n addComponents(components: any, opts: any) {\n return this.getWrapper().append(components, opts);\n }\n\n /**\n * Returns style in JSON format object\n * @return {Object}\n */\n getStyle() {\n return this.em.get('CssComposer').getAll();\n }\n\n /**\n * Set style inside editor's canvas. This method overrides actual style\n * @param {Array|Object|string} style CSS string or style model\n * @return {this}\n * @example\n * editor.setStyle('.cls{color: red}');\n * //or\n * editor.setStyle({\n * selectors: ['cls'],\n * style: { color: 'red' }\n * });\n */\n setStyle(style: any, opt = {}) {\n this.em.setStyle(style, opt);\n return this;\n }\n\n /**\n * Add styles to the editor\n * @param {Array|Object|string} style CSS string or style model\n * @returns {Array} Array of created CssRule instances\n * @example\n * editor.addStyle('.cls{color: red}');\n */\n addStyle(style: any, opts = {}) {\n return this.em.addStyle(style, opts);\n }\n\n /**\n * Returns the last selected component, if there is one\n * @return {Model}\n */\n getSelected() {\n return this.em.getSelected();\n }\n\n /**\n * Returns an array of all selected components\n * @return {Array}\n */\n getSelectedAll() {\n return this.em.getSelectedAll();\n }\n\n /**\n * Get a stylable entity from the selected component.\n * If you select a component without classes the entity is the Component\n * itself and all changes will go inside its 'style' attribute. Otherwise,\n * if the selected component has one or more classes, the function will\n * return the corresponding CSS Rule\n * @return {Model}\n */\n getSelectedToStyle() {\n let selected = this.em.getSelected();\n\n if (selected) {\n return this.StyleManager.getModelToStyle(selected);\n }\n }\n\n /**\n * Select a component\n * @param {Component|HTMLElement} el Component to select\n * @param {Object} [opts] Options\n * @param {Boolean} [opts.scroll] Scroll canvas to the selected element\n * @return {this}\n * @example\n * // Select dropped block\n * editor.on('block:drag:stop', function(model) {\n * editor.select(model);\n * });\n */\n select(el: any, opts: any) {\n this.em.setSelected(el, opts);\n return this;\n }\n\n /**\n * Add component to selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectAdd(model);\n */\n selectAdd(el: any) {\n this.em.addSelected(el);\n return this;\n }\n\n /**\n * Remove component from selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectRemove(model);\n */\n selectRemove(el: any) {\n this.em.removeSelected(el);\n return this;\n }\n\n /**\n * Toggle component selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectToggle(model);\n */\n selectToggle(el: any) {\n this.em.toggleSelected(el);\n return this;\n }\n\n /**\n * Returns, if active, the Component enabled in rich text editing mode.\n * @returns {Component|null}\n * @example\n * const textComp = editor.getEditing();\n * if (textComp) {\n * console.log('HTML: ', textComp.toHTML());\n * }\n */\n getEditing() {\n return this.em.getEditing();\n }\n\n /**\n * Set device to the editor. If the device exists it will\n * change the canvas to the proper width\n * @param {string} name Name of the device\n * @return {this}\n * @example\n * editor.setDevice('Tablet');\n */\n setDevice(name: string) {\n this.em.set('device', name);\n return this;\n }\n\n /**\n * Return the actual active device\n * @return {string} Device name\n * @example\n * var device = editor.getDevice();\n * console.log(device);\n * // 'Tablet'\n */\n getDevice() {\n return this.em.get('device');\n }\n\n /**\n * Execute command\n * @param {string} id Command ID\n * @param {Object} options Custom options\n * @return {*} The return is defined by the command\n * @example\n * editor.runCommand('myCommand', {someValue: 1});\n */\n runCommand(id: string, options = {}) {\n return this.em.get('Commands').run(id, options);\n }\n\n /**\n * Stop the command if stop method was provided\n * @param {string} id Command ID\n * @param {Object} options Custom options\n * @return {*} The return is defined by the command\n * @example\n * editor.stopCommand('myCommand', {someValue: 1});\n */\n stopCommand(id: string, options = {}) {\n return this.em.get('Commands').stop(id, options);\n }\n\n /**\n * Store data to the current storage.\n * This will reset the counter of changes (`editor.getDirtyCount()`).\n * @param {Object} [options] Storage options.\n * @returns {Object} Stored data.\n * @example\n * const storedData = await editor.store();\n */\n async store(options: any) {\n return await this.em.store(options);\n }\n\n /**\n * Load data from the current storage.\n * @param {Object} [options] Storage options.\n * @returns {Object} Loaded data.\n * @example\n * const data = await editor.load();\n */\n async load(options: any) {\n return await this.em.load(options);\n }\n\n /**\n * Get the JSON project data, which could be stored and loaded back with `editor.loadProjectData(json)`\n * @returns {Object}\n * @example\n * console.log(editor.getProjectData());\n * // { pages: [...], styles: [...], ... }\n */\n getProjectData() {\n return this.em.storeData();\n }\n\n /**\n * Load data from the JSON project\n * @param {Object} data Project to load\n * @example\n * editor.loadProjectData({ pages: [...], styles: [...], ... })\n */\n loadProjectData(data: any) {\n return this.em.loadData(data);\n }\n\n storeData() {\n return this.em.storeData();\n }\n\n loadData(data: any) {\n return this.em.loadData(data);\n }\n\n /**\n * Returns container element. The one which was indicated as 'container'\n * on init method\n * @return {HTMLElement}\n */\n getContainer() {\n return this.config.el;\n }\n\n /**\n * Return the count of changes made to the content and not yet stored.\n * This count resets at any `store()`\n * @return {number}\n */\n getDirtyCount() {\n return this.em.getDirtyCount();\n }\n\n /**\n * Reset the counter of changes.\n */\n clearDirtyCount() {\n return this.em.clearDirtyCount();\n }\n\n /**\n * Update editor dimension offsets\n *\n * This method could be useful when you update, for example, some position\n * of the editor element (eg. canvas, panels, etc.) with CSS, where without\n * refresh you'll get misleading position of tools\n * @param {Object} [options] Options\n * @param {Boolean} [options.tools=false] Update the position of tools (eg. rich text editor, component highlighter, etc.)\n */\n refresh(opts?: any) {\n this.em.refreshCanvas(opts);\n }\n\n /**\n * Replace the built-in Rich Text Editor with a custom one.\n * @param {Object} obj Custom RTE Interface\n * @example\n * editor.setCustomRte({\n * // Function for enabling custom RTE\n * // el is the HTMLElement of the double clicked Text Component\n * // rte is the same instance you have returned the first time you call\n * // enable(). This is useful if need to check if the RTE is already enabled so\n * // ion this case you'll need to return the RTE and the end of the function\n * enable: function(el, rte) {\n * rte = new MyCustomRte(el, {}); // this depends on the Custom RTE API\n * ...\n * return rte; // return the RTE instance\n * }\n *\n * // Disable the editor, called for example when you unfocus the Text Component\n * disable: function(el, rte) {\n * rte.blur(); // this depends on the Custom RTE API\n * }\n *\n * // Called when the Text Component is focused again. If you returned the RTE instance\n * // from the enable function, the enable won't be called again instead will call focus,\n * // in this case to avoid double binding of the editor\n * focus: function (el, rte) {\n * rte.focus(); // this depends on the Custom RTE API\n * }\n * });\n */\n setCustomRte(obj: any) {\n this.RichTextEditor.customRte = obj;\n }\n\n /**\n * Replace the default CSS parser with a custom one.\n * The parser function receives a CSS string as a parameter and expects\n * an array of CSSRule objects as a result. If you need to remove the\n * custom parser, pass `null` as the argument\n * @param {Function|null} parser Parser function\n * @return {this}\n * @example\n * editor.setCustomParserCss(css => {\n * const result = [];\n * // ... parse the CSS string\n * result.push({\n * selectors: '.someclass, div .otherclass',\n * style: { color: 'red' }\n * })\n * // ...\n * return result;\n * });\n */\n setCustomParserCss(parser: any) {\n this.Parser.getConfig().parserCss = parser;\n return this;\n }\n\n /**\n * Change the global drag mode of components.\n * To get more about this feature read: https://github.com/artf/grapesjs/issues/1936\n * @param {String} value Drag mode, options: 'absolute' | 'translate'\n * @returns {this}\n */\n setDragMode(value: string) {\n this.em.setDragMode(value);\n return this;\n }\n\n /**\n * Trigger event log message\n * @param {*} msg Message to log\n * @param {Object} [opts={}] Custom options\n * @param {String} [opts.ns=''] Namespace of the log (eg. to use in plugins)\n * @param {String} [opts.level='debug'] Level of the log, `debug`, `info`, `warning`, `error`\n * @return {this}\n * @example\n * editor.log('Something done!', { ns: 'from-plugin-x', level: 'info' });\n * // This will trigger following events\n * // `log`, `log:info`, `log-from-plugin-x`, `log-from-plugin-x:info`\n * // Callbacks of those events will always receive the message and\n * // options, as arguments, eg:\n * // editor.on('log:info', (msg, opts) => console.info(msg, opts))\n */\n log(msg: string, opts = {}) {\n this.em.log(msg, opts);\n return this;\n }\n\n /**\n * Translate label\n * @param {String} key Label to translate\n * @param {Object} [opts] Options for the translation\n * @param {Object} [opts.params] Params for the translation\n * @param {Boolean} [opts.noWarn] Avoid warnings in case of missing resources\n * @returns {String}\n * @example\n * editor.t('msg');\n * // use params\n * editor.t('msg2', { params: { test: 'hello' } });\n * // custom local\n * editor.t('msg2', { params: { test: 'hello' } l: 'it' });\n */\n t(...args: any[]) {\n return this.em.t(...args);\n }\n\n /**\n * Attach event\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n on(event: string, callback: EventHandler) {\n this.em.on(event, callback);\n return this;\n }\n\n /**\n * Attach event and detach it after the first run\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n once(event: string, callback: EventHandler) {\n this.em.once(event, callback);\n return this;\n }\n\n /**\n * Detach event\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n off(event: string, callback: EventHandler) {\n this.em.off(event, callback);\n return this;\n }\n\n /**\n * Trigger event\n * @param {string} event Event to trigger\n * @return {this}\n */\n trigger(eventName: string, ...args: any[]) {\n this.em.trigger.apply(this.em, [eventName, ...args]);\n return this;\n }\n\n /**\n * Destroy the editor\n */\n destroy() {\n if (!this.em) return;\n this.em.destroyAll();\n this.editorView = undefined;\n }\n\n /**\n * Returns editor element\n * @return {HTMLElement}\n * @private\n */\n getEl() {\n return this.editorView?.el;\n }\n\n /**\n * Returns editor model\n * @return {Model}\n * @private\n */\n getModel() {\n return this.em;\n }\n\n /**\n * Render editor\n * @return {HTMLElement}\n */\n render() {\n this.editorView?.remove();\n this.editorView = new EditorView(this.em);\n return this.editorView.render().el;\n }\n\n /**\n * Trigger a callback once the editor is loaded and rendered.\n * The callback will be executed immediately if the method is called on the already rendered editor.\n * @param {Function} clb Callback to trigger\n * @example\n * editor.onReady(() => {\n * // perform actions\n * });\n */\n onReady(clb: EventHandler) {\n this.em.get('ready') ? clb(this) : this.em.on('load', clb);\n }\n\n /**\n * Print safe HTML by using ES6 tagged template strings.\n * @param {Array} literals\n * @param {Array} substs\n * @returns {String}\n * @example\n * const unsafeStr = '';\n * const safeStr = 'Hello';\n * // Use `$${var}` to avoid escaping\n * const strHtml = editor.html`Escaped ${unsafeStr} unescaped $${safeStr}`;\n */\n html = html;\n}\n","export default {\n plugins: [],\n};\n","/**\n * File made for IE/Edge support\n * https://github.com/artf/grapesjs/issues/214\n */\nimport { hasWin } from './mixins';\n\nexport default () => {\n /**\n * Check if IE/Edge\n * @return {Boolean}\n */\n const isIE = () => {\n let match;\n const agent = window.navigator.userAgent;\n const rules = [\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ];\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i];\n match = rule[1].exec(agent);\n if (match) break;\n }\n\n return !!match;\n };\n\n if (hasWin() && isIE()) {\n const originalCreateHTMLDocument = DOMImplementation.prototype.createHTMLDocument;\n DOMImplementation.prototype.createHTMLDocument = title => {\n if (!title) title = '';\n return originalCreateHTMLDocument.apply(document.implementation, [title]);\n };\n }\n};\n","import { isElement, isFunction } from 'underscore';\nimport $ from './utils/cash-dom';\nimport Editor from './editor';\nimport polyfills from './utils/polyfills';\nimport { getGlobal } from './utils/mixins';\nimport PluginManager from './plugin_manager';\n\npolyfills();\n\nconst plugins = new PluginManager();\nconst editors = [];\nconst defaultConfig = {\n // If true renders editor on init\n autorender: 1,\n\n // Array of plugins to init\n plugins: [],\n\n // Custom options for plugins\n pluginsOpts: {},\n};\n\nexport default {\n $,\n\n editors,\n\n plugins,\n\n // Will be replaced on build\n version: __GJS_VERSION__,\n\n /**\n * Initialize the editor with passed options\n * @param {Object} config Configuration object\n * @param {string|HTMLElement} config.container Selector which indicates where render the editor\n * @param {Boolean} [config.autorender=true] If true, auto-render the content\n * @param {Array} [config.plugins=[]] Array of plugins to execute on start\n * @param {Object} [config.pluginsOpts={}] Custom options for plugins\n * @param {Boolean} [config.headless=false] Init headless editor\n * @return {Editor} Editor instance\n * @example\n * var editor = grapesjs.init({\n * container: '#myeditor',\n * components: '
Hello world
',\n * style: '.hello{color: red}',\n * })\n */\n init(config = {}) {\n const { headless } = config;\n const els = config.container;\n if (!els && !headless) throw new Error(\"'container' is required\");\n config = { ...defaultConfig, ...config, grapesjs: this };\n config.el = !headless && (isElement(els) ? els : document.querySelector(els));\n const editor = new Editor(config, { $ });\n const em = editor.getModel();\n\n // Load plugins\n config.plugins.forEach(pluginId => {\n let plugin = isFunction(pluginId) ? pluginId : plugins.get(pluginId);\n const plgOptions = config.pluginsOpts[pluginId] || {};\n\n // Try to search in global context\n if (!plugin) {\n const wplg = getGlobal()[pluginId];\n plugin = wplg?.default || wplg;\n }\n\n if (plugin) {\n plugin(editor, plgOptions);\n } else if (isFunction(pluginId)) {\n pluginId(editor, plgOptions);\n } else {\n em.logWarning(`Plugin ${pluginId} not found`, {\n context: 'plugins',\n plugin: pluginId,\n });\n }\n });\n\n // Execute `onLoad` on modules once all plugins are initialized.\n // A plugin might have extended/added some custom type so this\n // is a good point to load stuff like components, css rules, etc.\n em.loadOnStart();\n config.autorender && !headless && editor.render();\n editors.push(editor);\n\n return editor;\n },\n};\n","import defaults from './config/config';\n\nexport default config => {\n var c = config || {};\n\n // Set default options\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n var plugins = {};\n\n return {\n /**\n * Add new plugin. Plugins could not be overwritten\n * @param {string} id Plugin ID\n * @param {Function} plugin Function which contains all plugin logic\n * @return {Function} The plugin function\n * @example\n * PluginManager.add('some-plugin', function(editor){\n * editor.Commands.add('new-command', {\n * run: function(editor, senderBtn){\n * console.log('Executed new-command');\n * }\n * })\n * });\n */\n add(id, plugin) {\n if (plugins[id]) {\n return plugins[id];\n }\n\n plugins[id] = plugin;\n return plugin;\n },\n\n /**\n * Returns plugin by ID\n * @param {string} id Plugin ID\n * @return {Function|undefined} Plugin\n * @example\n * var plugin = PluginManager.get('some-plugin');\n * plugin(editor);\n */\n get(id) {\n return plugins[id];\n },\n\n /**\n * Returns object with all plugins\n * @return {Object}\n */\n getAll() {\n return plugins;\n },\n };\n};\n"],"names":["root","factory","exports","module","define","amd","globalThis","window","this","_","Backbone","core_slice","Array","prototype","slice","apply","fn","ctx","args","length","call","arr","index","hasKeys","obj","keys","isArray","arguments","all","key","getMagicFusionIndex","callstackWasIndexed","magicFusionIndex","indexCycle","defer","ObjectRegistry","registeredObjects","cidIndexes","onoff","which","objects","i","l","objectRegistry","register","unregister","isFunction","actionUndoRedo","action","type","undoTypes","object","before","after","options","managerUndoRedo","manager","stack","magic","everything","isCurrentlyUndoRedoing","pointer","actions","isUndo","clone","models","at","where","get","pop","shift","trigger","validateUndoActionCreation","undoTypesType","condition","addToStack","track","res","diff","add","maximumStackLength","isRegistered","cid","contains","push","splice","indexOf","map","concat","UndoTypes","collection","ignore","model","remove","undefined","isEmpty","each","unset","set","unsetData","afterAttributes","changedAttributes","keysAfter","previousAttributes","pick","keysPrevious","val","reset","previousModels","OwnedUndoTypes","manipulateUndoType","manipType","undoType","fns","undoTypesInstance","isObject","extend","Action","Model","defaults","undo","attributes","redo","UndoStack","Collection","Infinity","setMaxLength","UndoManager","initialize","attr","on","value","startTracking","isArguments","stopTracking","isTracking","_addToStack","unregisterAll","undoAll","redoAll","isAvailable","s","merge","undoManager","addUndoType","changeUndoType","removeUndoType","clear","defaultAttributes","self","g","global","$","previousBackbone","VERSION","noConflict","emulateHTTP","emulateJSON","addMethod","method","attribute","iteratee","context","cb","defaultVal","unshift","addUnderscoreMethods","Class","methods","instance","_isModel","modelMatcher","isString","attrs","matcher","matches","Events","eventSplitter","eventsApi","events","name","callback","opts","names","test","split","internalOn","listening","_events","onApi","_listeners","id","listenTo","_listenId","uniqueId","listeningTo","_listeningTo","thisId","objId","count","handlers","off","offApi","listeners","stopListening","ids","remaining","j","handler","_callback","once","onceMap","bind","listenToOnce","offer","Math","max","triggerApi","objEvents","allEvents","triggerEvents","ev","a1","a2","a3","unbind","cidPrefix","parse","result","changed","validationError","idAttribute","toJSON","sync","escape","has","_validate","silent","changes","changing","_changing","_previousAttributes","current","prev","isEqual","_pending","hasChanged","old","size","previous","fetch","success","resp","serverAttrs","wrapError","save","wait","validate","isNew","patch","xhr","destroy","url","base","urlError","replace","encodeURIComponent","constructor","isValid","error","values","pairs","invert","omit","chain","comparator","_reset","setOptions","addOptions","array","insert","min","tail","singular","removed","_removeModels","added","merged","toAdd","toMerge","toRemove","modelMap","sort","sortable","sortAttr","existing","_prepareModel","_addReference","orderChanged","some","m","_removeReference","_byId","modelId","first","findWhere","Error","sortBy","pluck","create","callbackOpts","_onModelEvent","event","prevId","forEach","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","any","include","includes","invoke","toArray","head","take","initial","rest","drop","last","without","difference","shuffle","lastIndexOf","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","selector","$el","render","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","match","delegate","eventName","listener","undelegate","_createElement","document","createElement","className","_setAttributes","methodMap","params","dataType","data","contentType","JSON","stringify","_method","beforeSend","setRequestHeader","processData","textStatus","errorThrown","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","history","fragment","_extractParameters","execute","navigate","optional","RegExp","exec","param","decodeURIComponent","History","checkUrl","location","routeStripper","rootStripper","pathStripper","started","interval","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","href","getHash","getPath","path","charAt","getFragment","_usePushState","_wantsHashChange","start","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","rootPath","iframe","src","style","display","tabIndex","body","iWindow","insertBefore","firstChild","contentWindow","open","close","hash","addEventListener","attachEvent","_checkUrlInterval","setInterval","loadUrl","stop","removeEventListener","detachEvent","removeChild","clearInterval","e","title","assign","_updateHash","protoProps","staticProps","child","parent","__super__","CodeMirror","extendMode","commentStart","commentEnd","newlineAfterToken","_type","content","textAfter","state","jsonMode","lexical","inlineElements","inline","configuration","defineExtension","isComment","from","to","cm","curMode","innerMode","getMode","getTokenAt","mode","operation","replaceRange","line","ch","setCursor","selText","getRange","startIndex","endIndex","substr","substring","cmInstance","indentLine","outer","text","copyState","tabSize","getOption","out","lines","atSol","newline","stream","StringStream","eol","inner","token","cur","pos","string","blankLine","end","setSelection","getCursor","mod","userAgent","navigator","platform","gecko","ie_upto10","ie_11up","edge","ie","ie_version","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","Number","flipCtrlCmd","captureRightClick","classTest","cls","range","rmClass","node","removeChildren","childNodes","removeChildrenAndAdd","appendChild","elt","tag","cssText","createTextNode","eltP","setAttribute","nodeType","parentNode","host","activeElt","activeElement","shadowRoot","addClass","joinClasses","a","b","as","createRange","endNode","r","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","f","copyObj","target","overwrite","prop","hasOwnProperty","countColumn","startValue","search","n","nextTab","selectionStart","selectionEnd","_e","Delayed","time","onTimeout","Date","setTimeout","ms","clearTimeout","scrollerGap","Pass","toString","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","col","skipped","spaceStrs","spaceStr","lst","insertSorted","score","priority","nothing","createObj","props","inst","Object","nonASCIISingleCaseWordChar","isWordCharBasic","toUpperCase","toLowerCase","isWordChar","helper","source","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","findFirst","pred","midF","mid","ceil","floor","iterateBidiSections","order","found","part","level","bidiOther","getBidiPartAt","sticky","bidiOrdering","lowTypes","arabicTypes","charType","code","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","direction","outerType","len","types","i$1","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","i$5","cur$1","type$4","i$6","end$1","replace$1","j$1","i$7","isRTL","j$2","nstart","reverse","getOrder","noHandlers","emitter","_handlers","getHandlers","signal","signalDOMEvent","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","nl","rt","hasSelection","getSelection","te","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","hasBadZoomedRects","normal","fromRange","abs","modes","mimeModes","defineMode","dependencies","defineMIME","mime","spec","resolveMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","properties","nstate","info","startState","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","chunk","children","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","height","lineNo","no","lineAtHeight","h","lh","isLine","lineNumberFor","String","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","clipPos","clipToLen","linelen","clipPosArray","sol","peek","next","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","hideFirstChars","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","o","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","styleClasses","highlightFrontier","modeFrontier","precise","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","callBlankLine","readToken","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","indented","retreatFrontier","sawReadOnlySpans","sawCollapsedSpans","seeReadOnlySpans","seeCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","addMarkedSpan","op","inThisOp","WeakSet","markedSpans","attachLine","markedSpansBefore","startCh","isInsert","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","startsBefore","stretchSpansOverChange","change","full","oldFirst","oldLast","sameLine","offset","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","removeReadOnlyRanges","markers","mark","readOnly","parts","mk","p","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","found$1","findMaxLine","d","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","updateLine","estHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","startStyle","endStyle","css","displayText","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","foundBookmarks","endStyles","upto","tokenText","LineView","hidden","buildViewArray","nextPos","view","operationGroup","pushOperation","ops","ownsGroup","delayedCallbacks","fireCallbacksForOps","group","callbacks","cursorActivityCalled","finishOperation","endCb","orphanDelayedCallbacks","signalLater","list","fireOrphanDelayed","delayed","updateLineForChanges","dims","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","updateLineBackground","background","wrap","getLineContent","ext","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","k","gutterSpecs","gutterWidth","alignable","isWidget","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","parseInt","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","ensureLineHeights","rect","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","bottom","top","mapFromLineView","updateExternalMeasurement","lineMeasure","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","measureCharInner","bogus","rtop","rbottom","measureText","nullRect","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","place","maybeUpdateRectForZooming","rSpan","charWidth","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","partPos","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","posFromMouse","liberal","forRect","space","clientX","clientY","e$1","colDiff","round","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","empty","showCursorWhenSelecting","drawSelectionCursor","drawSelectionRange","cursor","cursorHeight","getWrapperElement","charPos","otherCursor","cmpCoords","padding","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","blinker","cursorDiv","visibility","cursorBlinkRate","hasFocus","onBlur","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","draggingText","selForContextMenu","receivedFocus","updateHeightsInViewport","prevBottom","lineDiv","viewTop","oldHeight","mustScroll","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","maybeScrollWindow","doScroll","innerHeight","scrollNode","scrollIntoView","scrollPosIntoView","margin","limit","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","updateScrollTop","setScrollLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToRange","scrollToCoordsRange","sPos","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","markArrays","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","scrollbarsClipped","marginBottom","borderRightWidth","selectionSnapshot","active","anchorNode","anchorOffset","focusNode","focusOffset","restoreSelection","snapshot","nodeName","removeAllRanges","addRange","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","toUpdate","selSnapshot","patchDisplay","selectionDiv","reportedViewFrom","reportedViewTo","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumInnerWidth","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","init","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","movedX","movedY","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","hint","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","linesFor","firstLine","lastText","lastSpans","nlines","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","directionChanged","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","addSelectionToHistory","clearRedo","dest","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","newChanges","extendRange","posBefore","extendSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","filterSelectionChange","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","v","shiftDoc","distance","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","addLineWidget","insertAt","aboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","markTextShared","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","withOp","visual","dHeight","SharedTextMarker","cloneNode","isParent","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","getValue","join","lineSeparator","setValue","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","t","readTextFromFile","file","allowDropFileTypes","reader","onerror","onload","readAsText","text$1","getData","selected","onDragStart","setData","effectAllowed","setDragImage","img","_top","onDragOver","frag","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","registerGlobalHandlers","resizeTimer","onResize","setSize","keyNames","fromCharCode","keyMap","normalizeKeyName","alt","ctrl","cmd","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","moveVisually","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","nextCh","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","lookupKeyForEditor","keyMaps","extraKeys","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","handleKeyBinding","motion","handleCharBinding","lastStoppedKey","onKeyDown","getField","handled","showCrossHair","up","onKeyUp","onKeyPress","charCode","lastClick","lastDoubleClick","DOUBLECLICK_DELAY","PastClick","clickRepeat","now","compare","onMouseDown","supportsTouch","clickInGutter","repeat","selectingText","handleMappedButton","leftButtonDown","onContextMenu","configureMouse","option","unit","addNew","moveOnDrag","contained","behavior","dragDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","rangeForUnit","findWordAt","ourRange","ourIndex","startSel","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","bidiSimplify","editorSize","counter","curCount","move","buttons","anchorLine","boundary","headIndex","usePart","gutterEvent","prevent","mX","mY","touches","lineBox","contextMenuInGutter","themeChanged","theme","Init","optionHandlers","defineOptions","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","spellcheck","autocorrect","autocapitalize","detach","attach","wrappingChanged","integer","blur","readOnlyChanged","screenReaderLabelChanged","dragDropChanged","resetPosition","funcs","dragFunctions","toggle","enter","over","leave","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","registerEventHandlers","finishInit","initHooks","textRendering","word","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","pageX","pageY","inp","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","hiddenTextarea","border","addEditorMethods","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getLineTokens","getTokenTypeAt","getHelper","getHelpers","help","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","hitSide","rtlMoveVisually","findPosV","goalColumn","goals","headPos","startChar","check","scrollTo","getScrollInfo","interpret","swapDoc","phrase","phraseText","phrases","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","origDir","lineDir","findNextLine","moveOnce","boundToLine","astral","sawType","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","isInGutter","scan","badPos","bad","domTextBetween","closing","extraLinebreak","recognizeMarker","addText","walk","cmText","markerID","isBlock","textContent","nodeValue","domToPos","lineNode","locateNodeInLineView","textNode","topNode","curNode","previousSibling","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","contentEditable","updateFromDOM","readFromDOMSoon","forceCompositionEnd","label","removeAttribute","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","TextareaInput","prevInput","pollingFast","fromTextArea","textarea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","addLegacyProps","cmpPos","createField","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","dontDelegate","func","defineDocExtension","version","keySet","config","parserConfig","propertyKeywords","tokenHooks","documentTypes","mediaTypes","mediaFeatures","mediaValueKeywords","nonStandardPropertyKeywords","fontProperties","counterDescriptors","colorKeywords","valueKeywords","allowNested","lineComment","supportsAtComponent","highlightNonStandardPropertyKeywords","ret","tp","tokenBase","tokenize","tokenString","tokenParenthesized","quote","escaped","pushContext","popContext","pass","states","popAndPass","wordAsValue","stateArg","_stream","atBlock","cx","blockCommentStart","blockCommentEnd","blockCommentContinue","fold","documentTypes_","mediaTypes_","mediaFeatures_","mediaValueKeywords_","propertyKeywords_","nonStandardPropertyKeywords_","colorKeywords_","valueKeywords_","allWords","tokenCComment","maybeEnd","defaultTags","script","maybeBackup","pat","attrRegexpCache","getAttrRegexp","regexp","getAttrValue","getTagRegexp","anchored","addTags","findMatchingMode","tagInfo","tagText","htmlMode","multilineTagIndentFactor","multilineTagIndentPastTag","allowMissingTagName","tags","configTags","configScript","scriptTypes","html","htmlState","inTag","endTagA","endTag","localState","localMode","local","statementIndent","jsonldMode","jsonld","json","trackScope","isTS","typescript","wordRE","wordCharacters","keywords","kw","A","B","C","D","operator","atom","isOperatorChar","isJsonldKeyword","readRegexp","inSet","cont","tokenComment","expressionAllowed","tokenQuasi","lastType","propertyIsEnumerable","brackets","findFatArrow","fatArrowAt","arrow","depth","sawSomething","bracket","atomicTypes","JSLexical","inScope","varname","localVars","vars","parseJS","cc","marked","expression","statement","lex","inList","block","newContext","registerVarScoped","Var","globalVars","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","poplex","expect","wanted","exp","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","enumdef","typename","typeexpr","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","maybeTarget","expr","property","continueQuasi","targetNoComma","maybeTypeArgs","getterSetter","afterprop","maybetype","what","sep","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprops","typearg","maybeReturnType","quasiType","typeprop","functiondecl","continueQuasiType","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","forspec1","forspec2","classNameAfter","classBody","classfield","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","isContinuedStatement","basecolumn","firstChar","c","doubleIndentSwitch","closeBrackets","skipExpression","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","editorConf","config_","setStyle","inText","parser","inBlock","doctype","baseState","tagStart","inAttribute","stringStartCol","closure","isInAttribute","terminator","lower","startOfLine","noIndent","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","attrEqState","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","alignCDATA","tagAfter","grabbers","skipAttribute","xmlCurrentTag","xmlCurrentContext","ModuleLegacy","__getConfig","storageKey","getAll","onResult","coll","err","__logWarn","isDef","acc","def","conf","deepMerge","em","__catchAllEvent","collections","entity","md","removeBefore","abort","__onAllEvent","elTo","getConfig","appendTo","isElement","logWarning","ln","allMap","getAllMap","createId","assets","noAssets","stylePrefix","upload","uploadName","headers","credentials","multiUpload","autoAdd","customFetch","uploadFile","embedAsBase64","handleAdd","beforeUpload","showUrlInput","custom","dropzone","openAssetsOnDrop","dropzoneContent","Asset","getFilename","getDefaults","AssetImage","unitDim","AssetView","pfx","ppfx","pStylePrefix","am","__getBehaviour","getPreview","getInfo","innerHTML","template","AssetImageView","dim","__getBhv","onClick","updateTarget","onDblClick","onSelect","stopImmediatePropagation","click","dblclick","Assets","TypeableCollection","isType","AssetsView","renderAssets","addToAsset","removedAsset","deselectAll","getAddInput","trim","getAssetsEl","globalCollection","inputUrl","toggleNoAssets","addAsset","fragmentEl","rendered","typeView","assetsEl","hide","append","removeClass","fuRendered","fu","FileUploaderView","uploadId","disableUpload","__propEv","console","onUploadEnd","clb","FormData","reqHead","onUploadStart","fetchOpts","then","status","Promise","onUploadResponse","catch","onUploadError","that","uploadForm","ondragover","ondragleave","ondrop","addedCls","edEl","editor","frameEl","getBody","updatedCls","dropzoneCls","cleanEditorElCls","onDragLeave","getSelected","runCommand","Modal","AssetManager","setTarget","item","initDrop","response","promises","mimeTypeMatcher","promise","resolve","image","Image","readAsDataURL","evAll","evPfx","evSelect","evUpdate","evAdd","evRemove","evRemoveBefore","evCustom","evOpen","evClose","evUpload","evUploadStart","evUploadEnd","evUploadError","evUploadRes","assetsVis","assetCmd","Module","uploadStart","uploadEnd","uploadError","uploadResponse","__initListen","getAllVisible","debounce","__trgCustom","__customData","bhv","isOpen","asset","complete","run","isActive","__remove","store","getProjectData","load","loadProjectData","getContainer","assts","toRender","__viewParams","FileUploader","addType","definition","getType","getTypes","FileUpload","onLoad","postRender","editorView","initDropzone","__behaviour","_bhv","appendOnClick","blocks","Block","media","category","activate","resetId","disable","ctg","Blocks","Category","Categories","BlockView","mousedown","dragstart","drag","dragend","endDrag","sorter","getSorter","setDropContent","validTarget","getEl","valid","components","getWrapper","setSelected","refreshCanvas","setDragHelper","startSort","__getModule","__startDrag","__drag","__endDrag","endMove","class","clsAdd","hasDnd","prefix","CategoryView","caretR","caretD","iconClass","activeClass","updateVisibility","getIconEl","getBlocksEl","iconEl","blocksEl","BlocksView","bindAll","categories","renderedCategories","noCatClass","blockContClass","catsClass","addTo","tac","grabbingCls","canvas","utils","Sorter","placer","getPlacerEl","containerSel","itemSel","onStart","onDrag","onEndMove","onMove","getFrameEl","contentDocument","wmargin","nested","canvasRelative","stopDefault","runDefault","oldActive","ignoreCategories","catModel","catId","catView","getCategoriesEl","catsEl","evDrag","evDragStart","evDragStop","BlockManager","blocksVisible","bm","startDrag","dragStop","getContent","_dragBlock","dragResult","dragContent","oldKey","toActive","toSelect","onAll","getFrames","frame","__getFrameViews","fv","droppable","startCustom","endCustom","blocksView","prp","external","updateConfig","colls","scripts","customBadgeLabel","autoscrollLimit","extHl","frameContent","frameStyle","notTextable","onZoomChange","updateDevice","evPageSelect","_pageUpdated","frames","Frames","rulers","zoom","mainPage","getMain","getMainFrame","page","device","getDeviceModel","getCurrentFrameModel","noUndo","Droppable","rootEl","getComponent","els","toggleEffects","enable","handleDragEnter","handleDragOver","handleDrop","handleDragLeave","defaultView","frameElement","sortOpts","onEnd","customTarget","__customTglEff","endDrop","updateCounter","dt","inAbsoluteMode","dragger","guidesInfo","center","cancelled","getStyle","addStyle","handleDragEnd","cnt","preserveSelected","getContentByData","FrameView","allowfullscreen","tools","frameView","showGlobalTools","cvModel","getCanvasModel","updateHead","renderStyles","setViewEl","headEl","getHead","attrStr","items","stl","appendVNodes","getModel","jsContainer","createEl","frameWrapView","elTools","getGlobalToolsEl","_getTool","scrollBottom","scrollRight","toolsEl","getToolsEl","wrp","_toggleEffects","lastMaxHeight","_toggleAutoscrollFx","requestAnimationFrame","autoscroll","dragging","lastClientY","win","getWindow","actualTop","limitTop","limitBottom","getRect","nextTop","isUndefined","opacity","getPointerEvent","getZoomDecimal","mt","updateClientY","stopAutoscroll","renderScripts","evLoad","evOpts","appendScript","scriptEl","renderBody","write","normalize","stls","prevStyles","_isEditor","baseCss","canvasCss","protectedCss","component","CssRulesView","getStyles","getJsContainer","createCustomEvent","motionsEv","_emitUpdate","_emitUpdated","FrameWrapView","canvasView","cv","classAnim","updateOffset","updateSize","frameLoaded","updatePos","setupDragger","dragX","dragY","toggleFramesEvents","Dragger","getZoomMultiplier","setPosition","posOpts","removeEl","__clear","updateDim","__handleSize","noChanges","isNull","onscroll","onScroll","currW","currH","newW","newH","isNumber","onRender","twrp","toolsWrapper","elTop","elRight","elBottom","elLeft","frameWrapperView","timerZoom","FramesView","DomainViews","itemView","CanvasView","wheel","_initFrames","clearOff","checkSelected","updateFrames","_onFramesUpdate","toggleListeners","_renderFrames","currFrame","views","_getFrame","_parentEvent","getKeyChar","isInputFocused","multiFrames","getZoom","defOpts","mpl","framesArea","transform","elem","getElement","getElRect","frameRect","getFrameOffset","rTop","rLeft","docBody","noScroll","frmOff","cvsOff","winEl","frEl","frameOffset","canvasEl","canvasOffset","getCanvasOffset","elRect","frameTop","avoidFrameOffset","frameLeft","isTextNode","parseFloat","bEl","fo","co","getId","scriptContainer","scriptFn","getScriptString","scriptFnStr","scriptProps","__getScriptProps","scr","getFrameView","ready","frms","listenToLoad","mainFrame","setCurrentFrame","$frames","toolsWrp","hlEl","badgeEl","placerEl","ghostEl","toolbarEl","resizerEl","offsetEl","fixedOffsetEl","toolsGlobEl","getUiClass","CanvasModule","Canvas","startAutoscroll","getDocument","compView","globalEl","_getCompFrame","_getLocalEl","frameOff","canvasOff","getElementPos","getElementOffsets","getPosition","topScroll","leftScroll","canvasPos","elPos","toRight","targetHeight","targetWidth","eventToTrigger","topPos","elementTop","elementLeft","elementWidth","elementHeight","canvasTop","canvasLeft","canvasWidth","canvasHeight","getFrameElFromDoc","rectOff","elToMove","cvOff","canvasRectOffset","toolbarH","toolbarW","getCanvasView","frCvOff","fullHeight","elIsShort","canvasOffsetTop","canvasOffsetLeft","addTop","addLeft","subWinOffset","parentWindow","yOffset","xOffset","toIgnore","getViewEl","fr","getCurrentFrame","getFramesEl","Frame","inlineCss","HTMLGenerator","htmlOpts","cleanId","rules","idRules","rule","selectors","isId","toHTML","JsonGenerator","beforeEach","build","JsGenerator","comps","scrStr","scrProps","mapJs","mapType","mapModel","hasWin","require","CodeMirrorEditor","codeName","onChange","ed","autoFormatRange","noRefresh","EditorView","generators","defGenerators","viewers","defViewers","defaultViewer","gHtml","gCss","gJson","js","gJs","eCM","loadDefaultGenerators","loadDefaultViewers","addGenerator","generator","getGenerator","getGenerators","addViewer","viewer","getViewer","getViewers","createViewer","txtarea","updateViewer","setContent","getCode","genId","maxValue","MAX_VALUE","getMediaLength","mediaQuery","CssGenerator","compCls","avoidInline","avoidInlineStyle","styleToString","getFullName","buildFromModel","cssc","codeJson","clearStyles","atRules","dump","onlyMatched","matchedRules","atRule","getAtRule","mRules","buildFromRule","sortMediaObject","rulesStr","ruleStr","selectorStrNoAdd","selectorsToString","skipAdd","selectorsAdd","singleAtRule","keepUnusedStyles","getDeclaration","__cleanSelector","itemsArr","isMobFirst","mquery","getQueryLength","getKey","q","strict","commandsDef","defaultCommands","CommandAbstract","sender","selAll","getSelectedAll","nativeDrag","defComOptions","hideTlb","altMode","eventDrag","emitUpdate","cmdMove","Commands","onEndMoveFromModel","initSorterFromModels","oldCmd","default","cmdName","loadDefaultCommands","noStop","command","cmdObj","stopCommand","getActive","callRun","callStop","DomComponents","CssComposer","canvasModel","toggleMove","disableDragger","enableDragger","toggleDragger","methodCls","getCanvas","classList","methodEv","methodsEv","editorModel","hoverClass","badgeClass","plhClass","freezClass","Boolean","evName","guidesStatic","guidesTarget","setupGuides","isTran","guidesContainer","getGuidesContainer","getGuidesTarget","getGuidesStatic","drg","toggleDrag","getEventOpts","guides","guide","guidesEl","elInfoX","elInfoY","guideContent","elGuideInfoX","elGuideInfoY","elGuideInfoContentX","elGuideInfoContentY","updateGuides","debug","renderGuide","getElementGuides","lastEl","getGuidePosUpdate","originRect","un","guideSize","numEl","getTranslate","itemStr","setTranslate","en","styleUp","avoidStore","adds","_getDragData","relPos","parentRel","pStyle","getMouseRelativeCanvas","offsetP","renderGuideInfo","hideGuidesInfo","rectOrigin","isY","origEdge1","origEdge1Raw","origEdge2","origEdge2Raw","elGuideInfo","elGuideInfoCnt","guideInfoStyle","stat","statEdge2","isEdge1","statEdge1","statEdge1Raw","statEdge2Raw","posFirst","posSecond","pos2","sizeRaw","matched","snd","incr","getChildAt","wrappers","Pages","getAllWrappers","flatten","findType","SelectComponent","mouseover","startDelete","mouseout","stopDelete","onDelete","$this","attachBadge","badge","removeBadge","clean","updateBadgeLabel","getName","modal","CodeManager","$editors","oHtmlEd","buildEditor","oCsslEd","htmlEditor","cssEditor","textViewCode","getHtml","getCss","codeMirror","isEnabled","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","warn","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","fsChanged","targetEl","SelectPosition","noSelClass","getBadgeEl","getHighlighterEl","wp","$wrapper","initSorter","toggleClipboard","cacheEl","startSelectPosition","stopSelectComponent","getContentWindow","rollback","initSorterFromModel","lastModel","toMove","onMoveClb","$badge","getBadge","$hl","getHighlighter","onceClose","accept","modalTitle","uploadEl","firstRender","pn","Panels","getPanel","addPanel","lm","LayerManager","layers","panels","$cn","trgEvCnt","$cn2","dvm","DeviceManager","showDevices","devicePanel","dvEl","slm","SelectorManager","slmConfig","sm","StyleManager","smConfig","$header","pnCnt","panel","toggleSm","show","Config","tm","TraitManager","confTm","toggleTm","clp","lastSelected","addOpts","pasteable","cop","Components","canMove","cmdVis","getPanels","preventDrag","tglEffects","mthEv","tlb","getToolbarEl","elP","querySelectorAll","shouldRunSwVisibility","editorEl","onclick","canvasS","getResizerEl","posFetcher","mousePosFetcher","getMouseRelativePos","canvasResizer","forceNew","Utils","Resizer","ToolbarButtonView","calibrated","ToolbarView","ToolbarButton","showOffsets","adjScroll","startSelectComponent","toggleSelectComponent","listenToEl","onFrameUpdated","onContainerChange","onHovered","updateGlobalPos","_upToolbar","updateAttached","onHover","onOut","onFrameScroll","trg","isDoc","currentDoc","setHovered","useValid","updateLocalPos","updateToolsLocal","elHovered","toggleToolsEl","currentFrame","getView","isVisible","elSelected","updateToolsGlobal","initResize","getElSelected","getElHovered","showElementOffset","hideElementOffset","showFixedElementOffset","hideFixedElementOffset","hideHighlighter","isEditing","isChildOf","updateBadge","posOnly","icon","getIcon","clsBadge","customeLabel","badgeLabel","bStyle","targetToElem","getTargetToElementFixed","leftOff","showHighlighter","modelToStyle","resizeClass","isTaggableNode","resizable","toggleBodyClass","docs","resizer","keyHeight","keyWidth","currentUnit","keepAutoHeight","keepAutoWidth","getModelToStyle","computedStyle","modelStyle","currentWidth","autoWidth","currentHeight","autoHeight","startDim","unitHeight","getUnitFromValue","unitWidth","selectedHandler","onlyHeight","onlyWidth","bodyw","updateEvent","eventToListen","noEmit","updateToolbar","toolbarStyle","toolbar","showToolbar","Toolbar","toolbarView","updateToolbarPos","getCanvasPosition","updateTools","isCompSelected","isHoverEn","isNewEl","lastHovered","badgeOpts","topOff","_trgToolUp","hideBadge","cleanPrevious","isPointed","scale","getOffsetDim","stopSelectPosition","posTargetCollection","posIndex","posMethod","cDim","posIsLastEl","posTargetEl","outsideElem","posTargetModel","nearFloat","isLast","getOffsetMethod","showOffsetsSelected","stateVar","offsetViewer","marginT","marginB","marginL","marginR","padT","padB","padL","padR","stateLow","marginName","paddingName","marginV","paddingV","paddingEls","fullMargName","fullPadName","marginLeftSt","marginRightSt","marginRight","marginTopSt","marginBottomSt","mtStyle","mbStyle","mlStyle","mrStyle","ptStyle","pbStyle","plStyle","prStyle","posLeft","widthEl","marginSideH","marginSideT","padTop","padBot","padSideH","padSideT","padRight","toggleVis","mth","_upFrame","_onFramesChange","__initConfig","__appendTo","_createId","__listenAdd","__listenRemove","__listenUpdate","__destroy","onBeforeStyle","CSS","CssRule","mediaText","stylable","atRuleType","important","shallow","_undo","ensureSelectors","__onChange","isEmptyObj","changesUp","toListen","getSelectors","Selectors","typeStr","addSelector","selOpts","getFullString","stateStr","skipState","allowEmpty","devices","getDevices","deviceDefault","getWidthMedia","stateValue","getStates","sngl","cmpId","getById","avoidDefaults","__p","ruleProps","wd","selAdd","a1S","a2S","StyleableModel","CssRules","onRemove","onAdd","parseCss","elStyle","um","slc","singleSel","parserCss","checkNode","sl","newSels","le","selec","modelExists","updateStyle","avoidUpdateStyle","styleUpdate","addCollection","atRuleParams","optRuleSel","getCurrentMedia","Selector","getRules","getSelectorsString","rulesView","CssRuleView","toCSS","CssGroupRuleView","getBlockId","addToCollection","renderStarted","atRuleEl","styleEl","appendData","clsName","defaultBlockId","blockId","getMediaWidth","contRules","mediaCondition","prs","pr","widthMedia","Device","checkUnit","Devices","DevicesView","startAdd","updateSelect","devEl","devicesEl","getOptions","evSelectBefore","evAddBefore","chnSel","dv","_onSelect","deviceId","newDevice","_superPropBase","getPrototypeOf","_get","Reflect","receiver","desc","getOwnPropertyDescriptor","Trait","changeProp","targetEvent","targetUpdated","locale","getTargetValue","valueOpts","partial","setTargetValue","fromTarget","trait","getAttributes","valueToSet","final","toSet","step","Traits","handleReset","tf","objs","optionsTarget","TraitFactory","keySymbols","keySymbol","keySymbolOvrd","keyUpdate","keyUpdateInside","Component","parentAttr","newAttr","toPropagate","voidElements","ccid","initClasses","initTraits","initComponents","initToolbar","initScriptProps","scriptUpdated","tagUpdated","attrUpdated","_idUpdated","__emitUpdateTlb","__propToParent","temporary","__postAdd","__isSymbolOrInst","__initSymb","__hasUm","recursive","__changesUp","__propSelfToParent","query","$els","eq","is","closest","setClass","attrPrev","shallowDiff","setAttributes","noClass","attrArr","compAttr","optsAdd","getIdRule","parseStyle","propOrig","setIdRule","addId","noStyle","TYPE_ID","__getSymbol","__getSymbols","classe","classStr","toUp","symbol","symbols","log","__symbReady","__upSymbProps","__isSymbol","__isSymbolTop","symbTopSelf","__getSymbTop","symbTop","allById","symb","__getAllById","symbs","idx","ovrd","symbEnabled","fromInstance","noPropagate","fromUndo","__isSymbOvrd","__getSymbToUp","__logSymbol","propsChanged","optUp","toUpOpts","isTemp","addedInstances","isMainSymb","addSymb","toAppend","addedInst","addedTop","symbolInv","isSymbNested","__isSymbolNested","toUpFn","symbPrnt","newMods","attrCls","clsArr","normalizeClasses","__upSymbCls","addChild","avoidChildren","__upSymbComps","__loadTraits","traits","getInitValue","prevProps","newProps","prevPropsEv","newPropsEv","__scriptPropsChange","compArr","prevColl","tb","tr","traitsI","getTraits","getTrait","clm","_inner","cloned","newId","rulesToClone","newRule","defName","nameTag","i18nPfx","i18nName","i18nNameTag","i18nDefName","capitalize","customTag","sTag","customAttr","getAttrToHTML","withProps","isBoolean","valueRes","altQuoteAttr","attrString","getInnerHTML","__innerHTML","cmps","getChangedProps","modelProps","tagVarStart","tagVarEnd","reg","updated","rmOpts","byType","isInstanceOf","oldId","setId","idS","_getStyleRule","idUpdate","idPrev","getList","_getStyleSelector","isComponent","ensureInList","nextId","getIncrementId","idMap","getNewId","ilen","uid","random","keepIds","domc","dm","componentsById","checkId","removable","badgable","unstylable","highlightable","copyable","editable","layerable","selectable","hoverable","locked","void","dmode","getComponentIds","getComponentsFromDefs","itms","newComponents","resetChildren","newIds","allByID","parsed","parseString","newCmps","canRemoveStyle","rulesRemoved","it","__postRemove","df","componentTypes","parseHtml","optsToPass","nodes","isMult","processDef","__firstAdd","mdl","processor","modelPr","$$typeof","parserHtml","splitPropsFromAttr","forceClass","setClassRule","__onAddEnd","ComponentView","getClasses","modelOpt","renderAttributes","updateHighlight","updateStatus","updateContent","handleChange","onActive","onDisable","avoidRender","getEvents","_clbObj","draggableComponents","childrenView","__isDraggable","updateClasses","importClasses","renderChildren","chgArr","selectedCls","selectedParentCls","freezedCls","hoveredCls","noPointerCls","selCls","noExtHl","actualCls","avoidHover","clsStr","isTextable","hl","onAttrUpdate","removeAttr","textable","defaultAttr","contenteditable","hasComps","getChildrenContainer","updateScript","getChildrenSelector","getTemplate","gtop","gleft","assignRect","elDoc","getOffsetRect","isInViewport","_setData","replaceWith","ComponentsView","updateAttributes","triggerAdd","sameFrameView","viewObject","logError","parentEl","ParserHtml","propNew","newStyle","noEvent","extendStyle","imp","propPrv","baseType","getBaseType","typeFound","recognizeType","ModelInst","ViewInst","extendViewApi","Input","handleModelChange","holderClass","getInputEl","__onInputChange","elementUpdated","fromInput","inputEl","plh","inputClass","defaultOpts","beforeShow","noop","color","flat","showInput","showButtons","clickoutFiresChange","showInitial","showPalette","showPaletteOnly","hideAfterPaletteSelect","togglePaletteOnly","showSelectionPalette","localStorageKey","maxSelectionSize","cancelText","chooseText","togglePaletteMoreText","togglePaletteLessText","clearText","noColorSelectedText","preferredFormat","containerClassName","replacerClassName","showAlpha","palette","selectionPalette","spectrums","IE","rgbaSupport","backgroundColor","replaceInput","markup","gradientFix","dataID","spectrum","extra","spect","removeData","loadOpts","inputTypeColorSupport","_cachedResult","colorInput","localization","palettes","processNativeColorInputs","colorInputs","trimLeft","trimRight","tinyCounter","math","mathRound","mathMin","mathMax","mathRandom","tinycolor","rgb","format","named","matchers","rgba","hsl","hsla","hsv","hsva","hex8","convertHexToDecimal","parseIntFromHex","hex6","hex3","stringInputToObject","bound01","convertToPercentage","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","isDark","getBrightness","isLight","getOriginalInput","getFormat","getAlpha","toRgb","setAlpha","toHsv","rgbToHsv","toHsvString","toHsl","rgbToHsl","toHslString","toHex","allow3Char","rgbToHex","toHexString","toHex8","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","lighten","brighten","darken","desaturate","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","color1","color2","mix","w1","rgb1","rgb2","w2","readability","c1","c2","brightnessA","brightnessB","colorDiff","brightness","isReadable","mostReadable","baseColor","colorList","bestColor","bestScore","bestIsReadable","readable","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flipped","flip","paletteTemplate","tiny","swatchStyle","timeout","callbackContext","instanceOptions","resize","reflow","throttler","isDragging","isDefault","dragWidth","dragHeight","dragHelperHeight","slideHeight","alphaWidth","alphaSlideHelperWidth","slideHelperHeight","currentHue","currentSaturation","currentValue","currentAlpha","paletteArray","paletteLookup","draggingClass","shiftMovementDirection","boundElement","pickerContainer","dragHelper","slider","slideHelper","alphaSliderInner","alphaSlider","alphaSlideHelper","textInput","paletteContainer","initialColorContainer","cancelButton","clearButton","chooseButton","toggleButton","isInput","isInputTypeColor","shouldReplace","replacer","offsetElement","previewElement","initialColor","colorOnShow","currentPreferredFormat","applyOptions","toggleClass","updateSelectionPaletteFromStorage","localStorage","oldPalette","addColorToSelectionPalette","inArray","drawPalette","currentColor","unique","getUniqueSelectionPalette","drawInitial","setFromTextInput","updateOriginalInput","isDefaultPrevented","hideAll","$doc","onkeydown","clickout","updateUI","revert","ignoreFormatChange","newHsv","updateHelperLocations","flatColor","realColor","displayColor","realHex","realRgb","alpha","realAlpha","gradient","alphaX","slideY","fireCallback","picker","extraY","dpWidth","outerWidth","dpHeight","outerHeight","inputHeight","docElem","cW","cH","scL","scT","getOffset","paletteElementClick","keydown","hasClass","oldDragX","oldDragY","furtherFromX","paletteEvent","optionName","optionValue","coord","onmove","onstart","onstop","maxHeight","maxWidth","hasTouch","duringDragEvents","t0","rightclick","hex","pad2","clamp01","hue","results","slices","modification","isOnePointZero","processPercent","isPercentage","ColorPicker","getColor","cl","InputColor","colorEl","getColorEl","tc","valueClr","noneColor","previousColor","cpStyle","elToAppend","colorPickerConfig","colorPicker","movedColor","setValueFromInput","noDefault","InputNumber","contClass","validateInputValue","deepCheck","validObj","getUnitEl","upArrowClick","downArrowClick","unitEl","units","temp","normalizeValue","moveIncrement","upIncrement","prValue","defValue","stepDecimals","toFixed","limitlessMax","limitlessMin","fixed","regFixed","valCopy","uN","ns","reuseView","itemsView","typeField","itemType","itemViewNotFound","clearItems","onRemoveBefore","traitInputAttr","localeFallback","detectLocale","messages","assetManager","addButton","inputPlh","uploadTitle","blockManager","labels","domComponents","comment","video","link","tfoot","tbody","thead","table","row","cell","deviceManager","desktop","tablet","mobileLandscape","mobilePortrait","titles","preview","fullscreen","selectorManager","emptyState","hover","styleManager","layer","fileButton","sectors","general","layout","typography","decorations","flex","dimension","traitManager","false","_blank","storageManager","recover","messagesAdd","I18nModule","addMessages","_localLang","evObj","valuePrev","lang","_debug","msg","setMessages","getLocale","localeFlb","lFlb","_getMsg","_addParams","nav","language","userLanguage","msgSet","getMessages","_mods","_scope","_MODIFIERS","control","_MAP","backspace","tab","return","esc","down","del","delete","home","pageup","pagedown","_downKeys","compareArray","modifierMap","updateModifierKey","clearModifier","assignKey","resetModifiers","scope","mods","getKeys","getMods","shortcut","getScope","mi","addEvent","setScope","deleteScope","isPressed","getPressedKeyCodes","multipleKeys","modifiersMatch","dispatch","keymaster","configDef","keymaps","defKeys","pk","removeAll","backdrop","ModalView","updateOpen","updateTitle","$collector","$content","$title","getCollector","getTitle","currAttr","updateAttr","triggerEvent","ModalM","enb","_evData","titl","createText","setTitle","onceOpen","getContentEl","swv","expt","osm","otm","ola","obl","ful","prv","togglable","delayBtnsShow","Panel","btn","Buttons","ButtonView","listen","activeCls","disableCls","btnsVisCls","updateActive","checkActive","updateBtnsVis","updateClassName","updateDisable","chnOpt","fromListen","$buttons","fromCollection","commandName","deactivateAll","toggleActive","ButtonsView","parentM","PanelView","appendContent","toggleVisible","cr","bc","resz","resLen","tl","bl","br","silentFrames","avoidContainerUpdate","forContainer","styleWidth","styleHeight","PanelsView","PanelsViewObj","getPanelsEl","removePanel","panelId","removeButton","getButton","disableButtons","Button","runDefaultCommand","stopDefaultCommand","except","deactivateAllExceptOne","disableAllButtonsExceptOne","textTags","optionsHtml","htmlType","allowScripts","allowUnsafeAttr","atRuleKeys","singleAtRules","singleAtRulesNames","parseSelector","propName","propValue","getPropertyValue","getPropertyPriority","parseCondition","conditionText","selectorText","createNode","selLen","lastClass","stateArr","parseNode","cssRules","keyText","isSingleAtRule","subRules","lens","subRule","selsParsed","selsAdd","lastRule","len3","selsAddStr","sheet","BrowserCssParser","classSets","classSet","pHtml","pCss","compTypes","Parser","defaultType","DOMParser","mimeType","strF","parseFromString","hEls","modelAttrStart","modelAttr","valueLen","valStr","lastChar","decls","decl","parseClass","attrsLen","nodePrev","nodeChild","ct","compType","namespaceURI","inSvg","keepEmptyTextNodes","outerHTML","allTxt","foundTextNode","ci","cType","cf","BrowserParserHtml","__clearUnsafeAttr","styleStr","resHtml","returnArray","btnState","isValidTag","rte","parentAnchor","parentFocus","customElAttr","defActions","bold","italic","underline","strikethrough","insertHTML","RichTextEditor","settings","setEl","updateActiveActions","__onKeydown","__onPaste","acts","actionbar","inactive","actionbarCont","actionbarContainer","addAction","styleWithCSS","getActions","queryCommandSupported","queryCommandState","enabled","__toggleEffects","actionbarEl","syncActions","caretRangeFromPoint","poiner","rangeParent","rangeOffset","textHtml","deleteContents","nd","insertNode","toSel","removeAttributes","adjustToolbar","eventsUp","hideToolbar","customRte","initRte","globalRte","updatePosition","rteInst","autosave","autoload","recovery","stepsBeforeSave","onStore","checkLocal","remote","urlStore","urlLoad","contentTypeJson","fetchOptions","LocalStorage","hasLocal","setItem","getItem","thr","RemoteStorage","request","__props","parsable","typeJson","typeHead","eventStart","eventAfter","eventEnd","eventError","STORAGE_LOCAL","STORAGE_REMOTE","StorageManager","_disable","storages","setCurrent","storage","currentStorage","getCurrent","getCurrentOptions","getCurrentStorage","getRecoveryStorage","recoveryOpts","__exec","recoveryStorage","recoveryData","__askRecovery","getRecovery","rej","confirm","toStore","__clearKeys","onAfter","onError","itemKey","itemKeyR","hideNotStylable","highlightChanged","highlightComputed","showComputed","clearProperties","avoidComputed","Property","__upTargets","callInit","parentProp","isClear","__getFullValue","__getParentProp","kProps","__getClearProps","toProps","applyStyle","__up","__trgEv","propertyUpdate","__upTargetsStyle","addStyleTargets","noTarget","hasValue","getDefaultValue","noParent","parentValue","getParentTarget","camelCase","__parseValue","_up","getParent","__canClearProp","parseValue","valueStr","functionName","numeric","num","withDefault","getFullValue","fnParameter","parentTarget","toRequire","requires","requiresParent","stylableReq","sector","getProperties","callParentInit","skipInit","fixedValues","isNumberType","PropertyComposite","detached","separator","fromStyle","toStyle","Properties","__upProperties","byName","getSplitSeparator","__getJoin","getValues","isDetached","__clearIn","__upTargetsStyleProps","getStyleFromProps","__setProperties","__getSplitValue","nameProps","allNameProps","__splitValue","props4Nums","__styleHasProps","upValue","valuesStr","Layer","getLayerLabel","getSelectedLayer","selectLayer","removeLayer","moveLayer","getStylePreview","Layers","VALUES_REG","PARTS_REG","PropertyStack","layerSeparator","layerJoin","prepend","layerLabel","selectedLayer","layersColl","__upSelected","__upLayers","__getLayers","getIndex","__select","getLayer","currIndex","getLayers","joinLayers","__getJoinLayers","number","newVal","getStyleFromLayer","upValues","PropertyBase","getStyleFromLayers","layerSelect","__layers","__setLayers","newLayers","layersNew","__parseLayer","parseFn","getLayerSeparator","separatorLayers","__splitStyleName","inLayer","clearProp","icons","iconClose","getLabel","__destroyFn","onValueChange","_getClbOpts","computedCls","labelEl","clearStyleEl","getClearEl","clearStyle","clearEl","emit","__update","__setValueInput","$input","createdEl","__change","__updateStyle","clearCached","clsType","templateLabel","templateInput","isFull","PropertiesView","appendAtIndex","PropertyCompositeView","PropertyView","propsView","LayerView","iconMove","propertyView","pModel","updateLabel","propsWrapEl","previewEl","getLabelEl","hasPreview","prvEl","getPreviewEl","wrapEl","getPropertiesWrapper","isSelected","LayersView","ignoreViewChildren","PropertyStackView","iconPlus","plus","addLayer","layersView","PropertyFileView","valueDef","prvBoxEl","backgroundImage","PropertyNumberView","inputInst","PropertyColorView","__handleChange","PropertySelect","idSel","getOptionId","optId","propId","__onOptionChange","PropertySelectView","updateOptions","optionsRes","getOptionLabel","styleAttr","inputH","firstOpt","firstId","PropertyRadio","PropertyRadioView","itemCls","clsInput","elId","titleAttr","checked","inputHld","inputIn","PropertyNumber","PropertySlider","PropertySliderView","getSliderEl","propertyAdd","propertyRemove","Sector","buildProps","extendBuilded","builded","buildProperties","extendProperties","checkExtend","propsModel","withValue","withParentValue","moProps","ex","pLen","mProps","isolated","mProp","mPProps","buildP","builtIn","Sectors","onReset","sect","PropertyFactory","typeNumber","typeColor","typeRadio","typeSelect","typeFile","typeSlider","typeComposite","typeStack","unitsSize","unitsSizeNoPerc","unitsTime","unitsAngle","ss","optsFlex","optsFlexAlign","optsBgSize","optsBgAttach","optsBgRepeat","optsWrap","optsOverflow","optsDir","opstDisplay","optsTransitFn","optsCursor","optsFloat","optsPos","optsTextAlign","optsJustCont","optsAlignCont","optsAlignSelf","optsTransitProp","optsBorderStyle","optsBgPos","optsWeight","optsShadowType","optsFonts","font","fixedFontSizes","fixedLetSpace","requireFlex","__sub","spread","__parseFn","propToUp","getProperty","getUnit","fromRes","SectorView","iconCaret","caret","clsPfx","getPropertiesEl","setOpen","renderProperties","SectorsView","evSector","evSectorAdd","evSectorRemove","evSectorUpdate","evProp","evPropAdd","evPropRemove","evPropUp","evLayerSelect","evTarget","propDef","SectView","sectorAdd","sectorRemove","sectorUpdate","targets","upAll","__upSel","__clearStateTarget","upProps","__upProps","trgCustom","__ctn","stateTarget","__getStateTarget","addSector","getSector","_logNoSector","getSectors","removeSector","addProperty","sectorId","removeProperty","trgs","getRule","setRule","getState","lastTarget","lastTargetParents","getParentRules","getSelectedParents","targetState","getBuiltIn","getBuiltInAll","addBuiltIn","cssC","smConf","devicePreviewMode","getStyleable","hasClasses","useClasses","componentFirst","noCount","deviceW","cssGen","optsSel","combination","cmpRules","otherRules","sortRules","createType","parentStyles","__upProp","__checkVisibility","sectorVisible","hasVal","isStack","isComposite","canUpdate","__getLayersFromStyle","__getPropsFromStyle","newValue","parentItem","__setParentTarget","newParentStyles","TraitView","eventCapture","clsField","removeView","rerender","elInput","getInputElem","onEvent","getClbOpts","setInputValue","postUpdate","getValueForTarget","tpl","createLabel","getModelValue","i18nAttr","getElInput","appendInput","inputs","createInput","noLabel","onUpdate","hasLabel","tmpl","renderLabel","renderField","TraitsView","updatedCollection","TraitSelectView","resultName","valResult","TraitCheckboxView","getCheckedValue","valueTrue","valueFalse","toInit","targetValue","TraitNumberView","inputNumber","$unit","TraitColorView","TraitButtonView","handleClick","labelButton","typesDef","checkbox","__onUp","getTraitsViewer","baseView","beforeCache","trackSelection","hasSkip","getChanged","hasUndo","undoExc","chn","postLoad","hasRedo","getInstance","getStack","getStackGroup","getGroupedStack","createItem","goToGroup","getPointer","goTo","times","snapOffset","getDocumentEl","getContainerEl","getWindowEl","keyHandle","handleScroll","lastScroll","actualScroll","scrollDiff","lastScrollDiff","startPointer","getPointerPos","startPosition","getStartPosition","globScrollDiff","currentPos","glDiff","lockedAxis","detectAxisLock","moveDelta","deltaPre","currentPointer","snapGuides","newDelta","trgX","trgY","axs","trgPoint","statPoint","deltaPoint","trgGuide","isPointIn","trgValue","setGuideLock","lock","ofst","trgName","isEscKey","xPos","yPos","getPos","getPointerPosition","pEv","relX","relY","absX","absY","_Array$prototype","idRe","classRe","htmlRe","tagRe","getElementsByTagName","Cash","__cash","eles","getElementById","parseHTML","cash","ele","camelCaseRe","camelCaseWhitespaceRe","letter","removeProp","guid","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","isNumeric","isFinite","getCompareFunction","splitValuesRe","getSplitValues","computeStyle","isVariable","computeStyleInt","_value","isForce","cssVariableRe","isCSSVariable","prefixedProps","docEl","vendorsPrefixes","getPrefixedProp","propCC","propUC","prefixedProp","numericProps","animationIterationCount","columnCount","flexGrow","flexShrink","fontWeight","lineHeight","orphans","widows","getSuffixedValue","setProperty","dataNamespace","dataAttributeRe","getDataCache","dataset","getExtraSpace","xAxis","hasNamespaces","ns1","ns2","removeEventListeners","_ref","hasData","_this","boxSizing","includeMargins","getEventsCache","parseEventName","removeEvent","namespaces","eventCache","_ref2","eventFullName","_this2","_parseEventName","_one","_this3","_parseEventName2","finalCallback","namespace","thisArg","one","readyState","evt","_parseEventName3","createEvent","initEvent","selectOneRe","selectMultipleRe","selectedIndex","getValueSelectSingle","getValueSelectMultiple","queryEncodeSpaceRe","skippableRe","checkableRe","serialize","elements","queryEncode","isMultiple","eleValue","containers","fragmentRe","singleTagRe","td","initContainers","$1","insertContent","isStr","insertAdjacentHTML","insertElement","_this4","insertAfter","_this5","_this6","_this7","_this8","_this9","prependTo","_this10","$eles","replaceAll","docEle","clientTop","contents","nextElementSibling","not","parents","previousElementSibling","siblings","KEY_ATTR","attrUp","oldEl","newEl","total","oEvent","keyCodeVal","defineProperty","vNodes","vNodesArr","vnode","reason","TypeError","setTimeoutFunc","_state","_handled","_deferreds","doResolve","deferred","_immediateFn","onFulfilled","onRejected","finale","_unhandledRejectionFn","Handler","prom","promiseFinally","allSettled","race","setImmediate","req","XMLHttpRequest","withCredentials","statusText","responseText","onProgress","onprogress","send","elT","elL","borderOffset","freezeClass","relative","ignoreModels","offTop","offLeft","$document","dropContent","selectOnEnd","avoidSelectOnEnd","activeTextModel","getScale","getDocuments","dropModel","updateTextViewCursorPosition","targetDoc","setContentEditable","toggleSortCursor","clonedEl","computed","moveDragHelper","posY","posX","dragHelperStyle","useBody","createPlaceholder","ins","srcModel","prevTarget","sourceEl","getSourceModel","clearSelection","getTargetModel","isTextableActive","getComponents","tempModel","selectTargetModel","targetModel","dsp","eO","rY","rX","mousePos","eventMove","sourceModel","dimsFromTarget","lastDims","findPosition","disableTextable","movePlaceholder","prevTargetDim","$plh","disableEditing","isInFlow","styleInFlow","$parent","overflow","propFloat","trgModel","dragInfo","dropInfo","targetP","validResult","getDim","cacheDimsP","getChildrenDim","cacheDims","nearBorders","targetParent","getTargetFromEl","targetPrev","nearElBorders","getCurrentPos","offsets","getCurrentView","elIndex","indexEl","leftLimit","xLimit","yLimit","xCenter","yCenter","dimDown","trgDim","elDim","marg","pT","pL","obj1","obj2","ancester","s1","toMoveArr","domPositionOffset","dst","modelToDrop","created","srcEl","warns","targetCollection","srcIndex","sameCollection","insertComponent","errors","ratioDefault","onUpdateContainer","minDim","maxDim","getBoundingRect","setup","hdl","createHandler","updateContainer","forceShow","handleMouseDown","getParentEl","attrName","parentRect","handlerAttr","clickedHandler","rectDim","startPos","parentDim","handleKeyDown","toggleFrames","mouseFetch","calc","updateRect","getSelectedHandler","isHandler","deltaX","deltaY","parentW","parentH","startW","startH","normalizeFloat","ratioActive","ratio","mixins","_module","moduleName","isPrivate","_em","_name","cfgParent","cfg","_config","private","keyAutoW","keyAutoH","allRules","modOpts","Wrapper","sSel","changesCount","_undoexc","setHead","addHeadItem","getHeadByAttr","removeHeadByAttr","addLink","removeLink","addScript","removeScript","getPage","loadedItems","itemsToLoad","itemLoaded","listenToLoadItems","ComponentWrapperView","columns","rows","rowsToAdd","columnsToAdd","ComponentTableBody","ComponentTableBodyView","svgAttrs","fallback","hasButtonBool","getSrcResult","btoa","isDefaultSrc","parseUri","uri","qrs","pair","hostname","protocol","port","mapUrl","address","frameborder","OComponent","parseFromSrc","updateSrc","getMapUrl","addr","qr","z","ComponentImageView","classEmpty","fetchFile","srcExists","addAttributes","getSrc","ComponentMapView","getIframe","ifrm","frameBorder","ComponentText","ComponentLink","compProt","ComponentTextView","updateContentText","syncContent","fromDisable","rteEnabled","sameInEdit","getEditing","isInnerText","canActivate","lastContent","activeRte","toggleEvents","contentOpt","resetFromString","startContainer","startOffset","textModel","setEditing","elDocs","disablePropagation","ComponentLinkView","prevDef","ComponentLabelView","yt","vi","ytnc","videoId","provider","ytUrl","ytncUrl","viUrl","poster","muted","autoplay","controls","modestbranding","sources","updateTraits","getYoutubeTraits","getVimeoTraits","getSourceTraits","prov","getYoutubeSrc","getYoutubeNoCookieSrc","getVimeoSrc","getProviderTrait","getAutoplayTrait","getLoopTrait","getControlsTrait","isYtProv","isYtncProv","isViProv","isExtProv","ComponentVideoView","OComponentView","updateProvider","updateVideo","renderByProvider","videoEl","renderYoutube","renderYoutubeNoCookie","renderVimeo","renderSource","initVideoEl","ComponentScriptView","scrCnt","scriptCount","svar","svarNext","svarFn","svarNextFn","customName","ComponentSvgView","createElementNS","ComponentTextNodeView","ComponentCommentView","createComment","ComponentWrapper","ComponentFrameView","__getSrc","ComponentTableCell","ComponentTableCellView","ComponentTableRow","ComponentTableRowView","ComponentTable","ComponentTableView","ComponentTableHead","ComponentTableHeadView","ComponentTableFoot","ComponentTableFootView","ComponentMap","ComponentLabel","ComponentVideo","ComponentImage","ComponentScript","ComponentSvgIn","ComponentSvg","ComponentFrame","ComponentComment","ComponentTextNode","componentHovered","selectAdd","selectRemove","addComponent","componentView","setComponents","extendView","extendFn","extendFnView","extendType","extendViewType","typeToExtend","modelToExt","viewToExt","getExtendedObj","srcToExt","parentFn","removeType","getShallowWrapper","shallowEm","hidable","hideTextnode","showWrapper","showHover","scrollCanvas","scrollLayers","highlightHover","onInit","parentView","sortContainer","forceChange","viewLayer","ItemView","opened","inputProp","checkChildren","updateOpening","updateLayerable","updateName","inputNameCls","clsTitleC","clsTitle","clsCaret","clsCount","clsMove","clsChildren","clsNoChild","clsEdit","clsNoEdit","__render","gut","clsBase","getInputName","innerText","getVisibilityEl","eyeEl","hClass","toggleVisibility","setVisible","handleEdit","handleEditKey","isEnterKey","handleEditEnd","setName","inputName","clsOpen","clsChvDown","getCaret","toggleOpening","handleSelect","setLayerData","handleHover","hovered","handleHoverOut","setRoot","_rendered","__clearItems","__isLayerable","evRoot","evComponent","styleOpts","propsToListen","componentChanged","__onRootChange","__onComponent","getRoot","getLayerData","isLocked","cmpOpts","fromLayers","removeSelected","setLocked","prevDspKey","prevDisplay","updateLayer","defFrame","getAllFrames","getMainComponent","evPageSelectBefore","evPageUpdate","evPageAdd","evPageAddBefore","evPageRemove","evPageRemoveBefore","typeMain","selectBefore","addBefore","pages","_onPageChange","mainComp","pg","pagesMap","escapeName","selectedName","iconAdd","iconSync","iconTagOn","iconTagOff","iconTagRemove","State","startEditTag","endEditTag","changeStatus","removeTag","$chk","stateInputId","stateInputC","checkSync","__handleStateChange","renderClasses","tagRemoved","renderStates","labelInfo","labelHead","syncStyle","getTarget","getCommonSelectors","noDisabled","ruleComponents","getTargets","ruleComponent","updateStateVis","addToClasses","startNewTag","$addBtn","endNewTag","onInputKeyUp","addNewTag","checkStates","statesEl","validSelectors","__getCommonSelectors","_commonSelectors","__common","hasStyle","$btnSyncEl","getStatesC","updateSelector","elSel","__getName","idRes","stateChanged","addSelected","$states","$statesC","labelStates","tmpOpts","renderRes","$classes","isClass","evState","cFirst","selTags","selectorTags","isRule","cOpts","cname","selModel","getSelector","setState","setStates","__getCommon","getSelectedTargets","setComponentFirst","getComponentFirst","getValid","namePreEsc","nameEsc","protected","setLabel","setActive","objLen","TYPE_CLASS","combine","curr","literals","raw","lit","subst","substs","getGlobal","elProt","Element","defCls","appendStyles","prepand","objOrig","objNew","keysNew","origValue","evs","upFirst","nativeDnD","isCommentNode","targValue","srcValue","__cashData","rectText","selectNode","getKeyCode","__gjsv","chars","runtime","Op","hasOwn","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","enumerable","configurable","writable","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","GenStateSuspendedStart","arg","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","setPrototypeOf","__proto__","awrap","async","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","webpackContext","webpackContextResolve","__webpack_require__","_arrayLikeToArray","arr2","_assertThisInitialized","ReferenceError","asyncGeneratorStep","_next","_throw","_asyncToGenerator","_classCallCheck","Constructor","_defineProperties","descriptor","_createClass","_defineProperty","_getPrototypeOf","_setPrototypeOf","_inherits","subClass","superClass","_objectWithoutProperties","excluded","sourceKeys","getOwnPropertySymbols","sourceSymbolKeys","_possibleConstructorReturn","_slicedToArray","_i","_s","_arr","_n","_d","unsupportedIterableToArray","_taggedTemplateLiteral","strings","freeze","defineProperties","_toConsumableArray","arrayLikeToArray","_typeof","_unsupportedIterableToArray","minLen","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","isView","_isNaN","_isFinite","hasEnumBug","nonEnumerableProps","MAX_ARRAY_INDEX","pow","restArguments","tagTester","nodelist","Int8Array","hasStringTagBug","isIE11","Map","isDataView","getInt8","isArrayBuffer","buffer","isSymbol","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","proto","isMatch","_keys","_wrapped","toBufferView","bufferSource","Uint8Array","byteOffset","valueOf","tagDataView","aStack","bStack","deepEq","areArrays","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","functions","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","tap","interceptor","toPath","deepGet","defaultValue","identity","optimizeCb","argCount","accumulator","baseIteratee","mapObject","currentKey","propertyOf","accum","getTime","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","evaluate","interpolate","noMatch","escapes","escapeChar","bareIdentifier","oldSettings","argument","variable","idCounter","_chain","executeBound","sourceFunc","boundFunc","callingContext","boundArgs","callArgs","memoize","hasher","throttle","later","leading","throttled","_now","trailing","immediate","passed","debounced","_args","negate","compose","memo","findKey","createPredicateIndexFinder","sortedIndex","low","high","createIndexFinder","predicateFind","createReduce","reducer","guard","contextPath","lastComputed","rand","criteria","reStrSymbol","keyInObj","compact","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","chainResult","mixin","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","fromElement","projectData","noticeOnUnload","defaultCommand","jsInHtml","multipleSelection","optsHtml","optsCss","dragMode","cssIcons","arrowUp","i18n","richTextEditor","codeManager","cssComposer","customUI","getByComponent","hasComponent","Selectable","lastComponent","allComponents","removeComponent","deps","ts_deps","Window","ar","logs","warning","__skip","defaultRunning","destroyed","toLog","attrsOrig","pageManager","loadModule","tsLoadModule","updateChanges","_checkReady","listenLog","eventFrom","eventTo","editing","clipboard","previousModel","storables","modules","toLoad","loadOnStart","headless","loadData","canAutoload","EditorModel","stm","getDirtyCount","updateItr","onbeforeunload","isAutosave","getStepsBeforeSave","Mod","handleUpdates","timedInterval","mltSel","multiple","toggleSelected","selColl","selIndex","getHovered","getJs","avoidProt","avoidProtected","protCss","storeData","clearDirtyCount","editingCmp","setDragMode","destroyAll","grapesjs","logNs","logInfo","initBaseColorPicker","varName","contEl","shallowCanvasEl","Editor","addComponents","getSelectedToStyle","selectToggle","setDevice","getDevice","setCustomRte","setCustomParserCss","onReady","plugins","agent","isIE","originalCreateHTMLDocument","DOMImplementation","createHTMLDocument","implementation","polyfills","plugin","defaultConfig","autorender","pluginsOpts","__GJS_VERSION__","pluginId","plgOptions","wplg"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index df28c83b1..f73508342 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grapesjs", "description": "Free and Open Source Web Builder Framework", - "version": "0.19.1", + "version": "0.19.3", "author": "Artur Arseniev", "license": "BSD-3-Clause", "homepage": "http://grapesjs.com",