diff --git a/dist/grapes.min.js b/dist/grapes.min.js index 6fc7c96d0..da369f0db 100644 --- a/dist/grapes.min.js +++ b/dist/grapes.min.js @@ -1,3 +1,3 @@ -/*! grapesjs - 0.19.5 */ -!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,(()=>(()=>{var t={7757:(t,e,n)=>{t.exports=n(5666)},3410:(t,e,n)=>{var r,i,o;1&&(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 a=function(){var e=!1,n=-1;function r(){n++,e=!0,t.defer((function(){e=!1}))}return function(){return e||r(),n}}();function s(){this.registeredObjects=[],this.cidIndexes=[]}function l(e,n,r,i){for(var o,a=0,s=n.length;at.maximumStackLength&&(t.shift(),t.pointer--)}}}s.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),a=t.keys(o),s=(n||(n={})).unsetData={after:[],before:[]};return i.length!=a.length&&(i.length>a.length?t.each(i,(function(t){t in o||s.before.push(t)}),this):t.each(a,(function(t){t in r||s.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 s,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){h(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;!function(o){var a='object'==typeof self&&self.self===self&&self||'object'==typeof n.g&&n.g.global===n.g&&n.g;if(1)r=[n(9050),n(2579),e],i=function(t,e,n){a.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 a=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)}}},s=function(t,e,r){n.each(e,(function(e,i){n[i]&&(t.prototype[i]=a(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={},f=/\s+/,h=function(t,e,r,i,o){var a,s=0;if(r&&'object'==typeof r){void 0!==i&&'context'in o&&void 0===o.context&&(o.context=i);for(a=n.keys(r);sthis.length&&(i=this.length),i<0&&(i+=this.length+1);var o,a,s=[],l=[],c=[],u=[],f={},h=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(a=0;a7),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(Z,'/'),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),M.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(!M.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(L,'')),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 M;var N=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=C.extend=M.extend=N;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}(a,n,t,e)}.apply(e,r),void 0===i||(t.exports=i);else;}()},9210:(t,e,n)=>{1&&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&&s>-1&&s>a&&(t=t.substr(0,a)+t.substring(a+o.commentStart.length,s)+t.substr(s+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"),a=t.copyState(i,r.getTokenAt(e).state),s=r.getOption("tabSize"),l="",c=0,u=0===e.ch;function f(){l+="\n",u=!0,++c}for(var h=0;h2),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),k=f&&t.match(/Version\/(\d*\.\d*)/);k&&(k=Number(k[1])),k&&k>=15&&(f=!1,l=!0);var x=y&&(c||f&&(null==k||k<12.11)),O=n||a&&s>=9;function C(t){return new RegExp("(^|\\s)"+t+"(?:$|\\s)\\s*")}var S,_=function(t,e){var n=t.className,r=C(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 P(t){for(var e=t.childNodes.length;e>0;--e)t.removeChild(t.firstChild);return t}function T(t,e){return P(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 a+(e-o);a+=s-o,a+=n-a%n,o=s+1}}g?Z=function(t){t.selectionStart=0,t.selectionEnd=t.value.length}:a&&(Z=function(t){try{t.select()}catch(t){}});var F=function(){this.id=null,this.f=null,this.time=0,this.handler=L(this.onTimeout,this)};function V(t,e){for(var n=0;n=e)return r+Math.min(a,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 at(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&&a.to==e)&&(r(Math.max(a.from,e),Math.min(a.to,n),1==a.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 ft=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]/,a=/[Lb1n]/,s=/[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,f=[],h=0;h-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 kt(t){t.prototype.on=function(t,e){pt(this,t,e)},t.prototype.off=function(t,e){vt(this,t,e)}}function xt(t){t.preventDefault?t.preventDefault():t.returnValue=!1}function Ot(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0}function Ct(t){return null!=t.defaultPrevented?t.defaultPrevented:0==t.returnValue}function St(t){xt(t),Ot(t)}function _t(t){return t.target||t.srcElement}function Pt(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(a&&s<9)return!1;var t=E('div');return"draggable"in t||"dragDrop"in t}();function At(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&&!(a&&s<8))}var n=Tt?E("span","​"):E("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}function Dt(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 P(t),!(!n||n.left==n.right)&&(Et=r.right-n.right<3)}var Mt,Rt=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),a=o.indexOf("\r");-1!=a?(n.push(o.slice(0,a)),e+=a+1):(n.push(o),e=i+1)}return n}:function(t){return t.split(/\r\n?|\n/)},Zt=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)},Lt="oncopy"in(Mt=E("div"))||(Mt.setAttribute("oncopy","return;"),"function"==typeof Mt.oncopy),Nt=null;function It(t){if(null!=Nt)return Nt;var e=T(t,E("span","x")),n=e.getBoundingClientRect(),r=S(e,0,1).getBoundingClientRect();return Nt=Math.abs(n.left-r.left)>1}var Ft={},Vt={};function Bt(t,e){arguments.length>2&&(e.dependencies=Array.prototype.slice.call(arguments,2)),Ft[t]=e}function Ht(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 a in e.modeProps)r[a]=e.modeProps[a];return r}var Wt={};function $t(t,e){N(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 Xt(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,Xt(t,n).text.length):de(e,Xt(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={};_e(t,e.text,t.doc.mode,n,(function(t,e){return i.push(t,e)}),o,r);for(var a=n.state,s=function(r){n.baseTokens=i;var s=t.state.overlays[r],l=1,c=0;n.state=!0,_e(t,e.text,s.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(s.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=Pe(t,e,n),a=o>r.first&&Xt(r,o-1).stateAfter,s=a?ve.fromSaved(r,a,o):new ve(r,Kt(r.mode),o);return r.iter(o,e,(function(n){we(t,n.text,s);var r=s.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 Oe=function(t,e,n){this.start=t.start,this.end=t.pos,this.string=t.current(),this.type=e||null,this.state=n};function Ce(t,e,n,r){var i,o,a=t.doc,s=a.mode,l=Xt(a,(e=he(a,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?(s=!1,a&&we(t,e,r,f.pos),f.pos=e.length,l=null):l=Se(xe(n,f,r.state,h),o),h){var d=h[0].name;d&&(l="m-"+(l?d+" "+l:d))}if(!s||u!=l){for(;ca;--s){if(s<=o.first)return o.first;var l=Xt(o,s-1),c=l.stateAfter;if(c&&(!n||s+(c instanceof ge?c.lookAhead:0)<=o.modeFrontier))return s;var u=I(l.text,null,t.options.tabSize);(null==i||r>u)&&(i=s-1,r=u)}return i}function Te(t,e){if(t.modeFrontier=Math.min(t.modeFrontier,e),!(t.highlightFrontiern;r--){var i=Xt(t,r).stateAfter;if(i&&(!(i instanceof ge)||r+i.lookAhead=e:o.to>e);(r||(r=[])).push(new Me(a,o.from,s?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"==a.type&&(!n||o.marker.insertLeft)){var s=null==o.from||(a.inclusiveLeft?o.from<=e:o.from0&&s)for(var b=0;b0)){var u=[l,1],f=ae(c.from,s.from),h=ae(c.to,s.to);(f<0||!a.inclusiveLeft&&!f)&&u.push({from:c.from,to:s.from}),(h>0||!a.inclusiveRight&&!h)&&u.push({from:s.to,to:c.to}),i.splice.apply(i,u),l+=u.length-3}}return i}function He(t){var e=t.markedSpans;if(e){for(var n=0;ne)&&(!n||$e(n,o.marker)<0)&&(n=o.marker)}return n}function Xe(t,e,n,r,i){var o=Xt(t,e),a=je&&o.markedSpans;if(a)for(var s=0;s=0&&f<=0||u<=0&&f>=0)&&(u<=0&&(l.marker.inclusiveRight&&i.inclusiveLeft?ae(c.to,n)>=0:ae(c.to,n)>0)||u>=0&&(l.marker.inclusiveRight&&i.inclusiveLeft?ae(c.from,r)<=0:ae(c.from,r)<0)))return!0}}}function Je(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=Xt(t,e),r=Je(n);return n==r?e:ee(r)}function nn(t,e){if(e>t.lastLine())return e;var n,r=Xt(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),He(t),ze(t,n);var i=r?r(t):1;i!=t.height&&te(t,i)}function fn(t){t.parent=null,He(t)}cn.prototype.lineNo=function(){return ee(this)},kt(cn);var hn={},dn={};function pn(t,e){if(!t||/^\s*$/.test(t))return null;var n=e.addModeClass?dn:hn;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,a=void 0;r.pos=0,r.addToken=mn,Dt(t.display.measure)&&(a=ht(o,t.doc.direction))&&(r.addToken=bn(r.addToken,a)),r.map=[],kn(o,r,ye(t,o,e!=t.display.externalMeasured&&ee(o))),o.styleClasses&&(o.styleClasses.bgClass&&(r.bgClass=R(o.styleClasses.bgClass,r.bgClass||"")),o.styleClasses.textClass&&(r.textClass=R(o.styleClasses.textClass,r.textClass||""))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(At(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 s=r.content.lastChild;(/\bcm-tab\b/.test(s.className)||s.querySelector&&s.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return mt(t,"renderLine",t,e.line,r.pre),r.pre.className&&(r.textClass=R(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,f=t.cm.state.specialChars,h=!1;if(f.test(e)){c=document.createDocumentFragment();for(var d=0;1;){f.lastIndex=d;var p=f.exec(e),g=p?p.index-d:e.length-d;if(g){var v=document.createTextNode(u.slice(d,d+g));a&&s<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]),a&&s<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),a&&s<9&&(h=!0),t.pos+=e.length;if(t.trailingSpace=32==u.charCodeAt(e.length-1),n||r||i||h||o||l){var w=n||"";r&&(w+=r),i&&(w+=i);var k=E("span",[c],w,o);if(l)for(var x in l)l.hasOwnProperty(x)&&"style"!=x&&"class"!=x&&k.setAttribute(x,l[x]);return t.content.appendChild(k)}t.content.appendChild(c)}}function yn(t,e){if(t.length>1&&!/ /.test(t))return t;for(var n=e,r="",i=0;ic&&f.from<=c);h++);if(f.to>=u)return t(n,r,i,o,a,s,l);t(n,r.slice(0,f.to-c),i,o,null,s,l),o=null,r=r.slice(f.to-c),c=f.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 kn(t,e,n){var r=t.markedSpans,i=t.text,o=0;if(r)for(var a,s,l,c,u,f,h,d=i.length,p=0,g=1,v="",m=0;;){if(m==p){l=c=u=s="",h=null,f=null,m=1/0;for(var y=[],b=void 0,w=0;wp||x.collapsed&&k.to==p&&k.from==p)){if(null!=k.to&&k.to!=p&&m>k.to&&(m=k.to,c=""),x.className&&(l+=" "+x.className),x.css&&(s=(s?s+";":"")+x.css),x.startStyle&&k.from==p&&(u+=" "+x.startStyle),x.endStyle&&k.to==m&&(b||(b=[])).push(x.endStyle,k.to),x.title&&((h||(h={})).title=x.title),x.attributes)for(var O in x.attributes)(h||(h={}))[O]=x.attributes[O];x.collapsed&&(!f||$e(f.marker,x)<0)&&(f=k)}else k.from>p&&m>k.from&&(m=k.from)}if(b)for(var C=0;C=d)break;for(var _=Math.min(d,m);1;){if(v){var P=p+v.length;if(!f){var T=P>_?v.slice(0,_-p):v;e.addToken(e,T,a?a+l:l,u,p+T.length==m?c:"",s,h)}if(P>=_){v=v.slice(_-p),p=_;break}p=P,u=""}v=i.slice(o,o=n[g++]),a=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 Jn(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=Je(e)),r=t.display.externalMeasured=new xn(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-s)-1,e>=l&&(a="right")),null!=i){if(r=t[c+2],s==l&&n==(r.insertLeft?"left":"right")&&(a=n),"left"==n&&0==i)for(;c&&t[c-2]==t[c-3]&&t[c-1].insertLeft;)r=t[(c-=3)+2],a="left";if("right"==n&&i==l-s)for(;c=0&&(n=t[i]).left==n.right;i--);return n}function lr(t,e,n,r){var i,o=ar(e.map,n,r),l=o.node,c=o.start,u=o.end,f=o.collapse;if(3==l.nodeType){for(var h=0;h<4;h++){for(;c&&ot(e.line.text.charAt(o.coverStart+c));)--c;for(;o.coverStart+u0&&(f=r="right"),i=t.options.lineWrapping&&(d=l.getClientRects()).length>1?d["right"==r?d.length-1:0]:l.getBoundingClientRect()}if(a&&s<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"),!s)return a("before"==c?l-1:l,"before"==c);function u(t,e,n){return a(n?t-1:t,1==s[e].level!=n)}var f=ut(s,l,c),h=ct,d=u(l,f,"before"==c);return null!=h&&(d.other=u(l,h,"before"!=c)),d}function wr(t,e){var n=0;e=he(t.doc,e),t.options.lineWrapping||(n=jr(t.display)*e.ch);var r=Xt(t.doc,e.line),i=an(r)+Wn(t.display);return{left:n,right:n,top:i,bottom:i+r.height}}function kr(t,e,n,r,i){var o=oe(t,e,n);return o.xRel=i,r&&(o.outside=r),o}function xr(t,e,n){var r=t.doc;if((n+=t.display.viewOffset)<0)return kr(r.first,0,null,-1,-1);var i=ne(r,n),o=r.first+r.size-1;if(i>o)return kr(r.first+r.size-1,Xt(r,o).text.length,null,1,1);e<0&&(e=0);for(var a=Xt(r,i);;){var s=_r(t,a,i,e,n),l=Ye(a,s.ch+(s.xRel>0||s.outside>0?1:0));if(!l)return s;var c=l.find(1);if(c.line==i)return c;a=Xt(r,i=c.line)}}function Or(t,e,n,r){r-=gr(e);var i=e.text.length,o=st((function(e){return rr(t,n,e-1).bottom<=r}),i,0);return{begin:o,end:i=st((function(e){return rr(t,n,e).top>r}),o,i)}}function Cr(t,e,n,r){return n||(n=nr(t,e)),Or(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 _r(t,e,n,r,i){i-=an(e);var o=nr(t,e),a=gr(e),s=0,l=e.text.length,c=!0,u=ht(e,t.doc.direction);if(u){var f=(t.options.lineWrapping?Tr:Pr)(t,e,n,o,u,r,i);s=(c=1!=f.level)?f.from:f.to-1,l=c?f.to:f.from-1}var h,d,p=null,g=null,v=st((function(e){var n=rr(t,o,e);return n.top+=a,n.bottom+=a,!!Sr(n,r,i,!1)&&(n.top<=i&&n.left<=r&&(p=e,g=n),!0)}),s,l),m=!1;if(g){var y=r-g.left=w.bottom?1:0}return kr(n,v=at(e.text,v,1),d,m,r-h)}function Pr(t,e,n,r,i,o,a){var s=st((function(s){var l=i[s],c=1!=l.level;return Sr(br(t,oe(n,c?l.to:l.from,c?"before":"after"),"line",e,r),o,a,!0)}),0,i.length-1),l=i[s];if(s>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,a,!0)&&u.top>a&&(l=i[s-1])}return l}function Tr(t,e,n,r,i,o,a){var s=Or(t,e,r,a),l=s.begin,c=s.end;/\s/.test(e.text.charAt(c-1))&&c--;for(var u=null,f=null,h=0;h=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,f=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),P(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 Ar(t){for(var e=t.display,n={},r={},i=e.gutters.clientLeft,o=e.gutters.firstChild,a=0;o;o=o.nextSibling,++a){var s=t.display.gutterSpecs[a].className;n[s]=o.offsetLeft+o.clientLeft+i,r[s]=o.clientWidth}return{fixedPos:Dr(e),gutterTotalWidth:e.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:e.wrapper.clientWidth}}function Dr(t){return t.scroller.getBoundingClientRect().left-t.sizer.getBoundingClientRect().left}function Mr(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 a=0;a0&&(l=Xt(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 Lr(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 a=Vr(t,e,e,-1);a?(i.view=i.view.slice(0,a.index),i.viewTo=a.lineN):Fr(t)}else{var s=Vr(t,e,e,-1),l=Vr(t,n,n+r,1);s&&l?(i.view=i.view.slice(0,s.index).concat(On(t,s.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[Lr(t,e)];if(null!=o.node){var a=o.changes||(o.changes=[]);-1==V(a,n)&&a.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=Lr(t,e),a=t.display.view;if(!je||n==t.doc.first+t.doc.size)return{index:o,lineN:n};for(var s=t.display.viewFrom,l=0;l0){if(o==a.length-1)return null;i=s+a[o].size-e,o++}else i=s-e;e+=i,n+=i}for(;en(t.doc,n)!=n;){if(o==(r<0?0:a.length-1))return null;n+=r*a[o-(r<0?1:0)].size,o+=r}return{index:o,lineN:n}}function Br(t,e,n){var r=t.display;0==r.view.length||e>=r.viewTo||n<=r.viewFrom?(r.view=On(t,e,n),r.viewFrom=e):(r.viewFrom>e?r.view=On(t,e,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,Lr(t,n)))),r.viewTo=n}function Hr(t){for(var e=t.display.view,n=0,r=0;r=t.display.viewTo||s.to().line0&&(i.style.width=o.right-o.left+"px")}if(r.other){var a=n.appendChild(E("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));a.style.display="",a.style.left=r.other.left+"px",a.style.top=r.other.top+"px",a.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(),a=qn(t.display),s=a.left,l=Math.max(r.sizerWidth,Kn(t)-r.sizer.offsetLeft)-a.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 f(e,n,r){var o,a,f=Xt(i,e),h=f.text.length;function d(n,r){return yr(t,oe(e,n),"div",f,r)}function p(e,n,r){var i=Cr(t,f,null,e),o="ltr"==n==("after"==r)?"left":"right";return d("after"==r?i.begin:i.end-(/\s/.test(f.text.charAt(i.end-1))?2:1),o)[o]}var g=ht(f,i.direction);return lt(g,n||0,null==r?h:r,(function(t,e,i,f){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==h,k=0==f,x=!g||f==g.length-1;if(y.top-m.top<=3){var O=(c?w:b)&&x,C=(c?b:w)&&k?s:(v?m:y).left,S=O?l:(v?y:m).right;u(C,m.top,S-C,m.bottom)}else{var _,P,T,E;v?(_=c&&b&&k?s:m.left,P=c?l:p(t,i,"before"),T=c?s:p(e,i,"after"),E=c&&w&&x?l:y.right):(_=c?p(t,i,"before"):s,P=!c&&b&&k?l:m.right,T=!c&&w&&x?s:y.left,E=c?p(e,i,"after"):l),u(_,m.top,P-_,m.bottom),m.bottom0?e.blinker=setInterval((function(){t.hasFocus()||Jr(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||Xr(t))}function Yr(t){t.state.delayingBlurEvent=!0,setTimeout((function(){t.state.delayingBlurEvent&&(t.state.delayingBlurEvent=!1,t.state.focused&&Jr(t))}),100)}function Xr(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,M(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 Jr(t,e){t.state.delayingBlurEvent||(t.state.focused&&(mt(t,"blur",t,e),t.state.focused=!1,_(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(h/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=a&&(o=ne(e,an(Xt(e,l))-t.wrapper.clientHeight),a=l)}return{from:o,to:Math.max(a,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 a=!1,s=br(t,e),l=n&&n!=e?br(t,n):s,c=oi(t,i={left:Math.min(s.left,l.left),top:Math.min(s.top,l.top)-r,right:Math.max(s.left,l.left),bottom:Math.max(s.bottom,l.bottom)+r}),u=t.doc.scrollTop,f=t.doc.scrollLeft;if(null!=c.scrollTop&&(hi(t,c.scrollTop),Math.abs(t.doc.scrollTop-u)>1&&(a=!0)),null!=c.scrollLeft&&(pi(t,c.scrollLeft),Math.abs(t.doc.scrollLeft-f)>1&&(a=!0)),!a)break}return i}function ii(t,e){var n=oi(t,e);null!=n.scrollTop&&hi(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),a={};e.bottom-e.top>o&&(e.bottom=e.top+o);var s=t.doc.height+$n(n),l=e.tops-r;if(e.topi+o){var u=Math.min(e.top,(c?s:e.bottom)-o);u!=i&&(a.scrollTop=u)}var f=t.options.fixedGutter?0:n.gutters.offsetWidth,h=t.curOp&&null!=t.curOp.scrollLeft?t.curOp.scrollLeft:n.scroller.scrollLeft-f,d=Kn(t)-n.gutters.offsetWidth,p=e.right-e.left>d;return p&&(e.right=e.left+d),e.left<10?a.scrollLeft=0:e.leftd+h-3&&(a.scrollLeft=e.right+(p?0:10)-d),a}function ai(t,e){null!=e&&(ui(t),t.curOp.scrollTop=(null==t.curOp.scrollTop?t.doc.scrollTop:t.curOp.scrollTop)+e)}function si(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,fi(t,wr(t,e.from),wr(t,e.to),e.margin))}function fi(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 hi(t,e){Math.abs(t.doc.scrollTop-e)<2||(n||zi(t,{top:e}),di(t,e,!0),n&&zi(t),Zi(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,a&&s<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 ki(t){t.display.scrollbars&&(t.display.scrollbars.clear(),t.display.scrollbars.addClass&&_(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):hi(t,e)}),t),t.display.scrollbars.addClass&&M(t.display.wrapper,t.display.scrollbars.addClass)}var xi=0;function Oi(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:++xi,markArrays:null},Sn(t.curOp)}function Ci(t){var e=t.curOp;e&&Pn(e,(function(t){for(var e=0;e=n.viewTo)||n.maxLineChanged&&e.options.lineWrapping,t.update=t.mustUpdate&&new Ni(e,t.mustUpdate&&{top:t.scrollTop,ensure:t.scrollToPos},t.forceUpdate)}function Pi(t){t.updatedDisplay=t.mustUpdate&&Bi(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 a=o.styles,s=o.text.length>t.options.maxHighlightLength?qt(e.mode,r.state):null,l=me(t,o,r,!0);s&&(r.state=s),o.styles=l.styles;var c=o.styleClasses,u=l.classes;u?o.styleClasses=u:c&&(o.styleClasses=null);for(var f=!a||a.length!=o.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),h=0;!f&&hn)return Zi(t,t.options.workDelay),!0})),e.highlightFrontier=r.line,e.modeFrontier=Math.max(e.modeFrontier,r.line),i.length&&Ai(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==Hr(t))return!1;Gi(t)&&(Fr(t),e.dims=Ar(t));var i=r.first+r.size,o=Math.max(e.visible.from-t.options.viewportMargin,r.first),a=Math.min(i,e.visible.to+t.options.viewportMargin);n.viewFroma&&n.viewTo-a<20&&(a=Math.min(i,n.viewTo)),je&&(o=en(t.doc,o),a=nn(t.doc,a));var s=o!=n.viewFrom||a!=n.viewTo||n.lastWrapHeight!=e.wrapperHeight||n.lastWrapWidth!=e.wrapperWidth;Br(t,o,a),n.viewOffset=an(Xt(t.doc,n.viewFrom)),t.display.mover.style.top=n.viewOffset+"px";var l=Hr(t);if(!s&&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),P(n.cursorDiv),P(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,s&&(n.lastWrapHeight=e.wrapperHeight,n.lastWrapWidth=e.wrapperWidth,Zi(t,400)),n.updateLineNumbers=null,!0}function Hi(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(!Bi(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 Ni(t,e);if(Bi(t,n)){Qr(t),Hi(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,a=o.firstChild;function s(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,f=0;f-1&&(d=!1),An(t,h,u,n)),d&&(P(h.lineNumber),h.lineNumber.appendChild(document.createTextNode(ie(t.options,u)))),a=h.node.nextSibling}else{var p=Fn(t,h,u,n);o.insertBefore(p,a)}u+=h.size}for(;a;)a=s(a)}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=Dr(e)-e.scroller.scrollLeft+t.doc.scrollLeft,i=e.gutters.offsetWidth,o=r+"px",a=0;as.clientWidth,u=s.scrollHeight>s.clientHeight;if(i&&c||o&&u){if(o&&y&&l)t:for(var h=e.target,d=a.view;h!=s;h=h.parentNode)for(var p=0;p=0&&ae(t,r.to())<=0)return n}return-1};var oo=function(t,e){this.anchor=t,this.head=e};function ao(t,e,n){var r=t&&t.options.selectionsMayTouch,i=e[n];e.sort((function(t,e){return ae(t.from(),e.from())})),n=V(e,i);for(var o=1;o0:l>=0){var c=ue(s.from(),a.from()),u=ce(s.to(),a.to()),f=s.empty()?a.from()==a.head:s.from()==s.head;o<=n&&--n,e.splice(--o,2,new oo(f?u:c,f?c:u))}}return new io(e,n)}function so(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(ae(t,e.from)<0)return t;if(ae(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(s.line+1,p-1),t.insert(s.line+1,m)}En(t,"change",t,e)}function yo(t,e,n){function r(t,i,o){if(t.linked)for(var a=0;a1&&!t.done[t.done.length-2].ranges?(t.done.pop(),K(t.done)):void 0}function _o(t,e,n,r){var i=t.history;i.undone.length=0;var o,a,s=+new Date;if((i.lastOp==r||i.lastOrigin==e.origin&&e.origin&&("+"==e.origin.charAt(0)&&i.lastModTime>s-(t.cm?t.cm.options.historyEventDelay:500)||"*"==e.origin.charAt(0)))&&(o=So(i,i.lastOp==r)))a=K(o.changes),0==ae(e.from,e.to)&&0==ae(e.from,a.to)?a.to=lo(e):o.changes.push(Oo(t,e));else{var l=K(i.done);for(l&&l.ranges||Eo(t.sel,i.done),o={changes:[Oo(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=s,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=e.origin,a||mt(t,"historyAdded")}function Po(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||Po(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&&Co(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 Ao(t){if(!t)return null;for(var e,n=0;n-1&&(K(s)[f]=c[f],delete c[f])}}}return r}function Zo(t,e,n,r){if(r){var i=t.anchor;if(n){var o=ae(e,i)<0;o!=ae(n,i)<0?(i=e,e=n):o!=ae(e,n)<0&&(e=n)}return new oo(i,e)}return new oo(n||e,e)}function Lo(t,e,n,r,i){null==i&&(i=t.cm&&(t.cm.display.shift||t.extend)),Ho(t,new io([Zo(t.sel.primary(),e,n,i)],0),r)}function No(t,e,n){for(var r=[],i=t.cm&&(t.cm.display.shift||t.extend),o=0;o=e.ch:s.to>e.ch))){if(i&&(mt(l,"beforeCursorEnter"),l.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!l.atomic)continue;if(n){var f=l.find(r<0?1:-1),h=void 0;if((r<0?u:c)&&(f=Ko(t,f,-r,f&&f.line==e.line?o:null)),f&&f.line==e.line&&(h=ae(f,n))&&(r<0?h<0:h>0))return qo(t,f,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,a=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 a||(t.cantEdit=!0,oe(t.first,0))}function Ko(t,e,n,r){return n<0&&0==e.ch?e.line>t.first?he(t,oe(e.line-1)):null:n>0&&e.ch==(r||Xt(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!=ae(e.from,e.to)){var n=uo(t,e);_o(t,e,n,t.cm?t.cm.curOp.id:NaN),na(t,e,n,Fe(t,e));var r=[];yo(t,(function(t,n){n||-1!=V(r,t.history)||(sa(t.history,e),r.push(t.history)),na(t,e,null,Fe(t,e))}))}}function ta(t,e,n){var r=t.cm&&t.cm.state.suppressEdits;if(!r||n){for(var i,o=t.history,a=t.sel,s="undo"==e?o.done:o.undone,l="undo"==e?o.undone:o.done,c=0;c=0;--d){var p=h(d);if(p)return p.v}}}}function ea(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)){Nr(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,Xt(t,o).text.length),text:[e.text[0]],origin:e.origin}),e.removed=Jt(t,e.from,e.to),n||(n=uo(t,e)),t.cm?ra(t.cm,e,r):mo(t,e,r),zo(t,n,z),t.cantEdit&&Go(t,oe(t.firstLine(),0))&&(t.cantEdit=!1)}}function ra(t,e,n){var r=t.doc,i=t.display,o=e.from,a=e.to,s=!1,l=o.line;t.options.lineWrapping||(l=ee(Je(Xt(r,o.line))),r.iter(l,a.line+1,(function(t){if(t==i.maxLine)return s=!0,!0}))),r.sel.contains(e.from,e.to)>-1&&bt(t),mo(r,e,n,Mr(t)),t.options.lineWrapping||(r.iter(l,o.line+e.text.length,(function(t){var e=sn(t);e>i.maxLineLength&&(i.maxLine=t,i.maxLineLength=e,i.maxLineChanged=!0,s=!1)})),s&&(t.curOp.updateMaxLine=!0)),Te(r,o.line),Zi(t,400);var c=e.text.length-(a.line-o.line)-1;e.full?Nr(t):o.line!=a.line||1!=e.text.length||vo(t.doc,e)?Nr(t,o.line,a.line+1,c):Ir(t,o.line,"text");var u=wt(t,"changes"),f=wt(t,"change");if(f||u){var h={from:o,to:a,text:e.text,removed:e.removed,origin:e.origin};f&&En(t,"change",t,h),u&&(t.curOp.changeObjs||(t.curOp.changeObjs=[])).push(h)}t.display.selForContextMenu=null}function ia(t,e,n,r,i){var o;r||(r=n),ae(r,n)<0&&(n=(o=[r,n])[0],r=o[1]),"string"==typeof e&&(e=t.splitLines(e)),Jo(t,{from:n,to:r,text:e,origin:i})}function oa(t,e,n,r){n1||!(this.children[0]instanceof ca))){var s=[];this.collapse(s),this.children=[new ca(s)],this.children[0].parent=this}},collapse:function(t){for(var e=0;e50){for(var a=i.lines.length%25+25,s=a;s10);t.parent.maybeSpill()}},iterN:function(t,e,n){for(var r=0;r0||0==a&&!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(Xe(t,e.line,e,n,o)||e.line!=n.line&&Xe(t,n.line,e,n,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");De()}o.addToHistory&&_o(t,{from:e,to:n,origin:"markText"},t.sel,NaN);var s,l=e.line,c=t.cm;if(t.iter(l,n.line+1,(function(r){c&&o.collapsed&&!c.options.lineWrapping&&Je(r)==c.display.maxLine&&(s=!0),o.collapsed&&l!=e.line&&te(r,0),Le(r,new Me(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&&(Ae(),(t.history.done.length||t.history.undone.length)&&t.clearHistory()),o.collapsed&&(o.id=++pa,o.atomic=!0),c){if(s&&(c.curOp.updateMaxLine=!0),o.collapsed)Nr(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}ga.prototype.clear=function(){if(!this.explicitlyCleared){var t=this.doc.cm,e=t&&!t.curOp;if(e&&Oi(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&&Nr(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&&Ci(t),this.parent&&this.parent.clear()}},ga.prototype.find=function(t,e){var n,r;null==t&&"bookmark"==this.type&&(t=1);for(var i=0;i=0;l--)Jo(this,r[l]);s?Bo(this,s):this.cm&&si(this.cm)})),undo:Ri((function(){ta(this,"undo")})),redo:Ri((function(){ta(this,"redo")})),undoSelection:Ri((function(){ta(this,"undo",!0)})),redoSelection:Ri((function(){ta(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=he(this,t),e=he(this,e);var r=[],i=t.line;return this.iter(t.line,e.line+1,(function(o){var a=o.markedSpans;if(a)for(var s=0;s=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})),he(this,oe(n,e))},indexFromPos:function(t){var e=(t=he(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 f=t.dataTransfer.getData("Text");if(f){var h;if(e.state.draggingText&&!e.state.draggingText.copy&&(h=e.listSelections()),zo(e.doc,so(n,n)),h)for(var d=0;d=0;e--)ia(t.doc,"",r[e].from,r[e].to,"+delete");si(t)}))}function qa(t,e,n){var r=at(t.text,e+n,n);return r<0||r>t.text.length?null:r}function Ga(t,e,n){var r=qa(t,e.ch,n);return null==r?null:new oe(e.line,r,n<0?"after":"before")}function Ka(t,e,n,r,i){if(t){"rtl"==e.doc.direction&&(i=-i);var o=ht(n,e.doc.direction);if(o){var a,s=i<0?K(o):o[0],l=i<0==(1==s.level)?"after":"before";if(s.level>0||"rtl"==e.doc.direction){var c=nr(e,n);a=i<0?n.text.length-1:0;var u=rr(e,c,a).top;a=st((function(t){return rr(e,c,t).top==u}),i<0==(1==s.level)?s.from:s.to-1,a),"before"==l&&(a=qa(n,a,1))}else a=i<0?s.to:s.from;return new oe(r,a,l)}}return new oe(r,i<0?n.text.length:0,i<0?"before":"after")}function Ya(t,e,n,r){var i=ht(e,t.doc.direction);if(!i)return Ga(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),a=i[o];if("ltr"==t.doc.direction&&a.level%2==0&&(r>0?a.to>n.ch:a.from=a.from&&h>=u.begin)){var d=f?"before":"after";return new oe(n.line,h,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!=a.level),c=s?r.begin:l(r.end,-1);if(a.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}Ia.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"},Ia.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"},Ia.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"},Ia.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"]},Ia["default"]=y?Ia.macDefault:Ia.pcDefault;var Xa={selectAll:Yo,singleSelection:function(t){return t.setSelection(t.getCursor("anchor"),t.getCursor("head"),z)},killLine:function(t){return $a(t,(function(e){if(e.empty()){var n=Xt(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 a=Xt(t.doc,i.line-1).text;a&&(i=new oe(i.line,1),t.replaceRange(o.charAt(0)+t.doc.lineSeparator()+a.charAt(a.length-1),oe(i.line-1,a.length-1),i,"+transpose"))}n.push(new oo(i,i))}t.setSelections(n)}))},newlineAndIndent:function(t){return Ai(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&&(ae((i=s.ranges[i]).from(),e)<0||e.xRel>0)&&(ae(i.to(),e)>0||e.xRel<0)?xs(t,r,e,o):Cs(t,r,e,o)}function xs(t,e,n,r){var i=t.display,o=!1,c=Di(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",f),vt(i.scroller,"drop",c),o||(xt(e),r.addNew||Lo(t.doc,n,null,null,r.extend),l&&!h||a&&9==s?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},f=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",f),pt(i.scroller,"drop",c),t.state.delayingBlurEvent=!0,setTimeout((function(){return i.input.focus()}),20),i.scroller.dragDrop&&i.scroller.dragDrop()}function Os(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),he(t.doc,oe(e.line+1,0)));var r=n(t,e);return new oo(r.from,r.to)}function Cs(t,e,n,r){a&&Yr(t);var i=t.display,o=t.doc;xt(e);var s,l,c=o.sel,u=c.ranges;if(r.addNew&&!r.extend?(l=o.sel.contains(n),s=l>-1?u[l]:new oo(n,n)):(s=o.sel.primary(),l=o.sel.primIndex),"rectangle"==r.unit)r.addNew||(s=new oo(n,n)),n=Zr(t,e,!0,!0),l=-1;else{var f=Os(t,n,r.unit);s=r.extend?Zo(s,f.anchor,f.head,r.extend):f}r.addNew?-1==l?(l=u.length,Ho(o,ao(t,u.concat([s]),l),{scroll:!1,origin:"*mouse"})):u.length>1&&u[l].empty()&&"char"==r.unit&&!r.extend?(Ho(o,ao(t,u.slice(0,l).concat(u.slice(l+1)),0),{scroll:!1,origin:"*mouse"}),c=o.sel):Io(o,l,s,U):(l=0,Ho(o,new io([s],0),U),c=o.sel);var h=n;function d(e){if(0!=ae(h,e))if(h=e,"rectangle"==r.unit){for(var i=[],a=t.options.tabSize,u=I(Xt(o,n.line).text,n.ch,a),f=I(Xt(o,e.line).text,e.ch,a),d=Math.min(u,f),p=Math.max(u,f),g=Math.min(n.line,e.line),v=Math.min(t.lastLine(),Math.max(n.line,e.line));g<=v;g++){var m=Xt(o,g).text,y=$(m,d,a);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,a))))}i.length||i.push(new oo(n,n)),Ho(o,ao(t,c.ranges.slice(0,l).concat(i),l),{origin:"*mouse",scroll:!1}),t.scrollIntoView(e)}else{var b,w=s,k=Os(t,e,r.unit),x=w.anchor;ae(k.anchor,x)>0?(b=k.head,x=ue(w.from(),k.anchor)):(b=k.anchor,x=ce(w.to(),k.head));var O=c.ranges.slice(0);O[l]=Ss(t,new oo(he(o,x),b)),Ho(o,ao(t,O,l),U)}}var p=i.wrapper.getBoundingClientRect(),g=0;function v(e){var n=++g,a=Zr(t,e,!0,"rectangle"==r.unit);if(a)if(0!=ae(a,h)){t.curOp.focus=D(),d(a);var s=ei(i,o);(a.line>=s.to||a.linep.bottom?20:0;l&&setTimeout(Di(t,(function(){g==n&&(i.scroller.scrollTop+=l,v(e))})),50)}}function m(e){t.state.selectingText=!1,g=1/0,e&&(xt(e),i.input.focus()),vt(i.wrapper.ownerDocument,"mousemove",y),vt(i.wrapper.ownerDocument,"mouseup",b),o.history.lastSelOrigin=null}var y=Di(t,(function(t){0!==t.buttons&&Pt(t)?v(t):m(t)})),b=Di(t,m);t.state.selectingText=b,pt(i.wrapper.ownerDocument,"mousemove",y),pt(i.wrapper.ownerDocument,"mouseup",b)}function Ss(t,e){var n=e.anchor,r=e.head,i=Xt(t.doc,n.line);if(0==ae(n,r)&&n.sticky==r.sticky)return e;var o=ht(i);if(!o)return e;var a=ut(o,n.ch,n.sticky),s=o[a];if(s.from!=n.ch&&s.to!=n.ch)return e;var l,c=a+(s.from==n.ch==(1!=s.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),f=u-a||(r.ch-n.ch)*(1==s.level?-1:1);l=u==c-1||u==c?f<0:f>0}var h=o[c+(l?-1:0)],d=l==(1==h.level),p=d?h.from:h.to,g=d?"after":"before";return n.ch==p&&n.sticky==g?e:new oo(new oe(n.line,p,g),r)}function _s(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&&xt(e);var a=t.display,s=a.lineDiv.getBoundingClientRect();if(o>s.bottom||!wt(t,n))return Ct(e);o-=s.top-a.viewOffset;for(var l=0;l=i)return mt(t,n,t,ne(t.doc,o),t.display.gutterSpecs[l].className,e),Ct(e)}}function Ps(t,e){return _s(t,e,"gutterClick",!0)}function Ts(t,e){Un(t.display,e)||Es(t,e)||yt(t,e,"contextmenu")||O||t.display.input.onContextMenu(e)}function Es(t,e){return!!wt(t,"gutterContextMenu")&&_s(t,e,"gutterContextMenu",!1)}function js(t){t.display.wrapper.className=t.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+t.options.theme.replace(/(^|\s)\s*/g," cm-s-"),hr(t)}vs.prototype.compare=function(t,e,n){return this.time+gs>t&&0==ae(e,this.pos)&&n==this.button};var As={toString:function(){return"CodeMirror.Init"}},Ds={},Ms={};function Rs(t){var e=t.optionHandlers;function n(n,r,i,o){t.defaults[n]=r,i&&(e[n]=o?function(t,e,n){n!=As&&i(t,e,n)}:i)}t.defineOption=n,t.Init=As,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),hr(t),Nr(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--)ia(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!=As&&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){js(t),Xi(t)}),!0),n("keyMap","default",(function(t,e,n){var r=Wa(e),i=n!=As&&Wa(n);i&&i.detach&&i.detach(t,r),r.attach&&r.attach(t,i||null)})),n("extraKeys",null),n("configureMouse",null),n("lineWrapping",!1,Ls,!0),n("gutters",[],(function(t,e){t.display.gutterSpecs=Ki(e,t.options.lineNumbers),Xi(t)}),!0),n("fixedGutter",!0,(function(t,e){t.display.gutters.style.left=e?Dr(t.display)+"px":"0",t.refresh()}),!0),n("coverGutterNextToScrollbar",!1,(function(t){return yi(t)}),!0),n("scrollbarStyle","native",(function(t){ki(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),Xi(t)}),!0),n("firstLineNumber",1,Xi,!0),n("lineNumberFormatter",(function(t){return t}),Xi,!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&&(Jr(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,Zs),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 Zs(t,e,n){if(!e!=!(n&&n!=As)){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 Ls(t){t.options.lineWrapping?(M(t.display.wrapper,"CodeMirror-wrap"),t.display.sizer.style.minWidth="",t.display.sizerWidth=null):(_(t.display.wrapper,"CodeMirror-wrap"),ln(t)),Rr(t),Nr(t),hr(t),setTimeout((function(){return yi(t)}),100)}function Ns(t,e){var n=this;if(!(this instanceof Ns))return new Ns(t,e);this.options=e=e?N(e):{},N(Ds,e,!1);var r=e.value;"string"==typeof r?r=new Oa(r,e.mode,null,e.lineSeparator,e.direction):e.mode&&(r.modeOption=e.mode),this.doc=r;var i=new Ns.inputStyles[e.inputStyle](this),o=this.display=new Ji(t,r,i,e);for(var c in o.wrapper.CodeMirror=this,js(this),e.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),ki(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(),a&&s<11&&setTimeout((function(){return n.display.input.reset(!0)}),20),Is(this),Aa(),Oi(this),this.curOp.forceUpdate=!0,bo(this,r),e.autofocus&&!m||this.hasFocus()?setTimeout((function(){n.hasFocus()&&!n.state.focused&&Xr(n)}),20):Jr(this),Ms)Ms.hasOwnProperty(c)&&Ms[c](this,e[c],As);Gi(this),e.finishInit&&e.finishInit(this);for(var u=0;u20*20}pt(e.scroller,"touchstart",(function(i){if(!yt(t,i)&&!o(i)&&!Ps(t,i)){e.input.ensurePolled(),clearTimeout(n);var a=+new Date;e.activeTouch={start:a,moved:!1,prev:a-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,a=t.coordsChar(e.activeTouch,"page");o=!r.prev||l(r,r.prev)?new oo(a,a):!r.prev.prev||l(r,r.prev.prev)?t.findWordAt(a):new oo(oe(a.line,0),he(t.doc,oe(a.line+1,0))),t.setSelection(o.anchor,o.head),t.focus(),xt(n)}i()})),pt(e.scroller,"touchcancel",i),pt(e.scroller,"scroll",(function(){e.scroller.clientHeight&&(hi(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)||(Pa(t,e),St(e))},start:function(e){return _a(t,e)},drop:Di(t,Sa),leave:function(e){yt(t,e)||Ta(t)}};var c=e.input.getField();pt(c,"keyup",(function(e){return fs.call(t,e)})),pt(c,"keydown",Di(t,cs)),pt(c,"keypress",Di(t,hs)),pt(c,"focus",(function(e){return Xr(t,e)})),pt(c,"blur",(function(e){return Jr(t,e)}))}Ns.defaults=Ds,Ns.optionHandlers=Ms;var Fs=[];function Vs(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 a=t.options.tabSize,s=Xt(o,e),l=I(s.text,null,a);s.stateAfter&&(s.stateAfter=null);var c,u=s.text.match(/^\s*/)[0];if(r||/\S/.test(s.text)){if("smart"==n&&((c=o.mode.indent(i,s.text.slice(u.length),s.text))==H||c>150)){if(!r)return;n="prev"}}else c=0,n="not";"prev"==n?c=e>o.first?I(Xt(o,e-1).text,null,a):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 f="",h=0;if(t.options.indentWithTabs)for(var d=Math.floor(c/a);d;--d)h+=a,f+="\t";if(ha,l=Rt(e),c=null;if(s&&r.ranges.length>1)if(Bs&&Bs.text.join("\n")==e){if(r.ranges.length%Bs.text.length==0){c=[];for(var u=0;u=0;h--){var d=r.ranges[h],p=d.from(),g=d.to();d.empty()&&(n&&n>0?p=oe(p.line,p.ch-n):t.state.overwrite&&!s?g=oe(g.line,Math.min(Xt(o,g.line).text.length,g.ch+K(l).length)):s&&Bs&&Bs.lineWise&&Bs.text.join("\n")==l.join("\n")&&(p=g=oe(p.line,0)));var v={from:p,to:g,text:c?c[h%c.length]:l,origin:i||(s?"paste":t.state.cutIncoming>a?"cut":"+input")};Jo(t.doc,v),En(t,"inputRead",t,v)}e&&!s&&Ws(t,e),si(t),t.curOp.updateInput<2&&(t.curOp.updateInput=f),t.curOp.typing=!0,t.state.pasteIncoming=t.state.cutIncoming=-1}function Us(t,e){var n=t.clipboardData&&t.clipboardData.getData("Text");if(n)return t.preventDefault(),e.isReadOnly()||e.options.disableInput||Ai(e,(function(){return zs(e,n,0,null,"paste")})),!0}function Ws(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),a=!1;if(o.electricChars){for(var s=0;s-1){a=Vs(t,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Xt(t.doc,i.head.line).text.slice(0,i.head.ch))&&(a=Vs(t,i.head.line,"smart"));a&&En(t,"electricInput",t,i.head.line)}}}function $s(t){for(var e=[],n=[],r=0;rn&&(Vs(this,i.head.line,t,!0),n=i.head.line,r==this.doc.sel.primIndex&&si(this));else{var o=i.from(),a=i.to(),s=Math.max(n,o.line);n=Math.min(this.lastLine(),a.line-(a.ch?0:1))+1;for(var l=s;l0&&Io(this.doc,r,new oo(o,c[r].to()),z)}}})),getTokenAt:function(t,e){return Ce(this,t,e)},getLineTokens:function(t,e){return Ce(this,oe(t),e,!0)},getTokenTypeAt:function(t){t=he(this.doc,t);var e,n=ye(this,Xt(this.doc,t.line)),r=0,i=(n.length-1)/2,o=t.ch;if(0==o)e=n[2];else for(;;){var a=r+i>>1;if((a?n[2*a-1]:0)>=o)i=a;else{if(!(n[2*a+1]o&&(t=o,i=!0),r=Xt(this.doc,t)}else r=t;return vr(this,r,{top:0,left:0},e||"page",n||i).top+(i?this.doc.height-an(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,a=(t=br(this,he(this.doc,t))).bottom,s=t.left;if(e.style.position="absolute",e.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(e),o.sizer.appendChild(e),"over"==r)a=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?a=t.top-e.offsetHeight:t.bottom+e.offsetHeight<=l&&(a=t.bottom),s+e.offsetWidth>c&&(s=c-e.offsetWidth)}e.style.top=a+"px",e.style.left=e.style.right="","right"==i?(s=o.sizer.clientWidth-e.offsetWidth,e.style.right="0px"):("left"==i?s=0:"middle"==i&&(s=(o.sizer.clientWidth-e.offsetWidth)/2),e.style.left=s+"px"),n&&ii(this,{left:s,top:a,right:s+e.offsetWidth,bottom:a+e.offsetHeight})},triggerOnKeyDown:Mi(cs),triggerOnKeyPress:Mi(hs),triggerOnKeyUp:fs,triggerOnMouseDown:Mi(ys),execCommand:function(t){if(Xa.hasOwnProperty(t))return Xa[t].call(null,this)},triggerElectric:Mi((function(t){Ws(this,t)})),findPosH:function(t,e,n,r){var i=1;e<0&&(i=-1,e=-e);for(var o=he(this.doc,t),a=0;a0&&a(e.charAt(n-1));)--n;for(;r.5||this.options.lineWrapping)&&Rr(this),mt(this,"refresh",this)})),swapDoc:Mi((function(t){var e=this.doc;return e.cm=null,this.state.selectingText&&this.state.selectingText(),bo(this,t),hr(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}},kt(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 Ys(t,e,n,r,i){var o=e,a=n,s=Xt(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),s=Xt(t,n))}function u(o){var a;if("codepoint"==r){var u=s.text.charCodeAt(e.ch+(n>0?0:-1));if(isNaN(u))a=null;else{var f=n>0?u>=55296&&u<56320:u>=56320&&u<57343;a=new oe(e.line,Math.max(0,Math.min(s.text.length,e.ch+n*(f?2:1))),-n)}}else a=i?Ya(t.cm,s,e,n):Ga(s,e,n);if(null==a){if(o||!c())return!1;e=Ka(i,t.cm,s,e.line,l)}else e=a;return!0}if("char"==r||"codepoint"==r)u();else if("column"==r)u(!0);else if("word"==r||"group"==r)for(var f=null,h="group"==r,d=t.cm&&t.cm.getHelper(e,"wordChars"),p=!0;!(n<0)||u(!p);p=!1){var g=s.text.charAt(e.ch)||"\n",v=nt(g,d)?"w":h&&"\n"==g?"n":!h||/\s/.test(g)?null:"p";if(!h||p||v||(v="s"),f&&f!=v){n<0&&(n=1,u(),e.sticky="after");break}if(v&&(f=v),n>0&&!u(!p))break}var m=Go(t,e,o,a,!0);return se(o,m)&&(m.hitSide=!0),m}function Xs(t,e,n,r){var i,o,a=t.doc,s=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=xr(t,s,i)).outside;){if(n<0?i<=0:i>=a.height){o.hitSide=!0;break}i+=5*n}return o}var Js=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 Qs(t,e){var n=er(t,e.line);if(!n||n.hidden)return null;var r=Xt(t.doc,e.line),i=Jn(n,r,e.line),o=ht(r,t.doc.direction),a="left";o&&(a=ut(o,e.ch)%2?"right":"left");var s=ar(i.map,e.ch,a);return s.offset="right"==s.collapse?s.end:s.start,s}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="",a=!1,s=t.doc.lineSeparator(),l=!1;function c(t){return function(e){return e.id==t}}function u(){a&&(o+=s,l&&(o+=s),a=l=!1)}function f(t){t&&(u(),o+=t)}function h(e){if(1==e.nodeType){var n=e.getAttribute("cm-text");if(n)return void f(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))&&f(Jt(t.doc,o.from,o.to).join(s)))}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&&Qs(e,i)||{node:l[0].measure.map[2],offset:0},u=o.liner.firstLine()&&(a=oe(a.line-1,Xt(r.doc,a.line-1).length)),s.ch==Xt(r.doc,s.line).text.length&&s.linei.viewTo-1)return!1;a.line==i.viewFrom||0==(t=Lr(r,a.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=Lr(r,s.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 f=r.doc.splitLines(nl(r,n,c,e,l)),h=Jt(r.doc,oe(e,0),oe(l,Xt(r.doc,l).text.length));f.length>1&&h.length>1;)if(K(f)==K(h))f.pop(),h.pop(),l--;else{if(f[0]!=h[0])break;f.shift(),h.shift(),e++}for(var d=0,p=0,g=f[0],v=h[0],m=Math.min(g.length,v.length);da.ch&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)d--,p++;f[f.length-1]=y.slice(0,y.length-p).replace(/^\u200b+/,""),f[0]=f[0].slice(d).replace(/\u200b+$/,"");var k=oe(e,d),x=oe(l,h.length?K(h).length-p:0);return f.length>1||f[0]||ae(k,x)?(ia(r.doc,f,k,x,"+input"),!0):void 0},Js.prototype.ensurePolled=function(){this.forceCompositionEnd()},Js.prototype.reset=function(){this.forceCompositionEnd()},Js.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Js.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))},Js.prototype.updateFromDOM=function(){var t=this;!this.cm.isReadOnly()&&this.pollContent()||Ai(this.cm,(function(){return Nr(t.cm)}))},Js.prototype.setUneditable=function(t){t.contentEditable="false"},Js.prototype.onKeyPress=function(t){0==t.charCode||this.composing||(t.preventDefault(),this.cm.isReadOnly()||Di(this.cm,zs)(this.cm,String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),0))},Js.prototype.readOnlyChanged=function(t){this.div.contentEditable=String("nocursor"!=t)},Js.prototype.onContextMenu=function(){},Js.prototype.resetPosition=function(){},Js.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 al(t,e){if((e=e?N(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=D();e.autofocus=n==t||null!=t.getAttribute("autofocus")&&n==document.body}function r(){t.value=s.getValue()}var i;if(t.form&&(pt(t.form,"submit",r),!e.leaveSubmitMethodAlone)){var o=t.form;i=o.submit;try{var a=o.submit=function(){r(),o.submit=i,o.submit(),o.submit=a}}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 s=Ns((function(e){return t.parentNode.insertBefore(e,t.nextSibling)}),e);return s}function sl(t){t.off=vt,t.on=pt,t.wheelEventPixels=no,t.Doc=Oa,t.splitLines=Rt,t.countColumn=I,t.findColumn=$,t.isWordChar=et,t.Pass=H,t.signal=mt,t.Line=cn,t.changeEnd=lo,t.scrollbarModel=wi,t.Pos=oe,t.cmpPos=ae,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=Xa,t.keyMap=Ia,t.keyName=Ua,t.isModifierKey=Ha,t.lookupKey=Ba,t.normalizeKeyMap=Va,t.StringStream=Yt,t.SharedTextMarker=ma,t.TextMarker=ga,t.LineWidget=fa,t.e_preventDefault=xt,t.e_stopPropagation=Ot,t.e_stop=St,t.addClass=M,t.contains=A,t.rmClass=_,t.keyNames=Ra}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())Hs({lineWise:!1,text:r.getSelections()});else{if(!r.options.lineWiseCopyCut)return;var e=$s(r);Hs({lineWise:!0,text:e.text}),"cut"==t.type?r.setSelections(e.ranges,null,z):(n.prevInput="",i.value=e.text.join("\n"),Z(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(){a&&s>=9&&e.hasSelection&&(e.hasSelection=null),n.poll()})),pt(i,"paste",(function(t){yt(r,t)||Us(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)||xt(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=Gs(),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(),a=e.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(e.wrapper.clientHeight-10,i.top+a.top-o.top)),r.teLeft=Math.max(0,Math.min(e.wrapper.clientWidth-10,i.left+a.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&&Z(this.textarea),a&&s>=9&&(this.hasSelection=n)}else t||(this.prevInput=this.textarea.value="",a&&s>=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||D()!=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||Zt(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(a&&s>=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(){a&&s>=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=Zr(n,t),c=r.scroller.scrollTop;if(o&&!f){n.options.resetSelectionOnContextMenu&&-1==n.doc.sel.contains(o)&&Di(n,Ho)(n.doc,so(o),z);var u,h=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: "+(a?"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),a&&s>=9&&v(),O){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=h,a&&s<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=c),null!=i.selectionStart)){(!a||a&&s<9)&&v();var t=0,o=function(){r.selForContextMenu==n.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==e.prevInput?Di(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,Rs(Ns),Ks(Ns);var ll="iter insert remove copy getEditor constructor".split(" ");for(var cl in Oa.prototype)Oa.prototype.hasOwnProperty(cl)&&V(ll,cl)<0&&(Ns.prototype[cl]=function(t){return function(){return t.apply(this.doc,arguments)}}(Oa.prototype[cl]));return kt(Oa),Ns.inputStyles={textarea:ol,contenteditable:Js},Ns.defineMode=function(t){Ns.defaults.mode||"null"==t||(Ns.defaults.mode=t),Bt.apply(this,arguments)},Ns.defineMIME=Ht,Ns.defineMode("null",(function(){return{token:function(t){return t.skipToEnd()}}})),Ns.defineMIME("text/plain","null"),Ns.defineExtension=function(t,e){Ns.prototype[t]=e},Ns.defineDocExtension=function(t,e){Oa.prototype[t]=e},Ns.fromTextArea=al,sl(Ns),Ns.version="5.63.0",Ns}())},6629:(t,e,n)=>{1&&function(t){"use strict";function e(t){for(var e={},n=0;n*\/]/.test(n)?x(null,"select-op"):"."==n&&t.match(/^-?[_a-z][_a-z0-9-]*/i)?x("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(n)?x(null,n):t.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(t.current())&&(e.tokenize=S),x("variable callee","variable")):/[\w\\\-]/.test(n)?(t.eatWhile(/[\w\\\-]/),x("property","word")):x(null,null):/[\d.]/.test(t.peek())?(t.eatWhile(/[\w.%]/),x("number","unit")):t.match(/^-[\w\\\-]*/)?(t.eatWhile(/[\w\\\-]/),t.match(/^\s*:/,!1)?x("variable-2","variable-definition"):x("variable-2","variable")):t.match(/^\w+-/)?x("meta","meta"):void 0}function C(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),x("string","string")}}function S(t,e){return t.next(),t.match(/^\s*[\"\')]/,!1)?e.tokenize=null:e.tokenize=C(")"),x(null,"(")}function _(t,e,n){this.type=t,this.indent=e,this.prev=n}function P(t,e,n,r){return t.context=new _(n,e.indentation()+(!1===r?0:a),t.context),n}function T(t){return t.context.prev&&(t.context=t.context.prev),t.context.type}function E(t,e,n){return D[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 A(t){var e=t.current().toLowerCase();o=m.hasOwnProperty(e)?"atom":v.hasOwnProperty(e)?"keyword":"variable"}var D={top:function(t,e,n){if("{"==t)return P(n,e,"block");if("}"==t&&n.context.prev)return T(n);if(w&&/@component/i.test(t))return P(n,e,"atComponentBlock");if(/^@(-moz-)?document$/i.test(t))return P(n,e,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(t))return P(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 P(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 P(n,e,"interpolation");if(":"==t)return"pseudo";if(y&&"("==t)return P(n,e,"parens")}return n.context.type},block:function(t,e,n){if("word"==t){var r=e.current().toLowerCase();return h.hasOwnProperty(r)?(o="property","maybeprop"):d.hasOwnProperty(r)?(o=k?"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?D.top(t,e,n):(o="error","block")},maybeprop:function(t,e,n){return":"==t?P(n,e,"prop"):E(t,e,n)},prop:function(t,e,n){if(";"==t)return T(n);if("{"==t&&y)return P(n,e,"propBlock");if("}"==t||"{"==t)return j(t,e,n);if("("==t)return P(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)A(e);else if("interpolation"==t)return P(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?P(n,e,"parens"):"interpolation"==t?P(n,e,"interpolation"):("word"==t&&A(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):D.atBlock(t,e,n)},atBlock:function(t,e,n){if("("==t)return P(n,e,"atBlock_parens");if("}"==t||";"==t)return j(t,e,n);if("{"==t)return T(n)&&P(n,e,y?"block":"top");if("interpolation"==t)return P(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":f.hasOwnProperty(r)?"keyword":h.hasOwnProperty(r)?"property":d.hasOwnProperty(r)?k?"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)&&P(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):D.atBlock(t,e,n)},restricted_atBlock_before:function(t,e,n){return"{"==t?P(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?P(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 _(r?"block":"top",t||0,null)}},token:function(t,e){if(!e.tokenize&&t.eatSpace())return null;var n=(e.tokenize||O)(t,e);return n&&"object"==typeof n&&(i=n[1],n=n[0]),o=n,"comment"!=i&&(e.state=D[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-a)):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),a=["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"],s=e(a),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"],f=e(u),h=["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(h),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(a).concat(l).concat(u).concat(h).concat(v).concat(y);function k(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:s,mediaValueKeywords:c,propertyKeywords:f,nonStandardPropertyKeywords:d,fontProperties:p,counterDescriptors:g,colorKeywords:m,valueKeywords:b,tokenHooks:{"/":function(t,e){return!!t.eat("*")&&(e.tokenize=k,k(t,e))}},name:"css"}),t.defineMIME("text/x-scss",{mediaTypes:o,mediaFeatures:s,mediaValueKeywords:c,propertyKeywords:f,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=k,k(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:s,mediaValueKeywords:c,propertyKeywords:f,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=k,k(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:s,propertyKeywords:f,nonStandardPropertyKeywords:d,fontProperties:p,counterDescriptors:g,colorKeywords:m,valueKeywords:b,supportsAtComponent:!0,tokenHooks:{"/":function(t,e){return!!t.eat("*")&&(e.tokenize=k,k(t,e))}},name:"css",helperType:"gss"})}(n(4631))},6531:(t,e,n)=>{1&&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 a(t,e){return new RegExp((e?"^":"")+"","i")}function s(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;h--)c.script.unshift(["type",f[h].matches,f[h].mode]);function d(e,i){var s,u=o.token(e,i.htmlState),f=/\btag\b/.test(u);if(f&&!/[<>\s\/]/.test(e.current())&&(s=i.htmlState.tagName&&i.htmlState.tagName.toLowerCase())&&c.hasOwnProperty(s))i.inTag=s+" ";else if(i.inTag&&f&&/>$/.test(e.current())){var h=/^([\S]+) (.*)/.exec(i.inTag);i.inTag=null;var p=">"==e.current()&&l(c[h[1]],h[2]),g=t.getMode(r,p),v=a(h[1],!0),m=a(h[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)=>{1&&function(t){"use strict";t.defineMode("javascript",(function(e,n){var r,i,o=e.indentUnit,a=n.statementIndent,s=n.jsonld,l=n.json||s,c=!1!==n.trackScope,u=n.typescript,f=n.wordCharacters||/[\w$\xa1-\uffff]/,h=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"),a={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:a,false:a,null:a,undefined:a,NaN:a,Infinity:a,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(f))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(f.test(n)){t.eatWhile(f);var r=t.current();if("."!=e.lastType){if(h.propertyIsEnumerable(r)){var i=h[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(s&&"@"==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 k="([{}])";function x(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,a=n-1;a>=0;--a){var s=t.string.charAt(a),l=k.indexOf(s);if(l>=0&&l<3){if(!i){++a;break}if(0==--i){"("==s&&(o=!0);break}}else if(l>=3&&l<6)++i;else if(f.test(s))o=!0;else if(/["'\/`]/.test(s))for(;;--a){if(0==a)return;if(t.string.charAt(a-1)==s&&"\\"!=t.string.charAt(a-2)){a--;break}}else if(o&&!i){++a;break}}o&&!i&&(e.fatArrowAt=a)}}var O={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function C(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 _(t,e,n,r,i){var o=t.cc;for(P.state=t,P.stream=i,P.marked=null,P.cc=o,P.style=e,t.lexical.hasOwnProperty("align")||(t.lexical.align=!0);1;)if((o.length?o.pop():l?W:z)(n,r)){for(;o.length&&o[o.length-1].lex;)o.pop()();return P.marked?P.marked:"variable"==n&&S(t,r)?"variable-2":e}}var P={state:null,column:null,marked:null,cc:null};function T(){for(var t=arguments.length-1;t>=0;t--)P.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 A(t){var e=P.state;if(P.marked="def",c){if(e.context)if("var"==e.lexical.info&&e.context&&e.context.block){var r=D(t,e.context);if(null!=r)return void(e.context=r)}else if(!j(t,e.localVars))return void(e.localVars=new Z(t,e.localVars));n.globalVars&&!j(t,e.globalVars)&&(e.globalVars=new Z(t,e.globalVars))}}function D(t,e){if(e){if(e.block){var n=D(t,e.prev);return n?n==e.prev?e:new R(n,e.vars,!0):null}return j(t,e.vars)?e:new R(e.prev,new Z(t,e.vars),!1)}return null}function M(t){return"public"==t||"private"==t||"protected"==t||"abstract"==t||"readonly"==t}function R(t,e,n){this.prev=t,this.vars=e,this.block=n}function Z(t,e){this.name=t,this.next=e}var L=new Z("this",new Z("arguments",null));function N(){P.state.context=new R(P.state.context,P.state.localVars,!1),P.state.localVars=L}function I(){P.state.context=new R(P.state.context,P.state.localVars,!0),P.state.localVars=null}function F(){P.state.localVars=P.state.context.vars,P.state.context=P.state.context.prev}function V(t,e){var n=function(){var n=P.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 C(r,P.stream.column(),t,null,n.lexical,e)};return n.lex=!0,n}function B(){var t=P.state;t.lexical.prev&&(")"==t.lexical.type&&(t.indented=t.lexical.indented),t.lexical=t.lexical.prev)}function H(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,H(";"),B):"keyword a"==t?E(V("form"),q,z,B):"keyword b"==t?E(V("form"),z,B):"keyword d"==t?P.stream.match(/^\s*$/,!1)?E():E(V("stat"),K,H(";"),B):"debugger"==t?E(H(";")):"{"==t?E(V("}"),I,ht,B,F):";"==t?E():"if"==t?("else"==P.state.lexical.info&&P.state.cc[P.state.cc.length-1]==B&&P.state.cc.pop()(),E(V("form"),q,z,B,Rt)):"function"==t?E(It):"for"==t?E(V("form"),I,Zt,z,F,B):"class"==t||u&&"interface"==e?(P.marked="keyword",E(V("form","class"==t?t:e),zt,B)):"variable"==t?u&&"declare"==e?(P.marked="keyword",E(z)):u&&("module"==e||"enum"==e||"type"==e)&&P.stream.match(/^\s*\w/,!1)?(P.marked="keyword","enum"==e?E(ee):"type"==e?E(Vt,H("operator"),mt,H(";")):E(V("form"),Et,H("{"),V("}"),ht,B,B)):u&&"namespace"==e?(P.marked="keyword",E(V("form"),W,z,B)):u&&"abstract"==e?(P.marked="keyword",E(z)):E(V("stat"),ot):"switch"==t?E(V("form"),q,H("{"),V("}","switch"),I,ht,B,B,F):"case"==t?E(W,H(":")):"default"==t?E(H(":")):"catch"==t?E(V("form"),N,U,z,B,F):"export"==t?E(V("stat"),qt,B):"import"==t?E(V("stat"),Kt,B):"async"==t?E(z):"@"==e?E(W,z):T(V("stat"),W,H(";"),B)}function U(t){if("("==t)return E(Bt,H(")"))}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,H(")"),B)}function G(t,e,n){if(P.state.fatArrowAt==P.stream.start){var r=n?et:tt;if("("==t)return E(N,V(")"),ut(Bt,")"),B,H("=>"),r,F);if("variable"==t)return T(N,Et,H("=>"),r,F)}var i=n?X:Y;return O.hasOwnProperty(t)?E(i):"function"==t?E(It,i):"class"==t||u&&"interface"==e?(P.marked="keyword",E(V("form"),Ht,B)):"keyword c"==t||"async"==t?E(n?$:W):"("==t?E(V(")"),K,H(")"),B,i):"operator"==t||"spread"==t?E(n?$:W):"["==t?E(V("]"),te,B,i):"{"==t?ft(st,"}",null,i):"quasi"==t?T(J,i):"new"==t?E(nt(n)):E()}function K(t){return t.match(/[;\}\)\],]/)?T():T(W)}function Y(t,e){return","==t?E(K):X(t,e,!1)}function X(t,e,n){var r=0==n?Y:X,i=0==n?W:$;return"=>"==t?E(N,n?et:tt,F):"operator"==t?/\+\+|--/.test(e)||u&&"!"==e?E(r):u&&"<"==e&&P.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?E(V(">"),ut(mt,">"),B,r):"?"==e?E(W,H(":"),i):E(i):"quasi"==t?T(J,r):";"!=t?"("==t?ft($,")","call",r):"."==t?E(at,r):"["==t?E(V("]"),K,H("]"),B,r):u&&"as"==e?(P.marked="keyword",E(mt,r)):"regexp"==t?(P.state.lastType=P.marked="operator",P.stream.backUp(P.stream.pos-P.stream.start-1),E(i)):void 0:void 0}function J(t,e){return"quasi"!=t?T():"${"!=e.slice(e.length-2)?E(J):E(K,Q)}function Q(t){if("}"==t)return P.marked="string-2",P.state.tokenize=w,E(J)}function tt(t){return x(P.stream,P.state),T("{"==t?z:W)}function et(t){return x(P.stream,P.state),T("{"==t?z:$)}function nt(t){return function(e){return"."==e?E(t?it:rt):"variable"==e&&u?E(St,t?X:Y):T(t?$:W)}}function rt(t,e){if("target"==e)return P.marked="keyword",E(Y)}function it(t,e){if("target"==e)return P.marked="keyword",E(X)}function ot(t){return":"==t?E(B,z):T(Y,H(";"),B)}function at(t){if("variable"==t)return P.marked="property",E()}function st(t,e){return"async"==t?(P.marked="property",E(st)):"variable"==t||"keyword"==P.style?(P.marked="property","get"==e||"set"==e?E(lt):(u&&P.state.fatArrowAt==P.stream.start&&(n=P.stream.match(/^\s*:\s*/,!1))&&(P.state.fatArrowAt=P.stream.pos+n[0].length),E(ct))):"number"==t||"string"==t?(P.marked=s?"property":P.style+" property",E(ct)):"jsonld-keyword"==t?E(ct):u&&M(e)?(P.marked="keyword",E(st)):"["==t?E(W,dt,H("]"),ct):"spread"==t?E($,ct):"*"==e?(P.marked="keyword",E(st)):":"==t?T(ct):void 0;var n}function lt(t){return"variable"!=t?T(ct):(P.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 a=P.state.lexical;return"call"==a.info&&(a.pos=(a.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(H(e))}return function(n,i){return n==e||i==e?E():T(t,r)}}function ft(t,e,n){for(var r=3;r"),mt):"quasi"==t?T(kt,Ct):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"==P.style?(P.marked="property",E(wt)):"?"==e||"number"==t||"string"==t?E(wt):":"==t?E(mt):"["==t?E(H("variable"),pt,H("]"),wt):"("==t?T(Ft,wt):t.match(/[;\}\)\],]/)?void 0:E()}function kt(t,e){return"quasi"!=t?T():"${"!=e.slice(e.length-2)?E(kt):E(mt,xt)}function xt(t){if("}"==t)return P.marked="string-2",P.state.tokenize=w,E(kt)}function Ot(t,e){return"variable"==t&&P.stream.match(/^\s*[?:]/,!1)||"?"==e?E(Ot):":"==t?E(mt):"spread"==t?E(Ot):T(mt)}function Ct(t,e){return"<"==e?E(V(">"),ut(mt,">"),B,Ct):"|"==e||"."==t||"&"==e?E(mt):"["==t?E(mt,H("]"),Ct):"extends"==e||"implements"==e?(P.marked="keyword",E(mt)):"?"==e?E(mt,H(":"),mt):void 0}function St(t,e){if("<"==e)return E(V(">"),ut(mt,">"),B,Ct)}function _t(){return T(mt,Pt)}function Pt(t,e){if("="==e)return E(mt)}function Tt(t,e){return"enum"==e?(P.marked="keyword",E(ee)):T(Et,dt,Dt,Mt)}function Et(t,e){return u&&M(e)?(P.marked="keyword",E(Et)):"variable"==t?(A(e),E()):"spread"==t?E(Et):"["==t?ft(At,"]"):"{"==t?ft(jt,"}"):void 0}function jt(t,e){return"variable"!=t||P.stream.match(/^\s*:/,!1)?("variable"==t&&(P.marked="property"),"spread"==t?E(Et):"}"==t?T():"["==t?E(W,H(']'),H(':'),jt):E(H(":"),Et,Dt)):(A(e),E(Dt))}function At(){return T(Et,Dt)}function Dt(t,e){if("="==e)return E($)}function Mt(t){if(","==t)return E(Tt)}function Rt(t,e){if("keyword b"==t&&"else"==e)return E(V("form","else"),z,B)}function Zt(t,e){return"await"==e?E(Zt):"("==t?E(V(")"),Lt,B):void 0}function Lt(t){return"var"==t?E(Tt,Nt):"variable"==t?E(Nt):T(Nt)}function Nt(t,e){return")"==t?E():";"==t?E(Nt):"in"==e||"of"==e?(P.marked="keyword",E(W,Nt)):T(W,Nt)}function It(t,e){return"*"==e?(P.marked="keyword",E(It)):"variable"==t?(A(e),E(It)):"("==t?E(N,V(")"),ut(Bt,")"),B,gt,z,F):u&&"<"==e?E(V(">"),ut(_t,">"),B,It):void 0}function Ft(t,e){return"*"==e?(P.marked="keyword",E(Ft)):"variable"==t?(A(e),E(Ft)):"("==t?E(N,V(")"),ut(Bt,")"),B,gt,F):u&&"<"==e?E(V(">"),ut(_t,">"),B,Ft):void 0}function Vt(t,e){return"keyword"==t||"variable"==t?(P.marked="type",E(Vt)):"<"==e?E(V(">"),ut(_t,">"),B):void 0}function Bt(t,e){return"@"==e&&E(W,Bt),"spread"==t?E(Bt):u&&M(e)?(P.marked="keyword",E(Bt)):u&&"this"==t?E(dt,Dt):T(Et,dt,Dt)}function Ht(t,e){return"variable"==t?zt(t,e):Ut(t,e)}function zt(t,e){if("variable"==t)return A(e),E(Ut)}function Ut(t,e){return"<"==e?E(V(">"),ut(_t,">"),B,Ut):"extends"==e||"implements"==e||u&&","==t?("implements"==e&&(P.marked="keyword"),E(u?mt:W,Ut)):"{"==t?E(V("}"),Wt,B):void 0}function Wt(t,e){return"async"==t||"variable"==t&&("static"==e||"get"==e||"set"==e||u&&M(e))&&P.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(P.marked="keyword",E(Wt)):"variable"==t||"keyword"==P.style?(P.marked="property",E($t,Wt)):"number"==t||"string"==t?E($t,Wt):"["==t?E(W,dt,H("]"),$t,Wt):"*"==e?(P.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,Dt);if("="==e)return E($);var n=P.state.lexical.prev;return T(n&&"interface"==n.info?Ft:It)}function qt(t,e){return"*"==e?(P.marked="keyword",E(Qt,H(";"))):"default"==e?(P.marked="keyword",E(W,H(";"))):"{"==t?E(ut(Gt,"}"),Qt,H(";")):T(z)}function Gt(t,e){return"as"==e?(P.marked="keyword",E(H("variable"))):"variable"==t?T($,Gt):void 0}function Kt(t){return"string"==t?E():"("==t?T(W):"."==t?T(Y):T(Yt,Xt,Qt)}function Yt(t,e){return"{"==t?ft(Yt,"}"):("variable"==t&&A(e),"*"==e&&(P.marked="keyword"),E(Jt))}function Xt(t){if(","==t)return E(Yt,Xt)}function Jt(t,e){if("as"==e)return P.marked="keyword",E(Yt)}function Qt(t,e){if("from"==e)return P.marked="keyword",E(W)}function te(t){return"]"==t?E():T(ut($,"]"))}function ee(){return T(V("form"),Et,H("{"),V("}"),ut(ne,"}"),B,B)}function ne(){return T(Et,Dt)}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,B.lex=!0,{startState:function(t){var e={tokenize:m,lastType:"sof",cc:[],lexical:new C((t||0)-o,0,"block",!1),localVars:n.localVars,context:n.localVars&&new R(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(),x(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",_(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,s=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==B)l=l.prev;else if(u!=Rt&&u!=F)break}for(;("stat"==l.type||"form"==l.type)&&("}"==s||(i=e.cc[e.cc.length-1])&&(i==Y||i==X)&&!/^[,\.=+\-*:?[\(]/.test(r));)l=l.prev;a&&")"==l.type&&"stat"==l.prev.type&&(l=l.prev);var f=l.type,h=s==f;return"vardef"==f?l.indented+("operator"==e.lastType||","==e.lastType?l.info.length+1:0):"form"==f&&"{"==s?l.indented:"form"==f?l.indented+o:"stat"==f?l.indented+(re(e,r)?a||o:0):"switch"!=l.info||h||0==n.doubleIndentSwitch?l.align?l.column+(h?0:1):l.indented+(h?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:s,jsonMode:l,expressionAllowed:ie,skipExpression:function(e){_(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)=>{1&&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,a,s=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 f(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=h,"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 h(t,e){var n=t.next();if(">"==n||"/"==n&&t.eat(">"))return e.tokenize=f,o=">"==n?"endTag":"selfcloseTag","tag bracket";if("="==n)return o="equals",null;if("<"==n){e.tokenize=f,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=h;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=f;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=f;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;1;){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(),k):"closeTag"==t?x:w}function k(t,e,n){return"word"==t?(n.tagName=e.current(),a="tag",S):l.allowMissingTagName&&"endTag"==t?(a="tag bracket",S(t,e,n)):(a="error",k)}function x(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?(a="tag",O):(a="tag error",C)}return l.allowMissingTagName&&"endTag"==t?(a="tag bracket",O(t,e,n)):(a="error",C)}function O(t,e,n){return"endTag"!=t?(a="error",O):(y(n),w)}function C(t,e,n){return a="error",O(t,e,n)}function S(t,e,n){if("word"==t)return a="attribute",_;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 a="error",S}function _(t,e,n){return"equals"==t?P:(l.allowMissing||(a="error"),S(t,e,n))}function P(t,e,n){return"string"==t?T:"word"==t&&l.allowUnquoted?(a="string",S):(a="error",S(t,e,n))}function T(t,e,n){return"string"==t?T:S(t,e,n)}return f.isInText=!0,{startState:function(t){var e={tokenize:f,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&&(a=null,e.state=e.state(o||n,t,e),a&&(n="error"==a?n+" error":a)),n},indent:function(e,n,r){var i=e.context;if(e.tokenize.isInAttribute)return e.tagStart==e.indented?e.stringStartCol+1:e.indented+s;if(i&&i.noIndent)return t.Pass;if(e.tokenize!=h&&e.tokenize!=f)return r?r.match(/^(\s*)/)[0].length:0;if(e.tagName)return!1!==l.multilineTagIndentPastTag?e.tagStart+e.tagName.length+2:e.tagStart+s*(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==P&&(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))},9714:(t,e,n)=>{"use strict";n.d(e,{Z:()=>f});var r=n(4942),i=n(2982),o=n(5671),a=n(3144),s=n(9050),l=n(1163);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=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.all,r=e.onResult,i=e.reset,o=this.storageKey,a={action:'load'},s=n||this.getAll(),c=t[o];if('string'==typeof c)try{c=JSON.parse(c)}catch(t){this.__logWarn('Data parsing failed',{input:c})}return i&&c&&s.reset(null,a),r?c&&r(c,a):c&&(0,l.isDef)(c.length)&&s.reset(c,a),c}},{key:"clear",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.all;return e&&e.reset(null,t),this}},{key:"__getConfig",value:function(t){var e=this.config||{};return t?e[t]:e}},{key:"getAll",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.all?t.array?(0,i.Z)(this.all.models):this.all:[]}},{key:"getAllMap",value:function(){return this.getAll().reduce((function(t,e){return t[e.get(e.idAttribute)]=e,t}),{})}},{key:"__initConfig",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.config=(0,l.deepMerge)(t,e),this.em=this.config.em,this.cls=[]}},{key:"__initListen",value: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,a){var s=u({event:t},a||o);[n,e].map((function(t){return t.trigger(i,r,s)}))}))}))}},{key:"__remove",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em,i=(0,s.isString)(t)?this.get(t):t,o=function(){return i&&e.all.remove(i,n),i};return!n.silent&&r&&r.trigger(this.events.removeBefore,i,o,n),!n.abort&&o()}},{key:"__catchAllEvent",value:function(t,e,n,r){var i=this.em,o=this.events,a=r||n;i&&o.all&&i.trigger(o.all,{event:t,model:e,options:a}),this.__onAllEvent()}},{key:"__appendTo",value:function(){var t=this.getConfig().appendTo;if(t){var e=(0,s.isElement)(t)?t:document.querySelector(t);if(!e)return this.__logWarn('"appendTo" element not found');e.appendChild(this.render())}}},{key:"__onAllEvent",value:function(){}},{key:"__logWarn",value:function(t,e){this.em.logWarning("[".concat(this.name,"]: ").concat(t),e)}},{key:"_createId",value: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,l.createId)(r)}while(i[t]);return t}},{key:"__listenAdd",value:function(t,e){var n=this;t.on('add',(function(t,r,i){return n.em.trigger(e,t,i)}))}},{key:"__listenRemove",value:function(t,e){var n=this;t.on('remove',(function(t,r,i){return n.em.trigger(e,t,i)}))}},{key:"__listenUpdate",value:function(t,e){var n=this;t.on('change',(function(t,r){return n.em.trigger(e,t,t.changedAttributes(),r)}))}},{key:"__destroy",value: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}}]),t}()},1030:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>et,evAdd:()=>U,evAll:()=>V,evClose:()=>K,evCustom:()=>q,evOpen:()=>G,evPfx:()=>B,evRemove:()=>W,evRemoveBefore:()=>$,evSelect:()=>H,evUpdate:()=>z,evUpload:()=>Y,evUploadEnd:()=>J,evUploadError:()=>Q,evUploadRes:()=>tt,evUploadStart:()=>X});var r=n(4942),i=n(9050),o=n(9304);const a={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 s=n(3144),l=n(5671),c=n(9340),u=n(2963),f=n(1120),h=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,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,u.Z)(this,n)}}var p=function(t){(0,c.Z)(n,t);var e=d(n);function n(){return(0,l.Z)(this,n),e.apply(this,arguments)}return(0,s.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}(h.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;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)}},{key:"__getBhv",value:function(){var t=this.em,e=t&&t.get('AssetManager');return e&&e.__getBehaviour()||{}}},{key:"template",value:function(){var t=this.pfx;return"\n
\n ").concat(this.getPreview(),"\n
\n
\n ").concat(this.getInfo(),"\n
\n
\n ⨯\n
\n ")}},{key:"updateTarget",value:function(t){t&&t.set&&(t.set('attributes',(0,i.clone)(t.get('attributes'))),t.set('src',this.model.get('src')))}},{key:"getPreview",value:function(){return''}},{key:"getInfo",value:function(){return''}},{key:"render",value:function(){var t=this.el;return t.innerHTML=this.template(this,this.model),t.className=this.className,this}}]),n}(h.View),C=n(7539);function S(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,u.Z)(this,n)}}var _=function(t){(0,c.Z)(n,t);var e=S(n);function n(){return(0,l.Z)(this,n),e.apply(this,arguments)}return(0,s.Z)(n,[{key:"getPreview",value:function(){var t=this.pfx,e=this.ppfx,n=this.model.get('src');return(0,C.Z)(k||(k=(0,b.Z)(["\n
\n
\n "])),t,n,t,e)}},{key:"getInfo",value:function(){var t=this.pfx,e=this.model,n=e.get('name'),r=e.get('width'),i=e.get('height'),o=e.get('unitDim'),a=r&&i?"".concat(r,"x").concat(i).concat(o):'';return n=n||e.getFilename(),(0,C.Z)(x||(x=(0,b.Z)(["\n
","
\n
","
\n "])),t,n,t,a)}},{key:"init",value:function(t){var e=this.pfx;this.className+=" ".concat(e,"asset-image")}},{key:"onClick",value: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)}},{key:"onDblClick",value:function(){var t=this.em,e=this.model,n=this.__getBhv().select,r=this.config.onDblClick,o=this.collection,a=o.target,s=o.onSelect;(0,i.isFunction)(n)?n(e,!0):(0,i.isFunction)(r)?r(e):(this.updateTarget(a),t&&t.get('Modal').close()),(0,i.isFunction)(s)&&s(e)}},{key:"onRemove",value:function(t){t.stopImmediatePropagation(),this.model.collection.remove(this.model)}}]),n}(O);_.prototype.events={'click [data-toggle=asset-remove]':'onRemove',click:'onClick',dblclick:'onDblClick'};var P=n(793);function T(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,u.Z)(this,n)}}var E=function(t){(0,c.Z)(n,t);var e=T(n);function n(){return(0,l.Z)(this,n),e.apply(this,arguments)}return(0,s.Z)(n)}(h.Collection.extend(P.Z));function j(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,u.Z)(this,n)}}E.prototype.types=[{id:'image',model:y,view:_,isType:function(t){return'string'==typeof t?{type:'image',src:t}:t}}];var A=function(t){(0,c.Z)(n,t);var e=j(n);function n(){return(0,l.Z)(this,n),e.apply(this,arguments)}return(0,s.Z)(n,[{key:"template",value:function(t){var e=t.pfx,n=t.ppfx,r=t.em,i='';return this.config.showUrlInput&&(i="\n
\n
\n \n
\n \n
\n
\n ")),"\n
\n
\n ").concat(i,"\n
\n
\n
\n
\n ")}},{key:"initialize",value: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)}},{key:"handleSubmit",value: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}))}},{key:"getAssetsEl",value:function(){return this.el.querySelector(".".concat(this.pfx,"assets"))}},{key:"getAddInput",value:function(){return this.inputUrl&&this.inputUrl.value||(this.inputUrl=this.el.querySelector(".".concat(this.pfx,"add-asset input"))),this.inputUrl}},{key:"removedAsset",value:function(t){this.collection.length||this.toggleNoAssets()}},{key:"addToAsset",value:function(t){1==this.collection.length&&this.toggleNoAssets(1),this.addAsset(t)}},{key:"addAsset",value: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 a=this.getAssetsEl();a&&a.insertBefore(o,a.firstChild)}return o}},{key:"toggleNoAssets",value: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)}}},{key:"deselectAll",value:function(){var t=this.pfx;this.$el.find(".".concat(t,"highlight")).removeClass("".concat(t,"highlight"))}},{key:"renderAssets",value: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)}},{key:"render",value: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}}]),n}(h.View);A.prototype.events={submit:'handleSubmit'};var D,M=n(9661);function R(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 Z(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 Z(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,a=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){s=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function Z(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':'')}},{key:"initialize",value: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 #".concat(this.uploadId)]:'uploadFile'};var n=e.uploadFile;n?this.uploadFile=n.bind(this):!e.upload&&e.embedAsBase64&&(this.uploadFile=this.constructor.embedAsBase64),this.delegateEvents()}},{key:"onUploadStart",value:function(){var t=this.module;t&&t.__propEv('asset:upload:start')}},{key:"onUploadEnd",value:function(t){var e=this.$el,n=this.module;n&&n.__propEv('asset:upload:end',t);var r=e.find('input');r&&r.val('')}},{key:"onUploadError",value:function(t){var e=this.module;console.error(t),this.onUploadEnd(t),e&&e.__propEv('asset:upload:error',t)}},{key:"onUploadResponse",value: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)}},{key:"uploadFile",value: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 a=new FormData,s=i.params,l=i.customFetch;for(var c in s)a.append(c,s[c]);if(this.multiUpload)for(var u=0;u").concat(r.dropzoneContent,"")),f(),'draggable'in o&&[o,s].forEach((function(t){t.ondragover=h,t.ondragleave=d,t.ondrop=p}))}},{key:"render",value: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}}]),n}(h.View);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}function F(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},i=(s=F(F({},a),r)).pStylePrefix,o=s,l=o.em;return this.config=s,this.em=l,i&&(s.stylePrefix=i+s.stylePrefix),t=new E([]),e=new E([]),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,F({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(){return this.getProjectData()},load:function(t){return this.loadProjectData(t)},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 A(F({el:o},i))).render()}return e.reset(r),this.getContainer()}},__viewParams:function(){return{collection:e,globalCollection:t,config:s,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 N(this.__viewParams())),r},onLoad:function(){var t=this;this.getAll().reset(s.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){s.dropzone&&r&&r.initDropzone(t)},setTarget:function(t){e.target=t},onSelect:function(t){e.onSelect=t},onClick:function(t){s.onClick=t},onDblClick:function(t){s.onDblClick=t},__behaviour:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._bhv=F(F({},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={},s={}}})}},6407:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>q,evAdd:()=>F,evAll:()=>N,evCustom:()=>$,evDrag:()=>z,evDragStart:()=>U,evDragStop:()=>W,evPfx:()=>I,evRemove:()=>B,evRemoveBefore:()=>H,evUpdate:()=>V});var r=n(5671),i=n(3144),o=n(7326),a=n(9340),s=n(2963),l=n(1120),c=n(4942),u=n(9050),f=n(9714);const h={appendTo:'',appendOnClick:!1,blocks:[],custom:!1};var d=n(2316);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,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}var g=function(t){(0,a.Z)(n,t);var e=p(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.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,u.isFunction)(t.get)?t.get('label'):t.label?t.label:t}}]),n}(d.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,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}var m=function(t){(0,a.Z)(n,t);var e=v(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n)}(d.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,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}m.prototype.model=g;var b=function(t){(0,a.Z)(n,t);var e=y(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n,[{key:"defaults",value:function(){return{id:'',label:'',open:!0,attributes:{}}}}]),n}(d.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,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}var k=function(t){(0,a.Z)(n,t);var e=w(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n)}(d.Collection);k.prototype.model=b;var x=n(1163);function O(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,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}var C,S=function(t){(0,a.Z)(n,t);var e=O(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n,[{key:"events",value:function(){return{click:'handleClick',mousedown:'startDrag',dragstart:'handleDragStart',drag:'handleDrag',dragend:'handleDragEnd'}}},{key:"initialize",value: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)}},{key:"__getModule",value:function(){return this.em.get('BlockManager')}},{key:"handleClick",value:function(t){var e=this.config,n=this.model,r=this.em,i=n.get('onClick')||e.appendOnClick;if(r.trigger('block:click',n,t),i){if((0,u.isFunction)(i))return i(n,r.getEditor(),{event:t});var o,a,s=e.getSorter(),l=n.get('content'),c=r.getSelected();if(s.setDropContent(l),c)if(s.validTarget(c.getEl(),l).valid)o=c;else{var f=c.parent();s.validTarget(f.getEl(),l).valid&&(o=f,a=f.components().indexOf(c)+1)}if(!o){var h=r.getWrapper();s.validTarget(h.getEl(),l).valid&&(o=h)}var d=o&&o.append(l,{at:a})[0];d&&r.setSelected(d,{scroll:1})}}},{key:"startDrag",value: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,x.on)(document,'mouseup',this.endDrag)}}},{key:"handleDragStart",value:function(t){this.__getModule().__startDrag(this.model,t)}},{key:"handleDrag",value:function(t){this.__getModule().__drag(t)}},{key:"handleDragEnd",value:function(){this.__getModule().__endDrag()}},{key:"endDrag",value:function(t){(0,x.off)(document,'mouseup',this.endDrag);var e=this.config.getSorter();e.moved=0,e.endMove()}},{key:"render",value:function(){var t=this.em,e=this.el,n=this.$el,r=this.ppfx,i=this.model,o=i.get('disable'),a=i.get('attributes')||{},s=a.class||'',l="".concat(r,"block"),c=t&&t.t("blockManager.labels.".concat(i.id))||i.get('label'),u=i.get('render'),f=i.get('media'),h=o?"".concat(l,"--disable"):"".concat(r,"four-color-h");n.attr(a),e.className="".concat(s," ").concat(l," ").concat(r,"one-bg ").concat(h).trim(),e.innerHTML="\n ".concat(f?"
").concat(f,"
"):'',"\n
").concat(c,"
\n "),e.title=a.title||e.textContent.trim(),e.setAttribute('draggable',!(!(0,x.hasDnd)(t)||o));var d=u&&u({el:e,model:i,className:l,prefix:r});return d&&(e.innerHTML=d),this}}]),n}(d.View),_=n(168),P=n(7539);function T(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,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}var E=function(t){(0,a.Z)(n,t);var e=T(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n,[{key:"template",value:function(t){var e=t.pfx,n=t.label;return(0,P.Z)(C||(C=(0,_.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}(d.View);function j(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]:{};this.config=A(A({},this.config),t)}},{key:"getSorter",value: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}}},{key:"onDrag",value:function(t){this.em.stopDefault(),this.em.trigger('block:drag:start',t)}},{key:"onMove",value:function(t){this.em.trigger('block:drag:move',t)}},{key:"onDrop",value: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)}}},{key:"addTo",value:function(t){this.add(t)}},{key:"add",value:function(t,e){var n=this.config,r=e||null,i=new S({model:t,attributes:t.get('attributes')},n).render().el,o=t.get('category');if(o&&this.categories&&!n.ignoreCategories){(0,u.isString)(o)?o={id:o,label:o}:(0,u.isObject)(o)&&!o.id&&(o.id=o.label);var a=this.categories.add(o),s=a.get('id'),l=this.renderedCategories[s],c=this.getCategoriesEl();return t.set('category',a,{silent:!0}),!l&&c&&(l=new E({model:a},this.config).render(),this.renderedCategories[s]=l,c.appendChild(l.el)),void(l&&l.append(i))}r?r.appendChild(i):this.append(i)}},{key:"getCategoriesEl",value:function(){return this.catsEl||(this.catsEl=this.el.querySelector(".".concat(this.catsClass))),this.catsEl}},{key:"getBlocksEl",value:function(){return this.blocksEl||(this.blocksEl=this.el.querySelector(".".concat(this.noCatClass," .").concat(this.blockContClass))),this.blocksEl}},{key:"append",value:function(t){var e=this.getBlocksEl();e&&e.appendChild(t)}},{key:"render",value: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}}]),n}(d.View);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 Z(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.c=Z(Z({},h),e);var n=this.c.em;return this.em=n,this.blocks=new m(this.c.blocks),this.blocksVisible=new m(this.blocks.models),this.categories=new k,this.all=this.blocks,this.__initListen(),this.blocks.on('add',(function(e){return t.blocksVisible.add(e)})),this.blocks.on('remove',(function(e){return t.blocksVisible.remove(e)})),this.blocks.on('reset',(function(e){return t.blocksVisible.reset(e.models)})),this}},{key:"__trgCustom",value:function(){this.em.trigger(this.events.custom,this.__customData())}},{key:"__customData",value: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)}}}},{key:"__startDrag",value:function(t,e){var n=this.em,r=this.events,i=this.blocks,o=t.getContent?t.getContent():t;this._dragBlock=t,n.set({dragResult:null,dragContent:o}),[n,i].map((function(n){return n.trigger(r.dragStart,t,e)}))}},{key:"__drag",value:function(t){var e=this.em,n=this.events,r=this.blocks,i=this._dragBlock;[e,r].map((function(e){return e.trigger(n.drag,i,t)}))}},{key:"__endDrag",value:function(){var t=this.em,e=this.events,n=this.blocks,r=this._dragBlock,i=t.get('dragResult');if(this._dragBlock=null,i){var o='activeOnRender',a=i.get&&i.get(o),s=r.get('activate')||a,l=r.get('select'),c=(0,u.isArray)(i)?i[0]:i;(l||s&&!1!==l)&&t.setSelected(c),s&&(c.trigger('active'),a&&c.unset(o)),r.get('resetId')&&c.onAll((function(t){return t.resetId()}))}t.set({dragResult:null,dragContent:null}),[t,n].map((function(t){return t.trigger(e.dragEnd,i,r)}))}},{key:"__getFrameViews",value:function(){return this.em.get('Canvas').getFrames().map((function(t){return t.view}))}},{key:"__behaviour",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._bhv=Z(Z({},this._bhv||{}),t)}},{key:"__getBehaviour",value:function(){return this._bhv||{}}},{key:"startDrag",value:function(t,e){this.__startDrag(t,e),this.__getFrameViews().forEach((function(t){return t.droppable.startCustom()}))}},{key:"endDrag",value:function(t){this.__getFrameViews().forEach((function(e){return e.droppable.endCustom(t)})),this.__endDrag()}},{key:"getConfig",value:function(){return this.c}},{key:"postRender",value:function(){var t=this.categories,e=this.blocksVisible;this.blocksView=new M({collection:e,categories:t},this.c);var n=this.getConfig().appendTo;if(n){var r=(0,u.isElement)(n)?n:document.querySelector(n);if(!r)return this.__logWarn('"appendTo" element not found');r.appendChild(this.render(this.blocksVisible.models))}this.__trgCustom()}},{key:"add",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=e||{};return r.id=t,this.blocks.add(r,n)}},{key:"get",value:function(t){return this.blocks.get(t)}},{key:"getAll",value:function(){return this.blocks}},{key:"getAllVisible",value:function(){return this.blocksVisible}},{key:"remove",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.__remove(t,e)}},{key:"getCategories",value:function(){return this.categories}},{key:"getContainer",value:function(){return this.blocksView.el}},{key:"render",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.categories.categories,r=t||this.getAll().models;if(e.external){var i=new m(r);return new M({collection:i,categories:n},Z(Z({},this.c),e)).render().el}return this.blocksView&&(this.blocksView.updateConfig(e),this.blocksView.collection.reset(r),this.blocksView.rendered||(this.blocksView.render(),this.blocksView.rendered=1)),this.getContainer()}},{key:"destroy",value:function(){var t,e=[this.blocks,this.blocksVisible,this.categories];e.map((function(t){return t.stopListening()})),e.map((function(t){return t.reset()})),null===(t=this.blocksView)||void 0===t||t.remove(),this.c={},this.blocks={},this.blocksVisible={},this.blocksView={},this.categories=[],this.all={}}}]),n}(f.Z)},7619:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>T});var r=n(9050);const i={stylePrefix:'cm-',inlineCss:!1};var o=n(5671),a=n(3144),s=n(9340),l=n(2963),c=n(1120),u=n(2316);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 h=function(t){(0,s.Z)(n,t);var e=f(n);function n(){return(0,o.Z)(this,n),e.apply(this,arguments)}return(0,a.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),d=n(8795);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,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 g=function(t){(0,s.Z)(n,t);var e=p(n);function n(){return(0,o.Z)(this,n),e.apply(this,arguments)}return(0,a.Z)(n,[{key:"build",value:function(t){var e=t.toJSON();return this.beforeEach(e),(0,r.each)(e,(function(t,n){var r=e[n];if(r instanceof u.Model)e[n]=this.build(r);else if(r instanceof u.Collection){var i=r;e[n]=[],i.length&&i.each((function(t,r){e[n][r]=this.build(t)}),this)}}),this),e}},{key:"beforeEach",value:function(t){delete t.status}}]),n}(u.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,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 m,y=function(t){(0,s.Z)(n,t);var e=v(n);function n(){return(0,o.Z)(this,n),e.apply(this,arguments)}return(0,a.Z)(n,[{key:"mapModel",value:function(t){var e='',n=t.get('script-export')||t.get('script'),i=t.get('type'),o=t.get('components'),a=t.getId();if(n){var s=t.get('attributes');s=(0,r.extend)({},s,{id:a}),t.set('attributes',s,{silent:1});var l=t.getScriptString(n),c=t.get('script-props');if(t.get('scriptUpdated')&&!c)this.mapJs[i+'-'+a]={ids:[a],code:l};else{var u,f=this.mapJs[i];if(c&&(u=t.__getScriptProps()),f)f.ids.push(a),u&&(f.props[a]=u);else{var h={ids:[a],code:l};u&&(h.props={[a]:u}),this.mapJs[i]=h}}}return o.each((function(t){e+=this.mapModel(t)}),this),e}},{key:"build",value: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}}]),n}(u.Model),b=n(4942);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 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)}}(0,n(1163).hasWin)()&&(m=n(4631),n(6531),n(6629),n(9210));var x=function(t){(0,s.Z)(n,t);var e=k(n);function n(){return(0,o.Z)(this,n),e.apply(this,arguments)}return(0,a.Z)(n,[{key:"defaults",value:function(){return{input:'',label:'',codeName:'',theme:'hopscotch',readOnly:!0,lineNumbers:!0}}},{key:"init",value:function(t){return(0,r.bindAll)(this,'onChange'),this.editor=m.fromTextArea(t,function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},r=this.editor;r&&(r.setValue(t),r.autoFormatRange&&(m.commands.selectAll(r),r.autoFormatRange(r.getCursor(!0),r.getCursor(!1)),m.commands.goDocStart(r)),!n.noRefresh&&setTimeout((function(){return e.refresh()})))}}]),n}(u.Model);x.prototype.CodeMirror=m;var O,C=n(168),S=n(7539);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,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 P=function(t){(0,s.Z)(n,t);var e=_(n);function n(){return(0,o.Z)(this,n),e.apply(this,arguments)}return(0,a.Z)(n,[{key:"template",value:function(t){var e=t.pfx,n=t.codeName,r=t.label;return(0,S.Z)(O||(O=(0,C.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 T=function(){var t={},e={},n={},o={},a={},s='CodeMirror';return{getConfig:function(){return t},config:t,EditorView:P,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 h,n.css=new d.Z,n.json=new g,n.js=new y,a.CodeMirror=new x,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)?s: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 a)this.addViewer(t,a[t]);return this},destroy:function(){[t,e,n,o,a].forEach((function(t){return{}}))}}}},8795:(t,e,n)=>{"use strict";n.d(e,{U:()=>d,Z:()=>p});var r=n(5671),i=n(3144),o=n(9340),a=n(2963),s=n(1120),l=n(9050),c=n(2316),u=n(1163);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,s.Z)(t);if(e){var i=(0,s.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,a.Z)(this,n)}}var h=Number.MAX_VALUE,d=function(t){var e=/(-?\d*\.?\d+)\w{0,}/.exec(t);return e?e[0]:''},p=function(t){(0,o.Z)(n,t);var e=f(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n,[{key:"initialize",value:function(){(0,l.bindAll)(this,'sortRules'),this.compCls=[],this.ids=[]}},{key:"buildFromModel",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r='',i=this.em,o=i&&i.getConfig().avoidInlineStyle,a=t.styleToString(),s=t.get('classes');this.ids.push("#".concat(t.getId())),s.each((function(t){return e.compCls.push(t.getFullName())})),!o&&a&&(r="#".concat(t.getId(),"{").concat(a,"}"));var l=t.components();return l.each((function(t){return r+=e.buildFromModel(t,n)})),r}},{key:"build",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.json,i=n.em||'',o=n.cssc||i&&i.get('CssComposer');this.em=i,this.compCls=[],this.ids=[],this.model=t;var a=[],s=t?this.buildFromModel(t,n):'',c=(0,l.isUndefined)(n.clearStyles)&&i?i.getConfig().clearStyles:n.clearStyles;if(o){var f=n.rules||o.getAll(),h={},d=[];n.onlyMatched&&t&&(0,u.hasWin)()&&(f=this.matchedRules(t,f)),f.forEach((function(t){var i=t.getAtRule();if(i){var o=h[i];o?o.push(t):h[i]=[t]}else{var l=e.buildFromRule(t,d,n);r?a.push(l):s+=l}})),this.sortMediaObject(h).forEach((function(t){var i='',o=t.key;t.value.forEach((function(t){var l=e.buildFromRule(t,d,n);t.get('singleAtRule')?s+="".concat(o,"{").concat(l,"}"):i+=l,r&&a.push(l)})),i&&(s+="".concat(o,"{").concat(i,"}"))})),i&&c&&f.remove&&f.remove(d)}return r?a.filter((function(t){return t})):s}},{key:"buildFromRule",value:function(t,e){var n,r=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o='',a=this.model,s=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)})),s&&n||l||c||!a){var u=t.getDeclaration({body:1});u&&(i.json?o=t:o+=u)}else e.push(t);return o}},{key:"matchedRules",value: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}))}},{key:"getQueryLength",value:function(t){var e=/(-?\d*\.?\d+)\w{0,}/.exec(t);return e?parseFloat(e[1]):h}},{key:"sortMediaObject",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=[];return(0,l.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)}))}},{key:"sortRules",value: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)}},{key:"__cleanSelector",value:function(t){return t.split(' ').map((function(t){return t.split(':')[0]})).join(' ')}}]),n}(c.Model)},289:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>h});var r=n(2982),i=n(4942),o=n(9050),a=n(238);const s={stylePrefix:'com-',defaults:[],strict:1};var l=n(7375);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({},s),a),t=e.em;var h=e.pStylePrefix;return h&&(e.stylePrefix=h+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(),a=n&&n.event,s=n.target,c=s||t.getSelected(),u=s?[s]:(0,r.Z)(t.getSelectedAll()),f=a&&'dragstart'==a.type,h={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(h)},v=(0,o.includes)(d,p);u.forEach((function(t){return t.trigger('disable')})),f?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(h)})),(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:a});else{f&&a.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()},f.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),a=0;a1&&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=f.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 h},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,a=t.get('Editor');this.isActive(o)&&!i.force&&e.strict||(r=a&&n.callRun(a,i),o&&n.stop&&!n.noStop&&!i.abort&&(h[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,a=t.get('Editor');(this.isActive(o)||i.force||!e.strict)&&(o&&delete h[o],r=n.callStop(a,i))}return r},create:function(t){return t.stop||(t.noStop=1),new(a["default"].extend(t))(e)},destroy:function(){[t,e,i,c,h].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:()=>a});var r=n(9050),i=n(1163),o=n(5610);const a={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,a=t?'add':'remove';this.getCanvas().classList[a]("".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},a=this.getCanvas(),s=["".concat(e,"is__grab")];!t&&s.push("".concat(e,"is__grabbing")),s.forEach((function(t){return a.classList[n](t)})),o[r](document,'keyup',this.onKeyUp),o[r](a,'mousedown',this.enableDragger),o[r](document,'mouseup',this.disableDragger)}}},238:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var r=n(5671),i=n(3144),o=n(9340),a=n(2963),s=n(1120),l=n(2316);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,s.Z)(t);if(e){var i=(0,s.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,a.Z)(this,n)}}var u=function(t){(0,o.Z)(n,t);var e=c(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n,[{key:"initialize",value: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)}},{key:"onFrameScroll",value:function(t){}},{key:"getCanvas",value:function(){return this.canvas.getElement()}},{key:"getCanvasBody",value:function(){return this.canvas.getBody()}},{key:"getCanvasTools",value:function(){return this.canvas.getToolsEl()}},{key:"offset",value:function(t){var e=t.getBoundingClientRect();return{top:e.top+t.ownerDocument.body.scrollTop,left:e.left+t.ownerDocument.body.scrollLeft}}},{key:"init",value:function(t){}},{key:"callRun",value: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)}},{key:"callStop",value: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}},{key:"stopCommand",value:function(){this.em.get('Commands').stop(this.id)}},{key:"run",value:function(t,e){}},{key:"stop",value:function(t,e){}}]),n}(l.Model)},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]:{},a=[],s=o.component||t.getSelectedAll();return(s=(0,i.isArray)(s)?(0,r.Z)(s):[s]).filter(Boolean).forEach((function(t){if(!t.get('removable'))return a.push(t),n.em.logWarning('The element is not removable',{component:t});t.remove()})),t.select(a),s}}},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 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 s(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 a=r.target,c=r.event,u=r.mode,f=r.dragger,h=void 0===f?{}:f,d=a.getEl(),p=s({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}},h);this.setupGuides(),this.opts=r,this.editor=t,this.em=t.getModel(),this.target=a,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,a=n.getConfig().stylePrefix,s=document.createElement('div'),l=document.createElement('div'),c="
\n
\n
");(e=document.createElement('div')).className="".concat(a,"guides"),s.className="".concat(a,"guide-info ").concat(a,"guide-info__x"),l.className="".concat(a,"guide-info ").concat(a,"guide-info__y"),s.innerHTML=c,l.innerHTML=c,e.appendChild(s),e.appendChild(l),n.Canvas.getGlobalToolsEl().appendChild(e),this.guidesEl=e,this.elGuideInfoX=s,this.elGuideInfoY=l,this.elGuideInfoContentX=s.querySelector(".".concat(a,"guide-info__content")),this.elGuideInfoContentY=l.querySelector(".".concat(a,"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,a=e===o?n:r.getElementPos(o);e=o,n=a,(0,i.each)(r.getGuidePosUpdate(t,a),(function(e,n){return t[n]=e})),t.originRect=a}))},getGuidePosUpdate:function(t,e){var n={},r=e.top,i=e.height,o=e.left,a=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+a;break;case'x':n.x=o+a/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,a=r.left,l=r.width,c=[{type:'t',y:i},{type:'b',y:i+o},{type:'l',x:a},{type:'r',x:a+l},{type:'x',x:a+l/2},{type:'y',y:i+o/2}].map((function(i){return s(s({},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,a=0,s=0;return e?(a=this.getTranslate(o),s=this.getTranslate(o,'y')):(a=parseFloat(r||0),s=parseFloat(i||0)),{x:a,y:s}},setPosition:function(t){var e=t.x,n=t.y,r=t.end,o=t.position,a=t.width,s=t.height,l=this.target,c=this.isTran,u=this.em,f='px',h=r?'':1,d="".concat(e).concat(f),p="".concat(n).concat(f),g={};if(c){var v=l.getStyle()['transform']||'';v=this.setTranslate(v,'x',d),g={transform:v=this.setTranslate(v,'y',p),en:h},l.addStyle(g,{avoidStore:!r})}else{var m={position:o,width:a,height:s},y={left:d,top:p,en:h};(0,i.keys)(m).forEach((function(t){var e=m[t];e&&(y[t]=e)})),g=y,l.addStyle(g,{avoidStore:!r})}u.getSelected()&&(0,i.keys)(g).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,a=i.onStart,s=n.Canvas,l=e.getStyle(),c='absolute',u=[c,'relative'];if(a&&a(this._getDragData()),!r&&l.position!==c){var f,h=s.offset(e.getEl()),d=h.left,p=h.top,g=h.width,v=h.height,m=e.parent();do{var y=m.getStyle();f=u.indexOf(y.position)>=0?m:null,m=m.parent()}while(m&&!f);if(o){var b=s.getMouseRelativeCanvas(t);d=b.x,p=b.y}else if(f){var w=s.offset(f.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,a=i.onEnd;a&&a(t,n,s(s({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,a=t.getElementPos(r),c=(0,i.isUndefined)(o)?'y':'x',u='y'===c,f=a[u?'left':'top'],h=a.rect[u?'left':'top'],d=u?f+a.width:f+a.height,p=u?h+a.rect.width:h+a.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,a=u?n+r:i+o;return{gap:a0})).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,k=b.width,x=b.top,O=b.height,C=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,a=0;do{o++,r=(a=t.index()+o)<=i?n.getChildAt(a):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 a=i.get('type'),s=t.Pages.getAllWrappers(),l=(0,r.flatten)(s.map((function(t){return t.findType(a)}))).length;if(!l){var c=t.CssComposer.getAll();o=c.filter((function(t){return t.get('group')==="cmp:".concat(a)})),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),a=n(2620),s=o().$;const l=(0,r.extend)({},a["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=s(t.target);e.data('model').get('removable')&&(e.addClass(this.hoverClass),this.attachBadge(e.get(0)))},stopDelete:function(t){t.stopPropagation(),s(t.target).removeClass(this.hoverClass),this.badge&&this.badge.css({left:-1e3,top:-1e3})},onDelete:function(t){t.stopPropagation();var e=s(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,a=r.stylePrefix;if(this.cm=t.CodeManager||null,!this.$editors){var s=this.buildEditor('htmlmixed','hopscotch','HTML'),l=this.buildEditor('css','hopscotch','CSS');this.htmlEditor=s.el,this.cssEditor=l.el;var c=i("
"));c.append(s.$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),a=this.enable(o||t.getContainer());this.fsChanged=this.fsChanged.bind(this,a),document.addEventListener(a+'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),a=n(1163),s=n(2620),l=n(8463),c=o().$;const u=(0,r.extend)({},l["default"],s["default"],{init:function(t){s["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,a=this.am,s=o.custom;if((0,r.isFunction)(s.open))return s.open(a.__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(),a=n.types,s=void 0===a?[]:a,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:s,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||s){var u=r.getAll().filter((function(t){return t}));s&&s.length&&(u=u.filter((function(t){return-1!==s.indexOf(t.get('type'))}))),r.render(u),this.rendered=r.getContainer()}if(l){var f=this.rendered.querySelector("input#".concat(o.stylePrefix,"uploadFile"));f&&f.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,a=i.appendTo;if((0,r.isFunction)(o.open))return o.open(n.__customData());if(this.firstRender&&!a){var s='views-container',l=e.Panels;(l.getPanel(s)||l.addPanel({id:s})).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,r=e.getConfig();if(!r.appendTo){if(!this.layers){var i='views-container',o=document.createElement('div'),a=n.getPanel(i)||n.addPanel({id:i});r.custom?e.__trgCustom({container:o}):o.appendChild(e.render()),a.set('appendContent',o).trigger('change:appendContent'),this.layers=o}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 a=t.DeviceManager;if(a&&n.showDevices){var s=r.addPanel({id:'devices-c'}),l=a.render();s.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 f=t.StyleManager;this.sm=f;var h=f.getConfig(),d=h.stylePrefix;this.$header=i("
").concat(t.t('styleManager.empty'),"
")),this.$cn.append(this.$header),h.custom?f.__trgCustom({container:this.$cn2.get(0)}):h.appendTo||this.$cn2.append(f.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,f.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,a=o.getConfig();if(!a.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 s=t.Panels;(s.getPanel('views-container')?s.getPanel('views-container'):s.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'),a=t.getSelected();o&&a&&(t.getSelectedAll().forEach((function(e){var i=e.collection;if(i){var a,s={at:e.index()+1,action:n.action||'paste-component'};if((0,r.contains)(o,e)&&e.get('copyable'))a=i.add(e.clone(),s);else{var l=o.filter((function(t){return t.get('copyable')})).filter((function(n){return t.Components.canMove(e.parent(),n).result}));a=i.add(l.map((function(t){return t.clone()})),s)}(a=(0,r.isArray)(a)?a:[a]).forEach((function(e){return t.trigger('component:paste',e)}))}})),a.emitUpdate())}}},4944:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>a});var r=n(2982),i=n(9050),o='sw-visibility';const a={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(),a=r.getToolbarEl();a&&(a.style.display=t?'none':'');var s=o.querySelectorAll(".".concat(this.ppfx,"no-pointer"));(0,i.each)(s,(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),a=t.Canvas.getElement(),s=t.getEl(),l=t.Config.stylePrefix;if(!this.helper){var c=document.createElement('span');c.className="".concat(l,"off-prv fa fa-eye-slash"),s.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=a.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||{},a=t.Canvas,s=a.getCanvasView(),l=function(t){for(var e=1;e{"use strict";n.r(e),n.d(e,{default:()=>E});var r=n(1002),i=n(4942),o=n(2316),a=n.n(o),s=n(9050),l=n(1163),c=n(9283),u=n(3144),f=n(5671),h=n(9340),d=n(2963),p=n(1120),g=n(6602);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]:{},e=t.config,n=void 0===e?{}:e;this.em=n.em,this.editor=n.editor}},{key:"handleClick",value:function(t){t.preventDefault(),t.stopPropagation();var e=this.editor,n=this.em,r=e.Canvas.getFrameEl().getBoundingClientRect(),i=r.left,o=r.top,a=m(m({},t),{},{clientX:t.clientX-i,clientY:t.clientY-o});n.trigger('toolbar:run:before'),this.execCommand(a)}},{key:"execCommand",value: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)}},{key:"render",value: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}}]),n}(a().View);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,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 k=function(t){(0,h.Z)(n,t);var e=w(n);function n(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0;return(0,f.Z)(this,n),(t=e.call(this,r,i)).config={editor:r.editor||'',em:r.em},t.listenTo(t.collection,'reset',t.render),t}return(0,u.Z)(n)}(g.Z);function x(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)}}k.prototype.itemView=b;var O=function(t){(0,h.Z)(n,t);var e=x(n);function n(){return(0,f.Z)(this,n),e.apply(this,arguments)}return(0,u.Z)(n,[{key:"defaults",value:function(){return{command:'',attributes:{}}}}]),n}(a().Model);const C=a().Collection.extend({model:O});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 _(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]:{};P&&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=T(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=T(t).data('model');if(i&&i.get('badgable')){var o=this.getBadge(n);if(!n.posOnly){var a=this.canvas.getConfig(),s=i.getIcon(),l=a.pStylePrefix||'',c="".concat(l,"badge"),u=a.customBadgeLabel,f="".concat(s?"
").concat(s,"
"):'',"\n
").concat(i.getName(),"
");o.innerHTML=u?u(i):f}var h='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+h,d.left=v+h}},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'):'',a=(n?n.get('Config'):'').stylePrefix||'',c="".concat(a,"resizing"),u=!(0,s.isElement)(t)&&(0,l.isTaggableNode)(t)?t:n.getSelected(),f=u&&u.get('resizable'),h={},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&&f){var p=(0,s.isElement)(t)?t:u.getEl();h={onStart:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=r.el,a=r.config,s=r.resizer,c=a.keyHeight,f=a.keyWidth,h=a.currentUnit,p=a.keepAutoHeight,g=a.keepAutoWidth;d('add',0,r),e=n.get('StyleManager').getModelToStyle(u),i.toggleFramesEvents();var v=getComputedStyle(o),m=e.getStyle(),y=m[f];a.autoWidth=g&&'auto'===y,isNaN(parseFloat(y))&&(y=v[f]);var b=m[c];a.autoHeight=p&&'auto'===b,isNaN(parseFloat(b))&&(b=v[c]),s.startDim.w=parseFloat(y),s.startDim.h=parseFloat(b),P=0,h&&(a.unitHeight=(0,l.getUnitFromValue)(b),a.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),P=1},updateTarget:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var a=o.store,s=o.selectedHandler,l=o.config,c=l.keyHeight,u=l.keyWidth,f=l.autoHeight,h=l.autoWidth,d=l.unitWidth,p=l.unitHeight,g=['tc','bc'].indexOf(s)>=0,v=['cl','cr'].indexOf(s)>=0,m={},y=a?'':1;if(!g){var b=i.getBody().offsetWidth,w=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 a=o.get('hoverable'),s=this.lastHovered!==n,l=s?{}:{posOnly:1};s&&a&&(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),f=u.style,h=this.canvas.canvasRectOffset(n,r),d=h.top,p=h.left;this.updateBadge(n,r,_(_({},l),{},{view:i,topOff:d,leftOff:p})),f.top=d+c,f.left=p+c,f.width=r.width+c,f.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,s.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',_({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,a=this.lastSelected!==n;(a||t.force)&&(this.lastSelected=n,this.updateToolbar(i));var s='px',l=this.toggleToolsEl(1),c=l.style,u=o.getTargetToElementFixed(n,o.getToolbarEl(),{pos:r}),f=u.canvasOffsetTop,h=u.canvasOffsetLeft;c.top=f+s,c.left=h+s,c.width=r.width+s,c.height=r.height+s,this.updateToolbarPos({top:u.top,left:u.left}),this._trgToolUp('global',{component:i,el:l,top:f,left:h,width:r.width,height:r.height})},updateAttached:(0,s.debounce)((function(){this.updateGlobalPos()})),onContainerChange:(0,s.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,a=0!==o&&'after'==i&&r==o;return 0!==o&&(!a&&!n[r][4]||n[r-1]&&!n[r-1][4]||a&&!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),a=n(9050),s=n(1163);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(),f=this.em.getZoomDecimal(),h=i.el||'';if(!u.showOffsets||(0,s.isTextNode)(h)||!u.showOffsetsSelected&&'Fixed'==o)t.stopCommand(this.id,n);else{var d=t.Canvas,p=function(t){for(var e=1;e")).get(0),A=c("
")).get(0),D=v+E+'-el',M="".concat(v+T+'-el'," ").concat(v+T),R="".concat(D," ").concat(v+E);b=c("
")).get(0),w=c("
")).get(0),k=c("
")).get(0),x=c("
")).get(0),O=c("
")).get(0),C=c("
")).get(0),S=c("
")).get(0),_=c("
")).get(0),this['marginT'+o]=b,this['marginB'+o]=w,this['marginL'+o]=k,this['marginR'+o]=x,this['padT'+o]=O,this['padB'+o]=C,this['padL'+o]=S,this['padR'+o]=_,j.appendChild(b),j.appendChild(w),j.appendChild(k),j.appendChild(x),A.appendChild(O),A.appendChild(C),A.appendChild(S),A.appendChild(_),y.appendChild(j),y.appendChild(A),this[m]='1'}var Z='px',L=parseFloat(g.marginLeft.replace(Z,''))*f,N=parseFloat(g.marginRight.replace(Z,''))*f,I=parseFloat(g.marginTop.replace(Z,''))*f,F=parseFloat(g.marginBottom.replace(Z,''))*f,V=b.style,B=w.style,H=k.style,z=x.style,U=O.style,W=C.style,$=S.style,q=_.style,G=parseFloat(p.left),K=parseFloat(g.width)*f+Z;V.height=I+Z,V.width=K,V.top=p.top-I+Z,V.left=G+Z,B.height=F+Z,B.width=K,B.top=p.top+p.height+Z,B.left=G+Z;var Y=p.height+I+F+Z,X=p.top-I+Z;H.height=Y,H.width=L+Z,H.top=X,H.left=G-L+Z,z.height=Y,z.width=N+Z,z.top=X,z.left=G+p.width+Z;var J=parseFloat(g.paddingTop)*f;U.height=J+Z;var Q=parseFloat(g.paddingBottom)*f;W.height=Q+Z;var tt=p.height-Q-J+Z,et=p.top+J+Z;$.height=tt,$.width=parseFloat(g.paddingLeft)*f+Z,$.top=et;var nt=parseFloat(g.paddingRight)*f;q.height=tt,q.width=nt+Z,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),a=t.Canvas,s=a[o](n.view);s.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 t.once('loaded',(function(){return n._upFrame(t,!0)}))}))},_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),a=n(1163);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 l(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.all,r=e.onResult,i=e.reset,o=this.storageKey,s={action:'load'},l=n||this.getAll(),c=t[o];if('string'==typeof c)try{c=JSON.parse(c)}catch(t){this.__logWarn('Data parsing failed',{input:c})}return i&&c&&l.reset(null,s),r?c&&r(c,s):c&&(0,a.isDef)(c.length)&&l.reset(c,s),c},clear:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.all;return e&&e.reset(null,t),this},__getConfig:function(t){var e=this.config||{};return t?e[t]:e},getAll:function(){var t=arguments.length>0&&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=(0,a.deepMerge)(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,a){var s=l({event:t},a||o);[n,e].map((function(t){return t.trigger(i,r,s)}))}))}))},__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,a=function(){return i&&e.all.remove(i,n),i};return!n.silent&&r&&r.trigger(this.events.removeBefore,i,a,n),!n.abort&&a()},__catchAllEvent:function(t,e,n,r){var i=this.em,o=this.events,a=r||n;i&&o.all&&i.trigger(o.all,{event:t,model:e,options:a}),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,e){this.em.logWarning("[".concat(this.name,"]: ").concat(t),e)},_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,a.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:()=>A});var r=n(2982),i=n(5671),o=n(3144),a=n(7326),s=n(9340),l=n(2963),c=n(1120),u=n(4942),f=n(9050),h=n(1163),d=n(9714),p=n(966),g=n(5963);const v={stylePrefix:'css-',rules:[],onBeforeStyle:null};var m=n(2316),y=n(9524),b=n(8795);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 k(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,h.isEmptyObj)(r)&&n&&n.changesUp(e)}},{key:"clone",value:function(){var t=k({},this.opt),e=k({},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,o=i&&i.get('SelectorManager'),a=[this,'change:selectors',this.ensureSelectors],s=this.getSelectors();if(this.stopListening.apply(this,a),s.models&&(s=(0,r.Z)(s.models)),s=(0,f.isString)(s)?[s]:s,Array.isArray(s)){var l=s.filter((function(t){return t})).map((function(t){return o?o.add(t):t}));s=new p.Z(l)}this.set('selectors',s,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 O&&O.escape?O.escape(t):t}},o=this.get('selectors').getFullString(0,i),a=n&&!t.skipState?":".concat(n):'';return o&&e.push("".concat(o).concat(a)),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.attributes.important,r=this.selectorsToString(t),i=this.styleToString(k({important:n},t)),o=this.get('singleAtRule');return(r||o)&&(i||t.allowEmpty)&&(e=o?i:"".concat(r,"{").concat(i,"}")),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,b.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||'',o=n||'',a=r.selectorsAdd||'',s=r.atRuleType||'',l=(0,f.isArray)(t)||t.models?t.models||t:[t];o&&!s&&(s='media');var c=l.map((function(t){return t.getFullName()})),u=this.get('selectors').map((function(t){return t.getFullName()})),h=c.slice().sort(),d=u.slice().sort();return!(c.length!==u.length||!h.every((function(t,e){return t===d[e]})))&&(this.get('state')===i&&this.get('mediaText')===o&&this.get('selectorsAdd')===a&&this.get('atRuleType')===s)}}]),n}(y.Z);function S(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 _=function(t){(0,s.Z)(n,t);var e=S(n);function n(){return(0,i.Z)(this,n),e.apply(this,arguments)}return(0,o.Z)(n,[{key:"initialize",value: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)}))}},{key:"toJSON",value:function(t){return m.Collection.prototype.toJSON.call(this,t).filter((function(t){return t.style&&!t.shallow}))}},{key:"onAdd",value:function(t,e,n){t.ensureSelectors(t,e,n)}},{key:"onRemove",value:function(t){var e=this.editor;e.stopListening(t),e.get('UndoManager').remove(t)}},{key:"add",value: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,m.Collection.prototype.add.apply(this,[t,e])}}]),n}(m.Collection);_.prototype.model=C;var P=n(4868);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;e3&&void 0!==arguments[3]?arguments[3]:{},i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},o=e||'',a=n||'',s=E({},r),l=this.get(t,o,a,s);return l&&l.config&&!l.config.singleAtRule||(s.state=o,s.mediaText=a,s.selectors=[],a&&(s.atRuleType='media'),(l=new C(s,this.c)).get('selectors').add(t,i),this.rules.add(l,i)),l}},{key:"get",value:function(t,e,n,r){var i=t;if((0,f.isString)(t)){var o=this.em.get('SelectorManager'),a=t.split(',')[0].trim(),s=this.em.get('Parser').parserCss.checkNode({selectors:a})[0];i=o.get(s.selectors)}return this.rules.find((function(t){return t.compare(i,e,n,r)}))||null}},{key:"getAll",value:function(){return this.rules}},{key:"addCollection",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=[];(0,f.isString)(t)&&(t=this.em.get('Parser').parseCss(t));for(var i=t instanceof Array?t:[t],o=0,a=i.length;o2&&void 0!==arguments[2]?arguments[2]:{},r=n.atRuleType,i=n.atRuleParams,o=this.em.get('Parser').parserCss.checkNode({selectors:t,style:e})[0],a=o.state,s=o.selectorsAdd,l=this.em.get('SelectorManager'),c=l.add(o.selectors),u=this.add(c,a,i,{selectorsAdd:s,atRule:r});return u.setStyle(e,n),u}},{key:"getRule",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.em.get('SelectorManager'),r=this.em.get('Parser').parserCss.checkNode({selectors:t})[0],i=n.get(r.selectors),o=r.state,a=r.selectorsAdd,s=e.atRuleType,l=e.atRuleParams;return i&&this.get(i,o,l,{selectorsAdd:a,atRule:s})}},{key:"getRules",value:function(t){var e=this.getAll();if(!t)return(0,r.Z)(e.models);var n={sort:!0},i=(0,f.isString)(t)?t.split(',').map((function(t){return t.trim()})):t;return e.filter((function(t){return i.indexOf(t.getSelectors().getFullString(null,n))>=0}))}},{key:"setIdRule",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.addOpts,i=void 0===r?{}:r,o=n.mediaText,a=n.state||'',s=(0,f.isUndefined)(o)?this.em.getCurrentMedia():o,l=this.em.get('SelectorManager'),c=l.add({name:t,type:g.Z.TYPE_ID},i),u=this.add(c,a,s,{},i);return u.setStyle(e,E(E({},n),i)),u}},{key:"getIdRule",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.mediaText,r=e.state||'',i=(0,f.isUndefined)(n)?this.em.getCurrentMedia():n,o=this.em.get('SelectorManager').get(t,g.Z.TYPE_ID);return o&&this.get(o,r,i)}},{key:"setClassRule",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.state||'',i=n.mediaText||this.em.getCurrentMedia(),o=this.em.get('SelectorManager'),a=o.add({name:t,type:g.Z.TYPE_CLASS}),s=this.add(a,r,i);return s.setStyle(e,n),s}},{key:"getClassRule",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.state||'',r=e.mediaText||this.em.getCurrentMedia(),i=this.em.get('SelectorManager').get(t,g.Z.TYPE_CLASS);return i&&this.get(i,n,r)}},{key:"remove",value:function(t,e){var n=(0,f.isString)(t)?this.getRules(t):t,r=this.getAll().remove(n,e);return(0,f.isArray)(r)?r:[r]}},{key:"clear",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.getAll().reset(null,t),this}},{key:"getComponentRules",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.state,r=e.mediaText,i=e.current;i&&(n=this.em.get('state')||'',r=this.em.getCurrentMedia());var o=t.getId(),a=this.getAll().filter((function(t){if(((0,f.isUndefined)(n)||t.get('state')===n)&&((0,f.isUndefined)(r)||t.get('mediaText')===r))return t.getSelectorsString()==="#".concat(o)}));return a}},{key:"render",value:function(){var t;return null===(t=this.rulesView)||void 0===t||t.remove(),this.rulesView=new P.Z({collection:this.rules,config:this.c}),this.rulesView.render().el}},{key:"destroy",value:function(){var t;this.rules.reset(),this.rules.stopListening(),null===(t=this.rulesView)||void 0===t||t.remove(),[this.em,this.rules,this.rulesView].forEach((function(t){return null})),this.c={}}}]),n}(d.Z)},4868:(t,e,n)=>{"use strict";n.d(e,{Z:()=>v});var r=n(5671),i=n(3144),o=n(9340),a=n(2963),s=n(1120),l=n(2316),c=n(9283);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,s.Z)(t);if(e){var i=(0,s.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,a.Z)(this,n)}}var f=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:"tagName",value:function(){return'style'}},{key:"initialize",value: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)}},{key:"render",value:function(){var t=this.model,e=this.el,n=t.get('important');return e.innerHTML=t.toCSS({important:n}),this}}]),n}(l.View);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,s.Z)(t);if(e){var i=(0,s.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,a.Z)(this,n)}}var 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:"_createElement",value:function(){return document.createTextNode('')}},{key:"render",value:function(){var t=this.model,e=t.get('important');return this.el.textContent=t.getDeclaration({important:e}),this}}]),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,s.Z)(t);if(e){var i=(0,s.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,a.Z)(this,n)}}var g=function(t,e){return"".concat(t).concat(e?"-".concat(parseFloat(e)):'')},v=function(t){(0,o.Z)(n,t);var e=p(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n,[{key:"initialize",value: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)}},{key:"addTo",value:function(t){this.addToCollection(t)}},{key:"addToCollection",value:function(t,e){if(this.renderStarted){var n,r,i=e||null,o={model:t,config:this.config};if('keyframes'===t.get('atRuleType')){var a=t.getAtRule(),s=this.atRules[a];if(!s){var l=document.createElement('style');s=document.createTextNode(''),l.appendChild(document.createTextNode("".concat(a,"{"))),l.appendChild(s),l.appendChild(document.createTextNode('}')),this.atRules[a]=s,n=l}r=new d(o),s.appendData(r.render().el.textContent)}else n=(r=new f(o)).render().el;var c=this.className,u=t.get('mediaText'),h=g(c),p=h;if(u&&(p=g(c,this.getMediaWidth(u))),n){var v,m=i||this.el;try{v=m.querySelector("#".concat(p))}catch(t){}v||(v=m.querySelector("#".concat(h))),v.appendChild(n)}return n}}},{key:"getMediaWidth",value:function(t){return t&&t.replace("(".concat(this.em.getConfig().mediaCondition,": "),'').replace(')','')}},{key:"render",value: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 a=e.get('DeviceManager').getAll().pluck('priority');return a.every((function(t){return t}))&&a.unshift(0),a.forEach((function(t){return o.appendChild((0,c.ut)('div',{id:g(r,t)}))})),i.each((function(e){return t.addToCollection(e,o)})),n.append(o),n.attr('class',r),this}}]),n}(l.View)},2004:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>L,evAdd:()=>A,evAddBefore:()=>D,evAll:()=>_,evPfx:()=>P,evRemove:()=>M,evRemoveBefore:()=>R,evSelect:()=>T,evSelectBefore:()=>E,evUpdate:()=>j});var r=n(5671),i=n(3144),o=n(7326),a=n(9340),s=n(2963),l=n(1120),c=n(4942),u=n(9050),f=n(9714);const h={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 d=n(2316);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,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}var g=function(t){(0,a.Z)(n,t);var e=p(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.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}(d.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,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}var m=function(t){(0,a.Z)(n,t);var e=v(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.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}(d.Collection);m.prototype.model=g;var y,b=n(168),w=n(7539);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,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}var x=function(t){(0,a.Z)(n,t);var e=k(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n,[{key:"template",value:function(t){var e=t.ppfx,n=t.label;return(0,w.Z)(y||(y=(0,b.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,a=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}(d.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]:{};this.c=C(C({},h),e);var n=this.c.em;return this.devices=new m,this.c.devices.forEach((function(e){return t.add(e)})),this.em=n,this.all=this.devices,this.select(this.c.default||this.devices.at(0)),this.__initListen(),n.on(Z,this._onSelect,this),this}},{key:"_onSelect",value:function(t,e,n){var r=this.em,i=this.events,o=t.previous('device'),a=this.get(e),s=i.select;r.trigger(s,a,this.get(o)),this.__catchAllEvent(s,a,n)}},{key:"add",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n;if((0,u.isString)(t)){var i=n;e=C(C({},r=arguments[2]||{}),{},{id:t,name:r.name||t,width:i})}else e=t;return e.id||(e.id=e.name||this._createId()),this.devices.add(e,r)}},{key:"get",value:function(t){return this.getAll().filter((function(e){return e.get('name')===t}))[0]||this.devices.get(t)||null}},{key:"remove",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.__remove(t,e)}},{key:"getDevices",value:function(){return this.devices.models}},{key:"select",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(0,u.isString)(t)?this.get(t):t;return n&&this.em.set('device',n.get('id'),e),this}},{key:"getSelected",value:function(){return this.get(this.em.get('device'))}},{key:"getAll",value:function(){return this.devices}},{key:"render",value:function(){var t;return null===(t=this.view)||void 0===t||t.remove(),this.view=new x({collection:this.devices,config:this.c}),this.view.render().el}},{key:"destroy",value:function(){var t;this.devices.stopListening(),this.devices.reset(),null===(t=this.view)||void 0===t||t.remove(),[this.devices,this.view].forEach((function(t){return null})),this.c={}}}]),n}(f.Z)},7375:(t,e,n)=>{"use strict";n.d(e,{ZP:()=>I,OA:()=>D,GN:()=>L,xH:()=>N});var r=n(1002),i=n(2982),o=n(885),a=n(4942),s=n(5671),l=n(3144),c=n(1120);function u(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=(0,c.Z)(t)););return t}function f(){return f="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=u(t,e);if(r){var i=Object.getOwnPropertyDescriptor(r,e);return i.get?i.get.call(arguments.length<3?t:n):i.value}},f.apply(this,arguments)}var h=n(9340),d=n(2963),p=n(9050),g=n(1163),v=n(9524),m=n(2316),y=n(8431),b=n(5963),w=n(966);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 x(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,p.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,p.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=x({},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,x(x({},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}(m.Model);C.prototype.defaults={type:'text',label:'',name:'',min:'',max:'',unit:'',step:1,value:'',target:'',default:'',placeholder:'',changeProp:0,options:[]};function S(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,d.Z)(this,n)}}var _=function(t){(0,h.Z)(n,t);var e=S(n);function n(){return(0,s.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,p.isString)(t)||(0,p.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,p.bindAll)(this,'__upSymbProps','__upSymbCls','__upSymbComps');var i=r.em,o=this.parent(),a=o&&o.attributes,s=this.get('propagate');if(s&&this.set('propagate',(0,p.isArray)(s)?s:[s]),a&&a.propagate&&!s){var l={},c=a.propagate;c.forEach((function(t){return l[t]=o.get(t)})),l.propagate=c,this.set(T(T({},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',T(T({},(0,p.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,r=this.changedAttributes();(0,p.keys)(r).forEach((function(t){return n.emitUpdate(t)})),['status','open','toolbar','traits'].forEach((function(t){return delete r[t]})),(0,g.isEmptyObj)(r)||(this.__changesUp(e),this.__propSelfToParent({component:this,changed:r,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(L,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 a=i.style;a&&this.setStyle(a),delete i.style;var s=T({},this.previous('attributes')),l=(0,g.shallowDiff)(s,this.get('attributes'));(0,p.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({},t),e),this}},{key:"addAttributes",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.setAttributes(T(T({},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]:{},r=this.em,i=(0,p.isString)(t)?t:'',o=i?e:t;if(r&&r.getConfig().avoidInlineStyle&&!o.inline){var a=r.get('state'),s=r.get('CssComposer'),l=s.getIdRule(this.getId(),T({state:a},o));if(this.rule=l,l)return l.getStyle(i)}return f((0,c.Z)(n.prototype),"getStyle",this).call(this,i)}},{key:"setStyle",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.em,o=this.opt;if(i&&i.getConfig().avoidInlineStyle&&!o.temporary&&!r.inline){var a=this.get('style')||{};e=T(T({},e=(0,p.isString)(e)?this.parseStyle(e):e),a);var s=i.get('state'),l=i.get('CssComposer'),u=this.getStyle(r);this.rule=l.setIdRule(this.getId(),e,T(T({},r),{},{state:s}));var h=(0,g.shallowDiff)(u,e);this.set('style','',{silent:1}),(0,p.keys)(h).forEach((function(e){return t.trigger("change:style:".concat(e))}))}else e=f((0,c.Z)(n.prototype),"setStyle",this).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=T({},this.get('attributes')),o=n&&n.get('SelectorManager'),a=this.getId();if(e.noClass||(this.get('classes').forEach((function(t){return r.push((0,p.isString)(t)?t:t.get('name'))})),r.length&&(i.class=r.join(' '))),!e.noStyle){var s=this.get('style');(0,g.isObject)(s)&&!(0,g.isEmptyObj)(s)&&(i.style=this.styleToString({inline:1}))}(0,p.has)(i,'id')||(A(n)?t=o&&o.get(a,o.Selector.TYPE_ID):(0,p.isEmpty)(this.getStyle())||(t=1),(this.__getSymbol()||this.__getSymbols())&&(t=1),t&&(i.id=a));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,p.isArray)(t)?t:[t];var n=this.get('classes'),r=b.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,p.isArray)(this.get(M))}},{key:"__isSymbolOrInst",value:function(){return!(!this.__isSymbol()&&!this.get(R))}},{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(R);if(t&&(0,p.isString)(t)){var e=this.__getAllById()[t];e?(t=e,this.set(R,e)):t=0}return t}},{key:"__getSymbols",value:function(){var t=this,e=this.get(M);return e&&(0,p.isArray)(e)&&(e.forEach((function(n,r){n&&(0,p.isString)(n)&&(e[r]=t.__getAllById()[n])})),e=e.filter((function(t){return t&&!(0,p.isString)(t)}))),e}},{key:"__isSymbOvrd",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'',e=this.get(Z),n=t.split(':'),r=(0,o.Z)(n,1),i=r[0],a=t!==i?[t,i]:[t];return!0===e||(0,p.isArray)(e)&&a.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,a=r&&r.config.symbols;if(e.fromInstance||e.noPropagate||e.fromUndo||!a||o&&this.__isSymbOvrd(o))return n;var s=this.__getSymbols()||[],l=this.__getSymbol(),c=l?[l].concat((0,i.Z)(l.__getSymbols()||[])):s;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[M],delete r[R],delete r[Z],delete r.attributes,delete i.id,(0,g.isEmptyObj)(i)||(r.attributes=i),!(0,g.isEmptyObj)(r)){var o=this.__getSymbToUp(n);(0,p.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=T({},r);(0,p.keys)(i).map((function(e){t.__isSymbOvrd(e)&&delete i[e]})),t.set(i,T({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||{},a={fromInstance:o.fromInstance,fromUndo:o.fromUndo},s=t.opt.temporary;if(n)if(n.add){var l=[],c=!!this.__getSymbols(),u=this.__getSymbToUp(T(T({},a),{},{changed:'components:add'}));if(u.length){var f=t.__getSymbol();l=(f?f.__getSymbols():t.__getSymbols())||[],(l=(0,i.Z)(l)).push(f||t)}!s&&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,T({fromInstance:r},n))}))}else{var h=t.__getSymbol();if(h&&!n.temporary&&h.set(M,h.__getSymbols().filter((function(e){return e!==t}))),!t.__isSymbolTop()){var d='components:remove',p=n.index,g=t.parent(),v=T({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(a);m&&(b=g.__getSymbToUp(T(T({},a),{},{changed:d})),y=function(t){var e=t.components().at(p);e&&e.remove(T({fromInstance:g},v))}),!s&&this.__logSymbol('remove',b,{opts:n,removed:t.cid,isSymbNested:m}),b.forEach(y)}}else{var w=this.__getSymbToUp(T(T({},a),{},{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,T({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],a=this.get('classes')||i,s=(0,p.isString)(a)?a.split(' '):a;this.stopListening.apply(this,o);var l=this.normalizeClasses(s),c=new w.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 y.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,p.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=T({},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,p.isArray)(t)?t:[t],r=n.map((function(t){return(0,p.isString)(t)||t.collection&&t.collection.remove(t,{temporary:1}),t})),i=this.components().add(r,e);return(0,p.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,p.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:"parents",value:function(){var t=this.parent();return t?[t].concat(t.parents()):[]}},{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 _)){n=(0,p.isFunction)(n)?n(this):n;var r=new _([],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,p.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,p.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,p.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,p.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=T({},this.attributes),r=T({},this.opt),o=this.getId(),a=e&&e.get('CssComposer');n.attributes=T({},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(T({},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 s=new this.constructor(n,r),l="#".concat(s.getId()),c=a?a.getRules("#".concat(o)):[];c.forEach((function(t){var e=t.clone();e.set('selectors',[l]),a.getAll().add(e)})),s.set(M,0);var u=this.__getSymbol(),f=this.__getSymbols();t.symbol||!u&&!f?u?(u.set(M,[].concat((0,i.Z)(u.__getSymbols()),[s])),s.__initSymb()):t.symbol&&(this.__isSymbol()?(this.set(M,[].concat((0,i.Z)(f),[s])),s.set(R,this),s.__initSymb()):t.symbolInv?(this.set(M,[s]),s.set(R,this),[this,s].map((function(t){return t.__initSymb()}))):(s.set(M,[this]),[this,s].map((function(t){return t.__initSymb()})),this.set(R,s))):(s.set(R,0),s.set(M,0));var h='component:clone';return e&&e.trigger(h,s),this.trigger(h,s),s}},{key:"getName",value:function(){var t=this.em,e=this.attributes,n=e.type,r=e.tagName,i=e.name,o=n||r,a=!n&&r,s='domComponents.names.',l=i&&(null==t?void 0:t.t("".concat(s).concat(i))),c=a&&(null==t?void 0:t.t("".concat(s).concat(a))),u=t&&(t.t("".concat(s).concat(n))||t.t("".concat(s).concat(r)));return this.get('custom-name')||l||i||c||(0,g.capitalize)(a)||u||(0,g.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'),a=t.attributes,s=this.getAttrToHTML();if(delete t.tag,a&&((0,p.isFunction)(a)?s=a(e,s)||{}:(0,g.isObject)(a)&&(s=a)),t.withProps){var l=this.toJSON();(0,p.forEach)(l,(function(t,e){'_'!==e[0]&&['classes','attributes','components'].indexOf(e)<0&&(s["data-gjs-".concat(e)]=(0,p.isArray)(t)||(0,g.isObject)(t)?JSON.stringify(t):t)}))}for(var c in s){var u=s[c];if(!(0,p.isUndefined)(u)&&null!==u)if((0,p.isBoolean)(u))u&&n.push(c);else{var f='';if(t.altQuoteAttr&&(0,p.isString)(u)&&u.indexOf('"')>=0)f="'".concat(u.replace(/'/g,'''),"'");else{var h=(0,p.isString)(u)?u.replace(/"/g,'"'):u;f="\"".concat(h,"\"")}n.push("".concat(c,"=").concat(f))}}var d=n.length?" ".concat(n.join(' ')):'',v=e.getInnerHTML(t),m="<".concat(i).concat(d).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=m.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[R],r=e[M];r&&(0,p.isArray)(r)&&(e[M]=r.filter((function(t){return t})).map((function(t){return t.getId?t.getId():t}))),n&&!(0,p.isString)(n)&&(e[R]=n.getId())}return this.em.getConfig().avoidDefaults&&this.getChangedProps(e),e}},{key:"getChangedProps",value:function(t){var e=t||m.Model.prototype.toJSON.apply(this),n=(0,p.result)(this,'defaults');return(0,p.forEach)(n,(function(t,n){-1===['type'].indexOf(n)&&e[n]===t&&delete e[n]})),(0,p.isEmpty)(e.type)&&delete e.type,(0,p.forEach)(['attributes','style'],(function(t){(0,p.isEmpty)(n[t])&&(0,p.isEmpty)(e[t])&&delete e[t]})),(0,p.forEach)(['classes','components'],(function(t){(!e[t]||(0,p.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=T({},this.get('attributes'));return n.id=t,this.set('attributes',n,e),this}},{key:"getEl",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,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(),a=j(o.tagVarStart||'{[ '),s=j(o.tagVarEnd||' ]}'),l=new RegExp("".concat(a,"([\\w\\d-]*)").concat(s),'g');n=n.replace(l,(function(t,n){e.scriptUpdated();var i=e.attributes[n]||'';return(0,p.isArray)(i)||'object'==(0,r.Z)(i)?JSON.stringify(i):i}))}return n}},{key:"emitUpdate",value:function(t){for(var e=this.em,n=L+(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:{[t]:r},options:o[2]||o[1]||{}})}},{key:"onAll",value:function(t){return(0,p.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,T(T({},e),{},{action:'remove-component'})),r||(t.components('',e),t.components().removeChildren(t,null,e))},o=T({},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]:{};if(t){var n=e.at,r=this.index(),i=t===this.parent(),o=r===n||r===n-1;i&&o||(i&&n&&n>r&&(e.at=n-1),this.remove({temporary:1}),t.append(this,e),this.emitUpdate())}return 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,p.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')||{},a=o.id,s=(this.previous('attributes')||{}).id||i,l=n.getList(this);if(l[a]||!a&&s)return this.setId(s,{idUpdate:1});delete l[s],l[a]=this,this.ccid=a;var c=this._getStyleSelector({id:s});c&&c.set({name:a,label:a})}}}]),n}(v.Z);I.isComponent=function(t){return{tagName:(0,g.toLowerCase)(t.tagName)}},I.ensureInList=function(t){var e=I.getList(t),n=t.getId(),r=e[n];if(r){if(r!==t){var i=I.getIncrementId(n,e);t.setId(i),e[i]=t}}else e[n]=t;t.components().forEach((function(t){return I.ensureInList(t)}))},I.createId=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=I.getList(t),i=n.idMap,o=void 0===i?{}:i,a=t.get('attributes'),s=a.id;return s?(e=I.getIncrementId(s,r,n),t.setId(e),s!==e&&(o[s]=e)):e=I.getNewId(r),r[e]=t,e},I.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=I.getNewId(t);return r},I.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,a=t;if(i.indexOf(t)<0)for(;e[a];)o++,a="".concat(t,"-").concat(o);return a},I.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:{}},I.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,p.isArray)(t)?t:[t],o=r.keepIds,a=void 0===o?[]:o;i.forEach((function(t){var i=t.attributes,o=void 0===i?{}:i,s=t.components,l=o.id;if(l&&n[l]&&a.indexOf(l)<0){var c=I.getIncrementId(l,n);o.id=c,(0,p.isArray)(e)&&e.forEach((function(t){var e=t.selectors;e.forEach((function(t,n){t==="#".concat(l)&&(e[n]="#".concat(c))}))}))}s&&I.checkId(s,e,n,r)}))},I.getDefaults=function(){return(0,p.result)(this.prototype,'defaults')},I.prototype.defaults={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,locked:!1,void:!1,state:'',status:'',content:'',icon:'',style:'',styles:'',classes:'',script:'','script-props':'','script-export':'',attributes:'',traits:['id','title'],propagate:'',dmode:'',toolbar:null,[R]:0,[M]:0,[Z]:0,_undo:!0,_undoexc:['status','open']}},8431:(t,e,n)=>{"use strict";n.d(e,{Z:()=>O});var r=n(1002),i=n(2982),o=n(4925),a=n(5671),s=n(3144),l=n(7326),c=n(9340),u=n(2963),f=n(1120),h=n(4942),d=n(2316),p=n.n(d),g=n(9050),v=n(7375),m=["at"];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,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,u.Z)(this,n)}}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]:[];if(!e)return[];var r=(0,g.isArray)(e)||(0,g.isFunction)(e.map)?e:[e];return r.map((function(e){n.push(e.getId()),t(e.components().models,n)})),n},x=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,g.isArray)(e)?e:[e];return i.map((function(e){var i=e.attributes,o=void 0===i?{}:i,a=e.components,s=e.tagName,l=o.id,c=e;if(l&&n[l]&&(c=n[l],s&&c.set({tagName:s},w(w({},r),{},{silent:!0}))),a){var u=t(a,n);if((0,g.isFunction)(c.components)){var f=c.components();f.length>0&&f.reset(u,r)}else c.components=u}return c}))},O=function(t){(0,c.Z)(n,t);var e=y(n);function n(){var t;(0,a.Z)(this,n);for(var r=arguments.length,i=new Array(r),o=0;o1&&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')}},{key:"resetChildren",value: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)})),a=k(t);n.keepIds=k(i).filter((function(t){return a.indexOf(t)>=0})),o.forEach((function(t){return e.removeChildren(t,r,n)})),t.each((function(t){return e.onAdd(t)}))}},{key:"resetFromString",value: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=k(this);var r=this.domc,i=(null==r?void 0:r.allById())||{},o=this.parseString(e,n),a=(0,g.isArray)(o)?o:[o],s=x(a,i,n);this.reset(s,n),null===(t=this.em)||void 0===t||t.trigger('component:content',this.parent,n,e)}},{key:"removeChildren",value: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,a=r.temporary||r.fromUndo;if(t.prevColl=this,!a){var s=t.getId(),l=o.get('SelectorManager').getAll(),c=o.get('CssComposer').getAll(),u=(r.keepIds||[]).indexOf(s)<0,f=i?i.allById():{};delete f[s];var h=u?c.remove(c.filter((function(t){return t.getSelectors().getFullString()==="#".concat(s)})),r):[];l.remove(h.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()}}},{key:"model",value: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 a=0;a1&&void 0!==arguments[1]?arguments[1]:{},n=this.em,r=this.domc,i=n.get('CssComposer'),a=n.get('Parser').parseHtml(t);if(v.ZP.checkId(a.html,a.css,r.componentsById,e),a.css&&i&&!e.temporary){e.at;var s=(0,o.Z)(e,m);i.addCollection(a.css,w(w({},s),{},{extend:1}))}return a.html}},{key:"add",value: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)(k(n.previousModels))),(0,g.isString)(t)?t=this.parseString(t,n):(0,g.isArray)(t)&&(t=(0,i.Z)(t)).forEach((function(r,i){if((0,g.isString)(r)){var o=e.parseString(r,n);t[i]=(0,g.isArray)(o)&&!o.length?null:o}}));var r=(0,g.isArray)(t);t=(r?t:[t]).filter((function(t){return t})).map((function(t){return e.processDef(t)})),t=r?(0,g.flatten)(t,1):t[0];var o=p().Collection.prototype.add.apply(this,[t,n]);return this.__firstAdd=o,o}},{key:"processDef",value: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 a=i(o=w({},o));a&&((0,g.each)(o,(function(t,e){return delete o[e]})),(0,g.extend)(o,a))}if(o.$$typeof&&'object'==(0,r.Z)(o.props)){(o=w({},o)).props=w({},o.props);var s=e.get('DomComponents'),l=e.get('Parser').parserHtml;(0,g.each)(o,(function(t,e){(0,g.includes)(['props','type'],e)||delete o[e]}));var c=o.props,u=c.children;delete c.children,delete o.props;var f=l.splitPropsFromAttr(c);o.attributes=f.attrs,u&&(o.components=u),o.type?s.getType(o.type)||(o.tagName=o.type,delete o.type):o.type='textnode',(0,g.extend)(o,f.props)}return o}},{key:"onAdd",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.domc,i=this.em,o=t.getStyle(),a=i&&i.getConfig().avoidInlineStyle;if(r&&r.Component.ensureInList(t),!(0,g.isEmpty)(o)&&!a&&i&&i.get&&i.getConfig().forceClass&&!n.temporary){var s=t.cid;i.get('CssComposer').setClassRule(s,o);t.setStyle({}),t.addClass(s)}t.__postAdd({recursive:1}),this.__onAddEnd()}}]),n}(p().Collection)},2169:(t,e,n)=>{"use strict";n.d(e,{Z:()=>w});var r=n(4942),i=n(5671),o=n(3144),a=n(9340),s=n(2963),l=n(1120),c=n(2316),u=n.n(c),f=n(9050),h=n(8431),d=n(3505),p=n(966),g=n(9283),v=n(1163);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]:{},e=this.model,n=t.config||{},r=n.em,i=e.opt||{},o=this.$el,a=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 change:locked',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,v.setViewEl)(a,this),e.view=this,this._getFrame()&&e.views.push(this),this.initClasses(),this.initComponents({avoidRender:1}),this.events=y(y({},this.constructor.getEvents()),{},{dragstart:'handleDragStart'}),this.delegateEvents(),!i.temporary&&this.init(this._clbObj())}},{key:"__isDraggable",value:function(){var t=this.model,e=this.config,n=t.attributes.draggable;return e.draggableComponents&&n}},{key:"_clbObj",value:function(){var t=this.em,e=this.model,n=this.el;return{editor:t&&t.getEditor(),model:e,el:n}}},{key:"init",value:function(){}},{key:"removed",value:function(){}},{key:"onActive",value:function(){}},{key:"onDisable",value:function(){}},{key:"remove",value:function(){var t;u().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}},{key:"handleDragStart",value:function(t){if(!this.__isDraggable())return!1;t.stopPropagation(),t.preventDefault(),this.em.get('Commands').run('tlb-move',{target:this.model,event:t})}},{key:"initClasses",value:function(){var t=this.model,e='change:classes',n=t.get('classes');n instanceof p.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())}},{key:"initComponents",value: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'),a=[e,i,this.initComponents];o instanceof h.Z&&(n.data('collection',o),r&&r.remove(),this.stopListening.apply(this,a),!t.avoidRender&&this.renderChildren(),this.listenTo.apply(this,a))}},{key:"handleChange",value:function(){var t=this.model,e=(0,f.keys)(t.changed);if(1!==e.length||'status'!==e[0])for(var n in t.emitUpdate(),t.changed)t.emitUpdate(n)}},{key:"importClasses",value:function(){var t=this.config.em.get('SelectorManager');t&&this.model.get('classes').each((function(e){t.add(e.get('name'))}))}},{key:"updateStatus",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=this.el,r=this.ppfx,i=this.model,o=e?e.get('Canvas').getConfig():{},a=o.extHl,s=i.get('status'),l="".concat(r,"selected"),c="".concat(l,"-parent"),u="".concat(r,"freezed"),f="".concat(r,"hovered"),h="".concat(r,"no-pointer"),d=[l,c,u,f,h],p=a&&!t.noExtHl?'':l;this.$el.removeClass(d.join(' '));var g=n.getAttribute('class')||'',v=[g];switch(s){case'selected':v.push(p);break;case'selected-parent':v.push(c);break;case'freezed':v.push(u);break;case'freezed-selected':v.push(u,p);break;case'hovered':!t.avoidHover&&v.push(f)}i.get('locked')&&v.push(h);var m=v.filter(Boolean).join(' ');m&&n.setAttribute('class',m)}},{key:"updateHighlight",value:function(){var t=this.model,e=t.get('textable'),n=t.get('highlightable')&&(e||!t.isChildOf('text'));this.setAttribute('data-gjs-highlightable',!!n||'')}},{key:"updateStyle",value: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,f.isEmpty)(o)&&r.setStyle(o)}else this.setAttribute('style',r.styleToString(n))}},{key:"updateClasses",value:function(){var t=this.model.get('classes').pluck('name').join(' ');this.setAttribute('class',t),this.updateStatus(),this.onAttrUpdate()}},{key:"setAttribute",value:function(t,e){var n=this.$el;e?n.attr(t,e):n.removeAttr(t)}},{key:"getClasses",value:function(){return this.model.getClasses().join(' ')}},{key:"updateAttributes",value:function(){var t=[],e=this.model,n=this.$el,r=this.el,i=e.attributes,o=i.textable,a=i.type,s=y(y({id:e.getId(),'data-gjs-type':a||'default'},this.__isDraggable()&&{draggable:!0}),o&&{contenteditable:'false'});(0,f.each)(r.attributes,(function(e){return t.push(e.nodeName)})),t.forEach((function(t){return n.removeAttr(t)})),this.updateStyle(),this.updateHighlight();var l=y(y({},s),e.getAttributes());(0,f.keys)(l).forEach((function(t){return!1===l[t]&&delete l[t]})),n.attr(l)}},{key:"updateContent",value:function(){var t=this.model.get('content'),e=this.model.components().length;this.getChildrenContainer().innerHTML=e?'':t}},{key:"prevDef",value:function(t){t.preventDefault()}},{key:"updateScript",value:function(){var t=this.model,e=this.em;t.get('script')&&e&&e.get('Canvas').getCanvasView().updateScript(this)}},{key:"getChildrenContainer",value:function(){var t=this.el;return'function'==typeof this.getChildrenSelector?t=this.el.querySelector(this.getChildrenSelector()):this.getTemplate,t}},{key:"getOffsetRect",value:function(){var t={},e=this.el,n=0,r=0;return function i(o){var a=o.offsetParent;a?(n+=a.offsetTop,r+=a.offsetLeft,i(a)):(t.top=e.offsetTop+n,t.left=e.offsetLeft+r,t.bottom=t.top+e.offsetHeight,t.right=t.left+e.offsetWidth)}(e),t}},{key:"isInViewport",value: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,a=e||this.getOffsetRect(),s=a.top,l=a.left,c=this._getFrame().getOffsetRect();return s>=c.scrollTop&&l>=c.scrollLeft&&s<=c.scrollBottom&&l<=o.offsetWidth+i.scrollLeft}},{key:"scrollIntoView",value: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(y({behavior:'smooth',block:'nearest'},t))}}},{key:"reset",value:function(){var t=this.el;this.el='',this._ensureElement(),this._setData(),(0,g.dL)(t,this.el),this.render()}},{key:"_setData",value:function(){var t=this.model,e=t.components();this.$el.data({model:t,collection:e,view:this})}},{key:"_getFrame",value:function(){var t;return null===(t=this.config.em)||void 0===t?void 0:t.get('Canvas').config.frameView}},{key:"renderChildren",value:function(){this.updateContent();var t=this.getChildrenContainer(),e=this.childrenView||new d.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:()=>d});var r=n(5671),i=n(3144),o=n(9340),a=n(2963),s=n(1120),l=n(2316),c=n.n(l),u=n(9050),f=n(9283);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,s.Z)(t);if(e){var i=(0,s.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,a.Z)(this,n)}}var d=function(t){(0,o.Z)(a,t);var e=h(a);function a(){return(0,r.Z)(this,a),e.apply(this,arguments)}return(0,i.Z)(a,[{key:"initialize",value: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)}},{key:"removeChildren",value: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(),(0,f.L_)(n),t.remove.apply(t)}}));var i=t.components();i.forEach((function(t){return n.removeChildren(t,e,r)}))}},{key:"addTo",value: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)}}},{key:"addToCollection",value:function(t,e,r){this.compView||(this.compView=n(2169).Z);for(var i=this.config,o=this.opts,a=this.em,s=e||null,l=i.frameView,c=void 0===l?{}:l,f=c.model&&t.getView(c.model),h=o.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)}))}},{key:"render",value: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}}]),a}(c().View)},9524:(t,e,n)=>{"use strict";n.d(e,{Z:()=>m});var r=n(5671),i=n(3144),o=n(7326),a=n(9340),s=n(2963),l=n(1120),c=n(4942),u=n(9050),f=n(1163),h=n(5311),d=n(2316);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]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,u.isString)(e)&&(e=this.parseStyle(e));var r=this.getStyle(n),i=g({},e),o=g({},i);(0,u.keys)(o).forEach((function(t){''===o[t]&&delete o[t]})),this.set('style',o,n);var a=(0,f.shallowDiff)(r,i);return delete a.__p,(0,u.keys)(a).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)))})),i}},{key:"addStyle",value: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)}},{key:"removeStyle",value:function(t){var e=this.getStyle();delete e[t],this.setStyle(e)}},{key:"styleToString",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=[],n=this.getStyle(t);for(var r in n){var i=t.important,o=(0,u.isArray)(i)?i.indexOf(r)>=0:i,a="".concat(n[r]).concat(o?' !important':''),s='__'==r.substr(0,2);a&&!s&&e.push("".concat(r,":").concat(a,";"))}return e.join('')}},{key:"getSelectors",value:function(){return this.get('selectors')||this.get('classes')}},{key:"getSelectorsString",value:function(t){return this.selectorsToString?this.selectorsToString(t):this.getSelectors().getFullString()}},{key:"_validate",value:function(t,e){var n,r=t.style,i=this.em||e.em,o=null==i||null===(n=i.get('CssComposer'))||void 0===n?void 0:n.getConfig().onBeforeStyle;if(r&&o){var a=o(g({},r));a&&(0,u.keys)(r).map((function(e){(0,u.isUndefined)(a[e])&&delete t.style[e]})),a&&(0,u.keys)(a).map((function(e){t.style[e]=a[e]}))}return!0}}]),n}(d.Model)},793:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(4942),i=n(9050),o=n(2316);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 s(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]:{},a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(o&&o.type){var l=e.getBaseType();t=(i=e.getType(o.type))?i.model:l.model,n=i?i.view:l.view}else{var c=e.recognizeType(o);t=(i=c.type).model,n=i.view,o=c.attributes}var u=new t(o,s(s({},a),{},{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:()=>h});var r=n(5671),i=n(3144),o=n(9340),a=n(2963),s=n(1120),l=n(2316),c=n.n(l);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,s.Z)(t);if(e){var i=(0,s.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,a.Z)(this,n)}}var f=c().$,h=function(t){(0,o.Z)(n,t);var e=u(n);function n(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,r.Z)(this,n),t=e.call(this,i);var o=i.ppfx||'';return t.opts=i,t.ppfx=o,t.em=i.target||{},!i.onChange&&t.listenTo(t.model,'change:value',t.handleModelChange),t}return(0,i.Z)(n,[{key:"template",value:function(){return"")}},{key:"inputClass",value:function(){return"".concat(this.ppfx,"field")}},{key:"holderClass",value:function(){return"".concat(this.ppfx,"input-holder")}},{key:"elementUpdated",value:function(){this.model.trigger('el:change')}},{key:"setValue",value:function(t){var e=this.model,n=t||e.get('defaults'),r=this.getInputEl();r&&(r.value=n)}},{key:"handleModelChange",value:function(t,e,n){this.setValue(e,n)}},{key:"handleChange",value:function(t){t.stopPropagation();var e=this.getInputEl().value;this.__onInputChange(e),this.elementUpdated()}},{key:"__onInputChange",value:function(t){this.model.set({value:t},{fromInput:1})}},{key:"getInputEl",value: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=f(""))}return this.inputEl.get(0)}},{key:"render",value: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}}]),n}(c().View);h.prototype.events={change:'handleChange'}},1511:(t,e,n)=>{"use strict";n.d(e,{Z:()=>w});var r=n(4942),i=n(5671),o=n(3144),a=n(9340),s=n(2963),l=n(1120),c=n(2316),u=n.n(c),f=n(9050),h=n(1002),d=n(1163);var p=n(8659);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","
","
",'
'].join(''),s=function(){var t='';if(i)for(var e=1;e<=6;e++)t+="
";return["
","
","
","
","",'
','
',"
","
","
","
","
","
","
","
",'
','
','
',"
",'
',"
","
",t,'
','
',"
",'
',"
","",'
',"
","
","","",'
','
','
'].join('')}(),l='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(l)];if(n){var a=n[e];if(!a)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(l)):a.apply(n,o)}})),i}return this.spectrum('destroy').each((function(){var n=P(this,t.extend({},e,t(this).data()));t(this).data(l,n.id)}))},t.fn.spectrum.load=!0,t.fn.spectrum.loadOpts={},t.fn.spectrum.draggable=A,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&&!D()&&e.spectrum({preferredFormat:'hex6'})};var c=/^[\s,#]+/,u=/\s+$/,f=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(c,'').replace(u,'').toLowerCase();var e,n=!1;if(O[t])t=O[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,h.Z)(t)&&(t.hasOwnProperty('r')&&t.hasOwnProperty('g')&&t.hasOwnProperty('b')?(o=t.r,a=t.g,s=t.b,e={r:255*X(o,255),g:255*X(a,255),b:255*X(s,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*X(t,360),e=X(e,100),n=X(n,100);var r=p.floor(t),i=t-r,o=n*(1-e),a=n*(1-i*e),s=n*(1-(1-i)*e),l=r%6;return{r:255*[n,a,o,o,s,n][l],g:255*[s,n,n,a,o,o][l],b:255*[o,o,s,n,n,a][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 a(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<1/2?e:n<2/3?t+(e-t)*(2/3-n)*6:t}if(t=X(t,360),e=X(e,100),n=X(n,100),0===e)r=i=o=n;else{var s=n<.5?n*(1+e):n+e-n*e,l=2*n-s;r=a(l,s,t+1/3),i=a(l,s,t),o=a(l,s,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,a,s;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=f++};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=R(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=R(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=M(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=M(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 Z(this._r,this._g,this._b,t)},toHexString:function(t){return'#'+this.toHex(t)},toHex8:function(){return L(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*X(this._r,255))+'%',g:g(100*X(this._g,255))+'%',b:g(100*X(this._b,255))+'%',a:this._a}},toPercentageRgbString:function(){return 1==this._a?'rgb('+g(100*X(this._r,255))+'%, '+g(100*X(this._g,255))+'%, '+g(100*X(this._b,255))+'%)':'rgba('+g(100*X(this._r,255))+'%, '+g(100*X(this._g,255))+'%, '+g(100*X(this._b,255))+'%, '+this._roundA+')'},toName:function(){return 0===this._a?'transparent':!(this._a<1)&&(C[Z(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e='#'+L(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(B,arguments)},darken:function(){return this._applyModification(H,arguments)},desaturate:function(){return this._applyModification(N,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,h.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(),a=n/100,s=2*a-1,l=o.a-i.a,c=1-(r=((r=s*l==-1?s:(s+l)/(1+s*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*a+i.a*(1-a)};return b(u)},b.readability=function(t,e){var n=b(t),r=b(e),i=n.toRgb(),o=r.toRgb(),a=n.getBrightness(),s=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(a-s),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&&a.color>500,l=3*(a.brightness/125)+a.color/500;(s&&!i||s&&i&&l>r||!s&&!i&&l>r)&&(i=s,r=l,n=b(e[o]))}return n};var w,k,x,O=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'},C=b.hexNames=function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[t[n]]=n);return e}(O),S=(k='[\\s|\\(]+('+(w='(?:'+'[-\\+]?\\d*\\.\\d+%?'+')|(?:'+'[-\\+]?\\d+%?'+')')+')[,|\\s]+('+w+')[,|\\s]+('+w+')\\s*\\)?',x='[\\s|\\(]+('+w+')[,|\\s]+('+w+')[,|\\s]+('+w+')[,|\\s]+('+w+')\\s*\\)?',{rgb:new RegExp('rgb'+k),rgba:new RegExp('rgba'+x),hsl:new RegExp('hsl'+k),hsla:new RegExp('hsla'+x),hsv:new RegExp('hsv'+k),hsva:new RegExp('hsva'+x),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 _(e,n,r,i){for(var a=[],s=0;s')}else{a.push(t('
').append(t('').attr('title',i.noColorSelectedText)).html())}}return"
"+a.join('')+'
'}function P(l,c){var u,f,h,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}(c,l),g=p.flat,v=p.showSelectionPalette,m=p.localStorageKey,y=p.theme,w=p.callbacks,k=(u=Wt,f=10,function(){var t=this,e=arguments,n=function(){d=null,u.apply(t,e)};h&&clearTimeout(d),!h&&d||(d=setTimeout(n,f))}),x=!1,O=!1,C=!0,S=0,P=0,T=0,M=0,R=0,Z=0,L=0,N=0,I=0,F=0,V=1,B=[],H=[],z={},U=p.selectionPalette.slice(0),W=p.maxSelectionSize,$='sp-dragging',q=null,G=l.ownerDocument,K=(G.body,t(l)),Y=!1,X=t(s,G).addClass(y),J=X.find('.sp-picker-container'),Q=X.find('.sp-color'),tt=X.find('.sp-dragger'),et=X.find('.sp-hue'),nt=X.find('.sp-slider'),rt=X.find('.sp-alpha-inner'),it=X.find('.sp-alpha'),ot=X.find('.sp-alpha-handle'),at=X.find('.sp-input'),st=X.find('.sp-palette'),lt=X.find('.sp-initial'),ct=X.find('.sp-cancel'),ut=X.find('.sp-clear'),ft=X.find('.sp-choose'),ht=X.find('.sp-palette-toggle'),dt=K.is('input'),pt=dt&&'color'===K.attr('type')&&D(),gt=dt&&!g,vt=gt?t(a).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,kt=p.preferredFormat,xt=!p.showButtons||p.clickoutFiresChange,Ot=!bt,Ct=p.allowEmpty&&!pt;function St(){if(p.showPaletteOnly&&(p.showPalette=!0),ht.text(p.showPaletteOnly?p.togglePaletteMoreText:p.togglePaletteLessText),p.palette){B=p.palette.slice(0),H=t.isArray(B[0])?B:[B],z={};for(var e=0;e1&&(delete window.localStorage[m],t.each(e,(function(t,e){Pt(e)})))}catch(t){}try{U=window.localStorage[m].split(';')}catch(t){}}}function Pt(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(H,(function(t,n){return _(t,e,'sp-palette-row sp-palette-row-'+n,p)}));_t(),U&&n.push(_(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+a-r):r),g}(X,mt))),zt(),p.showPalette&&Tt(),K.trigger('reflow.spectrum'))}function $t(){Nt(),Y=!0,K.attr('disabled',!0),mt.addClass('sp-disabled')}!function(){if(i&&X.find('*:not(input)').attr('unselectable','on'),St(),gt&&K.after(vt).hide(),Ct||ut.hide(),g)K.after(X).hide();else{var e='parent'===p.appendTo?K.parent():t(p.appendTo);1!==e.length&&(e=t('body')),e.append(X)}function n(e){return e.data&&e.data.ignore?(Ft(t(e.target).closest('.sp-thumb-el').data('color')),Bt()):(Ft(t(e.target).closest('.sp-thumb-el').data('color')),Bt(),p.hideAfterPaletteSelect&&(Ut(!0),Nt())),!1}_t(),mt.bind('click.spectrum touchstart.spectrum',(function(e){Y||Mt(),e.stopPropagation(),t(e.target).is('input')||e.preventDefault()})),(K.is(':disabled')||!0===p.disabled)&&$t(),X.click(E),at.change(Dt),at.bind('paste',(function(){setTimeout(Dt,1)})),at.keydown((function(t){13==t.keyCode&&Dt()})),ct.text(p.cancelText),ct.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),It(),Nt()})),ut.attr('title',p.clearText),ut.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),Ot=!0,Bt(),g&&Ut(!0)})),ft.text(p.chooseText),ft.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),i&&at.is(':focus')&&at.trigger('change'),at.hasClass('sp-validation-error')||(Ut(!0),Nt())})),ht.text(p.showPaletteOnly?p.togglePaletteMoreText:p.togglePaletteLessText),ht.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),p.showPaletteOnly=!p.showPaletteOnly,p.showPaletteOnly||g||X.css('left','-='+(J.outerWidth(!0)+5)),St()})),A(it,(function(t,e,n){V=t/R,Ot=!1,n.shiftKey&&(V=Math.round(10*V)/10),Bt()}),jt,At),A(et,(function(t,e){N=parseFloat(e/M),Ot=!1,p.showAlpha||(V=1),Bt()}),jt,At),A(Q,(function(t,e,n){if(n.shiftKey){if(!q){var r=I*S,i=P-F*P,o=Math.abs(t-r)>Math.abs(e-i);q=o?'x':'y'}}else q=null;var a=!q||'y'===q;(!q||'x'===q)&&(I=parseFloat(t/S)),a&&(F=parseFloat((P-e)/P)),Ot=!1,p.showAlpha||(V=1),Bt()}),jt,At),bt?(Ft(bt),Ht(),kt=p.preferredFormat||b(bt).getFormat(),Pt(bt)):Ht(),g&&Rt();var r=i?'mousedown.spectrum':'click.spectrum touchstart.spectrum';st.delegate('.sp-thumb-el',r,n),lt.delegate('.sp-thumb-el:nth-child(1)',r,{ignore:!0},n)}();var qt={show:Rt,hide:Nt,toggle:Mt,reflow:Wt,option:function(n,r){return n===e?t.extend({},p):r===e?p[n]:(p[n]=r,'preferredFormat'===n&&(kt=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'),X.remove(),vt.remove(),r[qt.id]=null},container:X};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 A(e,n,r,o){n=n||function(){},r=r||function(){},o=o||function(){};var a=document,s=!1,l={},c=0,u=0,f='ontouchstart'in window,h={};function d(t){t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),t.returnValue=!1}function p(t){if(s){if(i&&a.documentMode<9&&!t.button)return g();var r=t&&t.touches&&t.touches[0],o=r&&r.pageX||t.pageX,h=r&&r.pageY||t.pageY,p=Math.max(0,Math.min(o-l.left,u)),v=Math.max(0,Math.min(h-l.top,c));f&&d(t),n.apply(e,[p,v,t])}}function g(){s&&(t(a).unbind(h),t(a.body).removeClass('sp-dragging'),setTimeout((function(){o.apply(e,arguments)}),0)),s=!1}h['selectstart']=d,h['dragstart']=d,h['touchmove mousemove']=p,h['touchend mouseup']=g,t(e).bind('touchstart mousedown',(function(n){var i=n.which?3==n.which:2==n.button;i||s||!1!==r.apply(e,arguments)&&(s=!0,c=t(e).height(),u=t(e).width(),l=t(e).offset(),t(a).bind(h),t(a.body).addClass('sp-dragging'),p(n),d(n))}))}function D(){return t.fn.spectrum.inputTypeColorSupport()}function M(t,e,n){t=X(t,255),e=X(e,255),n=X(n,255);var r,i,o=m(t,e,n),a=v(t,e,n),s=(o+a)/2;if(o==a)r=i=0;else{var l=o-a;switch(i=s>.5?l/(2-o-a):l/(o+a),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,a=[],s=1/e;e--;)a.push(b({h:r,s:i,v:o})),o=(o+s)%1;return a}function Y(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function X(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 J(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}}(y);var b=function(t){var e='name'===t.getFormat()&&t.toName(),n=1==t.getAlpha()?t.toHexString():t.toRgbString();return e||n.replace(/ /g,'')},w=function(t){(0,a.Z)(n,t);var e=m(n);function n(){return(0,i.Z)(this,n),e.apply(this,arguments)}return(0,o.Z)(n,[{key:"template",value:function(){var t=this.ppfx;return"\n
\n
\n
\n
\n
\n
\n ")}},{key:"inputClass",value:function(){var t=this.ppfx;return"".concat(t,"field ").concat(t,"field-color")}},{key:"holderClass",value:function(){return"".concat(this.ppfx,"input-holder")}},{key:"remove",value:function(){p.Z.prototype.remove.apply(this,arguments),this.colorEl.spectrum('destroy')}},{key:"handleChange",value:function(t){t.stopPropagation();var e=t.target.value;(0,f.isUndefined)(e)||this.__onInputChange(e)}},{key:"__onInputChange",value: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'),a=r&&b(o);a&&(r=a)}n?n(r):e.set({value:r},{fromInput:1})}},{key:"setValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.model,r=(0,f.isUndefined)(e.def)?n.get('defaults'):e.def,i=(0,f.isUndefined)(t)?(0,f.isUndefined)(r)?'':r:t,o=this.getInputEl(),a=this.getColorEl(),s='none'!=i?i:'';o.value=i,a.get(0).style.backgroundColor=s,(e.fromTarget||e.fromInput&&!e.avoidStore)&&(a.spectrum('set',s),this.noneColor='none'==i)}},{key:"getColorEl",value:function(){if(!this.colorEl){var t,e=this.em,n=this.model,r=this.opts,i=this,o=this.ppfx,a=r.onChange,s=y("
")),l=s.get(0).style,c=e&&e.config?e.config.el:'',u=e&&e.getConfig&&e.getConfig().colorPicker||{},f=!1,h='';this.$el.find('[data-colorp-c]').append(s);var d=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];a?a(t,!e):(e&&n.setValueFromInput(0,!1),n.setValueFromInput(t,e))};s.spectrum(v(v(v({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=b(t);h=e,l.backgroundColor=e,d(e,!1)},change:function(t){f=!0;var e=b(t);l.backgroundColor=e,d(e),i.noneColor=0},show:function(e){f=!1,h='',t=a?n.getValue({noDefault:!0}):b(e)},hide:function(){f||!t&&!a||(i.noneColor&&(t=''),l.backgroundColor=t,s.spectrum('set',t),d(t,!1))}})),e&&e.on&&this.listenTo(e,'component:selected',(function(){h&&d(h),f=!0,h='',s.spectrum('hide')})),this.colorEl=s}return this.colorEl}},{key:"render",value:function(){return p.Z.prototype.render.call(this),this.getColorEl(),this}}]),n}(p.Z)},7610:(t,e,n)=>{"use strict";n.d(e,{Z:()=>g});var r=n(5671),i=n(3144),o=n(7326),a=n(9340),s=n(2963),l=n(1120),c=n(2316),u=n.n(c),f=n(9050),h=n(1163),d=n(8659);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,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}u().$;var g=function(t){(0,a.Z)(n,t);var e=p(n);function n(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,r.Z)(this,n),t=e.call(this,i),(0,f.bindAll)((0,o.Z)(t),'moveIncrement','upIncrement'),t.doc=document,t.listenTo(t.model,'change:unit',t.handleModelChange),t}return(0,i.Z)(n,[{key:"template",value:function(){var t=this.ppfx;return"\n \n \n
\n
\n
\n
\n ")}},{key:"inputClass",value:function(){var t=this.ppfx;return this.opts.contClass||"".concat(t,"field ").concat(t,"field-integer")}},{key:"setValue",value: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()}},{key:"handleChange",value:function(t){t.stopPropagation(),this.setValue(this.getInputEl().value),this.elementUpdated()}},{key:"handleUnitChange",value:function(t){t.stopPropagation();var e=this.getUnitEl().value;this.model.set('unit',e),this.elementUpdated()}},{key:"handleKeyDown",value:function(t){'ArrowUp'===t.key&&(t.preventDefault(),this.upArrowClick()),'ArrowDown'===t.key&&(t.preventDefault(),this.downArrowClick())}},{key:"elementUpdated",value:function(){this.model.trigger('el:change')}},{key:"handleModelChange",value:function(){var t=this.model;this.getInputEl().value=t.get('value');var e=this.getUnitEl();e&&(e.value=t.get('unit')||'')}},{key:"getUnitEl",value: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}},{key:"upArrowClick",value:function(){var t=this.model,e=t.get('step'),n=parseFloat(t.get('value'));this.setValue(this.normalizeValue(n+e)),this.elementUpdated()}},{key:"downArrowClick",value:function(){var t=this.model,e=t.get('step'),n=parseFloat(t.get('value'));this.setValue(this.normalizeValue(n-e)),this.elementUpdated()}},{key:"downIncrement",value: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,h.on)(this.doc,'mousemove',this.moveIncrement),(0,h.on)(this.doc,'mouseup',this.upIncrement)}},{key:"moveIncrement",value: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),a=o.value,s=o.unit;return this.prValue=a,e.set({value:a,unit:s},{avoidStore:1}),!1}},{key:"upIncrement",value:function(){var t=this.model,e=t.get('step');if((0,h.off)(this.doc,'mouseup',this.upIncrement),(0,h.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()}}},{key:"normalizeValue",value: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}},{key:"validateInputValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=0,r=e||{},i=this.model,o='',a=(0,f.isUndefined)(t)?o:t,s=e.units||i.get('units')||[],l=i.get('unit')||s.length&&s[0]||'',c=(0,f.isUndefined)(e.max)?i.get('max'):e.max,u=(0,f.isUndefined)(e.min)?i.get('min'):e.min,h=!!i.get('limitlessMax'),d=!!i.get('limitlessMin');if(r.deepCheck){var p=i.get('fixedValues')||[];if(''===a&&(l=''),a){var g=new RegExp('^'+p.join('|'),'g');if(p.length&&g.test(a))a=a.match(g)[0],l='',n=1;else{var v=a+'';a+='',a=parseFloat(a.replace(',','.')),a=isNaN(a)?o:a;var m=v.replace(a,'');(0,f.indexOf)(s,m)>=0&&(l=m)}}}return h||(0,f.isUndefined)(c)||''===c||(a=a>c?c:a),d||(0,f.isUndefined)(u)||''===u||(a=a{"use strict";n.d(e,{Z:()=>p});var r=n(5671),i=n(3144),o=n(7326),a=n(9340),s=n(2963),l=n(1120),c=n(4942),u=n(9050),f=n(2316),h=n.n(f);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,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,s.Z)(this,n)}}var p=function(t){(0,a.Z)(n,t);var e=d(n);function n(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=arguments.length>1?arguments[1]:void 0,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return(0,r.Z)(this,n),t=e.call(this,i),(0,c.Z)((0,o.Z)(t),"itemsView",''),(0,c.Z)((0,o.Z)(t),"itemType",'type'),(0,c.Z)((0,o.Z)(t),"reuseView",!1),t.config=a||i.config||{},s&&t.listenTo(t.collection,'add',t.addTo),t.items=[],t}return(0,i.Z)(n,[{key:"addTo",value:function(t){this.add(t)}},{key:"itemViewNotFound",value: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)}},{key:"add",value:function(t,e){var n,r=this.config,i=this.reuseView,o=this.items,a=this.itemsView,s=void 0===a?{}:a,l=e||null,c=this.itemView,f=t.get(this.itemType);s[f]?c=s[f]:!f||s[f]||(0,u.includes)(['button','checkbox','color','date','datetime-local','email','file','hidden','image','month','number','password','radio','range','reset','search','submit','tel','text','time','url','week'],f)||this.itemViewNotFound(f),n=t.view&&i?t.view:new c({model:t,config:r},r),o&&o.push(n);var h=n.render().el;l?l.appendChild(h):this.$el.append(h)}},{key:"render",value: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}},{key:"onRender",value:function(){}},{key:"onRemoveBefore",value:function(){}},{key:"onRemove",value:function(){}},{key:"remove",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.items;this.onRemoveBefore(e,t),this.clearItems(),h().View.prototype.remove.apply(this,arguments),this.onRemove(e,t)}},{key:"clearItems",value:function(){this.items}}]),n}(h().View);p.prototype.itemView=''},4836:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>h});var r=n(5671),i=n(3144),o=n(4942),a=n(9050),s=n(1163),l={placeholder:'eg. Text here'};const c={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:l,alt:l,title:l,href:{placeholder:'eg. https://google.com'}},options:{target:{false:'This window',_blank:'New window'}}}},storageManager:{recover:'Do you want to recover unsaved changes?'}}},messagesAdd:null};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 f(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.config=f(f(f({},c),t),{},{messages:f(f({},c.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}},{key:"getConfig",value:function(){return this.config}},{key:"setLocale",value: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}},{key:"getLocale",value:function(){return this.config.locale}},{key:"getMessages",value: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}},{key:"setMessages",value:function(t){var e=this.em;return this.config.messages=t,e&&e.trigger('i18n:update',t),this}},{key:"addMessages",value:function(t){var e=this.em,n=this.config.messages;return e&&e.trigger('i18n:add',t),this.setMessages((0,s.deepMerge)(n,t)),this}},{key:"t",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.config,r=e.params||{},i=e.l||this.getLocale(),o=e.lFlb||n.localeFallback,s=this._getMsg(t,i,e);return s||(s=this._getMsg(t,o,e)),!s&&this._debug("'".concat(t,"' i18n key not found in '").concat(i,"' lang"),e),s=s&&(0,a.isString)(s)?this._addParams(s,r):s}},{key:"_localLang",value:function(){var t=(0,s.hasWin)()&&window.navigator||{},e=t.language||t.userLanguage;return e?e.split('-')[0]:'en'}},{key:"_addParams",value:function(t,e){var n=new RegExp('{([\\w\\d-]*)}','g');return t.replace(n,(function(t,n){return e[n]||''})).trim()}},{key:"_getMsg",value: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,a.isUndefined)(t))return t[e]}),r)),i}}},{key:"_debug",value: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)}},{key:"destroy",value:function(){this.config={},this.em={}}}]),t}()},9788:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>E});var r,i=n(1002),o=n(4942),a=n(9050),s=n(1163),l={},c={16:!1,18:!1,17:!1,91:!1},u='all',f={'⇧':16,shift:16,'⌥':18,alt:18,option:18,'⌃':17,ctrl:17,control:17,'⌘':91,command:91},h={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 h[t]||t.toUpperCase().charCodeAt(0)},p=[];for(r=1;r<20;r++)h['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,f)f[e]==n&&(k[e]=!1)}function w(){for(r in c)c[r]=!1;for(r in f)k[r]=!1}function k(t,e,n){var r,i;r=O(t),void 0===n&&(n=e,e='all');for(var o=0;o1&&(i=C(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 f)k[r]=!1;function x(){return u||'all'}function O(t){var e;return''==(e=(t=t.replace(/\s/g,'')).split(','))[e.length-1]&&(e[e.length-2]+=','),e}function C(t){for(var e=t.slice(0,t.length-1),n=0;n1&&(s=C(r)),t=r[r.length-1],t=d(t),void 0===e&&(e=x()),!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 _=k;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 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,s=o.get('Commands'),l=o.getEditor(),c=o.get('Canvas'),u={id:t,keys:e,handler:n},f=this.keymaps[t];return f&&this.remove(t),this.keymaps[t]=u,_(e,(function(e,u){var f={event:e,h:u};if(n=(0,a.isString)(n)?s.get(n):n,!o.isEditing()&&!l.Canvas.isInputFocused()||r.force){r.prevent&&c.getCanvasView().preventDefault(e),'object'==(0,i.Z)(n)?s.runCommand(n,f):n(l,0,f);var h=[t,u.shortcut,e];o.trigger.apply(o,['keymap:emit'].concat(h)),o.trigger.apply(o,["keymap:emit:".concat(t)].concat(h))}})),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 _.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)})),_.handlers={},this},destroy:function(){this.removeAll(),this.keymaps={},this.em={}}}}},2450:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>k});var r=n(4942),i=n(9050),o=n(9283);const a={stylePrefix:'mdl-',title:'',content:'',backdrop:!0,custom:!1,extend:{}};var s=n(5671),l=n(3144),c=n(9340),u=n(2963),f=n(1120),h=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,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,u.Z)(this,n)}}var p=function(t){(0,c.Z)(n,t);var e=d(n);function n(){return(0,s.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}(h.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}(h.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]:{},s=(n=w(w({},a),o)).em;this.em=s;var l=n.pStylePrefix;return l&&(n.stylePrefix=l+n.stylePrefix),(t=new p(n)).on('change:open',(function(t,e){return r(e,s)})),t.on('change',(0,i.debounce)((function(){var t=e._evData(),n=e.getConfig().custom;(0,i.isFunction)(n)&&n(t),s.trigger('modal',t)}))),this},_evData:function(){var e=this,n=this.getTitle(),r=this.getContent(),a=t.attributes;return{open:a.open,attributes:a.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={}}}}},4906:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>L});var r='sw-visibility',i='export-template',o='open-sm',a='open-tm',s='open-layers',l='open-blocks',c='fullscreen',u='preview';const f={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:a,className:'fa fa-cog',command:a,togglable:0,attributes:{title:'Settings'}},{id:s,className:'fa fa-bars',command:s,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 h=n(5671),d=n(3144),p=n(9340),g=n(2963),v=n(1120),m=n(2316),y=n(2516);function b(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 w=function(t){(0,p.Z)(n,t);var e=b(n);function n(){return(0,h.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"defaults",value:function(){return{id:'',content:'',visible:!0,buttons:[],attributes:{}}}},{key:"initialize",value:function(t){this.btn=this.get('buttons')||[],this.buttons=new y.Z(this.btn),this.set('buttons',this.buttons)}}]),n}(m.Model);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,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 x=function(t){(0,p.Z)(n,t);var e=k(n);function n(){return(0,h.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n)}(m.Collection);x.prototype.model=w;var O=n(4942),C=n(9050);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 _(t){for(var e=1;e2&&void 0!==arguments[2]?arguments[2]:{},r=this.model,i=this.commands,o=this.$el,a=this.activeCls,s=n.fromCollection,l=n.fromListen,c=r.get('context'),u=r.get('options'),f=r.get('command'),h={};f&&(i&&(0,C.isString)(f)?h=i.get(f)||{}:(0,C.isFunction)(f)?h=i.create({run:f}):null!==f&&(0,C.isObject)(f)&&(h=i.create(f)),r.get('active')?(!s&&r.collection.deactivateAll(c,r),r.set('active',!0,{silent:!0}).trigger('checkActive'),!l&&i.runCommand(h,_(_({},u),{},{sender:r})),h.noStop&&r.set('active',!1)):(o.removeClass(a),!l&&i.stopCommand(h,_(_({},u),{},{sender:r,force:1}))))}},{key:"updateDisable",value:function(){var t=this.disableCls,e=this.model.get('disable');this.$el[e?'addClass':'removeClass'](t)}},{key:"checkActive",value:function(){var t=this.model,e=this.$el,n=this.activeCls;t.get('active')?e.addClass(n):e.removeClass(n)}},{key:"clicked",value:function(t){var e=this.model;e.get('bntsVis')||e.get('disable')||!e.get('command')||this.toggleActive()}},{key:"toggleActive",value: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())}},{key:"render",value: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}}]),n}(m.View);function E(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 j=function(t){(0,p.Z)(n,t);var e=E(n);function n(){return(0,h.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"initialize",value: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'}},{key:"addTo",value:function(t){this.addToCollection(t)}},{key:"addToCollection",value:function(t,e){var n=e||null,r=new T({el:t.get('el'),model:t,config:this.config,parentM:this.parentM}).render().el;return n?n.appendChild(r):this.$el.append(r),r}},{key:"render",value: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,C.result)(this,'className')),this}}]),n}(m.View);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 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,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 M=function(t){(0,p.Z)(n,t);var e=D(n);function n(){return(0,h.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"initialize",value: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}},{key:"appendContent",value:function(){this.$el.append(this.model.get('appendContent'))}},{key:"updateContent",value:function(){this.$el.html(this.model.get('content'))}},{key:"toggleVisible",value:function(){this.model.get('visible')?this.$el.removeClass("".concat(this.ppfx,"hidden")):this.$el.addClass("".concat(this.ppfx,"hidden"))}},{key:"attributes",value:function(){return this.model.get('attributes')}},{key:"initResize",value:function(){var t=this.config.em,e=t?t.get('Editor'):'',n=this.model.get('resizable');if(e&&n){var r,i,o,a=!0===n?[1,1,1,1]:n,s=a.length,l=0;2==s?(r=a[0],o=a[0],i=a[1],l=a[1]):4==s&&(r=a[0],i=a[1],o=a[2],l=a[3]);var c=e.Utils.Resizer.init(function(t){for(var e=1;e{"use strict";n.d(e,{Z:()=>h});var r=n(5671),i=n(3144),o=n(9340),a=n(2963),s=n(1120),l=n(2316);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,s.Z)(t);if(e){var i=(0,s.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,a.Z)(this,n)}}var u=function(t){(0,o.Z)(a,t);var e=c(a);function a(){return(0,r.Z)(this,a),e.apply(this,arguments)}return(0,i.Z)(a,[{key:"defaults",value:function(){return{id:'',label:'',tagName:'span',className:'',command:'',context:'',buttons:[],attributes:{},options:{},active:!1,dragDrop:!1,togglable:!0,runDefaultCommand:!0,stopDefaultCommand:!1,disable:!1}}},{key:"initialize",value:function(t){if(this.get('buttons').length){var e=n(2516).Z;this.set('buttons',new e(this.get('buttons')))}}}]),a}(l.Model);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,s.Z)(t);if(e){var i=(0,s.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,a.Z)(this,n)}}var h=function(t){(0,o.Z)(n,t);var e=f(n);function n(){return(0,r.Z)(this,n),e.apply(this,arguments)}return(0,i.Z)(n,[{key:"deactivateAllExceptOne",value: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))}))}},{key:"deactivateAll",value:function(t,e){var n=t||'';this.forEach((function(t){t.get('context')==n&&t!==e&&t.set('active',!1,{fromCollection:1})}))}},{key:"disableAllButtons",value:function(t){var e=t||'';this.forEach((function(t,n){t.get('context')==e&&t.set('disable',!0)}))}},{key:"disableAllButtonsExceptOne",value: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))}))}}]),n}(l.Collection);h.prototype.model=u},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),a={4:'media',5:'font-face',6:'page',7:'keyframes',11:'counter-style',12:'supports',13:'document',14:'font-feature-values',15:'viewport'},s=(0,o.keys)(a),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],a=o?o.split(/:(.+)/):[],s=a[1],l=n.atRule,u=n.selectorsAdd,f=n.mediaText,h=c.indexOf(l)>=0;return h&&(r.singleAtRule=1),l&&(r.atRuleType=l),u&&(r.selectorsAdd=u),f&&(r.mediaText=f),s&&(t[i-1]=a[0],r.state=s,a.splice(a.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=a[p],m=h(c);else if(s.indexOf(p)>=0){var w=t(c);m=h(c);for(var k=0,x=w.length;k0&&void 0!==arguments[0]?arguments[0]:{};return{parse:function(e){var n=this,r=[],i=t.parserCss,o=t.em,a=o&&o.get&&o.get('Editor');return(i?i(e,a):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=[],a=u(n),s=a.result,l=a.add.join(', '),c={atRule:t.atRule,mediaText:t.params};if(s.length?s.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:()=>f});var r=n(4942),i=n(1002),o=n(9050),a='text/html',s=a;const l=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new DOMParser,i=n.htmlType||s,l=i===a,c=l?t:"
".concat(t,"
"),u=r.parseFromString(c,i);if(l){var f=u.head,h=u.body,d=f.querySelectorAll('script');(0,o.each)(d,(function(t){return h.appendChild(t)}));var p=[];(0,o.each)(f.children,(function(t){return p.push(t)})),(0,o.each)(p,(function(t,e){return h.insertBefore(t,h.children[e])})),e=h}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,a){if(0===a.indexOf(t.modelAttrStart)){var s=a.replace(n,''),l=e.length,c=e&&(0,o.isString)(e),u=c&&e.substr(0,1),f=c&&e.substr(l-1);e='false'!==(e='true'===e||e)&&e;try{e='{'==u&&'}'==f||'['==u&&']'==f?JSON.parse(e):e}catch(t){}r[s]=e}else i[a]=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]:{},a=[],s=r.childNodes,l=0,c=s.length;l'!=="".concat(f.outerHTML).slice(-2)||(m.void=!0);var M=m.components;if(!m.type&&M){for(var R=1,Z=0,L=0;L2&&void 0!==arguments[2]?arguments[2]:{},c=e.em,f=c&&c.get('Config')||{},h={html:null,css:null},d=u(u({},t),s),p=u(u({},t.optionsHtml),{},{htmlType:(null===(a=t.optionsHtml)||void 0===a?void 0:a.htmlType)||t.htmlType},s),g=(0,o.isFunction)(d.parserHtml)?d.parserHtml(n,p):l(n,p),v=g.querySelectorAll('script'),m=v.length,y=(0,o.isUndefined)(f.allowScripts)?p.allowScripts:f.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,k='';w--;)k=b[w].innerHTML+k,b[w].parentNode.removeChild(b[w]);k&&(h.css=i.parse(k))}c&&c.trigger("".concat(r,":root"),{input:n,root:g});var x=this.parseNode(g,d),O=1!==x.length||e.returnArray?x:x[0];return h.html=O,c&&c.trigger(r,{input:n,output:h}),h},__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:()=>_});var r=n(5861),i=n(2982),o=n(4942),a=n(7757),s=n.n(a),l=n(1163),c=n(5671),u=n(3144),f=n(9050);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 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,a=null==i?void 0:i.parentNode;return(null==o?void 0:o.nodeName)==e||(null==a?void 0:a.nodeName)==e},b='data-selectme',w={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()&&y(t)?g:v},result:function(t){y(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()&&y(t,'SPAN')?m:v},result:function(t){!y(t,'SPAN')&&t.insertHTML("").concat(t.selection(),""),{select:!0})}}},k=function(){function t(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,c.Z)(this,t);var r=n.el,i=n.em;if(this.em=i,r[p])return r[p];r[p]=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({},w[t]):w[t.name]&&(e=d(d({},w[t.name]),t)),e})),a=o.length?o:Object.keys(w).map((function(t){return w[t]}));n.classes=d(d({},{actionbar:'actionbar',button:'action',active:'active',disabled:'disabled',inactive:'inactive'}),n.classes);var s=n.classes,l=n.actionbar;if(this.actionbar=l,this.settings=n,this.classes=s,this.actions=a,!l){var u=n.actionbarContainer;(l=document.createElement('div')).className=s.actionbar,u.appendChild(l),this.actionbar=l,a.forEach((function(t){return e.addAction(t)}))}return n.styleWithCSS&&this.exec('styleWithCSS'),this}return(0,u.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,a=i.inactive,s=i.disabled,l=e.state,c=e.name,u=t.doc;if(n.className=n.className.replace(o,'').trim(),n.className=n.className.replace(a,'').trim(),n.className=n.className.replace(s,'').trim(),l)switch(l(t,u)){case g:n.className+=" ".concat(o);break;case v:n.className+=" ".concat(a);break;case m:n.className+=" ".concat(s)}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?l.on:l.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 a=null;if(i.caretRangeFromPoint){var s=(0,l.getPointerEvent)(o);a=i.caretRangeFromPoint(s.clientX,s.clientY)}else o.rangeParent&&(a=i.createRange()).setStart(o.rangeParent,o.rangeOffset);var c=i.getSelection();c.removeAllRanges(),a&&c.addRange(a)}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 a in r.className=this.classes.button,t.btn=r,o)r.setAttribute(a,o[a]);'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,a=i.getSelection();if(a&&a.rangeCount){var s=(0,l.getModel)(o),c=i.createElement('div'),u=a.getRangeAt(0);u.deleteContents(),(0,f.isString)(t)?c.innerHTML=t:t&&c.appendChild(t),Array.prototype.slice.call(c.childNodes).forEach((function(t){u.insertNode(t)})),a.removeAllRanges(),a.addRange(u),o.focus(),n&&s&&(s.once('rte:disable',(function(){var t=s.find("[".concat(b,"]"))[0];t&&(r.setSelected(t),t.removeAttributes(b))})),s.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,l.hasWin)()?((t=document.createElement('div')).className="".concat(r,"rte-toolbar ").concat(r,"one-bg"),this.initRte(document.createElement('div')),(0,l.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,a=this.actionbar,s=this.config,l=t,c=this.actions||(0,i.Z)(s.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 k({em:r,el:e,classes:u,actions:c,actionbar:a,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='px',n=this.em.get('Canvas'),r=t.style,i=n.getTargetToElementFixed(this.lastEl,t,{event:'rteToolbarPosUpdate',left:0});r.top=(i.top||0)+e,r.left=(i.left||0)+e},enable:function(e,n,i){var o=this;return(0,r.Z)(s().mark((function r(){var a,l,c,u;return s().wrap((function(r){for(;1;)switch(r.prev=r.next){case 0:return o.lastEl=e.el,a=o.customRte,l=o.em,c=e.getChildrenContainer(),t.style.display='',r.next=6,a?a.enable(c,n):o.initRte(c).enable(i);case 6:return u=r.sent,l&&(setTimeout(o.updatePosition.bind(o),0),l.off(S,o.updatePosition,o),l.on(S,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(S,this.updatePosition,this),r.trigger('rte:disable',t,n))}}}},4859:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>A});var r=n(5861),i=n(5671),o=n(3144),a=n(7326),s=n(9340),l=n(2963),c=n(1120),u=n(4942),f=n(7757),h=n.n(f),d=n(9714);const p={id:'gjs-',type:'local',autosave:!0,autoload:!0,recovery:!1,stepsBeforeSave:1,onStore:function(t){return t},onLoad:function(t){return t},options:{local:{key:'gjsProject',checkLocal:!0},remote:{headers:{},urlStore:'',urlLoad:'',contentTypeJson:!0,fetchOptions:'',credentials:'include',onStore:function(t){return t},onLoad:function(t){return t}}}};var g=n(1163),v=function(){function t(){(0,i.Z)(this,t)}var e,n;return(0,o.Z)(t,[{key:"store",value:(n=(0,r.Z)(h().mark((function t(e){var n,r=arguments;return h().wrap((function(t){for(;1;)switch(t.prev=t.next){case 0:n=r.length>1&&void 0!==r[1]?r[1]:{},this.hasLocal(n,!0)&&localStorage.setItem(n.key,JSON.stringify(e));case 2:case"end":return t.stop()}}),t,this)}))),function(t){return n.apply(this,arguments)})},{key:"load",value:(e=(0,r.Z)(h().mark((function t(){var e,n,r=arguments;return h().wrap((function(t){for(;1;)switch(t.prev=t.next){case 0:return e=r.length>0&&void 0!==r[0]?r[0]:{},n={},this.hasLocal(e,!0)&&(n=JSON.parse(localStorage.getItem(e.key)||'{}')),t.abrupt("return",n);case 4:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"hasLocal",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;if(t.checkLocal&&(!(0,g.hasWin)()||!localStorage)){if(e)throw new Error('localStorage not available');return!1}return!0}}]),t}(),m=n(9050),y=n(9661);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!==r[1]?r[1]:{},t.next=3,this.request(n.urlStore,this.__props(n,e),n);case 3:case"end":return t.stop()}}),t,this)}))),function(t){return n.apply(this,arguments)})},{key:"load",value:(e=(0,r.Z)(h().mark((function t(e){return h().wrap((function(t){for(;1;)switch(t.prev=t.next){case 0:return t.next=2,this.request(e.urlLoad,this.__props(e),e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)}))),function(t){return e.apply(this,arguments)})},{key:"request",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return(0,y.Z)(t,e).then((function(t){var e=t.text();return 1==(t.status/200|0)?e:e.then(Promise.reject)})).then((function(t){var e=t&&(0,m.isString)(t);return n.contentTypeJson&&e?JSON.parse(t):t}))}},{key:"__props",value:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0,r=e.contentTypeJson,i=e.headers||{},o=e.fetchOptions||{},a='X-Requested-With',s='Content-Type';if((0,m.isUndefined)(i[a])&&(i[a]='XMLHttpRequest'),(0,m.isUndefined)(i[s])&&r&&(i[s]='application/json; charset=utf-8'),n)if(r)t=JSON.stringify(n);else for(var l in t=new FormData,n)t.append(l,n[l]);var c={method:t?'POST':'GET',credentials:e.credentials,headers:i,body:t};return w(w({},c),(0,m.isFunction)(o)?o(c):o)}}]),t}();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}function O(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.__initConfig(p,t);var e=this.getConfig();return e._disable&&(e.type=0),this.storages={},this.add(E,new v(e)),this.add(j,new k(e)),this.setCurrent(e.type),this}},{key:"isAutosave",value:function(){return!!this.getConfig().autosave}},{key:"setAutosave",value:function(t){return this.getConfig().autosave=!!t,this}},{key:"getStepsBeforeSave",value:function(){return this.getConfig().stepsBeforeSave}},{key:"setStepsBeforeSave",value:function(t){return this.getConfig().stepsBeforeSave=t,this}},{key:"add",value:function(t,e){return this.storages[t]=e,this}},{key:"get",value:function(t){return this.storages[t]||null}},{key:"getStorages",value:function(){return this.storages}},{key:"getCurrent",value:function(){return this.getConfig().currentStorage}},{key:"setCurrent",value:function(t){return this.getConfig().currentStorage=t,this}},{key:"getCurrentStorage",value:function(){return this.get(this.getCurrent())}},{key:"getStorageOptions",value:function(t){return this.getCurrentOptions(t)}},{key:"store",value:(l=(0,r.Z)(h().mark((function t(e){var n,r,i,o,a,s=arguments;return h().wrap((function(t){for(;1;)switch(t.prev=t.next){case 0:return n=s.length>1&&void 0!==s[1]?s[1]:{},r=this.getCurrentStorage(),i=O(O({},this.getCurrentOptions()),n),o=this.getRecoveryStorage(),a=this.getCurrentOptions(E),t.prev=5,t.next=8,this.__exec(r,i,e);case 8:if(t.t0=o,!t.t0){t.next=12;break}return t.next=12,this.__exec(o,a,{});case 12:case 19:t.next=22;break;case 14:if(t.prev=14,t.t1=t["catch"](5),!o){t.next=21;break}return t.next=19,this.__exec(o,a,e);case 21:throw t.t1;case 22:return t.abrupt("return",e);case 23:case"end":return t.stop()}}),t,this,[[5,14]])}))),function(t){return l.apply(this,arguments)})},{key:"load",value:(n=(0,r.Z)(h().mark((function t(){var e,n,r,i,o,a,s=arguments;return h().wrap((function(t){for(;1;)switch(t.prev=t.next){case 0:if(e=s.length>0&&void 0!==s[0]?s[0]:{},n=this.getCurrentStorage(),r=O(O({},this.getCurrentOptions()),e),!(i=this.getRecoveryStorage())){t.next=17;break}return t.next=7,this.__exec(i,this.getCurrentOptions(E));case 7:if(a=t.sent,(0,m.isEmpty)(a)){t.next=17;break}return t.prev=9,t.next=12,this.__askRecovery();case 12:o=a,t.next=17;break;case 15:t.prev=15,t.t0=t["catch"](9);case 17:if(o){t.next=21;break}return t.next=20,this.__exec(n,r);case 20:o=t.sent;case 21:return t.abrupt("return",o||{});case 22:case"end":return t.stop()}}),t,this,[[9,15]])}))),function(){return n.apply(this,arguments)})},{key:"__askRecovery",value:function(){var t=this.em,e=this.getRecovery();return new Promise((function(n,r){(0,m.isFunction)(e)?e(n,r,null==t?void 0:t.getEditor()):confirm(null==t?void 0:t.t('storageManager.recover'))?n():r()}))}},{key:"getRecovery",value:function(){return this.getConfig().recovery}},{key:"getRecoveryStorage",value:function(){return this.getRecovery()&&this.getCurrent()===j&&this.get(E)}},{key:"__exec",value:(e=(0,r.Z)(h().mark((function t(e,n,r){var i,o,a,s,l,c,u,f;return h().wrap((function(t){for(;1;)switch(t.prev=t.next){case 0:if(i=r?'store':'load',o=this.getConfig(),a=o.onStore,s=o.onLoad,this.onStart(i,r),e){t.next=5;break}return t.abrupt("return",r||{});case 5:if(t.prev=5,u=null===(c=this.em)||void 0===c?void 0:c.getEditor(),!r){t.next=31;break}if(t.t1=a,!t.t1){t.next=13;break}return t.next=12,a(r,u);case 12:t.t1=t.sent;case 13:if(t.t0=t.t1,t.t0){t.next=16;break}t.t0=r;case 16:if(f=t.t0,t.t3=n.onStore,!t.t3){t.next=22;break}return t.next=21,n.onStore(f,u);case 21:t.t3=t.sent;case 22:if(t.t2=t.t3,t.t2){t.next=25;break}t.t2=f;case 25:return f=t.t2,t.next=28,e.store(f,n);case 28:l=r,t.next=53;break;case 31:return t.next=33,e.load(n);case 33:if(l=t.sent,l=this.__clearKeys(l),t.t5=n.onLoad,!t.t5){t.next=40;break}return t.next=39,n.onLoad(l,u);case 39:t.t5=t.sent;case 40:if(t.t4=t.t5,t.t4){t.next=43;break}t.t4=l;case 43:if(l=t.t4,t.t7=s,!t.t7){t.next=49;break}return t.next=48,s(l,u);case 48:t.t7=t.sent;case 49:if(t.t6=t.t7,t.t6){t.next=52;break}t.t6=l;case 52:l=t.t6;case 53:this.onAfter(i,l),this.onEnd(i,l),t.next=61;break;case 57:throw t.prev=57,t.t8=t["catch"](5),this.onError(i,t.t8),t.t8;case 61:return t.abrupt("return",l);case 62:case"end":return t.stop()}}),t,this,[[5,57]])}))),function(t,n,r){return e.apply(this,arguments)})},{key:"__clearKeys",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getConfig(),n=new RegExp("^".concat(e.id)),r={};for(var i in t){var o=i.replace(n,'');r[o]=t[i]}return r}},{key:"getCurrentOptions",value:function(t){var e=this.getConfig(),n=t||this.getCurrent();return e.options[n]||{}}},{key:"onStart",value:function(t,e){var n=this.em;n&&(n.trigger(S),t&&n.trigger("".concat(S,":").concat(t),e))}},{key:"onAfter",value:function(t,e){var n=this.em;n&&(n.trigger(_),n.trigger("".concat(_,":").concat(t),e),n.trigger("storage:".concat(t),e))}},{key:"onEnd",value:function(t,e){var n=this.em;n&&(n.trigger(P),t&&n.trigger("".concat(P,":").concat(t),e))}},{key:"onError",value:function(t,e){var n=this.em;n&&(n.trigger(T,e),t&&n.trigger("".concat(T,":").concat(t),e),this.onEnd(t,e))}},{key:"canAutoload",value:function(){return this.getCurrentStorage()&&this.getConfig().autoload}},{key:"destroy",value:function(){this.__destroy(),this.storages={}}}]),f}(d.Z)},2326:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>Pe,evAll:()=>de,evCustom:()=>Se,evLayerSelect:()=>Oe,evPfx:()=>pe,evProp:()=>be,evPropAdd:()=>we,evPropRemove:()=>ke,evPropUp:()=>xe,evSector:()=>ge,evSectorAdd:()=>ve,evSectorRemove:()=>me,evSectorUpdate:()=>ye,evTarget:()=>Ce});var r=n(2982),i=n(4942),o=n(9050),a=n(1163),s=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','transform']}],appendTo:'',stylePrefix:'sm-',custom:!1,hideNotStylable:!0,highlightChanged:!0,highlightComputed:!0,showComputed:!0,clearProperties:!0,avoidComputed:['width','height']};var f=n(4925),h=n(5671),d=n(3144),p=n(9340),g=n(2963),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,a.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]:{},i=this.em,a=i.get('StyleManager'),s=this.getName(),l=n.__clear,c=l?'':this.__getFullValue(n),u=this.__getParentProp(),f=this.changedAttributes(),h=(0,o.keys)(f).reduce((function(t,n){return t[n]=e.previous(n),t}),{}),d=[].concat((0,r.Z)((0,o.keys)(this.__getClearProps())),['__p']),p=(0,o.keys)(f),g=!n.__up&&!u&&(l||d.some((function(t){return p.indexOf(t)>=0}))),v=this.get('onChange'),m={property:this,from:h,to:f,value:c,opts:n};a.__trgEv(a.events.propertyUpdate,m),v&&v(m),g&&this.__upTargetsStyle({[s]:c},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,f.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,a.camelCase)(e):e;return{[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=[],a="".concat(n.value),s=a.indexOf('(')+1,l=a.lastIndexOf(')'),c=a.substring(0,s-1);if(c&&(n.functionName=c),i.push(s),l>=0&&i.push(l),n.value=String.prototype.substring.apply(a,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 a='url'===e?"'".concat(r.replace(/'|"/g,''),"'"):r;r="".concat(e,"(").concat(a,")")}return i&&this.get('important')&&(r="".concat(r," !important")),r||''}},{key:"__setParentTarget",value:function(t){this.up({parentTarget:t})}},{key:"getParentTarget",value:function(){return this.get('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 s=this.getId(),l=this.getName(),c=this.get('toRequire'),u=this.get('requires'),f=this.get('requiresParent'),h=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)(h)&&(p=h.indexOf(l)<0),c&&(p=!e||d&&(d.indexOf(s)>=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(f){var v=n&&n.parent(),m=v&&v.getEl();if(m){var y=(0,a.hasWin)()?window.getComputedStyle(m):{};(0,o.each)(f,(function(t,e){p=p&&y[e]&&(0,o.includes)(t,y[e])}))}else p=!1}return!!p}}]),n}(l.Model);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;e3&&void 0!==arguments[3]?arguments[3]:{};t.prototype.initialize.apply(e,[n,w(w({},r),{},{skipInit:1})])},x.callInit=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!n.skipInit&&t.init(e,n)},x.getDefaults=function(){return(0,o.result)(this.prototype,'defaults')},x.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,parentTarget:null};var _=function(t){return'integer'===t||'number'===t},P=function(t){(0,p.Z)(n,t);var e=S(n);function n(){return(0,h.Z)(this,n),e.apply(this,arguments)}return(0,d.Z)(n,[{key:"defaults",value:function(){return C(C({},x.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]:{};x.callParentInit(x,this,t,e);var n=this.em,r=new Ht(this.get('properties')||[],{em:n,parentProp:this});this.set('properties',r,{silent:1}),this.listenTo(r,'change',this.__upProperties),x.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'),i=this.getValues(),o={};if(r)o=r(i,{join:n,name:e,property:this});else if(i=this.getValues({byName:!0}),this.isDetached())o=i;else{var a=this.getProperties().map((function(t){return t.__getFullValue({withDefault:1})})).filter(Boolean).join(n);o={[e]:a}}return this.isDetached()?o[e]='':(o[e]=o[e]||'',o=C(C({},o),this.getProperties().reduce((function(t,e){return t[e.getName()]='',t}),{}))),t.camelCase?Object.keys(o).reduce((function(t,e){return t[camelCase(e)]=o[e],t}),{}):o}},{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={[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),x.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()})),a=[e].concat((0,r.Z)(i));return a.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 _(t.getType())})),a=this.__splitValue(t,this.getSplitSeparator()),s={};return r.forEach((function(t,e){var r=a[e],l=(0,o.isUndefined)(r)?'':r;if(i){var c=a.length;l=a[e]||a[e%c+(1!=c&&c%2?1:0)]||l}var u=n?t.getName():t.getId();s[u]=l||''})),s}},{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(),a=this.getSplitSeparator(),s=this.get('fromStyle'),l=s?s(t,{property:this,name:r,separator:a}):{};return s||(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()})})),x.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}(x);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,a.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 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,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 M=function(t){(0,p.Z)(n,t);var e=D(n);function n(){return(0,h.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);M.prototype.model=A;var R=["__layers"];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 L(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};P.callParentInit(P,this,t,e);var n=this.get('layers'),r=new M(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),P.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(),i=this.__getJoinLayers(),s=this.get('toStyle'),l=this.getName(),c=t.getValues();if(s)e=s(c,{join:r,joinLayers:i,name:l,layer:t,property:this});else{var u=this.getProperties().map((function(t){var e=t.getName(),r=c[t.getId()],i=(0,o.isUndefined)(r)?t.getDefaultValue():r;if(n.number&&_(t.getType())){var a=t.parseValue(r,n.number);i="".concat(a.value).concat(a.unit)}return{name:e,value:i}}));e=this.isDetached()?u.reduce((function(t,e){return t[e.name]=e.value,t}),{}):{[this.getName()]:u.map((function(t){return t.value})).join(r)}}return n.camelCase?Object.keys(e).reduce((function(t,n){return t[(0,a.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({[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 x.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 x.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,r=null!==(e=o[t.getId()])&&void 0!==e?e:'';t.__getFullValue()!==r&&t.upValue(r,L(L({},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,f.Z)(t,R);return!this.isDetached()&&this.__setLayers(r),this.__upSelected({noEvent:!0},e),x.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(),i=this.getLayerSeparator(),a=this.get('fromStyle'),s=a?a(e,{property:this,name:n,separatorLayers:i}):[];if(!a){var l=this.__splitStyleName(e,n,i).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(),i).map((function(t){return{[r]:t||n.getDefaultValue()}})).forEach((function(t,e){l[e]=l[e]?L(L({},l[e]),t):t}))})),s=l}return(0,o.isArray)(s)?s:[s]}},{key:"getStyle",value:function(t){return this.getStyleFromLayers(t)}},{key:"getStyleFromLayers",value:function(t){var e=this,n={},r=this.getName(),i=this.getLayers(),a=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&&a.map((function(t){n[t.getName()]=''}));else{var s=a.reduce((function(t,e){return t[e.getName()]='',t}),{});n[r]=n[r]||'',n=L(L({},n),s)}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),x.prototype.clear.call(this)}},{key:"__canClearProp",value:function(){return!1}}]),n}(P),B=["complete","partial"];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 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,a=void 0===o?'':o,s=i.info,l=void 0===s?'':s,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(r,'change:parentTarget',this.updateStatus),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"),a="".concat(r,"color-warn"),s=this.$el.children(".".concat(n,"label")),l=this.getClearEl(),c=l?l.style:{};s.removeClass("".concat(o," ").concat(a)),c.display='none',e.hasValue({noParent:!0})&&i.highlightChanged?(s.addClass(o),i.clearProperties&&(c.display='')):e.hasValue()&&i.highlightComputed&&s.addClass(a),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,f.Z)(e,B),this.model),o=!1!==n&&!0!==r;(0,a.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(),a=e.get('className')||'',s="".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(s," ").concat(l," ").concat(s,"__").concat(i," ").concat(a).trim(),n.className+=e.isFull()?" ".concat(s,"--full"):'';var u=this.onRender&&this.onRender.bind(this);u&&u(),this.setValue(e.getValue())}}]),n}(l.View);$.prototype.events={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,h.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,a=new t.typeView({model:t,config:i});r&&(a.parent=r),a.render();var s=a.el;this.properties.push(a),(0,q.$Q)(o,s,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 X(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:X(X({},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,h.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,h.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 a=r?r.get('Utils'):'';this.sorter=a?new a.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,a=this.sorter,s=this.$el,l=new et({model:t,config:o,sorter:a,propertyView:i}),c=l.render().el;if(this.items.push(l),r)r.appendChild(c);else if(void 0!==n){var u='before';s.children().length===n&&(n--,u='after'),n<0?s.append(c):s.children().eq(n)[u](c)}else s.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 ht(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=ht(n);function n(){return(0,h.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,h.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,a.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,a=((0,o.isString)(t)?this.getOption(t):t)||{},s=this.getOptionId(a),l=a.label||a.name||s,c=this.getId();return i&&(null===(e=this.em)||void 0===e?void 0:e.t("styleManager.options.".concat(c,".").concat(s)))||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 Ot(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")}},{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(),a="".concat(t,"radio ").concat(t,"radio-").concat(i),s=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),f="".concat(i,"-").concat(u,"-").concat(s),h=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}(xt),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 At(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x.callParentInit(x,this,t,e);var n=this.get('unit'),r=this.get('units');this.input=(0,a.hasWin)()&&new Et.Z({model:this}),r.length&&!n&&this.set('unit',r[0],{silent:1}),x.callInit(this,t,e)}},{key:"__getClearProps",value:function(){return At(At({},x.prototype.__getClearProps()),{},{unit:''})}},{key:"parseValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=x.prototype.parseValue.apply(this,arguments),r=this.input.validateInputValue(n.value,At({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),x.prototype.getFullValue.apply(this,[t])}}]),n}(x);function Rt(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 Zt(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 Ht=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:st,isType:function(t){if(t&&'stack'==t.type)return t}},{id:'composite',model:P,view:Q,isType:function(t){if(t&&'composite'==t.type)return t}},{id:'file',model:x,view:ft,isType:function(t){if(t&&'file'==t.type)return t}},{id:'color',model:x,view:vt,isType:function(t){if(t&&'color'==t.type)return t}},{id:'select',model:wt,view:xt,isType:function(t){if(t&&'select'==t.type)return t}},{id:'radio',model:_t,view:Tt,isType:function(t){if(t&&'radio'==t.type)return t}},{id:'slider',model:Nt,view:Bt,isType:function(t){if(t&&'slider'==t.type)return t}},{id:'integer',model:Mt,view:dt,isType:function(t){if(t&&'integer'==t.type)return t}},{id:'number',model:Mt,view:dt,isType:function(t){if(t&&'number'==t.type)return t}},{id:'base',model:x,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||{},a=this.buildProperties(i.buildProps),s=this.get('name')||'',l=[];!this.get('id')&&this.set('id',s.replace(/ /g,'_').toLowerCase()),l=(l=a?this.extendProperties(a):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 Ht(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'),a=this.get('extendBuilded'),s=[],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),Jt=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]||{},a=ee(ee({},i),{},{property:t},e);return a.properties&&(0,o.isFunction)(a.properties)&&(a.properties=a.properties()),this.props[t]=a,a}},{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),ae=n(7539);function se(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=se(n);function n(){return(0,h.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)||'',a="".concat(n,"sector-");return(0,ae.Z)(ne||(ne=(0,oe.Z)(["\n
\n
$","
\n
","
\n
\n "])),a,a,o,a,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,h.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,a=new le({model:t,config:r}).render().el;return(0,q.$Q)(o,a,n.at),a}},{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 fe(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 he(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,a=i.em,s=i.pStylePrefix;s&&(i.stylePrefix=s+i.stylePrefix),this.builtIn=new ie,t=new Ht([],{em:a,module:this}),e=new Xt([],he(he({},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 f='component:toggled component:update:classes change:state change:device frame:resized selector:type',h=(0,o.debounce)((function(){return n.__upSel()}));c.listenTo(a,f,h),c.listenTo(a,'component:toggled',this.__clearStateTarget);var d=(0,o.debounce)((function(){n.__upProps(),n.__trgCustom()}));c.listenTo(a,'styleable:change undo redo',d);var p=(0,o.debounce)((function(){return n.__trgCustom()}));return c.listenTo(a,"".concat(Oe," ").concat(Ce),p),c.on('change:lastTarget',(function(){return a.trigger(Ce,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],s=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)(s)&&n.set({stylable:s}),e=n}c.push(e)}));var u=n.component||c.filter((function(t){return(0,a.isComponent)(t)})).reverse()[0];c=c.map((function(t){return e.getModelToStyle(t)}));var f=r.getState(),h=c.slice().reverse()[0],d=this.getParentRules(h,{state:f,component:u}),p=this.__getStateTarget();return r.skip((function(){var t;if(f&&null!=h&&null!==(t=h.getState)&&void 0!==t&&t.call(h)){var e=h.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:h,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,a=r.getConfig(),s=r.get('UndoManager'),l=r.get('CssComposer'),c=r.get('SelectorManager'),u=c?c.getConfig():{},f=a.devicePreviewMode?'':r.get('state'),h=t.get('classes'),d=h.getStyleable(),p=d.length,g=!u.componentFirst||n.useClasses,v={noCount:1},m={state:f,addOpts:v};if(s.stop(),p&&g){var y=r.getCurrentMedia();(o=l.get(d,f,y))||i||(o=l.add(d,f,y,{},v))}else if(a.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),s.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,a=[];if(i&&t){var s=r,l=i.get('CssComposer'),c=i.get('CodeManager').getGenerator('css'),u=t.toHTML?t:t.getComponent(),f={combination:!0,array:!0},h=[],d=[],p=[];u?(h=l.getRules("#".concat(u.getId())),p=(d=s?l.getRules(s.getSelectors().getFullName(f)):[]).concat(h)):(h=s?l.getRules("#".concat(s.getId())):[],d=l.getRules(t.getSelectors().getFullName(f)),p=h.concat(d));var g=p.filter((function(t){return(0,o.isUndefined)(n)?1:t.get('state')===n})).sort(c.sortRules).reverse();a=g.slice(g.indexOf(t)+1)}return a},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,a=this.config,s=this.getType(t);if(s)return new s.view(he({model:new s.model(r),config:a},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(),a=r.getStyle(),s=o.map((function(t){return{target:t,style:t.getStyle()}}));e.map((function(e){e.getProperties().map((function(e){n.__upProp(e,a,s,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(),a=e[o],s=_e(a),l='stack'===t.getType(),c='composite'===t.getType(),u=he(he({},r),{},{__up:!0}),f=!c&&!l,h=l?t.__getLayersFromStyle(e):[],d=c?t.__getPropsFromStyle(e):{},p=s?a:null,g=null;if(l&&null===h||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?h=y:d=y}}else if(!s){p=null;var b=n.filter((function(t){return _e(t.style[o])}))[0];b&&(p=b.style[o],g=b.target)}if(t.__setParentTarget(g),f&&t.__getFullValue()!==p&&t.upValue(p,u),l&&t.__setLayers(h||[]),c){var w=t.getProperties();if(t.isDetached()){var k=t.__getPropsFromStyle(e,{byName:!0})||{},x=n.map((function(e){return he(he({},e),{},{style:t.__getPropsFromStyle(e.style,{byName:!0})||{}})}));w.map((function(t){return i.__upProp(t,k,x,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:()=>z,evAll:()=>V,evCustom:()=>H,evPfx:()=>B});var r=n(4942),i=n(9050),o=n(9304),a=n(2316),s=n.n(a);const l={stylePrefix:'trt-',appendTo:'',optionsTarget:[{value:!1},{value:'_blank'}]};var c=n(5671),u=n(3144),f=n(7326),h=n(9340),d=n(2963),p=n(1120),g=n(6602),v=n(885),m=n(1163);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]:{};(0,c.Z)(this,n),t=e.call(this,i),(0,r.Z)((0,f.Z)(t),"events",{}),(0,r.Z)((0,f.Z)(t),"appendInput",!0);var o=i.config,a=void 0===o?{}:o,s=(0,f.Z)(t),l=s.model,u=s.eventCapture,h=l.target,d=l.attributes.type;t.config=a,t.em=a.em,t.pfx=a.stylePrefix||'',t.ppfx=a.pStylePrefix||'',t.target=h;var p=(0,f.Z)(t),g=p.ppfx;return t.clsField="".concat(g,"field ").concat(g,"field-").concat(d),[['change:value',t.onValueChange],['remove',t.removeView]].forEach((function(e){var n=(0,v.Z)(e,2),r=n[0],i=n[1];l.off(r,i),t.listenTo(l,r,i)})),l.view=(0,f.Z)(t),t.listenTo(l,'change:label',t.render),t.listenTo(l,'change:placeholder',t.rerender),t.events={},u.forEach((function(e){return t.events[e]='onChange'})),t.delegateEvents(),t.init(),t}return(0,u.Z)(n,[{key:"attributes",value:function(){return this.model.get('attributes')}},{key:"templateLabel",value:function(){var t=this.ppfx,e=this.getLabel();return"
").concat(e,"
")}},{key:"templateInput",value:function(){var t=this.clsField;return"
")}},{key:"getClbOpts",value:function(){return{component:this.target,trait:this.model,elInput:this.getInputElem()}}},{key:"removeView",value:function(){this.remove(),this.removed()}},{key:"init",value:function(){}},{key:"removed",value:function(){}},{key:"onRender",value:function(){}},{key:"onUpdate",value:function(){}},{key:"onEvent",value:function(){}},{key:"onChange",value:function(t){var e=this.getInputElem();e&&!(0,i.isUndefined)(e.value)&&this.model.set('value',e.value),this.onEvent(b(b({},this.getClbOpts()),{},{event:t}))}},{key:"getValueForTarget",value:function(){return this.model.get('value')}},{key:"setInputValue",value:function(t){var e=this.getInputElem();e&&(e.value=t)}},{key:"onValueChange",value: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)}}},{key:"renderLabel",value: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)}},{key:"getLabel",value:function(){var t=this.em,e=this.model.attributes,n=e.label,r=e.name;return t.t("traitManager.traits.labels.".concat(r))||(0,m.capitalize)(n||r).replace(/-/g,' ')}},{key:"getComponent",value:function(){return this.target}},{key:"getInputEl",value:function(){if(!this.$input){var t=this.em,e=this.model,n=e,r=e.attributes.name,o=n.get('placeholder')||n.get('default')||'',a=n.get('type')||'text',s=n.get('min'),l=n.get('max'),c=this.getModelValue(),u=k("")),f=t.t("traitManager.traits.attributes.".concat(r))||{};u.attr(f),(0,i.isUndefined)(c)||(n.set({value:c},{silent:!0}),u.prop('value',c)),s&&u.prop('min',s),l&&u.prop('max',l),this.$input=u}return this.$input.get(0)}},{key:"getInputElem",value:function(){var t=this.input,e=this.$input;return t||e&&e.get&&e.get(0)||this.getElInput()}},{key:"getModelValue",value: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}},{key:"getElInput",value:function(){return this.elInput}},{key:"renderField",value:function(){var t=this.$el,e=this.appendInput,n=this.model,r=t.find('[data-input]'),o=r[r.length-1],a=n.el;a||(a=this.createInput?this.createInput(this.getClbOpts()):this.getInputEl()),(0,i.isString)(a)?(o.innerHTML=a,this.elInput=o.firstChild):(e?o.appendChild(a):o.insertBefore(a,o.firstChild),this.elInput=a),n.el=this.elInput}},{key:"hasLabel",value:function(){var t=this.model.attributes.label;return!this.noLabel&&!1!==t}},{key:"rerender",value:function(){this.model.el=null,this.render()}},{key:"postUpdate",value:function(){this.onUpdate(this.getClbOpts())}},{key:"render",value:function(){var t=this.$el,e=this.pfx,n=this.ppfx,r=this.model.attributes,o=r.type,a=r.id,s=this.hasLabel&&this.hasLabel(),l="".concat(e,"trait");this.$input=null;var c="
\n ").concat(s?"
"):'',"\n
\n ").concat(this.templateInput?(0,i.isFunction)(this.templateInput)?this.templateInput(this.getClbOpts()):this.templateInput:'',"\n
\n
");return t.empty().append(c),s&&this.renderLabel(),this.renderField(),this.el.className="".concat(l,"__wrp ").concat(l,"__wrp-").concat(a),this.postUpdate(),this.onRender(this.getClbOpts()),this}}]),n}(s().View);function O(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)}}x.prototype.eventCapture=['change'];var C=function(t){(0,h.Z)(n,t);var e=O(n);function n(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0;(0,c.Z)(this,n),t=e.call(this,i),(0,r.Z)((0,f.Z)(t),"reuseView",!0),t.itemsView=o;var a=i.config||{},s=a.stylePrefix||'',l=i.editor;return t.config=a,t.em=l,t.pfx=s,t.ppfx=a.pStylePrefix||'',t.className="".concat(s,"traits"),t.listenTo(l,'component:toggled',t.updatedCollection),t.updatedCollection(),t}return(0,u.Z)(n,[{key:"updatedCollection",value: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()}}]),n}(g.Z);function S(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)}}C.prototype.itemView=x;var _=s().$,P=function(t){(0,h.Z)(n,t);var e=S(n);function n(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,c.Z)(this,n),(t=e.call(this,r)).listenTo(t.model,'change:options',t.rerender),t}return(0,u.Z)(n,[{key:"templateInput",value:function(){var t=this.ppfx,e=this.clsField;return"
\n
\n
\n
\n
\n
")}},{key:"getInputEl",value:function(){if(!this.$input){var t=this.model,e=this.em,n=t.get('name'),r=t.get('options')||[],o=[],a='',this.$input=_(a);var s=t.getTargetValue(),l=o.indexOf(s)>=0?s:t.get('default');!(0,i.isUndefined)(l)&&this.$input.val(l)}return this.$input.get(0)}}]),n}(x);function T(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 E=function(t){(0,h.Z)(n,t);var e=T(n);function n(){var t;(0,c.Z)(this,n);for(var i=arguments.length,o=new Array(i),a=0;a\n \n ")}},{key:"onChange",value:function(){var t=this.getInputElem().checked;this.model.set('value',this.getCheckedValue(t))}},{key:"getCheckedValue",value: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}},{key:"getInputEl",value:function(){for(var t=!this.$input,e=arguments.length,n=new Array(e),r=0;r").concat(a,"")}}]),n}(x);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}function F(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.__initConfig(l,n);var r=this.config,o=new a.Model;this.model=o;var s=this.em,c=r.pStylePrefix;this.types=F({},t),c&&(r.stylePrefix="".concat(c).concat(r.stylePrefix));var u=(0,i.debounce)((function(){return e.__upSel()}));o.listenTo(s,'component:toggled',u);var f=(0,i.debounce)((function(){return e.__onUp()}));return o.listenTo(s,'trait:update',f),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 C({el:n,collection:[],editor:e.em,config:e},this.getTypes()),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),a=n.n(o),s=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),h),t=n.em,this.em=t,n._disable&&(n=c(c({},n),{},{maximumStackLength:0}));var d=!0;return(e=new(a())(c({track:!0,register:[]},n))).changeUndoType('change',{condition:function(t){var e=t.get('_undo');if(e){var n=t.get('_undoexc');if((0,s.isArray)(n)&&u(t).some((function(t){return n.indexOf(t)>=0})))return!1;if((0,s.isBoolean)(e))return!0;if((0,s.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}),a={object:t,before:i,after:o};if(i=null,!(0,s.isEmpty)(o))return a}}}),e.changeUndoType('add',{on:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!l(n)&&f.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)&&f.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)&&f.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,a=n.object,s=n.options;return{index:e,type:r,after:i,before:o,object:a,options:void 0===s?{}:s}}(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,s.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,s.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),a=n(9050),s=n(1163);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,a.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:s.on,off:s.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,a.result)(e,'guidesStatic')||[],this.guidesTarget=(0,a.result)(e,'guidesTarget')||[],(0,a.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,s=this.startPointer,l=this.getPointerPos(t),u={x:i.x+r.x,y:i.y+r.y};this.globScrollDiff=u;var f={x:l.x-s.x+u.x,y:l.y-s.y+u.y};this.lastScrollDiff={x:0,y:0};var h=this.lockedAxis;'x'===(h=t.shiftKey?!h&&this.detectAxisLock(f.x,f.y):null)?f.x=s.x:'y'===h&&(f.y=s.y);var d=function(r){['x','y'].forEach((function(t){return r[t]=r[t]*(0,a.result)(n,'scale')})),e.delta=r,e.move(r.x,r.y),(0,a.isFunction)(o)&&o(t,e)},p=c({},f);if(this.currentPointer=l,this.lockedAxis=h,this.lastScroll=this.getScrollInfo(),d(f),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 s=n.y&&o.y,l=s?'y':'x',c=n[l],u=o[l],f=t[l],h=s?i:r;if(e.isPointIn(c,u)&&(0,a.isUndefined)(h)){var d=f-(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,a.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,a.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 s=this.opts.onEnd;(0,a.isFunction)(s)&&s(t,this,{cancelled:r})}},{key:"keyHandle",value:function(t){(0,s.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 s=i.setPosition,l=o.x+t,c=o.y+e;this.position={x:l,y:c,end:n},(0,a.isFunction)(s)&&s(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,s.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,a.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:()=>vt});var r='undefined'!=typeof document?document:null,i='undefined'!=typeof window?window:null,o=Array.prototype,a=o.filter,s=o.indexOf,l=o.map,c=o.push,u=o.reverse,f=o.slice,h=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)?dt(t):m(t,e)))return}else if(P(t))return this.ready(t);(n.nodeType||n===i)&&(n=[n]),this.length=n.length;for(var o=0,a=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 ut,ft=/^\s*<(\w+)[^>]*>/,ht=/^\s*<(\w+)\s*\/?>(?:<\/\1>)?\s*$/;function dt(t){if(function(){if(!ut){var t=r.createElement('table'),e=r.createElement('tr');ut={'*':r.createElement('div'),tr:r.createElement('tbody'),td:e,th:e,thead:t,tbody:t,tfoot:t}}}(),!T(t))return[];if(ht.test(t))return[r.createElement(RegExp.$1)];var e=ft.test(t)&&RegExp.$1,n=ut[e]||ut['*'];return n.innerHTML=t,b(n.childNodes).detach().get()}function pt(t,e,n){if(void 0!==e){var r=T(e);!r&&e.length?C(e,(function(e){return pt(t,e,n)})):C(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=dt,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 C(arguments,(function(e){pt(t,e)})),this},w.appendTo=function(t){return pt(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 C(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 C(arguments,(function(e){b(e).insertBefore(t)})),this},w.prepend=function(){var t=this;return C(arguments,(function(e){pt(t,e,!0)})),this},w.prependTo=function(t){return pt(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 gt=r&&r.documentElement;w.offset=function(){var t=this[0];if(t){var e=t.getBoundingClientRect();return{top:e.top+i.pageYOffset-gt.clientTop,left:e.left+i.pageXOffset-gt.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(R(e)),t?e.filter((function(e,n){return _(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&&R(t))},w.find=function(t){for(var e=[],n=0,r=this.length;n{"use strict";n.d(e,{$Q:()=>d,FW:()=>u,G1:()=>a,L_:()=>l,Mx:()=>s,R3:()=>p,SJ:()=>y,dL:()=>h,pn:()=>f,rw:()=>v,sE:()=>c,t3:()=>m,ut:()=>g});var r=n(9050),i='tag',o='attributes',a='transitionend oTransitionEnd transitionend webkitTransitionEnd',s=function(t){return t&&9===t.nodeType},l=function(t){var e=t&&t.parentNode;e&&e.removeChild(t)},c=function(t,e){return t.querySelectorAll(e)},u=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)}))},f=function(t){return t&&!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},h=function(t,e){t.parentNode.replaceChild(e,t)},d=function(t,e,n){var i=t.childNodes,o=i.length,a=(0,r.isUndefined)(n)?o:n;(0,r.isString)(e)&&(t.insertAdjacentHTML('beforeEnd',e),e=t.lastChild,t.removeChild(e)),a>=o?t.appendChild(e):t.insertBefore(e,i[a])},p=function(t,e){return d(t,e)},g=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},v=function(t){return document.createTextNode(t)},m=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},y=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[i]||'div',a=e[o]||{},s=document.createElement(n);(0,r.each)(a,(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 a(t,n){if(n&&('object'===(0,r.Z)(n)||'function'==typeof n)){var s=n.then;if('function'==typeof s)return void s.call(n,(function(e){a(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 s=0;s{"use strict";n.r(e),n.d(e,{default:()=>C});var r=n(4942),i=n(5610),o=n(2316),a=n.n(o),s=n(9050),l=n(1163);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]:{},s=this.em,c=this.itemSel,u=this.containerSel,f=this.plh,h=this.getContainerEl(a.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,f||(this.plh=this.createPlaceholder(),h.appendChild(this.plh)),t&&((o=this.getSourceModel(t))&&o.set&&o.set('status','freezed'),this.srcModel=o),(0,l.on)(h,'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==s||s.clearSelection(),this.toggleSortCursor(1),null==s||s.trigger('sorter:drag:start',t,o)},getTargetModel:function(t){var e=t||this.target;return f(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,a=this.em,s=this.sourceEl,l=t||s,c=this.dropModel,h=this.dropContent,d=function(t){return t&&r&&t.opt&&t.opt.avoidChildren&&e.isTextableActive(t,r)};if(h&&a){if(d(c)&&(c=null),!c){var p=a.get('DomComponents').getComponents(),g={avoidChildren:o,avoidStore:1,avoidUpdateStyle:1},v=p.add(h,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&&f(l).data('model')},selectTargetModel:function(t,e){if(!(t instanceof a().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 a=i.style.display;a&&'none'!==a||(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 h=n.get('Canvas').getMouseRelativeCanvas(t,{noScroll:1});u=h.x,c=h.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=f(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,s.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=f(t),i=e&&f(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,s.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,s.isString)(o)?this.matches(t,o):o,i.draggable=o;var c=n.get('droppable');if((0,s.isFunction)(c)){var u=c(r,n);i.droppable=u,i.dropInfo=u,c=u}else c=(c=c instanceof a().Collection?1:c)instanceof Array?c.join(', '):c,i.dropInfo=c,c=(0,s.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 a=this.targetP;a&&this.validTarget(a).valid&&(i=this.cacheDimsP,this.target=a)}return this.lastPos=null,i},getTargetFromEl:function(t){var e,n=t,r=this.targetPrev,i=this.em,o=this.containerSel,a=this.itemSel;if(this.matches(n,"".concat(a,", ").concat(o))||(n=this.closest(n,a)),this.draggable instanceof Array&&(n=this.closest(n,this.draggable.join(','))),r&&r!=n&&(this.targetPrev=''),!this.targetPrev){e=this.closest(n,o);var s=this.validTarget(n);if(i&&i.trigger('sorter:drag:validation',s),!s.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=10,n=t.getBoundingClientRect(),r=t.ownerDocument.body,i=this.getCurrentPos(),o=i.x,a=i.y,s=n.top+r.scrollTop,l=n.left+r.scrollLeft,c=n.width,u=n.height;if(as+u-e||ol+c-e)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,a=this.canvasRelative,s=o&&o.get('Canvas'),l=s?s.getElementOffsets(t):{};if(a&&o){var c=s.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,s.each)(t.children,(function(r,i){var o=(0,l.getModel)(r,f),a=o&&o.index?o.index():i;if((0,l.isTextNode)(r)||e.matches(r,e.itemSel)){var s=e.getDim(r),c=e.direction;c='v'==c||'h'!=c&&e.isInFlow(r,t),s.dir=c,s.el=r,s.indexEl=a,n.push(s)}})),n},nearBorders:function(t,e,n){var r=0,i=this.borderOffset,o=e||0,a=n||0,s=t.top,l=t.left,c=t.height,u=t.width;return(s+i>a||a>s+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,a=0,s=0,l=0,c=0,u=0,f=0,h=t.length;fo||a&&l>=a||i&&g+mx&&(w.at=d-1))}r&&(k?(delete w.at,i=v.getView().insertComponent(r,w)):i=g.add(r,w)),this.dropContent=null,this.prevTarget=null}else if(o){var C=p.dropInfo||(null==v?void 0:v.get('droppable')),S=p.dragInfo||(null==m?void 0:m.get('draggable'));!g&&h.push('Target collection not found'),!b&&C&&h.push("Target is not droppable, accepts [".concat(C,"]")),!y&&S&&h.push("Component not draggable, acceptable by [".concat(S,"]")),o.logWarning('Invalid target position',{errors:h,model:m,context:'sorter',target:v})}return null==o||o.trigger('sorter:drag:end',{targetCollection:g,modelToDrop:r,warns:h,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,s.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,s.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 a=i[o];a&&r.appendChild(a)}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,s.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(),'pointerdown',this.handleMouseDown))}},{key:"blur",value:function(){this.container.style.display='none',this.el&&((0,l.off)(this.getDocumentEl(),'pointerdown',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'}),a=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:a.top,l:a.left,w:a.width,h:a.height};var c=this.getDocumentEl();this.docs=c,(0,l.on)(c,'pointermove',this.move),(0,l.on)(c,'keydown',this.handleKeyDown),(0,l.on)(c,'pointerup',this.stop),(0,s.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)}},{key:"stop",value:function(t){var e=this.opts,n=this.docs||this.getDocumentEl();(0,l.off)(n,'pointermove',this.move),(0,l.off)(n,'keydown',this.handleKeyDown),(0,l.off)(n,'pointerup',this.stop),this.updateRect(1),this.toggleFrames(),(0,s.isFunction)(this.onEnd)&&this.onEnd(t,{docs:n,config:e}),delete this.docs}},{key:"updateRect",value:function(t){var e=this.el,n=this.opts,r=this.rectDim,i=this.updateTarget,o=this.getSelectedHandler(),a=n.unitHeight,l=n.unitWidth,c=n.keyWidth,u=n.keyHeight;if((0,s.isFunction)(i))i(e,r,{store:t,selectedHandler:o,resizer:this,config:n});else{var f=e.style;f[c]=r.w+l,f[u]=r.h+a}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,a=n.maxDim,s=t.delta.x,c=t.delta.y,u=this.parentDim.w,f=this.parentDim.h,h=this.opts.unitWidth,d=this.opts.unitHeight,p='%'===h?i.w/100*u:i.w,g='%'===d?i.h/100*f:i.h,v={t:0,l:0,w:p,h:g};if(t){var m=t.handlerAttr;~m.indexOf('r')&&(e='%'===h?(0,l.normalizeFloat)((p+s*r)/u*100,.01):(0,l.normalizeFloat)(p+s*r,r),e=Math.max(o,e),a&&(e=Math.min(a,e)),v.w=e),~m.indexOf('b')&&(e='%'===d?(0,l.normalizeFloat)((g+c*r)/f*100,.01):(0,l.normalizeFloat)(g+c*r,r),e=Math.max(o,e),a&&(e=Math.min(a,e)),v.h=e),~m.indexOf('l')&&(e='%'===h?(0,l.normalizeFloat)((p-s*r)/u*100,.01):(0,l.normalizeFloat)(p-s*r,r),e=Math.max(o,e),a&&(e=Math.min(a,e)),v.w=e),~m.indexOf('t')&&(e='%'===d?(0,l.normalizeFloat)((g-c*r)/f*100,.01):(0,l.normalizeFloat)(g-c*r,r),e=Math.max(o,e),a&&(e=Math.min(a,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 k={init:function(t){return new w(t)}};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}function O(t){for(var e=1;e{"use strict";n.d(e,{Z:()=>s});var r,i=n(2316),o=n.n(i),a=void 0&&(void 0).__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)});const s=function(t){function e(e,n,r){var i=t.call(this,n,r)||this;return i._module=e,i}return a(e,t),Object.defineProperty(e.prototype,"module",{get:function(){return this._module},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"config",{get:function(){return this._module.config},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"em",{get:function(){return this._module.em},enumerable:!1,configurable:!0}),e}(o().Model)},6434:(t,e,n)=>{"use strict";n.d(e,{O:()=>f,Z:()=>u});var r,i=n(9050),o=n(1163),a=void 0&&(void 0).__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),s=void 0&&(void 0).__assign||function(){return s=Object.assign||function(t){for(var e,n=1,r=arguments.length;n{"use strict";n.r(e),n.d(e,{default:()=>q});var r=n(9050),i=n(6434),o=n(1163);const a={stylePrefix:'cv-',scripts:[],styles:[],customBadgeLabel:'',autoscrollLimit:50,extHl:0,frameContent:'',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 ",notTextable:['button','a','input[type=checkbox]','input[type=radio]']};var s,l=n(7904),c=n(7948),u=n(3560),f=void 0&&(void 0).__extends||(s=function(t,e){return s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},s(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}s(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),h=function(t){function e(e){var n=this,r=e.em,i=e.config,o=i.scripts,a=i.styles;return(n=t.call(this,e,{scripts:o,styles:a})||this).set('frames',new u.Z(e)),n.listenTo(n,'change:zoom',n.onZoomChange),n.listenTo(r,'change:device',n.updateDevice),n.listenTo(r,c.evPageSelect,n._pageUpdated),n}return f(e,t),e.prototype.defaults=function(){return{frame:'',frames:[],rulers:!1,zoom:100,x:0,y:0,scripts:[],styles:[]}},Object.defineProperty(e.prototype,"frames",{get:function(){return this.get('frames')},enumerable:!1,configurable:!0}),e.prototype.init=function(){var t=this.em.get('PageManager').getMain(),e=t.getMainFrame();this.set('frames',t.getFrames()),this.updateDevice({frame:e})},e.prototype._pageUpdated=function(t,e){var n=this.em;n.setSelected(),n.get('readyCanvas')&&n.stopDefault(),null==e||e.getFrames().map((function(t){return t.disable()})),this.set('frames',t.getFrames())},e.prototype.updateDevice=function(t){void 0===t&&(t={});var e=this.em,n=e.getDeviceModel(),r=t.frame||e.getCurrentFrameModel();if(r&&n){var i=n.attributes,o=i.width,a=i.height;r.set({width:o,height:a},{noUndo:1})}},e.prototype.onZoomChange=function(){this.get('zoom')<1&&this.set('zoom',1)},e}(l.Z);const d=h;var p=n(6840),g=n(2316),v=n.n(g),m=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();const y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return m(e,t),Object.defineProperty(e.prototype,"pfx",{get:function(){return this.ppfx+this.config.stylePrefix||''},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"ppfx",{get:function(){return this.em.config.stylePrefix||''},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"module",{get:function(){var t,e;return null!==(e=null===(t=this.model)||void 0===t?void 0:t.module)&&void 0!==e?e:this.collection.module},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"em",{get:function(){return this.module.em},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"config",{get:function(){return this.module.config},enumerable:!1,configurable:!0}),e}(v().View);var b=n(9283),w=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();const k=function(t){function e(e,n){void 0===e&&(e={}),void 0===n&&(n=!1);var r=t.call(this,e)||this;return r.itemsView='',r.itemType='type',r.reuseView=!1,r.viewCollection=[],n&&r.listenTo(r.collection,'add',r.addTo),r}return w(e,t),e.prototype.addTo=function(t){this.add(t)},e.prototype.itemViewNotFound=function(t){},e.prototype.add=function(t,e){var n,r=this,i=r.reuseView,o=r.viewCollection,a=(r.itemsView,e||null),s=t.get(this.itemType);n=t.view&&i?t.view:this.renderView(t,s),o.push(n);var l=n.render().el;a?a.appendChild(l):this.$el.append(l)},e.prototype.render=function(){var t=this,e=document.createDocumentFragment();return this.clearItems(),this.$el.empty(),this.collection.length&&this.collection.each((function(n){t.add(n,e)}),this),this.$el.append(e),this.onRender(),this},e.prototype.onRender=function(){},e.prototype.onRemoveBefore=function(t,e){},e.prototype.onRemove=function(t,e){},e.prototype.remove=function(t){void 0===t&&(t={});var e=this.viewCollection;return this.onRemoveBefore(e,t),this.clearItems(),v().View.prototype.remove.apply(this,t),this.onRemove(e,t),this},e.prototype.clearItems=function(){this.viewCollection},e}(y);var x=n(4868),O=n(4942),C=n(5671),S=n(3144);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}var P=function(){function t(e,n){var i=this;(0,C.Z)(this,t),this.em=e;var o=n||e.get('Canvas').getFrames().map((function(t){return t.getComponent().getEl()})),a=Array.isArray(o)?o:[o];return this.el=o,this.counter=0,(0,r.bindAll)(this,'handleDragEnter','handleDragOver','handleDrop','handleDragLeave'),a.forEach((function(t){return i.toggleEffects(t,1)})),this}return(0,S.Z)(t,[{key:"toggleEffects",value:function(t,e){var n={on:o.on,off:o.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?o.on:o.off,n=this.el.ownerDocument,r=n.defaultView.frameElement;this.sortOpts=t?{onStart:function(t){var e=t.sorter;(0,o.on)(r,'pointermove',e.onMove)},onEnd:function(t){var e=t.sorter;(0,o.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 i,o,a=n.get('Utils'),s=n.get('Canvas'),l=n.get('dragContent')||'
';if(n.stopDefault(),n.inAbsoluteMode()){var c=n.get('DomComponents').getWrapper(),u=c.append({})[0],f=n.get('Commands').run('core:component-drag',{event:t,guidesInfo:1,center:1,target:u,onEnd:function(t,n,i){var o;if(!i.cancelled){o=c.append(l)[0];var a=editor.Canvas.getOffset(),s=u.getStyle(),f=s.top,h=s.left,d=s.position;o.addStyle({left:parseFloat(h)-a.left+'px',top:parseFloat(f)-a.top+'px',position:d})}e.handleDragEnd(o,r),u.remove()}});i=function(e){return f.stop(t,{cancel:e})},o=function(t){return l=t}}else{var h=new a.Sorter(function(t){for(var e=1;e=0)a=t&&t.getData('text/html').replace(/<\/?meta[^>]*>/g,'');else if((0,r.indexOf)(n,'text/uri-list')>=0)a={type:'link',attributes:{href:a},content:a};else if((0,r.indexOf)(n,'text/json')>=0){var u=t&&t.getData('text/json');u&&(a=JSON.parse(u))}else 1===n.length&&'text/plain'===n[0]&&(a="
".concat(a,"
"));var f={content:a};return e.trigger('canvas:dragdata',t,f),f}}]),t}(),T=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),E=void 0&&(void 0).__assign||function(){return E=Object.assign||function(t){for(var e,n=1,r=arguments.length;ns&&(l+=o-s),!(0,r.isUndefined)(t)&&l!==i&&l>0&&l0){var l=e.shift(),u=(0,b.ut)('script',E({type:'text/javascript'},(0,r.isString)(l)?{src:l}:l));u.onerror=u.onload=c.bind(null,e),null===(i=n.contentDocument)||void 0===i||i.head.appendChild(u)}else t.renderBody(),o&&o.trigger(a,s)};n.onload=function(){var e=t.config.frameContent;if(e){var n=t.getDoc();n.open(),n.write(e),n.close()}o&&o.trigger("".concat(a,":before"),s),c(j([],l.get('scripts'),!0))}},e.prototype.renderStyles=function(t){void 0===t&&(t={});var e=this.getHead(),n=this.getCanvasModel(),i=function(t){return t.map((function(t){return{tag:'link',attributes:E({rel:'stylesheet'},(0,r.isString)(t)?{href:t}:t)}}))},o=i(t.prev||n.previous('styles')),a=i(n.get('styles')),s=[],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(a,o,l),c(o,a,s),s.forEach((function(t){var n,r=e.querySelector("link[href=\"".concat(t.attributes.href,"\"]"));null===(n=null==r?void 0:r.parentNode)||void 0===n||n.removeChild(r)})),(0,b.SJ)(e,l)},e.prototype.renderBody=function(){var t,e,n=this,r=this,i=r.config,a=r.em,s=r.model,l=r.ppfx,c=this.getDoc(),u=this.getBody(),f=this.getWindow(),h=a.config;f._isEditor=!0,this.renderStyles({prev:[]});(0,b.R3)(u,""));var d=s.getComponent(),p=a.get('DomComponents').getType('wrapper').view;this.wrapper=new p({model:d,config:E(E({},d.config),{em:a,frameView:this})}).render(),(0,b.R3)(u,null===(t=this.wrapper)||void 0===t?void 0:t.el),(0,b.R3)(u,new x.Z({collection:s.getStyles(),config:E(E({},a.get('CssComposer').getConfig()),{frameView:this})}).render().el),(0,b.R3)(u,this.getJsContainer()),(0,o.on)(u,'click',(function(t){var e;return t&&'A'==(null===(e=t.target)||void 0===e?void 0:e.tagName)&&t.preventDefault()})),(0,o.on)(u,'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(t){return t.event.split(' ').forEach((function(e){c.addEventListener(e,(function(e){return n.el.dispatchEvent((0,b.t3)(e,t.class))}))}))})),this._toggleEffects(!0),this.droppable=(0,o.hasDnd)(a)&&new P(a,null===(e=this.wrapper)||void 0===e?void 0:e.el),s.trigger('loaded')},e.prototype._toggleEffects=function(t){var e=t?o.on:o.off,n=this.getWindow();n&&e(n,"".concat(b.G1," resize"),this._emitUpdate)},e.prototype._emitUpdate=function(){this.model._emitUpdated()},e}(y);const D=A;var M=n(5610),R=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Z=void 0&&(void 0).__assign||function(){return Z=Object.assign||function(t){for(var e,n=1,r=arguments.length;n\n
\n ").concat(o.get('name')||'',"\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n ")).append(e.el);var l=(0,b.ut)('div',{class:"".concat(r,"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=l;var c=null==i?void 0:i.toolsWrapper;return c&&c.appendChild(l),s&&s({el:a,elTop:a.querySelector('[data-frame-top]'),elRight:a.querySelector('[data-frame-right]'),elBottom:a.querySelector('[data-frame-bottom]'),elLeft:a.querySelector('[data-frame-left]'),frame:o,frameWrapperView:this,remove:this.remove,startDrag:this.startDrag}),this},e}(y);var N=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),I=function(t){function e(e,n){void 0===e&&(e={});var r=t.call(this,e,!0)||this;return r.listenTo(r.collection,'reset',r.render),r.canvasView=n.canvasView,r._module=n.module,r}return N(e,t),e.prototype.onRemoveBefore=function(t,e){void 0===e&&(e={}),t.forEach((function(t){return t.remove(e)}))},e.prototype.onRender=function(){var t=this.$el,e=this.ppfx;t.attr({class:"".concat(e,"frames")})},e.prototype.renderView=function(t,e){return new L(t,this.canvasView)},e}(k);const F=I;var V=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),B=void 0&&(void 0).__assign||function(){return B=Object.assign||function(t){for(var e,n=1,r=arguments.length;n\n
\n ")},e.prototype._onFramesUpdate=function(){this._initFrames(),this._renderFrames()},e.prototype._initFrames=function(){var t=this,e=t.frames,n=t.model,r=t.config,i=t.em,o=n.frames;i.set('readyCanvas',0),o.once('loaded:all',(function(){return i.set('readyCanvas',1)})),null==e||e.remove(),this.frames=new F({collection:o},B(B({},r),{canvasView:this}))},e.prototype.checkSelected=function(t,e){var n;void 0===e&&(e={});var r=e.scroll,i=this.em.get('currentFrame');r&&(null===(n=t.views)||void 0===n||n.forEach((function(t){t._getFrame()===i&&t.scrollIntoView(r)})))},e.prototype.remove=function(){for(var t,e=[],n=0;n=0&&a>=0&&i<=r.height&&a<=r.width},e.prototype.offset=function(t,e){var n,r;void 0===e&&(e={});var i=(0,o.getElRect)(t),a=null==t?void 0:t.ownerDocument.body,s=e.noScroll;return{top:i.top+(s?0:null!==(n=null==a?void 0:a.scrollTop)&&void 0!==n?n:0),left:i.left+(s?0:null!==(r=null==a?void 0:a.scrollLeft)&&void 0!==r?r:0),width:i.width,height:i.height}},e.prototype.clearOff=function(){this.frmOff=void 0,this.cvsOff=void 0},e.prototype.getFrameOffset=function(t){var e;if(!this.frmOff||t){var n=null===(e=this.frame)||void 0===e?void 0:e.el,r=null==t?void 0:t.ownerDocument.defaultView,i=r?r.frameElement:n;this.frmOff=this.offset(i||n)}return this.frmOff},e.prototype.getCanvasOffset=function(){return this.cvsOff||(this.cvsOff=this.offset(this.el)),this.cvsOff},e.prototype.getElementPos=function(t,e){void 0===e&&(e={});var n=this.getZoom(),r=e||{},i=this.getFrameOffset(t),o=this.el,a=this.getCanvasOffset(),s=this.offset(t,e),l=r.avoidFrameOffset?0:i.top,c=r.avoidFrameOffset?0:i.left;return{top:s.top*n+l-a.top+o.scrollTop,left:s.left*n+c-a.left+o.scrollLeft,height:s.height*n,width:s.width*n,zoom:n,rect:s}},e.prototype.getElementOffsets=function(t){var e=this;if(!t||(0,o.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},e.prototype.getPosition=function(t){var e;void 0===t&&(t={});var n=null===(e=this.frame)||void 0===e?void 0:e.el.contentDocument;if(n){var r=n.body,i=this.getZoom(),o=this.getFrameOffset(),a=this.getCanvasOffset(),s=t.noScroll;return{top:o.top+(s?0:r.scrollTop)*i-a.top,left:o.left+(s?0:r.scrollLeft)*i-a.left,width:a.width,height:a.height}}},e.prototype.updateScript=function(t){var e=t.model,n=e.getId();t.scriptContainer||(t.scriptContainer=(0,b.ut)('div',{'data-id':n}),this.getJsContainer().appendChild(t.scriptContainer)),t.el.id=n,t.scriptContainer.innerHTML='';var r=document.createElement('script'),i=e.getScriptString(),o=e.get('script-props')?i:"function(){\n".concat(i,"\n;}"),a=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(a,")\n }, 1);"),setTimeout((function(){var e=t.scriptContainer;null==e||e.appendChild(r)}),0)},e.prototype.getJsContainer=function(t){var e=this.getFrameView(t);return e&&e.getJsContainer()},e.prototype.getFrameView=function(t){return(null==t?void 0:t._getFrame())||this.em.get('currentFrame')},e.prototype._renderFrames=function(){if(this.ready){var t=this,e=t.model,n=t.frames,r=t.em,i=t.framesArea,o=e.frames;o.listenToLoad(),n.render();var a=o.at(0),s=null==a?void 0:a.view;r.setCurrentFrame(s),null==i||i.appendChild(n.el),this.frame=s}},e.prototype.render=function(){var t=this,e=t.el,n=t.$el,r=t.ppfx,i=t.config,a=t.em;n.html(this.template());var s=n.find('[data-frames]');this.framesArea=s.get(0);var l=n.find('[data-tools]');this.toolsWrapper=l.get(0),l.append("\n
\n
\n
\n
\n
\n
\n ").concat(i.extHl?"
"):'',"\n
\n
\n
\n
\n
\n
\n
\n "));var c=e.querySelector("#".concat(r,"tools"));return this.hlEl=e.querySelector(".".concat(r,"highlighter")),this.badgeEl=e.querySelector(".".concat(r,"badge")),this.placerEl=e.querySelector(".".concat(r,"placeholder")),this.ghostEl=e.querySelector(".".concat(r,"ghost")),this.toolbarEl=e.querySelector(".".concat(r,"toolbar")),this.resizerEl=e.querySelector(".".concat(r,"resizer")),this.offsetEl=e.querySelector(".".concat(r,"offset-v")),this.fixedOffsetEl=e.querySelector(".".concat(r,"offset-fixed-v")),this.toolsGlobEl=e.querySelector(".".concat(r,"tools-gl")),this.toolsEl=c,this.el.className=(0,o.getUiClass)(a,this.className),this.ready=!0,this._renderFrames(),this},e}(y);const z=H;var U=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),W=void 0&&(void 0).__assign||function(){return W=Object.assign||function(t){for(var e,n=1,r=arguments.length;no.top+o.height?o.top+o.height:d,left:h,elementTop:o.top,elementLeft:o.left,elementWidth:o.width,elementHeight:o.height,targetWidth:t.offsetWidth,targetHeight:t.offsetHeight,canvasTop:i.top,canvasLeft:i.left,canvasWidth:i.width,canvasHeight:i.height};return c&&this.em&&this.em.trigger(c,p),p}},e.prototype.canvasRectOffset=function(t,e,n){var r=this;void 0===n&&(n={});var i=function(t,e,i){void 0===e&&(e=1);var o=r.em.getZoomDecimal(),a=e?'top':'left',s=t.ownerDocument,l=n.offset?function(t){var e=t.defaultView;return null==e?void 0:e.frameElement}(s):{},c=l.offsetTop,u=void 0===c?0:c,f=l.offsetLeft,h=void 0===f?0:f,d=s.body||{},p=d.scrollTop,g=void 0===p?0:p,v=d.scrollLeft,m=e?g:void 0===v?0:v,y=e?u:h;return i[a]-(m-y)*o};return{top:i(t,1,e),left:i(t,0,e)}},e.prototype.getTargetToElementFixed=function(t,e,n){var i;void 0===n&&(n={});var o=n.pos||this.getElementPos(t),a=n.canvasOff||this.canvasRectOffset(t,o),s=e.offsetHeight||0,l=e.offsetWidth||0,c=o.left+o.width,u=this.getCanvasView(),f=u.getPosition(),h=u.getFrameOffset(t),d=n.event,p=-s,g=(0,r.isUndefined)(n.left)?o.width-l:n.left;g=o.left<-g?-o.left:g;var v=null!==(i=null==f?void 0:f.width)&&void 0!==i?i:0;g=c>v?g-(c-v):g;var m=o.height+s,y=m{"use strict";n.d(e,{Z:()=>h});var r,i=n(9050),o=n(7904),a=n(1163),s=void 0&&(void 0).__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),l=void 0&&(void 0).__assign||function(){return l=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=0&&this.head.splice(i,1)},e.prototype.addLink=function(t){var e='link';!this.getHeadByAttr('href',t,e)&&this.addHeadItem({tag:e,attributes:{href:t,rel:'stylesheet'}})},e.prototype.removeLink=function(t){this.removeHeadByAttr('href',t,'link')},e.prototype.addScript=function(t){var e='script';!this.getHeadByAttr('src',t,e)&&this.addHeadItem({tag:e,attributes:{src:t}})},e.prototype.removeScript=function(t){this.removeHeadByAttr('src',t,'script')},e.prototype.getPage=function(){var t;return null===(t=this.collection)||void 0===t?void 0:t.page},e.prototype._emitUpdated=function(t){void 0===t&&(t={}),this.em.trigger('frame:updated',l({frame:this},t))},e.prototype.toJSON=function(t){void 0===t&&(t={});var e=o.Z.prototype.toJSON.call(this,t),n=(0,i.result)(this,'defaults');return t.fromUndo&&delete e.component,delete e.styles,delete e.changesCount,e[u]&&delete e.width,e[f]&&delete e.height,(0,i.forEach)(e,(function(t,n){0===n.indexOf('_')&&delete e[n]})),(0,i.forEach)(n,(function(t,n){e[n]===t&&delete e[n]})),(0,i.forEach)(['attributes','head'],(function(t){(0,i.isEmpty)(e[t])&&delete e[t]})),e},e}(o.Z)},3560:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r,i=n(9050),o=n(2316),a=void 0&&(void 0).__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)});const s=function(t){function e(e,n){void 0===n&&(n=[]);var r=t.call(this,n)||this;return r.loadedItems=0,r.itemsToLoad=0,r.module=e,(0,i.bindAll)(r,'itemLoaded'),r.on('reset',r.onReset),r.on('remove',r.onRemove),r}return a(e,t),e.prototype.onReset=function(t,e){var n=this;((null==e?void 0:e.previousModels)||[]).map((function(t){return n.onRemove(t)}))},e.prototype.onRemove=function(t){null==t||t.onRemove()},e.prototype.itemLoaded=function(){this.loadedItems++,this.loadedItems>=this.itemsToLoad&&(this.trigger('loaded:all'),this.listenToLoadItems(!1))},e.prototype.listenToLoad=function(){this.loadedItems=0,this.itemsToLoad=this.length,this.listenToLoadItems(!0)},e.prototype.listenToLoadItems=function(t){var e=this;this.forEach((function(n){return n[t?'on':'off']('loaded',e.itemLoaded)}))},e}(o.Collection)},5819:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>Pe});var r=n(9050);const i={stylePrefix:'comp-',components:[],draggableComponents:1,processor:0,voidElements:['area','base','br','col','embed','hr','img','input','keygen','link','menuitem','meta','param','source','track','wbr']};var o=n(7375),a=n(8431),s=n(2169),l=n(5671),c=n(3144),u=n(9340),f=n(2963),h=n(1120);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,f.Z)(this,n)}}var p=function(t){(0,u.Z)(n,t);var e=d(n);function n(){return(0,l.Z)(this,n),e.apply(this,arguments)}return(0,c.Z)(n,[{key:"tagName",value:function(){return'div'}}]),n}(s.Z),g=n(3505),v=n(4942),m=n(1163);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;e=0}}),k=s.Z.extend({});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}function O(t){for(var e=1;e\n \n "),fallback:"\n \n "),file:''}),initialize:function(t,e){o.ZP.prototype.initialize.apply(this,arguments);var n=this.get('attributes'),i=n.src;i&&(0,m.buildBase64UrlFromSvg)((0,r.result)(this,'defaults').src)!==i&&this.set('src',i,{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,m.toLowerCase)(t.tagName)){var i=n.textTags||[];e={type:ht,editable:!1};var o=t.childNodes,a=o.length;a||delete e.editable,(0,r.forEach)(o,(function(t){var n=t.tagName;(3==t.nodeType&&''!==t.textContent.trim()||n&&i.indexOf((0,m.toLowerCase)(n))>=0)&&delete e.editable}))}return e};var pt=n(5861),gt=n(7757),vt=n.n(gt);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;e2&&void 0!==arguments[2]?arguments[2]:{};!n.fromDisable&&this.disableEditing()}},{key:"canActivate",value:function(){var t,e=this.model,n=this.rteEnabled,r=this.em,i=(null==r?void 0:r.getEditing())===e,o=!0,a=!1;if((n||!e.get('editable')||i||(a=e.isChildOf('text')))&&(o=!1,a&&!e.get('textable'))){for(var s=e.parent();s&&!s.isInstanceOf('text');)s=s.parent();s&&s.get('editable')?t=s:o=!0}return{result:o,delegate:t}}},{key:"onActive",value:(n=(0,pt.Z)(vt().mark((function t(e){var n,r,i,o,a,s,l;return vt().wrap((function(t){for(;1;)switch(t.prev=t.next){case 0:if(r=this.rte,i=this.em,o=this.canActivate(),a=o.result,s=o.delegate,a){t.next=5;break}return s&&(null==e||null===(l=e.stopPropagation)||void 0===l||l.call(e),i.setSelected(s),s.trigger('active',e)),t.abrupt("return");case 5:if(null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.lastContent=this.getContent(),!r){t.next=17;break}return t.prev=8,t.next=11,r.enable(this,this.activeRte,{event:e});case 11:this.activeRte=t.sent,t.next=17;break;case 14:t.prev=14,t.t0=t["catch"](8),i.logError(t.t0);case 17:this.toggleEvents(1);case 18:case"end":return t.stop()}}),t,this,[[8,14]])}))),function(t){return n.apply(this,arguments)})},{key:"onDisable",value:function(){this.disableEditing()}},{key:"disableEditing",value:(e=(0,pt.Z)(vt().mark((function t(){var e,n,r,i,o,a,s=arguments;return vt().wrap((function(t){for(;1;)switch(t.prev=t.next){case 0:if(e=s.length>0&&void 0!==s[0]?s[0]:{},n=this.model,r=this.rte,i=this.activeRte,o=this.em,a=n&&n.get('editable'),!r){t.next=13;break}return t.prev=4,t.next=7,r.disable(this,i);case 7:t.next=12;break;case 9:t.prev=9,t.t0=t["catch"](4),o.logError(t.t0);case 12:a&&this.getContent()!==this.lastContent&&(this.syncContent(e),this.lastContent='');case 13:this.toggleEvents();case 14:case"end":return t.stop()}}),t,this,[[4,9]])}))),function(){return e.apply(this,arguments)})},{key:"getContent",value:function(){var t=this.activeRte;return t&&'function'==typeof t.getContent?t.getContent():this.getChildrenContainer().innerHTML}},{key:"syncContent",value: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(),a=yt({fromDisable:1},t);e.set('content','',a),n.customRte?(o.length&&o.reset(null,t),e.set('content',i,a)):o.resetFromString(i,t)}}},{key:"insertComponent",value: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 a,s=o.getRangeAt(0),l=s.startContainer,c=s.startOffset,u=(0,m.getModel)(l),f=[];if(u&&null!==(a=u.is)&&void 0!==a&&a.call(u,'textnode')){var h=u.collection;h.forEach((function(e){if(e===u){var n='textnode',r=e.get('content');f.push({type:n,content:r.slice(0,c)}),f.push(t),f.push({type:n,content:r.slice(c)})}else f.push(e)}));var d=f.filter(Boolean),p=d.indexOf(t);return h.reset(d,e),h.at(p)}}return n.append(t,e)}},{key:"onInput",value:function(){var t=this.em,e='component',n=["".concat(e,":update"),"".concat(e,":input")].join(' ');t&&t.trigger(n,this.model)}},{key:"disablePropagation",value:function(t){t.stopPropagation()}},{key:"toggleEvents",value:function(t){var e=this.em,n=this.model,r=this.$el,i={on:m.on,off:m.off},o=t?'on':'off';e.setEditing(t?this:0),this.rteEnabled=!!t;var a=[this.el.ownerDocument,document];if(i.off(a,'mousedown',this.onDisable),i[o](a,'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 s=this.el;s;)s.draggable=!t,(s=s.parentNode)&&'BODY'==s.tagName&&(s=0)}}]),o}(s.Z);function xt(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,f.Z)(this,n)}}var Ot=function(t){(0,u.Z)(n,t);var e=xt(n);function n(){return(0,l.Z)(this,n),e.apply(this,arguments)}return(0,c.Z)(n,[{key:"render",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return!!e.inSvg}});function Qt(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,f.Z)(this,n)}}var te=function(t){(0,u.Z)(n,t);var e=Qt(n);function n(){return(0,l.Z)(this,n),e.apply(this,arguments)}return(0,c.Z)(n,[{key:"_createElement",value:function(t){return document.createElementNS('http://www.w3.org/2000/svg',t)}}]),n}(s.Z);function ee(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 ne(t){for(var e=1;e-1;return Ce(Ce({},o),!u||f?{reason:2}:{result:!0})},e.prototype.allById=function(){return this.componentsById},e.prototype.getById=function(t){return this.componentsById[t]||null},e.prototype.destroy=function(){var t,e=this.allById();Object.keys(e).forEach((function(t){return e[t]&&e[t].remove()})),null===(t=this.componentView)||void 0===t||t.remove(),[this.em,this.componentsById,this.componentView].forEach((function(t){return{}}))},e}(xe.O);const Pe=_e},7892:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>j,evAll:()=>k,evComponent:()=>C,evCustom:()=>S,evPfx:()=>x,evRoot:()=>O});var r=n(9050),i=n(7904),o=n(6434),a=n(1163);const s={stylePrefix:'',appendTo:'',sortable:!0,hidable:!0,hideTextnode:!0,root:'',showWrapper:!0,showHover:!0,scrollCanvas:{behavior:'smooth',block:'nearest'},scrollLayers:{behavior:'auto',block:'nearest'},highlightHover:!0,custom:!1,onInit:function(){},onRender:function(){},extend:{}};var l,c=n(2316),u=n(2169),f=n(7375),h=void 0&&(void 0).__extends||(l=function(t,e){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},l(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}l(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),d=function(t){function e(e){void 0===e&&(e={});var n=t.call(this,e)||this;n.items=[],n.opt=e;var r=e.config||{};n.config=r,n.parentView=e.parentView;var i=r.stylePrefix||'',o=r.pStylePrefix||'',a=n.collection;n.listenTo(a,'add',n.addTo),n.listenTo(a,'reset resetNavigator',n.render),n.listenTo(a,'remove',n.removeChildren),n.className="".concat(i,"layers");var s=r.em;if(r.sortable&&!n.opt.sorter){var l=s.get('Utils');n.opt.sorter=new l.Sorter({container:r.sortContainer||n.el,containerSel:".".concat(n.className),itemSel:".".concat(i,"layer"),ignoreViewChildren:1,onEndMove:function(t,e,n){var r=e.getSourceModel();s.setSelected(r,{forceChange:1}),s.trigger("".concat(f.OA,":end"),n)},avoidSelectOnEnd:1,nested:1,ppfx:o,pfx:i})}return n.$el.data('collection',a),e.parent&&n.$el.data('model',e.parent),n}return h(e,t),e.prototype.removeChildren=function(t){var e=t.viewLayer;e&&(e.remove(),delete t.viewLayer)},e.prototype.addTo=function(t){var e=this.collection.indexOf(t);this.addToCollection(t,null,e)},e.prototype.addToCollection=function(t,e,n){var r=this,i=r.parentView,o=r.opt,a=r.config,s=o.ItemView,l=o.opened,c=o.module,u=e||null,f=new s({ItemView:s,level:o.level,model:t,parentView:i,config:a,sorter:o.sorter,opened:l,module:c}),h=f.render().el;if(u)u.appendChild(h);else if(void 0!==n){var d='before';this.$el.children().length==n&&(n--,d='after'),n<0?this.$el.append(h):this.$el.children().eq(n)[d](h)}else this.$el.append(h);return this.items.push(f),h},e.prototype.remove=function(){for(var t=[],e=0;e\n ").concat(x,"\n ").concat(O,"\n "):'',"\n
\n
\n
\n ").concat(C,"\n ").concat(y?"").concat(y,""):'',"\n ").concat(m,"\n
\n
\n
\n
").concat(u||'',"
\n
").concat(k||'',"
\n
")},Object.defineProperty(e.prototype,"em",{get:function(){return this.module.em},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"ppfx",{get:function(){return this.em.getConfig().stylePrefix},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pfx",{get:function(){return this.config.stylePrefix},enumerable:!1,configurable:!0}),e.prototype.initComponent=function(){var t=this,e=this.model,n=this.config.onInit,r=e.components();this.listenTo(r,'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(n){return t.listenTo(e,n[0],n[1])})),this.$el.data('model',e),this.$el.data('collection',r),e.viewLayer=this,n.bind(this)({component:e,render:this.__render,listenTo:this.listenTo})},e.prototype.updateName=function(){this.getInputName().innerText=this.model.getName()},e.prototype.getVisibilityEl=function(){return this.eyeEl||(this.eyeEl=this.$el.children(".".concat(this.pfx,"layer-vis"))),this.eyeEl},e.prototype.updateVisibility=function(){var t=this,e=t.pfx,n=t.model,r=t.module,i="".concat(e,"layer-hidden"),o=!r.isVisible(n)?'addClass':'removeClass';this.$el[o](i),this.getVisibilityEl()[o]("".concat(e,"layer-off"))},e.prototype.toggleVisibility=function(t){null==t||t.stopPropagation();var e=this.module,n=this.model;e.setVisible(n,!e.isVisible(n))},e.prototype.handleEdit=function(t){null==t||t.stopPropagation();var e=this,n=e.em,r=e.$el,i=e.clsNoEdit,o=e.clsEdit,a=this.getInputName();a[v]='true',a.focus(),document.execCommand('selectAll',!1),n.setEditing(!0),r.find(".".concat(this.inputNameCls)).removeClass(i).addClass(o)},e.prototype.handleEditKey=function(t){t.stopPropagation(),((0,a.isEscKey)(t)||(0,a.isEnterKey)(t))&&this.handleEditEnd(t)},e.prototype.handleEditEnd=function(t){null==t||t.stopPropagation();var e=this,n=e.em,r=e.$el,i=e.clsNoEdit,o=e.clsEdit,a=this.getInputName(),s=a.textContent;a.scrollLeft=0,a[v]='false',this.setName(s,{component:this.model,propName:'custom-name'}),n.setEditing(!1),r.find(".".concat(this.inputNameCls)).addClass(i).removeClass(o)},e.prototype.setName=function(t,e){var n=e.propName;this.model.set(n,t)},e.prototype.getInputName=function(){return this.inputName||(this.inputName=this.el.querySelector(".".concat(this.inputNameCls))),this.inputName},e.prototype.updateOpening=function(){var t=this,e=t.$el,n=t.model,r=t.pfx,i='open',o="".concat(r,"layer-open"),a=this.getCaret();this.module.isOpen(n)?(e.addClass(i),a.addClass(o)):(e.removeClass(i),a.removeClass(o))},e.prototype.toggleOpening=function(t){var e=this.model,n=this.module;null==t||t.stopImmediatePropagation(),e.get('components').length&&n.setOpen(e,!n.isOpen(e))},e.prototype.handleSelect=function(t){null==t||t.stopPropagation();var e=this.module,n=this.model;e.setLayerData(n,{selected:!0},{event:t})},e.prototype.handleHover=function(t){null==t||t.stopPropagation();var e=this.module,n=this.model;e.setLayerData(n,{hovered:!0})},e.prototype.handleHoverOut=function(t){null==t||t.stopPropagation();var e=this.module,n=this.model;e.setLayerData(n,{hovered:!1})},e.prototype.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(f.OA,":start"),t)},n.onMoveClb=function(t){return e.trigger(f.OA,t)},n.startSort(t.target))},e.prototype.updateStatus=function(){u.Z.prototype.updateStatus.apply(this,[{avoidHover:!this.config.highlightHover,noExtHl:1}])},e.prototype.checkChildren=function(){var t=this,e=t.model,n=t.clsNoChild,r=t.$el,i=t.module,o=i.getComponents(e).length,a=r.children(".".concat(this.clsTitleC)).children(".".concat(this.clsTitle)),s=this.cnt;s||(s=r.children('[data-count]').get(0),this.cnt=s),a[o?'removeClass':'addClass'](n),s&&(s.innerHTML=o||''),!o&&i.setOpen(e,!1)},e.prototype.getCaret=function(){return this.caret&&this.caret.length||(this.caret=this.$el.children(".".concat(this.clsTitleC)).find(".".concat(this.clsCaret))),this.caret},e.prototype.setRoot=function(t){t=(0,r.isString)(t)?this.em.getWrapper().find(t)[0]:t;var e=(0,a.getModel)(t,0);e&&(this.stopListening(),this.model=e,this.initComponent(),this._rendered&&this.render())},e.prototype.updateLayerable=function(){(this.parentView||this).render()},e.prototype.__clearItems=function(){var t;null===(t=this.items)||void 0===t||t.remove()},e.prototype.remove=function(){for(var t=[],e=0;e{"use strict";n.r(e),n.d(e,{default:()=>j,evAll:()=>m,evPageAdd:()=>x,evPageAddBefore:()=>O,evPageRemove:()=>C,evPageRemoveBefore:()=>S,evPageSelect:()=>b,evPageSelectBefore:()=>w,evPageUpdate:()=>k,evPfx:()=>y});var r,i=n(9050),o=n(1163),a=n(7904),s=n(6434),l=n(2316),c=n(3560),u=n(6840),f=void 0&&(void 0).__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)});const h=function(t){function e(e,n){void 0===n&&(n={});var r=t.call(this,e,n)||this,i=n.em,o={};r.em=i,e.frames||(o.component=e.component,o.styles=e.styles,['component','styles'].map((function(t){return r.unset(t)})));var a=e.frames||[o],s=new c.Z(i.get('Canvas'),null==a?void 0:a.map((function(t){return new u.Z(i.get('Canvas'),t)})));s.page=r,r.set('frames',s),!r.getId()&&r.set('id',null==i?void 0:i.get('PageManager')._createId());var l=null==i?void 0:i.get('UndoManager');return null==l||l.add(s),r}return f(e,t),e.prototype.defaults=function(){return{frames:[],_undo:!0}},e.prototype.onRemove=function(){this.getFrames().reset()},e.prototype.getFrames=function(){return this.get('frames')},e.prototype.getId=function(){return this.id},e.prototype.getName=function(){return this.get('name')},e.prototype.setName=function(t){return this.set({name:t})},e.prototype.getAllFrames=function(){return this.getFrames().models||[]},e.prototype.getMainFrame=function(){return this.getFrames().at(0)},e.prototype.getMainComponent=function(){var t=this.getMainFrame();return null==t?void 0:t.getComponent()},e.prototype.toJSON=function(t){void 0===t&&(t={});var e=l.Model.prototype.toJSON.call(this,t),n=(0,i.result)(this,'defaults');return(0,i.forEach)(e,(function(t,n){0===n.indexOf('_')&&delete e[n]})),(0,i.forEach)(n,(function(t,n){e[n]===t&&delete e[n]})),e},e}(l.Model);var d=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),p=void 0&&(void 0).__assign||function(){return p=Object.assign||function(t){for(var e,n=1,r=arguments.length;n{"use strict";n.r(e),n.d(e,{default:()=>B,evAdd:()=>Z,evAll:()=>M,evCustom:()=>F,evPfx:()=>R,evRemove:()=>N,evRemoveBefore:()=>I,evState:()=>V,evUpdate:()=>L});var r=n(9050),i=n(1163),o=n(9714),a=n(2316);const s={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:!1,custom:!1};var l,c=n(5963),u=n(966),f=void 0&&(void 0).__extends||(l=function(t,e){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},l(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}l(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return f(e,t),e.prototype.defaults=function(){return{name:'',label:''}},e.prototype.getName=function(){return this.get('name')},e.prototype.getLabel=function(){return this.get('label')||this.getName()},e}(a.Model);const d=h;h.prototype.idAttribute='name';var p=n(7539),g=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),v=void 0&&(void 0).__makeTemplateObject||function(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t},m='contentEditable';const y=function(t){function e(e){void 0===e&&(e={});var n=t.call(this,e)||this,r=e.config||{};return n.config=r,n.module=e.module,n.coll=e.coll||null,n.pfx=r.stylePrefix||'',n.ppfx=r.pStylePrefix||'',n.em=r.em,n.listenTo(n.model,'change:active',n.updateStatus),n}return g(e,t),e.prototype.template=function(){var t=this,e=t.pfx,n=t.model,r=t.config,i=n.get('label')||'';return(0,p.Z)(b||(b=v(["\n \n ","\n $"," \n "],["\n \n ","\n $"," \n "])),e,e,e,i,e,e,r.iconTagRemove)},e.prototype.events=function(){return{'click [data-tag-remove]':'removeTag','click [data-tag-status]':'changeStatus','dblclick [data-tag-name]':'startEditTag','focusout [data-tag-name]':'endEditTag'}},e.prototype.getInputEl=function(){return this.inputEl||(this.inputEl=this.el.querySelector('[data-tag-name]')),this.inputEl},e.prototype.startEditTag=function(){var t=this.em,e=this.getInputEl();e[m]='true',e.focus(),t&&t.setEditing(1)},e.prototype.endEditTag=function(){var t=this.model,e=this.getInputEl(),n=e.textContent,r=this.em,i=r&&r.get('SelectorManager');if(e[m]='false',r&&r.setEditing(0),i){var o=i.escapeName(n);i.get(o)?e.innerText=t.get('label'):t.set({name:o,label:n})}},e.prototype.changeStatus=function(){var t=this.model;t.set('active',!t.get('active'))},e.prototype.removeTag=function(){this.module.removeSelected(this.model)},e.prototype.updateStatus=function(){var t=this,e=t.model,n=t.$el,r=t.config,i=r.iconTagOn,o=r.iconTagOff,a=n.find('[data-tag-status]');e.get('active')?(a.html(i),n.removeClass('opac50')):(a.html(o),n.addClass('opac50'))},e.prototype.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},e}(a.View);var b,w=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),k=void 0&&(void 0).__makeTemplateObject||function(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t};const x=function(t){function e(e){void 0===e&&(e={});var n=t.call(this,e)||this;n.config=e.config||{},n.pfx=n.config.stylePrefix||'',n.ppfx=n.config.pStylePrefix||'',n.className=n.pfx+'tags',n.stateInputId=n.pfx+'states',n.stateInputC=n.pfx+'input-c',n.states=n.config.states||[];var i=n.config.em,o=n.collection;n.target=i;var a=i.get('SelectorManager');n.module=a,n.em=i,n.componentChanged=(0,r.debounce)(n.componentChanged.bind(n),0),n.checkSync=(0,r.debounce)(n.checkSync.bind(n),0);return n.listenTo(i,'component:toggled component:update:classes',n.componentChanged),n.listenTo(i,'styleManager:update',n.componentChanged),n.listenTo(i,'component:update:classes change:state',n.__handleStateChange),n.listenTo(i,'styleable:change change:device',n.checkSync),n.listenTo(o,'add',n.addNew),n.listenTo(o,'reset',n.renderClasses),n.listenTo(o,'remove',n.tagRemoved),n.listenTo(a.getAll(),a.events.state,(0,r.debounce)((function(){return n.renderStates()}),0)),n.delegateEvents(),n}return w(e,t),e.prototype.template=function(t){var e=t.labelInfo,n=t.labelHead,r=t.iconSync,i=t.iconAdd,o=t.pfx,a=t.ppfx;return(0,p.Z)(O||(O=k(["
\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
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n $"," \n $"," \n
\n
\n
",":
\n
\n
"])),o,o,o,o,n,o,o,o,a,a,a,o,a,a,o,a,o,o,o,o,o,i,o,o,r,o,o,e,o)},e.prototype.events=function(){return{'change [data-states]':'stateChanged','click [data-add]':'startNewTag','focusout [data-input]':'endNewTag','keyup [data-input]':'onInputKeyUp','click [data-sync-style]':'syncStyle'}},e.prototype.syncStyle=function(){var t,e=this.em,n=this.getTarget(),r=e.get('CssComposer'),i=this.getCommonSelectors({opts:{noDisabled:1}}),o=e.get('state'),a=e.getCurrentMedia(),s=[],l=r.get(i,o,a)||r.add(i,o,a);this.getTargets().forEach((function(e){var n=r.getIdRule(e.getId(),{state:o,mediaText:a});t=n.getStyle(),n.setStyle({}),s.push(n)})),t&&l.addStyle(t),e.trigger('component:toggled'),e.trigger('component:sync-style',{component:n,selectors:i,mediaText:a,rule:l,ruleComponents:s,state:o})},e.prototype.tagRemoved=function(t){this.updateStateVis()},e.prototype.addNew=function(t){this.addToClasses(t)},e.prototype.startNewTag=function(){var t,e;null===(t=this.$addBtn)||void 0===t||t.css({display:'none'}),null===(e=this.$input)||void 0===e||e.show().focus()},e.prototype.endNewTag=function(){var t,e;null===(t=this.$addBtn)||void 0===t||t.css({display:''}),null===(e=this.$input)||void 0===e||e.hide().val('')},e.prototype.onInputKeyUp=function(t){var e;13===t.keyCode?(t.preventDefault(),this.addNewTag(null===(e=this.$input)||void 0===e?void 0:e.val())):27===t.keyCode&&this.endNewTag()},e.prototype.checkStates=function(){var t=this.em.getState(),e=this.getStates();e&&e.val(t)},e.prototype.componentChanged=function(t){var e=(void 0===t?{}:t).targets;this.updateSelection(e)},e.prototype.updateSelection=function(t){var e=t||this.getTargets(),n=[];return(e=(0,r.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},e.prototype.getCommonSelectors=function(t){var e=void 0===t?{}:t,n=e.targets,r=e.opts,i=void 0===r?{}:r,o=n||this.getTargets();return this.module.__getCommonSelectors(o,i)},e.prototype._commonSelectors=function(){for(var t,e=[],n=0;n",""],["",""])),i,t);else{var c=null==t?void 0:t.getSelectors();if(!c)return'';var u=c.getStyleable(),f=a.get('state'),h=t.getId?(0,p.Z)(S||(S=k(["","\n #",""],["","\n #",""])),i,t.getName(),i,t.getId()):'';e=(e=this.collection.getFullString(u))?(0,p.Z)(_||(_=k(["",""],["",""])),i,e):t.get('selectorsAdd')||h,e=l&&h?h:e,e+=f?(0,p.Z)(P||(P=k([":",""],[":",""])),i,f):'',e=s?s({result:e,state:f,target:t}):e}return e&&"").concat(e,"")},e.prototype.stateChanged=function(t){var e=this.em,n=t.target.value;e.set('state',n)},e.prototype.addNewTag=function(t){var e=t.trim();e&&(this.module.addSelected({label:e}),this.endNewTag())},e.prototype.addToClasses=function(t,e){var n=e,r=this.getClasses(),i=new y({model:t,config:this.config,coll:this.collection,module:this.module}).render().el;return n?n.appendChild(i):r.append(i),i},e.prototype.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)},e.prototype.getClasses=function(){return this.$el.find('[data-selectors]')},e.prototype.getStates=function(){if(!this.$states){var t=this.$el.find('[data-states]');this.$states=t[0]&&t}return this.$states},e.prototype.getStatesC=function(){return this.$statesC||(this.$statesC=this.$el.find('#'+this.stateInputC)),this.$statesC},e.prototype.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()},e.prototype.render=function(){var t=this,e=t.em,n=t.pfx,r=t.ppfx,i=t.config,o=t.$el,a=t.el,s=i.render,l={iconSync:i.iconSync,iconAdd:i.iconAdd,labelHead:e.t('selectorManager.label'),labelInfo:e.t('selectorManager.selected'),ppfx:r,pfx:n,el:a};o.html(this.template(l));var c=s&&s(l);return c&&c!==a&&o.empty().append(c),this.$input=o.find('[data-input]'),this.$addBtn=o.find('[data-add]'),this.$classes=o.find('#'+n+'tags-c'),this.$btnSyncEl=o.find('[data-sync-style]'),this.$input.hide(),this.renderStates(),this.renderClasses(),o.attr('class',"".concat(this.className," ").concat(r,"one-bg ").concat(r,"two-color")),this},e}(a.View);var O,C,S,_,P,T=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),E=void 0&&(void 0).__assign||function(){return E=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=0})):e.slice(1).reduce((function(e,n){return t.__common(e,n)}),e[0]):[]},e}(o.Z)},5963:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r,i=n(9050),o=n(2316),a=void 0&&(void 0).__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),s=1,l=2,c=function(t){function e(n,r){void 0===r&&(r={});var i=t.call(this,n,r)||this,o=r.config,a=void 0===o?{}:o,s=i.get('name'),l=i.get('label');s?l||i.set('label',s):i.set('name',l);var c=i.get('name'),u=a.escapeName,f=u?u(c):e.escapeName(c);return i.set('name',f),i.em=r.em,i}return a(e,t),e.prototype.defaults=function(){return{name:'',label:'',type:s,active:!0,private:!1,protected:!1,_undo:!0}},e.prototype.isId=function(){return this.get('type')===l},e.prototype.isClass=function(){return this.get('type')===s},e.prototype.getFullName=function(t){void 0===t&&(t={});var e=t.escape,n=this.get('name'),r='';switch(this.get('type')){case s:r='.';break;case l:r='#'}return r+(e?e(n):n)},e.prototype.toString=function(){return this.getFullName()},e.prototype.getLabel=function(){return this.get('label')},e.prototype.setLabel=function(t){return this.set('label',t)},e.prototype.getActive=function(){return this.get('active')},e.prototype.setActive=function(t){return this.set('active',t)},e.prototype.toJSON=function(t){void 0===t&&(t={});var e=this.em,n=o.Model.prototype.toJSON.call(this,[t]),r=(0,i.result)(this,'defaults');if(e&&e.getConfig().avoidDefaults){(0,i.forEach)(r,(function(t,e){n[e]===t&&delete n[e]})),n.label===n.name&&delete n.label;var a=(0,i.keys)(n).length;1===a&&n.name&&(n=n.name),2===a&&n.name&&n.type&&(n=this.getFullName())}return n},e.escapeName=function(t){return"".concat(t).trim().replace(/([^a-z0-9\w-\:]+)/gi,'-')},e.TYPE_CLASS=s,e.TYPE_ID=l,e}(o.Model);const u=c;c.prototype.idAttribute='name'},966:(t,e,n)=>{"use strict";n.d(e,{Z:()=>u});var r,i=n(9050),o=n(2316),a=n(5963),s=void 0&&(void 0).__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),l=function(t,e){return t.reduce((function(n,r,i){return n.concat(l(t.slice(i+1),"".concat(e).concat(r)))}),[e])},c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return s(e,t),e.prototype.modelId=function(t){return"".concat(t.name,"_").concat(t.type||a.Z.TYPE_CLASS)},e.prototype.getStyleable=function(){return(0,i.filter)(this.models,(function(t){return t.get('active')&&!t.get('private')}))},e.prototype.getValid=function(t){var e=(void 0===t?{}:t).noDisabled;return(0,i.filter)(this.models,(function(t){return!t.get('private')})).filter((function(t){return e?t.get('active'):1}))},e.prototype.getFullString=function(t,e){void 0===e&&(e={});var n=[];return(t||this).forEach((function(t){return n.push(t.getFullName(e))})),e.sort&&n.sort(),n.join('').trim()},e.prototype.getFullName=function(t){void 0===t&&(t={});var 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(l(i.slice(e+1),t))})):r=i,n?r:e?r.join(','):r.join('')},e}(o.Collection);const u=c;c.prototype.model=a.Z},7539:(t,e,n)=>{"use strict";n.d(e,{Z:()=>i});var r=n(1163);function i(t){for(var e=[],n=1;n{"use strict";n.r(e),n.d(e,{appendStyles:()=>d,buildBase64UrlFromSvg:()=>U,camelCase:()=>b,capitalize:()=>I,createId:()=>z,deepMerge:()=>T,escape:()=>P,find:()=>_,getElRect:()=>j,getElement:()=>x,getGlobal:()=>l,getKeyChar:()=>M,getKeyCode:()=>D,getModel:()=>E,getPointerEvent:()=>A,getUiClass:()=>h,getUnitFromValue:()=>m,getViewEl:()=>B,hasDnd:()=>k,hasWin:()=>s,isCommentNode:()=>C,isComponent:()=>F,isDef:()=>a,isEmptyObj:()=>N,isEnterKey:()=>Z,isEscKey:()=>R,isObject:()=>L,isRule:()=>V,isTaggableNode:()=>S,isTextNode:()=>O,matches:()=>f,normalizeFloat:()=>w,off:()=>v,on:()=>g,setViewEl:()=>H,shallowDiff:()=>p,toLowerCase:()=>c,upFirst:()=>y});var r=n(9050),i=void 0&&(void 0).__assign||function(){return i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=0?a!==s&&(n[o]=s):n[o]=null}for(var o in e)e.hasOwnProperty(o)&&(0,r.isUndefined)(t[o])&&(n[o]=e[o]);return n},g=function(t,e,n,r){var i=e.split(/\s+/);t=t instanceof Array?t:[t];for(var o=function(e){t.forEach((function(t){return t&&t.addEventListener(i[e],n,r)}))},a=0;a/g,'>').replace(/"/g,'"').replace(/'/g,''').replace(/`/g,'`')},T=function(){for(var t=[],e=0;e{var e=function(t){"use strict";var e,n=Object.prototype,r=n.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",s=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),a=new T(r||[]);return o._invoke=function(t,e,n){var r=f;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;1;){var a=n.delegate;if(a){var s=S(a,n);if(s){if(s===g)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)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:h,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,a),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 f="suspendedStart",h="suspendedYield",d="executing",p="completed",g={};function v(){}function m(){}function y(){}var b={};b[o]=function(){return this};var w=Object.getPrototypeOf,k=w&&w(w(E([])));k&&k!==n&&r.call(k,o)&&(b=k);var x=y.prototype=v.prototype=Object.create(b);function O(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function C(t,e){function n(i,o,a,s){var l=u(t[i],t,o);if("throw"!==l.type){var c=l.arg,f=c.value;return f&&"object"==typeof f&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(f).then((function(t){c.value=t,a(c)}),(function(t){return n("throw",t,a,s)}))}s(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 _(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 P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(_,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,a=function n(){for(;++i=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var l=r.call(a,"catchLoc"),c=r.call(a,"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),P(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;P(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}(1?t.exports:0);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})},7326:(t,e,n)=>{"use strict";function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}n.d(e,{Z:()=>r})},5861:(t,e,n)=>{"use strict";function r(t,e,n,r,i,o,a){try{var s=t[o](a),l=s.value}catch(t){return void n(t)}s.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 a=t.apply(e,n);function s(t){r(a,i,o,s,l,"next",t)}function l(t){r(a,i,o,s,l,"throw",t)}s(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}}),Object.defineProperty(t,"prototype",{writable:!1}),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})},2963:(t,e,n)=>{"use strict";n.d(e,{Z:()=>o});var r=n(1002),i=n(7326);function o(t,e){if(e&&("object"===(0,r.Z)(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return(0,i.Z)(t)}},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=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,i,o=[],a=!0,s=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(o.push(r.value),!e||o.length!==e);a=!0);}catch(t){s=!0,i=t}finally{try{a||null==n["return"]||n["return"]()}finally{if(s)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:()=>Ze,all:()=>en,allKeys:()=>vt,any:()=>nn,assign:()=>Zt,before:()=>Le,bind:()=>Oe,bindAll:()=>_e,chain:()=>be,chunk:()=>Fn,clone:()=>Ft,collect:()=>Ke,compact:()=>Tn,compose:()=>Re,constant:()=>J,contains:()=>rn,countBy:()=>vn,create:()=>It,debounce:()=>Ae,default:()=>Un,defaults:()=>Lt,defer:()=>Ee,delay:()=>Te,detect:()=>$e,difference:()=>jn,drop:()=>_n,each:()=>Ge,escape:()=>se,every:()=>en,extend:()=>Rt,extendOwn:()=>Zt,filter:()=>Qe,find:()=>$e,findIndex:()=>Ve,findKey:()=>Ie,findLastIndex:()=>Be,findWhere:()=>qe,first:()=>Sn,flatten:()=>En,foldl:()=>Xe,foldr:()=>Je,forEach:()=>Ge,functions:()=>Dt,get:()=>Ut,groupBy:()=>pn,has:()=>Wt,head:()=>Sn,identity:()=>$t,include:()=>rn,includes:()=>rn,indexBy:()=>gn,indexOf:()=>Ue,initial:()=>Cn,inject:()=>Xe,intersection:()=>Rn,invert:()=>At,invoke:()=>on,isArguments:()=>K,isArray:()=>$,isArrayBuffer:()=>N,isBoolean:()=>T,isDataView:()=>W,isDate:()=>M,isElement:()=>E,isEmpty:()=>lt,isEqual:()=>gt,isError:()=>Z,isFinite:()=>Y,isFunction:()=>V,isMap:()=>St,isMatch:()=>ct,isNaN:()=>X,isNull:()=>_,isNumber:()=>D,isObject:()=>S,isRegExp:()=>R,isSet:()=>Pt,isString:()=>A,isSymbol:()=>L,isTypedArray:()=>it,isUndefined:()=>P,isWeakMap:()=>_t,isWeakSet:()=>Tt,iteratee:()=>Xt,keys:()=>st,last:()=>Pn,lastIndexOf:()=>We,map:()=>Ke,mapObject:()=>Qt,matcher:()=>qt,matches:()=>qt,max:()=>ln,memoize:()=>Pe,methods:()=>Dt,min:()=>cn,mixin:()=>Bn,negate:()=>Me,noop:()=>te,now:()=>ie,object:()=>Nn,omit:()=>On,once:()=>Ne,pairs:()=>jt,partial:()=>xe,partition:()=>mn,pick:()=>xn,pluck:()=>an,property:()=>Gt,propertyOf:()=>ee,random:()=>re,range:()=>In,reduce:()=>Xe,reduceRight:()=>Je,reject:()=>tn,rest:()=>_n,restArguments:()=>C,result:()=>ve,sample:()=>un,select:()=>Qe,shuffle:()=>fn,size:()=>wn,some:()=>nn,sortBy:()=>hn,sortedIndex:()=>He,tail:()=>_n,take:()=>Sn,tap:()=>Vt,template:()=>ge,templateSettings:()=>ce,throttle:()=>je,times:()=>ne,toArray:()=>bn,toPath:()=>Bt,transpose:()=>Zn,unescape:()=>le,union:()=>Mn,uniq:()=>Dn,unique:()=>Dn,uniqueId:()=>ye,unzip:()=>Zn,values:()=>Et,where:()=>sn,without:()=>An,wrap:()=>De,zip:()=>Ln});var r={};n.r(r),n.d(r,{VERSION:()=>i,after:()=>Ze,all:()=>en,allKeys:()=>vt,any:()=>nn,assign:()=>Zt,before:()=>Le,bind:()=>Oe,bindAll:()=>_e,chain:()=>be,chunk:()=>Fn,clone:()=>Ft,collect:()=>Ke,compact:()=>Tn,compose:()=>Re,constant:()=>J,contains:()=>rn,countBy:()=>vn,create:()=>It,debounce:()=>Ae,default:()=>Hn,defaults:()=>Lt,defer:()=>Ee,delay:()=>Te,detect:()=>$e,difference:()=>jn,drop:()=>_n,each:()=>Ge,escape:()=>se,every:()=>en,extend:()=>Rt,extendOwn:()=>Zt,filter:()=>Qe,find:()=>$e,findIndex:()=>Ve,findKey:()=>Ie,findLastIndex:()=>Be,findWhere:()=>qe,first:()=>Sn,flatten:()=>En,foldl:()=>Xe,foldr:()=>Je,forEach:()=>Ge,functions:()=>Dt,get:()=>Ut,groupBy:()=>pn,has:()=>Wt,head:()=>Sn,identity:()=>$t,include:()=>rn,includes:()=>rn,indexBy:()=>gn,indexOf:()=>Ue,initial:()=>Cn,inject:()=>Xe,intersection:()=>Rn,invert:()=>At,invoke:()=>on,isArguments:()=>K,isArray:()=>$,isArrayBuffer:()=>N,isBoolean:()=>T,isDataView:()=>W,isDate:()=>M,isElement:()=>E,isEmpty:()=>lt,isEqual:()=>gt,isError:()=>Z,isFinite:()=>Y,isFunction:()=>V,isMap:()=>St,isMatch:()=>ct,isNaN:()=>X,isNull:()=>_,isNumber:()=>D,isObject:()=>S,isRegExp:()=>R,isSet:()=>Pt,isString:()=>A,isSymbol:()=>L,isTypedArray:()=>it,isUndefined:()=>P,isWeakMap:()=>_t,isWeakSet:()=>Tt,iteratee:()=>Xt,keys:()=>st,last:()=>Pn,lastIndexOf:()=>We,map:()=>Ke,mapObject:()=>Qt,matcher:()=>qt,matches:()=>qt,max:()=>ln,memoize:()=>Pe,methods:()=>Dt,min:()=>cn,mixin:()=>Bn,negate:()=>Me,noop:()=>te,now:()=>ie,object:()=>Nn,omit:()=>On,once:()=>Ne,pairs:()=>jt,partial:()=>xe,partition:()=>mn,pick:()=>xn,pluck:()=>an,property:()=>Gt,propertyOf:()=>ee,random:()=>re,range:()=>In,reduce:()=>Xe,reduceRight:()=>Je,reject:()=>tn,rest:()=>_n,restArguments:()=>C,result:()=>ve,sample:()=>un,select:()=>Qe,shuffle:()=>fn,size:()=>wn,some:()=>nn,sortBy:()=>hn,sortedIndex:()=>He,tail:()=>_n,take:()=>Sn,tap:()=>Vt,template:()=>ge,templateSettings:()=>ce,throttle:()=>je,times:()=>ne,toArray:()=>bn,toPath:()=>Bt,transpose:()=>Zn,unescape:()=>le,union:()=>Mn,uniq:()=>Dn,unique:()=>Dn,uniqueId:()=>ye,unzip:()=>Zn,values:()=>Et,where:()=>sn,without:()=>An,wrap:()=>De,zip:()=>Ln});var i='1.13.1',o='object'==typeof self&&self.self===self&&self||'object'==typeof global&&global.global===global&&global||Function('return this')()||{},a=Array.prototype,s=Object.prototype,l='undefined'!=typeof Symbol?Symbol.prototype:null,c=a.push,u=a.slice,f=s.toString,h=s.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,k=!{toString:null}.propertyIsEnumerable('toString'),x=['valueOf','isPrototypeOf','toString','propertyIsEnumerable','hasOwnProperty','toLocaleString'],O=Math.pow(2,53)-1;function C(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<=O}}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(f.call(t))}:J(!1),ot=tt('length');function at(t,e){e=function(t){for(var e={},n=t.length,r=0;r':'>','"':'"',"'":''','`':'`'},se=oe(ae),le=oe(At(ae)),ce=ut.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var ue=/(.)^/,fe={"'":"'",'\\':'\\','\r':'r','\n':'n','\u2028':'u2028','\u2029':'u2029'},he=/\\|'|\r|\n|\u2028|\u2029/g;function de(t){return'\\'+fe[t]}var pe=/^\s*(\w|\$)+\s*$/;function ge(t,e,n){!e&&n&&(e=n),e=Lt({},e,ut.templateSettings);var r=RegExp([(e.escape||ue).source,(e.interpolate||ue).source,(e.evaluate||ue).source].join('|')+'|$','g'),i=0,o="__p+='";t.replace(r,(function(e,n,r,a,s){return o+=t.slice(i,s).replace(he,de),i=s+e.length,n?o+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?o+="'+\n((__t=("+r+"))==null?'':__t)+\n'":a&&(o+="';\n"+a+"\n__p+='"),e})),o+="';\n";var a,s=e.variable;if(s){if(!pe.test(s))throw new Error('variable is not a bare identifier: '+s)}else o='with(obj||{}){\n'+o+'}\n',s='obj';o="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+o+'return __p;\n';try{a=new Function(s,'_',o)}catch(t){throw t.source=o,t}var l=function(t){return a.call(this,t,ut)};return l.source='function('+s+'){\n'+o+'}',l}function ve(t,e,n){var r=(e=Ht(e)).length;if(!r)return V(n)?n.call(t):n;for(var i=0;i1)Se(s,e-1,n,r),i=r.length;else for(var l=0,c=s.length;le?(r&&(clearTimeout(r),r=null),s=c,a=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(l,u)),a};return c.cancel=function(){clearTimeout(r),s=0,r=i=o=null},c}function Ae(t,e,n){var r,i,o,a,s,l=function(){var c=ie()-i;e>c?r=setTimeout(l,e-c):(r=null,n||(a=t.apply(s,o)),r||(o=s=null))},c=C((function(c){return s=this,o=c,i=ie(),r||(r=setTimeout(l,e),n&&(a=t.apply(s,o))),a}));return c.cancel=function(){clearTimeout(r),r=o=s=null},c}function De(t,e){return xe(e,t)}function Me(t){return function(){return!t.apply(this,arguments)}}function Re(){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 Ze(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function Le(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}const Ne=xe(Le,2);function Ie(t,e,n){e=Jt(e,n);for(var r,i=st(t),o=0,a=i.length;o0?0:i-1;o>=0&&o0?a=o>=0?o:Math.max(o+s,a):s=o>=0?Math.min(o+1,s):o+s+1;else if(n&&o&&s)return r[o=n(r,i)]===i?o:-1;if(i!=i)return(o=e(u.call(r,a,s),X))>=0?o+a:-1;for(o=t>0?a:s-1;o>=0&&o0?0:a-1;for(i||(r=e[o?o[s]:s],s+=t);s>=0&&s=3;return e(t,Kt(n,i,4),r,o)}}const Xe=Ye(1),Je=Ye(-1);function Qe(t,e,n){var r=[];return e=Jt(e,n),Ge(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r}function tn(t,e,n){return Qe(t,Me(Jt(e)),n)}function en(t,e,n){e=Jt(e,n);for(var r=!Ce(t)&&st(t),i=(r||t).length,o=0;o=0}const on=C((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]),Ke(t,(function(t){var o=i;if(!o){if(r&&r.length&&(t=zt(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))}));function an(t,e){return Ke(t,Gt(e))}function sn(t,e){return Qe(t,qt(e))}function ln(t,e,n){var r,i,o=-1/0,a=-1/0;if(null==e||'number'==typeof e&&'object'!=typeof t[0]&&null!=t)for(var s=0,l=(t=Ce(t)?t:Et(t)).length;so&&(o=r);else e=Jt(e,n),Ge(t,(function(t,n,r){((i=e(t,n,r))>a||i===-1/0&&o===-1/0)&&(o=t,a=i)}));return o}function cn(t,e,n){var r,i,o=1/0,a=1/0;if(null==e||'number'==typeof e&&'object'!=typeof t[0]&&null!=t)for(var s=0,l=(t=Ce(t)?t:Et(t)).length;sr||void 0===n)return 1;if(n1&&(r=Kt(r,e[1])),e=vt(t)):(r=kn,e=Se(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(n=e[1])):(e=Ke(Se(e,!1,!1),String),r=function(t,n){return!rn(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 Sn(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 _n(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]:_n(t,Math.max(0,t.length-e))}function Tn(t){return Qe(t,Boolean)}function En(t,e){return Se(t,e,!1)}const jn=C((function(t,e){return e=Se(e,!0,!0),Qe(t,(function(t){return!rn(e,t)}))})),An=C((function(t,e){return jn(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=[],a=0,s=ot(t);a{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:()=>F});var t=n(4942),e=n(9050),i=n(2579),o=n(7539);const a={stylePrefix:'gjs-',components:'',style:'',fromElement:!1,projectData:null,noticeOnUnload:!0,showOffsets:!1,showOffsetsSelected:!1,forceClass:!0,height:'900px',width:'100%',log:['warning','error'],baseCss:'',protectedCss:'* { box-sizing: border-box; } body {margin: 0;}',canvasCss:'',defaultCommand:'select-comp',showToolbar:!0,showDevices:!0,devicePreviewMode:!1,mediaCondition:'max-width',tagVarStart:'{[ ',tagVarEnd:' ]}',keepEmptyTextNodes:!1,jsInHtml:!0,nativeDnD:!0,multipleSelection:!0,optsHtml:{},optsCss:{},avoidInlineStyle:!0,avoidDefaults:!0,clearStyles:!1,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:'',chevron:'',eye:'',eyeOff:''},el:'',i18n:{},undoManager:{},assetManager:{},canvas:{},layers:{},storageManager:{},richTextEditor:{},domComponents:{},modal:{},codeManager:{},panels:{},commands:{},cssComposer:{},selectorManager:{},deviceManager:{},styleManager:{},blockManager:{},traitManager:{},textViewCode:'Code',keepUnusedStyles:!1,multiFrames:!1,customUI:!1};var s=n(2316),l=n.n(s);var c,u=n(1163),f=void 0&&(void 0).__extends||(c=function(t,e){return c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},c(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}c(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return f(e,t),e}(s.Model);const d=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return f(n,t),n.prototype.getByComponent=function(t){var e=this;return this.filter((function(n){return e.getComponent(n)===t}))[0]},n.prototype.addComponent=function(t,n){var r=this,i=((0,e.isArray)(t)?t:[t]).filter((function(t){return!r.hasComponent(t)})).map((function(t){return new h({component:t})}))[0];return this.push(i,n)},n.prototype.getComponent=function(t){return t.get('component')},n.prototype.hasComponent=function(t){var e=this.getByComponent(t);return e&&this.contains(e)},n.prototype.lastComponent=function(){var t=this.last();return t&&this.getComponent(t)},n.prototype.allComponents=function(){var t=this;return this.map((function(e){return t.getComponent(e)})).filter((function(t){return t}))},n.prototype.removeComponent=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)},n}(s.Collection);var p=void 0&&(void 0).__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),g=void 0&&(void 0).__assign||function(){return g=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.getStepsBeforeSave()&&this.store().catch((function(e){return t.logError(e)}))},n.prototype.loadModule=function(t){var n=this.config,r=new(t.default||t)(this),i=r.name.charAt(0).toLowerCase()+r.name.slice(1),o=(0,e.isUndefined)(n[i])?n[r.name]:n[i],a=!0===o?{}:o||{};return a.pStylePrefix=n.pStylePrefix||'',(0,e.isUndefined)(o)||o||(a._disable=1),r.storageKey&&r.store&&r.load&&this.storables.push(r),a.em=this,r.init(g({},a)),!r.private&&this.set(r.name,r),r.onLoad&&this.toLoad.push(r),this.modules.push(r),this},n.prototype.tsLoadModule=function(t){var e=new(t.default||t)(this);return e.storageKey&&e.store&&e.load&&this.storables.push(e),!e.private&&this.set(e.name,e),e.onLoad&&this.toLoad.push(e),this.modules.push(e),this},n.prototype.init=function(t,e){void 0===e&&(e={}),this.destroyed&&(this.initialize(e),this.destroyed=!1),this.set('Editor',t)},n.prototype.getEditor=function(){return this.get('Editor')},n.prototype.handleUpdates=function(t,e,n){var r=this;void 0===n&&(n={}),this.__skip||n.temporary||n.noCount||n.avoidStore||!this.get('ready')||(this.timedInterval&&clearTimeout(this.timedInterval),this.timedInterval=setTimeout((function(){var t=r.getDirtyCount()||0,e=(n.unset,y(n,["unset"]));r.set('changesCount',t+1,e)}),0))},n.prototype.changesUp=function(t){this.handleUpdates(0,0,t)},n.prototype.componentHovered=function(t,e,n){var r=this.previous('componentHovered');r&&this.trigger('component:unhovered',r,n),e&&this.trigger('component:hovered',e,n)},n.prototype.getSelected=function(){return this.selected.lastComponent()},n.prototype.getSelectedAll=function(){return this.selected.allComponents()},n.prototype.setSelected=function(t,n){var r=this;void 0===n&&(n={});var o=n.event,a=o&&(o.ctrlKey||o.metaKey),s=(o||{}).shiftKey,l=((0,e.isArray)(t)?t:[t]).map((function(t){return(0,u.getModel)(t,i["default"])})),c=this.getSelectedAll(),f=this.getConfig().multipleSelection,h=(0,e.isArray)(t);h&&this.removeSelected(c.filter((function(t){return!(0,e.contains)(l,t)}))),l.forEach((function(t){var i=(0,u.getModel)(t,void 0);if(i&&(r.trigger('component:select:before',i,n),!i.get('selectable')||n.abort)){if(!n.useValid)return;for(var o=i.parent();o&&!o.get('selectable');)o=o.parent();i=o}if(a&&f)return r.toggleSelected(i);if(s&&f){r.clearSelection(r.get('Canvas').getWindow());var l,d,p=i.collection,g=i.index();if(r.getSelectedAll().forEach((function(t){var n=t.collection,r=t.index();n===p&&(rg&&(d=(0,e.isUndefined)(d)?r:Math.min(d,r)))})),!(0,e.isUndefined)(l))for(;l!==g;)r.addSelected(p.at(l)),l++;if(!(0,e.isUndefined)(d))for(;d!==g;)r.addSelected(p.at(d)),d--;return r.addSelected(i)}!h&&r.removeSelected(c.filter((function(t){return t!==i}))),r.addSelected(i,n),i}))},n.prototype.addSelected=function(t,n){var r=this;void 0===n&&(n={});var o=(0,u.getModel)(t,i["default"]);((0,e.isArray)(o)?o:[o]).forEach((function(t){if(!t||t.get('selectable')){var e=r.selected;n.forceChange&&r.removeSelected(t,n),e.addComponent(t,n),t&&r.trigger('component:select',t,n)}}))},n.prototype.removeSelected=function(t,e){void 0===e&&(e={}),this.selected.removeComponent((0,u.getModel)(t,i["default"]),e)},n.prototype.toggleSelected=function(t,n){var r=this;void 0===n&&(n={});var o=(0,u.getModel)(t,i["default"]);((0,e.isArray)(o)?o:[o]).forEach((function(t){r.selected.hasComponent(t)?r.removeSelected(t,n):r.addSelected(t,n)}))},n.prototype.setHovered=function(t,e){if(void 0===e&&(e={}),!t)return this.set('componentHovered','');var n='component:hover',r=(0,u.getModel)(t,void 0);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))}},n.prototype.getHovered=function(){return this.get('componentHovered')},n.prototype.setComponents=function(t,e){return void 0===e&&(e={}),this.get('DomComponents').setComponents(t,e)},n.prototype.getComponents=function(){var t=this.get('DomComponents'),e=this.get('CodeManager');if(t&&e){var n=t.getComponents();return e.getCode(n,'json')}},n.prototype.setStyle=function(t,e){void 0===e&&(e={});var n=this.get('CssComposer');return n.clear(e),n.getAll().add(t,e),this},n.prototype.addStyle=function(t,n){void 0===n&&(n={});var r=this.getStyle().add(t,n);return(0,e.isArray)(r)?r:[r]},n.prototype.getStyle=function(){return this.get('CssComposer').getAll()},n.prototype.setState=function(t){return this.set('state',t),this},n.prototype.getState=function(){return this.get('state')||''},n.prototype.getHtml=function(t){void 0===t&&(t={});var 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',g(g({},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 * @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) ? 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 * @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 CanvasModule from '../canvas';\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\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","inlineCss","HTMLGenerator","htmlOpts","cleanId","rules","idRules","rule","selectors","isId","toHTML","JsonGenerator","beforeEach","build","JsGenerator","comps","getId","scrStr","getScriptString","scrProps","mapJs","mapType","__getScriptProps","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","isUndefined","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","component","__cleanSelector","parseFloat","items","itemsArr","isMobFirst","mquery","getQueryLength","getKey","q","strict","commandsDef","defaultCommands","CommandAbstract","sender","getModel","selAll","getSelectedAll","nativeDrag","defComOptions","preserveSelected","hideTlb","altMode","eventDrag","onEnd","emitUpdate","cancelled","guidesInfo","cmdMove","Commands","onEndMoveFromModel","initSorterFromModels","oldCmd","default","cmdName","loadDefaultCommands","noStop","command","cmdObj","stopCommand","getActive","callRun","callStop","DomComponents","CssComposer","canvasModel","getCanvasView","toggleMove","disableDragger","getKeyChar","enableDragger","toggleDragger","enable","dragger","methodCls","getCanvas","classList","Dragger","getPosition","setPosition","methodEv","methodsEv","editorModel","hoverClass","badgeClass","plhClass","freezClass","getElement","getToolsEl","Boolean","evName","guidesStatic","guidesTarget","setupGuides","isTran","guidesContainer","getGuidesContainer","getGuidesTarget","getGuidesStatic","drg","toggleDrag","getEventOpts","guides","guide","guidesEl","elInfoX","elInfoY","guideContent","Canvas","getGlobalToolsEl","elGuideInfoX","elGuideInfoY","elGuideInfoContentX","elGuideInfoContentY","updateGuides","debug","renderGuide","getElementGuides","lastEl","getElementPos","getGuidePosUpdate","originRect","un","guideSize","numEl","noScroll","getTranslate","transform","itemStr","setTranslate","getStyle","en","styleUp","addStyle","avoidStore","adds","_getDragData","center","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","wrp","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","createEl","uploadEl","firstRender","pn","Panels","getPanel","addPanel","lm","LayerManager","lmConfig","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","canvasView","getResizerEl","posFetcher","mousePosFetcher","getMouseRelativePos","canvasResizer","forceNew","Utils","Resizer","ToolbarButtonView","calibrated","ToolbarView","DomainViews","itemView","ToolbarButton","showOffsets","frameOff","canvasOff","adjScroll","startSelectComponent","toggleSelectComponent","listenToEl","onFrameUpdated","onContainerChange","onHovered","updateGlobalPos","_upToolbar","updateAttached","win","getWindow","onHover","onOut","onFrameScroll","trg","getViewEl","frameView","_getFrame","isDoc","currentDoc","setHovered","useValid","updateLocalPos","views","updateToolsLocal","elHovered","toggleToolsEl","currentFrame","getView","isVisible","elSelected","updateToolsGlobal","initResize","getElSelected","getElHovered","showElementOffset","elPos","hideElementOffset","showFixedElementOffset","hideFixedElementOffset","hideHighlighter","opacity","isEditing","isChildOf","updateBadge","posOnly","icon","getIcon","clsBadge","customeLabel","customBadgeLabel","badgeLabel","bStyle","targetToElem","getTargetToElementFixed","leftOff","showHighlighter","elem","modelToStyle","resizeClass","isTaggableNode","resizable","toggleBodyClass","docs","resizer","keyHeight","keyWidth","currentUnit","keepAutoHeight","keepAutoWidth","getModelToStyle","toggleFramesEvents","computedStyle","modelStyle","currentWidth","autoWidth","currentHeight","autoHeight","startDim","unitHeight","getUnitFromValue","unitWidth","selectedHandler","onlyHeight","onlyWidth","bodyw","updateEvent","eventToListen","noEmit","updateToolbar","toolbarEl","toolbarStyle","toolbar","showToolbar","Toolbar","toolbarView","updateToolbarPos","getCanvasPosition","updateTools","isCompSelected","isHoverEn","isNewEl","lastHovered","badgeOpts","toolsEl","canvasRectOffset","topOff","_trgToolUp","canvasOffsetTop","canvasOffsetLeft","hideBadge","cleanPrevious","isPointed","scale","getZoomDecimal","getOffsetDim","stopSelectPosition","posTargetCollection","posIndex","posMethod","cDim","posIsLastEl","posTargetEl","outsideElem","posTargetModel","nearFloat","isLast","getOffsetMethod","zoom","isTextNode","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","cv","mth","_upFrame","_onFramesChange","frames","__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","CssRulesView","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","getDeviceModel","device","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","parents","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","scr","tagVarStart","tagVarEnd","reg","updated","rmOpts","sameParent","sameIndex","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","_undoexc","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","setViewEl","avoidRender","getEvents","_clbObj","draggableComponents","childrenView","__isDraggable","updateClasses","importClasses","renderChildren","chgArr","extHl","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","frameElement","defaultView","getOffsetRect","scrollBottom","isInViewport","_setData","replaceWith","ComponentsView","updateAttributes","onRender","scriptContainer","removeEl","triggerAdd","compView","sameFrameView","dt","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","dragX","dragY","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","dragging","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","isInputFocused","removeAll","backdrop","ModalView","updateOpen","updateTitle","$collector","$content","$title","getCollector","getTitle","currAttr","updateAttr","triggerEvent","ModalM","enb","_evData","titl","cnt","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","stl","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","scripts","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","RTE_KEY","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","getPointerEvent","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","__clear","__getFullValue","__getParentProp","kProps","__getClearProps","toProps","applyStyle","__up","evOpts","__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","isNumber","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","getComponent","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","noUndo","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","co","deltaPre","currentPointer","snapGuides","newDelta","trgX","trgY","axs","trgPoint","statPoint","deltaPoint","trgGuide","isPointIn","trgValue","setGuideLock","lock","ofst","trgName","isEscKey","xPos","yPos","parentWindow","getPos","getPointerPosition","pEv","relX","relY","absX","absY","_Array$prototype","idRe","classRe","htmlRe","tagRe","getElementsByTagName","Cash","__cash","eles","getElementById","parseHTML","ready","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","eventsNamespace","eventsNamespacesSeparator","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","previousElementSibling","siblings","KEY_TAG","KEY_ATTR","motionsEv","attrUp","oldEl","newEl","total","createCustomEvent","oEvent","_parentEvent","keyCodeVal","defineProperty","appendVNodes","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","customTarget","relative","ignoreModels","offTop","offLeft","$document","dropContent","selectOnEnd","avoidSelectOnEnd","activeTextModel","updateOffset","getScale","getDocuments","dropModel","updateTextViewCursorPosition","targetDoc","getDocument","setContentEditable","toggleSortCursor","startAutoscroll","stopAutoscroll","clonedEl","computed","moveDragHelper","posY","posX","addTop","addLeft","dragHelperStyle","frameRect","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","getElementOffsets","getCurrentView","elIndex","indexEl","leftLimit","xLimit","yLimit","xCenter","yCenter","dimDown","trgDim","marg","margI","elDim","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","autoscrollLimit","frameContent","frameStyle","notTextable","Frames","onZoomChange","updateDevice","evPageSelect","_pageUpdated","rulers","mainPage","getMain","getMainFrame","page","getCurrentFrameModel","viewCollection","renderView","Droppable","rootEl","els","toggleEffects","handleDragEnter","handleDragOver","handleDrop","handleDragLeave","sortOpts","__customTglEff","endDrop","updateCounter","inAbsoluteMode","canvasOffset","handleDragEnd","getContentByData","lastMaxHeight","tools","frameWrapView","showGlobalTools","cvModel","getCanvasModel","updateHead","renderStyles","allowfullscreen","headEl","getHead","attrStr","getJsContainer","jsContainer","elTools","_getTool","getOffsetViewerEl","getRect","scrollRight","_toggleEffects","_toggleAutoscrollFx","requestAnimationFrame","autoscroll","lastClientY","actualTop","limitTop","limitBottom","nextTop","updateClientY","mt","renderScripts","evLoad","appendScript","scriptEl","renderBody","write","normalize","stls","prevStyles","_isEditor","baseCss","canvasCss","protectedCss","getStyles","_emitUpdate","_emitUpdated","classAnim","updateSize","frameLoaded","updatePos","setupDragger","getZoomMultiplier","posOpts","updateDim","__handleSize","noChanges","isNull","onScroll","onscroll","currW","currH","newW","newH","twrp","toolsWrapper","elTop","elRight","elBottom","elLeft","frameWrapperView","_initFrames","clearOff","checkSelected","updateFrames","_onFramesUpdate","toggleListeners","wheel","_renderFrames","currFrame","onCanvasMove","onWheel","multiFrames","getZoom","defOpts","mpl","framesArea","timerZoom","isElInViewport","getElRect","getFrameOffset","rTop","rLeft","docBody","frmOff","cvsOff","winEl","frEl","getCanvasOffset","frameOffset","canvasEl","elRect","frameTop","avoidFrameOffset","frameLeft","bEl","fo","scriptFn","scriptFnStr","scriptProps","getFrameView","frms","listenToLoad","mainFrame","setCurrentFrame","$frames","toolsWrp","hlEl","badgeEl","placerEl","ghostEl","resizerEl","offsetEl","fixedOffsetEl","toolsGlobEl","getUiClass","getFrame","getFramesEl","_getLocalEl","globalEl","getGhostEl","getFixedOffsetViewerEl","setCustomBadgeLabel","topScroll","leftScroll","getTargetToElementDim","canvasPos","toRight","targetHeight","targetWidth","eventToTrigger","topPos","elementTop","elementLeft","elementWidth","elementHeight","canvasTop","canvasLeft","canvasWidth","canvasHeight","rectOff","getFrameElFromDoc","elToMove","cvOff","toolbarH","toolbarW","frCvOff","frCvWidth","fullHeight","elIsShort","subWinOffset","yOffset","xOffset","toIgnore","fr","getCurrentFrame","setZoom","setCoords","getCoords","addFrame","Frame","keyAutoW","keyAutoH","allRules","modOpts","Wrapper","sSel","changesCount","setHead","addHeadItem","getHeadByAttr","removeHeadByAttr","addLink","removeLink","addScript","removeScript","getPage","loadedItems","itemsToLoad","itemLoaded","listenToLoadItems","ComponentWrapperView","columns","rows","rowsToAdd","columnsToAdd","ComponentTableBody","ComponentTableBodyView","svgAttrs","fallback","buildBase64UrlFromSvg","hasButtonBool","getSrcResult","isDefaultSrc","srcDef","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","hasParam","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","isTargetInside","hidable","hideTextnode","showWrapper","showHover","scrollCanvas","scrollLayers","highlightHover","onInit","parentView","sortContainer","forceChange","viewLayer","ItemView","opened","inputProp","inputNameCls","clsTitleC","clsTitle","clsCaret","clsCount","clsMove","clsChildren","clsNoChild","clsEdit","clsNoEdit","initComponent","gut","clsBase","eye","eyeOff","chevron","checkChildren","updateOpening","updateLayerable","updateName","__render","getInputName","innerText","getVisibilityEl","eyeEl","hClass","toggleVisibility","setVisible","handleEdit","handleEditKey","isEnterKey","handleEditEnd","setName","inputName","clsOpen","clsChvOpen","getCaret","toggleOpening","handleSelect","setLayerData","handleHover","hovered","handleHoverOut","setRoot","_rendered","__clearItems","__isLayerable","evRoot","evComponent","styleOpts","propsToListen","componentChanged","__onRootChange","__onComponent","getRoot","prevDspKey","prevDisplay","updateLayer","setLocked","isLocked","getLayerData","cmpOpts","fromLayers","removeSelected","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","TYPE_CLASS","namePreEsc","nameEsc","protected","setLabel","setActive","objLen","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","svg","btoa","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","hasName","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 +{"version":3,"file":"grapes.min.js","mappings":"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","sources":["webpack://grapesjs/webpack/universalModuleDefinition","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/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/./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/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/Collection.ts","webpack://grapesjs/./src/abstract/Model.ts","webpack://grapesjs/./src/abstract/Module.ts","webpack://grapesjs/./src/abstract/View.ts","webpack://grapesjs/./src/canvas/config/config.js","webpack://grapesjs/./src/canvas/model/Canvas.ts","webpack://grapesjs/./src/abstract/DomainViews.ts","webpack://grapesjs/./src/utils/Droppable.js","webpack://grapesjs/./src/canvas/view/FrameView.ts","webpack://grapesjs/./src/canvas/view/FrameWrapView.ts","webpack://grapesjs/./src/canvas/view/FramesView.ts","webpack://grapesjs/./src/canvas/view/CanvasView.ts","webpack://grapesjs/./src/canvas/index.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/modal_dialog/config/config.js","webpack://grapesjs/./src/modal_dialog/model/Modal.ts","webpack://grapesjs/./src/modal_dialog/view/ModalView.ts","webpack://grapesjs/./src/modal_dialog/index.ts","webpack://grapesjs/./src/navigator/config/config.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/panels/config/config.js","webpack://grapesjs/./src/panels/model/Button.ts","webpack://grapesjs/./src/panels/model/Buttons.ts","webpack://grapesjs/./src/panels/model/Panel.ts","webpack://grapesjs/./src/panels/model/Panels.ts","webpack://grapesjs/./src/panels/view/ButtonView.ts","webpack://grapesjs/./src/panels/view/ButtonsView.ts","webpack://grapesjs/./src/panels/view/PanelView.ts","webpack://grapesjs/./src/panels/view/PanelsView.ts","webpack://grapesjs/./src/panels/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/./src/commands/view/ sync ^\\.\\/.*$","webpack://grapesjs/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/typeof.js","webpack://grapesjs/./node_modules/@babel/runtime/regenerator/index.js","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/superPropBase.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/get.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/toArray.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/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 ","/*!\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.4.1\n\n// (c) 2010-2022 Jeremy Ashkenas and DocumentCloud\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.4.1';\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 // 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 // A private global variable to share between listeners and listenees.\n var _listening;\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 this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\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 = _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 this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\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 // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\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\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 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 if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\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 context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n 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 // Find any remaining events.\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 var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\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, this.off.bind(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, this.stopListening.bind(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 // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\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.preinitialize.apply(this, arguments);\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 // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\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) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n this.trigger('changeId', this, prevId, options);\n }\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 var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? 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 // 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 this.preinitialize.apply(this, arguments);\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\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\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(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\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 = comparator.bind(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, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\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\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\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, model.idAttribute);\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, model.idAttribute);\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, model.idAttribute);\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 === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n }\n\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\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 this.preinitialize.apply(this, arguments);\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 // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\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], method.bind(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 // 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(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[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 base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, 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 // 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\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 `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\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 this.preinitialize.apply(this, arguments);\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 // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\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 = this.checkUrl.bind(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 fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\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/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), 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\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\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 && line.markedSpans && 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 if (lineView.rest) {\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\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 ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(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 var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\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 (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\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 var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\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.scrollTop = 0;\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.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\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.visibility = \"hidden\"; }\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 // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version >= 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\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 && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\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 && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\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 && e.deltaMode !== 0) {\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 = range.head == range.anchor ? newAnchor : 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 && cm.hasFocus())\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; min-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.65.6\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/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 \"dynamic-range\", \"video-dynamic-range\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\",\n \"standard\", \"high\"\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\",\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\", \"conic-gradient\", \"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-play-button\", \"media-slider\", \"media-sliderthumb\",\n \"media-volume-slider\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\",\n \"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\", \"repeating-radial-gradient\",\n \"repeating-conic-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/5/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/5/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 pushcontext.lex = pushblockcontext.lex = true\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/5/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 // 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 { em, ...restOpts } = opts;\n const htmlOpts = restOpts;\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 if (!htmlOpts.attributes) {\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\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 const lmConfig = lm.getConfig();\n\n if (lmConfig.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\n if (lmConfig.custom) {\n lm.__trgCustom({ container: layers });\n } else {\n layers.appendChild(lm.render());\n }\n\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","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 { bindAll } from 'underscore';\n\nimport { 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 constructor(options) {\n super(options);\n\n bindAll(this, 'sortRules');\n }\n\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 sortRules(a, b) {\n const { em } = this;\n const isMobFirst = (em.getConfig().mediaCondition || '').indexOf('min-width') !== -1;\n\n if (!isMobFirst) return 0;\n\n const left = isMobFirst ? a : b;\n const right = isMobFirst ? b : a;\n\n return left - right;\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').sort(this.sortRules);\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\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 { 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 get defaults() {\n return {\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 }\n\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 * Return all parents of the component.\n * @returns {Array}\n */\n parents() {\n const parent = this.parent();\n return parent ? [parent].concat(parent.parents()) : [];\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 */\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 */\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 if (component) {\n const { at } = opts;\n const index = this.index();\n const sameParent = component === this.parent();\n const sameIndex = index === at || index === at - 1;\n\n if (!sameParent || !sameIndex) {\n if (sameParent && at && at > index) {\n opts.at = at - 1;\n }\n this.remove({ temporary: 1 });\n component.append(this, opts);\n this.emitUpdate();\n }\n }\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\nComponent.getDefaults = function () {\n return result(this.prototype, 'defaults');\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","import Backbone from 'backbone';\nimport { isEmpty, isArray, isString, isFunction, each, includes, extend, flatten, debounce, keys } 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 opts.visitedCmps = opts.visitedCmps || {};\n const { visitedCmps } = opts;\n const itms = isArray(items) ? items : [items];\n\n return itms.map(item => {\n const { attributes = {}, components, tagName } = item;\n let { id, draggable, ...restAttr } = attributes;\n let result = item;\n\n if (id) {\n // Detect components with the same ID\n if (!visitedCmps[id]) {\n visitedCmps[id] = [];\n\n // Update the component if exists already\n if (all[id]) {\n result = all[id];\n tagName && result.set({ tagName }, { ...opts, silent: true });\n keys(restAttr).length && result.addAttributes(restAttr, { ...opts });\n }\n } else {\n // Found another component with the same ID, treat it as a new component\n visitedCmps[id].push(result);\n id = Component.getNewId(all);\n result.attributes.id = id;\n }\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, em, parent } = this;\n const cssc = em?.get('CssComposer');\n const allByID = domc?.allById() || {};\n const parsed = this.parseString(input, opts);\n const newCmps = getComponentsFromDefs(parsed, allByID, opts);\n const { visitedCmps = {} } = opts;\n\n // Clone styles for duplicated components\n Object.keys(visitedCmps).forEach(id => {\n const cmps = visitedCmps[id];\n if (cmps.length) {\n // Get all available rules of the component\n const rulesToClone = cssc?.getRules(`#${id}`) || [];\n\n if (rulesToClone.length) {\n cmps.forEach(cmp => {\n rulesToClone.forEach(rule => {\n const newRule = rule.clone();\n newRule.set('selectors', [`#${cmp.attributes.id}`]);\n cssc.getAll().add(newRule);\n });\n });\n }\n }\n });\n\n this.reset(newCmps, opts);\n em?.trigger('component:content', 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.em?.get('Canvas').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\nconst parserHtml = ParserHtml();\n\nexport default class StyleableModel extends Model {\n /**\n * Forward style string to `parseStyle` to be parse to an object\n * @param {string} str\n * @returns\n */\n parseStyle(str) {\n return parserHtml.parseStyle(str);\n }\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 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 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) ? 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 * @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.ts)\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 CanvasModule from '../canvas';\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 type ParsedRule = {\n selectors: string;\n style: Record;\n atRule?: string;\n params?: string;\n};\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\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: Record = {}) {\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: Record = {}) {\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: (css: string, editor: EditorModule) => ParsedRule[]) {\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","_listening","Events","eventSplitter","eventsApi","iteratee","events","name","callback","opts","names","context","test","split","_events","onApi","listening","_listeners","id","interop","listenTo","_listenId","uniqueId","listeningTo","_listeningTo","Listening","error","tryCatchOn","handlers","count","e","off","offApi","listeners","stopListening","ids","remaining","j","handler","_callback","cleanup","once","onceMap","bind","listenToOnce","offer","Math","max","triggerApi","objEvents","allEvents","triggerEvents","ev","a1","a2","a3","listener","unbind","attrs","preinitialize","cidPrefix","parse","result","changed","validationError","idAttribute","toJSON","sync","escape","has","matches","_validate","silent","changes","changing","_changing","_previousAttributes","current","prev","isEqual","prevId","_pending","hasChanged","old","previous","fetch","success","resp","serverAttrs","wrapError","save","wait","validate","method","isNew","patch","xhr","destroy","url","base","urlError","replace","encodeURIComponent","constructor","isValid","comparator","_reset","setOptions","addOptions","array","insert","min","tail","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sort","sortable","sortAttr","isString","existing","_prepareModel","_addReference","orderChanged","some","m","_removeReference","unshift","_byId","modelId","first","findWhere","Error","sortBy","pluck","create","callbackOpts","values","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","entries","ITERATOR_KEYSVALUES","_onModelEvent","event","$$iterator","Symbol","iterator","kind","_collection","_kind","_index","next","done","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","selector","$el","find","render","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","match","delegate","eventName","undelegate","_createElement","document","createElement","className","_setAttributes","addMethod","attribute","cb","defaultVal","addUnderscoreMethods","Class","methods","instance","modelMatcher","matcher","collectionMethods","forEach","collect","reduce","foldl","inject","reduceRight","foldr","detect","filter","select","reject","every","any","include","includes","invoke","toArray","size","head","take","initial","rest","drop","last","without","difference","shuffle","lastIndexOf","chain","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","modelMethods","pairs","invert","omit","config","Base","mixin","mappings","functions","memo","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","decodedFragment","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","chrome_version","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","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","customCursor","$customCursor","sel","ranges","primIndex","empty","drawSelectionCursor","showCursorWhenSelecting","drawSelectionRange","cursor","cursorHeight","getWrapperElement","charPos","defaultCharWidth","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","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","chromeScrollHack","pointerEvents","pixelsPerUnit","deltaMode","deltaX","deltaY","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","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","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","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","inlineCss","HTMLGenerator","restOpts","htmlOpts","cleanId","rules","idRules","rule","selectors","isId","toHTML","JsonGenerator","beforeEach","build","JsGenerator","comps","getId","scrStr","getScriptString","scrProps","mapJs","mapType","__getScriptProps","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","isUndefined","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","component","__cleanSelector","parseFloat","items","itemsArr","isMobFirst","mquery","getQueryLength","getKey","q","strict","commandsDef","defaultCommands","CommandAbstract","sender","getModel","selAll","getSelectedAll","nativeDrag","defComOptions","preserveSelected","hideTlb","altMode","eventDrag","onEnd","emitUpdate","cancelled","guidesInfo","cmdMove","Commands","onEndMoveFromModel","initSorterFromModels","oldCmd","default","cmdName","loadDefaultCommands","noStop","command","cmdObj","stopCommand","getActive","callRun","callStop","DomComponents","CssComposer","canvasModel","getCanvasView","toggleMove","disableDragger","getKeyChar","enableDragger","toggleDragger","enable","dragger","methodCls","getCanvas","classList","Dragger","getPosition","setPosition","methodEv","methodsEv","editorModel","hoverClass","badgeClass","plhClass","freezClass","getElement","getToolsEl","Boolean","evName","guidesStatic","guidesTarget","setupGuides","isTran","guidesContainer","getGuidesContainer","getGuidesTarget","getGuidesStatic","drg","toggleDrag","getEventOpts","guides","guide","guidesEl","elInfoX","elInfoY","guideContent","Canvas","getGlobalToolsEl","elGuideInfoX","elGuideInfoY","elGuideInfoContentX","elGuideInfoContentY","updateGuides","debug","renderGuide","getElementGuides","lastEl","getElementPos","getGuidePosUpdate","originRect","un","guideSize","numEl","noScroll","getTranslate","transform","itemStr","setTranslate","getStyle","en","styleUp","addStyle","avoidStore","adds","_getDragData","center","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","wrp","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","createEl","uploadEl","firstRender","pn","Panels","getPanel","addPanel","lm","LayerManager","lmConfig","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","canvasView","getResizerEl","posFetcher","mousePosFetcher","getMouseRelativePos","canvasResizer","forceNew","Utils","Resizer","ToolbarButtonView","calibrated","ToolbarView","DomainViews","itemView","ToolbarButton","showOffsets","frameOff","canvasOff","adjScroll","startSelectComponent","toggleSelectComponent","listenToEl","onFrameUpdated","onContainerChange","onHovered","updateGlobalPos","_upToolbar","updateAttached","win","getWindow","onHover","onOut","onFrameScroll","trg","getViewEl","frameView","_getFrame","isDoc","currentDoc","setHovered","useValid","updateLocalPos","views","updateToolsLocal","elHovered","toggleToolsEl","currentFrame","getView","isVisible","elSelected","updateToolsGlobal","initResize","getElSelected","getElHovered","showElementOffset","elPos","hideElementOffset","showFixedElementOffset","hideFixedElementOffset","hideHighlighter","opacity","isEditing","isChildOf","updateBadge","posOnly","icon","getIcon","clsBadge","customeLabel","customBadgeLabel","badgeLabel","bStyle","targetToElem","getTargetToElementFixed","leftOff","showHighlighter","elem","modelToStyle","resizeClass","isTaggableNode","resizable","toggleBodyClass","docs","resizer","keyHeight","keyWidth","currentUnit","keepAutoHeight","keepAutoWidth","getModelToStyle","toggleFramesEvents","computedStyle","modelStyle","currentWidth","autoWidth","currentHeight","autoHeight","startDim","unitHeight","getUnitFromValue","unitWidth","selectedHandler","onlyHeight","onlyWidth","bodyw","updateEvent","eventToListen","noEmit","updateToolbar","toolbarEl","toolbarStyle","toolbar","showToolbar","Toolbar","toolbarView","updateToolbarPos","getCanvasPosition","updateTools","isCompSelected","isHoverEn","isNewEl","lastHovered","badgeOpts","toolsEl","canvasRectOffset","topOff","_trgToolUp","canvasOffsetTop","canvasOffsetLeft","hideBadge","cleanPrevious","isPointed","scale","getZoomDecimal","getOffsetDim","stopSelectPosition","posTargetCollection","posIndex","posMethod","cDim","posIsLastEl","posTargetEl","outsideElem","posTargetModel","nearFloat","isLast","getOffsetMethod","zoom","isTextNode","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","cv","mth","_upFrame","_onFramesChange","frames","__initConfig","__appendTo","_createId","__listenAdd","__listenRemove","__listenUpdate","__destroy","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","CssRulesView","CssRuleView","toCSS","CssGroupRuleView","getBlockId","addToCollection","renderStarted","atRuleEl","styleEl","appendData","clsName","defaultBlockId","blockId","getMediaWidth","contRules","mediaCondition","prs","sortRules","pr","widthMedia","Device","checkUnit","Devices","DevicesView","startAdd","updateSelect","devEl","devicesEl","getDeviceModel","device","getOptions","evSelectBefore","evAddBefore","chnSel","dv","_onSelect","deviceId","newDevice","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","removable","badgable","unstylable","highlightable","copyable","editable","layerable","selectable","hoverable","locked","void","traits","dmode","_undoexc","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","getInitValue","prevProps","newProps","prevPropsEv","newPropsEv","__scriptPropsChange","compArr","prevColl","parents","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","scr","tagVarStart","tagVarEnd","reg","updated","rmOpts","sameParent","sameIndex","byType","isInstanceOf","oldId","setId","idS","_getStyleRule","idUpdate","idPrev","getList","_getStyleSelector","isComponent","ensureInList","nextId","getIncrementId","idMap","getNewId","ilen","uid","random","keepIds","domc","dm","componentsById","checkId","getComponentIds","getComponentsFromDefs","visitedCmps","itms","restAttr","addAttributes","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","setViewEl","avoidRender","getEvents","_clbObj","draggableComponents","childrenView","__isDraggable","updateClasses","importClasses","renderChildren","chgArr","extHl","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","frameElement","defaultView","getOffsetRect","scrollBottom","isInViewport","_setData","replaceWith","ComponentsView","updateAttributes","onRender","scriptContainer","removeEl","triggerAdd","compView","sameFrameView","dt","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","dragX","dragY","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","dragging","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","isInputFocused","removeAll","textTags","optionsHtml","htmlType","allowScripts","allowUnsafeAttr","atRuleKeys","singleAtRules","singleAtRulesNames","parseSelector","stl","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","scripts","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","RTE_KEY","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","btn","queryCommandSupported","queryCommandState","enabled","__toggleEffects","actionbarEl","syncActions","caretRangeFromPoint","poiner","getPointerEvent","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","__clear","__getFullValue","__getParentProp","kProps","__getClearProps","toProps","applyStyle","__up","evOpts","__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","isNumber","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","updateOpen","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","getComponent","optsSel","combination","cmpRules","otherRules","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","noUndo","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","co","deltaPre","currentPointer","snapGuides","newDelta","trgX","trgY","axs","trgPoint","statPoint","deltaPoint","trgGuide","isPointIn","trgValue","setGuideLock","lock","ofst","trgName","isEscKey","xPos","yPos","parentWindow","getPos","getPointerPosition","pEv","relX","relY","absX","absY","_Array$prototype","idRe","classRe","htmlRe","tagRe","getElementsByTagName","Cash","__cash","eles","getElementById","parseHTML","ready","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","eventsNamespace","eventsNamespacesSeparator","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","previousElementSibling","siblings","KEY_TAG","KEY_ATTR","motionsEv","attrUp","oldEl","newEl","total","createText","createCustomEvent","oEvent","_parentEvent","keyCodeVal","defineProperty","appendVNodes","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","customTarget","relative","ignoreModels","offTop","offLeft","$document","dropContent","selectOnEnd","avoidSelectOnEnd","activeTextModel","updateOffset","getScale","getDocuments","dropModel","updateTextViewCursorPosition","targetDoc","getDocument","setContentEditable","toggleSortCursor","startAutoscroll","stopAutoscroll","clonedEl","computed","moveDragHelper","posY","posX","addTop","addLeft","dragHelperStyle","frameRect","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","getElementOffsets","getCurrentView","elIndex","indexEl","leftLimit","xLimit","yLimit","xCenter","yCenter","dimDown","trgDim","marg","margI","elDim","pT","pL","obj1","obj2","ancester","s1","toMoveArr","domPositionOffset","dst","modelToDrop","created","srcEl","warns","targetCollection","srcIndex","sameCollection","insertComponent","errors","ratioDefault","onUpdateContainer","minDim","maxDim","silentFrames","avoidContainerUpdate","tl","cr","bl","bc","br","getBoundingRect","setup","hdl","createHandler","updateContainer","forceShow","handleMouseDown","getParentEl","mouseFetch","attrName","parentRect","handlerAttr","clickedHandler","rectDim","startPos","parentDim","handleKeyDown","toggleFrames","calc","updateRect","getSelectedHandler","isHandler","parentW","parentH","startW","startH","normalizeFloat","ratioActive","ratio","mixins","modelConstructor","newModel","_module","moduleName","isPrivate","_em","_name","cfgParent","cfg","_config","private","autoscrollLimit","frameContent","frameStyle","notTextable","Frames","onZoomChange","updateDevice","evPageSelect","_pageUpdated","rulers","mainPage","getMain","getMainFrame","page","getCurrentFrameModel","viewCollection","renderView","Droppable","rootEl","els","toggleEffects","handleDragEnter","handleDragOver","handleDrop","handleDragLeave","sortOpts","__customTglEff","endDrop","updateCounter","inAbsoluteMode","canvasOffset","handleDragEnd","cnt","getContentByData","lastMaxHeight","tools","frameWrapView","showGlobalTools","cvModel","getCanvasModel","updateHead","renderStyles","allowfullscreen","headEl","getHead","attrStr","getJsContainer","jsContainer","elTools","_getTool","getOffsetViewerEl","getRect","scrollRight","_toggleEffects","_toggleAutoscrollFx","requestAnimationFrame","autoscroll","lastClientY","actualTop","limitTop","limitBottom","nextTop","updateClientY","mt","renderScripts","evLoad","appendScript","scriptEl","renderBody","write","normalize","stls","prevStyles","_isEditor","baseCss","canvasCss","protectedCss","getStyles","_emitUpdate","_emitUpdated","classAnim","updateSize","frameLoaded","updatePos","setupDragger","getZoomMultiplier","posOpts","updateDim","__handleSize","noChanges","isNull","onScroll","onscroll","currW","currH","newW","newH","twrp","toolsWrapper","elTop","elRight","elBottom","elLeft","frameWrapperView","_initFrames","clearOff","checkSelected","updateFrames","_onFramesUpdate","toggleListeners","wheel","_renderFrames","currFrame","onCanvasMove","onWheel","multiFrames","getZoom","defOpts","mpl","framesArea","timerZoom","isElInViewport","getElRect","getFrameOffset","rTop","rLeft","docBody","frmOff","cvsOff","winEl","frEl","getCanvasOffset","frameOffset","canvasEl","elRect","frameTop","avoidFrameOffset","frameLeft","bEl","fo","scriptFn","scriptFnStr","scriptProps","getFrameView","frms","listenToLoad","mainFrame","setCurrentFrame","$frames","toolsWrp","hlEl","badgeEl","placerEl","ghostEl","resizerEl","offsetEl","fixedOffsetEl","toolsGlobEl","getUiClass","getFrame","getFramesEl","_getLocalEl","globalEl","getGhostEl","getFixedOffsetViewerEl","setCustomBadgeLabel","topScroll","leftScroll","getTargetToElementDim","canvasPos","toRight","targetHeight","targetWidth","eventToTrigger","topPos","elementTop","elementLeft","elementWidth","elementHeight","canvasTop","canvasLeft","canvasWidth","canvasHeight","rectOff","getFrameElFromDoc","elToMove","cvOff","toolbarH","toolbarW","frCvOff","frCvWidth","fullHeight","elIsShort","subWinOffset","yOffset","xOffset","toIgnore","fr","getCurrentFrame","setZoom","setCoords","getCoords","addFrame","Frame","keyAutoW","keyAutoH","allRules","modOpts","Wrapper","sSel","changesCount","setHead","addHeadItem","getHeadByAttr","removeHeadByAttr","addLink","removeLink","addScript","removeScript","getPage","loadedItems","itemsToLoad","itemLoaded","listenToLoadItems","ComponentWrapperView","ComponentTableCell","ComponentTableRow","ComponentTable","ComponentTableBody","columns","rows","rowsToAdd","columnsToAdd","ComponentTableHead","ComponentTableBodyView","ComponentTableFoot","svgAttrs","ComponentImage","fallback","buildBase64UrlFromSvg","hasButtonBool","getSrcResult","srcDef","uri","URL","hostname","protocol","port","qrs","pair","getQueryObject","ComponentMap","mapUrl","address","frameborder","parseFromSrc","updateSrc","getMapUrl","addr","qr","parseUri","z","ComponentImageView","classEmpty","fetchFile","srcExists","isDefaultSrc","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","ComponentLabel","ComponentLabelView","yt","vi","ytnc","hasParam","ComponentVideo","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","ComponentScript","ComponentScriptView","scrCnt","scriptCount","svar","svarNext","svarFn","svarNextFn","ComponentSvg","customName","ComponentSvgln","ComponentSvgView","createElementNS","ComponentTextNode","ComponentComment","ComponentTextNodeView","ComponentCommentView","createComment","ComponentWrapper","ComponentFrame","ComponentFrameView","__getSrc","ComponentTableCellView","ComponentTableRowView","ComponentTableView","ComponentTableHeadView","ComponentTableFootView","componentHovered","selectAdd","selectRemove","addComponent","componentView","setComponents","extendView","extendFn","extendFnView","extendType","extendViewType","typeToExtend","modelToExt","viewToExt","getExtendedObj","srcToExt","parentFn","removeType","getShallowWrapper","shallowEm","isTargetInside","backdrop","updateTitle","getCollector","$collector","$content","getTitle","$title","updateAttr","currAttr","_evData","titl","setTitle","onceOpen","getContentEl","hidable","hideTextnode","showWrapper","showHover","scrollCanvas","scrollLayers","highlightHover","onInit","parentView","sortContainer","forceChange","viewLayer","ItemView","opened","inputProp","inputNameCls","clsTitleC","clsTitle","clsCaret","clsCount","clsMove","clsChildren","clsNoChild","clsEdit","clsNoEdit","initComponent","gut","clsBase","eye","eyeOff","chevron","checkChildren","updateOpening","updateLayerable","updateName","__render","getInputName","innerText","getVisibilityEl","eyeEl","hClass","toggleVisibility","setVisible","handleEdit","handleEditKey","isEnterKey","handleEditEnd","setName","inputName","clsOpen","clsChvOpen","getCaret","toggleOpening","handleSelect","setLayerData","handleHover","hovered","handleHoverOut","setRoot","_rendered","__clearItems","__isLayerable","evRoot","evComponent","styleOpts","propsToListen","componentChanged","__onRootChange","__onComponent","getRoot","prevDspKey","prevDisplay","updateLayer","setLocked","isLocked","getLayerData","cmpOpts","fromLayers","removeSelected","defFrame","getAllFrames","getMainComponent","evPageSelectBefore","evPageUpdate","evPageAdd","evPageAddBefore","evPageRemove","evPageRemoveBefore","typeMain","selectBefore","addBefore","pages","_onPageChange","mainComp","pg","pagesMap","swv","expt","osm","otm","ola","obl","ful","prv","togglable","delayBtnsShow","runDefaultCommand","stopDefaultCommand","deactivateAllExceptOne","except","deactivateAll","fromCollection","disableAllButtons","disableAllButtonsExceptOne","Buttons","listen","activeCls","disableCls","btnsVisCls","updateActive","checkActive","updateBtnsVis","updateClassName","updateDisable","fromListen","$buttons","commandName","clicked","toggleActive","appendContent","toggleVisible","resz","resLen","forContainer","styleWidth","styleHeight","buttonsView","getPanelsEl","PanelsViewObj","removePanel","panelId","removeButton","getButton","disableButtons","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","TYPE_CLASS","namePreEsc","nameEsc","protected","setLabel","setActive","objLen","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","svg","base64Str","btoa","Buffer","webpackContext","webpackContextResolve","__webpack_require__","_typeof","_regeneratorRuntime","__esModule","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","enumerable","configurable","writable","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","arg","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","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","runtime","regeneratorRuntime","accidentalStrictMode","Function","_arrayLikeToArray","arr2","_assertThisInitialized","ReferenceError","asyncGeneratorStep","_next","_throw","_asyncToGenerator","_classCallCheck","Constructor","_defineProperties","descriptor","_createClass","_defineProperty","_superPropBase","_get","Reflect","receiver","desc","getOwnPropertyDescriptor","_getPrototypeOf","_setPrototypeOf","_inherits","subClass","superClass","_objectWithoutProperties","excluded","sourceKeys","getOwnPropertySymbols","sourceSymbolKeys","_possibleConstructorReturn","_slicedToArray","_i","_s","_arr","_n","_d","unsupportedIterableToArray","_taggedTemplateLiteral","strings","freeze","defineProperties","_toConsumableArray","arrayLikeToArray","_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","hasName","commonInit","mapTail","mapMethods","setMethods","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","findKey","createPredicateIndexFinder","sortedIndex","low","high","createIndexFinder","predicateFind","createReduce","reducer","guard","contextPath","lastComputed","reStrSymbol","rand","criteria","keyInObj","compact","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","chainResult","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","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 68f6bbd6c..d147bf868 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grapesjs", "description": "Free and Open Source Web Builder Framework", - "version": "0.20.0", + "version": "0.20.1", "author": "Artur Arseniev", "license": "BSD-3-Clause", "homepage": "http://grapesjs.com",