diff --git a/dist/grapes.min.js b/dist/grapes.min.js index d4b2635ac0..6fc7c96d0f 100644 --- a/dist/grapes.min.js +++ b/dist/grapes.min.js @@ -1,3 +1,3 @@ -/*! grapesjs - 0.19.4 */ -!function(t,e){'object'==typeof exports&&'object'==typeof module?module.exports=e():'function'==typeof define&&define.amd?define([],e):'object'==typeof exports?exports.grapesjs=e():t.grapesjs=e()}('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof window?window:this,(()=>(()=>{var t={7757:(t,e,n)=>{t.exports=n(5666)},3410:(t,e,n)=>{var r,i,o;i=[n(9050),n(2316)],r=function(t,e){var n=Array.prototype.slice;function r(t,e,n){return n.length<=4?t.call(e,n[0],n[1],n[2],n[3]):t.apply(e,n)}function i(t,e){return n.call(t,e)}function o(e,n){return null!=e&&(t.isArray(n)||(n=i(arguments,1)),t.all(n,(function(t){return t in e})))}var 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,o;o='object'==typeof self&&self.self===self&&self||'object'==typeof n.g&&n.g.global===n.g&&n.g,r=[n(9050),n(2579),e],i=function(t,e,n){o.Backbone=function(t,e,n,r){var i=t.Backbone,o=Array.prototype.slice;e.VERSION='1.3.3',e.$=r,e.noConflict=function(){return t.Backbone=i,this},e.emulateHTTP=!1,e.emulateJSON=!1;var 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),R.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(!R.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 R;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=R.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}(o,n,t,e)}.apply(e,r),void 0===i||(t.exports=i)},9210:(t,e,n)=>{!function(t){t.extendMode("css",{commentStart:"/*",commentEnd:"*/",newlineAfterToken:function(t,e){return/^[;{}]$/.test(e)}}),t.extendMode("javascript",{commentStart:"/*",commentEnd:"*/",newlineAfterToken:function(t,e,n,r){return this.jsonMode?/^[\[,{]$/.test(e)||/^}/.test(n):(";"!=e||!r.lexical||")"!=r.lexical.type)&&/^[;{}]$/.test(e)&&!/^;/.test(n)}});var e=/^(a|abbr|acronym|area|base|bdo|big|br|button|caption|cite|code|col|colgroup|dd|del|dfn|em|frame|hr|iframe|img|input|ins|kbd|label|legend|link|map|object|optgroup|option|param|q|samp|script|select|small|span|strong|sub|sup|textarea|tt|var)$/;t.extendMode("xml",{commentStart:"\x3c!--",commentEnd:"--\x3e",newlineAfterToken:function(t,n,r,i){var o=!1;return"html"==this.configuration&&(o=!!i.context&&e.test(i.context.tagName)),!o&&("tag"==t&&/>$/.test(n)&&i.context||/^-1&&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 Dt(t){if(null==Tt){var e=E("span","​");T(t,E("span",[e,document.createTextNode("x")])),0!=t.firstChild.offsetHeight&&(Tt=e.offsetWidth<=1&&e.offsetHeight>2&&!(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 At(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 Rt,Mt=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(Rt=E("div"))||(Rt.setAttribute("oncopy","return;"),"function"==typeof Rt.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 Re(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,At(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=M(o.styleClasses.bgClass,r.bgClass||"")),o.styleClasses.textClass&&(r.textClass=M(o.styleClasses.textClass,r.textClass||""))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(Dt(t.display.measure))),0==i?(e.measure.map=r.map,e.measure.cache={}):((e.measure.maps||(e.measure.maps=[])).push(r.map),(e.measure.caches||(e.measure.caches=[])).push({}))}if(l){var 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=M(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;;){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);;){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[2+(c-=3)],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 Dr(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:Ar(e),gutterTotalWidth:e.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:e.wrapper.clientWidth}}function Ar(t){return t.scroller.getBoundingClientRect().left-t.sizer.getBoundingClientRect().left}function Rr(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,R(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&&R(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&&Di(t,(function(){for(var e=0;e=n.viewFrom&&e.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==Hr(t))return!1;Gi(t)&&(Fr(t),e.dims=Dr(t));var i=r.first+r.size,o=Math.max(e.visible.from-t.options.viewportMargin,r.first),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),Dn(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=Ar(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 Do(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,Rr(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");Ae()}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 Re(o,l==e.line?e.ch:null,l==n.line?n.ch:null),t.cm&&t.cm.curOp),++l})),o.collapsed&&t.iter(e.line,n.line+1,(function(e){rn(t,e)&&te(e,0)})),o.clearOnEnter&&pt(o,"beforeCursorEnter",(function(){return o.clear()})),o.readOnly&&(De(),(t.history.done.length||t.history.undone.length)&&t.clearHistory()),o.collapsed&&(o.id=++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:Mi((function(){ta(this,"undo")})),redo:Mi((function(){ta(this,"redo")})),undoSelection:Mi((function(){ta(this,"undo",!0)})),redoSelection:Mi((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 Di(t,(function(){for(var e=t.listSelections(),n=e.length-1;n>=0;n--)t.replaceRange(t.doc.lineSeparator(),e[n].anchor,e[n].head,"+input");e=t.listSelections();for(var r=0;r-1&&(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=Ai(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=A(),d(a);var s=ei(i,o);(a.line>=s.to||a.linep.bottom?20:0;l&&setTimeout(Ai(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=Ai(t,(function(t){0!==t.buttons&&Pt(t)?v(t):m(t)})),b=Ai(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 Ds={toString:function(){return"CodeMirror.Init"}},As={},Rs={};function Ms(t){var e=t.optionHandlers;function n(n,r,i,o){t.defaults[n]=r,i&&(e[n]=o?function(t,e,n){n!=Ds&&i(t,e,n)}:i)}t.defineOption=n,t.Init=Ds,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!=Ds&&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!=Ds&&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?Ar(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!=Ds)){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?(R(t.display.wrapper,"CodeMirror-wrap"),t.display.sizer.style.minWidth="",t.display.sizerWidth=null):(_(t.display.wrapper,"CodeMirror-wrap"),ln(t)),Mr(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(As,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),Da(),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),Rs)Rs.hasOwnProperty(c)&&Rs[c](this,e[c],Ds);Gi(this),e.finishInit&&e.finishInit(this);for(var u=0;u400}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:Ai(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",Ai(t,cs)),pt(c,"keypress",Ai(t,hs)),pt(c,"focus",(function(e){return Xr(t,e)})),pt(c,"blur",(function(e){return Jr(t,e)}))}Ns.defaults=As,Ns.optionHandlers=Rs;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=Mt(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||Di(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:Ri(cs),triggerOnKeyPress:Ri(hs),triggerOnKeyUp:fs,triggerOnMouseDown:Ri(ys),execCommand:function(t){if(Xa.hasOwnProperty(t))return Xa[t].call(null,this)},triggerElectric:Ri((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)&&Mr(this),mt(this,"refresh",this)})),swapDoc:Ri((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()||Di(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()||Ai(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=A();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=Mt,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=R,t.contains=D,t.rmClass=_,t.keyNames=Ma}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||A()!=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)&&Ai(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?Ai(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,Ms(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)=>{!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 A[n.context.type](t,e,n)}function j(t,e,n,r){for(var i=r||1;i>0;i--)n.context=n.context.prev;return E(t,e,n)}function D(t){var e=t.current().toLowerCase();o=m.hasOwnProperty(e)?"atom":v.hasOwnProperty(e)?"keyword":"variable"}var A={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?A.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)D(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&&D(e),"parens")},pseudo:function(t,e,n){return"meta"==t?"pseudo":"word"==t?(o="variable-3",n.context.type):E(t,e,n)},documentTypes:function(t,e,n){return"word"==t&&l.hasOwnProperty(e.current())?(o="tag",n.context.type):A.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):A.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=A[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)=>{!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)=>{!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);;)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 D(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=A(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 A(t,e){if(e){if(e.block){var n=A(t,e.prev);return n?n==e.prev?e:new M(n,e.vars,!0):null}return j(t,e.vars)?e:new M(e.prev,new Z(t,e.vars),!1)}return null}function R(t){return"public"==t||"private"==t||"protected"==t||"abstract"==t||"readonly"==t}function M(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 M(P.state.context,P.state.localVars,!1),P.state.localVars=L}function I(){P.state.context=new M(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,Mt)):"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&&R(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,At,Rt)}function Et(t,e){return u&&R(e)?(P.marked="keyword",E(Et)):"variable"==t?(D(e),E()):"spread"==t?E(Et):"["==t?ft(Dt,"]"):"{"==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,At)):(D(e),E(At))}function Dt(){return T(Et,At)}function At(t,e){if("="==e)return E($)}function Rt(t){if(","==t)return E(Tt)}function Mt(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?(D(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?(D(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&&R(e)?(P.marked="keyword",E(Bt)):u&&"this"==t?E(dt,At):T(Et,dt,At)}function Ht(t,e){return"variable"==t?zt(t,e):Ut(t,e)}function zt(t,e){if("variable"==t)return D(e),E(Ut)}function Ut(t,e){return"<"==e?E(V(">"),ut(_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&&R(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,At);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&&D(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,At)}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 M(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!=Mt&&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)=>{!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;;){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 D=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);D.prototype.events={submit:'handleSubmit'};var A,R=n(9661);function M(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=(0,r.Z)({},"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 D(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 D(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.config=D(D({},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 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 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 R({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 R({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)},4068:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>U});var r=n(2982),i=n(5671),o=n(3144),a=n(4942),s=n(9050),l=n(1163);const c={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 u,f=n(2316),h=n.n(f),d=n(7948),p=n(3560),g=(u=function(t,e){return u=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])},u(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}u(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)});const v=function(t){function e(e,n){void 0===n&&(n={});var r=t.call(this,e)||this,i=n.em;return r.config=n,r.em=i,r.listenTo(r,'change:zoom',r.onZoomChange),r.listenTo(i,'change:device',r.updateDevice),r.listenTo(i,d.evPageSelect,r._pageUpdated),r}return g(e,t),e.prototype.defaults=function(){return{frame:'',frames:new p.Z,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}(h().Model);var m=n(6840),y=n(9340),b=n(2963),w=n(1120),k=n(9283),x=n(6602),O=n(4868);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}var S=function(){function t(e,n){var r=this;(0,i.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,s.bindAll)(this,'handleDragEnter','handleDragOver','handleDrop','handleDragLeave'),a.forEach((function(t){return r.toggleEffects(t,1)})),this}return(0,o.Z)(t,[{key:"toggleEffects",value:function(t,e){var n={on:l.on,off:l.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?l.on:l.off,n=this.el.ownerDocument,r=n.defaultView.frameElement;this.sortOpts=t?{onStart:function(t){var e=t.sorter;(0,l.on)(r,'pointermove',e.onMove)},onEnd:function(t){var e=t.sorter;(0,l.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,s=n.get('Utils'),l=n.get('Canvas'),c=n.get('dragContent')||'
';if(n.stopDefault(),n.inAbsoluteMode()){var u=n.get('DomComponents').getWrapper(),f=u.append({})[0],h=n.get('Commands').run('core:component-drag',{event:t,guidesInfo:1,center:1,target:f,onEnd:function(t,n,i){var o;if(!i.cancelled){o=u.append(c)[0];var a=f.getStyle(),s=a.left,l=a.top,h=a.position;o.addStyle({left:s,top:l,position:h})}e.handleDragEnd(o,r),f.remove()}});i=function(e){return h.stop(t,{cancel:e})},o=function(t){return c=t}}else{var d=new s.Sorter(function(t){for(var e=1;e=0)o=t&&t.getData('text/html').replace(/<\/?meta[^>]*>/g,'');else if((0,s.indexOf)(n,'text/uri-list')>=0)o={type:'link',attributes:{href:o},content:o};else if((0,s.indexOf)(n,'text/json')>=0){var u=t&&t.getData('text/json');u&&(o=JSON.parse(u))}else 1===n.length&&'text/plain'===n[0]&&(o="
".concat(o,"
"));var f={content:o};return e.trigger('canvas:dragdata',t,f),f}}]),t}();function _(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function P(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(t).sort().map((function(e){return"[".concat(e,"=\"").concat(t[e],"\"]")})).join('')},s=function(t,e,n){t.forEach((function(t){var r=t.tag,i=t.attributes;!e.some((function(t){return t.tag===r&&a(t.attributes)===a(i)}))&&n.push(t)}))};s(i,o,r),s(o,i,n),n.forEach((function(t){var n=e.querySelector("".concat(t.tag).concat(a(t.attributes)));n&&n.parentNode.removeChild(n)})),(0,k.SJ)(e,r)}},{key:"getEl",value:function(){return this.el}},{key:"getCanvasModel",value:function(){return this.em.get('Canvas').getModel()}},{key:"getWindow",value:function(){return this.getEl().contentWindow}},{key:"getDoc",value:function(){return this.getEl().contentDocument}},{key:"getHead",value:function(){return this.getDoc().querySelector('head')}},{key:"getBody",value:function(){return this.getDoc().querySelector('body')}},{key:"getWrapper",value:function(){return this.getBody().querySelector('[data-gjs-type=wrapper]')}},{key:"getJsContainer",value:function(){return this.jsContainer||(this.jsContainer=(0,k.ut)('div',{class:"".concat(this.ppfx,"js-cont")})),this.jsContainer}},{key:"getToolsEl",value:function(){var t=this.config.frameWrapView;return t&&t.elTools}},{key:"getGlobalToolsEl",value:function(){return this.em.get('Canvas').getGlobalToolsEl()}},{key:"getHighlighter",value:function(){return this._getTool('[data-hl]')}},{key:"getBadgeEl",value:function(){return this._getTool('[data-badge]')}},{key:"getOffsetViewerEl",value:function(){return this._getTool('[data-offset]')}},{key:"getRect",value:function(){return this.rect||(this.rect=this.el.getBoundingClientRect()),this.rect}},{key:"getOffsetRect",value:function(){var t=this.el,e=this.getBody(),n=e.scrollTop,r=e.scrollLeft,i=t.offsetHeight,o=t.offsetWidth;return{top:t.offsetTop,left:t.offsetLeft,height:i,width:o,scrollTop:n,scrollLeft:r,scrollBottom:n+i,scrollRight:r+o}}},{key:"_getTool",value:function(t){var e=this.tools,n=this.getToolsEl();return e[t]||(e[t]=n.querySelector(t)),e[t]}},{key:"remove",value:function(){var t=this.wrapper;this._toggleEffects(),this.tools={},t&&t.remove(),f.View.prototype.remove.apply(this,arguments)}},{key:"startAutoscroll",value:function(){var t=this;this.lastMaxHeight=this.getWrapper().offsetHeight-this.el.offsetHeight,setTimeout((function(){t._toggleAutoscrollFx(1),requestAnimationFrame(t.autoscroll)}),0)}},{key:"autoscroll",value:function(){if(this.dragging){var t=this.lastClientY,e=this.em.get('Canvas'),n=this.getWindow(),r=n.pageYOffset,i=t||0,o=e.getConfig().autoscrollLimit,a=this.getRect().height-o,l=r;if(ia&&(l+=i-a),!(0,s.isUndefined)(t)&&l!==r&&l>0&&l0){var l=r.shift(),c=(0,k.ut)('script',P({type:'text/javascript'},(0,s.isString)(l)?{src:l}:l));c.onerror=c.onload=n.bind(null,r),e.contentDocument.head.appendChild(c)}else t.renderBody(),i&&i.trigger(o,a)};e.onload=function(){var e=t.config.frameContent;if(e){var n=t.getDoc();n.open(),n.write(e),n.close()}i&&i.trigger("".concat(o,":before"),a),c((0,r.Z)(l.get('scripts')))}}},{key:"renderStyles",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getHead(),n=this.getCanvasModel(),r=function(t){return t.map((function(t){return{tag:'link',attributes:P({rel:'stylesheet'},(0,s.isString)(t)?{href:t}:t)}}))},i=r(t.prev||n.previous('styles')),o=r(n.get('styles')),a=[],l=[],c=function(t,e,n){t.forEach((function(t){var r=t.attributes.href;!e.some((function(t){return t.attributes.href===r}))&&n.push(t)}))};c(o,i,l),c(i,o,a),a.forEach((function(t){var n=e.querySelector("link[href=\"".concat(t.attributes.href,"\"]"));n&&n.parentNode.removeChild(n)})),(0,k.SJ)(e,l)}},{key:"renderBody",value:function(){var t=this,e=this.config,n=this.model,r=this.ppfx,i=e.em,o=this.getDoc(),a=this.getBody(),s=this.getWindow(),c=i.get('Config');s._isEditor=!0,this.renderStyles({prev:[]});(0,k.R3)(a,""));var u=n.getComponent(),f=i.get('DomComponents').getType('wrapper').view;this.wrapper=new f({model:u,config:P(P({},u.config),{},{frameView:this})}).render(),(0,k.R3)(a,this.wrapper.el),(0,k.R3)(a,new O.Z({collection:n.getStyles(),config:P(P({},i.get('CssComposer').getConfig()),{},{frameView:this})}).render().el),(0,k.R3)(a,this.getJsContainer()),(0,l.on)(a,'click',(function(t){return t&&'A'==t.target.tagName&&t.preventDefault()})),(0,l.on)(a,'submit',(function(t){return t&&t.preventDefault()})),[{event:'keydown keyup keypress',class:'KeyboardEvent'},{event:'mousedown mousemove mouseup',class:'MouseEvent'},{event:'pointerdown pointermove pointerup',class:'PointerEvent'},{event:'wheel',class:'WheelEvent'}].forEach((function(e){return e.event.split(' ').forEach((function(n){o.addEventListener(n,(function(n){return t.el.dispatchEvent((0,k.t3)(n,e.class))}))}))})),this._toggleEffects(1),this.droppable=(0,l.hasDnd)(i)&&new S(i,this.wrapper.el),n.trigger('loaded')}},{key:"_toggleEffects",value:function(t){var e=t?l.on:l.off,n=this.getWindow();n&&e(n,"".concat(k.G1," resize"),this._emitUpdate)}},{key:"_emitUpdate",value:function(){this.model._emitUpdated()}}]),n}(f.View),j=n(5610);function D(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function A(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,s.bindAll)(this,'onScroll','frameLoaded','updateOffset','remove','startDrag');var n=this.model,r=A(A({},t.config||e),{},{frameWrapView:this}),i=r.canvasView,o=r.em;this.cv=i,this.config=r,this.em=o,this.canvas=o&&o.get('Canvas'),this.ppfx=r.pStylePrefix||'',this.frame=new E({model:n,config:r}),this.classAnim="".concat(this.ppfx,"frame-wrapper--anim"),this.updateOffset=(0,s.debounce)(this.updateOffset.bind(this)),this.updateSize=(0,s.debounce)(this.updateSize.bind(this)),this.listenTo(n,'loaded',this.frameLoaded),this.listenTo(n,'change:x change:y',this.updatePos),this.listenTo(n,'change:width change:height',this.updateSize),this.listenTo(n,'destroy remove',this.remove),this.updatePos(),this.setupDragger()}},{key:"setupDragger",value:function(){var t,e,n,r=this,i=this.canvas,o=this.model,a=function(t){i.toggleFramesEvents(t)};this.dragger=new j.Z({onStart:function(){var i=o.attributes,s=i.x,l=i.y;n=r.em.getZoomMultiplier(),t=s,e=l,a()},onEnd:function(){return a(1)},setPosition:function(r){o.set({x:t+r.x*n,y:e+r.y*n})}})}},{key:"startDrag",value:function(t){t&&this.dragger.start(t)}},{key:"__clear",value:function(t){var e=this.frame;e&&e.remove(t),(0,k.L_)(this.elTools)}},{key:"remove",value:function(t){var e=this;return this.__clear(t),f.View.prototype.remove.apply(this,arguments),['frame','dragger','cv','em','canvas','elTools'].forEach((function(t){return e[t]=0})),this}},{key:"updateOffset",value:function(){var t=this.em,e=this.$el,n=this.frame;t&&(t.runDefault({preserveSelected:1}),e.removeClass(this.classAnim),n.model._emitUpdated())}},{key:"updatePos",value:function(t){var e=this.model,n=this.el,r=e.attributes,i=r.x,o=r.y,a=n.style;this.frame.rect=0,a.left=isNaN(i)?i:"".concat(i,"px"),a.top=isNaN(o)?o:"".concat(o,"px"),t&&this.updateOffset()}},{key:"updateSize",value:function(){this.updateDim()}},{key:"updateDim",value:function(){var t=this.em,e=this.el,n=this.$el,r=this.model,i=this.classAnim,o=this.frame;if(o){o.rect=0,n.addClass(i);var a=this.__handleSize(),l=a.noChanges,c=a.width,u=a.height;((0,s.isNull)(c)||(0,s.isNull)(u))&&r.set(A(A({},c?{}:{width:e.offsetWidth}),u?{}:{height:e.offsetHeight}),{silent:1}),t.stopDefault({preserveSelected:1}),l?this.updateOffset():setTimeout(this.updateOffset,350)}}},{key:"onScroll",value:function(){var t=this.frame;this.em.trigger('frame:scroll',{frame:t,body:t.getBody(),target:t.getWindow()})}},{key:"frameLoaded",value:function(){this.frame.getWindow().onscroll=this.onScroll,this.updateDim()}},{key:"__handleSize",value:function(){var t=this.model,e=this.el.style,n=t.attributes,r=n.width,i=n.height,o=e.width||'',a=e.height||'',l=r||'',c=i||'',u=o==l&&a==c;return e.width=(0,s.isNumber)(l)?"".concat(l).concat("px"):l,e.height=(0,s.isNumber)(c)?"".concat(c).concat("px"):c,{noChanges:u,width:r,height:i,newW:l,newH:c}}},{key:"render",value:function(){var t=this.frame,e=this.$el,n=this.ppfx,r=this.cv,i=this.model,o=this.el,a=i.attributes.onRender;this.__clear(),this.__handleSize(),t.render(),e.empty().attr({class:"".concat(n,"frame-wrapper")}).append("\n
\n
\n ").concat(i.get('name')||'',"\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n ")).append(t.el);var s=(0,k.ut)('div',{class:"".concat(n,"tools"),style:'pointer-events:none; display: none'},"\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n "));this.elTools=s;var l=r.toolsWrapper;return l&&l.appendChild(s),a&&a({el:o,elTop:o.querySelector('[data-frame-top]'),elRight:o.querySelector('[data-frame-right]'),elBottom:o.querySelector('[data-frame-bottom]'),elLeft:o.querySelector('[data-frame-left]'),frame:i,frameWrapperView:this,remove:this.remove,startDrag:this.startDrag}),this}}]),n}(f.View);function Z(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,w.Z)(t);if(e){var i=(0,w.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,b.Z)(this,n)}}var L,N=function(t){(0,y.Z)(n,t);var e=Z(n);function n(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0;return(0,i.Z)(this,n),(t=e.call(this,r,o,!0)).listenTo(t.collection,'reset',t.render),t}return(0,o.Z)(n,[{key:"onRemoveBefore",value:function(t,e){t.forEach((function(t){return t.remove(e)}))}},{key:"onRender",value:function(){var t=this.config,e=this.$el,n=t.em;n&&e.attr({class:"".concat(n.getConfig().stylePrefix,"frames")})}}]),n}(x.Z);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;e\n
\n ")}},{key:"initialize",value:function(t){(0,s.bindAll)(this,'clearOff','onKeyPress','onCanvasMove');var e=this.model;this.config=t.config||{},this.em=this.config.em||{},this.pfx=this.config.stylePrefix||'',this.ppfx=this.config.pStylePrefix||'',this.className=this.config.stylePrefix+'canvas';var n=this.em;this._initFrames(),this.listenTo(n,'change:canvasOffset',this.clearOff),this.listenTo(n,'component:selected',this.checkSelected),this.listenTo(e,'change:zoom change:x change:y',this.updateFrames),this.listenTo(e,'change:frames',this._onFramesUpdate),this.toggleListeners(1)}},{key:"_onFramesUpdate",value:function(){this._initFrames(),this._renderFrames()}},{key:"_initFrames",value:function(){var t=this.frames,e=this.model,n=this.config,r=this.em,i=e.get('frames');r.set('readyCanvas',0),i.once('loaded:all',(function(){return r.set('readyCanvas',1)})),t&&t.remove(),this.frames=new N({collection:i,config:F(F({},n),{},{canvasView:this})})}},{key:"checkSelected",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.scroll,r=this.em.get('currentFrame');n&&t.views.forEach((function(t){t._getFrame()===r&&t.scrollIntoView(n)}))}},{key:"remove",value:function(){this.frames.remove(),this.frames={},f.View.prototype.remove.apply(this,arguments),this.toggleListeners()}},{key:"preventDefault",value:function(t){t&&(t.preventDefault(),t._parentEvent&&t._parentEvent.preventDefault())}},{key:"onCanvasMove",value:function(t){}},{key:"toggleListeners",value:function(t){this.el;var e=t?l.on:l.off;e(document,'keypress',this.onKeyPress),e(window,'scroll resize',this.clearOff)}},{key:"onKeyPress",value:function(t){var e=this.em;' '!==(0,l.getKeyChar)(t)||1===e.getZoomDecimal()||e.get('Canvas').isInputFocused()||(this.preventDefault(t),e.get('Editor').runCommand('core:canvas-move'))}},{key:"onWheel",value:function(t){if((t.ctrlKey||t.metaKey)&&this.em.getConfig().multiFrames){this.preventDefault(t);var e=this.model,n=Math.max(-1,Math.min(1,t.wheelDelta||-t.detail)),r=e.get('zoom');e.set('zoom',r+2*n)}}},{key:"updateFrames",value:function(t){var e=this.em,n=this.model.attributes,r=n.x,i=n.y,o=this.getZoom(),a={preserveSelected:1},s=o?1/o:1;this.framesArea.style.transform="scale(".concat(o,") translate(").concat(r*s,"px, ").concat(i*s,"px)"),this.clearOff(),e.stopDefault(a),e.trigger('canvas:update',t),L&&clearTimeout(L),L=setTimeout((function(){return e.runDefault(a)}),300)}},{key:"getZoom",value:function(){return this.em.getZoomDecimal()}},{key:"isElInViewport",value:function(t){var e=(0,l.getElement)(t),n=(0,l.getElRect)(e),r=this.getFrameOffset(e),i=n.top,o=n.left;return i>=0&&o>=0&&i<=r.height&&o<=r.width}},{key:"offset",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(0,l.getElRect)(t),r=t.ownerDocument.body,i=e.noScroll;return{top:n.top+(i?0:r.scrollTop),left:n.left+(i?0:r.scrollLeft),width:n.width,height:n.height}}},{key:"clearOff",value:function(){this.frmOff=null,this.cvsOff=null}},{key:"getFrameOffset",value:function(t){if(!this.frmOff||t){var e=this.frame.el,n=t&&t.ownerDocument.defaultView,r=n?n.frameElement:e;this.frmOff=this.offset(r||e)}return this.frmOff}},{key:"getCanvasOffset",value:function(){return this.cvsOff||(this.cvsOff=this.offset(this.el)),this.cvsOff}},{key:"getElementPos",value:function(t,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}}},{key:"getElementOffsets",value:function(t){var e=this;if(!t||(0,l.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}},{key:"getPosition",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.frame.el.contentDocument;if(e){var n=e.body,r=this.getZoom(),i=this.getFrameOffset(),o=this.getCanvasOffset(),a=t.noScroll;return{top:i.top+(a?0:n.scrollTop)*r-o.top,left:i.left+(a?0:n.scrollLeft)*r-o.left,width:o.width,height:o.height}}}},{key:"updateScript",value:function(t){var e=t.model,n=e.getId();t.scriptContainer||(t.scriptContainer=(0,k.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)}},{key:"getJsContainer",value:function(t){var e=this.getFrameView(t);return e&&e.getJsContainer()}},{key:"getFrameView",value:function(t){return t&&t._getFrame()||this.em.get('currentFrame')}},{key:"_renderFrames",value:function(){if(this.ready){var t=this.model,e=this.frames,n=this.em,r=this.framesArea,i=t.get('frames');i.listenToLoad(),e.render();var o=i.at(0),a=o&&o.view;n.setCurrentFrame(a),r&&r.appendChild(e.el),this.frame=a}}},{key:"render",value:function(){var t=this.el,e=this.$el,n=this.ppfx,r=this.config,i=this.em;e.html(this.template());var o=e.find('[data-frames]');this.framesArea=o.get(0);var a=e.find('[data-tools]');this.toolsWrapper=a.get(0),a.append("\n
\n
\n
\n
\n
\n
\n ").concat(r.extHl?"
"):'',"\n
\n
\n
\n
\n
\n
\n
\n "));var s=t.querySelector("#".concat(n,"tools"));return this.hlEl=t.querySelector(".".concat(n,"highlighter")),this.badgeEl=t.querySelector(".".concat(n,"badge")),this.placerEl=t.querySelector(".".concat(n,"placeholder")),this.ghostEl=t.querySelector(".".concat(n,"ghost")),this.toolbarEl=t.querySelector(".".concat(n,"toolbar")),this.resizerEl=t.querySelector(".".concat(n,"resizer")),this.offsetEl=t.querySelector(".".concat(n,"offset-v")),this.fixedOffsetEl=t.querySelector(".".concat(n,"offset-fixed-v")),this.toolsGlobEl=t.querySelector(".".concat(n,"tools-gl")),this.toolsEl=s,this.el.className=(0,l.getUiClass)(i,this.className),this.ready=1,this._renderFrames(),this}}]),n}(f.View);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;e0&&void 0!==arguments[0]?arguments[0]:{};this.c=z(z(z({},c),t),{},{module:this}),this.em=this.c.em;var e=this.c,n=e.scripts,r=e.styles,i=this.c.pStylePrefix;return i&&(this.c.stylePrefix=i+this.c.stylePrefix),this.canvas=new v({scripts:n,styles:r},t),this.model=this.canvas,this.startAutoscroll=this.startAutoscroll.bind(this),this.stopAutoscroll=this.stopAutoscroll.bind(this),this}},{key:"onLoad",value:function(){this.model.init()}},{key:"getModel",value:function(){return this.canvas}},{key:"getConfig",value:function(){return this.c}},{key:"getElement",value:function(){return this.canvasView.el}},{key:"getFrame",value:function(t){return this.getFrames()[t||0]}},{key:"getFrameEl",value:function(){var t=(this.canvasView||{}).frame;return t&&t.el}},{key:"getFramesEl",value:function(){return this.canvasView.framesArea}},{key:"getWindow",value:function(){return this.getFrameEl().contentWindow}},{key:"getDocument",value:function(){var t=this.getFrameEl();return t&&t.contentDocument}},{key:"getBody",value:function(){var t=this.getDocument();return t&&t.body}},{key:"_getCompFrame",value:function(t){return t&&t._getFrame()}},{key:"_getLocalEl",value:function(t,e,n){var r=t,i=this._getCompFrame(e);return r=i?i[n]():r}},{key:"getGlobalToolsEl",value:function(){return this.canvasView.toolsGlobEl}},{key:"getToolsEl",value:function(t){return this._getLocalEl(this.canvasView.toolsEl,t,'getToolsEl')}},{key:"getHighlighter",value:function(t){return this._getLocalEl(this.canvasView.hlEl,t,'getHighlighter')}},{key:"getBadgeEl",value:function(t){return this._getLocalEl(this.canvasView.badgeEl,t,'getBadgeEl')}},{key:"getPlacerEl",value:function(){return this.canvasView.placerEl}},{key:"getGhostEl",value:function(){return this.canvasView.ghostEl}},{key:"getToolbarEl",value:function(){return this.canvasView.toolbarEl}},{key:"getResizerEl",value:function(){return this.canvasView.resizerEl}},{key:"getOffsetViewerEl",value:function(t){return this._getLocalEl(this.canvasView.offsetEl,t,'getOffsetViewerEl')}},{key:"getFixedOffsetViewerEl",value:function(){return this.canvasView.fixedOffsetEl}},{key:"render",value:function(){var t;return null===(t=this.canvasView)||void 0===t||t.remove(),this.canvasView=new B({model:this.canvas,config:this.c}),this.canvasView.render().el}},{key:"getOffset",value:function(){var t=this.offset(this.getFrameEl()),e=this.offset(this.getElement());return{top:t.top-e.top,left:t.left-e.left}}},{key:"offset",value:function(t){return this.canvasView.offset(t)}},{key:"setCustomBadgeLabel",value:function(t){this.c.customBadgeLabel=t}},{key:"getElementPos",value:function(t,e){return this.canvasView.getElementPos(t,e)}},{key:"getElementOffsets",value:function(t){return this.canvasView.getElementOffsets(t)}},{key:"getRect",value:function(){var t=this.canvasView.getPosition(),e=t.top,n=t.left;return z(z({},this.canvasView.getCanvasOffset()),{},{topScroll:e,leftScroll:n})}},{key:"getTargetToElementDim",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n||{},i=this.canvasView.getPosition();if(i){var o=r.elPos||this.canvasView.getElementPos(e),a=n.toRight||0,s=r.targetHeight||t.offsetHeight,l=r.targetWidth||t.offsetWidth,c=r.event||null,u=o.top-s,f=o.left;f+=a?o.width:0;var h=(f=a?f-l:f)o.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.c.em&&this.c.em.trigger(c,p),p}}},{key:"canvasRectOffset",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=function(t){var e=t.defaultView;return e&&e.frameElement},o=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2?arguments[2]:void 0,a=n.em.getZoomDecimal(),s=e?'top':'left',l=t.ownerDocument,c=r.offset?i(l):{},u=c.offsetTop,f=void 0===u?0:u,h=c.offsetLeft,d=void 0===h?0:h,p=l.body||{},g=p.scrollTop,v=void 0===g?0:g,m=p.scrollLeft,y=void 0===m?0:m,b=e?v:y,w=e?f:d;return o[s]-(b-w)*a};return{top:o(t,1,e),left:o(t,0,e)}}},{key:"getTargetToElementFixed",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.pos||this.getElementPos(t),i=n.canvasOff||this.canvasRectOffset(t,r),o=e.offsetHeight||0,a=e.offsetWidth||0,l=r.left+r.width,c=this.getCanvasView(),u=c.getPosition(),f=c.getFrameOffset(t),h=n.event,d=-o,p=(0,s.isUndefined)(n.left)?r.width-a:n.left;p=r.left<-p?-r.left:p,p=l>u.width?p-(l-u.width):p;var g=r.height+o,v=g1&&void 0!==arguments[1]?arguments[1]:{},n=(0,l.getElement)(t),r=n&&(0,l.getViewEl)(n);r&&r.scrollIntoView(e)}},{key:"startAutoscroll",value:function(t){var e=t&&t.view||this.em.getCurrentFrame();e&&e.startAutoscroll()}},{key:"stopAutoscroll",value:function(t){var e=t&&t.view||this.em.getCurrentFrame();e&&e.stopAutoscroll()}},{key:"setZoom",value:function(t){return this.canvas.set('zoom',parseFloat(t)),this}},{key:"getZoom",value:function(){return parseFloat(this.canvas.get('zoom'))}},{key:"setCoords",value:function(t,e){return this.canvas.set({x:parseFloat(t),y:parseFloat(e)}),this}},{key:"getCoords",value:function(){var t=this.canvas.attributes;return{x:t.x,y:t.y}}},{key:"getZoomDecimal",value:function(){return this.getZoom()/100}},{key:"getZoomMultiplier",value:function(){var t=this.getZoomDecimal();return t?1/t:1}},{key:"toggleFramesEvents",value:function(t){this.getFramesEl().style.pointerEvents=t?'':'none'}},{key:"getFrames",value:function(){return this.canvas.get('frames').map((function(t){return t}))}},{key:"addFrame",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.canvas.frames.add(new m.Z(z({},t),{em:this.em}),e)}},{key:"destroy",value:function(){var t,e=this;this.canvas.stopListening(),null===(t=this.canvasView)||void 0===t||t.remove(),[this.c,this.canvas,this.canvasView].forEach((function(t){return{}})),['em','model','droppable'].forEach((function(t){return e[t]={}}))}}]),t}()},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),v=n(4942);function m(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,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 y,b=function(t){(0,s.Z)(n,t);var e=m(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=(0,v.Z)({},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);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)()&&(y=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=y.fromTextArea(t,function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},r=this.editor;r&&(r.setValue(t),r.autoFormatRange&&(y.commands.selectAll(r),r.autoFormatRange(r.getCursor(!0),r.getCursor(!1)),y.commands.goDocStart(r)),!n.noRefresh&&setTimeout((function(){return e.refresh()})))}}]),n}(u.Model);x.prototype.CodeMirror=y;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 b,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=r?'':1,h="".concat(e).concat("px"),d="".concat(n).concat("px"),p={};if(c){var g=l.getStyle().transform||'';g=this.setTranslate(g,'x',h),p={transform:g=this.setTranslate(g,'y',d),en:f},l.addStyle(p,{avoidStore:!r})}else{var v={position:o,width:a,height:s},m={left:h,top:d,en:f};(0,i.keys)(v).forEach((function(t){var e=v[t];e&&(m[t]=e)})),p=m,l.addStyle(p,{avoidStore:!r})}u.getSelected()&&(0,i.keys)(p).forEach((function(t){return u.trigger("update:component:style:".concat(t))}))},_getDragData:function(){var t=this.target;return{target:t,parent:t.parent(),index:t.index()}},onStart:function(t){var e=this.target,n=this.editor,r=this.isTran,i=this.opts,o=i.center,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;if(!e.getConfig().appendTo){if(!this.layers){var r='views-container',i=document.createElement('div'),o=n.getPanel(r)||n.addPanel({id:r});i.appendChild(e.render()),o.set('appendContent',i).trigger('change:appendContent'),this.layers=i}this.layers.style.display='block'}},stop:function(){var t=this.layers;t&&(t.style.display='none')}}},2840:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var r=n(2316),i=n.n(r)().$;const o={run:function(t,e){if(this.sender=e,!this.$cn){var n=t.getConfig(),r=t.Panels,o='change:appendContent';this.$cn=i('
'),this.$cn2=i('
'),this.$cn.append(this.$cn2);var 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),D=c("
")).get(0),A=v+E+'-el',R="".concat(v+T+'-el'," ").concat(v+T),M="".concat(A," ").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),D.appendChild(O),D.appendChild(C),D.appendChild(S),D.appendChild(_),y.appendChild(j),y.appendChild(D),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:()=>D});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:()=>D,evAddBefore:()=>A,evAll:()=>_,evPfx:()=>P,evRemove:()=>R,evRemoveBefore:()=>M,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:()=>F,OA:()=>R,GN:()=>N,xH:()=>I});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 _,P=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(E(E({},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',E(E({},(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(I,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(N,t),this.__propToParent(t)}},{key:"__propToParent",value:function(t){var e=this.parent();e&&e.trigger(I,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=E({},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',E({},t),e),this}},{key:"addAttributes",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.setAttributes(E(E({},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(),E({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=E(E({},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,E(E({},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=E({},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(Z))}},{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(Z);if(t&&(0,p.isString)(t)){var e=this.__getAllById()[t];e?(t=e,this.set(Z,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(L),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.__symbols,delete r.__symbol,delete r.__symbol_ovrd,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=E({},r);(0,p.keys)(i).map((function(e){t.__isSymbOvrd(e)&&delete i[e]})),t.set(i,E({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(E(E({},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,E({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=E({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(E(E({},a),{},{changed:d})),y=function(t){var e=t.components().at(p);e&&e.remove(E({fromInstance:g},v))}),!s&&this.__logSymbol('remove',b,{opts:n,removed:t.cid,isSymbNested:m}),b.forEach(y)}}else{var w=this.__getSymbToUp(E(E({},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,E({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=E({},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:"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 P)){n=(0,p.isFunction)(n)?n(this):n;var r=new P([],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=E({},this.attributes),r=E({},this.opt),o=this.getId(),a=e&&e.get('CssComposer');n.attributes=E({},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(E(E({},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(Z,this),s.__initSymb()):t.symbolInv?(this.set(M,[s]),s.set(Z,this),[this,s].map((function(t){return t.__initSymb()}))):(s.set(M,[this]),[this,s].map((function(t){return t.__initSymb()})),this.set(Z,s))):(s.set(Z,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.__symbol,r=e.__symbols;r&&(0,p.isArray)(r)&&(e.__symbols=r.filter((function(t){return t})).map((function(t){return t.getId?t.getId():t}))),n&&!(0,p.isString)(n)&&(e.__symbol=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=E({},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=D(o.tagVarStart||'{[ '),s=D(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=N+(t?":".concat(t):''),r=t&&this.get(t),i=arguments.length,o=new Array(i>1?i-1:0),s=1;s=0&&this.__propSelfToParent({component:this,changed:(0,a.Z)({},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,E(E({},e),{},{action:'remove-component'})),r||(t.components('',e),t.components().removeChildren(t,null,e))},o=E({},e);return[this,n].map((function(e){return e.trigger('component:remove:before',t,i,o)})),!o.abort&&i(),this}},{key:"move",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.remove({temporary:1}),t&&t.append(this,e),this}},{key:"isInstanceOf",value:function(t){var e,n,r=null===(e=this.em)||void 0===e||null===(n=e.get('DomComponents').getType(t))||void 0===n?void 0:n.model;return!!r&&this instanceof r}},{key:"isChildOf",value:function(t){for(var e=(0,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);F.isComponent=function(t){return{tagName:(0,g.toLowerCase)(t.tagName)}},F.ensureInList=function(t){var e=F.getList(t),n=t.getId(),r=e[n];if(r){if(r!==t){var i=F.getIncrementId(n,e);t.setId(i),e[i]=t}}else e[n]=t;t.components().forEach((function(t){return F.ensureInList(t)}))},F.createId=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=F.getList(t),i=n.idMap,o=void 0===i?{}:i,a=t.get('attributes'),s=a.id;return s?(e=F.getIncrementId(s,r,n),t.setId(e),s!==e&&(o[s]=e)):e=F.getNewId(r),r[e]=t,e},F.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=F.getNewId(t);return r},F.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},F.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:{}},F.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=F.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&&F.checkId(s,e,n,r)}))},F.getDefaults=function(){return(0,p.result)(this.prototype,'defaults')},F.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},(0,a.Z)(_,Z,0),(0,a.Z)(_,M,0),(0,a.Z)(_,L,0),(0,a.Z)(_,"_undo",!0),(0,a.Z)(_,"_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(){return this.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=D,t.fn.spectrum.defaults=n,t.fn.spectrum.inputTypeColorSupport=function e(){if(void 0===e._cachedResult){var n=t("")[0];e._cachedResult='color'===n.type&&''!==n.value}return e._cachedResult},t.spectrum={},t.spectrum.localization={},t.spectrum.palettes={},t.fn.spectrum.processNativeColorInputs=function(){var e=t('input[type=color]');e.length&&!A()&&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<.5?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=M(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=M(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=R(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=R(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=a.brightness/125*3+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,R=0,M=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')&&A(),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||Rt(),e.stopPropagation(),t(e.target).is('input')||e.preventDefault()})),(K.is(':disabled')||!0===p.disabled)&&$t(),X.click(E),at.change(At),at.bind('paste',(function(){setTimeout(At,1)})),at.keydown((function(t){13==t.keyCode&&At()})),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()})),D(it,(function(t,e,n){V=t/M,Ot=!1,n.shiftKey&&(V=Math.round(10*V)/10),Bt()}),jt,Dt),D(et,(function(t,e){N=parseFloat(e/R),Ot=!1,p.showAlpha||(V=1),Bt()}),jt,Dt),D(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,Dt),bt?(Ft(bt),Ht(),kt=p.preferredFormat||b(bt).getFormat(),Pt(bt)):Ht(),g&&Mt();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:Mt,hide:Nt,toggle:Rt,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 D(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 A(){return t.fn.spectrum.inputTypeColorSupport()}function R(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 D(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function A(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 R=function(t){(0,p.Z)(n,t);var e=A(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 R=m.components;if(!m.type&&R){for(var M=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:()=>S});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},y='data-selectme',b={bold:{name:'bold',icon:'B',attributes:{title:'Bold'},result:function(t){return t.exec('bold')}},italic:{name:'italic',icon:'I',attributes:{title:'Italic'},result:function(t){return t.exec('italic')}},underline:{name:'underline',icon:'U',attributes:{title:'Underline'},result:function(t){return t.exec('underline')}},strikethrough:{name:'strikethrough',icon:'S',attributes:{title:'Strike-through'},result:function(t){return t.exec('strikeThrough')}},link:{icon:"\n \n ",name:'link',attributes:{style:'font-size:1.4rem;padding:0 4px 2px;',title:'Link'},state:function(t){return t&&t.selection()&&m(t)?p:g},result:function(t){m(t)?t.exec('unlink'):t.insertHTML("").concat(t.selection(),""),{select:!0})}},wrap:{icon:"\n \n ",attributes:{title:'Wrap for style'},state:function(t){return null!=t&&t.selection()&&m(t,'SPAN')?v:g},result:function(t){!m(t,'SPAN')&&t.insertHTML("").concat(t.selection(),""),{select:!0})}}},w=function(){function t(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,c.Z)(this,t);var r=n.el,i=n.em;if(this.em=i,r._rte)return r._rte;r._rte=this,this.setEl(r),this.updateActiveActions=this.updateActiveActions.bind(this),this.__onKeydown=this.__onKeydown.bind(this),this.__onPaste=this.__onPaste.bind(this);var o=(n.actions||[]).map((function(t){var e=t;return'string'==typeof t?e=d({},b[t]):b[t.name]&&(e=d(d({},b[t.name]),t)),e})),a=o.length?o:Object.keys(b).map((function(t){return b[t]}));n.classes=d(d({},{actionbar:'actionbar',button:'action',active:'active',disabled:'disabled',inactive:'inactive'}),n.classes);var 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 p:n.className+=" ".concat(o);break;case g:n.className+=" ".concat(a);break;case v: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(y,"]"))[0];t&&(r.setSelected(t),t.removeAttributes(y))})),s.trigger('disable'))}}}]),t}();const k={stylePrefix:'rte-',adjustToolbar:1,actions:['bold','italic','underline','strikethrough','link','wrap']};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]:{},n=O(O({},k),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 w({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=this.em.get('Canvas'),n=t.style,r=e.getTargetToElementFixed(this.lastEl,t,{event:'rteToolbarPosUpdate',left:0});n.top=(r.top||0)+"px",n.left=(r.left||0)+"px"},enable:function(e,n,i){var o=this;return(0,r.Z)(s().mark((function r(){var a,l,c,u;return s().wrap((function(r){for(;;)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(C,o.updatePosition,o),l.on(C,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(C,this.updatePosition,this),r.trigger('rte:disable',t,n))}}}},4859:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>D});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(;;)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(;;)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(;;)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(;;)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(;;)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(;;)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]:{},a=this.em,s=a.get('StyleManager'),l=this.getName(),c=n.__clear,u=c?'':this.__getFullValue(n),f=this.__getParentProp(),h=this.changedAttributes(),d=(0,o.keys)(h).reduce((function(t,n){return t[n]=e.previous(n),t}),{}),p=[].concat((0,r.Z)((0,o.keys)(this.__getClearProps())),['__p']),g=(0,o.keys)(h),v=!n.__up&&!f&&(c||p.some((function(t){return g.indexOf(t)>=0}))),m=this.get('onChange'),y={property:this,from:d,to:h,value:u,opts:n};s.__trgEv(s.events.propertyUpdate,y),m&&m(y),v&&this.__upTargetsStyle((0,i.Z)({},l,u),n)}},{key:"__upTargetsStyle",value:function(t,e){var n,r=null===(n=this.em)||void 0===n?void 0:n.get('StyleManager');null==r||r.addStyleTargets(w(w({},t),{},{__p:!!e.avoidStore}),e)}},{key:"_up",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.noTarget&&(e.__up=!0);var n=e.partial,r=(0,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(0,i.Z)({},n,this.__getFullValue(t))}},{key:"getDefaultValue",value:function(){var t=this.get('default');return"".concat((0,o.isUndefined)(t)?this.get('defaults'):t)}},{key:"upValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null===t||''===t?this.__getClearProps():this.__parseValue(t,e);return this._up(n,e)}},{key:"isVisible",value:function(){return!!this.get('visible')}},{key:"clear",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._up(this.__getClearProps(),w(w({},t),{},{__clear:!0}))}},{key:"canClear",value:function(){var t=this.getParent();return t?t.__canClearProp(this):this.hasValue({noParent:!0})}},{key:"getParent",value:function(){return this.__getParentProp()||null}},{key:"isFull",value:function(){return!!this.get('full')}},{key:"__parseValue",value:function(t,e){return this.parseValue(t,e)}},{key:"__getClearProps",value:function(){return{value:''}}},{key:"setValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.parseValue(t),i=!e;!i&&this.set({value:void 0},{avoidStore:i,silent:!0}),this.set(r,w({avoidStore:i},n))}},{key:"setValueFromInput",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.setValue(t,e,w(w({},n),{},{fromInput:1}))}},{key:"parseValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={value:t},r='!important';if((0,o.isString)(t)&&-1!==t.indexOf(r)&&(n.value=t.replace(r,'').trim(),n.important=1),!this.get('functionName')&&!e.complete)return n;var i=[],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'),o=this.getValues(),a={};if(r)a=r(o,{join:n,name:e,property:this});else if(o=this.getValues({byName:!0}),this.isDetached())a=o;else{var s=this.getProperties().map((function(t){return t.__getFullValue({withDefault:1})})).filter(Boolean).join(n);a=(0,i.Z)({},e,s)}return this.isDetached()?a[e]='':(a[e]=a[e]||'',a=C(C({},a),this.getProperties().reduce((function(t,e){return t[e.getName()]='',t}),{}))),t.camelCase?Object.keys(a).reduce((function(t,e){return t[camelCase(e)]=a[e],t}),{}):a}},{key:"getSplitSeparator",value:function(){return new RegExp("".concat(this.get('separator'),"(?![^\\(]*\\))"))}},{key:"__upProperties",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e.__up&&!e.__clearIn){var n=this.__getParentProp();if(n)return n.__upProperties(this,e);this.__upTargetsStyleProps(e,t)}}},{key:"__upTargetsStyleProps",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,n=this.getStyleFromProps();if(this.isDetached()&&e){var r=e.getName();n=(0,i.Z)({},r,n[r])}this.__upTargetsStyle(n,t)}},{key:"_up",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.__setProperties(this.__getSplitValue(t.value),e),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 A(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 R=function(t){(0,p.Z)(n,t);var e=A(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);R.prototype.model=D;var M=["__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 R(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(),s=this.__getJoinLayers(),l=this.get('toStyle'),c=this.getName(),u=t.getValues();if(l)e=l(u,{join:r,joinLayers:s,name:c,layer:t,property:this});else{var f=this.getProperties().map((function(t){var e=t.getName(),r=u[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()?f.reduce((function(t,e){return t[e.name]=e.value,t}),{}):(0,i.Z)({},this.getName(),f.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((0,i.Z)({},t.getId(),t.__getFullValue())),e.__up||this.__upTargetsStyleProps(e))}},{key:"__upLayers",value:function(t,e,n){this.__upTargetsStyleProps(n||e)}},{key:"__upTargets",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e.__select)return 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,M);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(),a=this.getLayerSeparator(),s=this.get('fromStyle'),l=s?s(e,{property:this,name:n,separatorLayers:a}):[];if(!s){var c=this.__splitStyleName(e,n,a).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(),a).map((function(t){return(0,i.Z)({},r,t||n.getDefaultValue())})).forEach((function(t,e){c[e]=c[e]?L(L({},c[e]),t):t}))})),l=c}return(0,o.isArray)(l)?l:[l]}},{key:"getStyle",value:function(t){return this.getStyleFromLayers(t)}},{key:"getStyleFromLayers",value:function(t){var e=this,n={},r=this.getName(),i=this.getLayers(),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=(0,i.Z)({change:'inputValueChanged'},"click [".concat(W,"]"),'clear');var q=n(9283);function G(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=(0,v.Z)(t);if(e){var i=(0,v.Z)(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return(0,g.Z)(this,n)}}var K=function(t){(0,p.Z)(n,t);var e=G(n);function n(){return(0,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 Dt(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 Dt(Dt({},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,Dt({deepCheck:1},e)),i=r.value,o=r.unit;return n.value=i,n.unit=o,n}},{key:"getFullValue",value:function(){var t=this.get('value'),e=this.get('unit');return t=(0,o.isUndefined)(t)?'':t,e=!(0,o.isUndefined)(e)&&t?e:'',t="".concat(t).concat(e),x.prototype.getFullValue.apply(this,[t])}}]),n}(x);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 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:Rt,view:dt,isType:function(t){if(t&&'integer'==t.type)return t}},{id:'number',model:Rt,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:()=>pt});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)?ft(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 lt,ct=/^\s*<(\w+)[^>]*>/,ut=/^\s*<(\w+)\s*\/?>(?:<\/\1>)?\s*$/;function ft(t){if(function(){if(!lt){var t=r.createElement('table'),e=r.createElement('tr');lt={'*':r.createElement('div'),tr:r.createElement('tbody'),td:e,th:e,thead:t,tbody:t,tfoot:t}}}(),!T(t))return[];if(ut.test(t))return[r.createElement(RegExp.$1)];var e=ct.test(t)&&RegExp.$1,n=lt[e]||lt['*'];return n.innerHTML=t,b(n.childNodes).detach().get()}function ht(t,e,n){if(void 0!==e){var r=T(e);!r&&e.length?C(e,(function(e){return ht(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=ft,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){ht(t,e)})),this},w.appendTo=function(t){return ht(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){ht(t,e,!0)})),this},w.prependTo=function(t){return ht(b(t),u.apply(this.slice()),!0),this},w.remove=function(){return this.detach().off()},w.replaceWith=function(t){var e=this;return this.each((function(n,r){var i=r.parentNode;if(i){var o=n?b(t).clone():b(t);if(!o[0])return e.remove(),!1;i.replaceChild(o[0],r),b(o[0]).after(o.slice(1))}}))},w.replaceAll=function(t){return b(t).replaceWith(this),this},w.text=function(t){return void 0===t?this[0]?this[0].textContent:'':this.each((function(e,n){n.textContent=t}))};var dt=r&&r.documentElement;w.offset=function(){var t=this[0];if(t){var e=t.getBoundingClientRect();return{top:e.top+i.pageYOffset-dt.clientTop,left:e.left+i.pageXOffset-dt.clientLeft}}},w.offsetParent=function(){return b(this[0]&&this[0].offsetParent)},w.position=function(){var t=this[0];if(t)return{left:t.offsetLeft,top:t.offsetTop}},w.children=function(t){var e=[];return this.each((function(t,n){c.apply(e,n.children)})),e=b(M(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&&M(t))},w.find=function(t){for(var e=[],n=0,r=this.length;n{"use strict";n.d(e,{$Q:()=>h,FW:()=>c,G1:()=>o,L_:()=>s,Mx:()=>a,R3:()=>d,SJ:()=>m,dL:()=>f,pn:()=>u,rw:()=>g,sE:()=>l,t3:()=>v,ut:()=>p});var r=n(9050),i='attributes',o='transitionend oTransitionEnd transitionend webkitTransitionEnd',a=function(t){return t&&9===t.nodeType},s=function(t){var e=t&&t.parentNode;e&&e.removeChild(t)},l=function(t,e){return t.querySelectorAll(e)},c=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t&&t.setAttribute&&(0,r.each)(e,(function(e,n){return t.setAttribute(n,e)}))},u=function(t){return t&&!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},f=function(t,e){t.parentNode.replaceChild(e,t)},h=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])},d=function(t,e){return h(t,e)},p=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'',n=arguments.length>2?arguments[2]:void 0,i=document.createElement(t);return e&&(0,r.each)(e,(function(t,e){return i.setAttribute(e,t)})),n&&((0,r.isString)(n)?i.innerHTML=n:i.appendChild(n)),i},g=function(t){return document.createTextNode(t)},v=function(t,e){var n,r=t.type;try{n=new window[e](r,t)}catch(t){(n=document.createEvent(e)).initEvent(r,!0,!0)}return n._parentEvent=t,0===r.indexOf('key')&&(n.keyCodeVal=t.keyCode,['keyCode','which'].forEach((function(t){Object.defineProperty(n,t,{get:function(){return this.keyCodeVal}})}))),n},m=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=Array.isArray(e)?e:[e];n.forEach((function(e){var n=e.tag||'div',o=e[i]||{},a=document.createElement(n);(0,r.each)(o,(function(t,e){a.setAttribute(e,t)})),t.appendChild(a)}))}},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=t.getBoundingClientRect(),n=t.ownerDocument.body,r=this.getCurrentPos(),i=r.x,o=r.y,a=e.top+n.scrollTop,s=e.left+n.scrollLeft,l=e.width,c=e.height;if(oa+c-10||is+l-10)return 1},getCurrentPos:function(){var t=this.eventMove;return{x:t.pageX||0,y:t.pageY||0}},getDim:function(t){var e,n,r,i,o=this.em,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(),'mousedown',this.handleMouseDown))}},{key:"blur",value:function(){this.container.style.display='none',this.el&&((0,l.off)(this.getDocumentEl(),'mousedown',this.handleMouseDown),this.el=null)}},{key:"start",value:function(t){if(0===t.button){t.preventDefault(),t.stopPropagation();var e=this.el,n=this.getParentEl(),r=this.opts||{},i='data-'+r.prefix+'handler',o=this.getElementPos(e,{target:'el'}),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,'mousemove',this.move),(0,l.on)(c,'keydown',this.handleKeyDown),(0,l.on)(c,'mouseup',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),0===t.which&&this.stop(t)}},{key:"stop",value:function(t){var e=this.opts,n=this.docs||this.getDocumentEl();(0,l.off)(n,'mousemove',this.move),(0,l.off)(n,'keydown',this.handleKeyDown),(0,l.off)(n,'mouseup',this.stop),this.updateRect(1),this.toggleFrames(),(0,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:()=>a});var r,i=n(2316),o=(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 a=function(t){function e(e,n,r){var i=t.call(this,n,r)||this;return i._module=e,i}return o(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}(n.n(i)().Model)},6434:(t,e,n)=>{"use strict";n.d(e,{O:()=>f,Z:()=>u});var r,i=n(9050),o=n(1163),a=(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=function(){return s=Object.assign||function(t){for(var e,n=1,r=arguments.length;n{"use strict";n.d(e,{Z:()=>h});var r,i=n(9050),o=n(2316),a=n(1163),s=(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(){return l=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=0&&(r.splice(o,1),this.setHead(r))},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.Model.prototype.toJSON.call(this,t),n=(0,i.result)(this,'defaults');return t.fromUndo&&delete e.component,delete e.styles,delete e.changesCount,e.__aw&&delete e.width,e.__ah&&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.Model)},3560:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r,i=n(9050),o=n(2316),a=(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){var n=t.call(this,e)||this;return n.loadedItems=0,n.itemsToLoad=0,(0,i.bindAll)(n,'itemLoaded'),n.on('reset',n.onReset),n.on('remove',n.onRemove),n}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:()=>Se});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'),r=n.src;r&&this.set('src',r,{silent:1})},initToolbar:function(){for(var t=arguments.length,e=new Array(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=this.get(t.fallback?'fallback':'src')||'',n=e;return e&&'1&&void 0!==arguments[1]?arguments[1]:{};if('a'===(0,m.toLowerCase)(t.tagName)){var i=n.textTags||[];e={type:ft,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 dt=n(5861),pt=n(7757),gt=n.n(pt);function vt(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 mt(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,dt.Z)(gt().mark((function t(e){var n,r,i,o,a,s,l;return gt().wrap((function(t){for(;;)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,dt.Z)(gt().mark((function t(){var e,n,r,i,o,a,s=arguments;return gt().wrap((function(t){for(;;)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=mt({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 kt(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 xt=function(t){(0,u.Z)(n,t);var e=kt(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 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 Jt=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:"_createElement",value:function(t){return document.createElementNS('http://www.w3.org/2000/svg',t)}}]),n}(s.Z);function Qt(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 te(t){for(var e=1;e{"use strict";n.r(e),n.d(e,{default:()=>D,evAll:()=>O,evComponent:()=>_,evPfx:()=>C,evRoot:()=>S});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,onInit:function(){},onRender:function(){},extend:{}};var l,c=n(2316),u=(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)});const f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return u(e,t),Object.defineProperty(e.prototype,"pfx",{get:function(){return this.model.module.em.config.stylePrefix||''},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"ppfx",{get:function(){return this.pfx+this.model.module.config.stylePrefix||''},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"em",{get:function(){return this.model.module.em},enumerable:!1,configurable:!0}),e}(n.n(c)().View);var h=n(2169),d=n(7375),p=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=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(d.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 p(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
\n
\n
\n \n ").concat(y?"").concat(y,""):'',"\n ").concat(m,"\n
\n
\n
\n
").concat(c||'',"
\n
\n \n
\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.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]('fa-eye-slash')},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[y]='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[y]='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.$el,e=this.model,n='open',r='fa-chevron-down',i=this.getCaret();this.module.isOpen(e)?(t.addClass(n),i.addClass(r)):(t.removeClass(n),i.removeClass(r))},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(d.OA,":start"),t)},n.onMoveClb=function(t){return e.trigger(d.OA,t)},n.startSort(t.target))},e.prototype.updateStatus=function(){h.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.initialize(this.opt),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=(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(null==a?void 0:a.map((function(t){return new u.Z(t,n)})));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.get('frames').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=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=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:()=>I,evAdd:()=>A,evAll:()=>j,evCustom:()=>L,evPfx:()=>D,evRemove:()=>M,evRemoveBefore:()=>Z,evState:()=>N,evUpdate:()=>R});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=(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=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='contentEditable';const v=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 p(e,t),e.prototype.template=function(){var t=this,e=t.pfx,n=t.model,r=t.config,i=n.get('label')||'';return"\n \n ").concat(i,"\n \n ").concat(r.iconTagRemove,"\n \n ")},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[g]='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[g]='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 m=n(7539),y=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=function(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t};const w=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 y(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"\n
\n
").concat(n,"
\n
\n \n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n ").concat(i,"\n \n \n ").concat(r,"\n \n
\n
\n
").concat(e,":
\n
\n
")},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,m.Z)(x||(x=b(["","\n #",""],["","\n #",""])),i,t.getName(),i,t.getId()):'';e=(e=this.collection.getFullString(u))?(0,m.Z)(O||(O=b(["",""],["",""])),i,e):t.get('selectorsAdd')||h,e=l&&h?h:e,e+=f?(0,m.Z)(C||(C=b([":",""],[":",""])),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 v({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 k,x,O,C,S=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)}}(),_=function(){return _=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:()=>l});var r,i=n(9050),o=n(2316),a=(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=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:1,active:!0,private:!1,protected:!1,_undo:!0}},e.prototype.isId=function(){return 2===this.get('type')},e.prototype.isClass=function(){return 1===this.get('type')},e.prototype.getFullName=function(t){void 0===t&&(t={});var e=t.escape,n=this.get('name'),r='';switch(this.get('type')){case 1:r='.';break;case 2:r='#'}return r+(e?e(n):n)},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=1,e.TYPE_ID=2,e}(o.Model);const l=s;s.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=(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,camelCase:()=>b,capitalize:()=>I,createId:()=>z,deepMerge:()=>T,escape:()=>P,find:()=>_,getElRect:()=>j,getElement:()=>x,getGlobal:()=>l,getKeyChar:()=>R,getKeyCode:()=>A,getModel:()=>E,getPointerEvent:()=>D,getUiClass:()=>h,getUnitFromValue:()=>m,getViewEl:()=>B,hasDnd:()=>k,hasWin:()=>s,isCommentNode:()=>C,isComponent:()=>F,isDef:()=>a,isEmptyObj:()=>N,isEnterKey:()=>Z,isEscKey:()=>M,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=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;;){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}(t.exports);try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}},2828:(t,e,n)=>{var r={"./CanvasClear":7202,"./CanvasClear.js":7202,"./CanvasMove":327,"./CanvasMove.js":327,"./CommandAbstract":238,"./CommandAbstract.js":238,"./ComponentDelete":5820,"./ComponentDelete.js":5820,"./ComponentDrag":6694,"./ComponentDrag.js":6694,"./ComponentEnter":1947,"./ComponentEnter.js":1947,"./ComponentExit":3888,"./ComponentExit.js":3888,"./ComponentNext":5883,"./ComponentNext.js":5883,"./ComponentPrev":7508,"./ComponentPrev.js":7508,"./ComponentStyleClear":8769,"./ComponentStyleClear.js":8769,"./CopyComponent":2213,"./CopyComponent.js":2213,"./DeleteComponent":5049,"./DeleteComponent.js":5049,"./ExportTemplate":3775,"./ExportTemplate.js":3775,"./Fullscreen":58,"./Fullscreen.js":58,"./MoveComponent":8658,"./MoveComponent.js":8658,"./OpenAssets":9617,"./OpenAssets.js":9617,"./OpenBlocks":5821,"./OpenBlocks.js":5821,"./OpenLayers":3452,"./OpenLayers.js":3452,"./OpenStyleManager":2840,"./OpenStyleManager.js":2840,"./OpenTraitManager":8644,"./OpenTraitManager.js":8644,"./PasteComponent":560,"./PasteComponent.js":560,"./Preview":4944,"./Preview.js":4944,"./Resize":7538,"./Resize.js":7538,"./SelectComponent":2620,"./SelectComponent.js":2620,"./SelectPosition":8463,"./SelectPosition.js":8463,"./ShowOffset":7994,"./ShowOffset.js":7994,"./SwitchVisibility":8352,"./SwitchVisibility.js":8352};function i(t){var e=o(t);return n(e)}function o(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code='MODULE_NOT_FOUND',e}return r[t]}i.keys=function(){return Object.keys(r)},i.resolve=o,t.exports=i,i.id=2828},907:(t,e,n)=>{"use strict";function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nr})},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:()=>Me,all:()=>tn,allKeys:()=>vt,any:()=>en,assign:()=>Mt,before:()=>Ze,bind:()=>xe,bindAll:()=>Se,chain:()=>ye,chunk:()=>In,clone:()=>It,collect:()=>Ge,compact:()=>Pn,compose:()=>Re,constant:()=>J,contains:()=>nn,countBy:()=>gn,create:()=>Nt,debounce:()=>je,default:()=>zn,defaults:()=>Zt,defer:()=>Te,delay:()=>Pe,detect:()=>We,difference:()=>En,drop:()=>Sn,each:()=>qe,escape:()=>ae,every:()=>tn,extend:()=>Rt,extendOwn:()=>Mt,filter:()=>Je,find:()=>We,findIndex:()=>Fe,findKey:()=>Ne,findLastIndex:()=>Ve,findWhere:()=>$e,first:()=>Cn,flatten:()=>Tn,foldl:()=>Ye,foldr:()=>Xe,forEach:()=>qe,functions:()=>Dt,get:()=>zt,groupBy:()=>dn,has:()=>Ut,head:()=>Cn,identity:()=>Wt,include:()=>nn,includes:()=>nn,indexBy:()=>pn,indexOf:()=>ze,initial:()=>On,inject:()=>Ye,intersection:()=>Rn,invert:()=>jt,invoke:()=>rn,isArguments:()=>K,isArray:()=>$,isArrayBuffer:()=>N,isBoolean:()=>T,isDataView:()=>W,isDate:()=>R,isElement:()=>E,isEmpty:()=>lt,isEqual:()=>gt,isError:()=>Z,isFinite:()=>Y,isFunction:()=>V,isMap:()=>Ct,isMatch:()=>ct,isNaN:()=>X,isNull:()=>_,isNumber:()=>A,isObject:()=>S,isRegExp:()=>M,isSet:()=>_t,isString:()=>D,isSymbol:()=>L,isTypedArray:()=>it,isUndefined:()=>P,isWeakMap:()=>St,isWeakSet:()=>Pt,iteratee:()=>Yt,keys:()=>st,last:()=>_n,lastIndexOf:()=>Ue,map:()=>Ge,mapObject:()=>Jt,matcher:()=>$t,matches:()=>$t,max:()=>sn,memoize:()=>_e,methods:()=>Dt,min:()=>ln,mixin:()=>Vn,negate:()=>Ae,noop:()=>Qt,now:()=>re,object:()=>Ln,omit:()=>xn,once:()=>Le,pairs:()=>Et,partial:()=>ke,partition:()=>vn,pick:()=>kn,pluck:()=>on,property:()=>qt,propertyOf:()=>te,random:()=>ne,range:()=>Nn,reduce:()=>Ye,reduceRight:()=>Xe,reject:()=>Qe,rest:()=>Sn,restArguments:()=>C,result:()=>ge,sample:()=>cn,select:()=>Je,shuffle:()=>un,size:()=>bn,some:()=>en,sortBy:()=>fn,sortedIndex:()=>Be,tail:()=>Sn,take:()=>Cn,tap:()=>Ft,template:()=>pe,templateSettings:()=>le,throttle:()=>Ee,times:()=>ee,toArray:()=>yn,toPath:()=>Vt,transpose:()=>Mn,unescape:()=>se,union:()=>An,uniq:()=>Dn,unique:()=>Dn,uniqueId:()=>me,unzip:()=>Mn,values:()=>Tt,where:()=>an,without:()=>jn,wrap:()=>De,zip:()=>Zn});var r={};n.r(r),n.d(r,{VERSION:()=>i,after:()=>Me,all:()=>tn,allKeys:()=>vt,any:()=>en,assign:()=>Mt,before:()=>Ze,bind:()=>xe,bindAll:()=>Se,chain:()=>ye,chunk:()=>In,clone:()=>It,collect:()=>Ge,compact:()=>Pn,compose:()=>Re,constant:()=>J,contains:()=>nn,countBy:()=>gn,create:()=>Nt,debounce:()=>je,default:()=>Bn,defaults:()=>Zt,defer:()=>Te,delay:()=>Pe,detect:()=>We,difference:()=>En,drop:()=>Sn,each:()=>qe,escape:()=>ae,every:()=>tn,extend:()=>Rt,extendOwn:()=>Mt,filter:()=>Je,find:()=>We,findIndex:()=>Fe,findKey:()=>Ne,findLastIndex:()=>Ve,findWhere:()=>$e,first:()=>Cn,flatten:()=>Tn,foldl:()=>Ye,foldr:()=>Xe,forEach:()=>qe,functions:()=>Dt,get:()=>zt,groupBy:()=>dn,has:()=>Ut,head:()=>Cn,identity:()=>Wt,include:()=>nn,includes:()=>nn,indexBy:()=>pn,indexOf:()=>ze,initial:()=>On,inject:()=>Ye,intersection:()=>Rn,invert:()=>jt,invoke:()=>rn,isArguments:()=>K,isArray:()=>$,isArrayBuffer:()=>N,isBoolean:()=>T,isDataView:()=>W,isDate:()=>R,isElement:()=>E,isEmpty:()=>lt,isEqual:()=>gt,isError:()=>Z,isFinite:()=>Y,isFunction:()=>V,isMap:()=>Ct,isMatch:()=>ct,isNaN:()=>X,isNull:()=>_,isNumber:()=>A,isObject:()=>S,isRegExp:()=>M,isSet:()=>_t,isString:()=>D,isSymbol:()=>L,isTypedArray:()=>it,isUndefined:()=>P,isWeakMap:()=>St,isWeakSet:()=>Pt,iteratee:()=>Yt,keys:()=>st,last:()=>_n,lastIndexOf:()=>Ue,map:()=>Ge,mapObject:()=>Jt,matcher:()=>$t,matches:()=>$t,max:()=>sn,memoize:()=>_e,methods:()=>Dt,min:()=>ln,mixin:()=>Vn,negate:()=>Ae,noop:()=>Qt,now:()=>re,object:()=>Ln,omit:()=>xn,once:()=>Le,pairs:()=>Et,partial:()=>ke,partition:()=>vn,pick:()=>kn,pluck:()=>on,property:()=>qt,propertyOf:()=>te,random:()=>ne,range:()=>Nn,reduce:()=>Ye,reduceRight:()=>Xe,reject:()=>Qe,rest:()=>Sn,restArguments:()=>C,result:()=>ge,sample:()=>cn,select:()=>Je,shuffle:()=>un,size:()=>bn,some:()=>en,sortBy:()=>fn,sortedIndex:()=>Be,tail:()=>Sn,take:()=>Cn,tap:()=>Ft,template:()=>pe,templateSettings:()=>le,throttle:()=>Ee,times:()=>ee,toArray:()=>yn,toPath:()=>Vt,transpose:()=>Mn,unescape:()=>se,union:()=>An,uniq:()=>Dn,unique:()=>Dn,uniqueId:()=>me,unzip:()=>Mn,values:()=>Tt,where:()=>an,without:()=>jn,wrap:()=>De,zip:()=>Zn});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':'>','"':'"',"'":''','`':'`'},ae=ie(oe),se=ie(jt(oe)),le=ut.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var ce=/(.)^/,ue={"'":"'",'\\':'\\','\r':'r','\n':'n','\u2028':'u2028','\u2029':'u2029'},fe=/\\|'|\r|\n|\u2028|\u2029/g;function he(t){return'\\'+ue[t]}var de=/^\s*(\w|\$)+\s*$/;function pe(t,e,n){!e&&n&&(e=n),e=Zt({},e,ut.templateSettings);var r=RegExp([(e.escape||ce).source,(e.interpolate||ce).source,(e.evaluate||ce).source].join('|')+'|$','g'),i=0,o="__p+='";t.replace(r,(function(e,n,r,a,s){return o+=t.slice(i,s).replace(fe,he),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(!de.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 ge(t,e,n){var r=(e=Bt(e)).length;if(!r)return V(n)?n.call(t):n;for(var i=0;i1)Ce(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 je(t,e,n){var r,i,o,a,s,l=function(){var c=re()-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=re(),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 ke(e,t)}function Ae(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 Me(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function Ze(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}const Le=ke(Ze,2);function Ne(t,e,n){e=Xt(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,Gt(n,i,4),r,o)}}const Ye=Ke(1),Xe=Ke(-1);function Je(t,e,n){var r=[];return e=Xt(e,n),qe(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r}function Qe(t,e,n){return Je(t,Ae(Xt(e)),n)}function tn(t,e,n){e=Xt(e,n);for(var r=!Oe(t)&&st(t),i=(r||t).length,o=0;o=0}const rn=C((function(t,e,n){var r,i;return V(e)?i=e:(e=Bt(e),r=e.slice(0,-1),e=e[e.length-1]),Ge(t,(function(t){var o=i;if(!o){if(r&&r.length&&(t=Ht(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))}));function on(t,e){return Ge(t,qt(e))}function an(t,e){return Je(t,$t(e))}function sn(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=Oe(t)?t:Tt(t)).length;so&&(o=r);else e=Xt(e,n),qe(t,(function(t,n,r){((i=e(t,n,r))>a||i===-1/0&&o===-1/0)&&(o=t,a=i)}));return o}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=Oe(t)?t:Tt(t)).length;sr||void 0===n)return 1;if(n1&&(r=Gt(r,e[1])),e=vt(t)):(r=wn,e=Ce(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(n=e[1])):(e=Ge(Ce(e,!1,!1),String),r=function(t,n){return!nn(e,n)}),kn(t,r,n)}));function On(t,e,n){return u.call(t,0,Math.max(0,t.length-(null==e||n?1:e)))}function Cn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:On(t,t.length-e)}function Sn(t,e,n){return u.call(t,null==e||n?1:e)}function _n(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:Sn(t,Math.max(0,t.length-e))}function Pn(t){return Je(t,Boolean)}function Tn(t,e){return Ce(t,e,!1)}const En=C((function(t,e){return e=Ce(e,!0,!0),Je(t,(function(t){return!nn(e,t)}))})),jn=C((function(t,e){return En(t,e)}));function Dn(t,e,n,r){T(e)||(r=n,n=e,e=!1),null!=n&&(n=Xt(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:''},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=(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=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=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)\n ? opts.keepUnusedStyles\n : config.keepUnusedStyles;\n const cssc = this.get('CssComposer');\n const wrp = opts.component || this.get('DomComponents').getComponent();\n const protCss = !avoidProt ? config.protectedCss : '';\n const css =\n wrp &&\n this.get('CodeManager').getCode(wrp, 'css', {\n cssc,\n keepUnusedStyles,\n ...optsCss,\n ...opts,\n });\n return wrp ? (opts.json ? css : protCss + css) : '';\n }\n\n /**\n * Returns JS of all components\n * @return {string} JS string\n * @public\n */\n getJs(opts: any = {}) {\n var wrp = opts.component || this.get('DomComponents').getWrapper();\n return wrp ? this.get('CodeManager').getCode(wrp, 'js').trim() : '';\n }\n\n /**\n * Store data to the current storage.\n * @public\n */\n async store(options?: any) {\n const data = this.storeData();\n await this.get('StorageManager').store(data, options);\n this.clearDirtyCount();\n return data;\n }\n\n /**\n * Load data from the current storage.\n * @public\n */\n async load(options?: any) {\n const result = await this.get('StorageManager').load(options);\n this.loadData(result);\n return result;\n }\n\n storeData() {\n let result = {};\n // Sync content if there is an active RTE\n const editingCmp = this.getEditing();\n editingCmp && editingCmp.trigger('sync:content', { noCount: true });\n\n this.storables.forEach((m) => {\n result = { ...result, ...m.store(1) };\n });\n return JSON.parse(JSON.stringify(result));\n }\n\n loadData(data = {}) {\n if (!isEmptyObj(data)) {\n this.storables.forEach((module) => module.clear());\n this.storables.forEach((module) => module.load(data));\n }\n return data;\n }\n\n /**\n * Returns device model by name\n * @return {Device|null}\n * @private\n */\n getDeviceModel() {\n var name = this.get('device');\n return this.get('DeviceManager').get(name);\n }\n\n /**\n * Run default command if setted\n * @param {Object} [opts={}] Options\n * @private\n */\n runDefault(opts = {}) {\n var command = this.get('Commands').get(this.config.defaultCommand);\n if (!command || this.defaultRunning) return;\n command.stop(this, this, opts);\n command.run(this, this, opts);\n this.defaultRunning = true;\n }\n\n /**\n * Stop default command\n * @param {Object} [opts={}] Options\n * @private\n */\n stopDefault(opts = {}) {\n const commands = this.get('Commands');\n const command = commands.get(this.config.defaultCommand);\n if (!command || !this.defaultRunning) return;\n command.stop(this, this, opts);\n this.defaultRunning = false;\n }\n\n /**\n * Update canvas dimensions and refresh data useful for tools positioning\n * @public\n */\n refreshCanvas(opts: any = {}) {\n this.set('canvasOffset', null);\n this.set('canvasOffset', this.get('Canvas').getOffset());\n opts.tools && this.trigger('canvas:updateTools');\n }\n\n /**\n * Clear all selected stuf inside the window, sometimes is useful to call before\n * doing some dragging opearation\n * @param {Window} win If not passed the current one will be used\n * @private\n */\n clearSelection(win?: Window) {\n var w = win || window;\n w.getSelection()?.removeAllRanges();\n }\n\n /**\n * Get the current media text\n * @return {string}\n */\n getCurrentMedia() {\n const config = this.config;\n const device = this.getDeviceModel();\n const condition = config.mediaCondition;\n const preview = config.devicePreviewMode;\n const width = device && device.get('widthMedia');\n return device && width && !preview ? `(${condition}: ${width})` : '';\n }\n\n /**\n * Return the component wrapper\n * @return {Component}\n */\n getWrapper() {\n return this.get('DomComponents').getWrapper();\n }\n\n setCurrentFrame(frameView: FrameView) {\n return this.set('currentFrame', frameView);\n }\n\n getCurrentFrame(): FrameView {\n return this.get('currentFrame');\n }\n\n getCurrentFrameModel() {\n return (this.getCurrentFrame() || {}).model;\n }\n\n getIcon(icon: string) {\n const icons = this.config.icons || {};\n return icons[icon] || '';\n }\n\n /**\n * Return the count of changes made to the content and not yet stored.\n * This count resets at any `store()`\n * @return {number}\n */\n getDirtyCount(): number {\n return this.get('changesCount');\n }\n\n clearDirtyCount() {\n return this.set('changesCount', 0);\n }\n\n getZoomDecimal() {\n return this.get('Canvas').getZoomDecimal();\n }\n\n getZoomMultiplier() {\n return this.get('Canvas').getZoomMultiplier();\n }\n\n setDragMode(value: string) {\n return this.set('dmode', value);\n }\n\n t(...args: any[]) {\n const i18n = this.get('I18n');\n return i18n?.t(...args);\n }\n\n /**\n * Returns true if the editor is in absolute mode\n * @returns {Boolean}\n */\n inAbsoluteMode() {\n return this.get('dmode') === 'absolute';\n }\n\n /**\n * Destroy editor\n */\n destroyAll() {\n const { config, view } = this;\n const editor = this.getEditor();\n const { editors = [] } = config.grapesjs || {};\n const shallow = this.get('shallow');\n shallow?.destroyAll();\n this.stopListening();\n this.stopDefault();\n this.modules\n .slice()\n .reverse()\n .forEach((mod) => mod.destroy());\n view && view.remove();\n this.clear({ silent: true });\n this.destroyed = true;\n ['_config', 'view', '_previousAttributes', '_events', '_listeners'].forEach(\n //@ts-ignore\n (i) => (this[i] = {})\n );\n editors.splice(editors.indexOf(editor), 1);\n //@ts-ignore\n hasWin() && $(config.el).empty().attr(this.attrsOrig);\n }\n\n getEditing() {\n const res = this.get('editing');\n return (res && res.model) || null;\n }\n\n setEditing(value: boolean) {\n this.set('editing', value);\n return this;\n }\n\n isEditing() {\n return !!this.get('editing');\n }\n\n log(msg: string, opts: any = {}) {\n const { ns, level = 'debug' } = opts;\n this.trigger('log', msg, opts);\n level && this.trigger(`log:${level}`, msg, opts);\n\n if (ns) {\n const logNs = `log-${ns}`;\n this.trigger(logNs, msg, opts);\n level && this.trigger(`${logNs}:${level}`, msg, opts);\n }\n }\n\n logInfo(msg: string, opts?: any) {\n this.log(msg, { ...opts, level: 'info' });\n }\n\n logWarning(msg: string, opts?: any) {\n this.log(msg, { ...opts, level: 'warning' });\n }\n\n logError(msg: string, opts?: any) {\n this.log(msg, { ...opts, level: 'error' });\n }\n\n initBaseColorPicker(el: any, opts = {}) {\n const { config } = this;\n const { colorPicker = {} } = config;\n const elToAppend = config.el;\n const ppfx = config.stylePrefix;\n\n //@ts-ignore\n return $(el).spectrum({\n containerClassName: `${ppfx}one-bg ${ppfx}two-color`,\n appendTo: elToAppend || 'body',\n maxSelectionSize: 8,\n showPalette: true,\n palette: [],\n showAlpha: true,\n chooseText: 'Ok',\n cancelText: '⨯',\n ...opts,\n ...colorPicker,\n });\n }\n\n /**\n * Execute actions without triggering the storage and undo manager.\n * @param {Function} clb\n * @private\n */\n skip(clb: Function) {\n this.__skip = true;\n const um = this.get('UndoManager');\n um ? um.skip(clb) : clb();\n this.__skip = false;\n }\n\n /**\n * Set/get data from the HTMLElement\n * @param {HTMLElement} el\n * @param {string} name Data name\n * @param {any} value Date value\n * @return {any}\n * @private\n */\n data(el: any, name: string, value: any) {\n const varName = '_gjs-data';\n\n if (!el[varName]) {\n el[varName] = {};\n }\n\n if (isUndefined(value)) {\n return el[varName][name];\n } else {\n el[varName][name] = value;\n }\n }\n}\n","import { isObject } from 'underscore';\n\nexport default ({ $ }) => {\n if ($ && $.prototype && $.prototype.constructor.name !== 'jQuery') {\n const fn = $.fn;\n\n // Additional helpers\n\n fn.hide = function () {\n return this.css('display', 'none');\n };\n\n fn.show = function () {\n return this.css('display', 'block');\n };\n\n fn.focus = function () {\n const el = this.get(0);\n el && el.focus();\n return this;\n };\n\n // For SVGs in IE\n // (fn.removeClass = function(c) {\n // if (!arguments.length) {\n // return this.attr('class', '');\n // }\n // const classes = isString(c) && c.match(/\\S+/g);\n // return classes\n // ? this.each(function(el) {\n // each(classes, function(c) {\n // if (el.classList) {\n // el.classList.remove(c);\n // } else {\n // const val = el.className;\n // const bval = el.className.baseVal;\n\n // if (!isUndefined(bval)) {\n // val.baseVal = bval.replace(c, '');\n // } else {\n // el.className = val.replace(c, '');\n // }\n // }\n // });\n // })\n // : this;\n // }),\n // (fn.remove = function() {\n // return this.each(node => {\n // return node.parentNode && node.parentNode.removeChild(node);\n // });\n // }),\n\n // For spectrum compatibility\n\n fn.bind = function (ev, h) {\n return this.on(ev, h);\n };\n\n fn.unbind = function (ev, h) {\n if (isObject(ev)) {\n for (let name in ev) {\n ev.hasOwnProperty(name) && this.off(name, ev[name]);\n }\n\n return this;\n } else {\n return this.off(ev, h);\n }\n };\n\n fn.click = function (h) {\n return h ? this.on('click', h) : this.trigger('click');\n };\n\n fn.change = function (h) {\n return h ? this.on('change', h) : this.trigger('change');\n };\n\n fn.keydown = function (h) {\n return h ? this.on('keydown', h) : this.trigger('keydown');\n };\n\n fn.delegate = function (selector, events, data, handler) {\n if (!handler) {\n handler = data;\n }\n\n return this.on(events, selector, function (e) {\n e.data = data;\n handler(e);\n });\n };\n\n fn.scrollLeft = function () {\n let el = this.get(0);\n el = el.nodeType == 9 ? el.defaultView : el;\n let win = el instanceof Window ? el : null;\n return win ? win.pageXOffset : el.scrollLeft || 0;\n };\n\n fn.scrollTop = function () {\n let el = this.get(0);\n el = el.nodeType == 9 ? el.defaultView : el;\n let win = el instanceof Window ? el : null;\n return win ? win.pageYOffset : el.scrollTop || 0;\n };\n\n const offset = $.prototype.offset;\n fn.offset = function (coords) {\n let top, left;\n\n if (coords) {\n top = coords.top;\n left = coords.left;\n }\n\n if (typeof top != 'undefined') {\n this.css('top', `${top}px`);\n }\n if (typeof left != 'undefined') {\n this.css('left', `${left}px`);\n }\n\n return offset.call(this);\n };\n\n $.map = function (items, clb) {\n const ar = [];\n\n for (var i = 0; i < items.length; i++) {\n ar.push(clb(items[i], i));\n }\n\n return ar;\n };\n\n const indexOf = Array.prototype.indexOf;\n\n $.inArray = function (val, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, val, i);\n };\n\n $.Event = function (src, props) {\n if (!(this instanceof $.Event)) {\n return new $.Event(src, props);\n }\n\n this.type = src;\n this.isDefaultPrevented = () => false;\n };\n }\n};\n","import Backbone from 'backbone';\nimport { View } from '../../common';\nimport { appendStyles } from '../../utils/mixins';\nimport EditorModel from '../model/Editor';\n\nconst $ = Backbone.$;\n\nexport default class EditorView extends View {\n constructor(model: EditorModel) {\n super({model})\n //const { model } = this;\n const { Panels, UndoManager } = model.attributes;\n model.view = this;\n model.once('change:ready', () => {\n Panels.active();\n Panels.disableButtons();\n UndoManager.clear();\n setTimeout(() => {\n model.trigger('load', model.get('Editor'));\n model.clearDirtyCount();\n });\n });\n }\n\n render() {\n const { $el, model } = this;\n const { Panels, Canvas } = model.attributes;\n const { config, modules } = model;\n const pfx = config.stylePrefix;\n const contEl = $(config.el || `body ${config.container}`);\n appendStyles(config.cssIcons, { unique: true, prepand: true });\n $el.empty();\n\n if (config.width) contEl.css('width', config.width);\n if (config.height) contEl.css('height', config.height);\n\n $el.append(Canvas.render());\n $el.append(Panels.render());\n\n // Load shallow editor\n const shallow = model.get('shallow');\n const shallowCanvasEl = shallow.get('Canvas').render();\n shallowCanvasEl.style.display = 'none';\n $el.append(shallowCanvasEl);\n\n $el.attr('class', `${pfx}editor ${pfx}one-bg ${pfx}two-color`);\n contEl.addClass(`${pfx}editor-cont`).empty().append($el);\n modules.forEach(md => md.postRender && md.postRender(this));\n\n return this;\n }\n}\n","/**\n * Editor contains the top level API which you'll probably use to customize the editor or extend it with plugins.\n * You get the Editor instance on init method and you can pass options via its [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/editor/config/config.js)\n *\n * ```js\n * const editor = grapesjs.init({\n * // options\n * });\n * ```\n *\n * ## Available Events\n *\n * You can make use of available events in this way\n * ```js\n * editor.on('EVENT-NAME', (some, argument) => {\n * // do something\n * })\n * ```\n *\n * * `update` - The structure of the template is updated (its HTML/CSS)\n * * `undo` - Undo executed\n * * `redo` - Redo executed\n * * `load` - Editor is loaded\n *\n * ### Components\n * Check the [Components](/api/components.html) module.\n * ### Keymaps\n * Check the [Keymaps](/api/keymaps.html) module.\n * ### Style Manager\n * Check the [Style Manager](/api/style_manager.html) module.\n * ### Storage\n * Check the [Storage](/api/storage_manager.html) module.\n * ### Canvas\n * Check the [Canvas](/api/canvas.html) module.\n * ### RTE\n * Check the [Rich Text Editor](/api/rich_text_editor.html) module.\n * ### Commands\n * Check the [Commands](/api/commands.html) module.\n * ### Selectors\n * Check the [Selectors](/api/selector_manager.html) module.\n * ### Blocks\n * Check the [Blocks](/api/block_manager.html) module.\n * ### Assets\n * Check the [Assets](/api/assets.html) module.\n * ### Modal\n * Check the [Modal](/api/modal_dialog.html) module.\n * ### Devices\n * Check the [Devices](/api/device_manager.html) module.\n * ### Parser\n * Check the [Parser](/api/parser.html) module.\n * ### Pages\n * Check the [Pages](/api/pages.html) module.\n *\n * ## Methods\n * @module Editor\n */\nimport { EventHandler } from 'backbone';\nimport { isUndefined } from 'underscore';\nimport { IBaseModule } from '../abstract/Module';\nimport cash from '../utils/cash-dom';\nimport html from '../utils/html';\nimport defaults from './config/config';\nimport EditorModel from './model/Editor';\nimport EditorView from './view/EditorView';\n\nexport default class EditorModule implements IBaseModule {\n constructor(config = {}, opts: any = {}) {\n //@ts-ignore\n this.config = {\n ...defaults,\n ...config,\n //@ts-ignore\n pStylePrefix: defaults.stylePrefix,\n };\n this.em = new EditorModel(this.config);\n this.$ = opts.$;\n this.em.init(this);\n this.editor = this.em;\n }\n editorView?: EditorView;\n editor: EditorModel;\n $: cash;\n em: EditorModel;\n config: typeof defaults;\n\n modules = [];\n\n //@ts-ignore\n get I18n(): I18nModule {\n return this.em.get('I18n');\n }\n //@ts-ignore\n get Utils(): UtilsModule {\n return this.em.get('Utils');\n }\n get Config(): any {\n return this.em.config;\n }\n //@ts-ignore\n get Commands(): CommandsModule {\n return this.em.get('Commands');\n }\n //@ts-ignore\n get Keymaps(): KeymapsModule {\n return this.em.get('Keymaps');\n }\n //@ts-ignore\n get Modal(): ModalModule {\n return this.em.get('Modal');\n }\n //@ts-ignore\n get Panels(): PanelsModule {\n return this.em.get('Panels');\n }\n //@ts-ignore\n get Canvas(): CanvasModule {\n return this.em.get('Canvas');\n }\n //@ts-ignore\n get Parser(): ParserModule {\n return this.em.get('Parser');\n }\n //@ts-ignore\n get CodeManager(): CodeManagerModule {\n return this.em.get('CodeManager');\n }\n //@ts-ignore\n get UndoManager(): UndoManagerModule {\n return this.em.get('UndoManager');\n }\n //@ts-ignore\n get RichTextEditor(): RichTextEditorModule {\n return this.em.get('RichTextEditor');\n }\n //@ts-ignore\n get Pages(): PageManagerModule {\n return this.em.get('PageManager');\n }\n //@ts-ignore\n get Components(): DomComponentsModule {\n return this.em.get('DomComponents');\n }\n //@ts-ignore\n get DomComponents(): DomComponentsModule {\n return this.em.get('DomComponents');\n }\n //@ts-ignore\n get Layers(): LayerManagerModule {\n return this.em.get('LayerManager');\n }\n //@ts-ignore\n get LayerManager(): LayerManagerModule {\n return this.em.get('LayerManager');\n }\n //@ts-ignore\n get Css(): CssComposerModule {\n return this.em.get('CssComposer');\n }\n //@ts-ignore\n get CssComposer(): CssComposerModule {\n return this.em.get('CssComposer');\n }\n //@ts-ignore\n get Storage(): StorageManagerModule {\n return this.em.get('StorageManager');\n }\n //@ts-ignore\n get StorageManager(): StorageManagerModule {\n return this.em.get('StorageManager');\n }\n //@ts-ignore\n get Assets(): AssetManagerModule {\n return this.em.get('AssetManager');\n }\n //@ts-ignore\n get AssetManager(): AssetManagerModule {\n return this.em.get('AssetManager');\n }\n //@ts-ignore\n get Blocks(): BlockManagerModule {\n return this.em.get('BlockManager');\n }\n //@ts-ignore\n get BlockManager(): BlockManagerModule {\n return this.em.get('BlockManager');\n }\n //@ts-ignore\n get Traits(): TraitManagerModule {\n return this.em.get('TraitManager');\n }\n //@ts-ignore\n get TraitManager(): TraitManagerModule {\n return this.em.get('TraitManager');\n }\n //@ts-ignore\n get Selectors(): SelectorManagerCollectionModule {\n return this.em.get('SelectorManager');\n }\n //@ts-ignore\n get SelectorManager(): SelectorManagerCollectionModule {\n return this.em.get('SelectorManager');\n }\n //@ts-ignore\n get Styles(): StyleManagerModule {\n return this.em.get('StyleManager');\n }\n //@ts-ignore\n get StyleManager(): StyleManagerModule {\n return this.em.get('StyleManager');\n }\n //@ts-ignore\n get Devices(): DeviceManagerModule {\n return this.em.get('DeviceManager');\n }\n //@ts-ignore\n get DeviceManager(): DeviceManagerModule {\n return this.em.get('DeviceManager');\n }\n\n /**\n * Returns configuration object\n * @returns {any} Returns the configuration object or the value of the specified property\n */\n getConfig(prop?: string) {\n const config = this.config;\n //@ts-ignore\n return isUndefined(prop) ? config : config[prop];\n }\n\n /**\n * Returns HTML built inside canvas\n * @param {Object} [opts={}] Options\n * @param {Component} [opts.component] Return the HTML of a specific Component\n * @param {Boolean} [opts.cleanId=false] Remove unnecessary IDs (eg. those created automatically)\n * @returns {string} HTML string\n */\n getHtml(opts: any) {\n return this.em.getHtml(opts);\n }\n\n /**\n * Returns CSS built inside canvas\n * @param {Object} [opts={}] Options\n * @param {Component} [opts.component] Return the CSS of a specific Component\n * @param {Boolean} [opts.json=false] Return an array of CssRules instead of the CSS string\n * @param {Boolean} [opts.avoidProtected=false] Don't include protected CSS\n * @param {Boolean} [opts.onlyMatched=false] Return only rules matched by the passed component.\n * @param {Boolean} [opts.keepUnusedStyles=false] Force keep all defined rules. Toggle on in case output looks different inside/outside of the editor.\n * @returns {String|Array} CSS string or array of CssRules\n */\n getCss(opts: any) {\n return this.em.getCss(opts);\n }\n\n /**\n * Returns JS of all components\n * @param {Object} [opts={}] Options\n * @param {Component} [opts.component] Get the JS of a specific component\n * @returns {String} JS string\n */\n getJs(opts: any) {\n return this.em.getJs(opts);\n }\n\n /**\n * Return the complete tree of components. Use `getWrapper` to include also the wrapper\n * @return {Components}\n */\n getComponents() {\n return this.em.get('DomComponents').getComponents();\n }\n\n /**\n * Return the wrapper and its all components\n * @return {Component}\n */\n getWrapper() {\n return this.em.get('DomComponents').getWrapper();\n }\n\n /**\n * Set components inside editor's canvas. This method overrides actual components\n * @param {Array|Object|string} components HTML string or components model\n * @param {Object} opt the options object to be used by the [setComponents]{@link em#setComponents} method\n * @return {this}\n * @example\n * editor.setComponents('
New component
');\n * // or\n * editor.setComponents({\n * type: 'text',\n * classes:['cls'],\n * content: 'New component'\n * });\n */\n setComponents(components: any, opt = {}) {\n this.em.setComponents(components, opt);\n return this;\n }\n\n /**\n * Add components\n * @param {Array|Object|string} components HTML string or components model\n * @param {Object} opts Options\n * @param {Boolean} [opts.avoidUpdateStyle=false] If the HTML string contains styles,\n * by default, they will be created and, if already exist, updated. When this option\n * is true, styles already created will not be updated.\n * @return {Array}\n * @example\n * editor.addComponents('
New component
');\n * // or\n * editor.addComponents({\n * type: 'text',\n * classes:['cls'],\n * content: 'New component'\n * });\n */\n addComponents(components: any, opts: any) {\n return this.getWrapper().append(components, opts);\n }\n\n /**\n * Returns style in JSON format object\n * @return {Object}\n */\n getStyle() {\n return this.em.get('CssComposer').getAll();\n }\n\n /**\n * Set style inside editor's canvas. This method overrides actual style\n * @param {Array|Object|string} style CSS string or style model\n * @return {this}\n * @example\n * editor.setStyle('.cls{color: red}');\n * //or\n * editor.setStyle({\n * selectors: ['cls'],\n * style: { color: 'red' }\n * });\n */\n setStyle(style: any, opt = {}) {\n this.em.setStyle(style, opt);\n return this;\n }\n\n /**\n * Add styles to the editor\n * @param {Array|Object|string} style CSS string or style model\n * @returns {Array} Array of created CssRule instances\n * @example\n * editor.addStyle('.cls{color: red}');\n */\n addStyle(style: any, opts = {}) {\n return this.em.addStyle(style, opts);\n }\n\n /**\n * Returns the last selected component, if there is one\n * @return {Model}\n */\n getSelected() {\n return this.em.getSelected();\n }\n\n /**\n * Returns an array of all selected components\n * @return {Array}\n */\n getSelectedAll() {\n return this.em.getSelectedAll();\n }\n\n /**\n * Get a stylable entity from the selected component.\n * If you select a component without classes the entity is the Component\n * itself and all changes will go inside its 'style' attribute. Otherwise,\n * if the selected component has one or more classes, the function will\n * return the corresponding CSS Rule\n * @return {Model}\n */\n getSelectedToStyle() {\n let selected = this.em.getSelected();\n\n if (selected) {\n return this.StyleManager.getModelToStyle(selected);\n }\n }\n\n /**\n * Select a component\n * @param {Component|HTMLElement} el Component to select\n * @param {Object} [opts] Options\n * @param {Boolean} [opts.scroll] Scroll canvas to the selected element\n * @return {this}\n * @example\n * // Select dropped block\n * editor.on('block:drag:stop', function(model) {\n * editor.select(model);\n * });\n */\n select(el: any, opts: any) {\n this.em.setSelected(el, opts);\n return this;\n }\n\n /**\n * Add component to selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectAdd(model);\n */\n selectAdd(el: any) {\n this.em.addSelected(el);\n return this;\n }\n\n /**\n * Remove component from selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectRemove(model);\n */\n selectRemove(el: any) {\n this.em.removeSelected(el);\n return this;\n }\n\n /**\n * Toggle component selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectToggle(model);\n */\n selectToggle(el: any) {\n this.em.toggleSelected(el);\n return this;\n }\n\n /**\n * Returns, if active, the Component enabled in rich text editing mode.\n * @returns {Component|null}\n * @example\n * const textComp = editor.getEditing();\n * if (textComp) {\n * console.log('HTML: ', textComp.toHTML());\n * }\n */\n getEditing() {\n return this.em.getEditing();\n }\n\n /**\n * Set device to the editor. If the device exists it will\n * change the canvas to the proper width\n * @param {string} name Name of the device\n * @return {this}\n * @example\n * editor.setDevice('Tablet');\n */\n setDevice(name: string) {\n this.em.set('device', name);\n return this;\n }\n\n /**\n * Return the actual active device\n * @return {string} Device name\n * @example\n * var device = editor.getDevice();\n * console.log(device);\n * // 'Tablet'\n */\n getDevice() {\n return this.em.get('device');\n }\n\n /**\n * Execute command\n * @param {string} id Command ID\n * @param {Object} options Custom options\n * @return {*} The return is defined by the command\n * @example\n * editor.runCommand('myCommand', {someValue: 1});\n */\n runCommand(id: string, options = {}) {\n return this.em.get('Commands').run(id, options);\n }\n\n /**\n * Stop the command if stop method was provided\n * @param {string} id Command ID\n * @param {Object} options Custom options\n * @return {*} The return is defined by the command\n * @example\n * editor.stopCommand('myCommand', {someValue: 1});\n */\n stopCommand(id: string, options = {}) {\n return this.em.get('Commands').stop(id, options);\n }\n\n /**\n * Store data to the current storage.\n * This will reset the counter of changes (`editor.getDirtyCount()`).\n * @param {Object} [options] Storage options.\n * @returns {Object} Stored data.\n * @example\n * const storedData = await editor.store();\n */\n async store(options: any) {\n return await this.em.store(options);\n }\n\n /**\n * Load data from the current storage.\n * @param {Object} [options] Storage options.\n * @returns {Object} Loaded data.\n * @example\n * const data = await editor.load();\n */\n async load(options: any) {\n return await this.em.load(options);\n }\n\n /**\n * Get the JSON project data, which could be stored and loaded back with `editor.loadProjectData(json)`\n * @returns {Object}\n * @example\n * console.log(editor.getProjectData());\n * // { pages: [...], styles: [...], ... }\n */\n getProjectData() {\n return this.em.storeData();\n }\n\n /**\n * Load data from the JSON project\n * @param {Object} data Project to load\n * @example\n * editor.loadProjectData({ pages: [...], styles: [...], ... })\n */\n loadProjectData(data: any) {\n return this.em.loadData(data);\n }\n\n storeData() {\n return this.em.storeData();\n }\n\n loadData(data: any) {\n return this.em.loadData(data);\n }\n\n /**\n * Returns container element. The one which was indicated as 'container'\n * on init method\n * @return {HTMLElement}\n */\n getContainer() {\n return this.config.el;\n }\n\n /**\n * Return the count of changes made to the content and not yet stored.\n * This count resets at any `store()`\n * @return {number}\n */\n getDirtyCount() {\n return this.em.getDirtyCount();\n }\n\n /**\n * Reset the counter of changes.\n */\n clearDirtyCount() {\n return this.em.clearDirtyCount();\n }\n\n /**\n * Update editor dimension offsets\n *\n * This method could be useful when you update, for example, some position\n * of the editor element (eg. canvas, panels, etc.) with CSS, where without\n * refresh you'll get misleading position of tools\n * @param {Object} [options] Options\n * @param {Boolean} [options.tools=false] Update the position of tools (eg. rich text editor, component highlighter, etc.)\n */\n refresh(opts?: any) {\n this.em.refreshCanvas(opts);\n }\n\n /**\n * Replace the built-in Rich Text Editor with a custom one.\n * @param {Object} obj Custom RTE Interface\n * @example\n * editor.setCustomRte({\n * // Function for enabling custom RTE\n * // el is the HTMLElement of the double clicked Text Component\n * // rte is the same instance you have returned the first time you call\n * // enable(). This is useful if need to check if the RTE is already enabled so\n * // ion this case you'll need to return the RTE and the end of the function\n * enable: function(el, rte) {\n * rte = new MyCustomRte(el, {}); // this depends on the Custom RTE API\n * ...\n * return rte; // return the RTE instance\n * }\n *\n * // Disable the editor, called for example when you unfocus the Text Component\n * disable: function(el, rte) {\n * rte.blur(); // this depends on the Custom RTE API\n * }\n *\n * // Called when the Text Component is focused again. If you returned the RTE instance\n * // from the enable function, the enable won't be called again instead will call focus,\n * // in this case to avoid double binding of the editor\n * focus: function (el, rte) {\n * rte.focus(); // this depends on the Custom RTE API\n * }\n * });\n */\n setCustomRte(obj: any) {\n this.RichTextEditor.customRte = obj;\n }\n\n /**\n * Replace the default CSS parser with a custom one.\n * The parser function receives a CSS string as a parameter and expects\n * an array of CSSRule objects as a result. If you need to remove the\n * custom parser, pass `null` as the argument\n * @param {Function|null} parser Parser function\n * @return {this}\n * @example\n * editor.setCustomParserCss(css => {\n * const result = [];\n * // ... parse the CSS string\n * result.push({\n * selectors: '.someclass, div .otherclass',\n * style: { color: 'red' }\n * })\n * // ...\n * return result;\n * });\n */\n setCustomParserCss(parser: any) {\n this.Parser.getConfig().parserCss = parser;\n return this;\n }\n\n /**\n * Change the global drag mode of components.\n * To get more about this feature read: https://github.com/artf/grapesjs/issues/1936\n * @param {String} value Drag mode, options: 'absolute' | 'translate'\n * @returns {this}\n */\n setDragMode(value: string) {\n this.em.setDragMode(value);\n return this;\n }\n\n /**\n * Trigger event log message\n * @param {*} msg Message to log\n * @param {Object} [opts={}] Custom options\n * @param {String} [opts.ns=''] Namespace of the log (eg. to use in plugins)\n * @param {String} [opts.level='debug'] Level of the log, `debug`, `info`, `warning`, `error`\n * @return {this}\n * @example\n * editor.log('Something done!', { ns: 'from-plugin-x', level: 'info' });\n * // This will trigger following events\n * // `log`, `log:info`, `log-from-plugin-x`, `log-from-plugin-x:info`\n * // Callbacks of those events will always receive the message and\n * // options, as arguments, eg:\n * // editor.on('log:info', (msg, opts) => console.info(msg, opts))\n */\n log(msg: string, opts = {}) {\n this.em.log(msg, opts);\n return this;\n }\n\n /**\n * Translate label\n * @param {String} key Label to translate\n * @param {Object} [opts] Options for the translation\n * @param {Object} [opts.params] Params for the translation\n * @param {Boolean} [opts.noWarn] Avoid warnings in case of missing resources\n * @returns {String}\n * @example\n * editor.t('msg');\n * // use params\n * editor.t('msg2', { params: { test: 'hello' } });\n * // custom local\n * editor.t('msg2', { params: { test: 'hello' } l: 'it' });\n */\n t(...args: any[]) {\n return this.em.t(...args);\n }\n\n /**\n * Attach event\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n on(event: string, callback: EventHandler) {\n this.em.on(event, callback);\n return this;\n }\n\n /**\n * Attach event and detach it after the first run\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n once(event: string, callback: EventHandler) {\n this.em.once(event, callback);\n return this;\n }\n\n /**\n * Detach event\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n off(event: string, callback: EventHandler) {\n this.em.off(event, callback);\n return this;\n }\n\n /**\n * Trigger event\n * @param {string} event Event to trigger\n * @return {this}\n */\n trigger(eventName: string, ...args: any[]) {\n this.em.trigger.apply(this.em, [eventName, ...args]);\n return this;\n }\n\n /**\n * Destroy the editor\n */\n destroy() {\n if (!this.em) return;\n this.em.destroyAll();\n this.editorView = undefined;\n }\n\n /**\n * Returns editor element\n * @return {HTMLElement}\n * @private\n */\n getEl() {\n return this.editorView?.el;\n }\n\n /**\n * Returns editor model\n * @return {Model}\n * @private\n */\n getModel() {\n return this.em;\n }\n\n /**\n * Render editor\n * @return {HTMLElement}\n */\n render() {\n this.editorView?.remove();\n this.editorView = new EditorView(this.em);\n return this.editorView.render().el;\n }\n\n /**\n * Trigger a callback once the editor is loaded and rendered.\n * The callback will be executed immediately if the method is called on the already rendered editor.\n * @param {Function} clb Callback to trigger\n * @example\n * editor.onReady(() => {\n * // perform actions\n * });\n */\n onReady(clb: EventHandler) {\n this.em.get('ready') ? clb(this) : this.em.on('load', clb);\n }\n\n /**\n * Print safe HTML by using ES6 tagged template strings.\n * @param {Array} literals\n * @param {Array} substs\n * @returns {String}\n * @example\n * const unsafeStr = '';\n * const safeStr = 'Hello';\n * // Use `$${var}` to avoid escaping\n * const strHtml = editor.html`Escaped ${unsafeStr} unescaped $${safeStr}`;\n */\n html = html;\n}\n","export default {\n plugins: [],\n};\n","/**\n * File made for IE/Edge support\n * https://github.com/artf/grapesjs/issues/214\n */\nimport { hasWin } from './mixins';\n\nexport default () => {\n /**\n * Check if IE/Edge\n * @return {Boolean}\n */\n const isIE = () => {\n let match;\n const agent = window.navigator.userAgent;\n const rules = [\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ];\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i];\n match = rule[1].exec(agent);\n if (match) break;\n }\n\n return !!match;\n };\n\n if (hasWin() && isIE()) {\n const originalCreateHTMLDocument = DOMImplementation.prototype.createHTMLDocument;\n DOMImplementation.prototype.createHTMLDocument = title => {\n if (!title) title = '';\n return originalCreateHTMLDocument.apply(document.implementation, [title]);\n };\n }\n};\n","import { isElement, isFunction } from 'underscore';\nimport $ from './utils/cash-dom';\nimport Editor from './editor';\nimport polyfills from './utils/polyfills';\nimport { getGlobal } from './utils/mixins';\nimport PluginManager from './plugin_manager';\n\npolyfills();\n\nconst plugins = new PluginManager();\nconst editors = [];\nconst defaultConfig = {\n // If true renders editor on init\n autorender: 1,\n\n // Array of plugins to init\n plugins: [],\n\n // Custom options for plugins\n pluginsOpts: {},\n};\n\nexport default {\n $,\n\n editors,\n\n plugins,\n\n // Will be replaced on build\n version: __GJS_VERSION__,\n\n /**\n * Initialize the editor with passed options\n * @param {Object} config Configuration object\n * @param {string|HTMLElement} config.container Selector which indicates where render the editor\n * @param {Boolean} [config.autorender=true] If true, auto-render the content\n * @param {Array} [config.plugins=[]] Array of plugins to execute on start\n * @param {Object} [config.pluginsOpts={}] Custom options for plugins\n * @param {Boolean} [config.headless=false] Init headless editor\n * @return {Editor} Editor instance\n * @example\n * var editor = grapesjs.init({\n * container: '#myeditor',\n * components: '
Hello world
',\n * style: '.hello{color: red}',\n * })\n */\n init(config = {}) {\n const { headless } = config;\n const els = config.container;\n if (!els && !headless) throw new Error(\"'container' is required\");\n config = { ...defaultConfig, ...config, grapesjs: this };\n config.el = !headless && (isElement(els) ? els : document.querySelector(els));\n const editor = new Editor(config, { $ });\n const em = editor.getModel();\n\n // Load plugins\n config.plugins.forEach(pluginId => {\n let plugin = isFunction(pluginId) ? pluginId : plugins.get(pluginId);\n const plgOptions = config.pluginsOpts[pluginId] || {};\n\n // Try to search in global context\n if (!plugin) {\n const wplg = getGlobal()[pluginId];\n plugin = wplg?.default || wplg;\n }\n\n if (plugin) {\n plugin(editor, plgOptions);\n } else if (isFunction(pluginId)) {\n pluginId(editor, plgOptions);\n } else {\n em.logWarning(`Plugin ${pluginId} not found`, {\n context: 'plugins',\n plugin: pluginId,\n });\n }\n });\n\n // Execute `onLoad` on modules once all plugins are initialized.\n // A plugin might have extended/added some custom type so this\n // is a good point to load stuff like components, css rules, etc.\n em.loadOnStart();\n config.autorender && !headless && editor.render();\n editors.push(editor);\n\n return editor;\n },\n};\n","import defaults from './config/config';\n\nexport default config => {\n var c = config || {};\n\n // Set default options\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n var plugins = {};\n\n return {\n /**\n * Add new plugin. Plugins could not be overwritten\n * @param {string} id Plugin ID\n * @param {Function} plugin Function which contains all plugin logic\n * @return {Function} The plugin function\n * @example\n * PluginManager.add('some-plugin', function(editor){\n * editor.Commands.add('new-command', {\n * run: function(editor, senderBtn){\n * console.log('Executed new-command');\n * }\n * })\n * });\n */\n add(id, plugin) {\n if (plugins[id]) {\n return plugins[id];\n }\n\n plugins[id] = plugin;\n return plugin;\n },\n\n /**\n * Returns plugin by ID\n * @param {string} id Plugin ID\n * @return {Function|undefined} Plugin\n * @example\n * var plugin = PluginManager.get('some-plugin');\n * plugin(editor);\n */\n get(id) {\n return plugins[id];\n },\n\n /**\n * Returns object with all plugins\n * @return {Object}\n */\n getAll() {\n return plugins;\n },\n };\n};\n"],"names":["root","factory","exports","module","define","amd","globalThis","window","this","_","Backbone","core_slice","Array","prototype","slice","apply","fn","ctx","args","length","call","arr","index","hasKeys","obj","keys","isArray","arguments","all","key","getMagicFusionIndex","callstackWasIndexed","magicFusionIndex","indexCycle","defer","ObjectRegistry","registeredObjects","cidIndexes","onoff","which","objects","i","l","objectRegistry","register","unregister","isFunction","actionUndoRedo","action","type","undoTypes","object","before","after","options","managerUndoRedo","manager","stack","magic","everything","isCurrentlyUndoRedoing","pointer","actions","isUndo","clone","models","at","where","get","pop","shift","trigger","validateUndoActionCreation","undoTypesType","condition","addToStack","track","res","diff","add","maximumStackLength","isRegistered","cid","contains","push","splice","indexOf","map","concat","UndoTypes","collection","ignore","model","remove","undefined","isEmpty","each","unset","set","unsetData","afterAttributes","changedAttributes","keysAfter","previousAttributes","pick","keysPrevious","val","reset","previousModels","OwnedUndoTypes","manipulateUndoType","manipType","undoType","fns","undoTypesInstance","isObject","extend","Action","Model","defaults","undo","attributes","redo","UndoStack","Collection","Infinity","setMaxLength","UndoManager","initialize","attr","on","value","startTracking","isArguments","stopTracking","isTracking","_addToStack","unregisterAll","undoAll","redoAll","isAvailable","s","merge","undoManager","addUndoType","changeUndoType","removeUndoType","clear","defaultAttributes","self","g","global","$","previousBackbone","VERSION","noConflict","emulateHTTP","emulateJSON","addMethod","method","attribute","iteratee","context","cb","defaultVal","unshift","addUnderscoreMethods","Class","methods","instance","_isModel","modelMatcher","isString","attrs","matcher","matches","Events","eventSplitter","eventsApi","events","name","callback","opts","names","test","split","internalOn","listening","_events","onApi","_listeners","id","listenTo","_listenId","uniqueId","listeningTo","_listeningTo","thisId","objId","count","handlers","off","offApi","listeners","stopListening","ids","remaining","j","handler","_callback","once","onceMap","bind","listenToOnce","offer","Math","max","triggerApi","objEvents","allEvents","triggerEvents","ev","a1","a2","a3","unbind","cidPrefix","parse","result","changed","validationError","idAttribute","toJSON","sync","escape","has","_validate","silent","changes","changing","_changing","_previousAttributes","current","prev","isEqual","_pending","hasChanged","old","size","previous","fetch","success","resp","serverAttrs","wrapError","save","wait","validate","isNew","patch","xhr","destroy","url","base","urlError","replace","encodeURIComponent","constructor","isValid","error","values","pairs","invert","omit","chain","comparator","_reset","setOptions","addOptions","array","insert","min","tail","singular","removed","_removeModels","added","merged","toAdd","toMerge","toRemove","modelMap","sort","sortable","sortAttr","existing","_prepareModel","_addReference","orderChanged","some","m","_removeReference","_byId","modelId","first","findWhere","Error","sortBy","pluck","create","callbackOpts","_onModelEvent","event","prevId","forEach","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","any","include","includes","invoke","toArray","head","take","initial","rest","drop","last","without","difference","shuffle","lastIndexOf","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","selector","$el","render","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","match","delegate","eventName","listener","undelegate","_createElement","document","createElement","className","_setAttributes","methodMap","params","dataType","data","contentType","JSON","stringify","_method","beforeSend","setRequestHeader","processData","textStatus","errorThrown","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","history","fragment","_extractParameters","execute","navigate","optional","RegExp","exec","param","decodeURIComponent","History","checkUrl","location","routeStripper","rootStripper","pathStripper","started","interval","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","href","getHash","getPath","path","charAt","getFragment","_usePushState","_wantsHashChange","start","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","rootPath","iframe","src","style","display","tabIndex","body","iWindow","insertBefore","firstChild","contentWindow","open","close","hash","addEventListener","attachEvent","_checkUrlInterval","setInterval","loadUrl","stop","removeEventListener","detachEvent","removeChild","clearInterval","e","title","assign","_updateHash","protoProps","staticProps","child","parent","__super__","CodeMirror","extendMode","commentStart","commentEnd","newlineAfterToken","_type","content","textAfter","state","jsonMode","lexical","inlineElements","inline","configuration","defineExtension","isComment","from","to","cm","curMode","innerMode","getMode","getTokenAt","mode","operation","replaceRange","line","ch","setCursor","selText","getRange","startIndex","endIndex","substr","substring","cmInstance","indentLine","outer","text","copyState","tabSize","getOption","out","lines","atSol","newline","stream","StringStream","eol","inner","token","cur","pos","string","blankLine","end","setSelection","getCursor","mod","userAgent","navigator","platform","gecko","ie_upto10","ie_11up","edge","ie","ie_version","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","Number","flipCtrlCmd","captureRightClick","classTest","cls","range","rmClass","node","removeChildren","childNodes","removeChildrenAndAdd","appendChild","elt","tag","cssText","createTextNode","eltP","setAttribute","nodeType","parentNode","host","activeElt","activeElement","shadowRoot","addClass","joinClasses","a","b","as","createRange","endNode","r","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","f","copyObj","target","overwrite","prop","hasOwnProperty","countColumn","startValue","search","n","nextTab","selectionStart","selectionEnd","_e","Delayed","time","onTimeout","Date","setTimeout","ms","clearTimeout","scrollerGap","Pass","toString","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","col","skipped","spaceStrs","spaceStr","lst","insertSorted","score","priority","nothing","createObj","props","inst","Object","nonASCIISingleCaseWordChar","isWordCharBasic","toUpperCase","toLowerCase","isWordChar","helper","source","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","findFirst","pred","midF","mid","ceil","floor","iterateBidiSections","order","found","part","level","bidiOther","getBidiPartAt","sticky","bidiOrdering","lowTypes","arabicTypes","charType","code","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","direction","outerType","len","types","i$1","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","i$5","cur$1","type$4","i$6","end$1","replace$1","j$1","i$7","isRTL","j$2","nstart","reverse","getOrder","noHandlers","emitter","_handlers","getHandlers","signal","signalDOMEvent","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","nl","rt","hasSelection","getSelection","te","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","hasBadZoomedRects","normal","fromRange","abs","modes","mimeModes","defineMode","dependencies","defineMIME","mime","spec","resolveMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","properties","nstate","info","startState","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","chunk","children","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","height","lineNo","no","lineAtHeight","h","lh","isLine","lineNumberFor","String","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","clipPos","clipToLen","linelen","clipPosArray","sol","peek","next","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","hideFirstChars","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","o","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","styleClasses","highlightFrontier","modeFrontier","precise","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","callBlankLine","readToken","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","indented","retreatFrontier","sawReadOnlySpans","sawCollapsedSpans","seeReadOnlySpans","seeCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","addMarkedSpan","op","inThisOp","WeakSet","markedSpans","attachLine","markedSpansBefore","startCh","isInsert","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","startsBefore","stretchSpansOverChange","change","full","oldFirst","oldLast","sameLine","offset","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","removeReadOnlyRanges","markers","mark","readOnly","parts","mk","p","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","found$1","findMaxLine","d","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","updateLine","estHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","startStyle","endStyle","css","displayText","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","foundBookmarks","endStyles","upto","tokenText","LineView","hidden","buildViewArray","nextPos","view","operationGroup","pushOperation","ops","ownsGroup","delayedCallbacks","fireCallbacksForOps","group","callbacks","cursorActivityCalled","finishOperation","endCb","orphanDelayedCallbacks","signalLater","list","fireOrphanDelayed","delayed","updateLineForChanges","dims","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","updateLineBackground","background","wrap","getLineContent","ext","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","k","gutterSpecs","gutterWidth","alignable","isWidget","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","parseInt","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","ensureLineHeights","rect","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","bottom","top","mapFromLineView","updateExternalMeasurement","lineMeasure","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","measureCharInner","bogus","rtop","rbottom","measureText","nullRect","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","place","maybeUpdateRectForZooming","rSpan","charWidth","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","partPos","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","posFromMouse","liberal","forRect","space","clientX","clientY","e$1","colDiff","round","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","empty","showCursorWhenSelecting","drawSelectionCursor","drawSelectionRange","cursor","cursorHeight","getWrapperElement","charPos","otherCursor","cmpCoords","padding","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","blinker","cursorDiv","visibility","cursorBlinkRate","hasFocus","onBlur","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","draggingText","selForContextMenu","receivedFocus","updateHeightsInViewport","prevBottom","lineDiv","viewTop","oldHeight","mustScroll","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","maybeScrollWindow","doScroll","innerHeight","scrollNode","scrollIntoView","scrollPosIntoView","margin","limit","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","updateScrollTop","setScrollLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToRange","scrollToCoordsRange","sPos","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","markArrays","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","scrollbarsClipped","marginBottom","borderRightWidth","selectionSnapshot","active","anchorNode","anchorOffset","focusNode","focusOffset","restoreSelection","snapshot","nodeName","removeAllRanges","addRange","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","toUpdate","selSnapshot","patchDisplay","selectionDiv","reportedViewFrom","reportedViewTo","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumInnerWidth","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","init","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","movedX","movedY","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","hint","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","linesFor","firstLine","lastText","lastSpans","nlines","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","directionChanged","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","addSelectionToHistory","clearRedo","dest","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","newChanges","extendRange","posBefore","extendSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","filterSelectionChange","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","v","shiftDoc","distance","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","addLineWidget","insertAt","aboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","markTextShared","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","withOp","visual","dHeight","SharedTextMarker","cloneNode","isParent","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","getValue","join","lineSeparator","setValue","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","t","readTextFromFile","file","allowDropFileTypes","reader","onerror","onload","readAsText","text$1","getData","selected","onDragStart","setData","effectAllowed","setDragImage","img","_top","onDragOver","frag","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","registerGlobalHandlers","resizeTimer","onResize","setSize","keyNames","fromCharCode","keyMap","normalizeKeyName","alt","ctrl","cmd","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","moveVisually","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","nextCh","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","lookupKeyForEditor","keyMaps","extraKeys","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","handleKeyBinding","motion","handleCharBinding","lastStoppedKey","onKeyDown","getField","handled","showCrossHair","up","onKeyUp","onKeyPress","charCode","lastClick","lastDoubleClick","DOUBLECLICK_DELAY","PastClick","clickRepeat","now","compare","onMouseDown","supportsTouch","clickInGutter","repeat","selectingText","handleMappedButton","leftButtonDown","onContextMenu","configureMouse","option","unit","addNew","moveOnDrag","contained","behavior","dragDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","rangeForUnit","findWordAt","ourRange","ourIndex","startSel","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","bidiSimplify","editorSize","counter","curCount","move","buttons","anchorLine","boundary","headIndex","usePart","gutterEvent","prevent","mX","mY","touches","lineBox","contextMenuInGutter","themeChanged","theme","Init","optionHandlers","defineOptions","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","spellcheck","autocorrect","autocapitalize","detach","attach","wrappingChanged","integer","blur","readOnlyChanged","screenReaderLabelChanged","dragDropChanged","resetPosition","funcs","dragFunctions","toggle","enter","over","leave","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","registerEventHandlers","finishInit","initHooks","textRendering","word","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","pageX","pageY","inp","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","hiddenTextarea","border","addEditorMethods","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getLineTokens","getTokenTypeAt","getHelper","getHelpers","help","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","hitSide","rtlMoveVisually","findPosV","goalColumn","goals","headPos","startChar","check","scrollTo","getScrollInfo","interpret","swapDoc","phrase","phraseText","phrases","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","origDir","lineDir","findNextLine","moveOnce","boundToLine","astral","sawType","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","isInGutter","scan","badPos","bad","domTextBetween","closing","extraLinebreak","recognizeMarker","addText","walk","cmText","markerID","isBlock","textContent","nodeValue","domToPos","lineNode","locateNodeInLineView","textNode","topNode","curNode","previousSibling","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","contentEditable","updateFromDOM","readFromDOMSoon","forceCompositionEnd","label","removeAttribute","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","TextareaInput","prevInput","pollingFast","fromTextArea","textarea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","addLegacyProps","cmpPos","createField","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","dontDelegate","func","defineDocExtension","version","keySet","config","parserConfig","propertyKeywords","tokenHooks","documentTypes","mediaTypes","mediaFeatures","mediaValueKeywords","nonStandardPropertyKeywords","fontProperties","counterDescriptors","colorKeywords","valueKeywords","allowNested","lineComment","supportsAtComponent","highlightNonStandardPropertyKeywords","ret","tp","tokenBase","tokenize","tokenString","tokenParenthesized","quote","escaped","pushContext","popContext","pass","states","popAndPass","wordAsValue","stateArg","_stream","atBlock","cx","blockCommentStart","blockCommentEnd","blockCommentContinue","fold","documentTypes_","mediaTypes_","mediaFeatures_","mediaValueKeywords_","propertyKeywords_","nonStandardPropertyKeywords_","colorKeywords_","valueKeywords_","allWords","tokenCComment","maybeEnd","defaultTags","script","maybeBackup","pat","attrRegexpCache","getAttrRegexp","regexp","getAttrValue","getTagRegexp","anchored","addTags","findMatchingMode","tagInfo","tagText","htmlMode","multilineTagIndentFactor","multilineTagIndentPastTag","allowMissingTagName","tags","configTags","configScript","scriptTypes","html","htmlState","inTag","endTagA","endTag","localState","localMode","local","statementIndent","jsonldMode","jsonld","json","trackScope","isTS","typescript","wordRE","wordCharacters","keywords","kw","A","B","C","D","operator","atom","isOperatorChar","isJsonldKeyword","readRegexp","inSet","cont","tokenComment","expressionAllowed","tokenQuasi","lastType","propertyIsEnumerable","brackets","findFatArrow","fatArrowAt","arrow","depth","sawSomething","bracket","atomicTypes","JSLexical","inScope","varname","localVars","vars","parseJS","cc","marked","expression","statement","lex","inList","block","newContext","registerVarScoped","Var","globalVars","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","poplex","expect","wanted","exp","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","enumdef","typename","typeexpr","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","maybeTarget","expr","property","continueQuasi","targetNoComma","maybeTypeArgs","getterSetter","afterprop","maybetype","what","sep","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprops","typearg","maybeReturnType","quasiType","typeprop","functiondecl","continueQuasiType","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","forspec1","forspec2","classNameAfter","classBody","classfield","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","isContinuedStatement","basecolumn","firstChar","c","doubleIndentSwitch","closeBrackets","skipExpression","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","editorConf","config_","setStyle","inText","parser","inBlock","doctype","baseState","tagStart","inAttribute","stringStartCol","closure","isInAttribute","terminator","lower","startOfLine","noIndent","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","attrEqState","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","alignCDATA","tagAfter","grabbers","skipAttribute","xmlCurrentTag","xmlCurrentContext","ModuleLegacy","__getConfig","storageKey","getAll","onResult","coll","err","__logWarn","isDef","acc","def","conf","deepMerge","em","__catchAllEvent","collections","entity","md","removeBefore","abort","__onAllEvent","elTo","getConfig","appendTo","isElement","logWarning","ln","allMap","getAllMap","createId","assets","noAssets","stylePrefix","upload","uploadName","headers","credentials","multiUpload","autoAdd","customFetch","uploadFile","embedAsBase64","handleAdd","beforeUpload","showUrlInput","custom","dropzone","openAssetsOnDrop","dropzoneContent","Asset","getFilename","getDefaults","AssetImage","unitDim","AssetView","pfx","ppfx","pStylePrefix","am","__getBehaviour","getPreview","getInfo","innerHTML","template","AssetImageView","dim","__getBhv","onClick","updateTarget","onDblClick","onSelect","stopImmediatePropagation","click","dblclick","Assets","TypeableCollection","isType","AssetsView","renderAssets","addToAsset","removedAsset","deselectAll","getAddInput","trim","getAssetsEl","globalCollection","inputUrl","toggleNoAssets","addAsset","fragmentEl","rendered","typeView","assetsEl","hide","append","removeClass","fuRendered","fu","FileUploaderView","uploadId","disableUpload","__propEv","console","onUploadEnd","clb","FormData","reqHead","onUploadStart","fetchOpts","then","status","Promise","onUploadResponse","catch","onUploadError","that","uploadForm","ondragover","ondragleave","ondrop","addedCls","edEl","editor","frameEl","getBody","updatedCls","dropzoneCls","cleanEditorElCls","onDragLeave","getSelected","runCommand","Modal","AssetManager","setTarget","item","initDrop","response","promises","mimeTypeMatcher","promise","resolve","image","Image","readAsDataURL","evAll","evPfx","evSelect","evUpdate","evAdd","evRemove","evRemoveBefore","evCustom","evOpen","evClose","evUpload","evUploadStart","evUploadEnd","evUploadError","evUploadRes","assetsVis","assetCmd","Module","uploadStart","uploadEnd","uploadError","uploadResponse","__initListen","getAllVisible","debounce","__trgCustom","__customData","bhv","isOpen","asset","complete","run","isActive","__remove","store","getProjectData","load","loadProjectData","getContainer","assts","toRender","__viewParams","FileUploader","addType","definition","getType","getTypes","FileUpload","onLoad","postRender","editorView","initDropzone","__behaviour","_bhv","appendOnClick","blocks","Block","media","category","activate","resetId","disable","ctg","Blocks","Category","Categories","BlockView","mousedown","dragstart","drag","dragend","endDrag","sorter","getSorter","setDropContent","validTarget","getEl","valid","components","getWrapper","setSelected","refreshCanvas","setDragHelper","startSort","__getModule","__startDrag","__drag","__endDrag","endMove","class","clsAdd","hasDnd","prefix","CategoryView","caretR","caretD","iconClass","activeClass","updateVisibility","getIconEl","getBlocksEl","iconEl","blocksEl","BlocksView","bindAll","categories","renderedCategories","noCatClass","blockContClass","catsClass","addTo","tac","grabbingCls","canvas","utils","Sorter","placer","getPlacerEl","containerSel","itemSel","onStart","onDrag","onEndMove","onMove","getFrameEl","contentDocument","wmargin","nested","canvasRelative","stopDefault","runDefault","oldActive","ignoreCategories","catModel","catId","catView","getCategoriesEl","catsEl","evDrag","evDragStart","evDragStop","BlockManager","blocksVisible","bm","startDrag","dragStop","getContent","_dragBlock","dragResult","dragContent","oldKey","toActive","toSelect","onAll","getFrames","frame","__getFrameViews","fv","droppable","startCustom","endCustom","blocksView","prp","external","updateConfig","colls","scripts","customBadgeLabel","autoscrollLimit","extHl","frameContent","frameStyle","notTextable","onZoomChange","updateDevice","evPageSelect","_pageUpdated","frames","Frames","rulers","zoom","mainPage","getMain","getMainFrame","page","device","getDeviceModel","getCurrentFrameModel","noUndo","Droppable","rootEl","getComponent","els","toggleEffects","enable","handleDragEnter","handleDragOver","handleDrop","handleDragLeave","defaultView","frameElement","sortOpts","onEnd","customTarget","__customTglEff","endDrop","updateCounter","dt","inAbsoluteMode","dragger","guidesInfo","center","cancelled","getStyle","addStyle","handleDragEnd","cnt","preserveSelected","getContentByData","FrameView","allowfullscreen","tools","frameView","showGlobalTools","cvModel","getCanvasModel","updateHead","renderStyles","setViewEl","headEl","getHead","attrStr","items","stl","appendVNodes","getModel","jsContainer","createEl","frameWrapView","elTools","getGlobalToolsEl","_getTool","scrollBottom","scrollRight","toolsEl","getToolsEl","wrp","_toggleEffects","lastMaxHeight","_toggleAutoscrollFx","requestAnimationFrame","autoscroll","dragging","lastClientY","win","getWindow","actualTop","limitTop","limitBottom","getRect","nextTop","isUndefined","opacity","getPointerEvent","getZoomDecimal","mt","updateClientY","stopAutoscroll","renderScripts","evLoad","evOpts","appendScript","scriptEl","renderBody","write","normalize","stls","prevStyles","_isEditor","baseCss","canvasCss","protectedCss","component","CssRulesView","getStyles","getJsContainer","createCustomEvent","motionsEv","_emitUpdate","_emitUpdated","FrameWrapView","canvasView","cv","classAnim","updateOffset","updateSize","frameLoaded","updatePos","setupDragger","dragX","dragY","toggleFramesEvents","Dragger","getZoomMultiplier","setPosition","posOpts","removeEl","__clear","updateDim","__handleSize","noChanges","isNull","onscroll","onScroll","currW","currH","newW","newH","isNumber","onRender","twrp","toolsWrapper","elTop","elRight","elBottom","elLeft","frameWrapperView","timerZoom","FramesView","DomainViews","itemView","CanvasView","wheel","_initFrames","clearOff","checkSelected","updateFrames","_onFramesUpdate","toggleListeners","_renderFrames","currFrame","views","_getFrame","_parentEvent","getKeyChar","isInputFocused","multiFrames","getZoom","defOpts","mpl","framesArea","transform","elem","getElement","getElRect","frameRect","getFrameOffset","rTop","rLeft","docBody","noScroll","frmOff","cvsOff","winEl","frEl","frameOffset","canvasEl","canvasOffset","getCanvasOffset","elRect","frameTop","avoidFrameOffset","frameLeft","isTextNode","parseFloat","bEl","fo","co","getId","scriptContainer","scriptFn","getScriptString","scriptFnStr","scriptProps","__getScriptProps","scr","getFrameView","ready","frms","listenToLoad","mainFrame","setCurrentFrame","$frames","toolsWrp","hlEl","badgeEl","placerEl","ghostEl","toolbarEl","resizerEl","offsetEl","fixedOffsetEl","toolsGlobEl","getUiClass","CanvasModule","Canvas","startAutoscroll","getDocument","compView","globalEl","_getCompFrame","_getLocalEl","frameOff","canvasOff","getElementPos","getElementOffsets","getPosition","topScroll","leftScroll","canvasPos","elPos","toRight","targetHeight","targetWidth","eventToTrigger","topPos","elementTop","elementLeft","elementWidth","elementHeight","canvasTop","canvasLeft","canvasWidth","canvasHeight","getFrameElFromDoc","rectOff","elToMove","cvOff","canvasRectOffset","toolbarH","toolbarW","getCanvasView","frCvOff","fullHeight","elIsShort","canvasOffsetTop","canvasOffsetLeft","addTop","addLeft","subWinOffset","parentWindow","yOffset","xOffset","toIgnore","getViewEl","fr","getCurrentFrame","getFramesEl","Frame","inlineCss","HTMLGenerator","htmlOpts","cleanId","rules","idRules","rule","selectors","isId","toHTML","JsonGenerator","beforeEach","build","JsGenerator","comps","scrStr","scrProps","mapJs","mapType","mapModel","hasWin","require","CodeMirrorEditor","codeName","onChange","ed","autoFormatRange","noRefresh","EditorView","generators","defGenerators","viewers","defViewers","defaultViewer","gHtml","gCss","gJson","js","gJs","eCM","loadDefaultGenerators","loadDefaultViewers","addGenerator","generator","getGenerator","getGenerators","addViewer","viewer","getViewer","getViewers","createViewer","txtarea","updateViewer","setContent","getCode","genId","maxValue","MAX_VALUE","getMediaLength","mediaQuery","CssGenerator","compCls","avoidInline","avoidInlineStyle","styleToString","getFullName","buildFromModel","cssc","codeJson","clearStyles","atRules","dump","onlyMatched","matchedRules","atRule","getAtRule","mRules","buildFromRule","sortMediaObject","rulesStr","ruleStr","selectorStrNoAdd","selectorsToString","skipAdd","selectorsAdd","singleAtRule","keepUnusedStyles","getDeclaration","__cleanSelector","itemsArr","isMobFirst","mquery","getQueryLength","getKey","q","strict","commandsDef","defaultCommands","CommandAbstract","sender","selAll","getSelectedAll","nativeDrag","defComOptions","hideTlb","altMode","eventDrag","emitUpdate","cmdMove","Commands","onEndMoveFromModel","initSorterFromModels","oldCmd","default","cmdName","loadDefaultCommands","noStop","command","cmdObj","stopCommand","getActive","callRun","callStop","DomComponents","CssComposer","canvasModel","toggleMove","disableDragger","enableDragger","toggleDragger","methodCls","getCanvas","classList","methodEv","methodsEv","editorModel","hoverClass","badgeClass","plhClass","freezClass","Boolean","evName","guidesStatic","guidesTarget","setupGuides","isTran","guidesContainer","getGuidesContainer","getGuidesTarget","getGuidesStatic","drg","toggleDrag","getEventOpts","guides","guide","guidesEl","elInfoX","elInfoY","guideContent","elGuideInfoX","elGuideInfoY","elGuideInfoContentX","elGuideInfoContentY","updateGuides","debug","renderGuide","getElementGuides","lastEl","getGuidePosUpdate","originRect","un","guideSize","numEl","getTranslate","itemStr","setTranslate","en","styleUp","avoidStore","adds","_getDragData","relPos","parentRel","pStyle","getMouseRelativeCanvas","offsetP","renderGuideInfo","hideGuidesInfo","rectOrigin","isY","origEdge1","origEdge1Raw","origEdge2","origEdge2Raw","elGuideInfo","elGuideInfoCnt","guideInfoStyle","stat","statEdge2","isEdge1","statEdge1","statEdge1Raw","statEdge2Raw","posFirst","posSecond","pos2","sizeRaw","matched","snd","incr","getChildAt","wrappers","Pages","getAllWrappers","flatten","findType","SelectComponent","mouseover","startDelete","mouseout","stopDelete","onDelete","$this","attachBadge","badge","removeBadge","clean","updateBadgeLabel","getName","modal","CodeManager","$editors","oHtmlEd","buildEditor","oCsslEd","htmlEditor","cssEditor","textViewCode","getHtml","getCss","codeMirror","isEnabled","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","warn","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","fsChanged","targetEl","SelectPosition","noSelClass","getBadgeEl","getHighlighterEl","wp","$wrapper","initSorter","toggleClipboard","cacheEl","startSelectPosition","stopSelectComponent","getContentWindow","rollback","initSorterFromModel","lastModel","toMove","onMoveClb","$badge","getBadge","$hl","getHighlighter","onceClose","accept","modalTitle","uploadEl","firstRender","pn","Panels","getPanel","addPanel","lm","LayerManager","layers","panels","$cn","trgEvCnt","$cn2","dvm","DeviceManager","showDevices","devicePanel","dvEl","slm","SelectorManager","slmConfig","sm","StyleManager","smConfig","$header","pnCnt","panel","toggleSm","show","Config","tm","TraitManager","confTm","toggleTm","clp","lastSelected","addOpts","pasteable","cop","Components","canMove","cmdVis","getPanels","preventDrag","tglEffects","mthEv","tlb","getToolbarEl","elP","querySelectorAll","shouldRunSwVisibility","editorEl","onclick","canvasS","getResizerEl","posFetcher","mousePosFetcher","getMouseRelativePos","canvasResizer","forceNew","Utils","Resizer","ToolbarButtonView","calibrated","ToolbarView","ToolbarButton","showOffsets","adjScroll","startSelectComponent","toggleSelectComponent","listenToEl","onFrameUpdated","onContainerChange","onHovered","updateGlobalPos","_upToolbar","updateAttached","onHover","onOut","onFrameScroll","trg","isDoc","currentDoc","setHovered","useValid","updateLocalPos","updateToolsLocal","elHovered","toggleToolsEl","currentFrame","getView","isVisible","elSelected","updateToolsGlobal","initResize","getElSelected","getElHovered","showElementOffset","hideElementOffset","showFixedElementOffset","hideFixedElementOffset","hideHighlighter","isEditing","isChildOf","updateBadge","posOnly","icon","getIcon","clsBadge","customeLabel","badgeLabel","bStyle","targetToElem","getTargetToElementFixed","leftOff","showHighlighter","modelToStyle","resizeClass","isTaggableNode","resizable","toggleBodyClass","docs","resizer","keyHeight","keyWidth","currentUnit","keepAutoHeight","keepAutoWidth","getModelToStyle","computedStyle","modelStyle","currentWidth","autoWidth","currentHeight","autoHeight","startDim","unitHeight","getUnitFromValue","unitWidth","selectedHandler","onlyHeight","onlyWidth","bodyw","updateEvent","eventToListen","noEmit","updateToolbar","toolbarStyle","toolbar","showToolbar","Toolbar","toolbarView","updateToolbarPos","getCanvasPosition","updateTools","isCompSelected","isHoverEn","isNewEl","lastHovered","badgeOpts","topOff","_trgToolUp","hideBadge","cleanPrevious","isPointed","scale","getOffsetDim","stopSelectPosition","posTargetCollection","posIndex","posMethod","cDim","posIsLastEl","posTargetEl","outsideElem","posTargetModel","nearFloat","isLast","getOffsetMethod","showOffsetsSelected","stateVar","offsetViewer","marginT","marginB","marginL","marginR","padT","padB","padL","padR","stateLow","marginName","paddingName","marginV","paddingV","paddingEls","fullMargName","fullPadName","marginLeftSt","marginRightSt","marginRight","marginTopSt","marginBottomSt","mtStyle","mbStyle","mlStyle","mrStyle","ptStyle","pbStyle","plStyle","prStyle","posLeft","widthEl","marginSideH","marginSideT","padTop","padBot","padSideH","padSideT","padRight","toggleVis","mth","_upFrame","_onFramesChange","__initConfig","__appendTo","_createId","__listenAdd","__listenRemove","__listenUpdate","__destroy","onBeforeStyle","CSS","CssRule","mediaText","stylable","atRuleType","important","shallow","_undo","ensureSelectors","__onChange","isEmptyObj","changesUp","toListen","getSelectors","Selectors","typeStr","addSelector","selOpts","getFullString","stateStr","skipState","allowEmpty","devices","getDevices","deviceDefault","getWidthMedia","stateValue","getStates","sngl","cmpId","getById","avoidDefaults","__p","ruleProps","wd","selAdd","a1S","a2S","StyleableModel","CssRules","onRemove","onAdd","parseCss","elStyle","um","slc","singleSel","parserCss","checkNode","sl","newSels","le","selec","modelExists","updateStyle","avoidUpdateStyle","styleUpdate","addCollection","atRuleParams","optRuleSel","getCurrentMedia","Selector","getRules","getSelectorsString","rulesView","CssRuleView","toCSS","CssGroupRuleView","getBlockId","addToCollection","renderStarted","atRuleEl","styleEl","appendData","clsName","defaultBlockId","blockId","getMediaWidth","contRules","mediaCondition","prs","pr","widthMedia","Device","checkUnit","Devices","DevicesView","startAdd","updateSelect","devEl","devicesEl","getOptions","evSelectBefore","evAddBefore","chnSel","dv","_onSelect","deviceId","newDevice","_superPropBase","getPrototypeOf","_get","Reflect","receiver","desc","getOwnPropertyDescriptor","Trait","changeProp","targetEvent","targetUpdated","locale","getTargetValue","valueOpts","partial","setTargetValue","fromTarget","trait","getAttributes","valueToSet","final","toSet","step","Traits","handleReset","tf","objs","optionsTarget","TraitFactory","keySymbols","keySymbol","keySymbolOvrd","keyUpdate","keyUpdateInside","Component","parentAttr","newAttr","toPropagate","voidElements","ccid","initClasses","initTraits","initComponents","initToolbar","initScriptProps","scriptUpdated","tagUpdated","attrUpdated","_idUpdated","__emitUpdateTlb","__propToParent","temporary","__postAdd","__isSymbolOrInst","__initSymb","__hasUm","recursive","__changesUp","__propSelfToParent","query","$els","eq","is","closest","setClass","attrPrev","shallowDiff","setAttributes","noClass","attrArr","compAttr","optsAdd","getIdRule","parseStyle","propOrig","setIdRule","addId","noStyle","TYPE_ID","__getSymbol","__getSymbols","classe","classStr","toUp","symbol","symbols","log","__symbReady","__upSymbProps","__isSymbol","__isSymbolTop","symbTopSelf","__getSymbTop","symbTop","allById","symb","__getAllById","symbs","idx","ovrd","symbEnabled","fromInstance","noPropagate","fromUndo","__isSymbOvrd","__getSymbToUp","__logSymbol","propsChanged","optUp","toUpOpts","isTemp","addedInstances","isMainSymb","addSymb","toAppend","addedInst","addedTop","symbolInv","isSymbNested","__isSymbolNested","toUpFn","symbPrnt","newMods","attrCls","clsArr","normalizeClasses","__upSymbCls","addChild","avoidChildren","__upSymbComps","__loadTraits","traits","getInitValue","prevProps","newProps","prevPropsEv","newPropsEv","__scriptPropsChange","compArr","prevColl","tb","tr","traitsI","getTraits","getTrait","clm","_inner","cloned","newId","rulesToClone","newRule","defName","nameTag","i18nPfx","i18nName","i18nNameTag","i18nDefName","capitalize","customTag","sTag","customAttr","getAttrToHTML","withProps","isBoolean","valueRes","altQuoteAttr","attrString","getInnerHTML","__innerHTML","cmps","getChangedProps","modelProps","tagVarStart","tagVarEnd","reg","updated","rmOpts","byType","isInstanceOf","oldId","setId","idS","_getStyleRule","idUpdate","idPrev","getList","_getStyleSelector","isComponent","ensureInList","nextId","getIncrementId","idMap","getNewId","ilen","uid","random","keepIds","domc","dm","componentsById","checkId","removable","badgable","unstylable","highlightable","copyable","editable","layerable","selectable","hoverable","locked","void","dmode","getComponentIds","getComponentsFromDefs","itms","newComponents","resetChildren","newIds","allByID","parsed","parseString","newCmps","canRemoveStyle","rulesRemoved","it","__postRemove","df","componentTypes","parseHtml","optsToPass","nodes","isMult","processDef","__firstAdd","mdl","processor","modelPr","$$typeof","parserHtml","splitPropsFromAttr","forceClass","setClassRule","__onAddEnd","ComponentView","getClasses","modelOpt","renderAttributes","updateHighlight","updateStatus","updateContent","handleChange","onActive","onDisable","avoidRender","getEvents","_clbObj","draggableComponents","childrenView","__isDraggable","updateClasses","importClasses","renderChildren","chgArr","selectedCls","selectedParentCls","freezedCls","hoveredCls","noPointerCls","selCls","noExtHl","actualCls","avoidHover","clsStr","isTextable","hl","onAttrUpdate","removeAttr","textable","defaultAttr","contenteditable","hasComps","getChildrenContainer","updateScript","getChildrenSelector","getTemplate","gtop","gleft","assignRect","elDoc","getOffsetRect","isInViewport","_setData","replaceWith","ComponentsView","updateAttributes","triggerAdd","sameFrameView","viewObject","logError","parentEl","ParserHtml","propNew","newStyle","noEvent","extendStyle","imp","propPrv","baseType","getBaseType","typeFound","recognizeType","ModelInst","ViewInst","extendViewApi","Input","handleModelChange","holderClass","getInputEl","__onInputChange","elementUpdated","fromInput","inputEl","plh","inputClass","defaultOpts","beforeShow","noop","color","flat","showInput","showButtons","clickoutFiresChange","showInitial","showPalette","showPaletteOnly","hideAfterPaletteSelect","togglePaletteOnly","showSelectionPalette","localStorageKey","maxSelectionSize","cancelText","chooseText","togglePaletteMoreText","togglePaletteLessText","clearText","noColorSelectedText","preferredFormat","containerClassName","replacerClassName","showAlpha","palette","selectionPalette","spectrums","IE","rgbaSupport","backgroundColor","replaceInput","markup","gradientFix","dataID","spectrum","extra","spect","removeData","loadOpts","inputTypeColorSupport","_cachedResult","colorInput","localization","palettes","processNativeColorInputs","colorInputs","trimLeft","trimRight","tinyCounter","math","mathRound","mathMin","mathMax","mathRandom","tinycolor","rgb","format","named","matchers","rgba","hsl","hsla","hsv","hsva","hex8","convertHexToDecimal","parseIntFromHex","hex6","hex3","stringInputToObject","bound01","convertToPercentage","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","isDark","getBrightness","isLight","getOriginalInput","getFormat","getAlpha","toRgb","setAlpha","toHsv","rgbToHsv","toHsvString","toHsl","rgbToHsl","toHslString","toHex","allow3Char","rgbToHex","toHexString","toHex8","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","lighten","brighten","darken","desaturate","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","color1","color2","mix","w1","rgb1","rgb2","w2","readability","c1","c2","brightnessA","brightnessB","colorDiff","brightness","isReadable","mostReadable","baseColor","colorList","bestColor","bestScore","bestIsReadable","readable","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flipped","flip","paletteTemplate","tiny","swatchStyle","timeout","callbackContext","instanceOptions","resize","reflow","throttler","isDragging","isDefault","dragWidth","dragHeight","dragHelperHeight","slideHeight","alphaWidth","alphaSlideHelperWidth","slideHelperHeight","currentHue","currentSaturation","currentValue","currentAlpha","paletteArray","paletteLookup","draggingClass","shiftMovementDirection","boundElement","pickerContainer","dragHelper","slider","slideHelper","alphaSliderInner","alphaSlider","alphaSlideHelper","textInput","paletteContainer","initialColorContainer","cancelButton","clearButton","chooseButton","toggleButton","isInput","isInputTypeColor","shouldReplace","replacer","offsetElement","previewElement","initialColor","colorOnShow","currentPreferredFormat","applyOptions","toggleClass","updateSelectionPaletteFromStorage","localStorage","oldPalette","addColorToSelectionPalette","inArray","drawPalette","currentColor","unique","getUniqueSelectionPalette","drawInitial","setFromTextInput","updateOriginalInput","isDefaultPrevented","hideAll","$doc","onkeydown","clickout","updateUI","revert","ignoreFormatChange","newHsv","updateHelperLocations","flatColor","realColor","displayColor","realHex","realRgb","alpha","realAlpha","gradient","alphaX","slideY","fireCallback","picker","extraY","dpWidth","outerWidth","dpHeight","outerHeight","inputHeight","docElem","cW","cH","scL","scT","getOffset","paletteElementClick","keydown","hasClass","oldDragX","oldDragY","furtherFromX","paletteEvent","optionName","optionValue","coord","onmove","onstart","onstop","maxHeight","maxWidth","hasTouch","duringDragEvents","t0","rightclick","hex","pad2","clamp01","hue","results","slices","modification","isOnePointZero","processPercent","isPercentage","ColorPicker","getColor","cl","InputColor","colorEl","getColorEl","tc","valueClr","noneColor","previousColor","cpStyle","elToAppend","colorPickerConfig","colorPicker","movedColor","setValueFromInput","noDefault","InputNumber","contClass","validateInputValue","deepCheck","validObj","getUnitEl","upArrowClick","downArrowClick","unitEl","units","temp","normalizeValue","moveIncrement","upIncrement","prValue","defValue","stepDecimals","toFixed","limitlessMax","limitlessMin","fixed","regFixed","valCopy","uN","ns","reuseView","itemsView","typeField","itemType","itemViewNotFound","clearItems","onRemoveBefore","traitInputAttr","localeFallback","detectLocale","messages","assetManager","addButton","inputPlh","uploadTitle","blockManager","labels","domComponents","comment","video","link","tfoot","tbody","thead","table","row","cell","deviceManager","desktop","tablet","mobileLandscape","mobilePortrait","titles","preview","fullscreen","selectorManager","emptyState","hover","styleManager","layer","fileButton","sectors","general","layout","typography","decorations","flex","dimension","traitManager","false","_blank","storageManager","recover","messagesAdd","I18nModule","addMessages","_localLang","evObj","valuePrev","lang","_debug","msg","setMessages","getLocale","localeFlb","lFlb","_getMsg","_addParams","nav","language","userLanguage","msgSet","getMessages","_mods","_scope","_MODIFIERS","control","_MAP","backspace","tab","return","esc","down","del","delete","home","pageup","pagedown","_downKeys","compareArray","modifierMap","updateModifierKey","clearModifier","assignKey","resetModifiers","scope","mods","getKeys","getMods","shortcut","getScope","mi","addEvent","setScope","deleteScope","isPressed","getPressedKeyCodes","multipleKeys","modifiersMatch","dispatch","keymaster","configDef","keymaps","defKeys","pk","removeAll","backdrop","ModalView","updateOpen","updateTitle","$collector","$content","$title","getCollector","getTitle","currAttr","updateAttr","triggerEvent","ModalM","enb","_evData","titl","createText","setTitle","onceOpen","getContentEl","swv","expt","osm","otm","ola","obl","ful","prv","togglable","delayBtnsShow","Panel","btn","Buttons","ButtonView","listen","activeCls","disableCls","btnsVisCls","updateActive","checkActive","updateBtnsVis","updateClassName","updateDisable","chnOpt","fromListen","$buttons","fromCollection","commandName","deactivateAll","toggleActive","ButtonsView","parentM","PanelView","appendContent","toggleVisible","cr","bc","resz","resLen","tl","bl","br","silentFrames","avoidContainerUpdate","forContainer","styleWidth","styleHeight","PanelsView","PanelsViewObj","getPanelsEl","removePanel","panelId","removeButton","getButton","disableButtons","Button","runDefaultCommand","stopDefaultCommand","except","deactivateAllExceptOne","disableAllButtonsExceptOne","textTags","optionsHtml","htmlType","allowScripts","allowUnsafeAttr","atRuleKeys","singleAtRules","singleAtRulesNames","parseSelector","propName","propValue","getPropertyValue","getPropertyPriority","parseCondition","conditionText","selectorText","createNode","selLen","lastClass","stateArr","parseNode","cssRules","keyText","isSingleAtRule","subRules","lens","subRule","selsParsed","selsAdd","lastRule","len3","selsAddStr","sheet","BrowserCssParser","classSets","classSet","pHtml","pCss","compTypes","Parser","defaultType","DOMParser","mimeType","strF","parseFromString","hEls","modelAttrStart","modelAttr","valueLen","valStr","lastChar","decls","decl","parseClass","attrsLen","nodePrev","nodeChild","ct","compType","namespaceURI","inSvg","keepEmptyTextNodes","outerHTML","allTxt","foundTextNode","ci","cType","cf","BrowserParserHtml","__clearUnsafeAttr","styleStr","resHtml","returnArray","btnState","isValidTag","rte","parentAnchor","parentFocus","customElAttr","defActions","bold","italic","underline","strikethrough","insertHTML","RichTextEditor","settings","setEl","updateActiveActions","__onKeydown","__onPaste","acts","actionbar","inactive","actionbarCont","actionbarContainer","addAction","styleWithCSS","getActions","queryCommandSupported","queryCommandState","enabled","__toggleEffects","actionbarEl","syncActions","caretRangeFromPoint","poiner","rangeParent","rangeOffset","textHtml","deleteContents","nd","insertNode","toSel","removeAttributes","adjustToolbar","eventsUp","hideToolbar","customRte","initRte","globalRte","updatePosition","rteInst","autosave","autoload","recovery","stepsBeforeSave","onStore","checkLocal","remote","urlStore","urlLoad","contentTypeJson","fetchOptions","LocalStorage","hasLocal","setItem","getItem","thr","RemoteStorage","request","__props","parsable","typeJson","typeHead","eventStart","eventAfter","eventEnd","eventError","STORAGE_LOCAL","STORAGE_REMOTE","StorageManager","_disable","storages","setCurrent","storage","currentStorage","getCurrent","getCurrentOptions","getCurrentStorage","getRecoveryStorage","recoveryOpts","__exec","recoveryStorage","recoveryData","__askRecovery","getRecovery","rej","confirm","toStore","__clearKeys","onAfter","onError","itemKey","itemKeyR","hideNotStylable","highlightChanged","highlightComputed","showComputed","clearProperties","avoidComputed","Property","__upTargets","callInit","parentProp","isClear","__getFullValue","__getParentProp","kProps","__getClearProps","toProps","applyStyle","__up","__trgEv","propertyUpdate","__upTargetsStyle","addStyleTargets","noTarget","hasValue","getDefaultValue","noParent","parentValue","getParentTarget","camelCase","__parseValue","_up","getParent","__canClearProp","parseValue","valueStr","functionName","numeric","num","withDefault","getFullValue","fnParameter","parentTarget","toRequire","requires","requiresParent","stylableReq","sector","getProperties","callParentInit","skipInit","fixedValues","isNumberType","PropertyComposite","detached","separator","fromStyle","toStyle","Properties","__upProperties","byName","getSplitSeparator","__getJoin","getValues","isDetached","__clearIn","__upTargetsStyleProps","getStyleFromProps","__setProperties","__getSplitValue","nameProps","allNameProps","__splitValue","props4Nums","__styleHasProps","upValue","valuesStr","Layer","getLayerLabel","getSelectedLayer","selectLayer","removeLayer","moveLayer","getStylePreview","Layers","VALUES_REG","PARTS_REG","PropertyStack","layerSeparator","layerJoin","prepend","layerLabel","selectedLayer","layersColl","__upSelected","__upLayers","__getLayers","getIndex","__select","getLayer","currIndex","getLayers","joinLayers","__getJoinLayers","number","newVal","getStyleFromLayer","upValues","PropertyBase","getStyleFromLayers","layerSelect","__layers","__setLayers","newLayers","layersNew","__parseLayer","parseFn","getLayerSeparator","separatorLayers","__splitStyleName","inLayer","clearProp","icons","iconClose","getLabel","__destroyFn","onValueChange","_getClbOpts","computedCls","labelEl","clearStyleEl","getClearEl","clearStyle","clearEl","emit","__update","__setValueInput","$input","createdEl","__change","__updateStyle","clearCached","clsType","templateLabel","templateInput","isFull","PropertiesView","appendAtIndex","PropertyCompositeView","PropertyView","propsView","LayerView","iconMove","propertyView","pModel","updateLabel","propsWrapEl","previewEl","getLabelEl","hasPreview","prvEl","getPreviewEl","wrapEl","getPropertiesWrapper","isSelected","LayersView","ignoreViewChildren","PropertyStackView","iconPlus","plus","addLayer","layersView","PropertyFileView","valueDef","prvBoxEl","backgroundImage","PropertyNumberView","inputInst","PropertyColorView","__handleChange","PropertySelect","idSel","getOptionId","optId","propId","__onOptionChange","PropertySelectView","updateOptions","optionsRes","getOptionLabel","styleAttr","inputH","firstOpt","firstId","PropertyRadio","PropertyRadioView","itemCls","clsInput","elId","titleAttr","checked","inputHld","inputIn","PropertyNumber","PropertySlider","PropertySliderView","getSliderEl","propertyAdd","propertyRemove","Sector","buildProps","extendBuilded","builded","buildProperties","extendProperties","checkExtend","propsModel","withValue","withParentValue","moProps","ex","pLen","mProps","isolated","mProp","mPProps","buildP","builtIn","Sectors","onReset","sect","PropertyFactory","typeNumber","typeColor","typeRadio","typeSelect","typeFile","typeSlider","typeComposite","typeStack","unitsSize","unitsSizeNoPerc","unitsTime","unitsAngle","ss","optsFlex","optsFlexAlign","optsBgSize","optsBgAttach","optsBgRepeat","optsWrap","optsOverflow","optsDir","opstDisplay","optsTransitFn","optsCursor","optsFloat","optsPos","optsTextAlign","optsJustCont","optsAlignCont","optsAlignSelf","optsTransitProp","optsBorderStyle","optsBgPos","optsWeight","optsShadowType","optsFonts","font","fixedFontSizes","fixedLetSpace","requireFlex","__sub","spread","__parseFn","propToUp","getProperty","getUnit","fromRes","SectorView","iconCaret","caret","clsPfx","getPropertiesEl","setOpen","renderProperties","SectorsView","evSector","evSectorAdd","evSectorRemove","evSectorUpdate","evProp","evPropAdd","evPropRemove","evPropUp","evLayerSelect","evTarget","propDef","SectView","sectorAdd","sectorRemove","sectorUpdate","targets","upAll","__upSel","__clearStateTarget","upProps","__upProps","trgCustom","__ctn","stateTarget","__getStateTarget","addSector","getSector","_logNoSector","getSectors","removeSector","addProperty","sectorId","removeProperty","trgs","getRule","setRule","getState","lastTarget","lastTargetParents","getParentRules","getSelectedParents","targetState","getBuiltIn","getBuiltInAll","addBuiltIn","cssC","smConf","devicePreviewMode","getStyleable","hasClasses","useClasses","componentFirst","noCount","deviceW","cssGen","optsSel","combination","cmpRules","otherRules","sortRules","createType","parentStyles","__upProp","__checkVisibility","sectorVisible","hasVal","isStack","isComposite","canUpdate","__getLayersFromStyle","__getPropsFromStyle","newValue","parentItem","__setParentTarget","newParentStyles","TraitView","eventCapture","clsField","removeView","rerender","elInput","getInputElem","onEvent","getClbOpts","setInputValue","postUpdate","getValueForTarget","tpl","createLabel","getModelValue","i18nAttr","getElInput","appendInput","inputs","createInput","noLabel","onUpdate","hasLabel","tmpl","renderLabel","renderField","TraitsView","updatedCollection","TraitSelectView","resultName","valResult","TraitCheckboxView","getCheckedValue","valueTrue","valueFalse","toInit","targetValue","TraitNumberView","inputNumber","$unit","TraitColorView","TraitButtonView","handleClick","labelButton","typesDef","checkbox","__onUp","getTraitsViewer","baseView","beforeCache","trackSelection","hasSkip","getChanged","hasUndo","undoExc","chn","postLoad","hasRedo","getInstance","getStack","getStackGroup","getGroupedStack","createItem","goToGroup","getPointer","goTo","times","snapOffset","getDocumentEl","getContainerEl","getWindowEl","keyHandle","handleScroll","lastScroll","actualScroll","scrollDiff","lastScrollDiff","startPointer","getPointerPos","startPosition","getStartPosition","globScrollDiff","currentPos","glDiff","lockedAxis","detectAxisLock","moveDelta","deltaPre","currentPointer","snapGuides","newDelta","trgX","trgY","axs","trgPoint","statPoint","deltaPoint","trgGuide","isPointIn","trgValue","setGuideLock","lock","ofst","trgName","isEscKey","xPos","yPos","getPos","getPointerPosition","pEv","relX","relY","absX","absY","_Array$prototype","idRe","classRe","htmlRe","tagRe","getElementsByTagName","Cash","__cash","eles","getElementById","parseHTML","cash","ele","camelCaseRe","camelCaseWhitespaceRe","letter","removeProp","guid","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","isNumeric","isFinite","getCompareFunction","splitValuesRe","getSplitValues","computeStyle","isVariable","computeStyleInt","_value","isForce","cssVariableRe","isCSSVariable","prefixedProps","docEl","vendorsPrefixes","getPrefixedProp","propCC","propUC","prefixedProp","numericProps","animationIterationCount","columnCount","flexGrow","flexShrink","fontWeight","lineHeight","orphans","widows","getSuffixedValue","setProperty","dataNamespace","dataAttributeRe","getDataCache","dataset","getExtraSpace","xAxis","hasNamespaces","ns1","ns2","removeEventListeners","_ref","hasData","_this","boxSizing","includeMargins","getEventsCache","parseEventName","removeEvent","namespaces","eventCache","_ref2","eventFullName","_this2","_parseEventName","_one","_this3","_parseEventName2","finalCallback","namespace","thisArg","one","readyState","evt","_parseEventName3","createEvent","initEvent","selectOneRe","selectMultipleRe","selectedIndex","getValueSelectSingle","getValueSelectMultiple","queryEncodeSpaceRe","skippableRe","checkableRe","serialize","elements","queryEncode","isMultiple","eleValue","containers","fragmentRe","singleTagRe","td","initContainers","$1","insertContent","isStr","insertAdjacentHTML","insertElement","_this4","insertAfter","_this5","_this6","_this7","_this8","_this9","prependTo","_this10","$eles","replaceAll","docEle","clientTop","contents","nextElementSibling","not","parents","previousElementSibling","siblings","KEY_ATTR","attrUp","oldEl","newEl","total","oEvent","keyCodeVal","defineProperty","vNodes","vNodesArr","vnode","reason","TypeError","setTimeoutFunc","_state","_handled","_deferreds","doResolve","deferred","_immediateFn","onFulfilled","onRejected","finale","_unhandledRejectionFn","Handler","prom","promiseFinally","allSettled","race","setImmediate","req","XMLHttpRequest","withCredentials","statusText","responseText","onProgress","onprogress","send","elT","elL","borderOffset","freezeClass","relative","ignoreModels","offTop","offLeft","$document","dropContent","selectOnEnd","avoidSelectOnEnd","activeTextModel","getScale","getDocuments","dropModel","updateTextViewCursorPosition","targetDoc","setContentEditable","toggleSortCursor","clonedEl","computed","moveDragHelper","posY","posX","dragHelperStyle","useBody","createPlaceholder","ins","srcModel","prevTarget","sourceEl","getSourceModel","clearSelection","getTargetModel","isTextableActive","getComponents","tempModel","selectTargetModel","targetModel","dsp","eO","rY","rX","mousePos","eventMove","sourceModel","dimsFromTarget","lastDims","findPosition","disableTextable","movePlaceholder","prevTargetDim","$plh","disableEditing","isInFlow","styleInFlow","$parent","overflow","propFloat","trgModel","dragInfo","dropInfo","targetP","validResult","getDim","cacheDimsP","getChildrenDim","cacheDims","nearBorders","targetParent","getTargetFromEl","targetPrev","nearElBorders","getCurrentPos","offsets","getCurrentView","elIndex","indexEl","leftLimit","xLimit","yLimit","xCenter","yCenter","dimDown","trgDim","elDim","marg","pT","pL","obj1","obj2","ancester","s1","toMoveArr","domPositionOffset","dst","modelToDrop","created","srcEl","warns","targetCollection","srcIndex","sameCollection","insertComponent","errors","ratioDefault","onUpdateContainer","minDim","maxDim","getBoundingRect","setup","hdl","createHandler","updateContainer","forceShow","handleMouseDown","getParentEl","attrName","parentRect","handlerAttr","clickedHandler","rectDim","startPos","parentDim","handleKeyDown","toggleFrames","mouseFetch","calc","updateRect","getSelectedHandler","isHandler","deltaX","deltaY","parentW","parentH","startW","startH","normalizeFloat","ratioActive","ratio","mixins","_module","moduleName","isPrivate","_em","_name","cfgParent","cfg","_config","private","keyAutoW","keyAutoH","allRules","modOpts","Wrapper","sSel","changesCount","_undoexc","setHead","addHeadItem","getHeadByAttr","removeHeadByAttr","addLink","removeLink","addScript","removeScript","getPage","loadedItems","itemsToLoad","itemLoaded","listenToLoadItems","ComponentWrapperView","columns","rows","rowsToAdd","columnsToAdd","ComponentTableBody","ComponentTableBodyView","svgAttrs","fallback","hasButtonBool","getSrcResult","btoa","isDefaultSrc","parseUri","uri","qrs","pair","hostname","protocol","port","mapUrl","address","frameborder","OComponent","parseFromSrc","updateSrc","getMapUrl","addr","qr","z","ComponentImageView","classEmpty","fetchFile","srcExists","addAttributes","getSrc","ComponentMapView","getIframe","ifrm","frameBorder","ComponentText","ComponentLink","compProt","ComponentTextView","updateContentText","syncContent","fromDisable","rteEnabled","sameInEdit","getEditing","isInnerText","canActivate","lastContent","activeRte","toggleEvents","contentOpt","resetFromString","startContainer","startOffset","textModel","setEditing","elDocs","disablePropagation","ComponentLinkView","prevDef","ComponentLabelView","yt","vi","ytnc","videoId","provider","ytUrl","ytncUrl","viUrl","poster","muted","autoplay","controls","modestbranding","sources","updateTraits","getYoutubeTraits","getVimeoTraits","getSourceTraits","prov","getYoutubeSrc","getYoutubeNoCookieSrc","getVimeoSrc","getProviderTrait","getAutoplayTrait","getLoopTrait","getControlsTrait","isYtProv","isYtncProv","isViProv","isExtProv","ComponentVideoView","OComponentView","updateProvider","updateVideo","renderByProvider","videoEl","renderYoutube","renderYoutubeNoCookie","renderVimeo","renderSource","initVideoEl","ComponentScriptView","scrCnt","scriptCount","svar","svarNext","svarFn","svarNextFn","customName","ComponentSvgView","createElementNS","ComponentTextNodeView","ComponentCommentView","createComment","ComponentWrapper","ComponentFrameView","__getSrc","ComponentTableCell","ComponentTableCellView","ComponentTableRow","ComponentTableRowView","ComponentTable","ComponentTableView","ComponentTableHead","ComponentTableHeadView","ComponentTableFoot","ComponentTableFootView","ComponentMap","ComponentLabel","ComponentVideo","ComponentImage","ComponentScript","ComponentSvgIn","ComponentSvg","ComponentFrame","ComponentComment","ComponentTextNode","componentHovered","selectAdd","selectRemove","addComponent","componentView","setComponents","extendView","extendFn","extendFnView","extendType","extendViewType","typeToExtend","modelToExt","viewToExt","getExtendedObj","srcToExt","parentFn","removeType","getShallowWrapper","shallowEm","hidable","hideTextnode","showWrapper","showHover","scrollCanvas","scrollLayers","highlightHover","onInit","parentView","sortContainer","forceChange","viewLayer","ItemView","opened","inputProp","checkChildren","updateOpening","updateLayerable","updateName","inputNameCls","clsTitleC","clsTitle","clsCaret","clsCount","clsMove","clsChildren","clsNoChild","clsEdit","clsNoEdit","__render","gut","clsBase","getInputName","innerText","getVisibilityEl","eyeEl","hClass","toggleVisibility","setVisible","handleEdit","handleEditKey","isEnterKey","handleEditEnd","setName","inputName","clsOpen","clsChvDown","getCaret","toggleOpening","handleSelect","setLayerData","handleHover","hovered","handleHoverOut","setRoot","_rendered","__clearItems","__isLayerable","evRoot","evComponent","styleOpts","propsToListen","componentChanged","__onRootChange","__onComponent","getRoot","getLayerData","isLocked","cmpOpts","fromLayers","removeSelected","setLocked","prevDspKey","prevDisplay","updateLayer","defFrame","getAllFrames","getMainComponent","evPageSelectBefore","evPageUpdate","evPageAdd","evPageAddBefore","evPageRemove","evPageRemoveBefore","typeMain","selectBefore","addBefore","pages","_onPageChange","mainComp","pg","pagesMap","escapeName","selectedName","iconAdd","iconSync","iconTagOn","iconTagOff","iconTagRemove","State","startEditTag","endEditTag","changeStatus","removeTag","$chk","stateInputId","stateInputC","checkSync","__handleStateChange","renderClasses","tagRemoved","renderStates","labelInfo","labelHead","syncStyle","getTarget","getCommonSelectors","noDisabled","ruleComponents","getTargets","ruleComponent","updateStateVis","addToClasses","startNewTag","$addBtn","endNewTag","onInputKeyUp","addNewTag","checkStates","statesEl","validSelectors","__getCommonSelectors","_commonSelectors","__common","hasStyle","$btnSyncEl","getStatesC","updateSelector","elSel","__getName","idRes","stateChanged","addSelected","$states","$statesC","labelStates","tmpOpts","renderRes","$classes","isClass","evState","cFirst","selTags","selectorTags","isRule","cOpts","cname","selModel","getSelector","setState","setStates","__getCommon","getSelectedTargets","setComponentFirst","getComponentFirst","getValid","namePreEsc","nameEsc","protected","setLabel","setActive","objLen","TYPE_CLASS","combine","curr","literals","raw","lit","subst","substs","getGlobal","elProt","Element","defCls","appendStyles","prepand","objOrig","objNew","keysNew","origValue","evs","upFirst","nativeDnD","isCommentNode","targValue","srcValue","__cashData","rectText","selectNode","getKeyCode","__gjsv","chars","runtime","Op","hasOwn","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","enumerable","configurable","writable","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","GenStateSuspendedStart","arg","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","setPrototypeOf","__proto__","awrap","async","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","webpackContext","webpackContextResolve","__webpack_require__","_arrayLikeToArray","arr2","_assertThisInitialized","ReferenceError","asyncGeneratorStep","_next","_throw","_asyncToGenerator","_classCallCheck","Constructor","_defineProperties","descriptor","_createClass","_defineProperty","_getPrototypeOf","_setPrototypeOf","_inherits","subClass","superClass","_objectWithoutProperties","excluded","sourceKeys","getOwnPropertySymbols","sourceSymbolKeys","_possibleConstructorReturn","_slicedToArray","_i","_s","_arr","_n","_d","unsupportedIterableToArray","_taggedTemplateLiteral","strings","freeze","defineProperties","_toConsumableArray","arrayLikeToArray","_typeof","_unsupportedIterableToArray","minLen","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","isView","_isNaN","_isFinite","hasEnumBug","nonEnumerableProps","MAX_ARRAY_INDEX","pow","restArguments","tagTester","nodelist","Int8Array","hasStringTagBug","isIE11","Map","isDataView","getInt8","isArrayBuffer","buffer","isSymbol","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","proto","isMatch","_keys","_wrapped","toBufferView","bufferSource","Uint8Array","byteOffset","valueOf","tagDataView","aStack","bStack","deepEq","areArrays","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","functions","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","tap","interceptor","toPath","deepGet","defaultValue","identity","optimizeCb","argCount","accumulator","baseIteratee","mapObject","currentKey","propertyOf","accum","getTime","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","evaluate","interpolate","noMatch","escapes","escapeChar","bareIdentifier","oldSettings","argument","variable","idCounter","_chain","executeBound","sourceFunc","boundFunc","callingContext","boundArgs","callArgs","memoize","hasher","throttle","later","leading","throttled","_now","trailing","immediate","passed","debounced","_args","negate","compose","memo","findKey","createPredicateIndexFinder","sortedIndex","low","high","createIndexFinder","predicateFind","createReduce","reducer","guard","contextPath","lastComputed","rand","criteria","reStrSymbol","keyInObj","compact","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","chainResult","mixin","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","fromElement","projectData","noticeOnUnload","defaultCommand","jsInHtml","multipleSelection","optsHtml","optsCss","dragMode","cssIcons","arrowUp","i18n","richTextEditor","codeManager","cssComposer","customUI","getByComponent","hasComponent","Selectable","lastComponent","allComponents","removeComponent","deps","ts_deps","Window","ar","logs","warning","__skip","defaultRunning","destroyed","toLog","attrsOrig","pageManager","loadModule","tsLoadModule","updateChanges","_checkReady","listenLog","eventFrom","eventTo","editing","clipboard","previousModel","storables","modules","toLoad","loadOnStart","headless","loadData","canAutoload","EditorModel","stm","getDirtyCount","updateItr","onbeforeunload","isAutosave","getStepsBeforeSave","Mod","handleUpdates","timedInterval","mltSel","multiple","toggleSelected","selColl","selIndex","getHovered","getJs","avoidProt","avoidProtected","protCss","storeData","clearDirtyCount","editingCmp","setDragMode","destroyAll","grapesjs","logNs","logInfo","initBaseColorPicker","varName","contEl","shallowCanvasEl","Editor","addComponents","getSelectedToStyle","selectToggle","setDevice","getDevice","setCustomRte","setCustomParserCss","onReady","plugins","agent","isIE","originalCreateHTMLDocument","DOMImplementation","createHTMLDocument","implementation","polyfills","plugin","defaultConfig","autorender","pluginsOpts","__GJS_VERSION__","pluginId","plgOptions","wplg"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"grapes.min.js","mappings":"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","sources":["webpack://grapesjs/webpack/universalModuleDefinition","webpack://grapesjs/./node_modules/@babel/runtime/regenerator/index.js","webpack://grapesjs/./node_modules/backbone-undo/Backbone.Undo.js","webpack://grapesjs/./node_modules/backbone/backbone.js","webpack://grapesjs/./node_modules/codemirror-formatting/formatting.js","webpack://grapesjs/./node_modules/codemirror/lib/codemirror.js","webpack://grapesjs/./node_modules/codemirror/mode/css/css.js","webpack://grapesjs/./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack://grapesjs/./node_modules/codemirror/mode/javascript/javascript.js","webpack://grapesjs/./node_modules/codemirror/mode/xml/xml.js","webpack://grapesjs/./src/abstract/moduleLegacy.js","webpack://grapesjs/./src/asset_manager/config/config.js","webpack://grapesjs/./src/asset_manager/model/Asset.js","webpack://grapesjs/./src/asset_manager/model/AssetImage.js","webpack://grapesjs/./src/asset_manager/view/AssetView.js","webpack://grapesjs/./src/asset_manager/view/AssetImageView.js","webpack://grapesjs/./src/asset_manager/model/Assets.js","webpack://grapesjs/./src/asset_manager/view/AssetsView.js","webpack://grapesjs/./src/asset_manager/view/FileUploader.js","webpack://grapesjs/./src/asset_manager/index.js","webpack://grapesjs/./src/block_manager/config/config.js","webpack://grapesjs/./src/block_manager/model/Block.js","webpack://grapesjs/./src/block_manager/model/Blocks.js","webpack://grapesjs/./src/block_manager/model/Category.js","webpack://grapesjs/./src/block_manager/model/Categories.js","webpack://grapesjs/./src/block_manager/view/BlockView.js","webpack://grapesjs/./src/block_manager/view/CategoryView.js","webpack://grapesjs/./src/block_manager/view/BlocksView.js","webpack://grapesjs/./src/block_manager/index.js","webpack://grapesjs/./src/code_manager/config/config.js","webpack://grapesjs/./src/code_manager/model/HtmlGenerator.js","webpack://grapesjs/./src/code_manager/model/JsonGenerator.js","webpack://grapesjs/./src/code_manager/model/CodeMirrorEditor.js","webpack://grapesjs/./src/code_manager/model/JsGenerator.js","webpack://grapesjs/./src/code_manager/view/EditorView.js","webpack://grapesjs/./src/code_manager/index.js","webpack://grapesjs/./src/code_manager/model/CssGenerator.js","webpack://grapesjs/./src/commands/config/config.js","webpack://grapesjs/./src/commands/index.js","webpack://grapesjs/./src/commands/view/CanvasClear.js","webpack://grapesjs/./src/commands/view/CanvasMove.js","webpack://grapesjs/./src/commands/view/CommandAbstract.js","webpack://grapesjs/./src/commands/view/ComponentDelete.js","webpack://grapesjs/./src/commands/view/ComponentDrag.js","webpack://grapesjs/./src/commands/view/ComponentEnter.js","webpack://grapesjs/./src/commands/view/ComponentExit.js","webpack://grapesjs/./src/commands/view/ComponentNext.js","webpack://grapesjs/./src/commands/view/ComponentPrev.js","webpack://grapesjs/./src/commands/view/ComponentStyleClear.js","webpack://grapesjs/./src/commands/view/CopyComponent.js","webpack://grapesjs/./src/commands/view/DeleteComponent.js","webpack://grapesjs/./src/commands/view/ExportTemplate.js","webpack://grapesjs/./src/commands/view/Fullscreen.js","webpack://grapesjs/./src/commands/view/MoveComponent.js","webpack://grapesjs/./src/commands/view/OpenAssets.js","webpack://grapesjs/./src/commands/view/OpenBlocks.js","webpack://grapesjs/./src/commands/view/OpenLayers.js","webpack://grapesjs/./src/commands/view/OpenStyleManager.js","webpack://grapesjs/./src/commands/view/OpenTraitManager.js","webpack://grapesjs/./src/commands/view/PasteComponent.js","webpack://grapesjs/./src/commands/view/Preview.js","webpack://grapesjs/./src/commands/view/Resize.js","webpack://grapesjs/./src/dom_components/view/ToolbarButtonView.js","webpack://grapesjs/./src/dom_components/view/ToolbarView.js","webpack://grapesjs/./src/dom_components/model/ToolbarButton.js","webpack://grapesjs/./src/dom_components/model/Toolbar.js","webpack://grapesjs/./src/commands/view/SelectComponent.js","webpack://grapesjs/./src/commands/view/SelectPosition.js","webpack://grapesjs/./src/commands/view/ShowOffset.js","webpack://grapesjs/./src/commands/view/SwitchVisibility.js","webpack://grapesjs/./src/common/module.js","webpack://grapesjs/./src/css_composer/config/config.js","webpack://grapesjs/./src/css_composer/model/CssRule.js","webpack://grapesjs/./src/css_composer/model/CssRules.js","webpack://grapesjs/./src/css_composer/index.js","webpack://grapesjs/./src/css_composer/view/CssRuleView.js","webpack://grapesjs/./src/css_composer/view/CssGroupRuleView.js","webpack://grapesjs/./src/css_composer/view/CssRulesView.js","webpack://grapesjs/./src/device_manager/config/config.js","webpack://grapesjs/./src/device_manager/model/Device.js","webpack://grapesjs/./src/device_manager/model/Devices.js","webpack://grapesjs/./src/device_manager/view/DevicesView.js","webpack://grapesjs/./src/device_manager/index.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/get.js","webpack://grapesjs/./src/trait_manager/model/Trait.js","webpack://grapesjs/./src/trait_manager/model/Traits.js","webpack://grapesjs/./src/trait_manager/model/TraitFactory.js","webpack://grapesjs/./src/dom_components/model/Component.js","webpack://grapesjs/./src/dom_components/model/Components.js","webpack://grapesjs/./src/dom_components/view/ComponentView.js","webpack://grapesjs/./src/dom_components/view/ComponentsView.js","webpack://grapesjs/./src/domain_abstract/model/StyleableModel.js","webpack://grapesjs/./src/domain_abstract/model/TypeableCollection.js","webpack://grapesjs/./src/domain_abstract/ui/Input.js","webpack://grapesjs/./src/domain_abstract/ui/InputColor.js","webpack://grapesjs/./src/utils/ColorPicker.js","webpack://grapesjs/./src/domain_abstract/ui/InputNumber.js","webpack://grapesjs/./src/domain_abstract/view/DomainViews.js","webpack://grapesjs/./src/i18n/locale/en.js","webpack://grapesjs/./src/i18n/config.js","webpack://grapesjs/./src/i18n/index.js","webpack://grapesjs/./src/utils/keymaster.js","webpack://grapesjs/./src/keymaps/index.js","webpack://grapesjs/./src/modal_dialog/config/config.js","webpack://grapesjs/./src/modal_dialog/model/Modal.js","webpack://grapesjs/./src/modal_dialog/view/ModalView.js","webpack://grapesjs/./src/modal_dialog/index.js","webpack://grapesjs/./src/panels/config/config.js","webpack://grapesjs/./src/panels/model/Panel.js","webpack://grapesjs/./src/panels/model/Panels.js","webpack://grapesjs/./src/panels/view/ButtonView.js","webpack://grapesjs/./src/panels/view/ButtonsView.js","webpack://grapesjs/./src/panels/view/PanelView.js","webpack://grapesjs/./src/panels/view/PanelsView.js","webpack://grapesjs/./src/panels/index.js","webpack://grapesjs/./src/panels/model/Button.js","webpack://grapesjs/./src/panels/model/Buttons.js","webpack://grapesjs/./src/parser/config/config.js","webpack://grapesjs/./src/parser/model/BrowserParserCss.js","webpack://grapesjs/./src/parser/model/ParserCss.js","webpack://grapesjs/./src/parser/index.js","webpack://grapesjs/./src/parser/model/BrowserParserHtml.js","webpack://grapesjs/./src/parser/model/ParserHtml.js","webpack://grapesjs/./src/rich_text_editor/model/RichTextEditor.js","webpack://grapesjs/./src/rich_text_editor/config/config.js","webpack://grapesjs/./src/rich_text_editor/index.js","webpack://grapesjs/./src/storage_manager/config/config.js","webpack://grapesjs/./src/storage_manager/model/LocalStorage.js","webpack://grapesjs/./src/storage_manager/model/RemoteStorage.js","webpack://grapesjs/./src/storage_manager/index.js","webpack://grapesjs/./src/style_manager/config/config.js","webpack://grapesjs/./src/style_manager/model/Property.js","webpack://grapesjs/./src/style_manager/model/PropertyComposite.js","webpack://grapesjs/./src/style_manager/model/Layer.js","webpack://grapesjs/./src/style_manager/model/Layers.js","webpack://grapesjs/./src/style_manager/model/PropertyStack.js","webpack://grapesjs/./src/style_manager/view/PropertyView.js","webpack://grapesjs/./src/style_manager/view/PropertiesView.js","webpack://grapesjs/./src/style_manager/view/PropertyCompositeView.js","webpack://grapesjs/./src/style_manager/view/LayerView.js","webpack://grapesjs/./src/style_manager/view/LayersView.js","webpack://grapesjs/./src/style_manager/view/PropertyStackView.js","webpack://grapesjs/./src/style_manager/view/PropertyFileView.js","webpack://grapesjs/./src/style_manager/view/PropertyNumberView.js","webpack://grapesjs/./src/style_manager/view/PropertyColorView.js","webpack://grapesjs/./src/style_manager/model/PropertySelect.js","webpack://grapesjs/./src/style_manager/view/PropertySelectView.js","webpack://grapesjs/./src/style_manager/model/PropertyRadio.js","webpack://grapesjs/./src/style_manager/view/PropertyRadioView.js","webpack://grapesjs/./src/style_manager/model/PropertyNumber.js","webpack://grapesjs/./src/style_manager/model/PropertySlider.js","webpack://grapesjs/./src/style_manager/view/PropertySliderView.js","webpack://grapesjs/./src/style_manager/model/Properties.js","webpack://grapesjs/./src/style_manager/model/Sector.js","webpack://grapesjs/./src/style_manager/model/Sectors.js","webpack://grapesjs/./src/style_manager/model/PropertyFactory.js","webpack://grapesjs/./src/style_manager/view/SectorView.js","webpack://grapesjs/./src/style_manager/view/SectorsView.js","webpack://grapesjs/./src/style_manager/index.js","webpack://grapesjs/./src/trait_manager/config/config.js","webpack://grapesjs/./src/trait_manager/view/TraitView.js","webpack://grapesjs/./src/trait_manager/view/TraitsView.js","webpack://grapesjs/./src/trait_manager/view/TraitSelectView.js","webpack://grapesjs/./src/trait_manager/view/TraitCheckboxView.js","webpack://grapesjs/./src/trait_manager/view/TraitNumberView.js","webpack://grapesjs/./src/trait_manager/view/TraitColorView.js","webpack://grapesjs/./src/trait_manager/view/TraitButtonView.js","webpack://grapesjs/./src/trait_manager/index.js","webpack://grapesjs/./src/undo_manager/index.js","webpack://grapesjs/./src/utils/Dragger.js","webpack://grapesjs/./src/utils/cash-dom.js","webpack://grapesjs/./src/utils/dom.js","webpack://grapesjs/./node_modules/promise-polyfill/src/finally.js","webpack://grapesjs/./node_modules/promise-polyfill/src/allSettled.js","webpack://grapesjs/./node_modules/promise-polyfill/src/index.js","webpack://grapesjs/./src/utils/fetch.js","webpack://grapesjs/./src/utils/Sorter.js","webpack://grapesjs/./src/utils/Resizer.js","webpack://grapesjs/./src/utils/index.js","webpack://grapesjs/./src/abstract/Model.ts","webpack://grapesjs/./src/abstract/Module.ts","webpack://grapesjs/./src/canvas/config/config.js","webpack://grapesjs/./src/canvas/model/Canvas.ts","webpack://grapesjs/./src/abstract/View.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/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/selector_manager/config/config.ts","webpack://grapesjs/./src/selector_manager/model/State.ts","webpack://grapesjs/./src/selector_manager/view/ClassTagView.ts","webpack://grapesjs/./src/selector_manager/view/ClassTagsView.ts","webpack://grapesjs/./src/selector_manager/index.ts","webpack://grapesjs/./src/selector_manager/model/Selector.ts","webpack://grapesjs/./src/selector_manager/model/Selectors.ts","webpack://grapesjs/./src/utils/html.ts","webpack://grapesjs/./src/utils/mixins.ts","webpack://grapesjs/./node_modules/regenerator-runtime/runtime.js","webpack://grapesjs/./src/commands/view/ sync ^\\.\\/.*$","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://grapesjs/./node_modules/underscore/modules/_setup.js","webpack://grapesjs/./node_modules/underscore/modules/restArguments.js","webpack://grapesjs/./node_modules/underscore/modules/isObject.js","webpack://grapesjs/./node_modules/underscore/modules/isNull.js","webpack://grapesjs/./node_modules/underscore/modules/isUndefined.js","webpack://grapesjs/./node_modules/underscore/modules/isBoolean.js","webpack://grapesjs/./node_modules/underscore/modules/isElement.js","webpack://grapesjs/./node_modules/underscore/modules/_tagTester.js","webpack://grapesjs/./node_modules/underscore/modules/isString.js","webpack://grapesjs/./node_modules/underscore/modules/isNumber.js","webpack://grapesjs/./node_modules/underscore/modules/isDate.js","webpack://grapesjs/./node_modules/underscore/modules/isRegExp.js","webpack://grapesjs/./node_modules/underscore/modules/isError.js","webpack://grapesjs/./node_modules/underscore/modules/isSymbol.js","webpack://grapesjs/./node_modules/underscore/modules/isArrayBuffer.js","webpack://grapesjs/./node_modules/underscore/modules/isFunction.js","webpack://grapesjs/./node_modules/underscore/modules/_hasObjectTag.js","webpack://grapesjs/./node_modules/underscore/modules/_stringTagBug.js","webpack://grapesjs/./node_modules/underscore/modules/isDataView.js","webpack://grapesjs/./node_modules/underscore/modules/isArray.js","webpack://grapesjs/./node_modules/underscore/modules/_has.js","webpack://grapesjs/./node_modules/underscore/modules/isArguments.js","webpack://grapesjs/./node_modules/underscore/modules/isFinite.js","webpack://grapesjs/./node_modules/underscore/modules/isNaN.js","webpack://grapesjs/./node_modules/underscore/modules/constant.js","webpack://grapesjs/./node_modules/underscore/modules/_createSizePropertyCheck.js","webpack://grapesjs/./node_modules/underscore/modules/_shallowProperty.js","webpack://grapesjs/./node_modules/underscore/modules/_getByteLength.js","webpack://grapesjs/./node_modules/underscore/modules/_isBufferLike.js","webpack://grapesjs/./node_modules/underscore/modules/isTypedArray.js","webpack://grapesjs/./node_modules/underscore/modules/_getLength.js","webpack://grapesjs/./node_modules/underscore/modules/_collectNonEnumProps.js","webpack://grapesjs/./node_modules/underscore/modules/keys.js","webpack://grapesjs/./node_modules/underscore/modules/isEmpty.js","webpack://grapesjs/./node_modules/underscore/modules/isMatch.js","webpack://grapesjs/./node_modules/underscore/modules/underscore.js","webpack://grapesjs/./node_modules/underscore/modules/_toBufferView.js","webpack://grapesjs/./node_modules/underscore/modules/isEqual.js","webpack://grapesjs/./node_modules/underscore/modules/allKeys.js","webpack://grapesjs/./node_modules/underscore/modules/_methodFingerprint.js","webpack://grapesjs/./node_modules/underscore/modules/isMap.js","webpack://grapesjs/./node_modules/underscore/modules/isWeakMap.js","webpack://grapesjs/./node_modules/underscore/modules/isSet.js","webpack://grapesjs/./node_modules/underscore/modules/isWeakSet.js","webpack://grapesjs/./node_modules/underscore/modules/values.js","webpack://grapesjs/./node_modules/underscore/modules/pairs.js","webpack://grapesjs/./node_modules/underscore/modules/invert.js","webpack://grapesjs/./node_modules/underscore/modules/functions.js","webpack://grapesjs/./node_modules/underscore/modules/_createAssigner.js","webpack://grapesjs/./node_modules/underscore/modules/extend.js","webpack://grapesjs/./node_modules/underscore/modules/extendOwn.js","webpack://grapesjs/./node_modules/underscore/modules/defaults.js","webpack://grapesjs/./node_modules/underscore/modules/_baseCreate.js","webpack://grapesjs/./node_modules/underscore/modules/create.js","webpack://grapesjs/./node_modules/underscore/modules/clone.js","webpack://grapesjs/./node_modules/underscore/modules/tap.js","webpack://grapesjs/./node_modules/underscore/modules/toPath.js","webpack://grapesjs/./node_modules/underscore/modules/_toPath.js","webpack://grapesjs/./node_modules/underscore/modules/_deepGet.js","webpack://grapesjs/./node_modules/underscore/modules/get.js","webpack://grapesjs/./node_modules/underscore/modules/has.js","webpack://grapesjs/./node_modules/underscore/modules/identity.js","webpack://grapesjs/./node_modules/underscore/modules/matcher.js","webpack://grapesjs/./node_modules/underscore/modules/property.js","webpack://grapesjs/./node_modules/underscore/modules/_optimizeCb.js","webpack://grapesjs/./node_modules/underscore/modules/_baseIteratee.js","webpack://grapesjs/./node_modules/underscore/modules/iteratee.js","webpack://grapesjs/./node_modules/underscore/modules/_cb.js","webpack://grapesjs/./node_modules/underscore/modules/mapObject.js","webpack://grapesjs/./node_modules/underscore/modules/noop.js","webpack://grapesjs/./node_modules/underscore/modules/propertyOf.js","webpack://grapesjs/./node_modules/underscore/modules/times.js","webpack://grapesjs/./node_modules/underscore/modules/random.js","webpack://grapesjs/./node_modules/underscore/modules/now.js","webpack://grapesjs/./node_modules/underscore/modules/_createEscaper.js","webpack://grapesjs/./node_modules/underscore/modules/_escapeMap.js","webpack://grapesjs/./node_modules/underscore/modules/escape.js","webpack://grapesjs/./node_modules/underscore/modules/unescape.js","webpack://grapesjs/./node_modules/underscore/modules/_unescapeMap.js","webpack://grapesjs/./node_modules/underscore/modules/templateSettings.js","webpack://grapesjs/./node_modules/underscore/modules/template.js","webpack://grapesjs/./node_modules/underscore/modules/result.js","webpack://grapesjs/./node_modules/underscore/modules/uniqueId.js","webpack://grapesjs/./node_modules/underscore/modules/chain.js","webpack://grapesjs/./node_modules/underscore/modules/_executeBound.js","webpack://grapesjs/./node_modules/underscore/modules/partial.js","webpack://grapesjs/./node_modules/underscore/modules/bind.js","webpack://grapesjs/./node_modules/underscore/modules/_isArrayLike.js","webpack://grapesjs/./node_modules/underscore/modules/_flatten.js","webpack://grapesjs/./node_modules/underscore/modules/bindAll.js","webpack://grapesjs/./node_modules/underscore/modules/memoize.js","webpack://grapesjs/./node_modules/underscore/modules/delay.js","webpack://grapesjs/./node_modules/underscore/modules/defer.js","webpack://grapesjs/./node_modules/underscore/modules/throttle.js","webpack://grapesjs/./node_modules/underscore/modules/debounce.js","webpack://grapesjs/./node_modules/underscore/modules/wrap.js","webpack://grapesjs/./node_modules/underscore/modules/negate.js","webpack://grapesjs/./node_modules/underscore/modules/compose.js","webpack://grapesjs/./node_modules/underscore/modules/after.js","webpack://grapesjs/./node_modules/underscore/modules/before.js","webpack://grapesjs/./node_modules/underscore/modules/once.js","webpack://grapesjs/./node_modules/underscore/modules/findKey.js","webpack://grapesjs/./node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack://grapesjs/./node_modules/underscore/modules/findIndex.js","webpack://grapesjs/./node_modules/underscore/modules/findLastIndex.js","webpack://grapesjs/./node_modules/underscore/modules/sortedIndex.js","webpack://grapesjs/./node_modules/underscore/modules/_createIndexFinder.js","webpack://grapesjs/./node_modules/underscore/modules/indexOf.js","webpack://grapesjs/./node_modules/underscore/modules/lastIndexOf.js","webpack://grapesjs/./node_modules/underscore/modules/find.js","webpack://grapesjs/./node_modules/underscore/modules/findWhere.js","webpack://grapesjs/./node_modules/underscore/modules/each.js","webpack://grapesjs/./node_modules/underscore/modules/map.js","webpack://grapesjs/./node_modules/underscore/modules/_createReduce.js","webpack://grapesjs/./node_modules/underscore/modules/reduce.js","webpack://grapesjs/./node_modules/underscore/modules/reduceRight.js","webpack://grapesjs/./node_modules/underscore/modules/filter.js","webpack://grapesjs/./node_modules/underscore/modules/reject.js","webpack://grapesjs/./node_modules/underscore/modules/every.js","webpack://grapesjs/./node_modules/underscore/modules/some.js","webpack://grapesjs/./node_modules/underscore/modules/contains.js","webpack://grapesjs/./node_modules/underscore/modules/invoke.js","webpack://grapesjs/./node_modules/underscore/modules/pluck.js","webpack://grapesjs/./node_modules/underscore/modules/where.js","webpack://grapesjs/./node_modules/underscore/modules/max.js","webpack://grapesjs/./node_modules/underscore/modules/min.js","webpack://grapesjs/./node_modules/underscore/modules/sample.js","webpack://grapesjs/./node_modules/underscore/modules/shuffle.js","webpack://grapesjs/./node_modules/underscore/modules/sortBy.js","webpack://grapesjs/./node_modules/underscore/modules/_group.js","webpack://grapesjs/./node_modules/underscore/modules/groupBy.js","webpack://grapesjs/./node_modules/underscore/modules/indexBy.js","webpack://grapesjs/./node_modules/underscore/modules/countBy.js","webpack://grapesjs/./node_modules/underscore/modules/partition.js","webpack://grapesjs/./node_modules/underscore/modules/toArray.js","webpack://grapesjs/./node_modules/underscore/modules/size.js","webpack://grapesjs/./node_modules/underscore/modules/_keyInObj.js","webpack://grapesjs/./node_modules/underscore/modules/pick.js","webpack://grapesjs/./node_modules/underscore/modules/omit.js","webpack://grapesjs/./node_modules/underscore/modules/initial.js","webpack://grapesjs/./node_modules/underscore/modules/first.js","webpack://grapesjs/./node_modules/underscore/modules/rest.js","webpack://grapesjs/./node_modules/underscore/modules/last.js","webpack://grapesjs/./node_modules/underscore/modules/compact.js","webpack://grapesjs/./node_modules/underscore/modules/flatten.js","webpack://grapesjs/./node_modules/underscore/modules/difference.js","webpack://grapesjs/./node_modules/underscore/modules/without.js","webpack://grapesjs/./node_modules/underscore/modules/uniq.js","webpack://grapesjs/./node_modules/underscore/modules/union.js","webpack://grapesjs/./node_modules/underscore/modules/intersection.js","webpack://grapesjs/./node_modules/underscore/modules/unzip.js","webpack://grapesjs/./node_modules/underscore/modules/zip.js","webpack://grapesjs/./node_modules/underscore/modules/object.js","webpack://grapesjs/./node_modules/underscore/modules/range.js","webpack://grapesjs/./node_modules/underscore/modules/chunk.js","webpack://grapesjs/./node_modules/underscore/modules/_chainResult.js","webpack://grapesjs/./node_modules/underscore/modules/mixin.js","webpack://grapesjs/./node_modules/underscore/modules/underscore-array-methods.js","webpack://grapesjs/./node_modules/underscore/modules/index-default.js","webpack://grapesjs/webpack/bootstrap","webpack://grapesjs/webpack/runtime/compat get default export","webpack://grapesjs/webpack/runtime/define property getters","webpack://grapesjs/webpack/runtime/global","webpack://grapesjs/webpack/runtime/hasOwnProperty shorthand","webpack://grapesjs/webpack/runtime/make namespace object","webpack://grapesjs/./src/editor/config/config.ts","webpack://grapesjs/./src/editor/model/Selected.ts","webpack://grapesjs/./src/editor/model/Editor.ts","webpack://grapesjs/./src/utils/extender.js","webpack://grapesjs/./src/editor/view/EditorView.ts","webpack://grapesjs/./src/editor/index.ts","webpack://grapesjs/./src/plugin_manager/config/config.js","webpack://grapesjs/./src/utils/polyfills.js","webpack://grapesjs/./src/index.js","webpack://grapesjs/./src/plugin_manager/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"grapesjs\"] = factory();\n\telse\n\t\troot[\"grapesjs\"] = factory();\n})(typeof globalThis !== 'undefined' ? globalThis : (typeof window !== 'undefined' ? window : this), () => {\nreturn ","module.exports = require(\"regenerator-runtime\");\n","/*!\n * Backbone.Undo.js v0.2\n * \n * Copyright (c)2013 Oliver Sartun\n * Released under the MIT License\n *\n * Documentation and full license available at\n * https://github.com/osartun/Backbone.Undo.js\n */\n\n\n(function (factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\t// AMD support\n\t\tdefine([\"underscore\", \"backbone\"], factory);\n\t} else if (typeof exports !== 'undefined') {\n\t\t// CommonJS support\n\t\tmodule.exports = factory(\n\t\t\trequire(\"underscore\"),\n\t\t\trequire(\"backbone\")\n\t\t);\n\t} else {\n\t\t// Non-modular execution\n\t\tfactory(_, Backbone);\n }\n})(function (_, Backbone) {\n\n\tvar core_slice = Array.prototype.slice;\n\n\t/**\n\t * As call is faster than apply, this is a faster version of apply as it uses call.\n\t * \n\t * @param {Function} fn \tThe function to execute \n\t * @param {Object} ctx \tThe context the function should be called in\n\t * @param {Array} args \tThe array of arguments that should be applied to the function\n\t * @return Forwards whatever the called function returns\n\t */\n\tfunction apply (fn, ctx, args) {\n\t\treturn args.length <= 4 ?\n\t\t\tfn.call(ctx, args[0], args[1], args[2], args[3]) :\n\t\t\tfn.apply(ctx, args);\n\t}\n\n\t/**\n\t * Uses slice on an array or an array-like object.\n\t * \n\t * @param {Array|Object} \tarr \tThe array or array-like object.\n\t * @param {Number} \t\t[index]\tThe index from where the array should be sliced. Default is 0.\n\t * @return {Array} The sliced array\n\t */\n\tfunction slice (arr, index) {\n\t\treturn core_slice.call(arr, index);\n\t}\n\n\t/**\n\t * Checks if an object has one or more specific keys. The keys \n\t * don't have to be an owned property.\n\t * You can call this function either this way:\n\t * hasKeys(obj, [\"a\", \"b\", \"c\"])\n\t * or this way:\n\t * hasKeys(obj, \"a\", \"b\", \"c\")\n\t * \n\t * @param {Object} \tobj \tThe object to check on\n\t * @param {Array} \tkeys \tThe keys to check for\n\t * @return {Boolean} True, if the object has all those keys\n\t */\n\tfunction hasKeys (obj, keys) {\n\t\tif (obj == null) return false;\n\t\tif (!_.isArray(keys)) {\n\t\t\tkeys = slice(arguments, 1);\n\t\t}\n\t\treturn _.all(keys, function (key) {\n\t\t\treturn key in obj;\n\t\t});\n\t}\n\n\t/**\n\t * Returns a number that is unique per call stack. The number gets \n\t * changed after the call stack has been completely processed.\n\t * \n\t * @return {number} MagicFusionIndex\n\t */\n\tvar getMagicFusionIndex = (function () {\n\t\t// If you add several models to a collection or set several\n\t\t// attributes on a model all in sequence and yet all for\n\t\t// example in one function, then several Undo-Actions are\n\t\t// generated.\n\t\t// If you want to undo your last action only the last model\n\t\t// would be removed from the collection or the last set\n\t\t// attribute would be changed back to its previous value.\n\t\t// To prevent that we have to figure out a way to combine\n\t\t// all those actions that happened \"at the same time\". \n\t\t// Timestamps aren't exact enough. A complex routine could \n\t\t// run several milliseconds and in that time produce a lot \n\t\t// of actions with different timestamps.\n\t\t// Instead we take advantage of the single-threadedness of\n\t\t// JavaScript:\n\n\t\tvar callstackWasIndexed = false, magicFusionIndex = -1;\n\t\tfunction indexCycle() {\n\t\t\tmagicFusionIndex++;\n\t\t\tcallstackWasIndexed = true;\n\t\t\t_.defer(function () {\n\t\t\t\t// Here comes the magic. With a Timeout of 0 \n\t\t\t\t// milliseconds this function gets called whenever\n\t\t\t\t// the current callstack is completed\n\t\t\t\tcallstackWasIndexed = false;\n\t\t\t})\n\t\t}\n\t\treturn function () {\n\t\t\tif (!callstackWasIndexed) {\n\t\t\t\tindexCycle();\n\t\t\t}\n\t\t\treturn magicFusionIndex;\n\t\t}\n\t})();\n\n\t/**\n\t * To prevent binding a listener several times to one \n\t * object, we register the objects in an ObjectRegistry\n\t *\n\t * @constructor\n\t */\n\tfunction ObjectRegistry () {\n\t\t// This uses two different ways of storing\n\t\t// objects: In case the object has a cid\n\t\t// (which Backbone objects typically have)\n\t\t// it uses this cid as an index. That way\n\t\t// the Array's length attribute doesn't \n\t\t// change and the object isn't an item \n\t\t// in the array, but an object-property.\n\t\t// Otherwise it's added to the Array as an\n\t\t// item.\n\t\t// That way we can use the fast property-\n\t\t// lookup and only have to fall back to \n\t\t// iterating over the array in case \n\t\t// non-Backbone-objects are registered.\n\t\tthis.registeredObjects = [];\n\t\t// To return a list of all registered \n\t\t// objects in the 'get' method we have to\n\t\t// store the objects that have a cid in\n\t\t// an additional array. \n\t\tthis.cidIndexes = [];\n\t}\n\tObjectRegistry.prototype = {\n\t\t/**\n\t\t * Returns whether the object is already registered in this ObjectRegistry or not.\n\t\t * \n\t\t * @this \t{ObjectRegistry}\n\t\t * @param \t{Object} \t\t obj \tThe object to check\n\t\t * @return \t{Boolean} True if the object is already registered\n\t\t */\n\t\tisRegistered: function (obj) {\n\t\t\t// This is where we get a performance boost \n\t\t\t// by using the two different ways of storing \n\t\t\t// objects.\n\t\t\treturn obj && obj.cid ? this.registeredObjects[obj.cid] : _.contains(this.registeredObjects, obj);\n\t\t},\n\t\t/**\n\t\t * Registers an object in this ObjectRegistry.\n\t\t * \n\t\t * @this \t{ObjectRegistry}\n\t\t * @param \t{Object} \t\t obj \tThe object to register\n\t\t * @return \t{undefined}\n\t\t */\n\t\tregister: function (obj) {\n\t\t\tif (!this.isRegistered(obj)) {\n\t\t\t\tif (obj && obj.cid) {\n\t\t\t\t\tthis.registeredObjects[obj.cid] = obj;\n\t\t\t\t\tthis.cidIndexes.push(obj.cid);\n\t\t\t\t} else {\n\t\t\t\t\tthis.registeredObjects.push(obj);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t/**\n\t\t * Unregisters an object from this ObjectRegistry.\n\t\t * \n\t\t * @this {ObjectRegistry}\n\t\t * @param {Object} obj The object to unregister\n\t\t * @return {undefined}\n\t\t */\n\t\tunregister: function (obj) {\n\t\t\tif (this.isRegistered(obj)) {\n\t\t\t\tif (obj && obj.cid) {\n\t\t\t\t\tdelete this.registeredObjects[obj.cid];\n\t\t\t\t\tthis.cidIndexes.splice(_.indexOf(this.cidIndexes, obj.cid), 1);\n\t\t\t\t} else {\n\t\t\t\t\tvar i = _.indexOf(this.registeredObjects, obj);\n\t\t\t\t\tthis.registeredObjects.splice(i, 1);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t/**\n\t\t * Returns an array of all objects that are currently in this ObjectRegistry.\n\t\t * \n\t\t * @return {Array} An array of all the objects which are currently in the ObjectRegistry\n\t\t */\n\t\tget: function () {\n\t\t\treturn (_.map(this.cidIndexes, function (cid) {return this.registeredObjects[cid];}, this)).concat(this.registeredObjects);\n\t\t}\n\t}\n\n\t/**\n\t * Binds or unbinds the \"all\"-listener for one or more objects.\n\t * \n\t * @param {String} which \tEither \"on\" or \"off\"\n\t * @param {Object[]} objects \tArray of the objects on which the \"all\"-listener should be bound / unbound to\n\t * @param {Function} [fn] \t\tThe function that should be bound / unbound. Optional in case of \"off\"\n\t * @param {Object} [ctx] \tThe context the function should be called in\n\t * @return {undefined}\n\t */\n\tfunction onoff(which, objects, fn, ctx) {\n\t\tfor (var i = 0, l = objects.length, obj; i < l; i++) {\n\t\t\tobj = objects[i];\n\t\t\tif (!obj) continue;\n\t\t\tif (which === \"on\") {\n\t\t\t\tif (!ctx.objectRegistry.register(obj)) {\n\t\t\t\t\t// register returned false, so obj was already registered\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!ctx.objectRegistry.unregister(obj)) {\n\t\t\t\t\t// unregister returned false, so obj wasn't registered\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (_.isFunction(obj[which])) {\n\t\t\t\tobj[which](\"all\", fn, ctx);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calls the undo/redo-function for a specific action.\n\t * \n\t * @param {String} which \tEither \"undo\" or \"redo\"\n\t * @param {Object} action \tThe Action's attributes\n\t * @return {undefined}\n\t */\n\tfunction actionUndoRedo (which, action) {\n\t\tvar type = action.type, undoTypes = action.undoTypes, fn = !undoTypes[type] || undoTypes[type][which];\n\t\tif (_.isFunction(fn)) {\n\t\t\tfn(action.object, action.before, action.after, action.options);\n\t\t}\n\t}\n\n\t/**\n\t * The main undo/redo function.\n\t *\n\t * @param {String} \t\twhich \t Either \"undo\" or \"redo\"\n\t * @param {UndoManager} \tmanager\t The UndoManager-instance on which an \"undo\"/\"redo\"-Event is triggered afterwards\n\t * @param {UndoStack} \t\tstack \t The UndoStack on which we perform\n\t * @param {Boolean} \t\tmagic \t If true, undoes / redoes all actions with the same magicFusionIndex\n\t * @param {Boolean} \t\teverything If true, undoes / redoes every action that had been tracked\n\t * @return {undefined}\n\t */\n\tfunction managerUndoRedo (which, manager, stack, magic, everything) {\n\t\tif (stack.isCurrentlyUndoRedoing || \n\t\t\t(which === \"undo\" && stack.pointer === -1) ||\n\t\t\t(which === \"redo\" && stack.pointer === stack.length - 1)) {\n\t\t\t// We're either currently in an undo- / redo-process or \n\t\t\t// we reached the end of the stack\n\t\t\treturn;\n\t\t}\n\t\tstack.isCurrentlyUndoRedoing = true;\n\t\tvar action, actions, isUndo = which === \"undo\";\n\t\tif (everything) {\n\t\t\t// Undo / Redo all steps until you reach the stack's beginning / end\n\t\t\tactions = isUndo && stack.pointer === stack.length - 1 || // If at the stack's end calling undo\n\t\t\t\t\t !isUndo && stack.pointer === -1 ? // or at the stack's beginning calling redo\n\t\t\t\t\t _.clone(stack.models) : // => Take all the models. Otherwise:\n\t\t\t\t\t core_slice.apply(stack.models, isUndo ? [0, stack.pointer] : [stack.pointer, stack.length - 1]);\n\t\t} else {\n\t\t\t// Undo / Redo only one step\n\t\t\taction = stack.at(isUndo ? stack.pointer : stack.pointer + 1);\n\t\t\tactions = magic ? stack.where({\"magicFusionIndex\": action.get(\"magicFusionIndex\")}) : [action];\n\t\t}\n\t\t\n\t\tstack.pointer += (isUndo ? -1 : 1) * actions.length;\n\t\twhile (action = isUndo ? actions.pop() : actions.shift()) {\n\t\t\t// Here we're calling the Action's undo / redo method\n\t\t\taction[which]();\n\t\t}\n\t\tstack.isCurrentlyUndoRedoing = false;\n\n\t\tmanager.trigger(which, manager);\n\t}\n\n\t/**\n\t * Checks whether an UndoAction should be created or not. Therefore it checks\n\t * whether a \"condition\" property is set in the undoTypes-object of the specific\n\t * event type. If not, it returns true. If it's set and a boolean, it returns it.\n\t * If it's a function, it returns its result, converting it into a boolean. \n\t * Otherwise it returns true.\n\t * \n\t * @param {Object} \tundoTypesType \tThe object within the UndoTypes that holds the function for this event type (i.e. \"change\")\n\t * @param {Arguments} \targs \t\tThe arguments the \"condition\" function is called with\n\t * @return {Boolean} \tTrue, if an UndoAction should be created\n\t */\n\tfunction validateUndoActionCreation (undoTypesType, args) {\n\t\tvar condition = undoTypesType.condition, type = typeof condition;\n\t\treturn type === \"function\" ? !!apply(condition, undoTypesType, args) :\n\t\t\ttype === \"boolean\" ? condition : true;\n\t}\n\n\t/**\n\t * Adds an Undo-Action to the stack.\n\t * \n\t * @param {UndoStack} \t\tstack \t\tThe undostack the action should be added to.\n\t * @param {String} \t\t\ttype \t\tThe event type (i.e. \"change\")\n\t * @param {Arguments} \t\targs \t\tThe arguments passed to the undoTypes' \"on\"-handler\n\t * @param {OwnedUndoTypes} \tundoTypes \tThe undoTypes-object which has the \"on\"-handler\n\t * @return {undefined}\n\t */\n\tfunction addToStack(stack, type, args, undoTypes) {\n\t\tif (stack.track && !stack.isCurrentlyUndoRedoing && type in undoTypes &&\n\t\t\tvalidateUndoActionCreation(undoTypes[type], args)) {\n\t\t\t// An UndoAction should be created\n\t\t\tvar res = apply(undoTypes[type][\"on\"], undoTypes[type], args), diff;\n\t\t\tif (hasKeys(res, \"object\", \"before\", \"after\")) {\n\t\t\t\tres.type = type;\n\t\t\t\tres.magicFusionIndex = getMagicFusionIndex();\n\t\t\t\tres.undoTypes = undoTypes;\n\t\t\t\tif (stack.pointer < stack.length - 1) {\n\t\t\t\t\t// New Actions must always be added to the end of the stack.\n\t\t\t\t\t// If the pointer is not pointed to the last action in the\n\t\t\t\t\t// stack, presumably because actions were undone before, then\n\t\t\t\t\t// all following actions must be discarded\n\t\t\t\t\tvar diff = stack.length - stack.pointer - 1;\n\t\t\t\t\twhile (diff--) {\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstack.pointer = stack.length;\n\t\t\t\tstack.add(res);\n\t\t\t\tif (stack.length > stack.maximumStackLength) {\n\t\t\t\t\tstack.shift();\n\t\t\t\t\tstack.pointer--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t * Predefined UndoTypes object with default handlers for the most common events.\n\t * @type {Object}\n\t */\n\tvar UndoTypes = {\n\t\t\"add\": {\n\t\t\t\"undo\": function (collection, ignore, model, options) {\n\t\t\t\t// Undo add = remove\n\t\t\t\tcollection.remove(model, options);\n\t\t\t},\n\t\t\t\"redo\": function (collection, ignore, model, options) {\n\t\t\t\t// Redo add = add\n\t\t\t\tif (options.index) {\n\t\t\t\t\toptions.at = options.index;\n\t\t\t\t}\n\t\t\t\tcollection.add(model, options);\n\t\t\t},\n\t\t\t\"on\": function (model, collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: undefined,\n\t\t\t\t\tafter: model,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"remove\": {\n\t\t\t\"undo\": function (collection, model, ignore, options) {\n\t\t\t\tif (\"index\" in options) {\n\t\t\t\t\toptions.at = options.index;\n\t\t\t\t}\n\t\t\t\tcollection.add(model, options);\n\t\t\t},\n\t\t\t\"redo\": function (collection, model, ignore, options) {\n\t\t\t\tcollection.remove(model, options);\n\t\t\t},\n\t\t\t\"on\": function (model, collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: model,\n\t\t\t\t\tafter: undefined,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"change\": {\n\t\t\t\"undo\": function (model, before, after, options) {\n\t\t\t\tif (_.isEmpty(before)) {\n\t\t\t\t\t_.each(_.keys(after), model.unset, model);\n\t\t\t\t} else {\n\t\t\t\t\tmodel.set(before);\n\t\t\t\t\tif (options && options.unsetData && options.unsetData.before && options.unsetData.before.length) {\n\t\t\t\t\t\t_.each(options.unsetData.before, model.unset, model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"redo\": function (model, before, after, options) {\n\t\t\t\tif (_.isEmpty(after)) {\n\t\t\t\t\t_.each(_.keys(before), model.unset, model);\n\t\t\t\t} else {\n\t\t\t\t\tmodel.set(after);\n\t\t\t\t\tif (options && options.unsetData && options.unsetData.after && options.unsetData.after.length) {\n\t\t\t\t\t\t_.each(options.unsetData.after, model.unset, model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"on\": function (model, options) {\n\t\t\t\tvar\n\t\t\t\tafterAttributes = model.changedAttributes(),\n\t\t\t\tkeysAfter = _.keys(afterAttributes),\n\t\t\t\tpreviousAttributes = _.pick(model.previousAttributes(), keysAfter),\n\t\t\t\tkeysPrevious = _.keys(previousAttributes),\n\t\t\t\tunsetData = (options || (options = {})).unsetData = {\n\t\t\t\t\tafter: [],\n\t\t\t\t\tbefore: []\n\t\t\t\t};\n\n\t\t\t\tif (keysAfter.length != keysPrevious.length) {\n\t\t\t\t\t// There are new attributes or old attributes have been unset\n\t\t\t\t\tif (keysAfter.length > keysPrevious.length) {\n\t\t\t\t\t\t// New attributes have been added\n\t\t\t\t\t\t_.each(keysAfter, function (val) {\n\t\t\t\t\t\t\tif (!(val in previousAttributes)) {\n\t\t\t\t\t\t\t\tunsetData.before.push(val);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Old attributes have been unset\n\t\t\t\t\t\t_.each(keysPrevious, function (val) {\n\t\t\t\t\t\t\tif (!(val in afterAttributes)) {\n\t\t\t\t\t\t\t\tunsetData.after.push(val);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tobject: model,\n\t\t\t\t\tbefore: previousAttributes,\n\t\t\t\t\tafter: afterAttributes,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"reset\": {\n\t\t\t\"undo\": function (collection, before, after) {\n\t\t\t\tcollection.reset(before);\n\t\t\t},\n\t\t\t\"redo\": function (collection, before, after) {\n\t\t\t\tcollection.reset(after);\n\t\t\t},\n\t\t\t\"on\": function (collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: options.previousModels,\n\t\t\t\t\tafter: _.clone(collection.models)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Every UndoManager instance has an own undoTypes object\n\t * which is an instance of OwnedUndoTypes. OwnedUndoTypes' \n\t * prototype is the global UndoTypes object. Changes to the \n\t * global UndoTypes object take effect on every instance of\n\t * UndoManager as the object is its prototype. And yet every \n\t * local UndoTypes object can be changed individually.\n\t *\n\t * @constructor\n\t */\n\tfunction OwnedUndoTypes () {}\n\tOwnedUndoTypes.prototype = UndoTypes;\n\n\t/**\n\t * Adds, changes or removes an undo-type from an UndoTypes-object.\n\t * You can call it this way:\n\t * manipulateUndoType (1, \"reset\", {\"on\": function () {}}, undoTypes)\n\t * or this way to perform bulk actions:\n\t * manipulateUndoType (1, {\"reset\": {\"on\": function () {}}}, undoTypes)\n\t * In case of removing undo-types you can pass an Array for performing\n\t * bulk actions:\n\t * manipulateUndoType(2, [\"reset\", \"change\"], undoTypes)\n\t * \n\t * @param {Number} \t\t\t\t manipType \t\tIndicates the kind of action to execute: 0 for add, 1 for change, 2 for remove\n\t * @param {String|Object|Array} \t undoType \t\t\tThe type of undoType that should be added/changed/removed. Can be an object / array to perform bulk actions\n\t * @param {Object} \t\t\t\t [fns] \t\t\tObject with the functions to add / change. Is optional in case you passed an object as undoType that contains these functions\n\t * @param {OwnedUndoTypes|UndoTypes} undoTypesInstance The undoTypes object to act on\n\t * @return {undefined}\n\t */\n\tfunction manipulateUndoType (manipType, undoType, fns, undoTypesInstance) {\n\t\t// manipType, passed by the calling function\n\t\t// 0: add\n\t\t// 1: change\n\t\t// 2: remove\n\t\tif (typeof undoType === \"object\") {\n\t\t\t// bulk action. Iterate over this data.\n\t\t\treturn _.each(undoType, function (val, key) {\n\t\t\t\t\tif (manipType === 2) { // remove\n\t\t\t\t\t\t// undoType is an array\n\t\t\t\t\t\tmanipulateUndoType (manipType, val, fns, undoTypesInstance);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// undoType is an object\n\t\t\t\t\t\tmanipulateUndoType (manipType, key, val, fns);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\tswitch (manipType) {\n\t\t\tcase 0: // add\n\t\t\t\tif (hasKeys(fns, \"undo\", \"redo\", \"on\") && _.all(_.pick(fns, \"undo\", \"redo\", \"on\"), _.isFunction)) {\n\t\t\t\t\tundoTypesInstance[undoType] = fns;\n\t\t\t\t} \n\t\t\tbreak;\n\t\t\tcase 1: // change\n\t\t\t\tif (undoTypesInstance[undoType] && _.isObject(fns)) {\n\t\t\t\t\t// undoTypeInstance[undoType] may be a prototype's property\n\t\t\t\t\t// So, if we did this _.extend(undoTypeInstance[undoType], fns)\n\t\t\t\t\t// we would extend the object on the prototype which means\n\t\t\t\t\t// that this change would have a global effect\n\t\t\t\t\t// Instead we just want to manipulate this instance. That's why\n\t\t\t\t\t// we're doing this:\n\t\t\t\t\tundoTypesInstance[undoType] = _.extend({}, undoTypesInstance[undoType], fns);\n\t\t\t\t} \n\t\t\tbreak;\n\t\t\tcase 2: // remove\n\t\t\t\tdelete undoTypesInstance[undoType]; \n\t\t\tbreak;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Instantiating \"Action\" creates the UndoActions that \n\t * are collected in an UndoStack. It holds all relevant \n\t * data to undo / redo an action and has an undo / redo \n\t * method.\n\t */\n\tvar Action = Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\ttype: null, // \"add\", \"change\", \"reset\", etc.\n\t\t\tobject: null, // The object on which the action occurred\n\t\t\tbefore: null, // The previous values which were changed with this action\n\t\t\tafter: null, // The values after this action\n\t\t\tmagicFusionIndex: null // The magicFusionIndex helps to combine \n\t\t\t// all actions that occurred \"at the same time\" to undo/redo them altogether\n\t\t},\n\t\t/**\n\t\t * Undoes this action.\n\t\t * @param {OwnedUndoTypes|UndoTypes} undoTypes The undoTypes object which contains the \"undo\"-handler that should be used\n\t\t * @return {undefined}\n\t\t */\n\t\tundo: function (undoTypes) {\n\t\t\tactionUndoRedo(\"undo\", this.attributes);\n\t\t},\n\t\t/**\n\t\t * Redoes this action.\n\t\t * @param {OwnedUndoTypes|UndoTypes} undoTypes The undoTypes object which contains the \"redo\"-handler that should be used\n\t\t * @return {undefined}\n\t\t */\n\t\tredo: function (undoTypes) {\n\t\t\tactionUndoRedo(\"redo\", this.attributes);\n\t\t}\n\t}),\n\t/**\n\t * An UndoStack is a collection of UndoActions in \n\t * chronological order.\n\t */\n\tUndoStack = Backbone.Collection.extend({\n\t\tmodel: Action,\n\t\tpointer: -1, // The pointer indicates the index where we are located within the stack. We start at -1\n\t\ttrack: false,\n\t\tisCurrentlyUndoRedoing: false,\n\t\tmaximumStackLength: Infinity,\n\t\tsetMaxLength: function (val) {\n\t\t\tthis.maximumStackLength = val;\n\t\t}\n\t}),\n\t/**\n\t * An instance of UndoManager can keep track of \n\t * changes to objects and helps to undo them.\n\t */\n\tUndoManager = Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\tmaximumStackLength: Infinity,\n\t\t\ttrack: false\n\t\t},\n\t\t/**\n\t\t * The constructor function.\n\t\t * @param {attr} \t\t[attr] Object with parameters. The available parameters are:\n\t\t * \t - maximumStackLength {number} \tSet the undo-stack's maximum size\n\t\t * - track \t\t\t\t{boolean}\tStart tracking changes right away\n\t\t * @return {undefined}\n\t\t */\n\t\tinitialize: function (attr) {\n\t\t\tthis.stack = new UndoStack;\n\t\t\tthis.objectRegistry = new ObjectRegistry();\n\t\t\tthis.undoTypes = new OwnedUndoTypes();\n\n\t\t\t// sync the maximumStackLength attribute with our stack\n\t\t\tthis.stack.setMaxLength(this.get(\"maximumStackLength\"));\n\t\t\tthis.on(\"change:maximumStackLength\", function (model, value) {\n\t\t\t\tthis.stack.setMaxLength(value);\n\t\t\t}, this);\n\n\t\t\t// Start tracking, if attr.track == true\n\t\t\tif (attr && attr.track) {\n\t\t\t\tthis.startTracking();\n\t\t\t}\n\n\t\t\t// Register objects passed in the \"register\" attribute\n\t\t\tif (attr && attr.register) {\n\t\t\t\tif (_.isArray(attr.register) || _.isArguments(attr.register)) {\n\t\t\t\t\tapply(this.register, this, attr.register);\n\t\t\t\t} else {\n\t\t\t\t\tthis.register(attr.register);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Starts tracking. Changes of registered objects won't be processed until you've called this function\n\t\t * @return {undefined}\n\t\t */\n\t\tstartTracking: function () {\n\t\t\tthis.set(\"track\", true);\n\t\t\tthis.stack.track = true;\n\t\t},\n\t\t/**\n\t\t * Stops tracking. Afterwards changes of registered objects won't be processed.\n\t\t * @return {undefined}\n\t\t */\n\t\tstopTracking: function () {\n\t\t\tthis.set(\"track\", false);\n\t\t\tthis.stack.track = false;\n\t\t},\n\t\t/**\n\t\t * Return the state of the tracking\n\t\t * @return {boolean}\n\t\t */\n\t\tisTracking: function () {\n\t\t\treturn this.get(\"track\");\n\t\t},\n\t\t/**\n\t\t * This is the \"all\"-handler which is bound to registered \n\t\t * objects. It creates an UndoAction from the event and adds \n\t\t * it to the stack.\n\t\t * \n\t\t * @param {String} \ttype \tThe event type\n\t\t * @return {undefined}\n\t\t */\n\t\t_addToStack: function (type) {\n\t\t\taddToStack(this.stack, type, slice(arguments, 1), this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Registers one or more objects to track their changes.\n\t\t * @param {...Object} \tobj \tThe object or objects of which changes should be tracked\n\t\t * @return {undefined}\n\t\t */\n\t\tregister: function () {\n\t\t\tonoff(\"on\", arguments, this._addToStack, this);\n\t\t},\n\t\t/**\n\t\t * Unregisters one or more objects.\n\t\t * @param {...Object} \tobj \tThe object or objects of which changes shouldn't be tracked any longer\n\t\t * @return {undefined}\n\t\t */\n\t\tunregister: function () {\n\t\t\tonoff(\"off\", arguments, this._addToStack, this);\n\t\t},\n\t\t/**\n\t\t * Unregisters all previously registered objects.\n\t\t * @return {undefined}\n\t\t */\n\t\tunregisterAll: function () {\n\t\t\tapply(this.unregister, this, this.objectRegistry.get());\n\t\t},\n\t\t/**\n\t\t * Undoes the last action or the last set of actions in case 'magic' is true.\n\t\t * @param {Boolean} \t[magic] \tIf true, all actions that happened basically at the same time are undone together\n\t\t * @return {undefined}\n\t\t */\n\t\tundo: function (magic) {\n\t\t\tmanagerUndoRedo(\"undo\", this, this.stack, magic);\n\t\t},\n\n\t\t/**\n\t\t * Undoes all actions ever tracked by the undo manager\n\t\t * @return {undefined}\n\t\t */\n\t\tundoAll: function () {\n\t\t\tmanagerUndoRedo(\"undo\", this, this.stack, false, true);\n\t\t},\n\n\t\t/**\n\t\t * Redoes a previously undone action or a set of actions.\n\t\t * @param {Boolean} \t[magic] \tIf true, all actions that happened basically at the same time are redone together\n\t\t * @return {undefined}\n\t\t */\n\t\tredo: function (magic) {\n\t\t\tmanagerUndoRedo(\"redo\", this, this.stack, magic);\n\t\t},\n\n\t\t/**\n\t\t * Redoes all actions ever tracked by the undo manager\n\t\t * @return {undefined}\n\t\t */\n\t\tredoAll: function () {\n\t\t\tmanagerUndoRedo(\"redo\", this, this.stack, false, true);\n\t\t},\n\t\t/**\n\t\t * Checks if there's an action in the stack that can be undone / redone\n\t\t * @param {String} \ttype \tEither \"undo\" or \"redo\"\n\t\t * @return {Boolean} True if there is a set of actions which can be undone / redone\n\t\t */\n\t\tisAvailable: function (type) {\n\t\t\tvar s = this.stack, l = s.length;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase \"undo\": return l > 0 && s.pointer > -1;\n\t\t\t\tcase \"redo\": return l > 0 && s.pointer < l - 1;\n\t\t\t\tdefault: return false;\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Sets the stack-reference to the stack of another undoManager.\n\t\t * @param {UndoManager} \tundoManager \tThe undoManager whose stack-reference is set to this stack\n\t\t * @return {undefined}\n\t\t */\n\t\tmerge: function (undoManager) {\n\t\t\t// This sets the stack-reference to the stack of another \n\t\t\t// undoManager so that the stack of this other undoManager \n\t\t\t// is used by two different managers.\n\t\t\t// This enables to set up a main-undoManager and besides it\n\t\t\t// several others for special, exceptional cases (by using\n\t\t\t// instance-based custom UndoTypes). Models / collections \n\t\t\t// which need this special treatment are only registered at \n\t\t\t// those special undoManagers. Those special ones are then \n\t\t\t// merged into the main-undoManager to write on its stack. \n\t\t\t// That way it's easier to manage exceptional cases.\n\t\t\tvar args = _.isArray(undoManager) ? undoManager : slice(arguments), manager;\n\t\t\twhile (manager = args.pop()) {\n\t\t\t\tif (manager instanceof UndoManager &&\n\t\t\t\t\tmanager.stack instanceof UndoStack) {\n\t\t\t\t\t// set the stack reference to our stack\n\t\t\t\t\tmanager.stack = this.stack;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Add an UndoType to this specific UndoManager-instance.\n\t\t * @param {String} type The event this UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. Must have the properties \"undo\", \"redo\" and \"on\". Can have the property \"condition\".\n\t\t * @return {undefined}\n\t\t */\n\t\taddUndoType: function (type, fns) {\n\t\t\tmanipulateUndoType(0, type, fns, this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Overwrite properties of an existing UndoType for this specific UndoManager-instance.\n\t\t * @param {String} type The event the UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. It extends the existing object.\n\t\t * @return {undefined}\n\t\t */\n\t\tchangeUndoType: function (type, fns) {\n\t\t\tmanipulateUndoType(1, type, fns, this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Remove one or more UndoTypes of this specific UndoManager-instance to fall back to the global UndoTypes.\n\t\t * @param {String|Array} type The event the UndoType that should be removed is made for. You can also pass an array of events.\n\t\t * @return {undefined}\n\t\t */\n\t\tremoveUndoType: function (type) {\n\t\t\tmanipulateUndoType(2, type, undefined, this.undoTypes);\n\t\t},\n\n\t\t/**\n\t\t * Removes all actions from the stack.\n\t\t * @return {undefined}\n\t\t */\n\t\tclear: function() {\n\t\t\tthis.stack.reset();\n\t\t\tthis.stack.pointer = -1;\n\t\t}\n\t});\n\n\t_.extend(UndoManager, {\n\t\t/**\n\t\t * Change the UndoManager's default attributes\n\t\t * @param {Object} defaultAttributes An object with the new default values.\n\t\t * @return {undefined}\n\t\t */\n\t\tdefaults: function (defaultAttributes) {\n\t\t\t_.extend(UndoManager.prototype.defaults, defaultAttributes);\n\t\t},\n\t\t/**\n\t\t * Add an UndoType to the global UndoTypes-object.\n\t\t * @param {String} type The event this UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. Must have the properties \"undo\", \"redo\" and \"on\". Can have the property \"condition\".\n\t\t * @return {undefined}\n\t\t */\n\t\t\"addUndoType\": function (type, fns) {\n\t\t\tmanipulateUndoType(0, type, fns, UndoTypes);\n\t\t},\n\t\t/**\n\t\t * Overwrite properties of an existing UndoType in the global UndoTypes-object.\n\t\t * @param {String} type The event the UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. It extends the existing object.\n\t\t * @return {undefined}\n\t\t */\n\t\t\"changeUndoType\": function (type, fns) {\n\t\t\tmanipulateUndoType(1, type, fns, UndoTypes)\n\t\t},\n\t\t/**\n\t\t * Remove one or more UndoTypes of this specific UndoManager-instance to fall back to the global UndoTypes.\n\t\t * @param {String|Array} type The event the UndoType that should be removed is made for. You can also pass an array of events.\n\t\t * @return {undefined}\n\t\t */\n\t\t\"removeUndoType\": function (type) {\n\t\t\tmanipulateUndoType(2, type, undefined, UndoTypes);\n\t\t}\n\t})\n\n\treturn Backbone.UndoManager = UndoManager;\n\n});\n","// Backbone.js 1.3.3\n\n// (c) 2010-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global);\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.3.3';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return _[method](this[attribute]);\n };\n case 2: return function(value) {\n return _[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return _[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return _[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return _[method].apply(_, args);\n };\n }\n };\n var addUnderscoreMethods = function(Class, methods, attribute) {\n _.each(methods, function(length, method) {\n if (_[method]) Class.prototype[method] = addMethod(length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n return internalOn(this, name, callback, context);\n };\n\n // Guard the `listening` argument from the public API.\n var internalOn = function(obj, name, callback, context, listening) {\n obj._events = eventsApi(onApi, obj._events || {}, name, callback, {\n context: context,\n ctx: obj,\n listening: listening\n });\n\n if (listening) {\n var listeners = obj._listeners || (obj._listeners = {});\n listeners[listening.id] = listening;\n }\n\n return obj;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n var thisId = this._listenId || (this._listenId = _.uniqueId('l'));\n listening = listeningTo[id] = {obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0};\n }\n\n // Bind callbacks on obj, and keep track of them on listening.\n internalOn(obj, name, callback, this, listening);\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n }\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var i = 0, listening;\n var context = options.context, listeners = options.listeners;\n\n // Delete all events listeners and \"drop\" events.\n if (!name && !callback && !context) {\n var ids = _.keys(listeners);\n for (; i < ids.length; i++) {\n listening = listeners[ids[i]];\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n return;\n }\n\n var names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Replace events if there are any remaining. Otherwise, clean up.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n listening = handler.listening;\n if (listening && --listening.count === 0) {\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n }\n }\n\n // Update tail event if the list has any events. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.off, this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.stopListening, this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) this.id = this.get(this.idAttribute);\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n }\n return _.size(changed) ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Model#attributes`.\n addUnderscoreMethods(Model, modelMethods, 'attributes');\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(obj.attributes || obj)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = _.bind(comparator, this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) collection.add(m, callbackOpts);\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs) {\n return attrs[this.model.prototype.idAttribute || 'id'];\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n var model = new this.model(attrs, options);\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'change') {\n var prevId = this.modelId(model.previousAttributes());\n var id = this.modelId(model.attributes);\n if (prevId !== id) {\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n }\n this.trigger.apply(this, arguments);\n }\n\n });\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n addUnderscoreMethods(Collection, collectionMethods, 'models');\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], _.bind(method, this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = _.bind(this.checkUrl, this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Don't include a trailing slash on the root.\n var rootPath = this.root;\n if (fragment === '' || fragment.charAt(0) === '?') {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the hash and decode for matching.\n fragment = this.decodeFragment(fragment.replace(pathStripper, ''));\n\n if (this.fragment === fragment) return;\n this.fragment = fragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n return Backbone;\n});\n","(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"codemirror/lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"codemirror/lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\n CodeMirror.extendMode(\"css\", {\n commentStart: \"/*\",\n commentEnd: \"*/\",\n newlineAfterToken: function(_type, content) {\n return /^[;{}]$/.test(content);\n }\n });\n\n CodeMirror.extendMode(\"javascript\", {\n commentStart: \"/*\",\n commentEnd: \"*/\",\n // FIXME semicolons inside of for\n newlineAfterToken: function(_type, content, textAfter, state) {\n if (this.jsonMode) {\n return /^[\\[,{]$/.test(content) || /^}/.test(textAfter);\n } else {\n if (content == \";\" && state.lexical && state.lexical.type == \")\") return false;\n return /^[;{}]$/.test(content) && !/^;/.test(textAfter);\n }\n }\n });\n\n var inlineElements = /^(a|abbr|acronym|area|base|bdo|big|br|button|caption|cite|code|col|colgroup|dd|del|dfn|em|frame|hr|iframe|img|input|ins|kbd|label|legend|link|map|object|optgroup|option|param|q|samp|script|select|small|span|strong|sub|sup|textarea|tt|var)$/;\n\n CodeMirror.extendMode(\"xml\", {\n commentStart: \"\",\n newlineAfterToken: function(type, content, textAfter, state) {\n var inline = false;\n if (this.configuration == \"html\")\n inline = state.context ? inlineElements.test(state.context.tagName) : false;\n return !inline && ((type == \"tag\" && />$/.test(content) && state.context) ||\n /^ -1 && endIndex > -1 && endIndex > startIndex) {\n // Take string till comment start\n selText = selText.substr(0, startIndex) +\n // From comment start till comment end\n selText.substring(startIndex + curMode.commentStart.length, endIndex) +\n // From comment end till string end\n selText.substr(endIndex + curMode.commentEnd.length);\n }\n cm.replaceRange(selText, from, to);\n }\n });\n });\n\n // Applies automatic mode-aware indentation to the specified range\n CodeMirror.defineExtension(\"autoIndentRange\", function (from, to) {\n var cmInstance = this;\n this.operation(function () {\n for (var i = from.line; i <= to.line; i++) {\n cmInstance.indentLine(i, \"smart\");\n }\n });\n });\n\n // Applies automatic formatting to the specified range\n CodeMirror.defineExtension(\"autoFormatRange\", function (from, to) {\n var cm = this;\n var outer = cm.getMode(), text = cm.getRange(from, to).split(\"\\n\");\n var state = CodeMirror.copyState(outer, cm.getTokenAt(from).state);\n var tabSize = cm.getOption(\"tabSize\");\n\n var out = \"\", lines = 0, atSol = from.ch === 0;\n function newline() {\n out += \"\\n\";\n atSol = true;\n ++lines;\n }\n\n for (var i = 0; i < text.length; ++i) {\n var stream = new CodeMirror.StringStream(text[i], tabSize);\n while (!stream.eol()) {\n var inner = CodeMirror.innerMode(outer, state);\n var style = outer.token(stream, state), cur = stream.current();\n stream.start = stream.pos;\n if (!atSol || /\\S/.test(cur)) {\n out += cur;\n atSol = false;\n }\n if (!atSol && inner.mode.newlineAfterToken &&\n inner.mode.newlineAfterToken(style, cur, stream.string.slice(stream.pos) || text[i+1] || \"\", inner.state))\n newline();\n }\n if (!stream.pos && outer.blankLine) outer.blankLine(state);\n if (!atSol && i < text.length - 1) newline();\n }\n\n cm.operation(function () {\n cm.replaceRange(out, from, to);\n for (var cur = from.line + 1, end = from.line + lines; cur <= end; ++cur)\n cm.indentLine(cur, \"smart\");\n cm.setSelection(from, cm.getCursor(false));\n });\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n { height += widgetHeight(lineObj.widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (collapsed || cm.options.showCursorWhenSelecting)\n { drawSelectionCursor(cm, range.head, curFragment); }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n if (charPos.right - charPos.left > 0) {\n cursor.style.width = (charPos.right - charPos.left) + \"px\";\n }\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.63.0\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\", \"button-bevel\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-controls-background\", \"media-current-time-display\",\n \"media-fullscreen-button\", \"media-mute-button\", \"media-play-button\",\n \"media-return-to-realtime-button\", \"media-rewind-button\",\n \"media-seek-back-button\", \"media-seek-forward-button\", \"media-slider\",\n \"media-sliderthumb\", \"media-time-remaining-display\", \"media-volume-slider\",\n \"media-volume-slider-container\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\", \"menulist-text\",\n \"menulist-textfield\", \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\",\n \"repeating-radial-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\s*\" + tagName + \"\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag,\n allowMissingTagName: parserConfig.allowMissingTagName,\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","import { isString, isElement } from 'underscore';\nimport { createId, deepMerge, isDef } from 'utils/mixins';\n\nexport default class ModuleLegacy {\n getConfig(name) {\n return this.__getConfig(name);\n }\n\n getProjectData(data) {\n const obj = {};\n const key = this.storageKey;\n if (key) {\n obj[key] = data || this.getAll();\n }\n return obj;\n }\n\n loadProjectData(data = {}, { all, onResult, reset } = {}) {\n const key = this.storageKey;\n const opts = { action: 'load' };\n const coll = all || this.getAll();\n let result = data[key];\n\n if (typeof result == 'string') {\n try {\n result = JSON.parse(result);\n } catch (err) {\n this.__logWarn('Data parsing failed', { input: result });\n }\n }\n\n reset && result && coll.reset(null, opts);\n\n if (onResult) {\n result && onResult(result, opts);\n } else if (result && isDef(result.length)) {\n coll.reset(result, opts);\n }\n\n return result;\n }\n\n clear(opts = {}) {\n const { all } = this;\n all && all.reset(null, opts);\n return this;\n }\n\n __getConfig(name) {\n const res = this.config || {};\n return name ? res[name] : res;\n }\n\n getAll(opts = {}) {\n return this.all ? (opts.array ? [...this.all.models] : this.all) : [];\n }\n\n getAllMap() {\n return this.getAll().reduce((acc, i) => {\n acc[i.get(i.idAttribute)] = i;\n return acc;\n }, {});\n }\n\n __initConfig(def = {}, conf = {}) {\n this.config = deepMerge(def, conf);\n this.em = this.config.em;\n this.cls = [];\n }\n\n __initListen(opts = {}) {\n const { all, em, events } = this;\n all &&\n em &&\n all\n .on('add', (m, c, o) => em.trigger(events.add, m, o))\n .on('remove', (m, c, o) => em.trigger(events.remove, m, o))\n .on('change', (p, c) => em.trigger(events.update, p, p.changedAttributes(), c))\n .on('all', this.__catchAllEvent, this);\n // Register collections\n this.cls = [all].concat(opts.collections || []);\n // Propagate events\n (opts.propagate || []).forEach(({ entity, event }) => {\n entity.on('all', (ev, model, coll, opts) => {\n const options = opts || coll;\n const opt = { event: ev, ...options };\n [em, all].map(md => md.trigger(event, model, opt));\n });\n });\n }\n\n __remove(model, opts = {}) {\n const { em } = this;\n const md = isString(model) ? this.get(model) : model;\n const rm = () => {\n md && this.all.remove(md, opts);\n return md;\n };\n !opts.silent && em && em.trigger(this.events.removeBefore, md, rm, opts);\n return !opts.abort && rm();\n }\n\n __catchAllEvent(event, model, coll, opts) {\n const { em, events } = this;\n const options = opts || coll;\n em && events.all && em.trigger(events.all, { event, model, options });\n this.__onAllEvent();\n }\n\n __appendTo() {\n const elTo = this.getConfig().appendTo;\n\n if (elTo) {\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\n if (!el) return this.__logWarn('\"appendTo\" element not found');\n el.appendChild(this.render());\n }\n }\n\n __onAllEvent() {}\n\n __logWarn(str, opts) {\n this.em.logWarning(`[${this.name}]: ${str}`, opts);\n }\n\n _createId(len = 16) {\n const all = this.getAll();\n const ln = all.length + len;\n const allMap = this.getAllMap();\n let id;\n\n do {\n id = createId(ln);\n } while (allMap[id]);\n\n return id;\n }\n\n __listenAdd(model, event) {\n model.on('add', (m, c, o) => this.em.trigger(event, m, o));\n }\n\n __listenRemove(model, event) {\n model.on('remove', (m, c, o) => this.em.trigger(event, m, o));\n }\n\n __listenUpdate(model, event) {\n model.on('change', (p, c) => this.em.trigger(event, p, p.changedAttributes(), c));\n }\n\n __destroy() {\n this.cls.forEach(coll => {\n coll.stopListening();\n coll.reset();\n });\n this.em = 0;\n this.config = 0;\n this.view?.remove();\n this.view = 0;\n }\n}\n","export default {\n // Default assets\n // eg. [\n // 'https://...image1.png',\n // 'https://...image2.png',\n // {type: 'image', src: 'https://...image3.png', someOtherCustomProp: 1},\n // ..\n // ]\n assets: [],\n\n // Content to add where there is no assets to show\n // eg. 'No assets here, drag to upload'\n noAssets: '',\n\n // Style prefix\n stylePrefix: 'am-',\n\n // Upload endpoint, set `false` to disable upload\n // upload: 'https://endpoint/upload/assets',\n // upload: false,\n upload: 0,\n\n // The name used in POST to pass uploaded files\n uploadName: 'files',\n\n // Custom headers to pass with the upload request\n headers: {},\n\n // Custom parameters to pass with the upload request, eg. csrf token\n params: {},\n\n // The credentials setting for the upload request, eg. 'include', 'omit'\n credentials: 'include',\n\n // Allow uploading multiple files per request.\n // If disabled filename will not have '[]' appended\n multiUpload: true,\n\n // If true, tries to add automatically uploaded assets.\n // To make it work the server should respond with a JSON containing assets\n // in a data key, eg:\n // {\n // data: [\n // 'https://.../image.png',\n // ...\n // {src: 'https://.../image2.png'},\n // ...\n // ]\n // }\n autoAdd: true,\n\n // To upload your assets, the module uses Fetch API, with this option you\n // overwrite it with something else.\n // It should return a Promise\n // @example\n // customFetch: (url, options) => axios(url, { data: options.body }),\n customFetch: null,\n\n // Custom uploadFile function.\n // Differently from the `customFetch` option, this gives a total control\n // over the uploading process, but you also have to emit all `asset:upload:*` events\n // by yourself (if you need to use them somewhere)\n // @example\n // uploadFile: (e) => {\n // var files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\n // // ...send somewhere\n // }\n uploadFile: null,\n\n // In the absence of 'uploadFile' or 'upload' assets will be embedded as Base64\n embedAsBase64: true,\n\n // Handle the image url submit from the built-in 'Add image' form\n // @example\n // handleAdd: (textFromInput) => {\n // // some check...\n // editor.AssetManager.add(textFromInput);\n // }\n handleAdd: null,\n\n // Method called before upload, on return false upload is canceled.\n // @example\n // beforeUpload: (files) => {\n // // logic...\n // var stopUpload = true;\n // if(stopUpload) return false;\n // }\n beforeUpload: null,\n\n // Toggles visiblity of assets url input\n showUrlInput: true,\n\n // Avoid rendering the default asset manager.\n custom: false,\n\n // WARNING: all the options below are considered DEPRECATED.\n // ---------------------------------------------------------------\n\n // Enable an upload dropzone on the entire editor (not document) when dragging\n // files over it\n // If active the dropzone disable/hide the upload dropzone in asset modal,\n // otherwise you will get double drops (#507)\n dropzone: false,\n\n // Open the asset manager once files are been dropped via the dropzone\n openAssetsOnDrop: 1,\n\n // Any dropzone content to append inside dropzone element\n dropzoneContent: '',\n};\n","import { result } from 'underscore';\nimport { Model } from '../../common';\n\n/**\n * @property {String} type Asset type, eg. `'image'`.\n * @property {String} src Asset URL, eg. `'https://.../image.png'`.\n *\n * @module docsjs.Asset\n */\nexport default class Asset extends Model {\n defaults() {\n return {\n type: '',\n src: '',\n };\n }\n\n /**\n * Get asset type.\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png', type: 'image' }\n * asset.getType(); // -> 'image'\n * */\n getType() {\n return this.get('type');\n }\n\n /**\n * Get asset URL.\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png' }\n * asset.getSrc(); // -> 'https://.../image.png'\n * */\n getSrc() {\n return this.get('src');\n }\n\n /**\n * Get filename of the asset (based on `src`).\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png' }\n * asset.getFilename(); // -> 'image.png'\n * // Asset: { src: 'https://.../image' }\n * asset.getFilename(); // -> 'image'\n * */\n getFilename() {\n return this.get('src').split('/').pop().split('?').shift();\n }\n\n /**\n * Get extension of the asset (based on `src`).\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png' }\n * asset.getExtension(); // -> 'png'\n * // Asset: { src: 'https://.../image' }\n * asset.getExtension(); // -> ''\n * */\n getExtension() {\n return this.getFilename().split('.').pop();\n }\n}\n\nAsset.prototype.idAttribute = 'src';\n\nAsset.getDefaults = function () {\n return result(this.prototype, 'defaults');\n};\n","import Asset from './Asset';\n\nexport default class AssetImage extends Asset {\n defaults() {\n return {\n ...Asset.getDefaults(),\n type: 'image',\n unitDim: 'px',\n height: 0,\n width: 0,\n };\n }\n}\n","import { View } from '../../common';\nimport { clone } from 'underscore';\n\nexport default class AssetView extends View {\n initialize(o = {}) {\n this.options = o;\n this.collection = o.collection;\n const config = o.config || {};\n this.config = config;\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.em = config.em;\n this.className = this.pfx + 'asset';\n this.listenTo(this.model, 'destroy remove', this.remove);\n this.model.view = this;\n const init = this.init && this.init.bind(this);\n init && init(o);\n }\n\n __getBhv() {\n const { em } = this;\n const am = em && em.get('AssetManager');\n return (am && am.__getBehaviour()) || {};\n }\n\n template() {\n const pfx = this.pfx;\n return `\n
\n ${this.getPreview()}\n
\n
\n ${this.getInfo()}\n
\n
\n ⨯\n
\n `;\n }\n\n /**\n * Update target if exists\n * @param {Model} target\n * @private\n * */\n updateTarget(target) {\n if (target && target.set) {\n target.set('attributes', clone(target.get('attributes')));\n target.set('src', this.model.get('src'));\n }\n }\n\n getPreview() {\n return '';\n }\n\n getInfo() {\n return '';\n }\n\n render() {\n const el = this.el;\n el.innerHTML = this.template(this, this.model);\n el.className = this.className;\n return this;\n }\n}\n","import { isFunction } from 'underscore';\nimport AssetView from './AssetView';\nimport html from '../../utils/html';\n\nexport default class AssetImageView extends AssetView {\n getPreview() {\n const { pfx, ppfx, model } = this;\n const src = model.get('src');\n return html`\n
\n
\n `;\n }\n\n getInfo() {\n const { pfx, model } = this;\n let name = model.get('name');\n let width = model.get('width');\n let height = model.get('height');\n let unit = model.get('unitDim');\n let dim = width && height ? `${width}x${height}${unit}` : '';\n name = name || model.getFilename();\n return html`\n
${name}
\n
${dim}
\n `;\n }\n\n init(o) {\n const pfx = this.pfx;\n this.className += ` ${pfx}asset-image`;\n }\n\n /**\n * Triggered when the asset is clicked\n * @private\n * */\n onClick() {\n const { model, pfx } = this;\n const { select } = this.__getBhv();\n const { onClick } = this.config;\n const coll = this.collection;\n coll.trigger('deselectAll');\n this.$el.addClass(pfx + 'highlight');\n\n if (isFunction(select)) {\n select(model, false);\n } else if (isFunction(onClick)) {\n onClick(model);\n } else {\n this.updateTarget(coll.target);\n }\n }\n\n /**\n * Triggered when the asset is double clicked\n * @private\n * */\n onDblClick() {\n const { em, model } = this;\n const { select } = this.__getBhv();\n const { onDblClick } = this.config;\n const { target, onSelect } = this.collection;\n\n if (isFunction(select)) {\n select(model, true);\n } else if (isFunction(onDblClick)) {\n onDblClick(model);\n } else {\n this.updateTarget(target);\n em && em.get('Modal').close();\n }\n isFunction(onSelect) && onSelect(model);\n }\n\n /**\n * Remove asset from collection\n * @private\n * */\n onRemove(e) {\n e.stopImmediatePropagation();\n this.model.collection.remove(this.model);\n }\n}\n\nAssetImageView.prototype.events = {\n 'click [data-toggle=asset-remove]': 'onRemove',\n click: 'onClick',\n dblclick: 'onDblClick',\n};\n","import { Collection } from '../../common';\nimport AssetImage from './AssetImage';\nimport AssetImageView from './../view/AssetImageView';\nimport TypeableCollection from '../../domain_abstract/model/TypeableCollection';\n\nexport default class Assets extends Collection.extend(TypeableCollection) {}\n\nAssets.prototype.types = [\n {\n id: 'image',\n model: AssetImage,\n view: AssetImageView,\n isType(value) {\n if (typeof value == 'string') {\n return {\n type: 'image',\n src: value,\n };\n }\n return value;\n },\n },\n];\n","import { View } from '../../common';\n\nexport default class AssetsView extends View {\n template({ pfx, ppfx, em }) {\n let form = '';\n if (this.config.showUrlInput) {\n form = `\n
\n
\n \n
\n \n
\n
\n `;\n }\n\n return `\n
\n
\n ${form}\n
\n
\n
\n
\n `;\n }\n\n initialize(o) {\n this.options = o;\n this.config = o.config;\n this.pfx = this.config.stylePrefix || '';\n this.ppfx = this.config.pStylePrefix || '';\n this.em = this.config.em;\n const coll = this.collection;\n this.listenTo(coll, 'reset', this.renderAssets);\n this.listenTo(coll, 'add', this.addToAsset);\n this.listenTo(coll, 'remove', this.removedAsset);\n this.listenTo(coll, 'deselectAll', this.deselectAll);\n }\n\n /**\n * Add new asset to the collection via string\n * @param {Event} e Event object\n * @return {this}\n * @private\n */\n handleSubmit(e) {\n e.preventDefault();\n const input = this.getAddInput();\n const url = input && input.value.trim();\n const handleAdd = this.config.handleAdd;\n\n if (!url) {\n return;\n }\n\n input.value = '';\n this.getAssetsEl().scrollTop = 0;\n\n if (handleAdd) {\n handleAdd.bind(this)(url);\n } else {\n this.options.globalCollection.add(url, { at: 0 });\n }\n }\n\n /**\n * Returns assets element\n * @return {HTMLElement}\n * @private\n */\n getAssetsEl() {\n //if(!this.assets) // Not able to cache as after the rerender it losses the ref\n return this.el.querySelector(`.${this.pfx}assets`);\n }\n\n /**\n * Returns input url element\n * @return {HTMLElement}\n * @private\n */\n getAddInput() {\n if (!this.inputUrl || !this.inputUrl.value) this.inputUrl = this.el.querySelector(`.${this.pfx}add-asset input`);\n return this.inputUrl;\n }\n\n /**\n * Triggered when an asset is removed\n * @param {Asset} model Removed asset\n * @private\n */\n removedAsset(model) {\n if (!this.collection.length) {\n this.toggleNoAssets();\n }\n }\n\n /**\n * Add asset to collection\n * @private\n * */\n addToAsset(model) {\n if (this.collection.length == 1) {\n this.toggleNoAssets(1);\n }\n this.addAsset(model);\n }\n\n /**\n * Add new asset to collection\n * @param Object Model\n * @param Object Fragment collection\n * @return Object Object created\n * @private\n * */\n addAsset(model, fragmentEl = null) {\n const fragment = fragmentEl;\n const collection = this.collection;\n const config = this.config;\n const rendered = new model.typeView({\n model,\n collection,\n config,\n }).render().el;\n\n if (fragment) {\n fragment.appendChild(rendered);\n } else {\n const assetsEl = this.getAssetsEl();\n if (assetsEl) {\n assetsEl.insertBefore(rendered, assetsEl.firstChild);\n }\n }\n\n return rendered;\n }\n\n /**\n * Checks if to show noAssets\n * @param {Boolean} hide\n * @private\n */\n toggleNoAssets(hide) {\n const assetsEl = this.$el.find(`.${this.pfx}assets`);\n\n if (hide) {\n assetsEl.empty();\n } else {\n const noAssets = this.config.noAssets;\n noAssets && assetsEl.append(noAssets);\n }\n }\n\n /**\n * Deselect all assets\n * @private\n * */\n deselectAll() {\n const pfx = this.pfx;\n this.$el.find(`.${pfx}highlight`).removeClass(`${pfx}highlight`);\n }\n\n renderAssets() {\n const fragment = document.createDocumentFragment();\n const assets = this.$el.find(`.${this.pfx}assets`);\n assets.empty();\n this.toggleNoAssets(this.collection.length);\n this.collection.each(model => this.addAsset(model, fragment));\n assets.append(fragment);\n }\n\n render() {\n const fuRendered = this.options.fu.render().el;\n this.$el.empty();\n this.$el.append(fuRendered).append(this.template(this));\n this.el.className = `${this.ppfx}asset-manager`;\n this.renderAssets();\n return this;\n }\n}\n\nAssetsView.prototype.events = {\n submit: 'handleSubmit',\n};\n","import { View } from '../../common';\nimport fetch from '../../utils/fetch';\nimport html from '../../utils/html';\n\nexport default class FileUploaderView extends View {\n template({ pfx, title, uploadId, disabled, multiUpload }) {\n return html`\n
\n
${title}
\n \n
\n \n `;\n }\n\n initialize(opts = {}) {\n this.options = opts;\n const c = opts.config || {};\n this.module = opts.module;\n this.config = c;\n this.em = this.config.em;\n this.pfx = c.stylePrefix || '';\n this.ppfx = c.pStylePrefix || '';\n this.target = this.options.globalCollection || {};\n this.uploadId = this.pfx + 'uploadFile';\n this.disabled = c.disableUpload !== undefined ? c.disableUpload : !c.upload && !c.embedAsBase64;\n this.multiUpload = c.multiUpload !== undefined ? c.multiUpload : true;\n this.events = {\n [`change #${this.uploadId}`]: 'uploadFile',\n };\n let uploadFile = c.uploadFile;\n\n if (uploadFile) {\n this.uploadFile = uploadFile.bind(this);\n } else if (!c.upload && c.embedAsBase64) {\n this.uploadFile = this.constructor.embedAsBase64;\n }\n\n this.delegateEvents();\n }\n\n /**\n * Triggered before the upload is started\n * @private\n */\n onUploadStart() {\n const { module } = this;\n module && module.__propEv('asset:upload:start');\n }\n\n /**\n * Triggered after the upload is ended\n * @param {Object|string} res End result\n * @private\n */\n onUploadEnd(res) {\n const { $el, module } = this;\n module && module.__propEv('asset:upload:end', res);\n const input = $el.find('input');\n input && input.val('');\n }\n\n /**\n * Triggered on upload error\n * @param {Object} err Error\n * @private\n */\n onUploadError(err) {\n const { module } = this;\n console.error(err);\n this.onUploadEnd(err);\n module && module.__propEv('asset:upload:error', err);\n }\n\n /**\n * Triggered on upload response\n * @param {string} text Response text\n * @private\n */\n onUploadResponse(text, clb) {\n const { module, config, target } = this;\n let json;\n try {\n json = typeof text === 'string' ? JSON.parse(text) : text;\n } catch (e) {\n json = text;\n }\n\n module && module.__propEv('asset:upload:response', json);\n\n if (config.autoAdd && target) {\n target.add(json.data, { at: 0 });\n }\n\n this.onUploadEnd(text);\n clb && clb(json);\n }\n\n /**\n * Upload files\n * @param {Object} e Event\n * @return {Promise}\n * @private\n * */\n uploadFile(e, clb) {\n const files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\n const { config } = this;\n const { beforeUpload } = config;\n\n const beforeUploadResponse = beforeUpload && beforeUpload(files);\n if (beforeUploadResponse === false) return;\n\n const body = new FormData();\n const { params, customFetch } = config;\n\n for (let param in params) {\n body.append(param, params[param]);\n }\n\n if (this.multiUpload) {\n for (let i = 0; i < files.length; i++) {\n body.append(`${config.uploadName}[]`, files[i]);\n }\n } else if (files.length) {\n body.append(config.uploadName, files[0]);\n }\n\n var target = this.target;\n const url = config.upload;\n const headers = config.headers;\n const reqHead = 'X-Requested-With';\n\n if (typeof headers[reqHead] == 'undefined') {\n headers[reqHead] = 'XMLHttpRequest';\n }\n\n if (url) {\n this.onUploadStart();\n const fetchOpts = {\n method: 'post',\n credentials: config.credentials || 'include',\n headers,\n body,\n };\n const fetchResult = customFetch\n ? customFetch(url, fetchOpts)\n : fetch(url, fetchOpts).then(res =>\n ((res.status / 200) | 0) == 1 ? res.text() : res.text().then(text => Promise.reject(text))\n );\n return fetchResult.then(text => this.onUploadResponse(text, clb)).catch(err => this.onUploadError(err));\n }\n }\n\n /**\n * Make input file droppable\n * @private\n * */\n initDrop() {\n var that = this;\n if (!this.uploadForm) {\n this.uploadForm = this.$el.find('form').get(0);\n if ('draggable' in this.uploadForm) {\n var uploadFile = this.uploadFile;\n this.uploadForm.ondragover = function () {\n this.className = that.pfx + 'hover';\n return false;\n };\n this.uploadForm.ondragleave = function () {\n this.className = '';\n return false;\n };\n this.uploadForm.ondrop = function (e) {\n this.className = '';\n e.preventDefault();\n that.uploadFile(e);\n return;\n };\n }\n }\n }\n\n initDropzone(ev) {\n let addedCls = 0;\n const c = this.config;\n const em = ev.model;\n const edEl = ev.el;\n const editor = em.get('Editor');\n const container = em.get('Config').el;\n const frameEl = em.get('Canvas').getBody();\n const ppfx = this.ppfx;\n const updatedCls = `${ppfx}dropzone-active`;\n const dropzoneCls = `${ppfx}dropzone`;\n const cleanEditorElCls = () => {\n edEl.className = edEl.className.replace(updatedCls, '').trim();\n addedCls = 0;\n };\n const onDragOver = () => {\n if (!addedCls) {\n edEl.className += ` ${updatedCls}`;\n addedCls = 1;\n }\n return false;\n };\n const onDragLeave = () => {\n cleanEditorElCls();\n return false;\n };\n const onDrop = e => {\n cleanEditorElCls();\n e.preventDefault();\n e.stopPropagation();\n this.uploadFile(e);\n\n if (c.openAssetsOnDrop && editor) {\n const target = editor.getSelected();\n editor.runCommand('open-assets', {\n target,\n onSelect() {\n editor.Modal.close();\n editor.AssetManager.setTarget(null);\n },\n });\n }\n\n return false;\n };\n\n ev.$el.append(`
${c.dropzoneContent}
`);\n cleanEditorElCls();\n\n if ('draggable' in edEl) {\n [edEl, frameEl].forEach(item => {\n item.ondragover = onDragOver;\n item.ondragleave = onDragLeave;\n item.ondrop = onDrop;\n });\n }\n }\n\n render() {\n const { $el, pfx, em } = this;\n $el.html(\n this.template({\n title: em && em.t('assetManager.uploadTitle'),\n uploadId: this.uploadId,\n disabled: this.disabled,\n multiUpload: this.multiUpload,\n pfx,\n })\n );\n this.initDrop();\n $el.attr('class', pfx + 'file-uploader');\n return this;\n }\n}\n\nFileUploaderView.embedAsBase64 = function (e, clb) {\n // List files dropped\n const files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\n const response = { data: [] };\n\n // Unlikely, widely supported now\n if (!FileReader) {\n this.onUploadError(new Error('Unsupported platform, FileReader is not defined'));\n return;\n }\n\n const promises = [];\n const mimeTypeMatcher = /^(.+)\\/(.+)$/;\n\n for (const file of files) {\n // For each file a reader (to read the base64 URL)\n // and a promise (to track and merge results and errors)\n const promise = new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('load', event => {\n let type;\n const name = file.name;\n\n // Try to find the MIME type of the file.\n const match = mimeTypeMatcher.exec(file.type);\n if (match) {\n type = match[1]; // The first part in the MIME, \"image\" in image/png\n } else {\n type = file.type;\n }\n\n /*\n // Show local video files, http://jsfiddle.net/dsbonev/cCCZ2/embedded/result,js,html,css/\n var URL = window.URL || window.webkitURL\n var file = this.files[0]\n var type = file.type\n var videoNode = document.createElement('video');\n var canPlay = videoNode.canPlayType(type) // can use also for 'audio' types\n if (canPlay === '') canPlay = 'no'\n var message = 'Can play type \"' + type + '\": ' + canPlay\n var isError = canPlay === 'no'\n displayMessage(message, isError)\n\n if (isError) {\n return\n }\n\n var fileURL = URL.createObjectURL(file)\n videoNode.src = fileURL\n */\n\n // If it's an image, try to find its size\n if (type === 'image') {\n const data = {\n src: reader.result,\n name,\n type,\n height: 0,\n width: 0,\n };\n\n const image = new Image();\n image.addEventListener('error', error => {\n reject(error);\n });\n image.addEventListener('load', () => {\n data.height = image.height;\n data.width = image.width;\n resolve(data);\n });\n image.src = data.src;\n } else if (type) {\n // Not an image, but has a type\n resolve({\n src: reader.result,\n name,\n type,\n });\n } else {\n // No type found, resolve with the URL only\n resolve(reader.result);\n }\n });\n reader.addEventListener('error', error => {\n reject(error);\n });\n reader.addEventListener('abort', error => {\n reject('Aborted');\n });\n\n reader.readAsDataURL(file);\n });\n\n promises.push(promise);\n }\n\n Promise.all(promises).then(\n data => {\n response.data = data;\n this.onUploadResponse(response, clb);\n },\n error => {\n this.onUploadError(error);\n }\n );\n};\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/asset_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * assetManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const assetManager = editor.AssetManager;\n * ```\n *\n * ## Available Events\n * * `asset:open` - Asset Manager opened.\n * * `asset:close` - Asset Manager closed.\n * * `asset:add` - Asset added. The [Asset] is passed as an argument to the callback.\n * * `asset:remove` - Asset removed. The [Asset] is passed as an argument to the callback.\n * * `asset:update` - Asset updated. The updated [Asset] and the object containing changes are passed as arguments to the callback.\n * * `asset:upload:start` - Before the upload is started.\n * * `asset:upload:end` - After the upload is ended.\n * * `asset:upload:error` - On any error in upload, passes the error as an argument.\n * * `asset:upload:response` - On upload response, passes the result as an argument.\n * * `asset` - Catch-all event for all the events mentioned above. An object containing all the available data about the triggered event is passed as an argument to the callback.\n * * `asset:custom` - Event for handling custom Asset Manager UI.\n *\n * ## Methods\n * * [open](#open)\n * * [close](#close)\n * * [isOpen](#isopen)\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getall)\n * * [getAllVisible](#getallvisible)\n * * [remove](#remove)\n * * [getContainer](#getcontainer)\n *\n * [Asset]: asset.html\n *\n * @module AssetManager\n */\n\nimport { debounce, isFunction } from 'underscore';\nimport { Module } from '../common';\nimport defaults from './config/config';\nimport Asset from './model/Assets';\nimport Assets from './model/Assets';\nimport AssetsView from './view/AssetsView';\nimport FileUpload from './view/FileUploader';\n\nexport const evAll = 'asset';\nexport const evPfx = `${evAll}:`;\nexport const evSelect = `${evPfx}select`;\nexport const evUpdate = `${evPfx}update`;\nexport const evAdd = `${evPfx}add`;\nexport const evRemove = `${evPfx}remove`;\nexport const evRemoveBefore = `${evRemove}:before`;\nexport const evCustom = `${evPfx}custom`;\nexport const evOpen = `${evPfx}open`;\nexport const evClose = `${evPfx}close`;\nexport const evUpload = `${evPfx}upload`;\nexport const evUploadStart = `${evUpload}:start`;\nexport const evUploadEnd = `${evUpload}:end`;\nexport const evUploadError = `${evUpload}:error`;\nexport const evUploadRes = `${evUpload}:response`;\n\nexport default () => {\n let c = {};\n let assets, assetsVis, am, fu;\n const assetCmd = 'open-assets';\n\n return {\n ...Module,\n\n name: 'AssetManager',\n\n storageKey: 'assets',\n\n Asset,\n\n Assets,\n\n events: {\n all: evAll,\n select: evSelect,\n update: evUpdate,\n add: evAdd,\n remove: evRemove,\n removeBefore: evRemoveBefore,\n custom: evCustom,\n open: evOpen,\n close: evClose,\n uploadStart: evUploadStart,\n uploadEnd: evUploadEnd,\n uploadError: evUploadError,\n uploadResponse: evUploadRes,\n },\n\n init(config = {}) {\n c = { ...defaults, ...config };\n const ppfx = c.pStylePrefix;\n const { em } = c;\n this.config = c;\n this.em = em;\n\n if (ppfx) {\n c.stylePrefix = ppfx + c.stylePrefix;\n }\n\n // Global assets collection\n assets = new Assets([]);\n assetsVis = new Assets([]);\n this.all = assets;\n this.__initListen();\n\n // Setup the sync between the global and public collections\n assets.on('add', model => this.getAllVisible().add(model));\n assets.on('remove', model => this.getAllVisible().remove(model));\n\n return this;\n },\n\n __propEv(ev, ...data) {\n this.em.trigger(ev, ...data);\n this.getAll().trigger(ev, ...data);\n },\n\n __onAllEvent: debounce(function () {\n this.__trgCustom();\n }),\n\n __trgCustom() {\n const bhv = this.__getBehaviour();\n if (!bhv.container && !this.getConfig().custom.open) {\n return;\n }\n this.em.trigger(this.events.custom, this.__customData());\n },\n\n __customData() {\n const bhv = this.__getBehaviour();\n return {\n am: this,\n open: this.isOpen(),\n assets: this.getAll().models,\n types: bhv.types || [],\n container: bhv.container,\n close: () => this.close(),\n remove: (...args) => this.remove(...args),\n select: (asset, complete) => {\n const res = this.add(asset);\n isFunction(bhv.select) && bhv.select(res, complete);\n },\n // extra\n options: bhv.options || {},\n };\n },\n\n /**\n * Open the asset manager.\n * @param {Object} [options] Options for the asset manager.\n * @param {Array} [options.types=['image']] Types of assets to show.\n * @param {Function} [options.select] Type of operation to perform on asset selection. If not specified, nothing will happen.\n * @example\n * assetManager.open({\n * select(asset, complete) {\n * const selected = editor.getSelected();\n * if (selected && selected.is('image')) {\n * selected.addAttributes({ src: asset.getSrc() });\n * // The default AssetManager UI will trigger `select(asset, false)` on asset click\n * // and `select(asset, true)` on double-click\n * complete && assetManager.close();\n * }\n * }\n * });\n * // with your custom types (you should have assets with those types declared)\n * assetManager.open({ types: ['doc'], ... });\n */\n open(options = {}) {\n const cmd = this.em.get('Commands');\n cmd.run(assetCmd, {\n types: ['image'],\n select: () => {},\n ...options,\n });\n },\n\n /**\n * Close the asset manager.\n * @example\n * assetManager.close();\n */\n close() {\n const cmd = this.em.get('Commands');\n cmd.stop(assetCmd);\n },\n\n /**\n * Checks if the asset manager is open\n * @returns {Boolean}\n * @example\n * assetManager.isOpen(); // true | false\n */\n isOpen() {\n const cmd = this.em.get('Commands');\n return !!(cmd && cmd.isActive(assetCmd));\n },\n\n /**\n * Add new asset/s to the collection. URLs are supposed to be unique\n * @param {String|Object|Array|Array} asset URL strings or an objects representing the resource.\n * @param {Object} [opts] Options\n * @returns {[Asset]}\n * @example\n * // As strings\n * assetManager.add('http://img.jpg');\n * assetManager.add(['http://img.jpg', './path/to/img.png']);\n *\n * // Using objects you can indicate the type and other meta informations\n * assetManager.add({\n * // type: 'image',\t// image is default\n * \tsrc: 'http://img.jpg',\n * \theight: 300,\n *\twidth: 200,\n * });\n * assetManager.add([{ src: 'img2.jpg' }, { src: 'img2.png' }]);\n */\n add(asset, opts = {}) {\n // Put the model at the beginning\n if (typeof opts.at == 'undefined') {\n opts.at = 0;\n }\n\n return assets.add(asset, opts);\n },\n\n /**\n * Return asset by URL\n * @param {String} src URL of the asset\n * @returns {[Asset]|null}\n * @example\n * const asset = assetManager.get('http://img.jpg');\n */\n get(src) {\n return assets.where({ src })[0] || null;\n },\n\n /**\n * Return the global collection, containing all the assets\n * @returns {Collection<[Asset]>}\n */\n getAll() {\n return assets;\n },\n\n /**\n * Return the visible collection, which contains assets actually rendered\n * @returns {Collection<[Asset]>}\n */\n getAllVisible() {\n return assetsVis;\n },\n\n /**\n * Remove asset\n * @param {String|[Asset]} asset Asset or asset URL\n * @returns {[Asset]} Removed asset\n * @example\n * const removed = assetManager.remove('http://img.jpg');\n * // or by passing the Asset\n * const asset = assetManager.get('http://img.jpg');\n * assetManager.remove(asset);\n */\n remove(asset, opts) {\n return this.__remove(asset, opts);\n },\n\n store() {\n return this.getProjectData();\n },\n\n load(data) {\n return this.loadProjectData(data);\n },\n\n /**\n * Return the Asset Manager Container\n * @returns {HTMLElement}\n */\n getContainer() {\n const bhv = this.__getBehaviour();\n return bhv.container || (am && am.el);\n },\n\n /**\n * Get assets element container\n * @returns {HTMLElement}\n * @private\n */\n getAssetsEl() {\n return am.el.querySelector('[data-el=assets]');\n },\n\n /**\n * Render assets\n * @param {array} assets Assets to render, without the argument will render all global assets\n * @returns {HTMLElement}\n * @private\n * @example\n * // Render all assets\n * assetManager.render();\n *\n * // Render some of the assets\n * const assets = assetManager.getAll();\n * assetManager.render(assets.filter(\n * asset => asset.get('category') == 'cats'\n * ));\n */\n render(assts) {\n if (this.getConfig().custom) return;\n const toRender = assts || this.getAll().models;\n\n if (!am) {\n const obj = this.__viewParams();\n obj.fu = this.FileUploader();\n const el = am && am.el;\n am = new AssetsView({\n el,\n ...obj,\n });\n am.render();\n }\n\n assetsVis.reset(toRender);\n return this.getContainer();\n },\n\n __viewParams() {\n return {\n collection: assetsVis, // Collection visible in asset manager\n globalCollection: assets,\n config: c,\n module: this,\n };\n },\n\n /**\n * Add new type. If you want to get more about type definition we suggest to read the [module's page](/modules/Assets.html)\n * @param {string} id Type ID\n * @param {Object} definition Definition of the type. Each definition contains\n * `model` (business logic), `view` (presentation logic)\n * and `isType` function which recognize the type of the\n * passed entity\n * @private\n * @example\n * assetManager.addType('my-type', {\n * model: {},\n * view: {},\n * isType: (value) => {},\n * })\n */\n addType(id, definition) {\n this.getAll().addType(id, definition);\n },\n\n /**\n * Get type\n * @param {string} id Type ID\n * @returns {Object} Type definition\n * @private\n */\n getType(id) {\n return this.getAll().getType(id);\n },\n\n /**\n * Get types\n * @returns {Array}\n * @private\n */\n getTypes() {\n return this.getAll().getTypes();\n },\n\n //-------\n\n AssetsView() {\n return am;\n },\n\n FileUploader() {\n if (!fu) {\n fu = new FileUpload(this.__viewParams());\n }\n return fu;\n },\n\n onLoad() {\n this.getAll().reset(c.assets);\n const { em, events } = this;\n em.on(`run:${assetCmd}`, () => this.__propEv(events.open));\n em.on(`stop:${assetCmd}`, () => this.__propEv(events.close));\n },\n\n postRender(editorView) {\n c.dropzone && fu && fu.initDropzone(editorView);\n },\n\n /**\n * Set new target\n * @param\t{Object}\tm Model\n * @private\n * */\n setTarget(m) {\n assetsVis.target = m;\n },\n\n /**\n * Set callback after asset was selected\n * @param\t{Object}\tf Callback function\n * @private\n * */\n onSelect(f) {\n assetsVis.onSelect = f;\n },\n\n /**\n * Set callback to fire when the asset is clicked\n * @param {function} func\n * @private\n */\n onClick(func) {\n c.onClick = func;\n },\n\n /**\n * Set callback to fire when the asset is double clicked\n * @param {function} func\n * @private\n */\n onDblClick(func) {\n c.onDblClick = func;\n },\n\n __behaviour(opts = {}) {\n return (this._bhv = {\n ...(this._bhv || {}),\n ...opts,\n });\n },\n\n __getBehaviour(opts = {}) {\n return this._bhv || {};\n },\n\n destroy() {\n assets.stopListening();\n assetsVis.stopListening();\n assets.reset();\n assetsVis.reset();\n fu && fu.remove();\n am && am.remove();\n [assets, assetsVis, am, fu].forEach(i => (i = null));\n this._bhv = {};\n this.all = {};\n c = {};\n },\n };\n};\n","export default {\n // Specify the element to use as a container, string (query) or HTMLElement\n // With the empty value, nothing will be rendered\n appendTo: '',\n\n // Append blocks to canvas on click.\n // With the `true` value, it will try to append the block to the selected component.\n // If there is no selected component, the block will be appened to the wrapper.\n // You can also pass a function to this option, use it as a catch-all for all block\n // clicks and implement a custom logic for each block.\n // appendOnClick: (block, editor) => {\n // if (block.get('id') === 'some-id')\n // editor.getSelected().append(block.get('content'))\n // else\n // editor.getWrapper().append(block.get('content'))\n // }\n appendOnClick: false,\n\n // Default blocks\n blocks: [],\n\n // Avoid rendering the default block manager.\n custom: false,\n};\n","import { Model } from '../../common';\nimport { isFunction } from 'underscore';\n\n/**\n * @property {String} label Block label, eg. `My block`\n * @property {String|Object} content The content of the block. Might be an HTML string or a [Component Defintion](/modules/Components.html#component-definition)\n * @property {String} [media=''] HTML string for the media/icon of the block, eg. ` editor.getWrapper().append(block.get('content'))`\n * @property {Object} [attributes={}] Block attributes to apply in the view element\n *\n * @module docsjs.Block\n */\nexport default class Block extends Model {\n defaults() {\n return {\n label: '',\n content: '',\n media: '',\n category: '',\n activate: false,\n select: null,\n resetId: false,\n disable: false,\n onClick: null,\n attributes: {},\n };\n }\n\n /**\n * Get block id\n * @returns {String}\n */\n getId() {\n return this.id;\n }\n\n /**\n * Get block label\n * @returns {String}\n */\n getLabel() {\n return this.get('label');\n }\n\n /**\n * Get block media\n * @returns {String}\n */\n getMedia() {\n return this.get('media');\n }\n\n /**\n * Get block content\n * @returns {Object|String|Array}\n */\n getContent() {\n return this.get('content');\n }\n\n /**\n * Get block category label\n * @returns {String}\n */\n getCategoryLabel() {\n const ctg = this.get('category');\n return isFunction(ctg.get) ? ctg.get('label') : ctg.label ? ctg.label : ctg;\n }\n}\n","import { Collection } from '../../common';\nimport Block from './Block';\n\nexport default class Blocks extends Collection {}\n\nBlocks.prototype.model = Block;\n","import { Model } from '../../common';\n\nexport default class Category extends Model {\n defaults() {\n return {\n id: '',\n label: '',\n open: true,\n attributes: {},\n };\n }\n}\n","import { Collection } from '../../common';\nimport Category from './Category';\n\nexport default class Categories extends Collection {}\n\nCategories.prototype.model = Category;\n","import { isFunction } from 'underscore';\nimport { View } from '../../common';\nimport { on, off, hasDnd } from '../../utils/mixins';\n\nexport default class BlockView extends View {\n events() {\n return {\n click: 'handleClick',\n mousedown: 'startDrag',\n dragstart: 'handleDragStart',\n drag: 'handleDrag',\n dragend: 'handleDragEnd',\n };\n }\n\n initialize(o, config = {}) {\n const { model } = this;\n this.em = config.em;\n this.config = config;\n this.endDrag = this.endDrag.bind(this);\n this.ppfx = config.pStylePrefix || '';\n this.listenTo(model, 'destroy remove', this.remove);\n this.listenTo(model, 'change', this.render);\n }\n\n __getModule() {\n return this.em.get('BlockManager');\n }\n\n handleClick(ev) {\n const { config, model, em } = this;\n const onClick = model.get('onClick') || config.appendOnClick;\n em.trigger('block:click', model, ev);\n if (!onClick) {\n return;\n } else if (isFunction(onClick)) {\n return onClick(model, em.getEditor(), { event: ev });\n }\n const sorter = config.getSorter();\n const content = model.get('content');\n const selected = em.getSelected();\n sorter.setDropContent(content);\n let target, valid, insertAt;\n\n // If there is a selected component, try first to append\n // the block inside, otherwise, try to place it as a next sibling\n if (selected) {\n valid = sorter.validTarget(selected.getEl(), content);\n\n if (valid.valid) {\n target = selected;\n } else {\n const parent = selected.parent();\n valid = sorter.validTarget(parent.getEl(), content);\n if (valid.valid) {\n target = parent;\n insertAt = parent.components().indexOf(selected) + 1;\n }\n }\n }\n\n // If no target found yet, try to append the block to the wrapper\n if (!target) {\n const wrapper = em.getWrapper();\n valid = sorter.validTarget(wrapper.getEl(), content);\n if (valid.valid) target = wrapper;\n }\n\n const result = target && target.append(content, { at: insertAt })[0];\n result && em.setSelected(result, { scroll: 1 });\n }\n\n /**\n * Start block dragging\n * @private\n */\n startDrag(e) {\n const { config, em, model } = this;\n const disable = model.get('disable');\n //Right or middel click\n if (e.button !== 0 || !config.getSorter || this.el.draggable || disable) return;\n em.refreshCanvas();\n const sorter = config.getSorter();\n sorter.setDragHelper(this.el, e);\n sorter.setDropContent(this.model.get('content'));\n sorter.startSort(this.el);\n on(document, 'mouseup', this.endDrag);\n }\n\n handleDragStart(ev) {\n this.__getModule().__startDrag(this.model, ev);\n }\n\n handleDrag(ev) {\n this.__getModule().__drag(ev);\n }\n\n handleDragEnd() {\n this.__getModule().__endDrag();\n }\n\n /**\n * Drop block\n * @private\n */\n endDrag(e) {\n off(document, 'mouseup', this.endDrag);\n const sorter = this.config.getSorter();\n\n // After dropping the block in the canvas the mouseup event is not yet\n // triggerd on 'this.doc' and so clicking outside, the sorter, tries to move\n // things (throws false positives). As this method just need to drop away\n // the block helper I use the trick of 'moved = 0' to void those errors.\n sorter.moved = 0;\n sorter.endMove();\n }\n\n render() {\n const { em, el, $el, ppfx, model } = this;\n const disable = model.get('disable');\n const attr = model.get('attributes') || {};\n const cls = attr.class || '';\n const className = `${ppfx}block`;\n const label = (em && em.t(`blockManager.labels.${model.id}`)) || model.get('label');\n const render = model.get('render');\n const media = model.get('media');\n const clsAdd = disable ? `${className}--disable` : `${ppfx}four-color-h`;\n $el.attr(attr);\n el.className = `${cls} ${className} ${ppfx}one-bg ${clsAdd}`.trim();\n el.innerHTML = `\n ${media ? `
${media}
` : ''}\n
${label}
\n `;\n el.title = attr.title || el.textContent.trim();\n el.setAttribute('draggable', hasDnd(em) && !disable ? true : false);\n const result = render && render({ el, model, className, prefix: ppfx });\n if (result) el.innerHTML = result;\n return this;\n }\n}\n","import { View } from '../../common';\nimport html from '../../utils/html';\n\nexport default class CategoryView extends View {\n template({ pfx, label }) {\n return html`\n
\n \n ${label}\n
\n
\n `;\n }\n\n attributes() {\n return this.model.get('attributes');\n }\n\n initialize(o = {}, config = {}) {\n this.config = config;\n const pfx = config.pStylePrefix || '';\n this.em = config.em;\n this.pfx = pfx;\n this.caretR = 'fa fa-caret-right';\n this.caretD = 'fa fa-caret-down';\n this.iconClass = `${pfx}caret-icon`;\n this.activeClass = `${pfx}open`;\n this.className = `${pfx}block-category`;\n this.events = {};\n this.events[`click .${pfx}title`] = 'toggle';\n this.listenTo(this.model, 'change:open', this.updateVisibility);\n this.delegateEvents();\n this.model.view = this;\n }\n\n updateVisibility() {\n if (this.model.get('open')) this.open();\n else this.close();\n }\n\n open() {\n this.$el.addClass(this.activeClass);\n this.getIconEl().className = `${this.iconClass} ${this.caretD}`;\n this.getBlocksEl().style.display = '';\n }\n\n close() {\n this.$el.removeClass(this.activeClass);\n this.getIconEl().className = `${this.iconClass} ${this.caretR}`;\n this.getBlocksEl().style.display = 'none';\n }\n\n toggle() {\n var model = this.model;\n model.set('open', !model.get('open'));\n }\n\n getIconEl() {\n if (!this.iconEl) {\n this.iconEl = this.el.querySelector('.' + this.iconClass);\n }\n\n return this.iconEl;\n }\n\n getBlocksEl() {\n if (!this.blocksEl) {\n this.blocksEl = this.el.querySelector('.' + this.pfx + 'blocks-c');\n }\n\n return this.blocksEl;\n }\n\n append(el) {\n this.getBlocksEl().appendChild(el);\n }\n\n render() {\n const { em, el, $el, model, pfx } = this;\n const label = em.t(`blockManager.categories.${model.id}`) || model.get('label');\n el.innerHTML = this.template({ pfx, label });\n $el.addClass(this.className);\n $el.css({ order: model.get('order') });\n this.updateVisibility();\n\n return this;\n }\n}\n","import { isString, isObject, bindAll } from 'underscore';\nimport { View } from '../../common';\nimport BlockView from './BlockView';\nimport CategoryView from './CategoryView';\n\nexport default class BlocksView extends View {\n initialize(opts, config) {\n bindAll(this, 'getSorter', 'onDrag', 'onDrop', 'onMove');\n this.config = config || {};\n this.categories = opts.categories || '';\n this.renderedCategories = [];\n var ppfx = this.config.pStylePrefix || '';\n this.ppfx = ppfx;\n this.noCatClass = `${ppfx}blocks-no-cat`;\n this.blockContClass = `${ppfx}blocks-c`;\n this.catsClass = `${ppfx}block-categories`;\n const coll = this.collection;\n this.listenTo(coll, 'add', this.addTo);\n this.listenTo(coll, 'reset', this.render);\n this.em = this.config.em;\n this.tac = 'test-tac';\n this.grabbingCls = this.ppfx + 'grabbing';\n\n if (this.em) {\n this.config.getSorter = this.getSorter;\n this.canvas = this.em.get('Canvas');\n }\n }\n\n updateConfig(opts = {}) {\n this.config = {\n ...this.config,\n ...opts,\n };\n }\n\n /**\n * Get sorter\n * @private\n */\n getSorter() {\n if (!this.em) return;\n if (!this.sorter) {\n var utils = this.em.get('Utils');\n var canvas = this.canvas;\n this.sorter = new utils.Sorter({\n container: canvas.getBody(),\n placer: canvas.getPlacerEl(),\n containerSel: '*',\n itemSel: '*',\n pfx: this.ppfx,\n onStart: this.onDrag,\n onEndMove: this.onDrop,\n onMove: this.onMove,\n document: canvas.getFrameEl().contentDocument,\n direction: 'a',\n wmargin: 1,\n nested: 1,\n em: this.em,\n canvasRelative: 1,\n });\n }\n return this.sorter;\n }\n\n /**\n * Callback when block is on drag\n * @private\n */\n onDrag(e) {\n this.em.stopDefault();\n this.em.trigger('block:drag:start', e);\n }\n\n onMove(e) {\n this.em.trigger('block:drag:move', e);\n }\n\n /**\n * Callback when block is dropped\n * @private\n */\n onDrop(model) {\n const { em } = this;\n em.runDefault();\n\n if (model && model.get) {\n const oldActive = 'activeOnRender';\n\n if (model.get(oldActive)) {\n model.trigger('active');\n model.unset(oldActive);\n }\n\n em.trigger('block:drag:stop', model);\n }\n }\n\n /**\n * Add new model to the collection\n * @param {Model} model\n * @private\n * */\n addTo(model) {\n this.add(model);\n }\n\n /**\n * Render new model inside the view\n * @param {Model} model\n * @param {Object} fragment Fragment collection\n * @private\n * */\n add(model, fragment) {\n const { config } = this;\n var frag = fragment || null;\n var view = new BlockView(\n {\n model,\n attributes: model.get('attributes'),\n },\n config\n );\n var rendered = view.render().el;\n var category = model.get('category');\n\n // Check for categories\n if (category && this.categories && !config.ignoreCategories) {\n if (isString(category)) {\n category = {\n id: category,\n label: category,\n };\n } else if (isObject(category) && !category.id) {\n category.id = category.label;\n }\n\n var catModel = this.categories.add(category);\n var catId = catModel.get('id');\n var catView = this.renderedCategories[catId];\n var categories = this.getCategoriesEl();\n model.set('category', catModel, { silent: true });\n\n if (!catView && categories) {\n catView = new CategoryView(\n {\n model: catModel,\n },\n this.config\n ).render();\n this.renderedCategories[catId] = catView;\n categories.appendChild(catView.el);\n }\n\n catView && catView.append(rendered);\n return;\n }\n\n if (frag) frag.appendChild(rendered);\n else this.append(rendered);\n }\n\n getCategoriesEl() {\n if (!this.catsEl) {\n this.catsEl = this.el.querySelector(`.${this.catsClass}`);\n }\n\n return this.catsEl;\n }\n\n getBlocksEl() {\n if (!this.blocksEl) {\n this.blocksEl = this.el.querySelector(`.${this.noCatClass} .${this.blockContClass}`);\n }\n\n return this.blocksEl;\n }\n\n append(el) {\n let blocks = this.getBlocksEl();\n blocks && blocks.appendChild(el);\n }\n\n render() {\n const ppfx = this.ppfx;\n const frag = document.createDocumentFragment();\n this.catsEl = null;\n this.blocksEl = null;\n this.renderedCategories = [];\n this.el.innerHTML = `\n
\n
\n
\n
\n `;\n\n this.collection.each(model => this.add(model, frag));\n this.append(frag);\n const cls = `${this.blockContClass}s ${ppfx}one-bg ${ppfx}two-color`;\n this.$el.addClass(cls);\n this.rendered = true;\n return this;\n }\n}\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/block_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * blockManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API and listen to its events. Before using these methods, you should get the module from the instance.\n *\n * ```js\n * // Listen to events\n * editor.on('block:add', (block) => { ... });\n *\n * // Use the API\n * const blockManager = editor.Blocks;\n * blockManager.add(...);\n * ```\n *\n * ## Available Events\n * * `block:add` - Block added. The [Block] is passed as an argument to the callback.\n * * `block:remove` - Block removed. The [Block] is passed as an argument to the callback.\n * * `block:update` - Block updated. The [Block] and the object containing changes are passed as arguments to the callback.\n * * `block:drag:start` - Started dragging block, the [Block] is passed as an argument.\n * * `block:drag` - Dragging block, the [Block] is passed as an argument.\n * * `block:drag:stop` - Dragging of the block is stopped. The dropped [Component] (if dropped successfully) and the [Block] are passed as arguments.\n * * `block` - Catch-all event for all the events mentioned above. An object containing all the available data about the triggered event is passed as an argument to the callback.\n *\n * ## Methods\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getall)\n * * [getAllVisible](#getallvisible)\n * * [remove](#remove)\n * * [getConfig](#getconfig)\n * * [getCategories](#getcategories)\n * * [getContainer](#getcontainer)\n * * [render](#render)\n *\n * [Block]: block.html\n * [Component]: component.html\n *\n * @module Blocks\n */\nimport { isElement, isArray } from 'underscore';\nimport Module from '../abstract/moduleLegacy';\nimport defaults from './config/config';\nimport Block from './model/Block';\nimport Blocks from './model/Blocks';\nimport Category from './model/Category';\nimport Categories from './model/Categories';\nimport BlocksView from './view/BlocksView';\n\nexport const evAll = 'block';\nexport const evPfx = `${evAll}:`;\nexport const evAdd = `${evPfx}add`;\nexport const evUpdate = `${evPfx}update`;\nexport const evRemove = `${evPfx}remove`;\nexport const evRemoveBefore = `${evRemove}:before`;\nexport const evDrag = `${evPfx}drag`;\nexport const evDragStart = `${evDrag}:start`;\nexport const evDragStop = `${evDrag}:stop`;\nexport const evCustom = `${evPfx}custom`;\n\nexport default class BlockManager extends Module {\n name = 'BlockManager';\n\n Block = Block;\n\n Blocks = Blocks;\n\n Category = Category;\n\n Categories = Categories;\n\n events = {\n all: evAll,\n update: evUpdate,\n add: evAdd,\n remove: evRemove,\n removeBefore: evRemoveBefore,\n drag: evDrag,\n dragStart: evDragStart,\n dragEnd: evDragStop,\n custom: evCustom,\n };\n\n init(config = {}) {\n this.c = { ...defaults, ...config };\n const { em } = this.c;\n this.em = em;\n\n // Global blocks collection\n this.blocks = new Blocks(this.c.blocks);\n this.blocksVisible = new Blocks(this.blocks.models);\n this.categories = new Categories();\n this.all = this.blocks;\n this.__initListen();\n\n // Setup the sync between the global and public collections\n this.blocks.on('add', model => this.blocksVisible.add(model));\n this.blocks.on('remove', model => this.blocksVisible.remove(model));\n this.blocks.on('reset', coll => this.blocksVisible.reset(coll.models));\n\n return this;\n }\n\n __trgCustom() {\n this.em.trigger(this.events.custom, this.__customData());\n }\n\n __customData() {\n const bhv = this.__getBehaviour();\n return {\n bm: this,\n blocks: this.getAll().models,\n container: bhv.container,\n dragStart: (block, ev) => this.startDrag(block, ev),\n drag: ev => this.__drag(ev),\n dragStop: cancel => this.endDrag(cancel),\n };\n }\n\n __startDrag(block, ev) {\n const { em, events, blocks } = this;\n const content = block.getContent ? block.getContent() : block;\n this._dragBlock = block;\n em.set({ dragResult: null, dragContent: content });\n [em, blocks].map(i => i.trigger(events.dragStart, block, ev));\n }\n\n __drag(ev) {\n const { em, events, blocks } = this;\n const block = this._dragBlock;\n [em, blocks].map(i => i.trigger(events.drag, block, ev));\n }\n\n __endDrag() {\n const { em, events, blocks } = this;\n const block = this._dragBlock;\n const cmp = em.get('dragResult');\n this._dragBlock = null;\n\n if (cmp) {\n const oldKey = 'activeOnRender';\n const oldActive = cmp.get && cmp.get(oldKey);\n const toActive = block.get('activate') || oldActive;\n const toSelect = block.get('select');\n const first = isArray(cmp) ? cmp[0] : cmp;\n\n if (toSelect || (toActive && toSelect !== false)) {\n em.setSelected(first);\n }\n\n if (toActive) {\n first.trigger('active');\n oldActive && first.unset(oldKey);\n }\n\n if (block.get('resetId')) {\n first.onAll(block => block.resetId());\n }\n }\n\n em.set({ dragResult: null, dragContent: null });\n [em, blocks].map(i => i.trigger(events.dragEnd, cmp, block));\n }\n\n __getFrameViews() {\n return this.em\n .get('Canvas')\n .getFrames()\n .map(frame => frame.view);\n }\n\n __behaviour(opts = {}) {\n return (this._bhv = {\n ...(this._bhv || {}),\n ...opts,\n });\n }\n\n __getBehaviour() {\n return this._bhv || {};\n }\n\n startDrag(block, ev) {\n this.__startDrag(block, ev);\n this.__getFrameViews().forEach(fv => fv.droppable.startCustom());\n }\n\n endDrag(cancel) {\n this.__getFrameViews().forEach(fv => fv.droppable.endCustom(cancel));\n this.__endDrag();\n }\n\n /**\n * Get configuration object\n * @return {Object}\n */\n getConfig() {\n return this.c;\n }\n\n postRender() {\n const { categories } = this;\n const collection = this.blocksVisible;\n this.blocksView = new BlocksView({ collection, categories }, this.c);\n const elTo = this.getConfig().appendTo;\n\n if (elTo) {\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\n if (!el) return this.__logWarn('\"appendTo\" element not found');\n el.appendChild(this.render(this.blocksVisible.models));\n }\n\n this.__trgCustom();\n }\n\n /**\n * Add new block.\n * @param {String} id Block ID\n * @param {[Block]} props Block properties\n * @returns {[Block]} Added block\n * @example\n * blockManager.add('h1-block', {\n * label: 'Heading',\n * content: '

Put your title here

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

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

Put your ...'}, ...]\n */\n getAll() {\n return this.blocks;\n }\n\n /**\n * Return the visible collection, which containes blocks actually rendered\n * @returns {Collection<[Block]>}\n */\n getAllVisible() {\n return this.blocksVisible;\n }\n\n /**\n * Remove block.\n * @param {String|[Block]} block Block or block ID\n * @returns {[Block]} Removed block\n * @example\n * const removed = blockManager.remove('BLOCK_ID');\n * // or by passing the Block\n * const block = blockManager.get('BLOCK_ID');\n * blockManager.remove(block);\n */\n remove(block, opts = {}) {\n return this.__remove(block, opts);\n }\n\n /**\n * Get all available categories.\n * It's possible to add categories only within blocks via 'add()' method\n * @return {Array|Collection}\n */\n getCategories() {\n return this.categories;\n }\n\n /**\n * Return the Blocks container element\n * @return {HTMLElement}\n */\n getContainer() {\n return this.blocksView.el;\n }\n\n /**\n * Render blocks\n * @param {Array} blocks Blocks to render, without the argument will render all global blocks\n * @param {Object} [opts={}] Options\n * @param {Boolean} [opts.external] Render blocks in a new container (HTMLElement will be returned)\n * @param {Boolean} [opts.ignoreCategories] Render blocks without categories\n * @return {HTMLElement} Rendered element\n * @example\n * // Render all blocks (inside the global collection)\n * blockManager.render();\n *\n * // Render new set of blocks\n * const blocks = blockManager.getAll();\n * const filtered = blocks.filter(block => block.get('category') == 'sections')\n *\n * blockManager.render(filtered);\n * // Or a new set from an array\n * blockManager.render([\n * {label: 'Label text', content: '
Content
'}\n * ]);\n *\n * // Back to blocks from the global collection\n * blockManager.render();\n *\n * // You can also render your blocks outside of the main block container\n * const newBlocksEl = blockManager.render(filtered, { external: true });\n * document.getElementById('some-id').appendChild(newBlocksEl);\n */\n render(blocks, opts = {}) {\n const { categories } = this.categories;\n const toRender = blocks || this.getAll().models;\n\n if (opts.external) {\n const collection = new Blocks(toRender);\n return new BlocksView({ collection, categories }, { ...this.c, ...opts }).render().el;\n }\n\n if (this.blocksView) {\n this.blocksView.updateConfig(opts);\n this.blocksView.collection.reset(toRender);\n\n if (!this.blocksView.rendered) {\n this.blocksView.render();\n this.blocksView.rendered = 1;\n }\n }\n\n return this.getContainer();\n }\n\n destroy() {\n const colls = [this.blocks, this.blocksVisible, this.categories];\n colls.map(c => c.stopListening());\n colls.map(c => c.reset());\n this.blocksView?.remove();\n this.c = {};\n this.blocks = {};\n this.blocksVisible = {};\n this.blocksView = {};\n this.categories = [];\n this.all = {};\n }\n}\n","export default {\n // Style prefix\n stylePrefix: 'cm-',\n\n inlineCss: false,\n};\n","import { Model } from '../../common';\n\nexport default class HTMLGenerator extends Model {\n build(model, opts = {}) {\n const htmlOpts = {};\n const { em } = opts;\n\n // Remove unnecessary IDs\n if (opts.cleanId && em) {\n const rules = em.get('CssComposer').getAll();\n const idRules = rules\n .toJSON()\n .map(rule => {\n const sels = rule.selectors;\n const sel = sels && sels.length === 1 && sels.models[0];\n return sel && sel.isId() && sel.get('name');\n })\n .filter(i => i);\n\n htmlOpts.attributes = (mod, attrs) => {\n const { id } = attrs;\n if (\n id &&\n id[0] === 'i' && // all autogenerated IDs start with 'i'\n !mod.get('script') && // if the component has script, we have to leave the ID\n !mod.get('attributes').id && // id is not intentionally in attributes\n idRules.indexOf(id) < 0 // we shouldn't have any rule with this ID\n ) {\n delete attrs.id;\n }\n return attrs;\n };\n }\n\n return model.toHTML(htmlOpts);\n }\n}\n","import { each } from 'underscore';\nimport { Model, Collection } from '../../common';\n\nexport default class JsonGenerator extends Model {\n build(model) {\n var json = model.toJSON();\n this.beforeEach(json);\n\n each(\n json,\n function (v, attr) {\n var obj = json[attr];\n if (obj instanceof Model) {\n json[attr] = this.build(obj);\n } else if (obj instanceof Collection) {\n var coll = obj;\n json[attr] = [];\n if (coll.length) {\n coll.each(function (el, index) {\n json[attr][index] = this.build(el);\n }, this);\n }\n }\n },\n this\n );\n\n return json;\n }\n\n /**\n * Execute on each object\n * @param {Object} obj\n */\n beforeEach(obj) {\n delete obj.status;\n }\n}\n","import { bindAll } from 'underscore';\nimport { Model } from '../../common';\nimport { hasWin } from '../../utils/mixins';\n\nlet CodeMirror;\n\nif (hasWin()) {\n CodeMirror = require('codemirror/lib/codemirror');\n require('codemirror/mode/htmlmixed/htmlmixed');\n require('codemirror/mode/css/css');\n require('codemirror-formatting');\n}\n\nexport default class CodeMirrorEditor extends Model {\n defaults() {\n return {\n input: '',\n label: '',\n codeName: '',\n theme: 'hopscotch',\n readOnly: true,\n lineNumbers: true,\n };\n }\n\n init(el) {\n bindAll(this, 'onChange');\n this.editor = CodeMirror.fromTextArea(el, {\n dragDrop: false,\n lineWrapping: true,\n mode: this.get('codeName'),\n ...this.attributes,\n });\n this.element = el;\n this.editor.on('change', this.onChange);\n\n return this;\n }\n\n onChange() {\n this.trigger('update', this);\n }\n\n getEditor() {\n return this.editor;\n }\n\n /**\n * The element where the viewer is attached\n * @return {HTMLElement}\n */\n getElement() {\n return this.element;\n }\n\n /**\n * Set the element which contains the viewer attached.\n * Generally, it should be just a textarea, but some editor might require\n * a container for it some in that case this method can be used\n * @param {HTMLElement} el\n * @return {self}\n */\n setElement(el) {\n this.element = el;\n return this;\n }\n\n /**\n * Refresh the viewer\n * @return {self}\n */\n refresh() {\n this.getEditor().refresh();\n return this;\n }\n\n /**\n * Focus the viewer\n * @return {self}\n */\n focus() {\n this.getEditor().focus();\n return this;\n }\n\n getContent() {\n const ed = this.getEditor();\n return ed && ed.getValue();\n }\n\n /** @inheritdoc */\n setContent(v, opts = {}) {\n const { editor } = this;\n if (!editor) return;\n editor.setValue(v);\n\n if (editor.autoFormatRange) {\n CodeMirror.commands.selectAll(editor);\n editor.autoFormatRange(editor.getCursor(true), editor.getCursor(false));\n CodeMirror.commands.goDocStart(editor);\n }\n\n !opts.noRefresh && setTimeout(() => this.refresh());\n }\n}\n\nCodeMirrorEditor.prototype.CodeMirror = CodeMirror;\n","import { extend } from 'underscore';\nimport { Model } from '../../common';\n\nfunction isFunctionEmpty(fn) {\n const content = fn.toString().match(/\\{([\\s\\S]*)\\}/m)[1]; // content between first and last { }\n return content.replace(/^\\s*\\/\\/.*$/gm, '').trim().length === 0; // remove comments\n}\n\nexport default class JsGenerator extends Model {\n mapModel(model) {\n var code = '';\n var script = model.get('script-export') || model.get('script');\n var type = model.get('type');\n var comps = model.get('components');\n var id = model.getId();\n\n if (script) {\n // If the component has scripts we need to expose his ID\n var attr = model.get('attributes');\n attr = extend({}, attr, { id });\n model.set('attributes', attr, { silent: 1 });\n var scrStr = model.getScriptString(script);\n const scrProps = model.get('script-props');\n\n // If the script was updated, I'll put its code in a separate container\n if (model.get('scriptUpdated') && !scrProps) {\n this.mapJs[type + '-' + id] = { ids: [id], code: scrStr };\n } else {\n let props;\n const mapType = this.mapJs[type];\n\n if (scrProps) {\n props = model.__getScriptProps();\n }\n\n if (mapType) {\n mapType.ids.push(id);\n if (props) mapType.props[id] = props;\n } else {\n const res = { ids: [id], code: scrStr };\n if (props) res.props = { [id]: props };\n this.mapJs[type] = res;\n }\n }\n }\n\n comps.each(function (model) {\n code += this.mapModel(model);\n }, this);\n\n return code;\n }\n\n build(model) {\n this.mapJs = {};\n this.mapModel(model);\n let code = '';\n\n for (let type in this.mapJs) {\n const mapType = this.mapJs[type];\n\n if (!mapType.code) {\n continue;\n }\n\n if (mapType.props) {\n if (isFunctionEmpty(mapType.code)) {\n continue;\n }\n\n code += `\n var props = ${JSON.stringify(mapType.props)};\n var ids = Object.keys(props).map(function(id) { return '#'+id }).join(',');\n var els = document.querySelectorAll(ids);\n for (var i = 0, len = els.length; i < len; i++) {\n var el = els[i];\n (${mapType.code}.bind(el))(props[el.id]);\n }`;\n } else {\n // Deprecated\n const ids = '#' + mapType.ids.join(', #');\n code += `\n var items = document.querySelectorAll('${ids}');\n for (var i = 0, len = items.length; i < len; i++) {\n (function(){\\n${mapType.code}\\n}.bind(items[i]))();\n }`;\n }\n }\n\n return code;\n }\n}\n","import { View } from '../../common';\nimport html from '../../utils/html';\n\nexport default class EditorView extends View {\n template({ pfx, codeName, label }) {\n return html`\n
\n
${label}
\n
\n
\n `;\n }\n\n initialize(o) {\n this.config = o.config || {};\n this.pfx = this.config.stylePrefix;\n }\n\n render() {\n const { model, pfx, $el } = this;\n const obj = model.toJSON();\n obj.pfx = pfx;\n $el.html(this.template(obj));\n $el.attr('class', `${pfx}editor-c`);\n $el.find(`#${pfx}code`).append(model.get('input'));\n return this;\n }\n}\n","/**\n * - [addGenerator](#addgenerator)\n * - [getGenerator](#getgenerator)\n * - [getGenerators](#getgenerators)\n * - [addViewer](#addviewer)\n * - [getViewer](#getviewer)\n * - [getViewers](#getviewers)\n * - [updateViewer](#updateviewer)\n * - [getCode](#getcode)\n *\n *\n * Before using methods you should get first the module from the editor instance, in this way:\n *\n * ```js\n * var codeManager = editor.CodeManager;\n * ```\n *\n * @module CodeManager\n */\nimport { isUndefined } from 'underscore';\nimport defaults from './config/config';\nimport gHtml from './model/HtmlGenerator';\nimport gCss from './model/CssGenerator';\nimport gJson from './model/JsonGenerator';\nimport gJs from './model/JsGenerator';\nimport eCM from './model/CodeMirrorEditor';\nimport editorView from './view/EditorView';\n\nexport default () => {\n var c = {};\n var generators = {},\n defGenerators = {},\n viewers = {},\n defViewers = {};\n\n const defaultViewer = 'CodeMirror';\n\n return {\n getConfig() {\n return c;\n },\n\n config: c,\n\n EditorView: editorView,\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'CodeManager',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n */\n init(config) {\n c = config || {};\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n var ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n defGenerators.html = new gHtml();\n defGenerators.css = new gCss();\n defGenerators.json = new gJson();\n defGenerators.js = new gJs();\n defViewers.CodeMirror = new eCM();\n this.loadDefaultGenerators().loadDefaultViewers();\n\n return this;\n },\n\n /**\n * Add new code generator to the collection\n * @param {string} id Code generator ID\n * @param {Object} generator Code generator wrapper\n * @param {Function} generator.build Function that builds the code\n * @return {this}\n * @example\n * codeManager.addGenerator('html7',{\n * build: function(model){\n * return 'myCode';\n * }\n * });\n * */\n addGenerator(id, generator) {\n generators[id] = generator;\n return this;\n },\n\n /**\n * Get code generator by id\n * @param {string} id Code generator ID\n * @return {Object|null}\n * @example\n * var generator = codeManager.getGenerator('html7');\n * generator.build = function(model){\n * //extend\n * };\n * */\n getGenerator(id) {\n return generators[id] || null;\n },\n\n /**\n * Returns all code generators\n * @return {Array}\n * */\n getGenerators() {\n return generators;\n },\n\n /**\n * Add new code viewer\n * @param {string} id Code viewer ID\n * @param {Object} viewer Code viewer wrapper\n * @param {Function} viewer.init Set element on which viewer will be displayed\n * @param {Function} viewer.setContent Set content to the viewer\n * @return {this}\n * @example\n * codeManager.addViewer('ace',{\n * init: function(el){\n * var ace = require('ace-editor');\n * this.editor = ace.edit(el.id);\n * },\n * setContent: function(code){\n * this.editor.setValue(code);\n * }\n * });\n * */\n addViewer(id, viewer) {\n viewers[id] = viewer;\n return this;\n },\n\n /**\n * Get code viewer by id\n * @param {string} id Code viewer ID\n * @return {Object|null}\n * @example\n * var viewer = codeManager.getViewer('ace');\n * */\n getViewer(id) {\n return viewers[id] || null;\n },\n\n /**\n * Returns all code viewers\n * @return {Array}\n * */\n getViewers() {\n return viewers;\n },\n\n createViewer(opts = {}) {\n const type = !isUndefined(opts.type) ? opts.type : defaultViewer;\n const viewer = this.getViewer(type) && this.getViewer(type).clone();\n const cont = document.createElement('div');\n const txtarea = document.createElement('textarea');\n cont.appendChild(txtarea);\n viewer.set(opts);\n viewer.init(txtarea);\n viewer.setElement(cont);\n\n return viewer;\n },\n\n /**\n * Update code viewer content\n * @param {Object} viewer Viewer instance\n * @param {string} code Code string\n * @example\n * var AceViewer = codeManager.getViewer('ace');\n * // ...\n * var viewer = AceViewer.init(el);\n * // ...\n * codeManager.updateViewer(AceViewer, 'code');\n * */\n updateViewer(viewer, code) {\n viewer.setContent(code);\n },\n\n /**\n * Get code from model\n * @param {Object} model Any kind of model that will be passed to the build method of generator\n * @param {string} genId Code generator id\n * @param {Object} [opt] Options\n * @return {string}\n * @example\n * var codeStr = codeManager.getCode(model, 'html');\n * */\n getCode(model, genId, opt = {}) {\n opt.em = c.em;\n var generator = this.getGenerator(genId);\n return generator ? generator.build(model, opt) : '';\n },\n\n /**\n * Load default code generators\n * @return {this}\n * @private\n * */\n loadDefaultGenerators() {\n for (var id in defGenerators) this.addGenerator(id, defGenerators[id]);\n\n return this;\n },\n\n /**\n * Load default code viewers\n * @return {this}\n * @private\n * */\n loadDefaultViewers() {\n for (var id in defViewers) this.addViewer(id, defViewers[id]);\n\n return this;\n },\n\n destroy() {\n [c, generators, defGenerators, viewers, defViewers].forEach(i => (i = {}));\n },\n };\n};\n","import { bindAll, isUndefined, each } from 'underscore';\nimport { Model } from '../../common';\nimport { hasWin } from '../../utils/mixins';\n\nconst maxValue = Number.MAX_VALUE;\n\nexport const getMediaLength = mediaQuery => {\n const length = /(-?\\d*\\.?\\d+)\\w{0,}/.exec(mediaQuery);\n return !length ? '' : length[0];\n};\n\nexport default class CssGenerator extends Model {\n initialize() {\n bindAll(this, 'sortRules');\n this.compCls = [];\n this.ids = [];\n }\n\n /**\n * Get CSS from a component\n * @param {Model} model\n * @return {String}\n */\n buildFromModel(model, opts = {}) {\n let code = '';\n const em = this.em;\n const avoidInline = em && em.getConfig().avoidInlineStyle;\n const style = model.styleToString();\n const classes = model.get('classes');\n this.ids.push(`#${model.getId()}`);\n\n // Let's know what classes I've found\n classes.each(model => this.compCls.push(model.getFullName()));\n\n if (!avoidInline && style) {\n code = `#${model.getId()}{${style}}`;\n }\n\n const components = model.components();\n components.each(model => (code += this.buildFromModel(model, opts)));\n return code;\n }\n\n build(model, opts = {}) {\n const { json } = opts;\n const em = opts.em || '';\n const cssc = opts.cssc || (em && em.get('CssComposer'));\n this.em = em;\n this.compCls = [];\n this.ids = [];\n this.model = model;\n const codeJson = [];\n let code = model ? this.buildFromModel(model, opts) : '';\n const clearStyles = isUndefined(opts.clearStyles) && em ? em.getConfig().clearStyles : opts.clearStyles;\n\n if (cssc) {\n let rules = opts.rules || cssc.getAll();\n const atRules = {};\n const dump = [];\n\n if (opts.onlyMatched && model && hasWin()) {\n rules = this.matchedRules(model, rules);\n }\n\n rules.forEach(rule => {\n const atRule = rule.getAtRule();\n\n if (atRule) {\n const mRules = atRules[atRule];\n if (mRules) {\n mRules.push(rule);\n } else {\n atRules[atRule] = [rule];\n }\n return;\n }\n\n const res = this.buildFromRule(rule, dump, opts);\n\n if (json) {\n codeJson.push(res);\n } else {\n code += res;\n }\n });\n\n this.sortMediaObject(atRules).forEach(item => {\n let rulesStr = '';\n const atRule = item.key;\n const mRules = item.value;\n\n mRules.forEach(rule => {\n const ruleStr = this.buildFromRule(rule, dump, opts);\n\n if (rule.get('singleAtRule')) {\n code += `${atRule}{${ruleStr}}`;\n } else {\n rulesStr += ruleStr;\n }\n\n json && codeJson.push(ruleStr);\n });\n\n if (rulesStr) {\n code += `${atRule}{${rulesStr}}`;\n }\n });\n\n em && clearStyles && rules.remove && rules.remove(dump);\n }\n\n return json ? codeJson.filter(r => r) : code;\n }\n\n /**\n * Get CSS from the rule model\n * @param {Model} rule\n * @return {string} CSS string\n */\n buildFromRule(rule, dump, opts = {}) {\n let result = '';\n const { model } = this;\n const selectorStrNoAdd = rule.selectorsToString({ skipAdd: 1 });\n const selectorsAdd = rule.get('selectorsAdd');\n const singleAtRule = rule.get('singleAtRule');\n let found;\n\n // This will not render a rule if there is no its component\n rule.get('selectors').each(selector => {\n const name = selector.getFullName();\n if (this.compCls.indexOf(name) >= 0 || this.ids.indexOf(name) >= 0 || opts.keepUnusedStyles) {\n found = 1;\n }\n });\n\n if ((selectorStrNoAdd && found) || selectorsAdd || singleAtRule || !model) {\n const block = rule.getDeclaration({ body: 1 });\n block && (opts.json ? (result = rule) : (result += block));\n } else {\n dump.push(rule);\n }\n\n return result;\n }\n\n /**\n * Get matched rules of a component\n * @param {Component} component\n * @param {Array} rules\n * @returns {Array}\n */\n matchedRules(component, rules) {\n const el = component.getEl();\n let result = [];\n\n rules.forEach(rule => {\n try {\n if (\n rule\n .selectorsToString()\n .split(',')\n .some(selector => el.matches(this.__cleanSelector(selector)))\n ) {\n result.push(rule);\n }\n } catch (err) {}\n });\n\n component.components().forEach(component => {\n result = result.concat(this.matchedRules(component, rules));\n });\n\n // Remove duplicates\n result = result.filter((rule, i) => result.indexOf(rule) === i);\n\n return result;\n }\n\n /**\n * Get the numeric length of the media query string\n * @param {String} mediaQuery Media query string\n * @return {Number}\n */\n getQueryLength(mediaQuery) {\n const length = /(-?\\d*\\.?\\d+)\\w{0,}/.exec(mediaQuery);\n if (!length) return maxValue;\n\n return parseFloat(length[1]);\n }\n\n /**\n * Return a sorted array from media query object\n * @param {Object} items\n * @return {Array}\n */\n sortMediaObject(items = {}) {\n const itemsArr = [];\n each(items, (value, key) => itemsArr.push({ key, value }));\n return itemsArr.sort((a, b) => {\n const isMobFirst = [a.key, b.key].every(mquery => mquery.indexOf('min-width') !== -1);\n const left = isMobFirst ? a.key : b.key;\n const right = isMobFirst ? b.key : a.key;\n return this.getQueryLength(left) - this.getQueryLength(right);\n });\n }\n\n sortRules(a, b) {\n const getKey = rule => rule.get('mediaText');\n const isMobFirst = [getKey(a), getKey(b)].every(q => q.indexOf('min-width') !== -1);\n const left = isMobFirst ? getKey(a) : getKey(b);\n const right = isMobFirst ? getKey(b) : getKey(a);\n return this.getQueryLength(left) - this.getQueryLength(right);\n }\n\n /**\n * Return passed selector without states\n * @param {String} selector\n * @returns {String}\n * @private\n */\n __cleanSelector(selector) {\n return selector\n .split(' ')\n .map(item => item.split(':')[0])\n .join(' ');\n }\n}\n","export default {\n stylePrefix: 'com-',\n\n // Default array of commands\n defaults: [],\n\n // If true, stateful commands (with `run` and `stop` methods) can't be runned multiple times.\n // So, if the command is already active, running it again will not execute the `run` method\n strict: 1,\n};\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/commands/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * commands: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API and listen to its events. Before using these methods, you should get the module from the instance.\n *\n * ```js\n * // Listen to events\n * editor.on('run', () => { ... });\n *\n * // Use the API\n * const commands = editor.Commands;\n * commands.add(...);\n * ```\n *\n ** ## Available Events\n * * `run:{commandName}` - Triggered when some command is called to run (eg. editor.runCommand('preview'))\n * * `stop:{commandName}` - Triggered when some command is called to stop (eg. editor.stopCommand('preview'))\n * * `run:{commandName}:before` - Triggered before the command is called\n * * `stop:{commandName}:before` - Triggered before the command is called to stop\n * * `abort:{commandName}` - Triggered when the command execution is aborted (`editor.on(`run:preview:before`, opts => opts.abort = 1);`)\n * * `run` - Triggered on run of any command. The id and the result are passed as arguments to the callback\n * * `stop` - Triggered on stop of any command. The id and the result are passed as arguments to the callback\n *\n * ## Methods\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getall)\n * * [extend](#extend)\n * * [has](#has)\n * * [run](#run)\n * * [stop](#stop)\n * * [isActive](#isactive)\n * * [getActive](#getactive)\n *\n * @module Commands\n */\n\nimport { isFunction, includes } from 'underscore';\nimport CommandAbstract from './view/CommandAbstract';\nimport defaults from './config/config';\nimport { eventDrag } from '../dom_components/model/Component';\n\nconst commandsDef = [\n ['preview', 'Preview', 'preview'],\n ['resize', 'Resize', 'resize'],\n ['fullscreen', 'Fullscreen', 'fullscreen'],\n ['copy', 'CopyComponent'],\n ['paste', 'PasteComponent'],\n ['canvas-move', 'CanvasMove'],\n ['canvas-clear', 'CanvasClear'],\n ['open-code', 'ExportTemplate', 'export-template'],\n ['open-layers', 'OpenLayers', 'open-layers'],\n ['open-styles', 'OpenStyleManager', 'open-sm'],\n ['open-traits', 'OpenTraitManager', 'open-tm'],\n ['open-blocks', 'OpenBlocks', 'open-blocks'],\n ['open-assets', 'OpenAssets', 'open-assets'],\n ['component-select', 'SelectComponent', 'select-comp'],\n ['component-outline', 'SwitchVisibility', 'sw-visibility'],\n ['component-offset', 'ShowOffset', 'show-offset'],\n ['component-move', 'MoveComponent', 'move-comp'],\n ['component-next', 'ComponentNext'],\n ['component-prev', 'ComponentPrev'],\n ['component-enter', 'ComponentEnter'],\n ['component-exit', 'ComponentExit', 'select-parent'],\n ['component-delete', 'ComponentDelete'],\n ['component-style-clear', 'ComponentStyleClear'],\n ['component-drag', 'ComponentDrag'],\n];\n\nexport default () => {\n let em;\n let c = {};\n const commands = {};\n const defaultCommands = {};\n const active = {};\n\n // Need it here as it would be used below\n const add = function (id, obj) {\n if (isFunction(obj)) obj = { run: obj };\n if (!obj.stop) obj.noStop = 1;\n delete obj.initialize;\n obj.id = id;\n commands[id] = CommandAbstract.extend(obj);\n return this;\n };\n\n return {\n CommandAbstract,\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Commands',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config = {}) {\n c = {\n ...defaults,\n ...config,\n };\n em = c.em;\n const ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n // Load commands passed via configuration\n Object.keys(c.defaults).forEach(k => {\n const obj = c.defaults[k];\n if (obj.id) this.add(obj.id, obj);\n });\n\n defaultCommands['tlb-delete'] = {\n run(ed) {\n return ed.runCommand('core:component-delete');\n },\n };\n\n defaultCommands['tlb-clone'] = {\n run(ed) {\n ed.runCommand('core:copy');\n ed.runCommand('core:paste', { action: 'clone-component' });\n },\n };\n\n defaultCommands['tlb-move'] = {\n run(ed, sender, opts = {}) {\n let dragger;\n const em = ed.getModel();\n const event = opts && opts.event;\n const { target } = opts;\n const sel = target || ed.getSelected();\n const selAll = target ? [target] : [...ed.getSelectedAll()];\n const nativeDrag = event && event.type == 'dragstart';\n const defComOptions = { preserveSelected: 1 };\n const modes = ['absolute', 'translate'];\n\n if (!sel || !sel.get('draggable')) {\n return em.logWarning('The element is not draggable');\n }\n\n const mode = sel.get('dmode') || em.get('dmode');\n const hideTlb = () => em.stopDefault(defComOptions);\n const altMode = includes(modes, mode);\n selAll.forEach(sel => sel.trigger('disable'));\n\n // Without setTimeout the ghost image disappears\n nativeDrag ? setTimeout(hideTlb, 0) : hideTlb();\n\n const onStart = data => {\n em.trigger(`${eventDrag}:start`, data);\n };\n const onDrag = data => {\n em.trigger(eventDrag, data);\n };\n const onEnd = (e, opts, data) => {\n selAll.forEach(sel => sel.set('status', 'selected'));\n ed.select(selAll);\n sel.emitUpdate();\n em.trigger(`${eventDrag}:end`, data);\n\n // Defer selectComponent in order to prevent canvas \"freeze\" #2692\n setTimeout(() => em.runDefault(defComOptions));\n\n // Dirty patch to prevent parent selection on drop\n (altMode || data.cancelled) && em.set('_cmpDrag', 1);\n };\n\n if (altMode) {\n // TODO move grabbing func in editor/canvas from the Sorter\n dragger = ed.runCommand('core:component-drag', {\n guidesInfo: 1,\n mode,\n target: sel,\n onStart,\n onDrag,\n onEnd,\n event,\n });\n } else {\n if (nativeDrag) {\n event.dataTransfer.setDragImage(sel.view.el, 0, 0);\n //sel.set('status', 'freezed');\n }\n\n const cmdMove = ed.Commands.get('move-comp');\n cmdMove.onStart = onStart;\n cmdMove.onDrag = onDrag;\n cmdMove.onEndMoveFromModel = onEnd;\n cmdMove.initSorterFromModels(selAll);\n }\n\n selAll.forEach(sel => sel.set('status', 'freezed-selected'));\n },\n };\n\n // Core commands\n defaultCommands['core:undo'] = e => e.UndoManager.undo();\n defaultCommands['core:redo'] = e => e.UndoManager.redo();\n commandsDef.forEach(item => {\n const oldCmd = item[2];\n const cmd = require(`./view/${item[1]}`).default;\n const cmdName = `core:${item[0]}`;\n defaultCommands[cmdName] = cmd;\n if (oldCmd) {\n defaultCommands[oldCmd] = cmd;\n // Propogate old commands (can be removed once we stop to call old commands)\n ['run', 'stop'].forEach(name => {\n em.on(`${name}:${oldCmd}`, (...args) => em.trigger(`${name}:${cmdName}`, ...args));\n });\n }\n });\n\n if (c.em) c.model = c.em.get('Canvas');\n\n this.loadDefaultCommands();\n\n return this;\n },\n\n /**\n * Add new command to the collection\n * @param\t{string} id Command's ID\n * @param\t{Object|Function} command Object representing your command,\n * By passing just a function it's intended as a stateless command\n * (just like passing an object with only `run` method).\n * @return {this}\n * @example\n * commands.add('myCommand', {\n * \trun(editor, sender) {\n * \t\talert('Hello world!');\n * \t},\n * \tstop(editor, sender) {\n * \t},\n * });\n * // As a function\n * commands.add('myCommand2', editor => { ... });\n * */\n add,\n\n /**\n * Get command by ID\n * @param\t{string}\tid Command's ID\n * @return {Object} Object representing the command\n * @example\n * var myCommand = commands.get('myCommand');\n * myCommand.run();\n * */\n get(id) {\n let el = commands[id];\n\n if (isFunction(el)) {\n el = new el(c);\n commands[id] = el;\n } else if (!el) {\n em.logWarning(`'${id}' command not found`);\n }\n\n return el;\n },\n\n /**\n * Extend the command. The command to extend should be defined as an object\n * @param\t{string}\tid Command's ID\n * @param {Object} Object with the new command functions\n * @returns {this}\n * @example\n * commands.extend('old-command', {\n * someInnerFunction() {\n * // ...\n * }\n * });\n * */\n extend(id, cmd = {}) {\n const command = this.get(id);\n if (command) {\n const cmdObj = {\n ...command.constructor.prototype,\n ...cmd,\n };\n this.add(id, cmdObj);\n // Extend also old name commands if exist\n const oldCmd = commandsDef.filter(cmd => `core:${cmd[0]}` === id && cmd[2])[0];\n oldCmd && this.add(oldCmd[2], cmdObj);\n }\n return this;\n },\n\n /**\n * Check if command exists\n * @param\t{string}\tid Command's ID\n * @return {Boolean}\n * */\n has(id) {\n return !!commands[id];\n },\n\n /**\n * Get an object containing all the commands\n * @return {Object}\n */\n getAll() {\n return commands;\n },\n\n /**\n * Execute the command\n * @param {String} id Command ID\n * @param {Object} [options={}] Options\n * @return {*} The return is defined by the command\n * @example\n * commands.run('myCommand', { someOption: 1 });\n */\n run(id, options = {}) {\n return this.runCommand(this.get(id), options);\n },\n\n /**\n * Stop the command\n * @param {String} id Command ID\n * @param {Object} [options={}] Options\n * @return {*} The return is defined by the command\n * @example\n * commands.stop('myCommand', { someOption: 1 });\n */\n stop(id, options = {}) {\n return this.stopCommand(this.get(id), options);\n },\n\n /**\n * Check if the command is active. You activate commands with `run`\n * and disable them with `stop`. If the command was created without `stop`\n * method it can't be registered as active\n * @param {String} id Command id\n * @return {Boolean}\n * @example\n * const cId = 'some-command';\n * commands.run(cId);\n * commands.isActive(cId);\n * // -> true\n * commands.stop(cId);\n * commands.isActive(cId);\n * // -> false\n */\n isActive(id) {\n return this.getActive().hasOwnProperty(id);\n },\n\n /**\n * Get all active commands\n * @return {Object}\n * @example\n * console.log(commands.getActive());\n * // -> { someCommand: itsLastReturn, anotherOne: ... };\n */\n getActive() {\n return active;\n },\n\n /**\n * Load default commands\n * @return {this}\n * @private\n * */\n loadDefaultCommands() {\n for (var id in defaultCommands) {\n this.add(id, defaultCommands[id]);\n }\n\n return this;\n },\n\n /**\n * Run command via its object\n * @param {Object} command\n * @param {Object} options\n * @return {*} Result of the command\n * @private\n */\n runCommand(command, options = {}) {\n let result;\n\n if (command && command.run) {\n const id = command.id;\n const editor = em.get('Editor');\n\n if (!this.isActive(id) || options.force || !c.strict) {\n result = editor && command.callRun(editor, options);\n if (id && command.stop && !command.noStop && !options.abort) {\n active[id] = result;\n }\n }\n }\n\n return result;\n },\n\n /**\n * Stop the command\n * @param {Object} command\n * @param {Object} options\n * @return {*} Result of the command\n * @private\n */\n stopCommand(command, options = {}) {\n let result;\n\n if (command && command.run) {\n const id = command.id;\n const editor = em.get('Editor');\n\n if (this.isActive(id) || options.force || !c.strict) {\n if (id) delete active[id];\n result = command.callStop(editor, options);\n }\n }\n\n return result;\n },\n\n /**\n * Create anonymous Command instance\n * @param {Object} command Command object\n * @return {Command}\n * @private\n * */\n create(command) {\n if (!command.stop) command.noStop = 1;\n const cmd = CommandAbstract.extend(command);\n return new cmd(c);\n },\n\n destroy() {\n [em, c, commands, defaultCommands, active].forEach(i => (i = {}));\n },\n };\n};\n","export default {\n run(ed) {\n ed.DomComponents.clear();\n ed.CssComposer.clear();\n },\n};\n","import { bindAll } from 'underscore';\nimport { on, off, getKeyChar } from '../../utils/mixins';\nimport Dragger from '../../utils/Dragger';\n\nexport default {\n run(ed) {\n bindAll(this, 'onKeyUp', 'enableDragger', 'disableDragger');\n this.editor = ed;\n this.canvasModel = this.canvas.getCanvasView().model;\n this.toggleMove(1);\n },\n stop(ed) {\n this.toggleMove();\n this.disableDragger();\n },\n\n onKeyUp(ev) {\n if (getKeyChar(ev) === ' ') {\n this.editor.stopCommand(this.id);\n }\n },\n\n enableDragger(ev) {\n this.toggleDragger(1, ev);\n },\n\n disableDragger(ev) {\n this.toggleDragger(0, ev);\n },\n\n toggleDragger(enable, ev) {\n const { canvasModel, em } = this;\n let { dragger } = this;\n const methodCls = enable ? 'add' : 'remove';\n this.getCanvas().classList[methodCls](`${this.ppfx}is__grabbing`);\n\n if (!dragger) {\n dragger = new Dragger({\n getPosition() {\n return {\n x: canvasModel.get('x'),\n y: canvasModel.get('y'),\n };\n },\n setPosition({ x, y }) {\n canvasModel.set({ x, y });\n },\n onStart(ev, dragger) {\n em.trigger('canvas:move:start', dragger);\n },\n onDrag(ev, dragger) {\n em.trigger('canvas:move', dragger);\n },\n onEnd(ev, dragger) {\n em.trigger('canvas:move:end', dragger);\n },\n });\n this.dragger = dragger;\n }\n\n enable ? dragger.start(ev) : dragger.stop();\n },\n\n toggleMove(enable) {\n const { ppfx } = this;\n const methodCls = enable ? 'add' : 'remove';\n const methodEv = enable ? 'on' : 'off';\n const methodsEv = { on, off };\n const canvas = this.getCanvas();\n const classes = [`${ppfx}is__grab`];\n !enable && classes.push(`${ppfx}is__grabbing`);\n classes.forEach(cls => canvas.classList[methodCls](cls));\n methodsEv[methodEv](document, 'keyup', this.onKeyUp);\n methodsEv[methodEv](canvas, 'mousedown', this.enableDragger);\n methodsEv[methodEv](document, 'mouseup', this.disableDragger);\n },\n};\n","import { Model } from '../../common';\n\nexport default class CommandAbstract extends Model {\n /**\n * Initialize method that can't be removed\n * @param {Object} o Options\n * @private\n * */\n initialize(o) {\n this.config = o || {};\n this.editorModel = this.em = this.config.em || {};\n this.pfx = this.config.stylePrefix;\n this.ppfx = this.config.pStylePrefix;\n this.hoverClass = this.pfx + 'hover';\n this.badgeClass = this.pfx + 'badge';\n this.plhClass = this.pfx + 'placeholder';\n this.freezClass = this.ppfx + 'freezed';\n\n this.canvas = this.em.get && this.em.get('Canvas');\n this.init(this.config);\n }\n\n /**\n * On frame scroll callback\n * @param {[type]} e [description]\n * @return {[type]} [description]\n */\n onFrameScroll(e) {}\n\n /**\n * Returns canval element\n * @return {HTMLElement}\n */\n getCanvas() {\n return this.canvas.getElement();\n }\n\n /**\n * Get canvas body element\n * @return {HTMLElement}\n */\n getCanvasBody() {\n return this.canvas.getBody();\n }\n\n /**\n * Get canvas wrapper element\n * @return {HTMLElement}\n */\n getCanvasTools() {\n return this.canvas.getToolsEl();\n }\n\n /**\n * Get the offset of the element\n * @param {HTMLElement} el\n * @return {Object}\n */\n offset(el) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top + el.ownerDocument.body.scrollTop,\n left: rect.left + el.ownerDocument.body.scrollLeft,\n };\n }\n\n /**\n * Callback triggered after initialize\n * @param {Object} o Options\n * @private\n * */\n init(o) {}\n\n /**\n * Method that run command\n * @param {Object} editor Editor instance\n * @param {Object} [options={}] Options\n * @private\n * */\n callRun(editor, options = {}) {\n const id = this.id;\n editor.trigger(`run:${id}:before`, options);\n\n if (options && options.abort) {\n editor.trigger(`abort:${id}`, options);\n return;\n }\n\n const sender = options.sender || editor;\n const result = this.run(editor, sender, options);\n editor.trigger(`run:${id}`, result, options);\n editor.trigger('run', id, result, options);\n return result;\n }\n\n /**\n * Method that run command\n * @param {Object} editor Editor instance\n * @param {Object} [options={}] Options\n * @private\n * */\n callStop(editor, options = {}) {\n const id = this.id;\n const sender = options.sender || editor;\n editor.trigger(`stop:${id}:before`, options);\n const result = this.stop(editor, sender, options);\n editor.trigger(`stop:${id}`, result, options);\n editor.trigger('stop', id, result, options);\n return result;\n }\n\n /**\n * Stop current command\n */\n stopCommand() {\n this.em.get('Commands').stop(this.id);\n }\n\n /**\n * Method that run command\n * @param {Object} em Editor model\n * @param {Object} sender Button sender\n * @private\n * */\n run(em, sender) {}\n\n /**\n * Method that stop command\n * @param {Object} em Editor model\n * @param {Object} sender Button sender\n * @private\n * */\n stop(em, sender) {}\n}\n","import { isArray } from 'underscore';\n\nexport default {\n run(ed, s, opts = {}) {\n const toSelect = [];\n let components = opts.component || ed.getSelectedAll();\n components = isArray(components) ? [...components] : [components];\n\n components.filter(Boolean).forEach(component => {\n if (!component.get('removable')) {\n toSelect.push(component);\n return this.em.logWarning('The element is not removable', {\n component,\n });\n }\n component.remove();\n });\n\n ed.select(toSelect);\n\n return components;\n },\n};\n","import { keys, bindAll, each, isUndefined, debounce } from 'underscore';\nimport Dragger from '../../utils/Dragger';\n\nconst evName = 'dmode';\n\nexport default {\n run(editor, sender, opts = {}) {\n bindAll(\n this,\n 'setPosition',\n 'onStart',\n 'onDrag',\n 'onEnd',\n 'getPosition',\n 'getGuidesStatic',\n 'renderGuide',\n 'getGuidesTarget'\n );\n const { target, event, mode, dragger = {} } = opts;\n const el = target.getEl();\n const config = {\n doc: el.ownerDocument,\n onStart: this.onStart,\n onEnd: this.onEnd,\n onDrag: this.onDrag,\n getPosition: this.getPosition,\n setPosition: this.setPosition,\n guidesStatic: () => this.guidesStatic,\n guidesTarget: () => this.guidesTarget,\n ...dragger,\n };\n this.setupGuides();\n this.opts = opts;\n this.editor = editor;\n this.em = editor.getModel();\n this.target = target;\n this.isTran = mode == 'translate';\n this.guidesContainer = this.getGuidesContainer();\n this.guidesTarget = this.getGuidesTarget();\n this.guidesStatic = this.getGuidesStatic();\n let drg = this.dragger;\n\n if (!drg) {\n drg = new Dragger(config);\n this.dragger = drg;\n } else {\n drg.setOptions(config);\n }\n\n event && drg.start(event);\n this.toggleDrag(1);\n this.em.trigger(`${evName}:start`, this.getEventOpts());\n\n return drg;\n },\n\n getEventOpts() {\n return {\n mode: this.opts.mode,\n target: this.target,\n guidesTarget: this.guidesTarget,\n guidesStatic: this.guidesStatic,\n };\n },\n\n stop() {\n this.toggleDrag();\n },\n\n setupGuides() {\n (this.guides || []).forEach(item => {\n const { guide } = item;\n guide && guide.parentNode.removeChild(guide);\n });\n this.guides = [];\n },\n\n getGuidesContainer() {\n let { guidesEl } = this;\n\n if (!guidesEl) {\n const { editor, em, opts } = this;\n const pfx = editor.getConfig().stylePrefix;\n const elInfoX = document.createElement('div');\n const elInfoY = document.createElement('div');\n const guideContent = `
\n
\n
`;\n guidesEl = document.createElement('div');\n guidesEl.className = `${pfx}guides`;\n elInfoX.className = `${pfx}guide-info ${pfx}guide-info__x`;\n elInfoY.className = `${pfx}guide-info ${pfx}guide-info__y`;\n elInfoX.innerHTML = guideContent;\n elInfoY.innerHTML = guideContent;\n guidesEl.appendChild(elInfoX);\n guidesEl.appendChild(elInfoY);\n editor.Canvas.getGlobalToolsEl().appendChild(guidesEl);\n this.guidesEl = guidesEl;\n this.elGuideInfoX = elInfoX;\n this.elGuideInfoY = elInfoY;\n this.elGuideInfoContentX = elInfoX.querySelector(`.${pfx}guide-info__content`);\n this.elGuideInfoContentY = elInfoY.querySelector(`.${pfx}guide-info__content`);\n\n em.on(\n 'canvas:update frame:scroll',\n debounce(() => {\n this.updateGuides();\n opts.debug && this.guides.forEach(item => this.renderGuide(item));\n }, 200)\n );\n }\n\n return guidesEl;\n },\n\n getGuidesStatic() {\n let result = [];\n const el = this.target.getEl();\n const { parentNode = {} } = el;\n each(parentNode.children, item => (result = result.concat(el !== item ? this.getElementGuides(item) : [])));\n\n return result.concat(this.getElementGuides(parentNode));\n },\n\n getGuidesTarget() {\n return this.getElementGuides(this.target.getEl());\n },\n\n updateGuides(guides) {\n let lastEl, lastPos;\n (guides || this.guides).forEach(item => {\n const { origin } = item;\n const pos = lastEl === origin ? lastPos : this.getElementPos(origin);\n lastEl = origin;\n lastPos = pos;\n each(this.getGuidePosUpdate(item, pos), (val, key) => (item[key] = val));\n item.originRect = pos;\n });\n },\n\n getGuidePosUpdate(item, rect) {\n const result = {};\n const { top, height, left, width } = rect;\n\n switch (item.type) {\n case 't':\n result.y = top;\n break;\n case 'b':\n result.y = top + height;\n break;\n case 'l':\n result.x = left;\n break;\n case 'r':\n result.x = left + width;\n break;\n case 'x':\n result.x = left + width / 2;\n break;\n case 'y':\n result.y = top + height / 2;\n break;\n }\n\n return result;\n },\n\n renderGuide(item = {}) {\n const el = item.guide || document.createElement('div');\n const un = 'px';\n const guideSize = item.active ? 2 : 1;\n let numEl = el.children[0];\n el.style = `position: absolute; background-color: ${item.active ? 'green' : 'red'};`;\n\n if (!el.children.length) {\n numEl = document.createElement('div');\n numEl.style = 'position: absolute; color: red; padding: 5px; top: 0; left: 0;';\n el.appendChild(numEl);\n }\n\n if (item.y) {\n el.style.width = '100%';\n el.style.height = `${guideSize}${un}`;\n el.style.top = `${item.y}${un}`;\n el.style.left = 0;\n } else {\n el.style.width = `${guideSize}${un}`;\n el.style.height = '100%';\n el.style.left = `${item.x}${un}`;\n el.style.top = `0${un}`;\n }\n\n !item.guide && this.guidesContainer.appendChild(el);\n return el;\n },\n\n getElementPos(el) {\n return this.editor.Canvas.getElementPos(el, { noScroll: 1 });\n },\n\n getElementGuides(el) {\n const { opts } = this;\n const originRect = this.getElementPos(el);\n const { top, height, left, width } = originRect;\n const guides = [\n { type: 't', y: top }, // Top\n { type: 'b', y: top + height }, // Bottom\n { type: 'l', x: left }, // Left\n { type: 'r', x: left + width }, // Right\n { type: 'x', x: left + width / 2 }, // Mid x\n { type: 'y', y: top + height / 2 }, // Mid y\n ].map(item => ({\n ...item,\n origin: el,\n originRect,\n guide: opts.debug && this.renderGuide(item),\n }));\n guides.forEach(item => this.guides.push(item));\n\n return guides;\n },\n\n getTranslate(transform, axis = 'x') {\n let result = 0;\n (transform || '').split(' ').forEach(item => {\n const itemStr = item.trim();\n const fn = `translate${axis.toUpperCase()}(`;\n if (itemStr.indexOf(fn) === 0) result = parseFloat(itemStr.replace(fn, ''));\n });\n return result;\n },\n\n setTranslate(transform, axis, value) {\n const fn = `translate${axis.toUpperCase()}(`;\n const val = `${fn}${value})`;\n let result = (transform || '')\n .split(' ')\n .map(item => {\n const itemStr = item.trim();\n if (itemStr.indexOf(fn) === 0) item = val;\n return item;\n })\n .join(' ');\n if (result.indexOf(fn) < 0) result += ` ${val}`;\n\n return result;\n },\n\n getPosition() {\n const { target, isTran } = this;\n const { left, top, transform } = target.getStyle();\n let x = 0;\n let y = 0;\n\n if (isTran) {\n x = this.getTranslate(transform);\n y = this.getTranslate(transform, 'y');\n } else {\n x = parseFloat(left || 0);\n y = parseFloat(top || 0);\n }\n\n return { x, y };\n },\n\n setPosition({ x, y, end, position, width, height }) {\n const { target, isTran, em } = this;\n const unit = 'px';\n const en = !end ? 1 : ''; // this will trigger the final change\n const left = `${x}${unit}`;\n const top = `${y}${unit}`;\n let styleUp = {};\n\n if (isTran) {\n let transform = target.getStyle()['transform'] || '';\n transform = this.setTranslate(transform, 'x', left);\n transform = this.setTranslate(transform, 'y', top);\n styleUp = { transform, en };\n target.addStyle(styleUp, { avoidStore: !end });\n } else {\n const adds = { position, width, height };\n const style = { left, top, en };\n keys(adds).forEach(add => {\n const prop = adds[add];\n if (prop) style[add] = prop;\n });\n styleUp = style;\n target.addStyle(styleUp, { avoidStore: !end });\n }\n\n // Update StyleManager properties\n em.getSelected() && keys(styleUp).forEach(i => em.trigger(`update:component:style:${i}`));\n },\n\n _getDragData() {\n const { target } = this;\n return {\n target,\n parent: target.parent(),\n index: target.index(),\n };\n },\n\n onStart(event) {\n const { target, editor, isTran, opts } = this;\n const { center, onStart } = opts;\n const { Canvas } = editor;\n const style = target.getStyle();\n const position = 'absolute';\n const relPos = [position, 'relative'];\n onStart && onStart(this._getDragData());\n if (isTran) return;\n\n if (style.position !== position) {\n let { left, top, width, height } = Canvas.offset(target.getEl());\n let parent = target.parent();\n let parentRel;\n\n // Check for the relative parent\n do {\n const pStyle = parent.getStyle();\n parentRel = relPos.indexOf(pStyle.position) >= 0 ? parent : null;\n parent = parent.parent();\n } while (parent && !parentRel);\n\n // Center the target to the pointer position (used in Droppable for Blocks)\n if (center) {\n const { x, y } = Canvas.getMouseRelativeCanvas(event);\n left = x;\n top = y;\n } else if (parentRel) {\n const offsetP = Canvas.offset(parentRel.getEl());\n left = left - offsetP.left;\n top = top - offsetP.top;\n }\n\n this.setPosition({\n x: left,\n y: top,\n width: `${width}px`,\n height: `${height}px`,\n position,\n });\n }\n },\n\n onDrag(...args) {\n const { guidesTarget, opts } = this;\n const { onDrag } = opts;\n this.updateGuides(guidesTarget);\n opts.debug && guidesTarget.forEach(item => this.renderGuide(item));\n opts.guidesInfo && this.renderGuideInfo(guidesTarget.filter(item => item.active));\n onDrag && onDrag(this._getDragData());\n },\n\n onEnd(ev, dragger, opt = {}) {\n const { editor, opts, id } = this;\n const { onEnd } = opts;\n onEnd && onEnd(ev, opt, { event: ev, ...opt, ...this._getDragData() });\n editor.stopCommand(id);\n this.hideGuidesInfo();\n this.em.trigger(`${evName}:end`, this.getEventOpts());\n },\n\n hideGuidesInfo() {\n ['X', 'Y'].forEach(item => {\n const guide = this[`elGuideInfo${item}`];\n if (guide) guide.style.display = 'none';\n });\n },\n\n /**\n * Render guides with spacing information\n */\n renderGuideInfo(guides = []) {\n const { guidesStatic } = this;\n this.hideGuidesInfo();\n guides.forEach(item => {\n const { origin, x } = item;\n const rectOrigin = this.getElementPos(origin);\n const axis = isUndefined(x) ? 'y' : 'x';\n const isY = axis === 'y';\n const origEdge1 = rectOrigin[isY ? 'left' : 'top'];\n const origEdge1Raw = rectOrigin.rect[isY ? 'left' : 'top'];\n const origEdge2 = isY ? origEdge1 + rectOrigin.width : origEdge1 + rectOrigin.height;\n const origEdge2Raw = isY ? origEdge1Raw + rectOrigin.rect.width : origEdge1Raw + rectOrigin.rect.height;\n const elGuideInfo = this[`elGuideInfo${axis.toUpperCase()}`];\n const elGuideInfoCnt = this[`elGuideInfoContent${axis.toUpperCase()}`];\n const guideInfoStyle = elGuideInfo.style;\n\n // Find the nearest element\n const res = guidesStatic\n .filter(stat => stat.type === item.type)\n .map(stat => {\n const { left, width, top, height } = stat.originRect;\n const statEdge1 = isY ? left : top;\n const statEdge2 = isY ? left + width : top + height;\n return {\n gap: statEdge2 < origEdge1 ? origEdge1 - statEdge2 : statEdge1 - origEdge2,\n guide: stat,\n };\n })\n .filter(item => item.gap > 0)\n .sort((a, b) => a.gap - b.gap)\n .map(item => item.guide)[0];\n\n if (res) {\n const { left, width, top, height, rect } = res.originRect;\n const isEdge1 = isY ? left < rectOrigin.left : top < rectOrigin.top;\n const statEdge1 = isY ? left : top;\n const statEdge1Raw = isY ? rect.left : rect.top;\n const statEdge2 = isY ? left + width : top + height;\n const statEdge2Raw = isY ? rect.left + rect.width : rect.top + rect.height;\n const posFirst = isY ? item.y : item.x;\n const posSecond = isEdge1 ? statEdge2 : origEdge2;\n const pos2 = `${posFirst}px`;\n const size = isEdge1 ? origEdge1 - statEdge2 : statEdge1 - origEdge2;\n const sizeRaw = isEdge1 ? origEdge1Raw - statEdge2Raw : statEdge1Raw - origEdge2Raw;\n guideInfoStyle.display = '';\n guideInfoStyle[isY ? 'top' : 'left'] = pos2;\n guideInfoStyle[isY ? 'left' : 'top'] = `${posSecond}px`;\n guideInfoStyle[isY ? 'width' : 'height'] = `${size}px`;\n elGuideInfoCnt.innerHTML = `${Math.round(sizeRaw)}px`;\n this.em.trigger(`${evName}:active`, {\n ...this.getEventOpts(),\n guide: item,\n guidesStatic,\n matched: res,\n posFirst,\n posSecond,\n size,\n sizeRaw,\n elGuideInfo,\n elGuideInfoCnt,\n });\n }\n });\n },\n\n toggleDrag(enable) {\n const { ppfx, editor } = this;\n const methodCls = enable ? 'add' : 'remove';\n const classes = [`${ppfx}is__grabbing`];\n const { Canvas } = editor;\n const body = Canvas.getBody();\n classes.forEach(cls => body.classList[methodCls](cls));\n Canvas[enable ? 'startAutoscroll' : 'stopAutoscroll']();\n },\n};\n","export default {\n run(ed) {\n if (!ed.Canvas.hasFocus()) return;\n const toSelect = [];\n\n ed.getSelectedAll().forEach(component => {\n const coll = component.components();\n const next = coll && coll.filter(c => c.get('selectable'))[0];\n next && toSelect.push(next);\n });\n\n toSelect.length && ed.select(toSelect);\n },\n};\n","export default {\n run(ed, snd, opts = {}) {\n if (!ed.Canvas.hasFocus() && !opts.force) return;\n const toSelect = [];\n\n ed.getSelectedAll().forEach(component => {\n let next = component.parent();\n\n // Recurse through the parent() chain until a selectable parent is found\n while (next && !next.get('selectable')) {\n next = next.parent();\n }\n\n next && toSelect.push(next);\n });\n\n toSelect.length && ed.select(toSelect);\n },\n};\n","export default {\n run(ed) {\n if (!ed.Canvas.hasFocus()) return;\n const toSelect = [];\n\n ed.getSelectedAll().forEach(cmp => {\n const parent = cmp.parent();\n if (!parent) return;\n\n const len = parent.components().length;\n let incr = 0;\n let at = 0;\n let next;\n\n // Get the next selectable component\n do {\n incr++;\n at = cmp.index() + incr;\n next = at <= len ? parent.getChildAt(at) : null;\n } while (next && !next.get('selectable'));\n\n toSelect.push(next || cmp);\n });\n\n toSelect.length && ed.select(toSelect);\n },\n};\n","export default {\n run(ed) {\n if (!ed.Canvas.hasFocus()) return;\n const toSelect = [];\n\n ed.getSelectedAll().forEach(cmp => {\n const parent = cmp.parent();\n if (!parent) return;\n\n let incr = 0;\n let at = 0;\n let next;\n\n // Get the first selectable component\n do {\n incr++;\n at = cmp.index() - incr;\n next = at >= 0 ? parent.getChildAt(at) : null;\n } while (next && !next.get('selectable'));\n\n toSelect.push(next || cmp);\n });\n\n toSelect.length && ed.select(toSelect);\n },\n};\n","import { flatten } from 'underscore';\n\nexport default {\n run(ed, s, opts = {}) {\n const { target } = opts;\n let toRemove = [];\n\n if (!target.get('styles')) return toRemove;\n\n // Find all components in the project, of the target component type\n const type = target.get('type');\n const wrappers = ed.Pages.getAllWrappers();\n const len = flatten(wrappers.map(wrp => wrp.findType(type))).length;\n\n // Remove component related styles only if there are no more components\n // of that type in the project\n if (!len) {\n const rules = ed.CssComposer.getAll();\n toRemove = rules.filter(rule => rule.get('group') === `cmp:${type}`);\n rules.remove(toRemove);\n }\n\n return toRemove;\n },\n};\n","export default {\n run(ed) {\n const em = ed.getModel();\n const models = [...ed.getSelectedAll()];\n models.length && em.set('clipboard', models);\n },\n};\n","import { extend, bindAll } from 'underscore';\nimport Backbone from 'backbone';\nimport SelectComponent from './SelectComponent';\n\nconst $ = Backbone.$;\n\nexport default extend({}, SelectComponent, {\n init(o) {\n bindAll(this, 'startDelete', 'stopDelete', 'onDelete');\n this.hoverClass = this.pfx + 'hover-delete';\n this.badgeClass = this.pfx + 'badge-red';\n },\n\n enable() {\n var that = this;\n this.$el.find('*').mouseover(this.startDelete).mouseout(this.stopDelete).click(this.onDelete);\n },\n\n /**\n * Start command\n * @param {Object} e\n * @private\n */\n startDelete(e) {\n e.stopPropagation();\n var $this = $(e.target);\n\n // Show badge if possible\n if ($this.data('model').get('removable')) {\n $this.addClass(this.hoverClass);\n this.attachBadge($this.get(0));\n }\n },\n\n /**\n * Stop command\n * @param {Object} e\n * @private\n */\n stopDelete(e) {\n e.stopPropagation();\n var $this = $(e.target);\n $this.removeClass(this.hoverClass);\n\n // Hide badge if possible\n if (this.badge) this.badge.css({ left: -1000, top: -1000 });\n },\n\n /**\n * Delete command\n * @param {Object} e\n * @private\n */\n onDelete(e) {\n e.stopPropagation();\n var $this = $(e.target);\n\n // Do nothing in case can't remove\n if (!$this.data('model').get('removable')) return;\n\n $this.data('model').destroy();\n this.removeBadge();\n this.clean();\n },\n\n /**\n * Updates badge label\n * @param {Object} model\n * @private\n * */\n updateBadgeLabel(model) {\n this.badge.html('Remove ' + model.getName());\n },\n});\n","import Backbone from 'backbone';\nconst $ = Backbone.$;\n\nexport default {\n run(editor, sender, opts = {}) {\n sender && sender.set && sender.set('active', 0);\n const config = editor.getConfig();\n const modal = editor.Modal;\n const pfx = config.stylePrefix;\n this.cm = editor.CodeManager || null;\n\n if (!this.$editors) {\n const oHtmlEd = this.buildEditor('htmlmixed', 'hopscotch', 'HTML');\n const oCsslEd = this.buildEditor('css', 'hopscotch', 'CSS');\n this.htmlEditor = oHtmlEd.el;\n this.cssEditor = oCsslEd.el;\n const $editors = $(`
`);\n $editors.append(oHtmlEd.$el).append(oCsslEd.$el);\n this.$editors = $editors;\n }\n\n modal\n .open({\n title: config.textViewCode,\n content: this.$editors,\n })\n .getModel()\n .once('change:open', () => editor.stopCommand(this.id));\n this.htmlEditor.setContent(editor.getHtml());\n this.cssEditor.setContent(editor.getCss());\n },\n\n stop(editor) {\n const modal = editor.Modal;\n modal && modal.close();\n },\n\n buildEditor(codeName, theme, label) {\n const input = document.createElement('textarea');\n !this.codeMirror && (this.codeMirror = this.cm.getViewer('CodeMirror'));\n\n const el = this.codeMirror.clone().set({\n label,\n codeName,\n theme,\n input,\n });\n\n const $el = new this.cm.EditorView({\n model: el,\n config: this.cm.getConfig(),\n }).render().$el;\n\n el.init(input);\n\n return { el, $el };\n },\n};\n","import { isElement } from 'underscore';\n\nexport default {\n /**\n * Check if fullscreen mode is enabled\n * @return {Boolean}\n */\n isEnabled() {\n var d = document;\n if (d.fullscreenElement || d.webkitFullscreenElement || d.mozFullScreenElement) return 1;\n else return 0;\n },\n\n /**\n * Enable fullscreen mode and return browser prefix\n * @param {HTMLElement} el\n * @return {string}\n */\n enable(el) {\n var pfx = '';\n if (el.requestFullscreen) el.requestFullscreen();\n else if (el.webkitRequestFullscreen) {\n pfx = 'webkit';\n el.webkitRequestFullscreen();\n } else if (el.mozRequestFullScreen) {\n pfx = 'moz';\n el.mozRequestFullScreen();\n } else if (el.msRequestFullscreen) el.msRequestFullscreen();\n else console.warn('Fullscreen not supported');\n return pfx;\n },\n\n /**\n * Disable fullscreen mode\n */\n disable() {\n const d = document;\n if (this.isEnabled()) {\n if (d.exitFullscreen) d.exitFullscreen();\n else if (d.webkitExitFullscreen) d.webkitExitFullscreen();\n else if (d.mozCancelFullScreen) d.mozCancelFullScreen();\n else if (d.msExitFullscreen) d.msExitFullscreen();\n }\n },\n\n /**\n * Triggered when the state of the fullscreen is changed. Inside detects if\n * it's enabled\n * @param {strinf} pfx Browser prefix\n * @param {Event} e\n */\n fsChanged(pfx, e) {\n var d = document;\n var ev = (pfx || '') + 'fullscreenchange';\n if (!this.isEnabled()) {\n this.stop(null, this.sender);\n document.removeEventListener(ev, this.fsChanged);\n }\n },\n\n run(editor, sender, opts = {}) {\n this.sender = sender;\n const { target } = opts;\n const targetEl = isElement(target) ? target : document.querySelector(target);\n const pfx = this.enable(targetEl || editor.getContainer());\n this.fsChanged = this.fsChanged.bind(this, pfx);\n document.addEventListener(pfx + 'fullscreenchange', this.fsChanged);\n editor.trigger('change:canvasOffset');\n },\n\n stop(editor, sender) {\n if (sender && sender.set) sender.set('active', false);\n this.disable();\n if (editor) editor.trigger('change:canvasOffset');\n },\n};\n","import { extend, bindAll } from 'underscore';\nimport Backbone from 'backbone';\nimport { on, off } from '../../utils/mixins';\nimport SelectComponent from './SelectComponent';\nimport SelectPosition from './SelectPosition';\n\nconst $ = Backbone.$;\n\nexport default extend({}, SelectPosition, SelectComponent, {\n init(o) {\n SelectComponent.init.apply(this, arguments);\n bindAll(this, 'initSorter', 'rollback', 'onEndMove');\n this.opt = o;\n this.hoverClass = this.ppfx + 'highlighter-warning';\n this.badgeClass = this.ppfx + 'badge-warning';\n this.noSelClass = this.ppfx + 'no-select';\n },\n\n enable(...args) {\n SelectComponent.enable.apply(this, args);\n this.getBadgeEl().addClass(this.badgeClass);\n this.getHighlighterEl().addClass(this.hoverClass);\n var wp = this.$wrapper;\n wp.css('cursor', 'move');\n wp.on('mousedown', this.initSorter);\n\n // Avoid strange moving behavior\n wp.addClass(this.noSelClass);\n },\n\n /**\n * Overwrite for doing nothing\n * @private\n */\n toggleClipboard() {},\n\n /**\n * Delegate sorting\n * @param {Event} e\n * @private\n * */\n initSorter(e) {\n var el = $(e.target).data('model');\n var drag = el.get('draggable');\n if (!drag) return;\n\n // Avoid badge showing on move\n this.cacheEl = null;\n this.startSelectPosition(e.target, this.frameEl.contentDocument);\n this.sorter.draggable = drag;\n this.sorter.onEndMove = this.onEndMove.bind(this);\n this.stopSelectComponent();\n this.$wrapper.off('mousedown', this.initSorter);\n on(this.getContentWindow(), 'keydown', this.rollback);\n },\n\n /**\n * Init sorter from model\n * @param {Object} model\n * @private\n */\n initSorterFromModel(model) {\n var drag = model.get('draggable');\n if (!drag) return;\n // Avoid badge showing on move\n this.cacheEl = null;\n var el = model.view.el;\n this.startSelectPosition(el, this.frameEl.contentDocument);\n this.sorter.draggable = drag;\n this.sorter.onEndMove = this.onEndMoveFromModel.bind(this);\n\n /*\n this.sorter.setDragHelper(el);\n var dragHelper = this.sorter.dragHelper;\n dragHelper.className = this.ppfx + 'drag-helper';\n dragHelper.innerHTML = '';\n dragHelper.backgroundColor = 'white';\n */\n\n this.stopSelectComponent();\n on(this.getContentWindow(), 'keydown', this.rollback);\n },\n\n /**\n * Init sorter from models\n * @param {Object} model\n * @private\n */\n initSorterFromModels(models) {\n // TODO: if one only check for `draggable`\n // Avoid badge showing on move\n this.cacheEl = null;\n const lastModel = models[models.length - 1];\n const frame = (this.em.get('currentFrame') || {}).model;\n const el = lastModel.getEl(frame);\n const doc = el.ownerDocument;\n this.startSelectPosition(el, doc, { onStart: this.onStart });\n this.sorter.draggable = lastModel.get('draggable');\n this.sorter.toMove = models;\n this.sorter.onMoveClb = this.onDrag;\n this.sorter.onEndMove = this.onEndMoveFromModel.bind(this);\n this.stopSelectComponent();\n on(this.getContentWindow(), 'keydown', this.rollback);\n },\n\n onEndMoveFromModel() {\n off(this.getContentWindow(), 'keydown', this.rollback);\n },\n\n /**\n * Callback after sorting\n * @private\n */\n onEndMove() {\n this.enable();\n off(this.getContentWindow(), 'keydown', this.rollback);\n },\n\n /**\n * Say what to do after the component was selected (selectComponent)\n * @param {Event} e\n * @param {Object} Selected element\n * @private\n * */\n onSelect(e, el) {},\n\n /**\n * Used to bring the previous situation before start moving the component\n * @param {Event} e\n * @param {Boolean} Indicates if rollback in anycase\n * @private\n * */\n rollback(e, force) {\n var key = e.which || e.keyCode;\n if (key == 27 || force) {\n this.sorter.moved = false;\n this.sorter.endMove();\n }\n return;\n },\n\n /**\n * Returns badge element\n * @return {HTMLElement}\n * @private\n */\n getBadgeEl() {\n if (!this.$badge) this.$badge = $(this.getBadge());\n return this.$badge;\n },\n\n /**\n * Returns highlighter element\n * @return {HTMLElement}\n * @private\n */\n getHighlighterEl() {\n if (!this.$hl) this.$hl = $(this.canvas.getHighlighter());\n return this.$hl;\n },\n\n stop(...args) {\n SelectComponent.stop.apply(this, args);\n this.getBadgeEl().removeClass(this.badgeClass);\n this.getHighlighterEl().removeClass(this.hoverClass);\n var wp = this.$wrapper;\n wp.css('cursor', '').unbind().removeClass(this.noSelClass);\n },\n});\n","import { isFunction } from 'underscore';\nimport { createEl } from '../../utils/dom';\n\nexport default {\n open(content) {\n const { editor, title, config, am } = this;\n const { custom } = config;\n if (isFunction(custom.open)) {\n return custom.open(am.__customData());\n }\n const { Modal } = editor;\n Modal.open({ title, content }).onceClose(() => editor.stopCommand(this.id));\n },\n\n close() {\n const { custom } = this.config;\n if (isFunction(custom.close)) {\n return custom.close(this.am.__customData());\n }\n const { Modal } = this.editor;\n Modal && Modal.close();\n },\n\n run(editor, sender, opts = {}) {\n const am = editor.AssetManager;\n const config = am.getConfig();\n const { types = [], accept, select } = opts;\n this.title = opts.modalTitle || editor.t('assetManager.modalTitle') || '';\n this.editor = editor;\n this.config = config;\n this.am = am;\n\n am.setTarget(opts.target);\n am.onClick(opts.onClick);\n am.onDblClick(opts.onDblClick);\n am.onSelect(opts.onSelect);\n am.__behaviour({\n select,\n types,\n options: opts,\n });\n\n if (config.custom) {\n this.rendered = this.rendered || createEl('div');\n this.rendered.className = `${config.stylePrefix}custom-wrp`;\n am.__behaviour({ container: this.rendered });\n am.__trgCustom();\n } else {\n if (!this.rendered || types) {\n let assets = am.getAll().filter(i => i);\n\n if (types && types.length) {\n assets = assets.filter(a => types.indexOf(a.get('type')) !== -1);\n }\n\n am.render(assets);\n this.rendered = am.getContainer();\n }\n\n if (accept) {\n const uploadEl = this.rendered.querySelector(`input#${config.stylePrefix}uploadFile`);\n uploadEl && uploadEl.setAttribute('accept', accept);\n }\n }\n\n this.open(this.rendered);\n return this;\n },\n\n stop(editor) {\n this.editor = editor;\n this.close(this.rendered);\n },\n};\n","import { isFunction } from 'underscore';\nimport { createEl } from '../../utils/dom';\n\nexport default {\n open() {\n const { container, editor, bm, config } = this;\n const { custom, appendTo } = config;\n\n if (isFunction(custom.open)) {\n return custom.open(bm.__customData());\n }\n\n if (this.firstRender && !appendTo) {\n const id = 'views-container';\n const pn = editor.Panels;\n const panels = pn.getPanel(id) || pn.addPanel({ id });\n panels.set('appendContent', container).trigger('change:appendContent');\n if (!custom) container.appendChild(bm.render());\n }\n\n if (container) container.style.display = 'block';\n },\n\n close() {\n const { container, config } = this;\n const { custom } = config;\n\n if (isFunction(custom.close)) {\n return custom.close(this.bm.__customData());\n }\n\n if (container) container.style.display = 'none';\n },\n\n run(editor) {\n const bm = editor.Blocks;\n this.config = bm.getConfig();\n this.firstRender = !this.container;\n this.container = this.container || createEl('div');\n this.editor = editor;\n this.bm = bm;\n const { container } = this;\n bm.__behaviour({\n container,\n });\n\n if (this.config.custom) {\n bm.__trgCustom();\n }\n\n this.open();\n },\n\n stop() {\n this.close();\n },\n};\n","export default {\n run(editor) {\n const lm = editor.LayerManager;\n const pn = editor.Panels;\n 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 /**\n * Adjust style object before creation/update.\n * @example\n * onBeforeStyle(style) {\n * const padValue = style.padding;\n * if (padValue === '10px') {\n * delete style.padding;\n * style['padding-top'] = padValue;\n * // ...\n * }\n * return style;\n * }\n */\n onBeforeStyle: null,\n};\n","import { isEmpty, forEach, isString, isArray } from 'underscore';\nimport { Model } from '../../common';\nimport StyleableModel from '../../domain_abstract/model/StyleableModel';\nimport Selectors from '../../selector_manager/model/Selectors';\nimport { getMediaLength } from '../../code_manager/model/CssGenerator';\nimport { isEmptyObj, hasWin } from '../../utils/mixins';\n\nconst { CSS } = hasWin() ? window : {};\n\n/**\n * @typedef CssRule\n * @property {Array} selectors Array of selectors\n * @property {Object} style Object containing style definitions\n * @property {String} [selectorsAdd=''] Additional string css selectors\n * @property {String} [atRuleType=''] Type of at-rule, eg. `media`, 'font-face'\n * @property {String} [mediaText=''] At-rule value, eg. `(max-width: 1000px)`\n * @property {Boolean} [singleAtRule=false] This property is used only on at-rules, like 'page' or 'font-face', where the block containes only style declarations\n * @property {String} [state=''] State of the rule, eg: `hover`, `focused`\n * @property {Boolean|Array} [important=false] If true, sets `!important` on all properties. You can also pass an array to specify properties on which use important\n * @property {Boolean} [stylable=true] Indicates if the rule is stylable from the editor\n *\n * [Device]: device.html\n * [State]: state.html\n * [Component]: component.html\n */\nexport default class CssRule extends StyleableModel {\n defaults() {\n return {\n selectors: [],\n selectorsAdd: '',\n style: {},\n mediaText: '',\n state: '',\n stylable: true,\n atRuleType: '',\n singleAtRule: false,\n important: false,\n group: '',\n // If true, won't be stored in JSON or showed in CSS\n shallow: false,\n _undo: true,\n };\n }\n\n initialize(c, opt = {}) {\n this.config = c || {};\n this.opt = opt;\n this.em = opt.em;\n this.ensureSelectors();\n this.on('change', this.__onChange);\n }\n\n __onChange(m, opts) {\n const { em } = this;\n const changed = this.changedAttributes();\n !isEmptyObj(changed) && em && em.changesUp(opts);\n }\n\n clone() {\n const opts = { ...this.opt };\n const attr = { ...this.attributes };\n attr.selectors = this.get('selectors').map(s => s.clone());\n return new this.constructor(attr, opts);\n }\n\n ensureSelectors(m, c, opts) {\n const { em } = this;\n const sm = em && em.get('SelectorManager');\n const toListen = [this, 'change:selectors', this.ensureSelectors];\n let sels = this.getSelectors();\n this.stopListening(...toListen);\n\n if (sels.models) {\n sels = [...sels.models];\n }\n\n sels = isString(sels) ? [sels] : sels;\n\n if (Array.isArray(sels)) {\n const res = sels.filter(i => i).map(i => (sm ? sm.add(i) : i));\n sels = new Selectors(res);\n }\n\n this.set('selectors', sels, opts);\n this.listenTo(...toListen);\n }\n\n /**\n * Returns the at-rule statement when exists, eg. `@media (...)`, `@keyframes`\n * @returns {String}\n * @example\n * const cssRule = editor.Css.setRule('.class1', { color: 'red' }, {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)'\n * });\n * cssRule.getAtRule(); // \"@media (min-width: 500px)\"\n */\n getAtRule() {\n const type = this.get('atRuleType');\n const condition = this.get('mediaText');\n // Avoid breaks with the last condition\n const typeStr = type ? `@${type}` : condition ? '@media' : '';\n\n return typeStr + (condition && typeStr ? ` ${condition}` : '');\n }\n\n /**\n * Return selectors of the rule as a string\n * @param {Object} [opts] Options\n * @param {Boolean} [opts.skipState] Skip state from the result\n * @returns {String}\n * @example\n * const cssRule = editor.Css.setRule('.class1:hover', { color: 'red' });\n * cssRule.selectorsToString(); // \".class1:hover\"\n * cssRule.selectorsToString({ skipState: true }); // \".class1\"\n */\n selectorsToString(opts = {}) {\n const result = [];\n const state = this.get('state');\n const addSelector = this.get('selectorsAdd');\n const selOpts = {\n escape: str => (CSS && CSS.escape ? CSS.escape(str) : str),\n };\n const selectors = this.get('selectors').getFullString(0, selOpts);\n const stateStr = state && !opts.skipState ? `:${state}` : '';\n selectors && result.push(`${selectors}${stateStr}`);\n addSelector && !opts.skipAdd && result.push(addSelector);\n return result.join(', ');\n }\n\n /**\n * Get declaration block (without the at-rule statement)\n * @param {Object} [opts={}] Options (same as in `selectorsToString`)\n * @returns {String}\n * @example\n * const cssRule = editor.Css.setRule('.class1', { color: 'red' }, {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)'\n * });\n * cssRule.getDeclaration() // \".class1{color:red;}\"\n */\n getDeclaration(opts = {}) {\n let result = '';\n const { important } = this.attributes;\n const selectors = this.selectorsToString(opts);\n const style = this.styleToString({ important, ...opts });\n const singleAtRule = this.get('singleAtRule');\n\n if ((selectors || singleAtRule) && (style || opts.allowEmpty)) {\n result = singleAtRule ? style : `${selectors}{${style}}`;\n }\n\n return result;\n }\n\n /**\n * Get the Device the rule is related to.\n * @returns {[Device]|null}\n * @example\n * const device = rule.getDevice();\n * console.log(device?.getName());\n */\n getDevice() {\n const { em } = this;\n const { atRuleType, mediaText } = this.attributes;\n const devices = em?.get('DeviceManager').getDevices() || [];\n const deviceDefault = devices.filter(d => d.getWidthMedia() === '')[0];\n if (atRuleType !== 'media' || !mediaText) {\n return deviceDefault || null;\n }\n return devices.filter(d => d.getWidthMedia() === getMediaLength(mediaText))[0] || null;\n }\n\n /**\n * Get the State the rule is related to.\n * @returns {[State]|null}\n * @example\n * const state = rule.getState();\n * console.log(state?.getLabel());\n */\n getState() {\n const { em } = this;\n const stateValue = this.get('state');\n const states = em.get('SelectorManager').getStates() || [];\n return states.filter(s => s.getName() === stateValue)[0] || null;\n }\n\n /**\n * Returns the related Component (valid only for component-specific rules).\n * @returns {[Component]|null}\n * @example\n * const cmp = rule.getComponent();\n * console.log(cmp?.toHTML());\n */\n getComponent() {\n const sel = this.getSelectors();\n const sngl = sel.length == 1 && sel.at(0);\n const cmpId = sngl && sngl.isId() && sngl.get('name');\n return (cmpId && this.em?.get('DomComponents').getById(cmpId)) || null;\n }\n\n /**\n * Return the CSS string of the rule\n * @param {Object} [opts={}] Options (same as in `getDeclaration`)\n * @return {String} CSS string\n * @example\n * const cssRule = editor.Css.setRule('.class1', { color: 'red' }, {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)'\n * });\n * cssRule.toCSS() // \"@media (min-width: 500px){.class1{color:red;}}\"\n */\n toCSS(opts = {}) {\n let result = '';\n const atRule = this.getAtRule();\n const block = this.getDeclaration(opts);\n if (block || opts.allowEmpty) {\n result = block;\n }\n\n if (atRule && result) {\n result = `${atRule}{${result}}`;\n }\n\n return result;\n }\n\n toJSON(...args) {\n const obj = Model.prototype.toJSON.apply(this, args);\n\n if (this.em.getConfig().avoidDefaults) {\n const defaults = this.defaults();\n\n forEach(defaults, (value, key) => {\n if (obj[key] === value) {\n delete obj[key];\n }\n });\n\n // Delete the property used for partial updates\n delete obj.style.__p;\n\n if (isEmpty(obj.selectors)) delete obj.selectors;\n if (isEmpty(obj.style)) delete obj.style;\n }\n\n return obj;\n }\n\n /**\n * Compare the actual model with parameters\n * @param {Object} selectors Collection of selectors\n * @param {String} state Css rule state\n * @param {String} width For which device this style is oriented\n * @param {Object} ruleProps Other rule props\n * @returns {Boolean}\n * @private\n */\n compare(selectors, state, width, ruleProps = {}) {\n const st = state || '';\n const wd = width || '';\n const selAdd = ruleProps.selectorsAdd || '';\n let atRule = ruleProps.atRuleType || '';\n const sel = !isArray(selectors) && !selectors.models ? [selectors] : selectors.models || selectors;\n\n // Fix atRuleType in case is not specified with width\n if (wd && !atRule) atRule = 'media';\n\n const a1 = sel.map(model => model.getFullName());\n const a2 = this.get('selectors').map(model => model.getFullName());\n\n // Check selectors\n const a1S = a1.slice().sort();\n const a2S = a2.slice().sort();\n if (a1.length !== a2.length || !a1S.every((v, i) => v === a2S[i])) {\n return false;\n }\n\n // Check other properties\n if (\n this.get('state') !== st ||\n this.get('mediaText') !== wd ||\n this.get('selectorsAdd') !== selAdd ||\n this.get('atRuleType') !== atRule\n ) {\n return false;\n }\n\n return true;\n }\n}\n","import { Collection } from '../../common';\nimport CssRule from './CssRule';\n\nexport default class CssRules extends Collection {\n initialize(models, opt) {\n // Inject editor\n if (opt && opt.em) this.editor = opt.em;\n\n // This will put the listener post CssComposer.postLoad\n setTimeout(() => {\n this.on('remove', this.onRemove);\n this.on('add', this.onAdd);\n });\n }\n\n toJSON(opts) {\n const result = Collection.prototype.toJSON.call(this, opts);\n return result.filter(rule => rule.style && !rule.shallow);\n }\n\n onAdd(model, c, o) {\n model.ensureSelectors(model, c, o); // required for undo\n }\n\n onRemove(removed) {\n const em = this.editor;\n em.stopListening(removed);\n em.get('UndoManager').remove(removed);\n }\n\n add(models, opt = {}) {\n if (typeof models === 'string') {\n models = this.editor.get('Parser').parseCss(models);\n }\n opt.em = this.editor;\n return Collection.prototype.add.apply(this, [models, opt]);\n }\n}\n\nCssRules.prototype.model = CssRule;\n","/**\n * This module manages CSS rules in the canvas.\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/css_composer/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * cssComposer: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const css = editor.Css;\n * ```\n *\n * * [addRules](#addrules)\n * * [setRule](#setrule)\n * * [getRule](#getrule)\n * * [getRules](#getrules)\n * * [remove](#remove)\n * * [clear](#clear)\n *\n * [CssRule]: css_rule.html\n *\n * @module Css\n */\n\nimport { isArray, isString, isUndefined } from 'underscore';\nimport { isObject } from '../utils/mixins';\nimport Module from '../abstract/moduleLegacy';\nimport Selectors from '../selector_manager/model/Selectors';\nimport Selector from '../selector_manager/model/Selector';\nimport defaults from './config/config';\nimport CssRule from './model/CssRule';\nimport CssRules from './model/CssRules';\nimport CssRulesView from './view/CssRulesView';\n\nexport default class CssComposer extends Module {\n Selectors = Selectors;\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name = 'CssComposer';\n\n storageKey = 'styles';\n\n getConfig() {\n return this.c;\n }\n\n /**\n * Initializes module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config) {\n this.c = config || {};\n for (var name in defaults) {\n if (!(name in this.c)) this.c[name] = defaults[name];\n }\n\n var ppfx = this.c.pStylePrefix;\n if (ppfx) this.c.stylePrefix = ppfx + this.c.stylePrefix;\n\n var elStyle = (this.c.em && this.c.em.config.style) || '';\n this.c.rules = elStyle || this.c.rules;\n\n this.em = this.c.em;\n this.rules = new CssRules([], this.c);\n return this;\n }\n\n /**\n * On load callback\n * @private\n */\n onLoad() {\n this.rules.add(this.c.rules, { silent: 1 });\n }\n\n /**\n * Do stuff after load\n * @param {Editor} em\n * @private\n */\n postLoad() {\n const um = this.em?.get('UndoManager');\n um && um.add(this.getAll());\n }\n\n store() {\n return this.getProjectData();\n }\n\n load(data) {\n return this.loadProjectData(data);\n }\n\n /**\n * Add new rule to the collection, if not yet exists with the same selectors\n * @param {Array} selectors Array of selectors\n * @param {String} state Css rule state\n * @param {String} width For which device this style is oriented\n * @param {Object} props Other props for the rule\n * @param {Object} opts Options for the add of new rule\n * @return {Model}\n * @private\n * @example\n * var sm = editor.SelectorManager;\n * var sel1 = sm.add('myClass1');\n * var sel2 = sm.add('myClass2');\n * var rule = cssComposer.add([sel1, sel2], 'hover');\n * rule.set('style', {\n * width: '100px',\n * color: '#fff',\n * });\n * */\n add(selectors, state, width, opts = {}, addOpts = {}) {\n var s = state || '';\n var w = width || '';\n var opt = { ...opts };\n var rule = this.get(selectors, s, w, opt);\n\n // do not create rules that were found before\n // unless this is a single at-rule, for which multiple declarations\n // make sense (e.g. multiple `@font-type`s)\n if (rule && rule.config && !rule.config.singleAtRule) {\n return rule;\n } else {\n opt.state = s;\n opt.mediaText = w;\n opt.selectors = [];\n w && (opt.atRuleType = 'media');\n rule = new CssRule(opt, this.c);\n rule.get('selectors').add(selectors, addOpts);\n this.rules.add(rule, addOpts);\n return rule;\n }\n }\n\n /**\n * Get the rule\n * @param {String|Array} selectors Array of selectors or selector string, eg `.myClass1.myClass2`\n * @param {String} state Css rule state, eg. 'hover'\n * @param {String} width Media rule value, eg. '(max-width: 992px)'\n * @param {Object} ruleProps Other rule props\n * @return {Model|null}\n * @private\n * @example\n * const sm = editor.SelectorManager;\n * const sel1 = sm.add('myClass1');\n * const sel2 = sm.add('myClass2');\n * const rule = cssComposer.get([sel1, sel2], 'hover', '(max-width: 992px)');\n * // Update the style\n * rule.set('style', {\n * width: '300px',\n * color: '#000',\n * });\n * */\n get(selectors, state, width, ruleProps) {\n let slc = selectors;\n if (isString(selectors)) {\n const sm = this.em.get('SelectorManager');\n const singleSel = selectors.split(',')[0].trim();\n const node = this.em.get('Parser').parserCss.checkNode({ selectors: singleSel })[0];\n slc = sm.get(node.selectors);\n }\n return this.rules.find(rule => rule.compare(slc, state, width, ruleProps)) || null;\n }\n\n getAll() {\n return this.rules;\n }\n\n /**\n * Add a raw collection of rule objects\n * This method overrides styles, in case, of already defined rule\n * @param {String|Array} data CSS string or an array of rule objects, eg. [{selectors: ['class1'], style: {....}}, ..]\n * @param {Object} opts Options\n * @param {Object} props Additional properties to add on rules\n * @return {Array}\n * @private\n */\n addCollection(data, opts = {}, props = {}) {\n const result = [];\n\n if (isString(data)) {\n data = this.em.get('Parser').parseCss(data);\n }\n\n const d = data instanceof Array ? data : [data];\n\n for (var i = 0, l = d.length; i < l; i++) {\n var rule = d[i] || {};\n if (!rule.selectors) continue;\n var sm = this.em?.get('SelectorManager');\n if (!sm) console.warn('Selector Manager not found');\n var sl = rule.selectors;\n var sels = sl instanceof Array ? sl : [sl];\n var newSels = [];\n\n for (var j = 0, le = sels.length; j < le; j++) {\n var selec = sm.add(sels[j]);\n newSels.push(selec);\n }\n\n var modelExists = this.get(newSels, rule.state, rule.mediaText, rule);\n var model = this.add(newSels, rule.state, rule.mediaText, rule, opts);\n var updateStyle = !modelExists || !opts.avoidUpdateStyle;\n const style = rule.style || {};\n\n isObject(props) && model.set(props, opts);\n\n if (updateStyle) {\n let styleUpdate = opts.extend ? { ...model.get('style'), ...style } : style;\n model.set('style', styleUpdate, opts);\n }\n\n result.push(model);\n }\n\n return result;\n }\n\n /**\n * Add CssRules via CSS string.\n * @param {String} css CSS string of rules to add.\n * @returns {Array<[CssRule]>} Array of rules\n * @example\n * const addedRules = css.addRules('.my-cls{ color: red } @media (max-width: 992px) { .my-cls{ color: darkred } }');\n * // Check rules\n * console.log(addedRules.map(rule => rule.toCSS()));\n */\n addRules(css) {\n return this.addCollection(css);\n }\n\n /**\n * Add/update the CssRule.\n * @param {String} selectors Selector string, eg. `.myclass`\n * @param {Object} style Style properties and values\n * @param {Object} [opts={}] Additional properties\n * @param {String} [opts.atRuleType=''] At-rule type, eg. `media`\n * @param {String} [opts.atRuleParams=''] At-rule parameters, eg. `(min-width: 500px)`\n * @returns {[CssRule]} The new/updated CssRule\n * @example\n * // Simple class-based rule\n * const rule = css.setRule('.class1.class2', { color: 'red' });\n * console.log(rule.toCSS()) // output: .class1.class2 { color: red }\n * // With state and other mixed selector\n * const rule = css.setRule('.class1.class2:hover, div#myid', { color: 'red' });\n * // output: .class1.class2:hover, div#myid { color: red }\n * // With media\n * const rule = css.setRule('.class1:hover', { color: 'red' }, {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)',\n * });\n * // output: @media (min-width: 500px) { .class1:hover { color: red } }\n */\n setRule(selectors, style, opts = {}) {\n const { atRuleType, atRuleParams } = opts;\n const node = this.em.get('Parser').parserCss.checkNode({\n selectors,\n style,\n })[0];\n const { state, selectorsAdd } = node;\n const sm = this.em.get('SelectorManager');\n const selector = sm.add(node.selectors);\n const rule = this.add(selector, state, atRuleParams, {\n selectorsAdd,\n atRule: atRuleType,\n });\n rule.setStyle(style, opts);\n return rule;\n }\n\n /**\n * Get the CssRule.\n * @param {String} selectors Selector string, eg. `.myclass:hover`\n * @param {Object} [opts={}] Additional properties\n * @param {String} [opts.atRuleType=''] At-rule type, eg. `media`\n * @param {String} [opts.atRuleParams=''] At-rule parameters, eg. '(min-width: 500px)'\n * @returns {[CssRule]}\n * @example\n * const rule = css.getRule('.myclass1:hover');\n * const rule2 = css.getRule('.myclass1:hover, div#myid');\n * const rule3 = css.getRule('.myclass1', {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)',\n * });\n */\n getRule(selectors, opts = {}) {\n const sm = this.em.get('SelectorManager');\n const node = this.em.get('Parser').parserCss.checkNode({ selectors })[0];\n const selector = sm.get(node.selectors);\n const { state, selectorsAdd } = node;\n const { atRuleType, atRuleParams } = opts;\n return (\n selector &&\n this.get(selector, state, atRuleParams, {\n selectorsAdd,\n atRule: atRuleType,\n })\n );\n }\n\n /**\n * Get all rules or filtered by a matching selector.\n * @param {String} [selector=''] Selector, eg. `.myclass`\n * @returns {Array<[CssRule]>}\n * @example\n * // Take all the component specific rules\n * const id = someComponent.getId();\n * const rules = css.getRules(`#${id}`);\n * console.log(rules.map(rule => rule.toCSS()))\n * // All rules in the project\n * console.log(css.getRules())\n */\n getRules(selector) {\n const rules = this.getAll();\n if (!selector) return [...rules.models];\n const optRuleSel = { sort: true };\n const sels = isString(selector) ? selector.split(',').map(s => s.trim()) : selector;\n const result = rules.filter(r => sels.indexOf(r.getSelectors().getFullString(null, optRuleSel)) >= 0);\n return result;\n }\n\n /**\n * Add/update the CSS rule with id selector\n * @param {string} name Id selector name, eg. 'my-id'\n * @param {Object} style Style properties and values\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule} The new/updated rule\n * @private\n * @example\n * const rule = css.setIdRule('myid', { color: 'red' });\n * const ruleHover = css.setIdRule('myid', { color: 'blue' }, { state: 'hover' });\n * // This will add current CSS:\n * // #myid { color: red }\n * // #myid:hover { color: blue }\n */\n setIdRule(name, style = {}, opts = {}) {\n const { addOpts = {}, mediaText } = opts;\n const state = opts.state || '';\n const media = !isUndefined(mediaText) ? mediaText : this.em.getCurrentMedia();\n const sm = this.em.get('SelectorManager');\n const selector = sm.add({ name, type: Selector.TYPE_ID }, addOpts);\n const rule = this.add(selector, state, media, {}, addOpts);\n rule.setStyle(style, { ...opts, ...addOpts });\n return rule;\n }\n\n /**\n * Get the CSS rule by id selector\n * @param {string} name Id selector name, eg. 'my-id'\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule}\n * @private\n * @example\n * const rule = css.getIdRule('myid');\n * const ruleHover = css.setIdRule('myid', { state: 'hover' });\n */\n getIdRule(name, opts = {}) {\n const { mediaText } = opts;\n const state = opts.state || '';\n const media = !isUndefined(mediaText) ? mediaText : this.em.getCurrentMedia();\n const selector = this.em.get('SelectorManager').get(name, Selector.TYPE_ID);\n return selector && this.get(selector, state, media);\n }\n\n /**\n * Add/update the CSS rule with class selector\n * @param {string} name Class selector name, eg. 'my-class'\n * @param {Object} style Style properties and values\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule} The new/updated rule\n * @private\n * @example\n * const rule = css.setClassRule('myclass', { color: 'red' });\n * const ruleHover = css.setClassRule('myclass', { color: 'blue' }, { state: 'hover' });\n * // This will add current CSS:\n * // .myclass { color: red }\n * // .myclass:hover { color: blue }\n */\n setClassRule(name, style = {}, opts = {}) {\n const state = opts.state || '';\n const media = opts.mediaText || this.em.getCurrentMedia();\n const sm = this.em.get('SelectorManager');\n const selector = sm.add({ name, type: Selector.TYPE_CLASS });\n const rule = this.add(selector, state, media);\n rule.setStyle(style, opts);\n return rule;\n }\n\n /**\n * Get the CSS rule by class selector\n * @param {string} name Class selector name, eg. 'my-class'\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule}\n * @private\n * @example\n * const rule = css.getClassRule('myclass');\n * const ruleHover = css.getClassRule('myclass', { state: 'hover' });\n */\n getClassRule(name, opts = {}) {\n const state = opts.state || '';\n const media = opts.mediaText || this.em.getCurrentMedia();\n const selector = this.em.get('SelectorManager').get(name, Selector.TYPE_CLASS);\n return selector && this.get(selector, state, media);\n }\n\n /**\n * Remove rule, by CssRule or matching selector (eg. the selector will match also at-rules like `@media`)\n * @param {String|[CssRule]|Array<[CssRule]>} rule CssRule or matching selector.\n * @return {Array<[CssRule]>} Removed rules\n * @example\n * // Remove by CssRule\n * const toRemove = css.getRules('.my-cls');\n * css.remove(toRemove);\n * // Remove by selector\n * css.remove('.my-cls-2');\n */\n remove(rule, opts) {\n const toRemove = isString(rule) ? this.getRules(rule) : rule;\n const result = this.getAll().remove(toRemove, opts);\n return isArray(result) ? result : [result];\n }\n\n /**\n * Remove all rules\n * @return {this}\n */\n clear(opts = {}) {\n this.getAll().reset(null, opts);\n return this;\n }\n\n getComponentRules(cmp, opts = {}) {\n let { state, mediaText, current } = opts;\n if (current) {\n state = this.em.get('state') || '';\n mediaText = this.em.getCurrentMedia();\n }\n const id = cmp.getId();\n const rules = this.getAll().filter(r => {\n if (!isUndefined(state) && r.get('state') !== state) return;\n if (!isUndefined(mediaText) && r.get('mediaText') !== mediaText) return;\n return r.getSelectorsString() === `#${id}`;\n });\n return rules;\n }\n\n /**\n * Render the block of CSS rules\n * @return {HTMLElement}\n * @private\n */\n render() {\n this.rulesView?.remove();\n this.rulesView = new CssRulesView({\n collection: this.rules,\n config: this.c,\n });\n return this.rulesView.render().el;\n }\n\n destroy() {\n this.rules.reset();\n this.rules.stopListening();\n this.rulesView?.remove();\n [this.em, this.rules, this.rulesView].forEach(i => (i = null));\n this.c = {};\n }\n}\n","import { View } from '../../common';\n\nexport default class CssRuleView extends View {\n tagName() {\n return 'style';\n }\n\n initialize(o = {}) {\n this.config = o.config || {};\n const { model } = this;\n this.listenTo(model, 'change', this.render);\n this.listenTo(model, 'destroy remove', this.remove);\n this.listenTo(model.get('selectors'), 'change', this.render);\n }\n\n render() {\n const { model, el } = this;\n const important = model.get('important');\n el.innerHTML = model.toCSS({ important });\n return this;\n }\n}\n","import CssRuleView from './CssRuleView';\n\nexport default class CssGroupRuleView extends CssRuleView {\n _createElement() {\n return document.createTextNode('');\n }\n\n render() {\n const model = this.model;\n const important = model.get('important');\n this.el.textContent = model.getDeclaration({ important });\n return this;\n }\n}\n","import { View } from '../../common';\nimport { createEl } from '../../utils/dom';\nimport CssRuleView from './CssRuleView';\nimport CssGroupRuleView from './CssGroupRuleView';\n\nconst getBlockId = (pfx, order) => `${pfx}${order ? `-${parseFloat(order)}` : ''}`;\n\nexport default class CssRulesView extends View {\n initialize(o) {\n const config = o.config || {};\n this.atRules = {};\n this.config = config;\n this.em = config.em;\n this.pfx = config.stylePrefix || '';\n this.className = this.pfx + 'rules';\n const coll = this.collection;\n this.listenTo(coll, 'add', this.addTo);\n this.listenTo(coll, 'reset', this.render);\n }\n\n /**\n * Add to collection\n * @param {Object} model\n * @private\n * */\n addTo(model) {\n this.addToCollection(model);\n }\n\n /**\n * Add new object to collection\n * @param {Object} model\n * @param {Object} fragmentEl\n * @return {Object}\n * @private\n * */\n addToCollection(model, fragmentEl) {\n // If the render is not yet started\n if (!this.renderStarted) {\n return;\n }\n\n const fragment = fragmentEl || null;\n const { config } = this;\n const opts = { model, config };\n let rendered, view;\n\n // I have to render keyframes of the same name together\n // Unfortunately at the moment I didn't find the way of appending them\n // if not staticly, via appendData\n if (model.get('atRuleType') === 'keyframes') {\n const atRule = model.getAtRule();\n let atRuleEl = this.atRules[atRule];\n\n if (!atRuleEl) {\n const styleEl = document.createElement('style');\n atRuleEl = document.createTextNode('');\n styleEl.appendChild(document.createTextNode(`${atRule}{`));\n styleEl.appendChild(atRuleEl);\n styleEl.appendChild(document.createTextNode('}'));\n this.atRules[atRule] = atRuleEl;\n rendered = styleEl;\n }\n\n view = new CssGroupRuleView(opts);\n atRuleEl.appendData(view.render().el.textContent);\n } else {\n view = new CssRuleView(opts);\n rendered = view.render().el;\n }\n\n const clsName = this.className;\n const mediaText = model.get('mediaText');\n const defaultBlockId = getBlockId(clsName);\n let blockId = defaultBlockId;\n\n // If the rule contains a media query it might have a different container\n // for it (eg. rules created with Device Manager)\n if (mediaText) {\n blockId = getBlockId(clsName, this.getMediaWidth(mediaText));\n }\n\n if (rendered) {\n const container = fragment || this.el;\n let contRules;\n\n // Try to find a specific container for the rule (if it\n // containes a media query), otherwise get the default one\n try {\n contRules = container.querySelector(`#${blockId}`);\n } catch (e) {}\n\n if (!contRules) {\n contRules = container.querySelector(`#${defaultBlockId}`);\n }\n\n contRules.appendChild(rendered);\n }\n\n return rendered;\n }\n\n getMediaWidth(mediaText) {\n return mediaText && mediaText.replace(`(${this.em.getConfig().mediaCondition}: `, '').replace(')', '');\n }\n\n render() {\n this.renderStarted = 1;\n this.atRules = {};\n const { em, $el, className, collection } = this;\n const frag = document.createDocumentFragment();\n $el.empty();\n\n // Create devices related DOM structure, ensure also to have a default container\n const prs = em.get('DeviceManager').getAll().pluck('priority');\n prs.every(pr => pr) && prs.unshift(0);\n prs.forEach(pr => frag.appendChild(createEl('div', { id: getBlockId(className, pr) })));\n\n collection.each(model => this.addToCollection(model, frag));\n $el.append(frag);\n $el.attr('class', className);\n return this;\n }\n}\n","export default {\n // The device `id` to select on start, if not indicated, the first available from `devices` will be used.\n default: null,\n\n // Default devices\n devices: [\n {\n id: 'desktop',\n name: 'Desktop',\n width: '',\n },\n {\n id: 'tablet',\n name: 'Tablet',\n width: '770px',\n widthMedia: '992px',\n },\n {\n id: 'mobileLandscape',\n name: 'Mobile landscape',\n width: '568px',\n widthMedia: '768px',\n },\n {\n id: 'mobilePortrait',\n name: 'Mobile portrait',\n width: '320px',\n widthMedia: '480px',\n },\n ],\n};\n","import { Model } from '../../common';\n\n/**\n * @typedef Device\n * @property {String} [name=''] Device type, eg. `Mobile`\n * @property {String} [width] Width to set for the editor iframe, eg. '900px'\n * @property {String} [height=''] Height to set for the editor iframe, eg. '600px'\n * @property {String} [widthMedia=''] The width which will be used in media queries, If empty the width will be used\n * @property {Number} [priority=null] Setup the order of media queries\n */\nexport default class Device extends Model {\n defaults() {\n return {\n name: '',\n width: null,\n height: '',\n widthMedia: null,\n priority: null,\n };\n }\n\n initialize() {\n this.get('widthMedia') === null && this.set('widthMedia', this.get('width'));\n this.get('width') === null && this.set('width', this.get('widthMedia'));\n !this.get('priority') && this.set('priority', parseFloat(this.get('widthMedia')) || 0);\n const toCheck = ['width', 'height', 'widthMedia'];\n toCheck.forEach(prop => this.checkUnit(prop));\n }\n\n checkUnit(prop) {\n const pr = this.get(prop) || '';\n const noUnit = (parseFloat(pr) || 0).toString() === pr.toString();\n noUnit && this.set(prop, `${pr}px`);\n }\n\n getName() {\n return this.get('name') || this.get('id');\n }\n\n getWidthMedia() {\n return this.get('widthMedia') || '';\n }\n}\n","import { Collection } from '../../common';\nimport Device from './Device';\n\nexport default class Devices extends Collection {\n comparator(left, right) {\n const max = Number.MAX_VALUE;\n return (right.get('priority') || max) - (left.get('priority') || max);\n }\n\n getSorted() {\n return this.sort();\n }\n}\n\nDevices.prototype.model = Device;\n","import { View } from '../../common';\nimport html from '../../utils/html';\n\nexport default class DevicesView extends View {\n template({ ppfx, label }) {\n return html`\n
${label}
\n
\n \n \n \n
\n
\n
\n
\n \n `;\n }\n\n events() {\n return {\n change: 'updateDevice',\n };\n }\n\n initialize(o) {\n this.config = o.config || {};\n this.em = this.config.em;\n this.ppfx = this.config.pStylePrefix || '';\n this.events['click .' + this.ppfx + 'add-trasp'] = this.startAdd;\n this.listenTo(this.em, 'change:device', this.updateSelect);\n this.delegateEvents();\n }\n\n /**\n * Start adding new device\n * @return {[type]} [description]\n * @private\n */\n startAdd() {}\n\n /**\n * Update device of the editor\n * @private\n */\n updateDevice() {\n var em = this.em;\n if (em) {\n var devEl = this.devicesEl;\n var val = devEl ? devEl.val() : '';\n em.set('device', val);\n }\n }\n\n /**\n * Update select value on device update\n * @private\n */\n updateSelect() {\n var em = this.em;\n var devEl = this.devicesEl;\n if (em && em.getDeviceModel && devEl) {\n var device = em.getDeviceModel();\n var name = device ? device.get('id') : '';\n devEl.val(name);\n }\n }\n\n /**\n * Return devices options\n * @return {string} String of options\n * @private\n */\n getOptions() {\n const { collection, em } = this;\n let result = '';\n\n collection.each(device => {\n const { name, id } = device.attributes;\n const label = (em && em.t && em.t(`deviceManager.devices.${id}`)) || name;\n result += ``;\n });\n\n return result;\n }\n\n render() {\n const { em, ppfx, $el, el } = this;\n const label = em && em.t && em.t('deviceManager.device');\n $el.html(this.template({ ppfx, label }));\n this.devicesEl = $el.find(`.${ppfx}devices`);\n this.devicesEl.append(this.getOptions());\n this.devicesEl.val(em.get('device'));\n el.className = `${ppfx}devices-c`;\n return this;\n }\n}\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/device_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * deviceManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const deviceManager = editor.Devices;\n * ```\n * ## Available Events\n * * `device:add` - Added new device. The [Device] is passed as an argument to the callback\n * * `device:remove` - Device removed. The [Device] is passed as an argument to the callback\n * * `device:select` - New device selected. The newly selected [Device] and the previous one, are passed as arguments to the callback\n * * `device:update` - Device updated. The updated [Device] and the object containing changes are passed as arguments to the callback\n * * `device` - Catch-all event for all the events mentioned above. An object containing all the available data about the triggered event is passed as an argument to the callback\n *\n * ## Methods\n * * [add](#add)\n * * [get](#get)\n * * [getDevices](#getdevices)\n * * [remove](#remove)\n * * [select](#select)\n * * [getSelected](#getselected)\n *\n * [Device]: device.html\n *\n * @module Devices\n */\nimport { isString } from 'underscore';\nimport Module from '../abstract/moduleLegacy';\nimport defaults from './config/config';\nimport Device from './model/Device';\nimport Devices from './model/Devices';\nimport DevicesView from './view/DevicesView';\n\nexport const evAll = 'device';\nexport const evPfx = `${evAll}:`;\nexport const evSelect = `${evPfx}select`;\nexport const evSelectBefore = `${evSelect}:before`;\nexport const evUpdate = `${evPfx}update`;\nexport const evAdd = `${evPfx}add`;\nexport const evAddBefore = `${evAdd}:before`;\nexport const evRemove = `${evPfx}remove`;\nexport const evRemoveBefore = `${evRemove}:before`;\nconst chnSel = 'change:device';\n\nexport default class DeviceManager extends Module {\n name = 'DeviceManager';\n\n Device = Device;\n\n Devices = Devices;\n\n events = {\n all: evAll,\n select: evSelect,\n // selectBefore: evSelectBefore,\n update: evUpdate,\n add: evAdd,\n // addBefore: evAddBefore,\n remove: evRemove,\n removeBefore: evRemoveBefore,\n };\n\n init(config = {}) {\n this.c = { ...defaults, ...config };\n const { em } = this.c;\n\n this.devices = new Devices();\n this.c.devices.forEach(dv => this.add(dv));\n this.em = em;\n this.all = this.devices;\n this.select(this.c.default || this.devices.at(0));\n this.__initListen();\n em.on(chnSel, this._onSelect, this);\n\n return this;\n }\n\n _onSelect(m, deviceId, opts) {\n const { em, events } = this;\n const prevId = m.previous('device');\n const newDevice = this.get(deviceId);\n const ev = events.select;\n em.trigger(ev, newDevice, this.get(prevId));\n this.__catchAllEvent(ev, newDevice, opts);\n }\n\n /**\n * Add new device\n * @param {Object} props Device properties\n * @returns {[Device]} Added device\n * @example\n * const device1 = deviceManager.add({\n * // Without an explicit ID, the `name` will be taken. In case of missing `name`, a random ID will be created.\n * id: 'tablet',\n * name: 'Tablet',\n * width: '900px', // This width will be applied on the canvas frame and for the CSS media\n * });\n * const device2 = deviceManager.add({\n * id: 'tablet2',\n * name: 'Tablet 2',\n * width: '800px', // This width will be applied on the canvas frame\n * widthMedia: '810px', // This width that will be used for the CSS media\n * height: '600px', // Height will be applied on the canvas frame\n * });\n */\n add(props, options = {}) {\n let result;\n let opts = options;\n\n // Support old API\n if (isString(props)) {\n const width = options;\n opts = arguments[2] || {};\n result = {\n ...opts,\n id: props,\n name: opts.name || props,\n width,\n };\n } else {\n result = props;\n }\n\n if (!result.id) {\n result.id = result.name || this._createId();\n }\n\n return this.devices.add(result, opts);\n }\n\n /**\n * Return device by ID\n * @param {String} id ID of the device\n * @returns {[Device]|null}\n * @example\n * const device = deviceManager.get('Tablet');\n * console.log(JSON.stringify(device));\n * // {name: 'Tablet', width: '900px'}\n */\n get(id) {\n // Support old API\n const byName = this.getAll().filter(d => d.get('name') === id)[0];\n return byName || this.devices.get(id) || null;\n }\n\n /**\n * Remove device\n * @param {String|[Device]} device Device or device id\n * @returns {[Device]} Removed device\n * @example\n * const removed = deviceManager.remove('device-id');\n * // or by passing the Device\n * const device = deviceManager.get('device-id');\n * deviceManager.remove(device);\n */\n remove(device, opts = {}) {\n return this.__remove(device, opts);\n }\n\n /**\n * Return all devices\n * @returns {Array<[Device]>}\n * @example\n * const devices = deviceManager.getDevices();\n * console.log(JSON.stringify(devices));\n * // [{name: 'Desktop', width: ''}, ...]\n */\n getDevices() {\n return this.devices.models;\n }\n\n /**\n * Change the selected device. This will update the frame in the canvas\n * @param {String|[Device]} device Device or device id\n * @example\n * deviceManager.select('some-id');\n * // or by passing the page\n * const device = deviceManager.get('some-id');\n * deviceManager.select(device);\n */\n select(device, opts = {}) {\n const md = isString(device) ? this.get(device) : device;\n md && this.em.set('device', md.get('id'), opts);\n return this;\n }\n\n /**\n * Get the selected device\n * @returns {[Device]}\n * @example\n * const selected = deviceManager.getSelected();\n */\n getSelected() {\n return this.get(this.em.get('device'));\n }\n\n getAll() {\n return this.devices;\n }\n\n render() {\n this.view?.remove();\n this.view = new DevicesView({\n collection: this.devices,\n config: this.c,\n });\n return this.view.render().el;\n }\n\n destroy() {\n this.devices.stopListening();\n this.devices.reset();\n this.view?.remove();\n [this.devices, this.view].forEach(i => (i = null));\n this.c = {};\n }\n}\n","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","import { isUndefined } from 'underscore';\nimport { Model } from '../../common';\n\n/**\n * @typedef Trait\n * @property {String} id Trait id, eg. `my-trait-id`.\n * @property {String} type Trait type, defines how the trait should rendered. Possible values: `text` (default), `number`, `select`, `checkbox`, `color`, `button`\n * @property {String} label The trait label to show for the rendered trait.\n * @property {String} name The name of the trait used as a key for the attribute/property. By default, the name is used as attribute name or property in case `changeProp` in enabled.\n * @property {Boolean} changeProp If `true` the trait value is applied on component\n *\n */\nexport default class Trait extends Model {\n initialize() {\n const { target, name, changeProp } = this.attributes;\n !this.get('id') && this.set('id', name);\n\n if (target) {\n this.target = target;\n this.unset('target');\n const targetEvent = changeProp ? `change:${name}` : `change:attributes:${name}`;\n this.listenTo(target, targetEvent, this.targetUpdated);\n }\n }\n\n /**\n * Get the trait id.\n * @returns {String}\n */\n getId() {\n return this.get('id');\n }\n\n /**\n * Get the trait type.\n * @returns {String}\n */\n getType() {\n return this.get('type');\n }\n\n /**\n * Get the trait name.\n * @returns {String}\n */\n getName() {\n return this.get('name');\n }\n\n /**\n * Get the trait label.\n * @param {Object} [opts={}] Options.\n * @param {Boolean} [opts.locale=true] Use the locale string from i18n module.\n * @returns {String}\n */\n getLabel(opts = {}) {\n const { locale = true } = opts;\n const id = this.getId();\n const name = this.get('label') || this.getName();\n return (locale && this.em?.t(`traitManager.traits.labels.${id}`)) || name;\n }\n\n /**\n * Get the trait value.\n * The value is taken from component attributes by default or from properties if the trait has the `changeProp` enabled.\n * @returns {any}\n */\n getValue() {\n return this.getTargetValue();\n }\n\n /**\n * Update the trait value.\n * The value is applied on component attributes by default or on properties if the trait has the `changeProp` enabled.\n * @param {any} value Value of the trait.\n * @param {Object} [opts={}] Options.\n * @param {Boolean} [opts.partial] If `true` the update won't be considered complete (not stored in UndoManager).\n */\n setValue(value, opts = {}) {\n const valueOpts = {};\n\n if (opts.partial) {\n valueOpts.avoidStore = true;\n }\n\n this.setTargetValue(value, valueOpts);\n\n if (opts.partial === false) {\n this.setTargetValue('');\n this.setTargetValue(value);\n }\n }\n\n props() {\n return this.attributes;\n }\n\n targetUpdated() {\n const value = this.getTargetValue();\n this.set({ value }, { fromTarget: 1 });\n this.em?.trigger('trait:update', {\n trait: this,\n component: this.target,\n });\n }\n\n getTargetValue() {\n const name = this.get('name');\n const target = this.target;\n let value;\n\n if (this.get('changeProp')) {\n value = target.get(name);\n } else {\n value = target.getAttributes()[name];\n }\n\n return !isUndefined(value) ? value : '';\n }\n\n setTargetValue(value, opts = {}) {\n const target = this.target;\n const name = this.get('name');\n if (isUndefined(value)) return;\n let valueToSet = value;\n\n if (value === 'false') {\n valueToSet = false;\n } else if (value === 'true') {\n valueToSet = true;\n }\n\n if (this.get('changeProp')) {\n target.set(name, valueToSet, opts);\n } else {\n const attrs = { ...target.get('attributes') };\n attrs[name] = valueToSet;\n target.set('attributes', attrs, opts);\n }\n }\n\n setValueFromInput(value, final = 1, opts = {}) {\n const toSet = { value };\n this.set(toSet, { ...opts, avoidStore: 1 });\n\n // Have to trigger the change\n if (final) {\n this.set('value', '', opts);\n this.set(toSet, opts);\n }\n }\n\n getInitValue() {\n const target = this.target;\n const name = this.get('name');\n let value;\n\n if (target) {\n const attrs = target.get('attributes');\n value = this.get('changeProp') ? target.get(name) : attrs[name];\n }\n\n return value || this.get('value') || this.get('default');\n }\n}\n\nTrait.prototype.defaults = {\n type: 'text',\n label: '',\n name: '',\n min: '',\n max: '',\n unit: '',\n step: 1,\n value: '',\n target: '',\n default: '',\n placeholder: '',\n changeProp: 0,\n options: [],\n};\n","import { isString, isArray } from 'underscore';\nimport { Collection } from '../../common';\nimport Trait from './Trait';\nimport TraitFactory from './TraitFactory';\n\nexport default class Traits extends Collection {\n initialize(coll, options = {}) {\n this.em = options.em;\n this.listenTo(this, 'add', this.handleAdd);\n this.listenTo(this, 'reset', this.handleReset);\n }\n\n handleReset(coll, { previousModels = [] } = {}) {\n previousModels.forEach(model => model.trigger('remove'));\n }\n\n handleAdd(model) {\n model.em = this.em;\n const target = this.target;\n\n if (target) {\n model.target = target;\n }\n }\n\n setTarget(target) {\n this.target = target;\n }\n\n add(models, opt) {\n const em = this.em;\n\n // Use TraitFactory if necessary\n if (isString(models) || isArray(models)) {\n const tm = em && em.get && em.get('TraitManager');\n const tmOpts = tm && tm.getConfig();\n const tf = TraitFactory(tmOpts);\n\n if (isString(models)) {\n models = [models];\n }\n\n for (var i = 0, len = models.length; i < len; i++) {\n const str = models[i];\n const model = isString(str) ? tf.build(str)[0] : str;\n model.target = this.target;\n models[i] = model;\n }\n }\n\n return Collection.prototype.add.apply(this, [models, opt]);\n }\n}\n\nTraits.prototype.model = Trait;\n","export default (config = {}) => ({\n /**\n * Build props object by their name\n * @param {Array|string} props Array of properties name\n * @return {Array}\n */\n build(props) {\n const objs = [];\n\n if (typeof props === 'string') props = [props];\n\n for (let i = 0; i < props.length; i++) {\n const obj = {};\n const prop = props[i];\n obj.name = prop;\n\n switch (prop) {\n case 'target':\n obj.type = 'select';\n obj.default = false;\n obj.options = config.optionsTarget;\n break;\n }\n\n objs.push(obj);\n }\n\n return objs;\n },\n});\n","import {\n isUndefined,\n isFunction,\n isArray,\n isEmpty,\n isBoolean,\n has,\n isString,\n forEach,\n result,\n bindAll,\n keys,\n} from 'underscore';\nimport { shallowDiff, capitalize, isEmptyObj, isObject, toLowerCase } from 'utils/mixins';\nimport StyleableModel from '../../domain_abstract/model/StyleableModel';\nimport { Model } from 'backbone';\nimport Components from './Components';\nimport Selector from 'selector_manager/model/Selector';\nimport Selectors from 'selector_manager/model/Selectors';\nimport Traits from 'trait_manager/model/Traits';\n\nconst escapeRegExp = str => {\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nconst avoidInline = em => em && em.getConfig().avoidInlineStyle;\n\nexport const eventDrag = 'component:drag';\nexport const keySymbols = '__symbols';\nexport const keySymbol = '__symbol';\nexport const keySymbolOvrd = '__symbol_ovrd';\nexport const keyUpdate = 'component:update';\nexport const keyUpdateInside = `${keyUpdate}-inside`;\n\n/**\n * The Component object represents a single node of our template structure, so when you update its properties the changes are\n * immediately reflected on the canvas and in the code to export (indeed, when you ask to export the code we just go through all\n * the tree of nodes).\n * An example on how to update properties:\n * ```js\n * component.set({\n * tagName: 'span',\n * attributes: { ... },\n * removable: false,\n * });\n * component.get('tagName');\n * // -> 'span'\n * ```\n *\n * [Component]: component.html\n *\n * @property {String} [type=''] Component type, eg. `text`, `image`, `video`, etc.\n * @property {String} [tagName='div'] HTML tag of the component, eg. `span`. Default: `div`\n * @property {Object} [attributes={}] Key-value object of the component's attributes, eg. `{ title: 'Hello' }` Default: `{}`\n * @property {String} [name=''] Name of the component. Will be used, for example, in Layers and badges\n * @property {Boolean} [removable=true] When `true` the component is removable from the canvas, default: `true`\n * @property {Boolean|String|Function} [draggable=true] Indicates if it's possible to drag the component inside others.\n * You can also specify a query string to indentify elements,\n * eg. `'.some-class[title=Hello], [data-gjs-type=column]'` means you can drag the component only inside elements\n * containing `some-class` class and `Hello` title, and `column` components. In the case of a function, target and destination components are passed as arguments, return a Boolean to indicate if the drag is possible. Default: `true`\n * @property {Boolean|String|Function} [droppable=true] Indicates if it's possible to drop other components inside. You can use\n * a query string as with `draggable`. In the case of a function, target and destination components are passed as arguments, return a Boolean to indicate if the drop is possible. Default: `true`\n * @property {Boolean} [badgable=true] Set to false if you don't want to see the badge (with the name) over the component. Default: `true`\n * @property {Boolean|Array} [stylable=true] True if it's possible to style the component.\n * You can also indicate an array of CSS properties which is possible to style, eg. `['color', 'width']`, all other properties\n * will be hidden from the style manager. Default: `true`\n * @property {Array} [stylable-require=[]] Indicate an array of style properties to show up which has been marked as `toRequire`. Default: `[]`\n * @property {Array} [unstylable=[]] Indicate an array of style properties which should be hidden from the style manager. Default: `[]`\n * @property {Boolean} [highlightable=true] It can be highlighted with 'dotted' borders if true. Default: `true`\n * @property {Boolean} [copyable=true] True if it's possible to clone the component. Default: `true`\n * @property {Boolean} [resizable=false] Indicates if it's possible to resize the component. It's also possible to pass an object as [options for the Resizer](https://github.com/artf/grapesjs/blob/master/src/utils/Resizer.js). Default: `false`\n * @property {Boolean} [editable=false] Allow to edit the content of the component (used on Text components). Default: `false`\n * @property {Boolean} [layerable=true] Set to `false` if you need to hide the component inside Layers. Default: `true`\n * @property {Boolean} [selectable=true] Allow component to be selected when clicked. Default: `true`\n * @property {Boolean} [hoverable=true] Shows a highlight outline when hovering on the element if `true`. Default: `true`\n * @property {Boolean} [locked=false] Disable the selection of the component and its children in the canvas. Default: `false`\n * @property {Boolean} [void=false] This property is used by the HTML exporter as void elements don't have closing tags, eg. `
`, `
`, etc. Default: `false`\n * @property {Object} [style={}] Component default style, eg. `{ width: '100px', height: '100px', 'background-color': 'red' }`\n * @property {String} [styles=''] Component related styles, eg. `.my-component-class { color: red }`\n * @property {String} [content=''] Content of the component (not escaped) which will be appended before children rendering. Default: `''`\n * @property {String} [icon=''] Component's icon, this string will be inserted before the name (in Layers and badge), eg. it can be an HTML string ''. Default: `''`\n * @property {String|Function} [script=''] Component's javascript. More about it [here](/modules/Components-js.html). Default: `''`\n * @property {String|Function} [script-export=''] You can specify javascript available only in export functions (eg. when you get the HTML).\n * If this property is defined it will overwrite the `script` one (in export functions). Default: `''`\n * @property {Array} [traits=''] Component's traits. More about it [here](/modules/Traits.html). Default: `['id', 'title']`\n * @property {Array} [propagate=[]] Indicates an array of properties which will be inhereted by all NEW appended children.\n * For example if you create a component likes this: `{ removable: false, draggable: false, propagate: ['removable', 'draggable'] }`\n * and append some new component inside, the new added component will get the exact same properties indicated in the `propagate` array (and the `propagate` property itself). Default: `[]`\n * @property {Array} [toolbar=null] Set an array of items to show up inside the toolbar when the component is selected (move, clone, delete).\n * Eg. `toolbar: [ { attributes: {class: 'fa fa-arrows'}, command: 'tlb-move' }, ... ]`.\n * By default, when `toolbar` property is falsy the editor will add automatically commands `core:component-exit` (select parent component, added if there is one), `tlb-move` (added if `draggable`) , `tlb-clone` (added if `copyable`), `tlb-delete` (added if `removable`).\n * @property {Collection} [components=null] Children components. Default: `null`\n *\n * @module docsjs.Component\n */\nexport default class Component extends StyleableModel {\n /**\n * Hook method, called once the model is created\n */\n init() {}\n\n /**\n * Hook method, called when the model has been updated (eg. updated some model's property)\n * @param {String} property Property name, if triggered after some property update\n * @param {*} value Property value, if triggered after some property update\n * @param {*} previous Property previous value, if triggered after some property update\n */\n updated(property, value, previous) {}\n\n /**\n * Hook method, called once the model has been removed\n */\n removed() {}\n\n initialize(props = {}, opt = {}) {\n bindAll(this, '__upSymbProps', '__upSymbCls', '__upSymbComps');\n const em = opt.em;\n\n // Propagate properties from parent if indicated\n const parent = this.parent();\n const parentAttr = parent && parent.attributes;\n const propagate = this.get('propagate');\n propagate && this.set('propagate', isArray(propagate) ? propagate : [propagate]);\n\n if (parentAttr && parentAttr.propagate && !propagate) {\n const newAttr = {};\n const toPropagate = parentAttr.propagate;\n toPropagate.forEach(prop => (newAttr[prop] = parent.get(prop)));\n newAttr.propagate = toPropagate;\n this.set({ ...newAttr, ...props });\n }\n\n // Check void elements\n if (opt && opt.config && opt.config.voidElements.indexOf(this.get('tagName')) >= 0) {\n this.set('void', true);\n }\n\n opt.em = em;\n this.opt = opt;\n this.em = em;\n this.frame = opt.frame;\n this.config = opt.config || {};\n this.set('attributes', {\n ...(result(this, 'defaults').attributes || {}),\n ...(this.get('attributes') || {}),\n });\n this.ccid = Component.createId(this, opt);\n this.initClasses();\n this.initTraits();\n this.initComponents();\n this.initToolbar();\n this.initScriptProps();\n this.listenTo(this, 'change:script', this.scriptUpdated);\n this.listenTo(this, 'change:tagName', this.tagUpdated);\n this.listenTo(this, 'change:attributes', this.attrUpdated);\n this.listenTo(this, 'change:attributes:id', this._idUpdated);\n this.on('change:toolbar', this.__emitUpdateTlb);\n this.on('change', this.__onChange);\n this.on(keyUpdateInside, this.__propToParent);\n this.set('status', '');\n this.views = [];\n\n // Register global updates for collection properties\n ['classes', 'traits', 'components'].forEach(name => {\n const events = `add remove ${name !== 'components' ? 'change' : ''}`;\n this.listenTo(this.get(name), events.trim(), (...args) => this.emitUpdate(name, ...args));\n });\n\n if (!opt.temporary) {\n // Add component styles\n const cssc = em && em.get('CssComposer');\n const { styles, type } = this.attributes;\n if (styles && cssc) {\n cssc.addCollection(styles, {}, { group: `cmp:${type}` });\n }\n\n this.__postAdd();\n this.init();\n this.__isSymbolOrInst() && this.__initSymb();\n em && em.trigger('component:create', this);\n }\n }\n\n __postAdd(opts = {}) {\n const { em } = this;\n const um = em && em.get('UndoManager');\n const comps = this.components();\n if (um && !this.__hasUm) {\n um.add(comps);\n um.add(this.getSelectors());\n this.__hasUm = 1;\n }\n opts.recursive && comps.map(c => c.__postAdd(opts));\n }\n\n __postRemove() {\n const { em } = this;\n const um = em && em.get('UndoManager');\n if (um) {\n um.remove(this.components());\n um.remove(this.getSelectors());\n delete this.__hasUm;\n }\n }\n\n __onChange(m, opts) {\n const changed = this.changedAttributes();\n keys(changed).forEach(prop => this.emitUpdate(prop));\n ['status', 'open', 'toolbar', 'traits'].forEach(name => delete changed[name]);\n // Propagate component prop changes\n if (!isEmptyObj(changed)) {\n this.__changesUp(opts);\n this.__propSelfToParent({ component: this, changed, options: opts });\n }\n }\n\n __changesUp(opts) {\n const { em, frame } = this;\n [frame, em].forEach(md => md && md.changesUp(opts));\n }\n\n __propSelfToParent(props) {\n this.trigger(keyUpdate, props);\n this.__propToParent(props);\n }\n\n __propToParent(props) {\n const parent = this.parent();\n parent && parent.trigger(keyUpdateInside, props);\n }\n\n __emitUpdateTlb() {\n this.emitUpdate('toolbar');\n }\n\n /**\n * Check component's type\n * @param {string} type Component type\n * @return {Boolean}\n * @example\n * component.is('image')\n * // -> false\n */\n is(type) {\n return !!(this.get('type') == type);\n }\n\n /**\n * Return all the propeties\n * @returns {Object}\n */\n props() {\n return this.attributes;\n }\n\n /**\n * Get the index of the component in the parent collection.\n * @return {Number}\n */\n index() {\n const { collection } = this;\n return collection ? collection.indexOf(this) : 0;\n }\n\n /**\n * Change the drag mode of the component.\n * To get more about this feature read: https://github.com/artf/grapesjs/issues/1936\n * @param {String} value Drag mode, options: 'absolute' | 'translate'\n * @returns {this}\n */\n setDragMode(value) {\n return this.set('dmode', value);\n }\n\n /**\n * Find inner components by query string.\n * **ATTENTION**: this method works only with already rendered component\n * @param {String} query Query string\n * @return {Array} Array of components\n * @example\n * component.find('div > .class');\n * // -> [Component, Component, ...]\n */\n find(query) {\n const result = [];\n const $els = this.view.$el.find(query);\n $els.each(i => {\n const $el = $els.eq(i);\n const model = $el.data('model');\n model && result.push(model);\n });\n\n return result;\n }\n\n /**\n * Find all inner components by component type.\n * The advantage of this method over `find` is that you can use it\n * also before rendering the component\n * @param {String} type Component type\n * @returns {Array}\n * @example\n * const allImages = component.findType('image');\n * console.log(allImages[0]) // prints the first found component\n */\n findType(type) {\n const result = [];\n const find = components =>\n components.forEach(item => {\n item.is(type) && result.push(item);\n find(item.components());\n });\n find(this.components());\n return result;\n }\n\n /**\n * Find the closest parent component by query string.\n * **ATTENTION**: this method works only with already rendered component\n * @param {string} query Query string\n * @return {Component}\n * @example\n * component.closest('div.some-class');\n * // -> Component\n */\n closest(query) {\n const result = this.view.$el.closest(query);\n return result.length && result.data('model');\n }\n\n /**\n * Find the closest parent component by its type.\n * The advantage of this method over `closest` is that you can use it\n * also before rendering the component\n * @param {String} type Component type\n * @returns {Component} Found component, otherwise `undefined`\n * @example\n * const Section = component.closestType('section');\n * console.log(Section);\n */\n closestType(type) {\n let parent = this.parent();\n\n while (parent && !parent.is(type)) {\n parent = parent.parent();\n }\n\n return parent;\n }\n\n /**\n * The method returns a Boolean value indicating whether the passed\n * component is a descendant of a given component\n * @param {Component} component Component to check\n * @returns {Boolean}\n */\n contains(component) {\n let result = !1;\n if (!component) return result;\n const contains = components => {\n !result &&\n components.forEach(item => {\n if (item === component) result = !0;\n !result && contains(item.components());\n });\n };\n contains(this.components());\n return result;\n }\n\n /**\n * Once the tag is updated I have to rerender the element\n * @private\n */\n tagUpdated() {\n this.trigger('rerender');\n }\n\n /**\n * Replace a component with another one\n * @param {String|Component} el Component or HTML string\n * @return {Component|Array} New added component/s\n * @example\n * component.replaceWith('
Some new content
');\n * // -> Component\n */\n replaceWith(el) {\n const coll = this.collection;\n const at = coll.indexOf(this);\n coll.remove(this);\n return coll.add(el, { at });\n }\n\n /**\n * Emit changes for each updated attribute\n * @private\n */\n attrUpdated(m, v, opts = {}) {\n const attrs = this.get('attributes');\n // Handle classes\n const classes = attrs.class;\n classes && this.setClass(classes);\n delete attrs.class;\n\n // Handle style\n const style = attrs.style;\n style && this.setStyle(style);\n delete attrs.style;\n\n const attrPrev = { ...this.previous('attributes') };\n const diff = shallowDiff(attrPrev, this.get('attributes'));\n keys(diff).forEach(pr => this.trigger(`change:attributes:${pr}`, this, diff[pr], opts));\n }\n\n /**\n * Update attributes of the component\n * @param {Object} attrs Key value attributes\n * @param {Object} options Options for the model update\n * @return {this}\n * @example\n * component.setAttributes({ id: 'test', 'data-key': 'value' });\n */\n setAttributes(attrs, opts = {}) {\n this.set('attributes', { ...attrs }, opts);\n return this;\n }\n\n /**\n * Add attributes to the component\n * @param {Object} attrs Key value attributes\n * @param {Object} options Options for the model update\n * @return {this}\n * @example\n * component.addAttributes({ 'data-key': 'value' });\n */\n addAttributes(attrs, opts = {}) {\n return this.setAttributes(\n {\n ...this.getAttributes({ noClass: 1 }),\n ...attrs,\n },\n opts\n );\n }\n\n /**\n * Remove attributes from the component\n * @param {String|Array} attrs Array of attributes to remove\n * @param {Object} options Options for the model update\n * @return {this}\n * @example\n * component.removeAttributes('some-attr');\n * component.removeAttributes(['some-attr1', 'some-attr2']);\n */\n removeAttributes(attrs = [], opts = {}) {\n const attrArr = Array.isArray(attrs) ? attrs : [attrs];\n const compAttr = this.getAttributes();\n attrArr.map(i => delete compAttr[i]);\n return this.setAttributes(compAttr, opts);\n }\n\n /**\n * Get the style of the component\n * @return {Object}\n */\n getStyle(options = {}, optsAdd = {}) {\n const em = this.em;\n const prop = isString(options) ? options : '';\n const opts = prop ? optsAdd : options;\n\n if (em && em.getConfig().avoidInlineStyle && !opts.inline) {\n const state = em.get('state');\n const cc = em.get('CssComposer');\n const rule = cc.getIdRule(this.getId(), { state, ...opts });\n this.rule = rule;\n\n if (rule) {\n return rule.getStyle(prop);\n }\n }\n\n return super.getStyle.call(this, prop);\n }\n\n /**\n * Set the style on the component\n * @param {Object} prop Key value style object\n * @return {Object}\n * @example\n * component.setStyle({ color: 'red' });\n */\n setStyle(prop = {}, opts = {}) {\n const em = this.em;\n const { opt } = this;\n\n if (em && em.getConfig().avoidInlineStyle && !opt.temporary && !opts.inline) {\n const style = this.get('style') || {};\n prop = isString(prop) ? this.parseStyle(prop) : prop;\n prop = { ...prop, ...style };\n const state = em.get('state');\n const cc = em.get('CssComposer');\n const propOrig = this.getStyle(opts);\n this.rule = cc.setIdRule(this.getId(), prop, { ...opts, state });\n const diff = shallowDiff(propOrig, prop);\n this.set('style', '', { silent: 1 });\n keys(diff).forEach(pr => this.trigger(`change:style:${pr}`));\n } else {\n prop = super.setStyle.apply(this, arguments);\n }\n\n return prop;\n }\n\n /**\n * Return all component's attributes\n * @return {Object}\n */\n getAttributes(opts = {}) {\n const { em } = this;\n const classes = [];\n const attributes = { ...this.get('attributes') };\n const sm = em && em.get('SelectorManager');\n const id = this.getId();\n\n // Add classes\n if (!opts.noClass) {\n this.get('classes').forEach(cls => classes.push(isString(cls) ? cls : cls.get('name')));\n classes.length && (attributes.class = classes.join(' '));\n }\n\n // Add style\n if (!opts.noStyle) {\n const style = this.get('style');\n if (isObject(style) && !isEmptyObj(style)) {\n attributes.style = this.styleToString({ inline: 1 });\n }\n }\n\n // Check if we need an ID on the component\n if (!has(attributes, 'id')) {\n let addId;\n\n // If we don't rely on inline styling we have to check\n // for the ID selector\n if (avoidInline(em)) {\n addId = sm && sm.get(id, sm.Selector.TYPE_ID);\n } else if (!isEmpty(this.getStyle())) {\n addId = 1;\n }\n\n // Symbols should always have an id\n if (this.__getSymbol() || this.__getSymbols()) {\n addId = 1;\n }\n\n if (addId) {\n attributes.id = id;\n }\n }\n\n return attributes;\n }\n\n /**\n * Add classes\n * @param {Array|String} classes Array or string of classes\n * @return {Array} Array of added selectors\n * @example\n * model.addClass('class1');\n * model.addClass('class1 class2');\n * model.addClass(['class1', 'class2']);\n * // -> [SelectorObject, ...]\n */\n addClass(classes) {\n const added = this.em.get('SelectorManager').addClass(classes);\n return this.get('classes').add(added);\n }\n\n /**\n * Set classes (resets current collection)\n * @param {Array|String} classes Array or string of classes\n * @return {Array} Array of added selectors\n * @example\n * model.setClass('class1');\n * model.setClass('class1 class2');\n * model.setClass(['class1', 'class2']);\n * // -> [SelectorObject, ...]\n */\n setClass(classes) {\n this.get('classes').reset();\n return this.addClass(classes);\n }\n\n /**\n * Remove classes\n * @param {Array|String} classes Array or string of classes\n * @return {Array} Array of removed selectors\n * @example\n * model.removeClass('class1');\n * model.removeClass('class1 class2');\n * model.removeClass(['class1', 'class2']);\n * // -> [SelectorObject, ...]\n */\n removeClass(classes) {\n const removed = [];\n classes = isArray(classes) ? classes : [classes];\n const selectors = this.get('classes');\n const type = Selector.TYPE_CLASS;\n\n classes.forEach(classe => {\n const classes = classe.split(' ');\n classes.forEach(name => {\n const selector = selectors.where({ name, type })[0];\n selector && removed.push(selectors.remove(selector));\n });\n });\n\n return removed;\n }\n\n /**\n * Returns component's classes as an array of strings\n * @return {Array}\n */\n getClasses() {\n const attr = this.getAttributes();\n const classStr = attr.class;\n return classStr ? classStr.split(' ') : [];\n }\n\n __logSymbol(type, toUp, opts = {}) {\n const symbol = this.__getSymbol();\n const symbols = this.__getSymbols();\n if (!symbol && !symbols) return;\n this.em.log(type, { model: this, toUp, context: 'symbols', opts });\n }\n\n __initSymb() {\n if (this.__symbReady) return;\n this.on('change', this.__upSymbProps);\n this.__symbReady = 1;\n }\n\n __isSymbol() {\n return isArray(this.get(keySymbols));\n }\n\n __isSymbolOrInst() {\n return !!(this.__isSymbol() || this.get(keySymbol));\n }\n\n __isSymbolTop() {\n const parent = this.parent();\n const symb = this.__isSymbolOrInst();\n return symb && (!parent || (parent && !parent.__isSymbol() && !parent.__getSymbol()));\n }\n\n __isSymbolNested() {\n if (!this.__isSymbolOrInst() || this.__isSymbolTop()) return false;\n const symbTopSelf = (this.__isSymbol() ? this : this.__getSymbol()).__getSymbTop();\n const symbTop = this.__getSymbTop();\n const symbTopMain = symbTop.__isSymbol() ? symbTop : symbTop.__getSymbol();\n return symbTopMain !== symbTopSelf;\n }\n\n __getAllById() {\n const { em } = this;\n return em ? em.get('DomComponents').allById() : {};\n }\n\n __getSymbol() {\n let symb = this.get(keySymbol);\n if (symb && isString(symb)) {\n const ref = this.__getAllById()[symb];\n if (ref) {\n symb = ref;\n this.set(keySymbol, ref);\n } else {\n symb = 0;\n }\n }\n return symb;\n }\n\n __getSymbols() {\n let symbs = this.get(keySymbols);\n if (symbs && isArray(symbs)) {\n symbs.forEach((symb, idx) => {\n if (symb && isString(symb)) {\n symbs[idx] = this.__getAllById()[symb];\n }\n });\n symbs = symbs.filter(symb => symb && !isString(symb));\n }\n return symbs;\n }\n\n __isSymbOvrd(prop = '') {\n const ovrd = this.get(keySymbolOvrd);\n const [prp] = prop.split(':');\n const props = prop !== prp ? [prop, prp] : [prop];\n return ovrd === true || (isArray(ovrd) && props.some(p => ovrd.indexOf(p) >= 0));\n }\n\n __getSymbToUp(opts = {}) {\n let result = [];\n const { em } = this;\n const { changed } = opts;\n const symbEnabled = em && em.config.symbols;\n\n if (\n opts.fromInstance ||\n opts.noPropagate ||\n opts.fromUndo ||\n !symbEnabled ||\n // Avoid updating others if the current component has override\n (changed && this.__isSymbOvrd(changed))\n ) {\n return result;\n }\n\n const symbols = this.__getSymbols() || [];\n const symbol = this.__getSymbol();\n const all = symbol ? [symbol, ...(symbol.__getSymbols() || [])] : symbols;\n result = all\n .filter(s => s !== this)\n // Avoid updating those with override\n .filter(s => !(changed && s.__isSymbOvrd(changed)));\n\n return result;\n }\n\n __getSymbTop(opts) {\n let result = this;\n let parent = this.parent(opts);\n\n while (parent && (parent.__isSymbol() || parent.__getSymbol())) {\n result = parent;\n parent = parent.parent(opts);\n }\n\n return result;\n }\n\n __upSymbProps(m, opts = {}) {\n const changed = this.changedAttributes();\n const attrs = changed.attributes || {};\n delete changed.status;\n delete changed.open;\n delete changed[keySymbols];\n delete changed[keySymbol];\n delete changed[keySymbolOvrd];\n delete changed.attributes;\n delete attrs.id;\n if (!isEmptyObj(attrs)) changed.attributes = attrs;\n if (!isEmptyObj(changed)) {\n const toUp = this.__getSymbToUp(opts);\n // Avoid propagating overrides to other symbols\n keys(changed).map(prop => {\n if (this.__isSymbOvrd(prop)) delete changed[prop];\n });\n\n this.__logSymbol('props', toUp, { opts, changed });\n toUp.forEach(child => {\n const propsChanged = { ...changed };\n // Avoid updating those with override\n keys(propsChanged).map(prop => {\n if (child.__isSymbOvrd(prop)) delete propsChanged[prop];\n });\n child.set(propsChanged, { fromInstance: this, ...opts });\n });\n }\n }\n\n __upSymbCls(m, c, opts = {}) {\n const toUp = this.__getSymbToUp(opts);\n this.__logSymbol('classes', toUp, { opts });\n toUp.forEach(child => {\n // This will propagate the change up to __upSymbProps\n child.set('classes', this.get('classes'), { fromInstance: this });\n });\n this.__changesUp(opts);\n }\n\n __upSymbComps(m, c, o) {\n const optUp = o || c || {};\n const { fromInstance, fromUndo } = optUp;\n const toUpOpts = { fromInstance, fromUndo };\n const isTemp = m.opt.temporary;\n\n // Reset\n if (!o) {\n const toUp = this.__getSymbToUp({\n ...toUpOpts,\n changed: 'components:reset',\n });\n this.__logSymbol('reset', toUp, { components: m.models });\n toUp.forEach(symb => {\n const newMods = m.models.map(mod => mod.clone({ symbol: 1 }));\n symb.components().reset(newMods, { fromInstance: this, ...c });\n });\n // Add\n } else if (o.add) {\n let addedInstances = [];\n const isMainSymb = !!this.__getSymbols();\n const toUp = this.__getSymbToUp({\n ...toUpOpts,\n changed: 'components:add',\n });\n if (toUp.length) {\n const addSymb = m.__getSymbol();\n addedInstances = (addSymb ? addSymb.__getSymbols() : m.__getSymbols()) || [];\n addedInstances = [...addedInstances];\n addedInstances.push(addSymb ? addSymb : m);\n }\n !isTemp &&\n this.__logSymbol('add', toUp, {\n opts: o,\n addedInstances: addedInstances.map(c => c.cid),\n added: m.cid,\n });\n // Here, before appending a new symbol, I have to ensure there are no previously\n // created symbols (eg. used mainly when drag components around)\n toUp.forEach(symb => {\n const symbTop = symb.__getSymbTop();\n const symbPrev = addedInstances.filter(addedInst => {\n const addedTop = addedInst.__getSymbTop({ prev: 1 });\n return symbTop && addedTop && addedTop === symbTop;\n })[0];\n const toAppend = symbPrev || m.clone({ symbol: 1, symbolInv: isMainSymb });\n symb.append(toAppend, { fromInstance: this, ...o });\n });\n // Remove\n } else {\n // Remove instance reference from the symbol\n const symb = m.__getSymbol();\n symb &&\n !o.temporary &&\n symb.set(\n keySymbols,\n symb.__getSymbols().filter(i => i !== m)\n );\n\n // Propagate remove only if the component is an inner symbol\n if (!m.__isSymbolTop()) {\n const changed = 'components:remove';\n const { index } = o;\n const parent = m.parent();\n const opts = { fromInstance: m, ...o };\n const isSymbNested = m.__isSymbolNested();\n let toUpFn = symb => {\n const symbPrnt = symb.parent();\n symbPrnt && !symbPrnt.__isSymbOvrd(changed) && symb.remove(opts);\n };\n // Check if the parent allows the removing\n let toUp = !parent.__isSymbOvrd(changed) ? m.__getSymbToUp(toUpOpts) : [];\n\n if (isSymbNested) {\n toUp = parent.__getSymbToUp({ ...toUpOpts, changed });\n toUpFn = symb => {\n const toRemove = symb.components().at(index);\n toRemove && toRemove.remove({ fromInstance: parent, ...opts });\n };\n }\n\n !isTemp &&\n this.__logSymbol('remove', toUp, {\n opts: o,\n removed: m.cid,\n isSymbNested,\n });\n toUp.forEach(toUpFn);\n }\n }\n\n this.__changesUp(optUp);\n }\n\n initClasses(m, c, opts = {}) {\n const event = 'change:classes';\n const attrCls = this.get('attributes').class || [];\n const toListen = [this, event, this.initClasses];\n const cls = this.get('classes') || attrCls;\n const clsArr = isString(cls) ? cls.split(' ') : cls;\n this.stopListening(...toListen);\n const classes = this.normalizeClasses(clsArr);\n const selectors = new Selectors([]);\n this.set('classes', selectors, opts);\n selectors.add(classes);\n selectors.on('add remove reset', this.__upSymbCls);\n this.listenTo(...toListen);\n return this;\n }\n\n initComponents() {\n const event = 'change:components';\n const toListen = [this, event, this.initComponents];\n this.stopListening(...toListen);\n // Have to add components after the init, otherwise the parent\n // is not visible\n const comps = new Components(null, this.opt);\n comps.parent = this;\n const components = this.get('components');\n const addChild = !this.opt.avoidChildren;\n this.set('components', comps);\n addChild && components && comps.add(isFunction(components) ? components(this) : components, this.opt);\n comps.on('add remove reset', this.__upSymbComps);\n this.listenTo(...toListen);\n return this;\n }\n\n initTraits(changed) {\n const { em } = this;\n const event = 'change:traits';\n this.off(event, this.initTraits);\n this.__loadTraits();\n const attrs = { ...this.get('attributes') };\n const traits = this.get('traits');\n traits.each(trait => {\n if (!trait.get('changeProp')) {\n const name = trait.get('name');\n const value = trait.getInitValue();\n if (name && value) attrs[name] = value;\n }\n });\n traits.length && this.set('attributes', attrs);\n this.on(event, this.initTraits);\n changed && em && em.trigger('component:toggled');\n return this;\n }\n\n initScriptProps() {\n if (this.opt.temporary) return;\n const prop = 'script-props';\n const toListen = [`change:${prop}`, this.initScriptProps];\n this.off(...toListen);\n const prevProps = this.previous(prop) || [];\n const newProps = this.get(prop) || [];\n const prevPropsEv = prevProps.map(e => `change:${e}`).join(' ');\n const newPropsEv = newProps.map(e => `change:${e}`).join(' ');\n prevPropsEv && this.off(prevPropsEv, this.__scriptPropsChange);\n newPropsEv && this.on(newPropsEv, this.__scriptPropsChange);\n this.on(...toListen);\n }\n\n __scriptPropsChange(m, v, opts = {}) {\n if (opts.avoidStore) return;\n this.trigger('rerender');\n }\n\n /**\n * Add new component children\n * @param {Component|String} components Component to add\n * @param {Object} [opts={}] Options for the append action\n * @return {Array} Array of appended components\n * @example\n * someComponent.get('components').length // -> 0\n * const videoComponent = someComponent.append('
')[0];\n * // This will add 2 components (`video` and `div`) to your `someComponent`\n * someComponent.get('components').length // -> 2\n * // You can pass components directly\n * otherComponent.append(otherComponent2);\n * otherComponent.append([otherComponent3, otherComponent4]);\n * // append at specific index (eg. at the beginning)\n * someComponent.append(otherComponent, { at: 0 });\n */\n append(components, opts = {}) {\n const compArr = isArray(components) ? components : [components];\n const toAppend = compArr.map(comp => {\n if (isString(comp)) {\n return comp;\n } else {\n // I have to remove components from the old container before adding them to a new one\n comp.collection && comp.collection.remove(comp, { temporary: 1 });\n return comp;\n }\n });\n const result = this.components().add(toAppend, opts);\n return isArray(result) ? result : [result];\n }\n\n /**\n * Set new collection if `components` are provided, otherwise the\n * current collection is returned\n * @param {Component|Component[]|String} [components] Component Definitions or HTML string\n * @param {Object} [opts={}] Options, same as in `Component.append()`\n * @returns {Collection|Array<[Component]>}\n * @example\n * // Set new collection\n * component.components('
');\n * // Get current collection\n * const collection = component.components();\n * console.log(collection.length);\n * // -> 2\n */\n components(components, opts = {}) {\n const coll = this.get('components');\n\n if (isUndefined(components)) {\n return coll;\n } else {\n coll.reset(null, opts);\n return components ? this.append(components, opts) : [];\n }\n }\n\n /**\n * If exists, returns the child component at specific index.\n * @param {Number} index Index of the component to return\n * @returns {[Component]|null}\n * @example\n * // Return first child\n * component.getChildAt(0);\n * // Return second child\n * component.getChildAt(1);\n */\n getChildAt(index) {\n return this.components().at(index || 0) || null;\n }\n\n /**\n * If exists, returns the last child component.\n * @returns {[Component]|null}\n * @example\n * const lastChild = component.getLastChild();\n */\n getLastChild() {\n const children = this.components();\n return children.at(children.length - 1) || null;\n }\n\n /**\n * Remove all inner components\n * * @return {this}\n */\n empty(opts = {}) {\n this.components().reset(null, opts);\n return this;\n }\n\n /**\n * Get the parent component, if exists\n * @return {Component|null}\n * @example\n * component.parent();\n * // -> Component\n */\n parent(opts = {}) {\n const coll = this.collection || (opts.prev && this.prevColl);\n return coll ? coll.parent : null;\n }\n\n /**\n * 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 * @private\n */\n clone(opt = {}) {\n const em = this.em;\n const attr = { ...this.attributes };\n const opts = { ...this.opt };\n const id = this.getId();\n const cssc = em && em.get('CssComposer');\n attr.attributes = { ...attr.attributes };\n delete attr.attributes.id;\n attr.components = [];\n attr.classes = [];\n attr.traits = [];\n\n if (this.__isSymbolTop()) {\n opt.symbol = 1;\n }\n\n this.get('components').each((md, i) => {\n attr.components[i] = md.clone({ ...opt, _inner: 1 });\n });\n this.get('traits').each((md, i) => {\n attr.traits[i] = md.clone();\n });\n this.get('classes').each((md, i) => {\n attr.classes[i] = md.get('name');\n });\n\n attr.status = '';\n opts.collection = null;\n\n const cloned = new this.constructor(attr, opts);\n\n // Clone component specific rules\n const newId = `#${cloned.getId()}`;\n const rulesToClone = cssc ? cssc.getRules(`#${id}`) : [];\n rulesToClone.forEach(rule => {\n const newRule = rule.clone();\n newRule.set('selectors', [newId]);\n cssc.getAll().add(newRule);\n });\n\n // Symbols\n // If I clone an inner symbol, I have to reset it\n cloned.set(keySymbols, 0);\n const symbol = this.__getSymbol();\n const symbols = this.__getSymbols();\n\n if (!opt.symbol && (symbol || symbols)) {\n cloned.set(keySymbol, 0);\n cloned.set(keySymbols, 0);\n } else if (symbol) {\n // Contains already a reference to a symbol\n symbol.set(keySymbols, [...symbol.__getSymbols(), cloned]);\n cloned.__initSymb();\n } else if (opt.symbol) {\n // Request to create a symbol\n if (this.__isSymbol()) {\n // Already a symbol, cloned should be an instance\n this.set(keySymbols, [...symbols, cloned]);\n cloned.set(keySymbol, this);\n cloned.__initSymb();\n } else if (opt.symbolInv) {\n // Inverted, cloned is the instance, the origin is the main symbol\n this.set(keySymbols, [cloned]);\n cloned.set(keySymbol, this);\n [this, cloned].map(i => i.__initSymb());\n } else {\n // Cloned becomes the main symbol\n cloned.set(keySymbols, [this]);\n [this, cloned].map(i => i.__initSymb());\n this.set(keySymbol, cloned);\n }\n }\n\n const event = 'component:clone';\n em && em.trigger(event, cloned);\n this.trigger(event, cloned);\n\n return cloned;\n }\n\n /**\n * Get the name of the component\n * @return {String}\n * */\n getName() {\n const { em } = this;\n const { type, tagName, name } = this.attributes;\n const defName = type || tagName;\n const nameTag = !type && tagName;\n const i18nPfx = 'domComponents.names.';\n const i18nName = name && em?.t(`${i18nPfx}${name}`);\n const i18nNameTag = nameTag && em?.t(`${i18nPfx}${nameTag}`);\n const i18nDefName = em && (em.t(`${i18nPfx}${type}`) || em.t(`${i18nPfx}${tagName}`));\n return (\n this.get('custom-name') || // Used in Layers (when the user changes the name)\n i18nName || // Use local component `name` key (eg. `domComponents.names.myComponentName`)\n name || // Use component `name` key\n i18nNameTag || // Use local component `tagName` key (eg. `domComponents.names.div`)\n capitalize(nameTag) || // Use component `tagName` key\n i18nDefName || // Use local component `type` key (eg. `domComponents.names.image`)\n capitalize(defName) // Use component `type` key\n );\n }\n\n /**\n * Get the icon string\n * @return {String}\n */\n getIcon() {\n let icon = this.get('icon');\n return icon ? icon + ' ' : '';\n }\n\n /**\n * Return HTML string of the component\n * @param {Object} [opts={}] Options\n * @param {String} [opts.tag] Custom tagName\n * @param {Object|Function} [opts.attributes=null] You can pass an object of custom attributes to replace with the current ones or you can even pass a function to generate attributes dynamically.\n * @param {Boolean} [opts.withProps] Include component properties as `data-gjs-*` attributes. This allows you to have re-importable HTML.\n * @param {Boolean} [opts.altQuoteAttr] In case the attribute value contains a `\"` char, instead of escaping it (`attr=\"value "\"`), the attribute will be quoted using single quotes (`attr='value \"'`).\n * @return {String} HTML string\n * @example\n * // Simple HTML return\n * component.set({ tagName: 'span' });\n * component.setAttributes({ title: 'Hello' });\n * component.toHTML();\n * // -> \n *\n * // Custom attributes\n * component.toHTML({ attributes: { 'data-test': 'Hello' } });\n * // -> \n *\n * // Custom dynamic attributes\n * component.toHTML({\n * attributes(component, attributes) {\n * if (component.get('tagName') == 'span') {\n * attributes.title = 'Custom attribute';\n * }\n * return attributes;\n * },\n * });\n * // -> \n */\n toHTML(opts = {}) {\n const model = this;\n const attrs = [];\n const customTag = opts.tag;\n const tag = customTag || model.get('tagName');\n const sTag = model.get('void');\n const customAttr = opts.attributes;\n let attributes = this.getAttrToHTML();\n delete opts.tag;\n\n // Get custom attributes if requested\n if (customAttr) {\n if (isFunction(customAttr)) {\n attributes = customAttr(model, attributes) || {};\n } else if (isObject(customAttr)) {\n attributes = customAttr;\n }\n }\n\n if (opts.withProps) {\n const props = this.toJSON();\n\n forEach(props, (value, key) => {\n const skipProps = ['classes', 'attributes', 'components'];\n if (key[0] !== '_' && skipProps.indexOf(key) < 0) {\n attributes[`data-gjs-${key}`] = isArray(value) || isObject(value) ? JSON.stringify(value) : value;\n }\n });\n }\n\n for (let attr in attributes) {\n const val = attributes[attr];\n\n if (!isUndefined(val) && val !== null) {\n if (isBoolean(val)) {\n val && attrs.push(attr);\n } else {\n let valueRes = '';\n if (opts.altQuoteAttr && isString(val) && val.indexOf('\"') >= 0) {\n valueRes = `'${val.replace(/'/g, ''')}'`;\n } else {\n const value = isString(val) ? val.replace(/\"/g, '"') : val;\n valueRes = `\"${value}\"`;\n }\n\n attrs.push(`${attr}=${valueRes}`);\n }\n }\n }\n\n const attrString = attrs.length ? ` ${attrs.join(' ')}` : '';\n const inner = model.getInnerHTML(opts);\n let code = `<${tag}${attrString}${sTag ? '/' : ''}>${inner}`;\n !sTag && (code += ``);\n\n return code;\n }\n\n /**\n * Get inner HTML of the component\n * @param {Object} [opts={}] Same options of `toHTML`\n * @returns {String} HTML string\n */\n getInnerHTML(opts) {\n return this.__innerHTML(opts);\n }\n\n __innerHTML(opts = {}) {\n const cmps = this.components();\n return !cmps.length ? this.get('content') : cmps.map(c => c.toHTML(opts)).join('');\n }\n\n /**\n * Returns object of attributes for HTML\n * @return {Object}\n * @private\n */\n getAttrToHTML() {\n var attr = this.getAttributes();\n delete attr.style;\n return attr;\n }\n\n /**\n * Return a shallow copy of the model's attributes for JSON\n * stringification.\n * @return {Object}\n * @private\n */\n toJSON(opts = {}) {\n const obj = Model.prototype.toJSON.call(this, opts);\n obj.attributes = this.getAttributes();\n delete obj.attributes.class;\n delete obj.toolbar;\n delete obj.traits;\n delete obj.status;\n delete obj.open; // used in Layers\n\n if (!opts.fromUndo) {\n const symbol = obj[keySymbol];\n const symbols = obj[keySymbols];\n if (symbols && isArray(symbols)) {\n obj[keySymbols] = symbols.filter(i => i).map(i => (i.getId ? i.getId() : i));\n }\n if (symbol && !isString(symbol)) {\n obj[keySymbol] = symbol.getId();\n }\n }\n\n if (this.em.getConfig().avoidDefaults) {\n this.getChangedProps(obj);\n }\n\n return obj;\n }\n\n /**\n * Return an object containing only changed props\n */\n getChangedProps(res) {\n const obj = res || Model.prototype.toJSON.apply(this);\n const defaults = result(this, 'defaults');\n\n forEach(defaults, (value, key) => {\n if (['type'].indexOf(key) === -1 && obj[key] === value) {\n delete obj[key];\n }\n });\n\n if (isEmpty(obj.type)) {\n delete obj.type;\n }\n\n forEach(['attributes', 'style'], prop => {\n if (isEmpty(defaults[prop]) && isEmpty(obj[prop])) {\n delete obj[prop];\n }\n });\n\n forEach(['classes', 'components'], prop => {\n if (!obj[prop] || (isEmpty(defaults[prop]) && !obj[prop].length)) {\n delete obj[prop];\n }\n });\n\n return obj;\n }\n\n /**\n * Return the component id\n * @return {String}\n */\n getId() {\n let attrs = this.get('attributes') || {};\n return attrs.id || this.ccid || this.cid;\n }\n\n /**\n * Set new id on the component\n * @param {String} id\n * @return {this}\n */\n setId(id, opts) {\n const attrs = { ...this.get('attributes') };\n attrs.id = id;\n this.set('attributes', attrs, opts);\n return this;\n }\n\n /**\n * Get the DOM element of the component.\n * This works only if the component is already rendered\n * @param {Frame} frame Specific frame from which taking the element\n * @return {HTMLElement}\n */\n getEl(frame = undefined) {\n const view = this.getView(frame);\n return view && view.el;\n }\n\n /**\n * Get the View of the component.\n * This works only if the component is already rendered\n * @param {Frame} frame Get View of a specific frame\n * @return {ComponentView}\n */\n getView(frame) {\n let { view, views } = this;\n\n if (frame) {\n view = views.filter(view => view._getFrame() === frame.view)[0];\n }\n\n return view;\n }\n\n getCurrentView() {\n const frame = (this.em.get('currentFrame') || {}).model;\n return this.getView(frame);\n }\n\n __getScriptProps() {\n const modelProps = this.props();\n const scrProps = this.get('script-props') || [];\n return scrProps.reduce((acc, prop) => {\n acc[prop] = modelProps[prop];\n return acc;\n }, {});\n }\n\n /**\n * Return script in string format, cleans 'function() {..' from scripts\n * if it's a function\n * @param {string|Function} script\n * @return {string}\n * @private\n */\n getScriptString(script) {\n let scr = script || this.get('script');\n\n if (!scr) {\n return scr;\n }\n\n if (this.get('script-props')) {\n scr = scr.toString().trim();\n } else {\n // Deprecated\n // Need to convert script functions to strings\n if (typeof scr == 'function') {\n var scrStr = scr.toString().trim();\n scrStr = scrStr.replace(/^function[\\s\\w]*\\(\\)\\s?\\{/, '').replace(/\\}$/, '');\n scr = scrStr.trim();\n }\n\n var config = this.em.getConfig();\n var tagVarStart = escapeRegExp(config.tagVarStart || '{[ ');\n var tagVarEnd = escapeRegExp(config.tagVarEnd || ' ]}');\n var reg = new RegExp(`${tagVarStart}([\\\\w\\\\d-]*)${tagVarEnd}`, 'g');\n scr = scr.replace(reg, (match, v) => {\n // If at least one match is found I have to track this change for a\n // better optimization inside JS generator\n this.scriptUpdated();\n const result = this.attributes[v] || '';\n return isArray(result) || typeof result == 'object' ? JSON.stringify(result) : result;\n });\n }\n return scr;\n }\n\n emitUpdate(property, ...args) {\n const { em } = this;\n const event = keyUpdate + (property ? `:${property}` : '');\n const item = property && this.get(property);\n property && this.updated(property, item, property && this.previous(property), ...args);\n this.trigger(event, ...args);\n em && em.trigger(event, this, ...args);\n ['components', 'classes'].indexOf(property) >= 0 &&\n this.__propSelfToParent({\n component: this,\n changed: { [property]: item },\n options: args[2] || args[1] || {},\n });\n }\n\n /**\n * Execute callback function on itself and all inner components\n * @param {Function} clb Callback function, the model is passed as an argument\n * @return {this}\n * @example\n * component.onAll(component => {\n * // do something with component\n * })\n */\n onAll(clb) {\n if (isFunction(clb)) {\n clb(this);\n this.components().forEach(model => model.onAll(clb));\n }\n return this;\n }\n\n /**\n * Remove the component\n * @return {this}\n */\n remove(opts = {}) {\n const { em } = this;\n const coll = this.collection;\n const remove = () => {\n coll && coll.remove(this, { ...opts, action: 'remove-component' });\n // Component without parent\n if (!coll) {\n this.components('', opts);\n this.components().removeChildren(this, null, opts);\n }\n };\n const rmOpts = { ...opts };\n [this, em].map(i => i.trigger('component:remove:before', this, remove, rmOpts));\n !rmOpts.abort && remove();\n return this;\n }\n\n /**\n * Move the component to another destination component\n * @param {Component} component Destination component (so the current one will be appended as a child)\n * @param {Object} opts Options for the append action\n * @returns {this}\n * @example\n * // Move the selected component on top of the wrapper\n * const dest = editor.getWrapper();\n * editor.getSelected().move(dest, { at: 0 });\n */\n move(component, opts = {}) {\n 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\n/**\n * Detect if the passed element is a valid component.\n * In case the element is valid an object abstracted\n * from the element will be returned\n * @param {HTMLElement}\n * @return {Object}\n * @private\n */\nComponent.isComponent = el => {\n return { tagName: toLowerCase(el.tagName) };\n};\n\nComponent.ensureInList = model => {\n const list = Component.getList(model);\n const id = model.getId();\n const current = list[id];\n\n if (!current) {\n // Insert in list\n list[id] = model;\n } else if (current !== model) {\n // Create new ID\n const nextId = Component.getIncrementId(id, list);\n model.setId(nextId);\n list[nextId] = model;\n }\n\n model.components().forEach(i => Component.ensureInList(i));\n};\n\n/**\n * Relying simply on the number of components becomes a problem when you\n * store and load them back, you might hit collisions with new components\n * @param {Model} model\n * @return {string}\n * @private\n */\nComponent.createId = (model, opts = {}) => {\n const list = Component.getList(model);\n const { idMap = {} } = opts;\n let { id } = model.get('attributes');\n let nextId;\n\n if (id) {\n nextId = Component.getIncrementId(id, list, opts);\n model.setId(nextId);\n if (id !== nextId) idMap[id] = nextId;\n } else {\n nextId = Component.getNewId(list);\n }\n\n list[nextId] = model;\n return nextId;\n};\n\nComponent.getNewId = list => {\n const count = Object.keys(list).length;\n // Testing 1000000 components with `+ 2` returns 0 collisions\n const ilen = count.toString().length + 2;\n const uid = (Math.random() + 1.1).toString(36).slice(-ilen);\n let newId = `i${uid}`;\n\n while (list[newId]) {\n newId = Component.getNewId(list);\n }\n\n return newId;\n};\n\nComponent.getIncrementId = (id, list, opts = {}) => {\n const { keepIds = [] } = opts;\n let counter = 1;\n let newId = id;\n\n if (keepIds.indexOf(id) < 0) {\n while (list[newId]) {\n counter++;\n newId = `${id}-${counter}`;\n }\n }\n\n return newId;\n};\n\n/**\n * The list of components is taken from the Components module.\n * Initially, the list, was set statically on the Component object but it was\n * not ok, as it was shared between multiple editor instances\n * @private\n */\nComponent.getList = model => {\n const { opt = {} } = model;\n const { domc, em } = opt;\n const dm = domc || (em && em.get('DomComponents'));\n return dm ? dm.componentsById : {};\n};\n\n/**\n * This method checks, for each parsed component and style object\n * (are not Components/CSSRules yet), for duplicated id and fixes them\n * This method is used in Components.js just after the parsing\n * @private\n */\nComponent.checkId = (components, styles = [], list = {}, opts = {}) => {\n const comps = isArray(components) ? components : [components];\n const { keepIds = [] } = opts;\n comps.forEach(comp => {\n const { attributes = {}, components } = comp;\n const { id } = attributes;\n\n // Check if we have collisions with current components\n if (id && list[id] && keepIds.indexOf(id) < 0) {\n const newId = Component.getIncrementId(id, list);\n attributes.id = newId;\n // Update passed styles\n isArray(styles) &&\n styles.forEach(style => {\n const { selectors } = style;\n selectors.forEach((sel, idx) => {\n if (sel === `#${id}`) selectors[idx] = `#${newId}`;\n });\n });\n }\n\n components && Component.checkId(components, styles, list, opts);\n });\n};\n\nComponent.getDefaults = function () {\n return result(this.prototype, 'defaults');\n};\n\nComponent.prototype.defaults = {\n tagName: 'div',\n type: '',\n name: '',\n removable: true,\n draggable: true,\n droppable: true,\n badgable: true,\n stylable: true,\n 'stylable-require': '',\n 'style-signature': '',\n unstylable: '',\n highlightable: true,\n copyable: true,\n resizable: false,\n editable: false,\n layerable: true,\n selectable: true,\n hoverable: true,\n locked: false,\n void: false,\n state: '', // Indicates if the component is in some CSS state like ':hover', ':active', etc.\n status: '', // State, eg. 'selected'\n content: '',\n icon: '',\n style: '',\n styles: '', // Component related styles\n classes: '', // Array of classes\n script: '',\n 'script-props': '',\n 'script-export': '',\n attributes: '',\n traits: ['id', 'title'],\n propagate: '',\n dmode: '',\n toolbar: null,\n [keySymbol]: 0,\n [keySymbols]: 0,\n [keySymbolOvrd]: 0,\n _undo: true,\n _undoexc: ['status', 'open'],\n};\n","import Backbone from 'backbone';\nimport { isEmpty, isArray, isString, isFunction, each, includes, extend, flatten, debounce } from 'underscore';\nimport Component, { keySymbol, keySymbols } from './Component';\n\nexport const getComponentIds = (cmp, res = []) => {\n if (!cmp) return [];\n const cmps = isArray(cmp) || isFunction(cmp.map) ? cmp : [cmp];\n cmps.map(cmp => {\n res.push(cmp.getId());\n getComponentIds(cmp.components().models, res);\n });\n return res;\n};\n\nconst getComponentsFromDefs = (items, all = {}, opts = {}) => {\n const itms = isArray(items) ? items : [items];\n\n return itms.map(item => {\n const { attributes = {}, components, tagName } = item;\n const { id } = attributes;\n let result = item;\n\n if (id && all[id]) {\n result = all[id];\n tagName && result.set({ tagName }, { ...opts, silent: true });\n }\n\n if (components) {\n const newComponents = getComponentsFromDefs(components, all);\n\n if (isFunction(result.components)) {\n const cmps = result.components();\n cmps.length > 0 && cmps.reset(newComponents, opts);\n } else {\n result.components = newComponents;\n }\n }\n\n return result;\n });\n};\n\nexport default class Components extends Backbone.Collection {\n initialize(models, opt = {}) {\n this.opt = opt;\n this.listenTo(this, 'add', this.onAdd);\n this.listenTo(this, 'remove', this.removeChildren);\n this.listenTo(this, 'reset', this.resetChildren);\n const { em, config } = opt;\n this.config = config;\n this.em = em;\n this.domc = opt.domc || (em && em.get('DomComponents'));\n }\n\n resetChildren(models, opts = {}) {\n const coll = this;\n const prev = opts.previousModels || [];\n const toRemove = prev.filter(prev => !models.get(prev.cid));\n const newIds = getComponentIds(models);\n opts.keepIds = getComponentIds(prev).filter(pr => newIds.indexOf(pr) >= 0);\n toRemove.forEach(md => this.removeChildren(md, coll, opts));\n models.each(model => this.onAdd(model));\n }\n\n resetFromString(input = '', opts = {}) {\n opts.keepIds = getComponentIds(this);\n const { domc } = this;\n const allByID = domc?.allById() || {};\n const parsed = this.parseString(input, opts);\n const cmps = isArray(parsed) ? parsed : [parsed];\n const newCmps = getComponentsFromDefs(cmps, allByID, opts);\n this.reset(newCmps, opts);\n this.em?.trigger('component:content', this.parent, opts, input);\n }\n\n removeChildren(removed, coll, opts = {}) {\n // Removing a parent component can cause this function\n // to be called with an already removed child element\n if (!removed) {\n return;\n }\n\n const { domc, em } = this;\n const isTemp = opts.temporary || opts.fromUndo;\n removed.prevColl = this; // This one is required for symbols\n\n if (!isTemp) {\n // Remove the component from the global list\n const id = removed.getId();\n const sels = em.get('SelectorManager').getAll();\n const rules = em.get('CssComposer').getAll();\n const canRemoveStyle = (opts.keepIds || []).indexOf(id) < 0;\n const allByID = domc ? domc.allById() : {};\n delete allByID[id];\n\n // Remove all component related styles\n const rulesRemoved = canRemoveStyle\n ? rules.remove(\n rules.filter(r => r.getSelectors().getFullString() === `#${id}`),\n opts\n )\n : [];\n\n // Clean selectors\n sels.remove(rulesRemoved.map(rule => rule.getSelectors().at(0)));\n\n if (!removed.opt.temporary) {\n em.get('Commands').run('core:component-style-clear', {\n target: removed,\n });\n removed.removed();\n removed.trigger('removed');\n em.trigger('component:remove', removed);\n }\n\n const inner = removed.components();\n inner.forEach(it => this.removeChildren(it, coll, opts));\n }\n\n // Remove stuff registered in DomComponents.handleChanges\n const inner = removed.components();\n em.stopListening(inner);\n em.stopListening(removed);\n em.stopListening(removed.get('classes'));\n removed.__postRemove();\n }\n\n model(attrs, options) {\n const { opt } = options.collection;\n const { em } = opt;\n let model;\n const df = em.get('DomComponents').componentTypes;\n options.em = em;\n options.config = opt.config;\n options.componentTypes = df;\n options.domc = opt.domc;\n\n for (let it = 0; it < df.length; it++) {\n const dfId = df[it].id;\n if (dfId == attrs.type) {\n model = df[it].model;\n break;\n }\n }\n\n // If no model found, get the default one\n if (!model) {\n model = df[df.length - 1].model;\n em &&\n attrs.type &&\n em.logWarning(`Component type '${attrs.type}' not found`, {\n attrs,\n options,\n });\n }\n\n return new model(attrs, options);\n }\n\n parseString(value, opt = {}) {\n const { em, domc } = this;\n const cssc = em.get('CssComposer');\n const parsed = em.get('Parser').parseHtml(value);\n // We need this to avoid duplicate IDs\n Component.checkId(parsed.html, parsed.css, domc.componentsById, opt);\n\n if (parsed.css && cssc && !opt.temporary) {\n const { at, ...optsToPass } = opt;\n cssc.addCollection(parsed.css, {\n ...optsToPass,\n extend: 1,\n });\n }\n\n return parsed.html;\n }\n\n add(models, opt = {}) {\n opt.keepIds = [...(opt.keepIds || []), ...getComponentIds(opt.previousModels)];\n\n if (isString(models)) {\n models = this.parseString(models, opt);\n } else if (isArray(models)) {\n models = [...models];\n models.forEach((item, index) => {\n if (isString(item)) {\n const nodes = this.parseString(item, opt);\n models[index] = isArray(nodes) && !nodes.length ? null : nodes;\n }\n });\n }\n\n const isMult = isArray(models);\n models = (isMult ? models : [models]).filter(i => i).map(model => this.processDef(model));\n models = isMult ? flatten(models, 1) : models[0];\n\n const result = Backbone.Collection.prototype.add.apply(this, [models, opt]);\n this.__firstAdd = result;\n return result;\n }\n\n /**\n * Process component definition.\n */\n processDef(mdl) {\n // Avoid processing Models\n if (mdl.cid && mdl.ccid) return mdl;\n const { em, config = {} } = this;\n const { processor } = config;\n let model = mdl;\n\n if (processor) {\n model = { ...model }; // Avoid 'Cannot delete property ...'\n const modelPr = processor(model);\n if (modelPr) {\n each(model, (val, key) => delete model[key]);\n extend(model, modelPr);\n }\n }\n\n // React JSX preset\n if (model.$$typeof && typeof model.props == 'object') {\n model = { ...model };\n model.props = { ...model.props };\n const domc = em.get('DomComponents');\n const parser = em.get('Parser');\n const { parserHtml } = parser;\n\n each(model, (value, key) => {\n if (!includes(['props', 'type'], key)) delete model[key];\n });\n const { props } = model;\n const comps = props.children;\n delete props.children;\n delete model.props;\n const res = parserHtml.splitPropsFromAttr(props);\n model.attributes = res.attrs;\n\n if (comps) {\n model.components = comps;\n }\n if (!model.type) {\n model.type = 'textnode';\n } else if (!domc.getType(model.type)) {\n model.tagName = model.type;\n delete model.type;\n }\n\n extend(model, res.props);\n }\n\n return model;\n }\n\n onAdd(model, c, opts = {}) {\n const { domc, em } = this;\n const style = model.getStyle();\n const avoidInline = em && em.getConfig().avoidInlineStyle;\n domc && domc.Component.ensureInList(model);\n\n if (!isEmpty(style) && !avoidInline && em && em.get && em.getConfig().forceClass && !opts.temporary) {\n const name = model.cid;\n const rule = em.get('CssComposer').setClassRule(name, style);\n model.setStyle({});\n model.addClass(name);\n }\n\n model.__postAdd({ recursive: 1 });\n this.__onAddEnd();\n }\n\n __onAddEnd = debounce(function () {\n // TODO to check symbols on load, probably this might be removed as symbols\n // are always recovered from the model\n // const { domc } = this;\n // const allComp = (domc && domc.allById()) || {};\n // const firstAdd = this.__firstAdd;\n // const toCheck = isArray(firstAdd) ? firstAdd : [firstAdd];\n // const silent = { silent: true };\n // const onAll = comps => {\n // comps.forEach(comp => {\n // const symbol = comp.get(keySymbols);\n // const symbolOf = comp.get(keySymbol);\n // if (symbol && isArray(symbol) && isString(symbol[0])) {\n // comp.set(\n // keySymbols,\n // symbol.map(smb => allComp[smb]).filter(i => i),\n // silent\n // );\n // }\n // if (isString(symbolOf)) {\n // comp.set(keySymbol, allComp[symbolOf], silent);\n // }\n // onAll(comp.components());\n // });\n // };\n // onAll(toCheck);\n });\n}\n","import Backbone from 'backbone';\nimport { isEmpty, each, keys, result } from 'underscore';\nimport Components from '../model/Components';\nimport ComponentsView from './ComponentsView';\nimport Selectors from 'selector_manager/model/Selectors';\nimport { replaceWith } from 'utils/dom';\nimport { setViewEl } from 'utils/mixins';\n\nexport default class ComponentView extends Backbone.View {\n className() {\n return this.getClasses();\n }\n\n tagName() {\n return this.model.get('tagName');\n }\n\n initialize(opt = {}) {\n const model = this.model;\n const config = opt.config || {};\n const em = config.em;\n const modelOpt = model.opt || {};\n const { $el, el } = this;\n this.opts = opt;\n this.modelOpt = modelOpt;\n this.config = config;\n this.em = em || '';\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.attr = model.get('attributes');\n this.classe = this.attr.class || [];\n this.listenTo(model, 'change:style', this.updateStyle);\n this.listenTo(model, 'change:attributes', this.renderAttributes);\n this.listenTo(model, 'change:highlightable', this.updateHighlight);\n this.listenTo(model, 'change:status change:locked', this.updateStatus);\n this.listenTo(model, 'change:script rerender', this.reset);\n this.listenTo(model, 'change:content', this.updateContent);\n this.listenTo(model, 'change', this.handleChange);\n this.listenTo(model, 'active', this.onActive);\n this.listenTo(model, 'disable', this.onDisable);\n $el.data('model', model);\n setViewEl(el, this);\n model.view = this;\n this._getFrame() && model.views.push(this);\n this.initClasses();\n this.initComponents({ avoidRender: 1 });\n this.events = {\n ...this.constructor.getEvents(),\n dragstart: 'handleDragStart',\n };\n this.delegateEvents();\n !modelOpt.temporary && this.init(this._clbObj());\n }\n\n __isDraggable() {\n const { model, config } = this;\n const { draggable } = model.attributes;\n return config.draggableComponents && draggable;\n }\n\n _clbObj() {\n const { em, model, el } = this;\n return {\n editor: em && em.getEditor(),\n model,\n el,\n };\n }\n\n /**\n * Initialize callback\n */\n init() {}\n\n /**\n * Remove callback\n */\n removed() {}\n\n /**\n * Callback executed when the `active` event is triggered on component\n */\n onActive() {}\n\n /**\n * Callback executed when the `disable` event is triggered on component\n */\n onDisable() {}\n\n remove() {\n Backbone.View.prototype.remove.apply(this, arguments);\n const { model, $el } = this;\n const { views } = model;\n const frame = this._getFrame() || {};\n model.components().forEach(comp => {\n const view = comp.getView(frame.model);\n view?.remove();\n });\n this.childrenView?.remove();\n views.splice(views.indexOf(this), 1);\n this.removed(this._clbObj());\n $el.data({ model: '', collection: '', view: '' });\n // delete model.view; // Sorter relies on this property\n return this;\n }\n\n handleDragStart(event) {\n if (!this.__isDraggable()) return false;\n event.stopPropagation();\n event.preventDefault();\n this.em.get('Commands').run('tlb-move', {\n target: this.model,\n event,\n });\n }\n\n initClasses() {\n const { model } = this;\n const event = 'change:classes';\n const classes = model.get('classes');\n\n if (classes instanceof Selectors) {\n this.stopListening(model, event, this.initClasses);\n this.listenTo(model, event, this.initClasses);\n this.listenTo(classes, 'add remove change', this.updateClasses);\n classes.length && this.importClasses();\n }\n }\n\n initComponents(opts = {}) {\n const { model, $el, childrenView } = this;\n const event = 'change:components';\n const comps = model.get('components');\n const toListen = [model, event, this.initComponents];\n\n if (comps instanceof Components) {\n $el.data('collection', comps);\n childrenView && childrenView.remove();\n this.stopListening(...toListen);\n !opts.avoidRender && this.renderChildren();\n this.listenTo(...toListen);\n }\n }\n\n /**\n * Handle any property change\n * @private\n */\n handleChange() {\n const { model } = this;\n const chgArr = keys(model.changed);\n if (chgArr.length === 1 && chgArr[0] === 'status') return;\n model.emitUpdate();\n\n for (let prop in model.changed) {\n model.emitUpdate(prop);\n }\n }\n\n /**\n * Import, if possible, classes inside main container\n * @private\n * */\n importClasses() {\n var clm = this.config.em.get('SelectorManager');\n\n if (clm) {\n this.model.get('classes').each(m => {\n clm.add(m.get('name'));\n });\n }\n }\n\n /**\n * Update item on status change\n * @param {Event} e\n * @private\n * */\n updateStatus(opts = {}) {\n const { em, el, ppfx, model } = this;\n const { extHl } = em ? em.get('Canvas').getConfig() : {};\n const status = model.get('status');\n const selectedCls = `${ppfx}selected`;\n const selectedParentCls = `${selectedCls}-parent`;\n const freezedCls = `${ppfx}freezed`;\n const hoveredCls = `${ppfx}hovered`;\n const noPointerCls = `${ppfx}no-pointer`;\n const toRemove = [selectedCls, selectedParentCls, freezedCls, hoveredCls, noPointerCls];\n const selCls = extHl && !opts.noExtHl ? '' : selectedCls;\n this.$el.removeClass(toRemove.join(' '));\n const actualCls = el.getAttribute('class') || '';\n const cls = [actualCls];\n\n switch (status) {\n case 'selected':\n cls.push(selCls);\n break;\n case 'selected-parent':\n cls.push(selectedParentCls);\n break;\n case 'freezed':\n cls.push(freezedCls);\n break;\n case 'freezed-selected':\n cls.push(freezedCls, selCls);\n break;\n case 'hovered':\n !opts.avoidHover && cls.push(hoveredCls);\n break;\n }\n\n model.get('locked') && cls.push(noPointerCls);\n\n const clsStr = cls.filter(Boolean).join(' ');\n clsStr && el.setAttribute('class', clsStr);\n }\n\n /**\n * Update highlight attribute\n * @private\n * */\n updateHighlight() {\n const { model } = this;\n const isTextable = model.get('textable');\n const hl = model.get('highlightable') && (isTextable || !model.isChildOf('text'));\n this.setAttribute('data-gjs-highlightable', hl ? true : '');\n }\n\n /**\n * Update style attribute\n * @private\n * */\n updateStyle(m, v, opts = {}) {\n const { model, em } = this;\n\n if (em && em.getConfig().avoidInlineStyle && !opts.inline) {\n const style = model.getStyle();\n !isEmpty(style) && model.setStyle(style);\n } else {\n this.setAttribute('style', model.styleToString(opts));\n }\n }\n\n /**\n * Update classe attribute\n * @private\n * */\n updateClasses() {\n const str = this.model.get('classes').pluck('name').join(' ');\n this.setAttribute('class', str);\n\n // Regenerate status class\n this.updateStatus();\n this.onAttrUpdate();\n }\n\n /**\n * Update single attribute\n * @param {[type]} name [description]\n * @param {[type]} value [description]\n */\n setAttribute(name, value) {\n const el = this.$el;\n value ? el.attr(name, value) : el.removeAttr(name);\n }\n\n /**\n * Get classes from attributes.\n * This method is called before initialize\n *\n * @return {Array}|null\n * @private\n * */\n getClasses() {\n return this.model.getClasses().join(' ');\n }\n\n /**\n * Update attributes\n * @private\n * */\n updateAttributes() {\n const attrs = [];\n const { model, $el, el } = this;\n const { textable, type } = model.attributes;\n\n const defaultAttr = {\n id: model.getId(),\n 'data-gjs-type': type || 'default',\n ...(this.__isDraggable() && { draggable: true }),\n ...(textable && { contenteditable: 'false' }),\n };\n\n // Remove all current attributes\n each(el.attributes, attr => attrs.push(attr.nodeName));\n attrs.forEach(attr => $el.removeAttr(attr));\n this.updateStyle();\n this.updateHighlight();\n const attr = {\n ...defaultAttr,\n ...model.getAttributes(),\n };\n\n // Remove all `false` attributes\n keys(attr).forEach(key => attr[key] === false && delete attr[key]);\n\n $el.attr(attr);\n }\n\n /**\n * Update component content\n * @private\n * */\n updateContent() {\n const content = this.model.get('content');\n const hasComps = this.model.components().length;\n this.getChildrenContainer().innerHTML = hasComps ? '' : content;\n }\n\n /**\n * Prevent default helper\n * @param {Event} e\n * @private\n */\n prevDef(e) {\n e.preventDefault();\n }\n\n /**\n * Render component's script\n * @private\n */\n updateScript() {\n const { model, em } = this;\n if (!model.get('script')) return;\n em && em.get('Canvas').getCanvasView().updateScript(this);\n }\n\n /**\n * Return children container\n * Differently from a simple component where children container is the\n * component itself\n * \n * \n * \n * You could have the children container more deeper\n * \n *
\n *
\n *
\n *
\n * \n *
\n *
\n *
\n * @return HTMLElement\n * @private\n */\n getChildrenContainer() {\n var container = this.el;\n\n if (typeof this.getChildrenSelector == 'function') {\n container = this.el.querySelector(this.getChildrenSelector());\n } else if (typeof this.getTemplate == 'function') {\n // Need to find deepest first child\n }\n\n return container;\n }\n\n /**\n * This returns rect informations not affected by the canvas zoom.\n * The method `getBoundingClientRect` doesn't work here and we\n * have to take in account offsetParent\n */\n getOffsetRect() {\n const rect = {};\n const target = this.el;\n let gtop = 0;\n let gleft = 0;\n\n const assignRect = el => {\n const { offsetParent } = el;\n\n if (offsetParent) {\n gtop += offsetParent.offsetTop;\n gleft += offsetParent.offsetLeft;\n assignRect(offsetParent);\n } else {\n rect.top = target.offsetTop + gtop;\n rect.left = target.offsetLeft + gleft;\n rect.bottom = rect.top + target.offsetHeight;\n rect.right = rect.left + target.offsetWidth;\n }\n };\n assignRect(target);\n\n return rect;\n }\n\n isInViewport({ rect } = {}) {\n const { el } = this;\n const elDoc = el.ownerDocument;\n const { body } = elDoc;\n const { frameElement } = elDoc.defaultView;\n const { top, left } = rect || this.getOffsetRect();\n const frame = this._getFrame().getOffsetRect();\n\n return (\n top >= frame.scrollTop &&\n left >= frame.scrollLeft &&\n top <= frame.scrollBottom &&\n left <= frameElement.offsetWidth + body.scrollLeft\n );\n }\n\n scrollIntoView(opts = {}) {\n const rect = this.getOffsetRect();\n const isInViewport = this.isInViewport({ rect });\n\n if (!isInViewport || opts.force) {\n const { el } = this;\n\n // PATCH: scrollIntoView won't work with multiple requests from iframes\n if (opts.behavior !== 'smooth') {\n el.ownerDocument.defaultView.scrollTo(0, rect.top);\n } else {\n el.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n ...opts,\n });\n }\n }\n }\n\n /**\n * Recreate the element of the view\n */\n reset() {\n const { el } = this;\n this.el = '';\n this._ensureElement();\n this._setData();\n replaceWith(el, this.el);\n this.render();\n }\n\n _setData() {\n const { model } = this;\n const collection = model.components();\n const view = this;\n this.$el.data({ model, collection, view });\n }\n\n _getFrame() {\n return this.config.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\nexport default class StyleableModel extends Model {\n parseStyle = ParserHtml().parseStyle;\n\n /**\n * To trigger the style change event on models I have to\n * pass a new object instance\n * @param {Object} prop\n * @return {Object}\n */\n extendStyle(prop) {\n return { ...this.getStyle(), ...prop };\n }\n\n /**\n * Get style object\n * @return {Object}\n */\n getStyle(prop) {\n const style = this.get('style') || {};\n const result = { ...style };\n return prop && isString(prop) ? result[prop] : result;\n }\n\n /**\n * Set new style object\n * @param {Object|string} prop\n * @param {Object} opts\n * @return {Object} Applied properties\n */\n setStyle(prop = {}, opts = {}) {\n if (isString(prop)) {\n prop = this.parseStyle(prop);\n }\n\n const propOrig = this.getStyle(opts);\n const propNew = { ...prop };\n const newStyle = { ...propNew };\n // Remove empty style properties\n keys(newStyle).forEach(prop => {\n if (newStyle[prop] === '') {\n delete newStyle[prop];\n }\n });\n this.set('style', newStyle, opts);\n const diff = shallowDiff(propOrig, propNew);\n // Delete the property used for partial updates\n delete diff.__p;\n keys(diff).forEach(pr => {\n const em = this.em;\n if (opts.noEvent) return;\n this.trigger(`change:style:${pr}`);\n if (em) {\n em.trigger('styleable:change', this, pr, opts);\n em.trigger(`styleable:change:${pr}`, this, pr, opts);\n }\n });\n\n return propNew;\n }\n\n /**\n * Add style property\n * @param {Object|string} prop\n * @param {string} value\n * @example\n * this.addStyle({color: 'red'});\n * this.addStyle('color', 'blue');\n */\n addStyle(prop, value = '', opts = {}) {\n if (typeof prop == 'string') {\n prop = {\n prop: value,\n };\n } else {\n opts = value || {};\n }\n\n prop = this.extendStyle(prop);\n this.setStyle(prop, opts);\n }\n\n /**\n * Remove style property\n * @param {string} prop\n */\n removeStyle(prop) {\n let style = this.getStyle();\n delete style[prop];\n this.setStyle(style);\n }\n\n /**\n * Returns string of style properties\n * @param {Object} [opts={}] Options\n * @return {String}\n */\n styleToString(opts = {}) {\n const result = [];\n const style = this.getStyle(opts);\n\n for (let prop in style) {\n const imp = opts.important;\n const important = isArray(imp) ? imp.indexOf(prop) >= 0 : imp;\n const value = `${style[prop]}${important ? ' !important' : ''}`;\n const propPrv = prop.substr(0, 2) == '__';\n value && !propPrv && result.push(`${prop}:${value};`);\n }\n\n return result.join('');\n }\n\n getSelectors() {\n return this.get('selectors') || this.get('classes');\n }\n\n getSelectorsString(opts) {\n return this.selectorsToString ? this.selectorsToString(opts) : this.getSelectors().getFullString();\n }\n\n _validate(attr, opts) {\n const { style } = attr;\n const em = this.em || opts.em;\n const onBeforeStyle = em?.get('CssComposer')?.getConfig().onBeforeStyle;\n\n if (style && onBeforeStyle) {\n const newStyle = onBeforeStyle({ ...style });\n newStyle &&\n keys(style).map(prop => {\n if (isUndefined(newStyle[prop])) delete attr.style[prop];\n });\n newStyle &&\n keys(newStyle).map(prop => {\n attr.style[prop] = newStyle[prop];\n });\n }\n\n return true;\n }\n}\n","import { isFunction } from 'underscore';\nimport { View, Model } from '../../common';\n\nexport default {\n types: [],\n\n initialize(models, opts = {}) {\n const { em } = opts;\n this.em = em;\n this.opts = opts;\n this.model = (attrs = {}, options = {}) => {\n let Model, View, type;\n\n if (attrs && attrs.type) {\n const baseType = this.getBaseType();\n type = this.getType(attrs.type);\n Model = type ? type.model : baseType.model;\n View = type ? type.view : baseType.view;\n } else {\n const typeFound = this.recognizeType(attrs);\n type = typeFound.type;\n Model = type.model;\n View = type.view;\n attrs = typeFound.attributes;\n }\n\n const model = new Model(attrs, { ...options, em });\n model.typeView = View;\n return model;\n };\n const init = this.init && this.init.bind(this);\n init && init();\n },\n\n /**\n * Recognize type by any value\n * @param {mixed} value\n * @return {Object} Found type\n */\n recognizeType(value) {\n const types = this.getTypes();\n\n for (let i = 0; i < types.length; i++) {\n const type = types[i];\n let typeFound = type.isType(value);\n typeFound = typeof typeFound == 'boolean' && typeFound ? { type: type.id } : typeFound;\n\n if (typeFound) {\n return {\n type,\n attributes: typeFound,\n };\n }\n }\n\n // If, for any reason, the type is not found it'll return the base one\n return {\n type: this.getBaseType(),\n attributes: value,\n };\n },\n\n /**\n * Returns the base type (last object in the stack)\n * @return {Object}\n */\n getBaseType() {\n const types = this.getTypes();\n return types[types.length - 1];\n },\n\n /**\n * Get types\n * @return {Array}\n */\n getTypes() {\n return this.types;\n },\n\n /**\n * Get type\n * @param {string} id Type ID\n * @return {Object} Type definition\n */\n getType(id) {\n const types = this.getTypes();\n\n for (let i = 0; i < types.length; i++) {\n const type = types[i];\n if (type.id === id) {\n return type;\n }\n }\n },\n\n /**\n * Add new type\n * @param {string} id Type ID\n * @param {Object} definition Definition of the type. Each definition contains\n * `model` (business logic), `view` (presentation logic)\n * and `isType` function which recognize the type of the\n * passed entity\n * addType('my-type', {\n * model: {},\n * view: {},\n * isType: (value) => {},\n * })\n */\n addType(id, definition) {\n const type = this.getType(id);\n const baseType = this.getBaseType();\n const ModelInst = type ? type.model : baseType.model;\n const ViewInst = type ? type.view : baseType.view;\n let { model, view, isType } = definition;\n model = model instanceof Model || isFunction(model) ? model : ModelInst.extend(model || {});\n view = view instanceof View || isFunction(view) ? view : ViewInst.extend(view || {});\n\n // New API\n if (this.extendViewApi && !definition.model && !definition.view) {\n view = view.extend(definition);\n }\n\n if (type) {\n type.model = model;\n type.view = view;\n type.isType = isType || type.isType;\n } else {\n definition.id = id;\n definition.model = model;\n definition.view = view;\n definition.isType =\n isType ||\n function (value) {\n if (value && value.type == id) {\n return true;\n }\n };\n this.getTypes().unshift(definition);\n }\n },\n};\n","import Backbone from 'backbone';\n\nconst $ = Backbone.$;\n\nexport default class Input extends Backbone.View {\n template() {\n return ``;\n }\n\n inputClass() {\n return `${this.ppfx}field`;\n }\n\n holderClass() {\n return `${this.ppfx}input-holder`;\n }\n\n constructor(opts = {}) {\n super(opts);\n const ppfx = opts.ppfx || '';\n this.opts = opts;\n this.ppfx = ppfx;\n this.em = opts.target || {};\n !opts.onChange && this.listenTo(this.model, 'change:value', this.handleModelChange);\n }\n\n /**\n * Fired when the element of the property is updated\n */\n elementUpdated() {\n this.model.trigger('el:change');\n }\n\n /**\n * Set value to the input element\n * @param {string} value\n */\n setValue(value) {\n const model = this.model;\n let val = value || model.get('defaults');\n const input = this.getInputEl();\n input && (input.value = val);\n }\n\n /**\n * Updates the view when the model is changed\n * */\n handleModelChange(model, value, opts) {\n this.setValue(value, opts);\n }\n\n /**\n * Handled when the view is changed\n */\n handleChange(e) {\n e.stopPropagation();\n const value = this.getInputEl().value;\n this.__onInputChange(value);\n this.elementUpdated();\n }\n\n __onInputChange(value) {\n this.model.set({ value }, { fromInput: 1 });\n }\n\n /**\n * Get the input element\n * @return {HTMLElement}\n */\n getInputEl() {\n if (!this.inputEl) {\n const { model, opts } = this;\n const type = opts.type || 'text';\n const plh = model.get('placeholder') || model.get('defaults') || model.get('default') || '';\n this.inputEl = $(``);\n }\n\n return this.inputEl.get(0);\n }\n\n render() {\n this.inputEl = null;\n const el = this.$el;\n el.addClass(this.inputClass());\n el.html(this.template());\n el.find(`.${this.holderClass()}`).append(this.getInputEl());\n return this;\n }\n}\n\nInput.prototype.events = {\n change: 'handleChange',\n};\n","import Backbone from 'backbone';\nimport { isUndefined } from 'underscore';\nimport ColorPicker from '../../utils/ColorPicker';\nimport Input from './Input';\n\nconst { $ } = Backbone;\n$ && ColorPicker($);\n\nconst getColor = color => {\n const name = color.getFormat() === 'name' && color.toName();\n const cl = color.getAlpha() == 1 ? color.toHexString() : color.toRgbString();\n return name || cl.replace(/ /g, '');\n};\n\nexport default class InputColor extends Input {\n template() {\n const ppfx = this.ppfx;\n return `\n
\n
\n
\n
\n
\n
\n `;\n }\n\n inputClass() {\n const ppfx = this.ppfx;\n return `${ppfx}field ${ppfx}field-color`;\n }\n\n holderClass() {\n return `${this.ppfx}input-holder`;\n }\n\n remove() {\n Input.prototype.remove.apply(this, arguments);\n this.colorEl.spectrum('destroy');\n }\n\n handleChange(e) {\n e.stopPropagation();\n const { value } = e.target;\n if (isUndefined(value)) return;\n this.__onInputChange(value);\n }\n\n __onInputChange(val) {\n const { model, opts } = this;\n const { onChange } = opts;\n let value = val;\n const colorEl = this.getColorEl();\n\n // Check the color by using the ColorPicker's parser\n if (colorEl) {\n colorEl.spectrum('set', value);\n const tc = colorEl.spectrum('get');\n const color = value && getColor(tc);\n color && (value = color);\n }\n\n onChange ? onChange(value) : model.set({ value }, { fromInput: 1 });\n }\n\n /**\n * Set value to the model\n * @param {string} val\n * @param {Object} opts\n */\n setValue(val, opts = {}) {\n const { model } = this;\n const def = !isUndefined(opts.def) ? opts.def : model.get('defaults');\n const value = !isUndefined(val) ? val : !isUndefined(def) ? def : '';\n const inputEl = this.getInputEl();\n const colorEl = this.getColorEl();\n const valueClr = value != 'none' ? value : '';\n inputEl.value = value;\n colorEl.get(0).style.backgroundColor = valueClr;\n\n // This prevents from adding multiple thumbs in spectrum\n if (opts.fromTarget || (opts.fromInput && !opts.avoidStore)) {\n colorEl.spectrum('set', valueClr);\n this.noneColor = value == 'none';\n }\n }\n\n /**\n * Get the color input element\n * @return {HTMLElement}\n */\n getColorEl() {\n if (!this.colorEl) {\n const { em, model, opts } = this;\n const self = this;\n const ppfx = this.ppfx;\n const { onChange } = opts;\n\n var colorEl = $(`
`);\n var cpStyle = colorEl.get(0).style;\n var elToAppend = em && em.config ? em.config.el : '';\n var colorPickerConfig = (em && em.getConfig && em.getConfig().colorPicker) || {};\n\n let changed = false;\n let movedColor = '';\n let previousColor;\n this.$el.find('[data-colorp-c]').append(colorEl);\n\n const handleChange = (value, complete = true) => {\n if (onChange) {\n onChange(value, !complete);\n } else {\n complete && model.setValueFromInput(0, false); // for UndoManager\n model.setValueFromInput(value, complete);\n }\n };\n\n colorEl.spectrum({\n color: model.getValue() || false,\n containerClassName: `${ppfx}one-bg ${ppfx}two-color`,\n appendTo: elToAppend || 'body',\n maxSelectionSize: 8,\n showPalette: true,\n showAlpha: true,\n chooseText: 'Ok',\n cancelText: '⨯',\n palette: [],\n\n // config expanded here so that the functions below are not overridden\n ...colorPickerConfig,\n ...(model.get('colorPicker') || {}),\n\n move(color) {\n const cl = getColor(color);\n movedColor = cl;\n cpStyle.backgroundColor = cl;\n handleChange(cl, false);\n },\n change(color) {\n changed = true;\n const cl = getColor(color);\n cpStyle.backgroundColor = cl;\n handleChange(cl);\n self.noneColor = 0;\n },\n show(color) {\n changed = false;\n movedColor = '';\n previousColor = onChange ? model.getValue({ noDefault: true }) : getColor(color);\n },\n hide() {\n if (!changed && (previousColor || onChange)) {\n if (self.noneColor) {\n previousColor = '';\n }\n cpStyle.backgroundColor = previousColor;\n colorEl.spectrum('set', previousColor);\n handleChange(previousColor, false);\n }\n },\n });\n\n if (em && em.on) {\n this.listenTo(em, 'component:selected', () => {\n movedColor && handleChange(movedColor);\n changed = true;\n movedColor = '';\n colorEl.spectrum('hide');\n });\n }\n\n this.colorEl = colorEl;\n }\n return this.colorEl;\n }\n\n render() {\n Input.prototype.render.call(this);\n // This will make the color input available on render\n this.getColorEl();\n return this;\n }\n}\n","// Without jquery I have to update few stuff\n//\n// Spectrum Colorpicker v1.8.0\n// https://github.com/bgrins/spectrum\n// Author: Brian Grinstead\n// License: MIT\nimport { hasWin } from './mixins';\n\nexport default function ($, undefined) {\n 'use strict';\n if (!hasWin()) return;\n\n var defaultOpts = {\n // Callbacks\n beforeShow: noop,\n move: noop,\n change: noop,\n show: noop,\n hide: noop,\n\n // Options\n color: false,\n flat: false,\n showInput: false,\n allowEmpty: false,\n showButtons: true,\n clickoutFiresChange: true,\n showInitial: false,\n showPalette: false,\n showPaletteOnly: false,\n hideAfterPaletteSelect: false,\n togglePaletteOnly: false,\n showSelectionPalette: true,\n localStorageKey: false,\n appendTo: 'body',\n maxSelectionSize: 7,\n cancelText: 'cancel',\n chooseText: 'choose',\n togglePaletteMoreText: 'more',\n togglePaletteLessText: 'less',\n clearText: 'Clear Color Selection',\n noColorSelectedText: 'No Color Selected',\n preferredFormat: false,\n className: '', // Deprecated - use containerClassName and replacerClassName instead.\n containerClassName: '',\n replacerClassName: '',\n showAlpha: false,\n theme: 'sp-light',\n palette: [['#ffffff', '#000000', '#ff0000', '#ff8000', '#ffff00', '#008000', '#0000ff', '#4b0082', '#9400d3']],\n selectionPalette: [],\n disabled: false,\n offset: null,\n },\n spectrums = [],\n IE = !!/msie/i.exec(window.navigator.userAgent),\n rgbaSupport = (function () {\n function contains(str, substr) {\n return !!~('' + str).indexOf(substr);\n }\n\n var elem = document.createElement('div');\n var style = elem.style;\n style.cssText = 'background-color:rgba(0,0,0,.5)';\n return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla');\n })(),\n replaceInput = [\n \"
\",\n \"
\",\n \"
\",\n '
',\n ].join(''),\n markup = (function () {\n // IE does not support gradients with multiple stops, so we need to simulate\n // that for the rainbow slider with 8 divs that each have a single gradient\n var gradientFix = '';\n if (IE) {\n for (var i = 1; i <= 6; i++) {\n gradientFix += \"
\";\n }\n }\n\n return [\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n \"\",\n '
',\n '
',\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n \"
\",\n '
',\n '
',\n '
',\n \"
\",\n '
',\n \"
\",\n \"
\",\n gradientFix,\n '
',\n '
',\n \"
\",\n '
',\n \"
\",\n \"\",\n '
',\n \"
\",\n \"
\",\n \"\",\n \"\",\n '
',\n '
',\n '
',\n ].join('');\n })();\n\n function paletteTemplate(p, color, className, opts) {\n var html = [];\n for (var i = 0; i < p.length; i++) {\n var current = p[i];\n if (current) {\n var tiny = tinycolor(current);\n var c = tiny.toHsl().l < 0.5 ? 'sp-thumb-el sp-thumb-dark' : 'sp-thumb-el sp-thumb-light';\n c += tinycolor.equals(color, current) ? ' sp-thumb-active' : '';\n var formattedString = tiny.toString(opts.preferredFormat || 'rgb');\n var swatchStyle = rgbaSupport ? 'background-color:' + tiny.toRgbString() : 'filter:' + tiny.toFilter();\n html.push(\n ''\n );\n } else {\n var cls = 'sp-clear-display';\n html.push(\n $('
')\n .append(\n $('').attr(\n 'title',\n opts.noColorSelectedText\n )\n )\n .html()\n );\n }\n }\n return \"
\" + html.join('') + '
';\n }\n\n function hideAll() {\n for (var i = 0; i < spectrums.length; i++) {\n if (spectrums[i]) {\n spectrums[i].hide();\n }\n }\n }\n\n function instanceOptions(o, callbackContext) {\n var opts = $.extend({}, defaultOpts, o);\n opts.callbacks = {\n move: bind(opts.move, callbackContext),\n change: bind(opts.change, callbackContext),\n show: bind(opts.show, callbackContext),\n hide: bind(opts.hide, callbackContext),\n beforeShow: bind(opts.beforeShow, callbackContext),\n };\n return opts;\n }\n\n function spectrum(element, o) {\n var opts = instanceOptions(o, element),\n flat = opts.flat,\n showSelectionPalette = opts.showSelectionPalette,\n localStorageKey = opts.localStorageKey,\n theme = opts.theme,\n callbacks = opts.callbacks,\n resize = throttle(reflow, 10),\n visible = false,\n isDragging = false,\n isDefault = true,\n dragWidth = 0,\n dragHeight = 0,\n dragHelperHeight = 0,\n slideHeight = 0,\n slideWidth = 0,\n alphaWidth = 0,\n alphaSlideHelperWidth = 0,\n slideHelperHeight = 0,\n currentHue = 0,\n currentSaturation = 0,\n currentValue = 0,\n currentAlpha = 1,\n palette = [],\n paletteArray = [],\n paletteLookup = {},\n selectionPalette = opts.selectionPalette.slice(0),\n maxSelectionSize = opts.maxSelectionSize,\n draggingClass = 'sp-dragging',\n shiftMovementDirection = null;\n\n var doc = element.ownerDocument,\n body = doc.body,\n boundElement = $(element),\n disabled = false,\n container = $(markup, doc).addClass(theme),\n pickerContainer = container.find('.sp-picker-container'),\n dragger = container.find('.sp-color'),\n dragHelper = container.find('.sp-dragger'),\n slider = container.find('.sp-hue'),\n slideHelper = container.find('.sp-slider'),\n alphaSliderInner = container.find('.sp-alpha-inner'),\n alphaSlider = container.find('.sp-alpha'),\n alphaSlideHelper = container.find('.sp-alpha-handle'),\n textInput = container.find('.sp-input'),\n paletteContainer = container.find('.sp-palette'),\n initialColorContainer = container.find('.sp-initial'),\n cancelButton = container.find('.sp-cancel'),\n clearButton = container.find('.sp-clear'),\n chooseButton = container.find('.sp-choose'),\n toggleButton = container.find('.sp-palette-toggle'),\n isInput = boundElement.is('input'),\n isInputTypeColor = isInput && boundElement.attr('type') === 'color' && inputTypeColorSupport(),\n shouldReplace = isInput && !flat,\n replacer = shouldReplace\n ? $(replaceInput).addClass(theme).addClass(opts.className).addClass(opts.replacerClassName)\n : $([]),\n offsetElement = shouldReplace ? replacer : boundElement,\n previewElement = replacer.find('.sp-preview-inner'),\n initialColor = opts.color || (isInput && boundElement.val()),\n colorOnShow = false,\n currentPreferredFormat = opts.preferredFormat,\n clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange,\n isEmpty = !initialColor,\n allowEmpty = opts.allowEmpty && !isInputTypeColor;\n\n function applyOptions() {\n if (opts.showPaletteOnly) {\n opts.showPalette = true;\n }\n\n toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText);\n\n if (opts.palette) {\n palette = opts.palette.slice(0);\n paletteArray = $.isArray(palette[0]) ? palette : [palette];\n paletteLookup = {};\n for (var i = 0; i < paletteArray.length; i++) {\n for (var j = 0; j < paletteArray[i].length; j++) {\n var rgb = tinycolor(paletteArray[i][j]).toRgbString();\n paletteLookup[rgb] = true;\n }\n }\n }\n\n container.toggleClass('sp-flat', flat);\n container.toggleClass('sp-input-disabled', !opts.showInput);\n container.toggleClass('sp-alpha-enabled', opts.showAlpha);\n container.toggleClass('sp-clear-enabled', allowEmpty);\n container.toggleClass('sp-buttons-disabled', !opts.showButtons);\n container.toggleClass('sp-palette-buttons-disabled', !opts.togglePaletteOnly);\n container.toggleClass('sp-palette-disabled', !opts.showPalette);\n container.toggleClass('sp-palette-only', opts.showPaletteOnly);\n container.toggleClass('sp-initial-disabled', !opts.showInitial);\n container.addClass(opts.className).addClass(opts.containerClassName);\n\n reflow();\n }\n\n function initialize() {\n if (IE) {\n container.find('*:not(input)').attr('unselectable', 'on');\n }\n\n applyOptions();\n\n if (shouldReplace) {\n boundElement.after(replacer).hide();\n }\n\n if (!allowEmpty) {\n clearButton.hide();\n }\n\n if (flat) {\n boundElement.after(container).hide();\n } else {\n var appendTo = opts.appendTo === 'parent' ? boundElement.parent() : $(opts.appendTo);\n if (appendTo.length !== 1) {\n appendTo = $('body');\n }\n\n appendTo.append(container);\n }\n\n updateSelectionPaletteFromStorage();\n\n offsetElement.bind('click.spectrum touchstart.spectrum', function (e) {\n if (!disabled) {\n toggle();\n }\n\n e.stopPropagation();\n\n if (!$(e.target).is('input')) {\n e.preventDefault();\n }\n });\n\n if (boundElement.is(':disabled') || opts.disabled === true) {\n disable();\n }\n\n // Prevent clicks from bubbling up to document. This would cause it to be hidden.\n container.click(stopPropagation);\n\n // Handle user typed input\n textInput.change(setFromTextInput);\n textInput.bind('paste', function () {\n setTimeout(setFromTextInput, 1);\n });\n textInput.keydown(function (e) {\n if (e.keyCode == 13) {\n setFromTextInput();\n }\n });\n\n cancelButton.text(opts.cancelText);\n cancelButton.bind('click.spectrum', function (e) {\n e.stopPropagation();\n e.preventDefault();\n revert();\n hide();\n });\n\n clearButton.attr('title', opts.clearText);\n clearButton.bind('click.spectrum', function (e) {\n e.stopPropagation();\n e.preventDefault();\n isEmpty = true;\n move();\n\n if (flat) {\n //for the flat style, this is a change event\n updateOriginalInput(true);\n }\n });\n\n chooseButton.text(opts.chooseText);\n chooseButton.bind('click.spectrum', function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n if (IE && textInput.is(':focus')) {\n textInput.trigger('change');\n }\n\n if (isValid()) {\n updateOriginalInput(true);\n hide();\n }\n });\n\n toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText);\n toggleButton.bind('click.spectrum', function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n opts.showPaletteOnly = !opts.showPaletteOnly;\n\n // To make sure the Picker area is drawn on the right, next to the\n // Palette area (and not below the palette), first move the Palette\n // to the left to make space for the picker, plus 5px extra.\n // The 'applyOptions' function puts the whole container back into place\n // and takes care of the button-text and the sp-palette-only CSS class.\n if (!opts.showPaletteOnly && !flat) {\n container.css('left', '-=' + (pickerContainer.outerWidth(true) + 5));\n }\n applyOptions();\n });\n\n draggable(\n alphaSlider,\n function (dragX, dragY, e) {\n currentAlpha = dragX / alphaWidth;\n isEmpty = false;\n if (e.shiftKey) {\n currentAlpha = Math.round(currentAlpha * 10) / 10;\n }\n\n move();\n },\n dragStart,\n dragStop\n );\n\n draggable(\n slider,\n function (dragX, dragY) {\n currentHue = parseFloat(dragY / slideHeight);\n isEmpty = false;\n if (!opts.showAlpha) {\n currentAlpha = 1;\n }\n move();\n },\n dragStart,\n dragStop\n );\n\n draggable(\n dragger,\n function (dragX, dragY, e) {\n // shift+drag should snap the movement to either the x or y axis.\n if (!e.shiftKey) {\n shiftMovementDirection = null;\n } else if (!shiftMovementDirection) {\n var oldDragX = currentSaturation * dragWidth;\n var oldDragY = dragHeight - currentValue * dragHeight;\n var furtherFromX = Math.abs(dragX - oldDragX) > Math.abs(dragY - oldDragY);\n\n shiftMovementDirection = furtherFromX ? 'x' : 'y';\n }\n\n var setSaturation = !shiftMovementDirection || shiftMovementDirection === 'x';\n var setValue = !shiftMovementDirection || shiftMovementDirection === 'y';\n\n if (setSaturation) {\n currentSaturation = parseFloat(dragX / dragWidth);\n }\n if (setValue) {\n currentValue = parseFloat((dragHeight - dragY) / dragHeight);\n }\n\n isEmpty = false;\n if (!opts.showAlpha) {\n currentAlpha = 1;\n }\n\n move();\n },\n dragStart,\n dragStop\n );\n\n if (!!initialColor) {\n set(initialColor);\n\n // In case color was black - update the preview UI and set the format\n // since the set function will not run (default color is black).\n updateUI();\n currentPreferredFormat = opts.preferredFormat || tinycolor(initialColor).getFormat();\n\n addColorToSelectionPalette(initialColor);\n } else {\n updateUI();\n }\n\n if (flat) {\n show();\n }\n\n function paletteElementClick(e) {\n if (e.data && e.data.ignore) {\n set($(e.target).closest('.sp-thumb-el').data('color'));\n move();\n } else {\n set($(e.target).closest('.sp-thumb-el').data('color'));\n move();\n if (opts.hideAfterPaletteSelect) {\n updateOriginalInput(true);\n hide();\n }\n }\n\n return false;\n }\n\n var paletteEvent = IE ? 'mousedown.spectrum' : 'click.spectrum touchstart.spectrum';\n paletteContainer.delegate('.sp-thumb-el', paletteEvent, paletteElementClick);\n initialColorContainer.delegate('.sp-thumb-el:nth-child(1)', paletteEvent, { ignore: true }, paletteElementClick);\n }\n\n function updateSelectionPaletteFromStorage() {\n if (localStorageKey && window.localStorage) {\n // Migrate old palettes over to new format. May want to remove this eventually.\n try {\n var oldPalette = window.localStorage[localStorageKey].split(',#');\n if (oldPalette.length > 1) {\n delete window.localStorage[localStorageKey];\n $.each(oldPalette, function (i, c) {\n addColorToSelectionPalette(c);\n });\n }\n } catch (e) {}\n\n try {\n selectionPalette = window.localStorage[localStorageKey].split(';');\n } catch (e) {}\n }\n }\n\n function addColorToSelectionPalette(color) {\n if (showSelectionPalette) {\n var rgb = tinycolor(color).toRgbString();\n if (!paletteLookup[rgb] && $.inArray(rgb, selectionPalette) === -1) {\n selectionPalette.push(rgb);\n while (selectionPalette.length > maxSelectionSize) {\n selectionPalette.shift();\n }\n }\n\n if (localStorageKey && window.localStorage) {\n try {\n window.localStorage[localStorageKey] = selectionPalette.join(';');\n } catch (e) {}\n }\n }\n }\n\n function getUniqueSelectionPalette() {\n var unique = [];\n if (opts.showPalette) {\n for (var i = 0; i < selectionPalette.length; i++) {\n var rgb = tinycolor(selectionPalette[i]).toRgbString();\n\n if (!paletteLookup[rgb]) {\n unique.push(selectionPalette[i]);\n }\n }\n }\n\n return unique.reverse().slice(0, opts.maxSelectionSize);\n }\n\n function drawPalette() {\n var currentColor = get();\n\n var html = $.map(paletteArray, function (palette, i) {\n return paletteTemplate(palette, currentColor, 'sp-palette-row sp-palette-row-' + i, opts);\n });\n\n updateSelectionPaletteFromStorage();\n\n if (selectionPalette) {\n html.push(\n paletteTemplate(getUniqueSelectionPalette(), currentColor, 'sp-palette-row sp-palette-row-selection', opts)\n );\n }\n\n paletteContainer.html(html.join(''));\n }\n\n function drawInitial() {\n if (opts.showInitial) {\n var initial = colorOnShow;\n var current = get();\n initialColorContainer.html(paletteTemplate([initial, current], current, 'sp-palette-row-initial', opts));\n }\n }\n\n function dragStart() {\n if (dragHeight <= 0 || dragWidth <= 0 || slideHeight <= 0) {\n reflow();\n }\n isDragging = true;\n container.addClass(draggingClass);\n shiftMovementDirection = null;\n boundElement.trigger('dragstart.spectrum', [get()]);\n }\n\n function dragStop() {\n isDragging = false;\n container.removeClass(draggingClass);\n boundElement.trigger('dragstop.spectrum', [get()]);\n }\n\n function setFromTextInput() {\n var value = textInput.val();\n\n if ((value === null || value === '') && allowEmpty) {\n set(null);\n updateOriginalInput(true);\n } else {\n var tiny = tinycolor(value);\n if (tiny.isValid()) {\n set(tiny);\n updateOriginalInput(true);\n } else {\n textInput.addClass('sp-validation-error');\n }\n }\n }\n\n function toggle() {\n if (visible) {\n hide();\n } else {\n show();\n }\n }\n\n function show() {\n var event = $.Event('beforeShow.spectrum');\n\n if (visible) {\n reflow();\n return;\n }\n\n boundElement.trigger('beforeShow.spectrum', [get()]);\n\n if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) {\n return;\n }\n\n hideAll();\n visible = true;\n\n var $doc = $(doc);\n $doc.bind('keydown.spectrum', onkeydown);\n $doc.bind('click.spectrum', clickout);\n $(window).bind('resize.spectrum', resize);\n replacer.addClass('sp-active');\n container.removeClass('sp-hidden');\n\n reflow();\n updateUI();\n\n colorOnShow = get();\n\n drawInitial();\n callbacks.show(colorOnShow);\n boundElement.trigger('show.spectrum', [colorOnShow]);\n }\n\n function onkeydown(e) {\n // Close on ESC\n if (e.keyCode === 27) {\n hide();\n }\n }\n\n function clickout(e) {\n // Return on right click.\n if (e.button == 2) {\n return;\n }\n\n // If a drag event was happening during the mouseup, don't hide\n // on click.\n if (isDragging) {\n return;\n }\n\n if (clickoutFiresChange) {\n updateOriginalInput(true);\n } else {\n revert();\n }\n hide();\n }\n\n function hide() {\n // Return if hiding is unnecessary\n if (!visible || flat) {\n return;\n }\n visible = false;\n\n $(doc).unbind('keydown.spectrum', onkeydown);\n $(doc).unbind('click.spectrum', clickout);\n $(window).unbind('resize.spectrum', resize);\n\n replacer.removeClass('sp-active');\n container.addClass('sp-hidden');\n\n callbacks.hide(get());\n boundElement.trigger('hide.spectrum', [get()]);\n }\n\n function revert() {\n set(colorOnShow, true);\n }\n\n function set(color, ignoreFormatChange) {\n if (tinycolor.equals(color, get())) {\n // Update UI just in case a validation error needs\n // to be cleared.\n updateUI();\n return;\n }\n\n var newColor, newHsv;\n if (!color && allowEmpty) {\n isEmpty = true;\n } else {\n isEmpty = false;\n isDefault = !color; // if no color is available an empty string will be passed. tinycolor will then set it to #000\n newColor = tinycolor(color);\n newHsv = newColor.toHsv();\n\n currentHue = (newHsv.h % 360) / 360;\n currentSaturation = newHsv.s;\n currentValue = newHsv.v;\n currentAlpha = newHsv.a;\n }\n updateUI();\n\n if (newColor && newColor.isValid() && !ignoreFormatChange) {\n currentPreferredFormat = opts.preferredFormat || newColor.getFormat();\n }\n }\n\n function get(opts) {\n opts = opts || {};\n\n if (allowEmpty && isEmpty) {\n return null;\n }\n\n return tinycolor.fromRatio(\n {\n h: currentHue,\n s: currentSaturation,\n v: currentValue,\n a: Math.round(currentAlpha * 100) / 100,\n },\n { format: opts.format || currentPreferredFormat }\n );\n }\n\n function isValid() {\n return !textInput.hasClass('sp-validation-error');\n }\n\n function move() {\n updateUI();\n\n callbacks.move(get());\n boundElement.trigger('move.spectrum', [get()]);\n }\n\n function updateUI() {\n textInput.removeClass('sp-validation-error');\n\n updateHelperLocations();\n\n // Update dragger background color (gradients take care of saturation and value).\n var flatColor = tinycolor.fromRatio({ h: currentHue, s: 1, v: 1 });\n dragger.css('background-color', flatColor.toHexString());\n\n // Get a format that alpha will be included in (hex and names ignore alpha)\n var format = currentPreferredFormat;\n if (currentAlpha < 1 && !(currentAlpha === 0 && format === 'name')) {\n if (format === 'hex' || format === 'hex3' || format === 'hex6' || format === 'name') {\n format = 'rgb';\n }\n }\n\n var realColor = get({ format: format }),\n displayColor = '';\n\n //reset background info for preview element\n previewElement.removeClass('sp-clear-display');\n previewElement.css('background-color', 'transparent');\n\n if (!realColor && allowEmpty) {\n // Update the replaced elements background with icon indicating no color selection\n previewElement.addClass('sp-clear-display');\n } else {\n var realHex = realColor.toHexString(),\n realRgb = realColor.toRgbString();\n\n // Update the replaced elements background color (with actual selected color)\n if (rgbaSupport || realColor.alpha === 1) {\n previewElement.css('background-color', realRgb);\n } else {\n previewElement.css('background-color', 'transparent');\n previewElement.css('filter', realColor.toFilter());\n }\n\n if (opts.showAlpha) {\n var rgb = realColor.toRgb();\n rgb.a = 0;\n var realAlpha = tinycolor(rgb).toRgbString();\n var gradient = 'linear-gradient(left, ' + realAlpha + ', ' + realHex + ')';\n\n if (IE) {\n alphaSliderInner.css('filter', tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex));\n } else {\n alphaSliderInner.css('background', '-webkit-' + gradient);\n alphaSliderInner.css('background', '-moz-' + gradient);\n alphaSliderInner.css('background', '-ms-' + gradient);\n // Use current syntax gradient on unprefixed property.\n alphaSliderInner.css('background', 'linear-gradient(to right, ' + realAlpha + ', ' + realHex + ')');\n }\n }\n\n displayColor = realColor.toString(format);\n }\n\n // Update the text entry input as it changes happen\n if (opts.showInput) {\n textInput.val(displayColor);\n }\n\n if (opts.showPalette) {\n drawPalette();\n }\n\n drawInitial();\n }\n\n function updateHelperLocations() {\n var s = currentSaturation;\n var v = currentValue;\n\n if (allowEmpty && isEmpty) {\n //if selected color is empty, hide the helpers\n alphaSlideHelper.hide();\n slideHelper.hide();\n dragHelper.hide();\n } else {\n //make sure helpers are visible\n alphaSlideHelper.show();\n slideHelper.show();\n dragHelper.show();\n\n // Where to show the little circle in that displays your current selected color\n var dragX = s * dragWidth;\n var dragY = dragHeight - v * dragHeight;\n dragX = Math.max(-dragHelperHeight, Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight));\n dragY = Math.max(-dragHelperHeight, Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight));\n dragHelper.css({\n top: dragY + 'px',\n left: dragX + 'px',\n });\n\n var alphaX = currentAlpha * alphaWidth;\n alphaSlideHelper.css({\n left: alphaX - alphaSlideHelperWidth / 2 + 'px',\n });\n\n // Where to show the bar that displays your current selected hue\n var slideY = currentHue * slideHeight;\n slideHelper.css({\n top: slideY - slideHelperHeight + 'px',\n });\n }\n }\n\n function updateOriginalInput(fireCallback) {\n var color = get(),\n displayColor = '',\n hasChanged = isDefault ? true : !tinycolor.equals(color, colorOnShow);\n\n if (color) {\n displayColor = color.toString(currentPreferredFormat);\n // Update the selection palette with the current color\n !visible && addColorToSelectionPalette(color);\n }\n\n if (isInput) {\n boundElement.val(displayColor);\n }\n\n if (fireCallback && hasChanged) {\n callbacks.change(color);\n boundElement.trigger('change', [color]);\n }\n }\n\n function reflow() {\n if (!visible) {\n return; // Calculations would be useless and wouldn't be reliable anyways\n }\n dragWidth = dragger.width();\n dragHeight = dragger.height();\n dragHelperHeight = dragHelper.height();\n slideWidth = slider.width();\n slideHeight = slider.height();\n slideHelperHeight = slideHelper.height();\n alphaWidth = alphaSlider.width();\n alphaSlideHelperWidth = alphaSlideHelper.width();\n\n if (!flat) {\n container.css('position', 'absolute');\n if (opts.offset) {\n container.offset(opts.offset);\n } else {\n container.offset(getOffset(container, offsetElement));\n }\n }\n\n updateHelperLocations();\n\n if (opts.showPalette) {\n drawPalette();\n }\n\n boundElement.trigger('reflow.spectrum');\n }\n\n function destroy() {\n boundElement.show();\n offsetElement.unbind('click.spectrum touchstart.spectrum');\n container.remove();\n replacer.remove();\n spectrums[spect.id] = null;\n }\n\n function option(optionName, optionValue) {\n if (optionName === undefined) {\n return $.extend({}, opts);\n }\n if (optionValue === undefined) {\n return opts[optionName];\n }\n\n opts[optionName] = optionValue;\n\n if (optionName === 'preferredFormat') {\n currentPreferredFormat = opts.preferredFormat;\n }\n applyOptions();\n }\n\n function enable() {\n disabled = false;\n boundElement.attr('disabled', false);\n offsetElement.removeClass('sp-disabled');\n }\n\n function disable() {\n hide();\n disabled = true;\n boundElement.attr('disabled', true);\n offsetElement.addClass('sp-disabled');\n }\n\n function setOffset(coord) {\n opts.offset = coord;\n reflow();\n }\n\n initialize();\n\n var spect = {\n show: show,\n hide: hide,\n toggle: toggle,\n reflow: reflow,\n option: option,\n enable: enable,\n disable: disable,\n offset: setOffset,\n set: function (c) {\n set(c);\n updateOriginalInput();\n },\n get: get,\n destroy: destroy,\n container: container,\n };\n\n spect.id = spectrums.push(spect) - 1;\n\n return spect;\n }\n\n /**\n * checkOffset - get the offset below/above and left/right element depending on screen position\n * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js\n */\n function getOffset(picker, input) {\n var extraY = 0;\n var dpWidth = picker.outerWidth();\n var dpHeight = picker.outerHeight();\n var inputHeight = input.outerHeight();\n var doc = picker[0].ownerDocument;\n var docElem = doc.documentElement;\n var cW = docElem.clientWidth;\n var cH = docElem.clientHeight;\n var scL = $(doc).scrollLeft();\n var scT = $(doc).scrollTop();\n var viewWidth = cW + scL;\n var viewHeight = cH + scT;\n var offset = input.offset();\n\n offset.top += inputHeight;\n\n offset.left -= Math.min(\n offset.left,\n offset.left + dpWidth > viewWidth && viewWidth > dpWidth ? Math.abs(offset.left + dpWidth - viewWidth) : 0\n );\n\n offset.top -= Math.min(\n offset.top,\n offset.top + dpHeight > viewHeight && viewHeight > dpHeight ? Math.abs(dpHeight + inputHeight - extraY) : extraY\n );\n\n return offset;\n }\n\n /**\n * noop - do nothing\n */\n function noop() {}\n\n /**\n * stopPropagation - makes the code only doing this a little easier to read in line\n */\n function stopPropagation(e) {\n e.stopPropagation();\n }\n\n /**\n * Create a function bound to a given object\n * Thanks to underscore.js\n */\n function bind(func, obj) {\n var slice = Array.prototype.slice;\n var args = slice.call(arguments, 2);\n return function () {\n return func.apply(obj, args.concat(slice.call(arguments)));\n };\n }\n\n /**\n * Lightweight drag helper. Handles containment within the element, so that\n * when dragging, the x is within [0,element.width] and y is within [0,element.height]\n */\n function draggable(element, onmove, onstart, onstop) {\n onmove = onmove || function () {};\n onstart = onstart || function () {};\n onstop = onstop || function () {};\n var doc = document;\n var dragging = false;\n var offset = {};\n var maxHeight = 0;\n var maxWidth = 0;\n var hasTouch = 'ontouchstart' in window;\n\n var duringDragEvents = {};\n duringDragEvents['selectstart'] = prevent;\n duringDragEvents['dragstart'] = prevent;\n duringDragEvents['touchmove mousemove'] = move;\n duringDragEvents['touchend mouseup'] = stop;\n\n function prevent(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n if (e.preventDefault) {\n e.preventDefault();\n }\n e.returnValue = false;\n }\n\n function move(e) {\n if (dragging) {\n // Mouseup happened outside of window\n if (IE && doc.documentMode < 9 && !e.button) {\n return stop();\n }\n\n var t0 = e && e.touches && e.touches[0];\n var pageX = (t0 && t0.pageX) || e.pageX;\n var pageY = (t0 && t0.pageY) || e.pageY;\n\n var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth));\n var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight));\n\n if (hasTouch) {\n // Stop scrolling in iOS\n prevent(e);\n }\n\n onmove.apply(element, [dragX, dragY, e]);\n }\n }\n\n function start(e) {\n var rightclick = e.which ? e.which == 3 : e.button == 2;\n\n if (!rightclick && !dragging) {\n if (onstart.apply(element, arguments) !== false) {\n dragging = true;\n maxHeight = $(element).height();\n maxWidth = $(element).width();\n offset = $(element).offset();\n\n $(doc).bind(duringDragEvents);\n $(doc.body).addClass('sp-dragging');\n\n move(e);\n\n prevent(e);\n }\n }\n }\n\n function stop() {\n if (dragging) {\n $(doc).unbind(duringDragEvents);\n $(doc.body).removeClass('sp-dragging');\n\n // Wait a tick before notifying observers to allow the click event\n // to fire in Chrome.\n setTimeout(function () {\n onstop.apply(element, arguments);\n }, 0);\n }\n dragging = false;\n }\n\n $(element).bind('touchstart mousedown', start);\n }\n\n function throttle(func, wait, debounce) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n var throttler = function () {\n timeout = null;\n func.apply(context, args);\n };\n if (debounce) clearTimeout(timeout);\n if (debounce || !timeout) timeout = setTimeout(throttler, wait);\n };\n }\n\n function inputTypeColorSupport() {\n return $.fn.spectrum.inputTypeColorSupport();\n }\n\n /**\n * Define a jQuery plugin\n */\n var dataID = 'spectrum.id';\n $.fn.spectrum = function (opts, extra) {\n if (typeof opts == 'string') {\n var returnValue = this;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var spect = spectrums[$(this).data(dataID)];\n if (spect) {\n var method = spect[opts];\n if (!method) {\n throw new Error(\"Spectrum: no such method: '\" + opts + \"'\");\n }\n\n if (opts == 'get') {\n returnValue = spect.get();\n } else if (opts == 'container') {\n returnValue = spect.container;\n } else if (opts == 'option') {\n returnValue = spect.option.apply(spect, args);\n } else if (opts == 'destroy') {\n spect.destroy();\n $(this).removeData(dataID);\n } else {\n method.apply(spect, args);\n }\n }\n });\n\n return returnValue;\n }\n\n // Initializing a new instance of spectrum\n return this.spectrum('destroy').each(function () {\n var options = $.extend({}, opts, $(this).data());\n var spect = spectrum(this, options);\n $(this).data(dataID, spect.id);\n });\n };\n\n $.fn.spectrum.load = true;\n $.fn.spectrum.loadOpts = {};\n $.fn.spectrum.draggable = draggable;\n $.fn.spectrum.defaults = defaultOpts;\n $.fn.spectrum.inputTypeColorSupport = function inputTypeColorSupport() {\n if (typeof inputTypeColorSupport._cachedResult === 'undefined') {\n var colorInput = $(\"\")[0]; // if color element is supported, value will default to not null\n inputTypeColorSupport._cachedResult = colorInput.type === 'color' && colorInput.value !== '';\n }\n return inputTypeColorSupport._cachedResult;\n };\n\n $.spectrum = {};\n $.spectrum.localization = {};\n $.spectrum.palettes = {};\n\n $.fn.spectrum.processNativeColorInputs = function () {\n var colorInputs = $('input[type=color]');\n if (colorInputs.length && !inputTypeColorSupport()) {\n colorInputs.spectrum({\n preferredFormat: 'hex6',\n });\n }\n };\n\n // TinyColor v1.1.2\n // https://github.com/bgrins/TinyColor\n // Brian Grinstead, MIT License\n\n //(function() {\n\n var trimLeft = /^[\\s,#]+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n math = Math,\n mathRound = math.round,\n mathMin = math.min,\n mathMax = math.max,\n mathRandom = math.random;\n\n var tinycolor = function (color, opts) {\n color = color ? color : '';\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n (this._originalInput = color),\n (this._r = rgb.r),\n (this._g = rgb.g),\n (this._b = rgb.b),\n (this._a = rgb.a),\n (this._roundA = mathRound(100 * this._a) / 100),\n (this._format = opts.format || rgb.format);\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) {\n this._r = mathRound(this._r);\n }\n if (this._g < 1) {\n this._g = mathRound(this._g);\n }\n if (this._b < 1) {\n this._b = mathRound(this._b);\n }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n };\n\n tinycolor.prototype = {\n isDark: function () {\n return this.getBrightness() < 128;\n },\n isLight: function () {\n return !this.isDark();\n },\n isValid: function () {\n return this._ok;\n },\n getOriginalInput: function () {\n return this._originalInput;\n },\n getFormat: function () {\n return this._format;\n },\n getAlpha: function () {\n return this._a;\n },\n getBrightness: function () {\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n setAlpha: function (value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100 * this._a) / 100;\n return this;\n },\n toHsv: function () {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function () {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360),\n s = mathRound(hsv.s * 100),\n v = mathRound(hsv.v * 100);\n return this._a == 1\n ? 'hsv(' + h + ', ' + s + '%, ' + v + '%)'\n : 'hsva(' + h + ', ' + s + '%, ' + v + '%, ' + this._roundA + ')';\n },\n toHsl: function () {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function () {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360),\n s = mathRound(hsl.s * 100),\n l = mathRound(hsl.l * 100);\n return this._a == 1\n ? 'hsl(' + h + ', ' + s + '%, ' + l + '%)'\n : 'hsla(' + h + ', ' + s + '%, ' + l + '%, ' + this._roundA + ')';\n },\n toHex: function (allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function (allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function () {\n return rgbaToHex(this._r, this._g, this._b, this._a);\n },\n toHex8String: function () {\n return '#' + this.toHex8();\n },\n toRgb: function () {\n return {\n r: mathRound(this._r),\n g: mathRound(this._g),\n b: mathRound(this._b),\n a: this._a,\n };\n },\n toRgbString: function () {\n return this._a == 1\n ? 'rgb(' + mathRound(this._r) + ', ' + mathRound(this._g) + ', ' + mathRound(this._b) + ')'\n : 'rgba(' +\n mathRound(this._r) +\n ', ' +\n mathRound(this._g) +\n ', ' +\n mathRound(this._b) +\n ', ' +\n this._roundA +\n ')';\n },\n toPercentageRgb: function () {\n return {\n r: mathRound(bound01(this._r, 255) * 100) + '%',\n g: mathRound(bound01(this._g, 255) * 100) + '%',\n b: mathRound(bound01(this._b, 255) * 100) + '%',\n a: this._a,\n };\n },\n toPercentageRgbString: function () {\n return this._a == 1\n ? 'rgb(' +\n mathRound(bound01(this._r, 255) * 100) +\n '%, ' +\n mathRound(bound01(this._g, 255) * 100) +\n '%, ' +\n mathRound(bound01(this._b, 255) * 100) +\n '%)'\n : 'rgba(' +\n mathRound(bound01(this._r, 255) * 100) +\n '%, ' +\n mathRound(bound01(this._g, 255) * 100) +\n '%, ' +\n mathRound(bound01(this._b, 255) * 100) +\n '%, ' +\n this._roundA +\n ')';\n },\n toName: function () {\n if (this._a === 0) {\n return 'transparent';\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function (secondColor) {\n var hex8String = '#' + rgbaToHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? 'GradientType = 1, ' : '';\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = s.toHex8String();\n }\n\n return (\n 'progid:DXImageTransform.Microsoft.gradient(' +\n gradientType +\n 'startColorstr=' +\n hex8String +\n ',endColorstr=' +\n secondHex8String +\n ')'\n );\n },\n toString: function (format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat =\n !formatSet && hasAlpha && (format === 'hex' || format === 'hex6' || format === 'hex3' || format === 'name');\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === 'name' && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === 'rgb') {\n formattedString = this.toRgbString();\n }\n if (format === 'prgb') {\n formattedString = this.toPercentageRgbString();\n }\n if (format === 'hex' || format === 'hex6') {\n formattedString = this.toHexString();\n }\n if (format === 'hex3') {\n formattedString = this.toHexString(true);\n }\n if (format === 'hex8') {\n formattedString = this.toHex8String();\n }\n if (format === 'name') {\n formattedString = this.toName();\n }\n if (format === 'hsl') {\n formattedString = this.toHslString();\n }\n if (format === 'hsv') {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n\n _applyModification: function (fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function () {\n return this._applyModification(lighten, arguments);\n },\n brighten: function () {\n return this._applyModification(brighten, arguments);\n },\n darken: function () {\n return this._applyModification(darken, arguments);\n },\n desaturate: function () {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function () {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function () {\n return this._applyModification(greyscale, arguments);\n },\n spin: function () {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function (fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function () {\n return this._applyCombination(analogous, arguments);\n },\n complement: function () {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function () {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function () {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function () {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function () {\n return this._applyCombination(tetrad, arguments);\n },\n };\n\n // If input is an object, force 1 into \"1.0\" to handle ratios properly\n // String input requires \"1.0\" as input, so 1 will be treated as 1\n tinycolor.fromRatio = function (color, opts) {\n if (typeof color == 'object') {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === 'a') {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n };\n\n // Given a string or object, convert that input to RGB\n // Possible string inputs:\n //\n // \"red\"\n // \"#f00\" or \"f00\"\n // \"#ff0000\" or \"ff0000\"\n // \"#ff000000\" or \"ff000000\"\n // \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n // \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n // \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n // \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n // \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n // \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n // \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n //\n function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var ok = false;\n var format = false;\n\n if (typeof color == 'string') {\n color = stringInputToObject(color);\n }\n\n if (typeof color == 'object') {\n if (color.hasOwnProperty('r') && color.hasOwnProperty('g') && color.hasOwnProperty('b')) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n } else if (color.hasOwnProperty('h') && color.hasOwnProperty('s') && color.hasOwnProperty('v')) {\n color.s = convertToPercentage(color.s);\n color.v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, color.s, color.v);\n ok = true;\n format = 'hsv';\n } else if (color.hasOwnProperty('h') && color.hasOwnProperty('s') && color.hasOwnProperty('l')) {\n color.s = convertToPercentage(color.s);\n color.l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, color.s, color.l);\n ok = true;\n format = 'hsl';\n }\n\n if (color.hasOwnProperty('a')) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a,\n };\n }\n\n // Conversion Functions\n // --------------------\n\n // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n // \n\n // `rgbToRgb`\n // Handle bounds / percentage checking to conform to CSS color spec\n // \n // *Assumes:* r, g, b in [0, 255] or [0, 1]\n // *Returns:* { r, g, b } in [0, 255]\n function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n }\n\n // `rgbToHsl`\n // Converts an RGB color value to HSL.\n // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n // *Returns:* { h, s, l } in [0,1]\n function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b),\n min = mathMin(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n }\n\n // `hslToRgb`\n // Converts an HSL color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n }\n\n // `rgbToHsv`\n // Converts an RGB color value to HSV\n // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n // *Returns:* { h, s, v } in [0,1]\n function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b),\n min = mathMin(r, g, b);\n var h,\n s,\n v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n }\n\n // `hsvToRgb`\n // Converts an HSV color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n }\n\n // `rgbToHex`\n // Converts an RGB color to hex\n // Assumes r, g, and b are contained in the set [0, 255]\n // Returns a 3 or 6 character hex\n function rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (\n allow3Char &&\n hex[0].charAt(0) == hex[0].charAt(1) &&\n hex[1].charAt(0) == hex[1].charAt(1) &&\n hex[2].charAt(0) == hex[2].charAt(1)\n ) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join('');\n }\n // `rgbaToHex`\n // Converts an RGBA color plus alpha transparency to hex\n // Assumes r, g, b and a are contained in the set [0, 255]\n // Returns an 8 character hex\n function rgbaToHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n ];\n\n return hex.join('');\n }\n\n // `equals`\n // Can be called with any tinycolor input\n tinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) {\n return false;\n }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n };\n tinycolor.random = function () {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom(),\n });\n };\n\n // Modification Functions\n // ----------------------\n // Thanks to less.js for some of the basics here\n // \n\n function desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n\n function saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n\n function greyscale(color) {\n return tinycolor(color).desaturate(100);\n }\n\n function lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n\n function brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * -(amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * -(amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * -(amount / 100))));\n return tinycolor(rgb);\n }\n\n function darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n\n // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n // Values outside of this range will be wrapped into this range.\n function spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (mathRound(hsl.h) + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n }\n\n // Combination Functions\n // ---------------------\n // Thanks to jQuery xColor for some of the ideas behind these\n // \n\n function complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n }\n\n function triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }),\n ];\n }\n\n function tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }),\n ];\n }\n\n function splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n ];\n }\n\n function analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n }\n\n function monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v }));\n v = (v + modification) % 1;\n }\n\n return ret;\n }\n\n // Utility Functions\n // ---------------------\n\n tinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n var w = p * 2 - 1;\n var a = rgb2.a - rgb1.a;\n\n var w1;\n\n if (w * a == -1) {\n w1 = w;\n } else {\n w1 = (w + a) / (1 + w * a);\n }\n\n w1 = (w1 + 1) / 2;\n\n var w2 = 1 - w1;\n\n var rgba = {\n r: rgb2.r * w1 + rgb1.r * w2,\n g: rgb2.g * w1 + rgb1.g * w2,\n b: rgb2.b * w1 + rgb1.b * w2,\n a: rgb2.a * p + rgb1.a * (1 - p),\n };\n\n return tinycolor(rgba);\n };\n\n // Readability Functions\n // ---------------------\n // \n\n // `readability`\n // Analyze the 2 colors and returns an object with the following properties:\n // `brightness`: difference in brightness between the two colors\n // `color`: difference in color/hue between the two colors\n tinycolor.readability = function (color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n var rgb1 = c1.toRgb();\n var rgb2 = c2.toRgb();\n var brightnessA = c1.getBrightness();\n var brightnessB = c2.getBrightness();\n var colorDiff =\n Math.max(rgb1.r, rgb2.r) -\n Math.min(rgb1.r, rgb2.r) +\n Math.max(rgb1.g, rgb2.g) -\n Math.min(rgb1.g, rgb2.g) +\n Math.max(rgb1.b, rgb2.b) -\n Math.min(rgb1.b, rgb2.b);\n\n return {\n brightness: Math.abs(brightnessA - brightnessB),\n color: colorDiff,\n };\n };\n\n // `readable`\n // http://www.w3.org/TR/AERT#color-contrast\n // Ensure that foreground and background color combinations provide sufficient contrast.\n // *Example*\n // tinycolor.isReadable(\"#000\", \"#111\") => false\n tinycolor.isReadable = function (color1, color2) {\n var readability = tinycolor.readability(color1, color2);\n return readability.brightness > 125 && readability.color > 500;\n };\n\n // `mostReadable`\n // Given a base color and a list of possible foreground or background\n // colors for that base, returns the most readable color.\n // *Example*\n // tinycolor.mostReadable(\"#123\", [\"#fff\", \"#000\"]) => \"#000\"\n tinycolor.mostReadable = function (baseColor, colorList) {\n var bestColor = null;\n var bestScore = 0;\n var bestIsReadable = false;\n for (var i = 0; i < colorList.length; i++) {\n // We normalize both around the \"acceptable\" breaking point,\n // but rank brightness constrast higher than hue.\n\n var readability = tinycolor.readability(baseColor, colorList[i]);\n var readable = readability.brightness > 125 && readability.color > 500;\n var score = 3 * (readability.brightness / 125) + readability.color / 500;\n\n if (\n (readable && !bestIsReadable) ||\n (readable && bestIsReadable && score > bestScore) ||\n (!readable && !bestIsReadable && score > bestScore)\n ) {\n bestIsReadable = readable;\n bestScore = score;\n bestColor = tinycolor(colorList[i]);\n }\n }\n return bestColor;\n };\n\n // Big List of Colors\n // ------------------\n // \n var names = (tinycolor.names = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '0ff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000',\n blanchedalmond: 'ffebcd',\n blue: '00f',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n burntsienna: 'ea7e5d',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '0ff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkgrey: 'a9a9a9',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkslategrey: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dimgrey: '696969',\n dodgerblue: '1e90ff',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'f0f',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n grey: '808080',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred: 'cd5c5c',\n indigo: '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgray: 'd3d3d3',\n lightgreen: '90ee90',\n lightgrey: 'd3d3d3',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslategray: '789',\n lightslategrey: '789',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '0f0',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'f0f',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370db',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'db7093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '663399',\n red: 'f00',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n slategrey: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n wheat: 'f5deb3',\n white: 'fff',\n whitesmoke: 'f5f5f5',\n yellow: 'ff0',\n yellowgreen: '9acd32',\n });\n\n // Make it easy to access colors via `hexNames[hex]`\n var hexNames = (tinycolor.hexNames = flip(names));\n\n // Utilities\n // ---------\n\n // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\n function flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n }\n\n // Return a valid alpha value [0,1] with all invalid values being set to 1\n function boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n }\n\n // Take input from [0, n] and return it as [0, 1]\n function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n }\n\n // Force a number between 0 and 1\n function clamp01(val) {\n return mathMin(1, mathMax(0, val));\n }\n\n // Parse a base-16 hex value into a base-10 integer\n function parseIntFromHex(val) {\n return parseInt(val, 16);\n }\n\n // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n // \n function isOnePointZero(n) {\n return typeof n == 'string' && n.indexOf('.') != -1 && parseFloat(n) === 1;\n }\n\n // Check to see if string passed in is a percentage\n function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') != -1;\n }\n\n // Force a hex value to have 2 characters\n function pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n }\n\n // Replace a decimal with it's percentage value\n function convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + '%';\n }\n\n return n;\n }\n\n // Converts a decimal to a hex value\n function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n }\n // Converts a hex value to a decimal\n function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n }\n\n var matchers = (function () {\n // \n var CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n\n // \n var CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = '(?:' + CSS_NUMBER + ')|(?:' + CSS_INTEGER + ')';\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = '[\\\\s|\\\\(]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')\\\\s*\\\\)?';\n var PERMISSIVE_MATCH4 =\n '[\\\\s|\\\\(]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')\\\\s*\\\\)?';\n\n return {\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n };\n })();\n\n // `stringInputToObject`\n // Permissive string parsing. Take in a number of formats, and output an object\n // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n function stringInputToObject(color) {\n color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n a: convertHexToDecimal(match[1]),\n r: parseIntFromHex(match[2]),\n g: parseIntFromHex(match[3]),\n b: parseIntFromHex(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n\n return false;\n }\n\n window.tinycolor = tinycolor;\n //})();\n\n $(function () {\n if ($.fn.spectrum.load) {\n $.fn.spectrum.processNativeColorInputs();\n }\n });\n}\n","import Backbone from 'backbone';\nimport { bindAll, isUndefined, indexOf } from 'underscore';\nimport { on, off } from '../../utils/mixins';\nimport Input from './Input';\n\nconst $ = Backbone.$;\n\nexport default class InputNumber extends Input {\n template() {\n const ppfx = this.ppfx;\n return `\n \n \n
\n
\n
\n
\n `;\n }\n\n inputClass() {\n const ppfx = this.ppfx;\n return this.opts.contClass || `${ppfx}field ${ppfx}field-integer`;\n }\n\n constructor(opts = {}) {\n super(opts);\n bindAll(this, 'moveIncrement', 'upIncrement');\n this.doc = document;\n this.listenTo(this.model, 'change:unit', this.handleModelChange);\n }\n\n /**\n * Set value to the model\n * @param {string} value\n * @param {Object} opts\n */\n setValue(value, opts) {\n var opt = opts || {};\n var valid = this.validateInputValue(value, { deepCheck: 1 });\n var validObj = { value: valid.value };\n\n // If found some unit value\n if (valid.unit || valid.force) {\n validObj.unit = valid.unit;\n }\n\n this.model.set(validObj, opt);\n\n // Generally I get silent when I need to reflect data to view without\n // reupdating the target\n if (opt.silent) {\n this.handleModelChange();\n }\n }\n\n /**\n * Handled when the view is changed\n */\n handleChange(e) {\n e.stopPropagation();\n this.setValue(this.getInputEl().value);\n this.elementUpdated();\n }\n\n /**\n * Handled when the view is changed\n */\n handleUnitChange(e) {\n e.stopPropagation();\n var value = this.getUnitEl().value;\n this.model.set('unit', value);\n this.elementUpdated();\n }\n\n /**\n * Handled when user uses keyboard\n */\n handleKeyDown(e) {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n this.upArrowClick();\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n this.downArrowClick();\n }\n }\n\n /**\n * Fired when the element of the property is updated\n */\n elementUpdated() {\n this.model.trigger('el:change');\n }\n\n /**\n * Updates the view when the model is changed\n * */\n handleModelChange() {\n const model = this.model;\n this.getInputEl().value = model.get('value');\n const unitEl = this.getUnitEl();\n unitEl && (unitEl.value = model.get('unit') || '');\n }\n\n /**\n * Get the unit element\n * @return {HTMLElement}\n */\n getUnitEl() {\n if (!this.unitEl) {\n const model = this.model;\n const units = model.get('units') || [];\n\n if (units.length) {\n const options = [''];\n\n units.forEach(unit => {\n const selected = unit == model.get('unit') ? 'selected' : '';\n options.push(``);\n });\n\n const temp = document.createElement('div');\n temp.innerHTML = ``;\n this.unitEl = temp.firstChild;\n }\n }\n\n return this.unitEl;\n }\n\n /**\n * Invoked when the up arrow is clicked\n * */\n upArrowClick() {\n const { model } = this;\n const step = model.get('step');\n let value = parseFloat(model.get('value'));\n this.setValue(this.normalizeValue(value + step));\n this.elementUpdated();\n }\n\n /**\n * Invoked when the down arrow is clicked\n * */\n downArrowClick() {\n const { model } = this;\n const step = model.get('step');\n const value = parseFloat(model.get('value'));\n this.setValue(this.normalizeValue(value - step));\n this.elementUpdated();\n }\n\n /**\n * Change easily integer input value with click&drag method\n * @param Event\n *\n * @return void\n * */\n downIncrement(e) {\n e.preventDefault();\n this.moved = 0;\n var value = this.model.get('value') || 0;\n value = this.normalizeValue(value);\n this.current = { y: e.pageY, val: value };\n on(this.doc, 'mousemove', this.moveIncrement);\n on(this.doc, 'mouseup', this.upIncrement);\n }\n\n /** While the increment is clicked, moving the mouse will update input value\n * @param Object\n *\n * @return bool\n * */\n moveIncrement(ev) {\n this.moved = 1;\n const model = this.model;\n const step = model.get('step');\n const data = this.current;\n var pos = this.normalizeValue(data.val + (data.y - ev.pageY) * step);\n const { value, unit } = this.validateInputValue(pos);\n this.prValue = value;\n model.set({ value, unit }, { avoidStore: 1 });\n return false;\n }\n\n /**\n * Stop moveIncrement method\n * */\n upIncrement() {\n const model = this.model;\n const step = model.get('step');\n off(this.doc, 'mouseup', this.upIncrement);\n off(this.doc, 'mousemove', this.moveIncrement);\n\n if (this.prValue && this.moved) {\n var value = this.prValue - step;\n model.set('value', value, { avoidStore: 1 }).set('value', value + step);\n this.elementUpdated();\n }\n }\n\n normalizeValue(value, defValue = 0) {\n const model = this.model;\n const step = model.get('step');\n let stepDecimals = 0;\n\n if (isNaN(value)) {\n return defValue;\n }\n\n value = parseFloat(value);\n\n if (Math.floor(value) !== value) {\n const side = step.toString().split('.')[1];\n stepDecimals = side ? side.length : 0;\n }\n\n return stepDecimals ? parseFloat(value.toFixed(stepDecimals)) : value;\n }\n\n /**\n * Validate input value\n * @param {String} value Raw value\n * @param {Object} opts Options\n * @return {Object} Validated string\n */\n validateInputValue(value, opts = {}) {\n var force = 0;\n var opt = opts || {};\n var model = this.model;\n const defValue = ''; //model.get('defaults');\n var val = !isUndefined(value) ? value : defValue;\n var units = opts.units || model.get('units') || [];\n var unit = model.get('unit') || (units.length && units[0]) || '';\n var max = !isUndefined(opts.max) ? opts.max : model.get('max');\n var min = !isUndefined(opts.min) ? opts.min : model.get('min');\n var limitlessMax = !!model.get('limitlessMax');\n var limitlessMin = !!model.get('limitlessMin');\n\n if (opt.deepCheck) {\n var fixed = model.get('fixedValues') || [];\n\n if (val === '') unit = '';\n\n if (val) {\n // If the value is one of the fixed values I leave it as it is\n var regFixed = new RegExp('^' + fixed.join('|'), 'g');\n if (fixed.length && regFixed.test(val)) {\n val = val.match(regFixed)[0];\n unit = '';\n force = 1;\n } else {\n var valCopy = val + '';\n val += ''; // Make it suitable for replace\n val = parseFloat(val.replace(',', '.'));\n val = !isNaN(val) ? val : defValue;\n var uN = valCopy.replace(val, '');\n // Check if exists as unit\n if (indexOf(units, uN) >= 0) unit = uN;\n }\n }\n }\n\n if (!limitlessMax && !isUndefined(max) && max !== '') val = val > max ? max : val;\n if (!limitlessMin && !isUndefined(min) && min !== '') val = val < min ? min : val;\n\n return {\n force,\n value: val,\n unit,\n };\n }\n\n render() {\n Input.prototype.render.call(this);\n this.unitEl = null;\n const unit = this.getUnitEl();\n unit && this.$el.find(`.${this.ppfx}field-units`).get(0).appendChild(unit);\n return this;\n }\n}\n\nInputNumber.prototype.events = {\n 'change input': 'handleChange',\n 'change select': 'handleUnitChange',\n 'click [data-arrow-up]': 'upArrowClick',\n 'click [data-arrow-down]': 'downArrowClick',\n 'mousedown [data-arrows]': 'downIncrement',\n keydown: 'handleKeyDown',\n};\n","import { includes } from 'underscore';\nimport Backbone from 'backbone';\n\nexport default class DomainViews extends Backbone.View {\n // Defines the View per type\n itemsView = '';\n\n itemType = 'type';\n\n reuseView = false;\n\n constructor(opts = {}, config, autoAdd = false) {\n super(opts);\n this.config = config || opts.config || {};\n autoAdd && this.listenTo(this.collection, 'add', this.addTo);\n this.items = [];\n }\n\n /**\n * Add new model to the collection\n * @param {Model} model\n * @private\n * */\n addTo(model) {\n this.add(model);\n }\n\n itemViewNotFound(type) {\n const { config, ns } = this;\n const { em } = config;\n const warn = `${ns ? `[${ns}]: ` : ''}'${type}' type not found`;\n em && em.logWarning(warn);\n }\n\n /**\n * Render new model inside the view\n * @param {Model} model\n * @param {Object} fragment Fragment collection\n * @private\n * */\n add(model, fragment) {\n const { config, reuseView, items, itemsView = {} } = this;\n const inputTypes = [\n 'button',\n 'checkbox',\n 'color',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n ];\n var frag = fragment || null;\n var itemView = this.itemView;\n var typeField = model.get(this.itemType);\n let view;\n\n if (itemsView[typeField]) {\n itemView = itemsView[typeField];\n } else if (typeField && !itemsView[typeField] && !includes(inputTypes, typeField)) {\n this.itemViewNotFound(typeField);\n }\n\n if (model.view && reuseView) {\n view = model.view;\n } else {\n view = new itemView({ model, config }, config);\n }\n\n items && items.push(view);\n const rendered = view.render().el;\n\n if (frag) frag.appendChild(rendered);\n else this.$el.append(rendered);\n }\n\n render() {\n var frag = document.createDocumentFragment();\n this.clearItems();\n this.$el.empty();\n\n if (this.collection.length)\n this.collection.each(function (model) {\n this.add(model, frag);\n }, this);\n\n this.$el.append(frag);\n this.onRender();\n return this;\n }\n\n onRender() {}\n\n onRemoveBefore() {}\n onRemove() {}\n\n remove(opts = {}) {\n const { items } = this;\n this.onRemoveBefore(items, opts);\n this.clearItems();\n Backbone.View.prototype.remove.apply(this, arguments);\n this.onRemove(items, opts);\n }\n\n clearItems() {\n const items = this.items || [];\n // TODO Traits do not update the target anymore\n // items.forEach(item => item.remove());\n // this.items = [];\n }\n}\n\n// Default view\nDomainViews.prototype.itemView = '';\n","const traitInputAttr = { placeholder: 'eg. Text here' };\n\nexport default {\n assetManager: {\n addButton: 'Add image',\n inputPlh: 'http://path/to/the/image.jpg',\n modalTitle: 'Select Image',\n uploadTitle: 'Drop files here or click to upload',\n },\n // Here just as a reference, GrapesJS core doesn't contain any block,\n // so this should be omitted from other local files\n blockManager: {\n labels: {\n // 'block-id': 'Block Label',\n },\n categories: {\n // 'category-id': 'Category Label',\n },\n },\n domComponents: {\n names: {\n '': 'Box',\n wrapper: 'Body',\n text: 'Text',\n comment: 'Comment',\n image: 'Image',\n video: 'Video',\n label: 'Label',\n link: 'Link',\n map: 'Map',\n tfoot: 'Table foot',\n tbody: 'Table body',\n thead: 'Table head',\n table: 'Table',\n row: 'Table row',\n cell: 'Table cell',\n },\n },\n deviceManager: {\n device: 'Device',\n devices: {\n desktop: 'Desktop',\n tablet: 'Tablet',\n mobileLandscape: 'Mobile Landscape',\n mobilePortrait: 'Mobile Portrait',\n },\n },\n panels: {\n buttons: {\n titles: {\n preview: 'Preview',\n fullscreen: 'Fullscreen',\n 'sw-visibility': 'View components',\n 'export-template': 'View code',\n 'open-sm': 'Open Style Manager',\n 'open-tm': 'Settings',\n 'open-layers': 'Open Layer Manager',\n 'open-blocks': 'Open Blocks',\n },\n },\n },\n selectorManager: {\n label: 'Classes',\n selected: 'Selected',\n emptyState: '- State -',\n states: {\n hover: 'Hover',\n active: 'Click',\n 'nth-of-type(2n)': 'Even/Odd',\n },\n },\n styleManager: {\n empty: 'Select an element before using Style Manager',\n layer: 'Layer',\n fileButton: 'Images',\n sectors: {\n general: 'General',\n layout: 'Layout',\n typography: 'Typography',\n decorations: 'Decorations',\n extra: 'Extra',\n flex: 'Flex',\n dimension: 'Dimension',\n },\n // Default names for sub properties in Composite and Stack types.\n // Other labels are generated directly from their property names (eg. 'font-size' will be 'Font size').\n properties: {\n 'text-shadow-h': 'X',\n 'text-shadow-v': 'Y',\n 'text-shadow-blur': 'Blur',\n 'text-shadow-color': 'Color',\n 'box-shadow-h': 'X',\n 'box-shadow-v': 'Y',\n 'box-shadow-blur': 'Blur',\n 'box-shadow-spread': 'Spread',\n 'box-shadow-color': 'Color',\n 'box-shadow-type': 'Type',\n 'margin-top-sub': 'Top',\n 'margin-right-sub': 'Right',\n 'margin-bottom-sub': 'Bottom',\n 'margin-left-sub': 'Left',\n 'padding-top-sub': 'Top',\n 'padding-right-sub': 'Right',\n 'padding-bottom-sub': 'Bottom',\n 'padding-left-sub': 'Left',\n 'border-width-sub': 'Width',\n 'border-style-sub': 'Style',\n 'border-color-sub': 'Color',\n 'border-top-left-radius-sub': 'Top Left',\n 'border-top-right-radius-sub': 'Top Right',\n 'border-bottom-right-radius-sub': 'Bottom Right',\n 'border-bottom-left-radius-sub': 'Bottom Left',\n 'transform-rotate-x': 'Rotate X',\n 'transform-rotate-y': 'Rotate Y',\n 'transform-rotate-z': 'Rotate Z',\n 'transform-scale-x': 'Scale X',\n 'transform-scale-y': 'Scale Y',\n 'transform-scale-z': 'Scale Z',\n 'transition-property-sub': 'Property',\n 'transition-duration-sub': 'Duration',\n 'transition-timing-function-sub': 'Timing',\n 'background-image-sub': 'Image',\n 'background-repeat-sub': 'Repeat',\n 'background-position-sub': 'Position',\n 'background-attachment-sub': 'Attachment',\n 'background-size-sub': 'Size',\n },\n // Translate options in style properties\n // options: {\n // float: { // Id of the property\n // ...\n // left: 'Left', // {option id}: {Option label}\n // }\n // }\n },\n traitManager: {\n empty: 'Select an element before using Trait Manager',\n label: 'Component settings',\n traits: {\n // The core library generates the name by their `name` property\n labels: {\n // id: 'Id',\n // alt: 'Alt',\n // title: 'Title',\n // href: 'Href',\n },\n // In a simple trait, like text input, these are used on input attributes\n attributes: {\n id: traitInputAttr,\n alt: traitInputAttr,\n title: traitInputAttr,\n href: { placeholder: 'eg. https://google.com' },\n },\n // In a trait like select, these are used to translate option names\n options: {\n target: {\n false: 'This window',\n _blank: 'New window',\n },\n },\n },\n },\n storageManager: {\n recover: 'Do you want to recover unsaved changes?',\n },\n};\n","import en from './locale/en';\n\nexport default {\n // Locale value\n locale: 'en',\n\n // Fallback locale\n localeFallback: 'en',\n\n // Detect locale by checking browser language\n detectLocale: true,\n\n // Show warnings when some of the i18n resources are missing\n debug: false,\n\n // Messages to translate\n messages: {\n en,\n },\n\n // Additional messages. This allows extending the default `messages` set directly from the configuration.\n messagesAdd: null,\n};\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/i18n/config.js)\n * ```js\n * const editor = grapesjs.init({\n * i18n: {\n * locale: 'en',\n * localeFallback: 'en',\n * messages: {\n * it: { hello: 'Ciao', ... },\n * ...\n * }\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const i18n = editor.I18n;\n * ```\n *\n * ### Events\n * * `i18n:add` - New set of messages is added\n * * `i18n:update` - The set of messages is updated\n * * `i18n:locale` - Locale changed\n *\n * @module I18n\n */\nimport { isUndefined, isString } from 'underscore';\nimport { hasWin, deepMerge } from '../utils/mixins';\nimport defaults from './config';\n\nexport default class I18nModule {\n name = 'I18n';\n\n //config;\n\n /**\n * Initialize module\n * @param {Object} config Configurations\n * @private\n */\n init(opts = {}) {\n this.config = {\n ...defaults,\n ...opts,\n messages: {\n ...defaults.messages,\n ...(opts.messages || {}),\n },\n };\n const add = this.config.messagesAdd;\n add && this.addMessages(add);\n\n if (this.config.detectLocale) {\n this.config.locale = this._localLang();\n }\n\n this.em = opts.em;\n return this;\n }\n\n /**\n * Get module configurations\n * @returns {Object} Configuration object\n */\n getConfig() {\n return this.config;\n }\n\n /**\n * Update current locale\n * @param {String} locale Locale value\n * @returns {this}\n * @example\n * i18n.setLocale('it');\n */\n setLocale(locale) {\n const { em, config } = this;\n const evObj = { value: locale, valuePrev: config.locale };\n em && em.trigger('i18n:locale', evObj);\n config.locale = locale;\n return this;\n }\n\n /**\n * Get current locale\n * @returns {String} Current locale value\n */\n getLocale() {\n return this.config.locale;\n }\n\n /**\n * Get all messages\n * @param {String} [lang] Specify the language of messages to return\n * @param {Object} [opts] Options\n * @param {Boolean} [opts.debug] Show warnings in case of missing language\n * @returns {Object}\n * @example\n * i18n.getMessages();\n * // -> { en: { hello: '...' }, ... }\n * i18n.getMessages('en');\n * // -> { hello: '...' }\n */\n getMessages(lang, opts = {}) {\n const { messages } = this.config;\n lang && !messages[lang] && this._debug(`'${lang}' i18n lang not found`, opts);\n return lang ? messages[lang] : messages;\n }\n\n /**\n * Set new set of messages\n * @param {Object} msg Set of messages\n * @returns {this}\n * @example\n * i18n.getMessages();\n * // -> { en: { msg1: 'Msg 1', msg2: 'Msg 2', } }\n * i18n.setMessages({ en: { msg2: 'Msg 2 up', msg3: 'Msg 3', } });\n * // Set replaced\n * i18n.getMessages();\n * // -> { en: { msg2: 'Msg 2 up', msg3: 'Msg 3', } }\n */\n setMessages(msg) {\n const { em, config } = this;\n config.messages = msg;\n em && em.trigger('i18n:update', msg);\n return this;\n }\n\n /**\n * Update messages\n * @param {Object} msg Set of messages to add\n * @returns {this}\n * @example\n * i18n.getMessages();\n * // -> { en: { msg1: 'Msg 1', msg2: 'Msg 2', } }\n * i18n.addMessages({ en: { msg2: 'Msg 2 up', msg3: 'Msg 3', } });\n * // Set updated\n * i18n.getMessages();\n * // -> { en: { msg1: 'Msg 1', msg2: 'Msg 2 up', msg3: 'Msg 3', } }\n */\n addMessages(msg) {\n const { em } = this;\n const { messages } = this.config;\n em && em.trigger('i18n:add', msg);\n this.setMessages(deepMerge(messages, msg));\n\n return this;\n }\n\n /**\n * Translate the locale message\n * @param {String} key Label to translate\n * @param {Object} [opts] Options for the translation\n * @param {Object} [opts.params] Params for the translation\n * @param {Boolean} [opts.debug] Show warnings in case of missing resources\n * @returns {String}\n * @example\n * obj.setMessages({\n * en: { msg: 'Msg', msg2: 'Msg {test}'},\n * it: { msg2: 'Msg {test} it'},\n * });\n * obj.t('msg');\n * // -> outputs `Msg`\n * obj.t('msg2', { params: { test: 'hello' } }); // use params\n * // -> outputs `Msg hello`\n * obj.t('msg2', { l: 'it', params: { test: 'hello' } }); // custom local\n * // -> outputs `Msg hello it`\n */\n t(key, opts = {}) {\n const { config } = this;\n const param = opts.params || {};\n const locale = opts.l || this.getLocale();\n const localeFlb = opts.lFlb || config.localeFallback;\n let result = this._getMsg(key, locale, opts);\n\n // Try with fallback\n if (!result) result = this._getMsg(key, localeFlb, opts);\n\n !result && this._debug(`'${key}' i18n key not found in '${locale}' lang`, opts);\n result = result && isString(result) ? this._addParams(result, param) : result;\n\n return result;\n }\n\n _localLang() {\n const nav = (hasWin() && window.navigator) || {};\n const lang = nav.language || nav.userLanguage;\n return lang ? lang.split('-')[0] : 'en';\n }\n\n _addParams(str, params) {\n const reg = new RegExp('{([\\\\w\\\\d-]*)}', 'g');\n return str.replace(reg, (m, val) => params[val] || '').trim();\n }\n\n _getMsg(key, locale, opts = {}) {\n const msgSet = this.getMessages(locale, opts);\n\n // Lang set is missing\n if (!msgSet) return;\n\n let result = msgSet[key];\n\n // Check for nested getter\n if (!result && key.indexOf('.') > 0) {\n result = key.split('.').reduce((lang, key) => {\n if (isUndefined(lang)) return;\n return lang[key];\n }, msgSet);\n }\n\n return result;\n }\n\n _debug(str, opts = {}) {\n const { em, config } = this;\n (opts.debug || config.debug) && em && em.logWarning(str);\n }\n\n destroy() {\n this.config = {};\n this.em = {};\n }\n}\n","// The initial version of this library was borrowed from https://github.com/madrobby/keymaster\n// and adapted to the GrapesJS's need\n\nvar k,\n _handlers = {},\n _mods = {\n 16: false,\n 18: false,\n 17: false,\n 91: false,\n },\n _scope = 'all',\n // modifier keys\n _MODIFIERS = {\n '⇧': 16,\n shift: 16,\n '⌥': 18,\n alt: 18,\n option: 18,\n '⌃': 17,\n ctrl: 17,\n control: 17,\n '⌘': 91,\n command: 91,\n },\n // special keys\n _MAP = {\n backspace: 8,\n tab: 9,\n clear: 12,\n enter: 13,\n return: 13,\n esc: 27,\n escape: 27,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n del: 46,\n delete: 46,\n home: 36,\n end: 35,\n pageup: 33,\n pagedown: 34,\n ',': 188,\n '.': 190,\n '/': 191,\n '`': 192,\n '-': 189,\n '=': 187,\n ';': 186,\n \"'\": 222,\n '[': 219,\n ']': 221,\n '\\\\': 220,\n },\n code = function (x) {\n return _MAP[x] || x.toUpperCase().charCodeAt(0);\n },\n _downKeys = [];\n\nfor (k = 1; k < 20; k++) _MAP['f' + k] = 111 + k;\n\n// IE doesn't support Array#indexOf, so have a simple replacement\nfunction index(array, item) {\n var i = array.length;\n while (i--) if (array[i] === item) return i;\n return -1;\n}\n\n// for comparing mods before unassignment\nfunction compareArray(a1, a2) {\n if (a1.length != a2.length) return false;\n for (var i = 0; i < a1.length; i++) {\n if (a1[i] !== a2[i]) return false;\n }\n return true;\n}\n\nvar modifierMap = {\n 16: 'shiftKey',\n 18: 'altKey',\n 17: 'ctrlKey',\n 91: 'metaKey',\n};\n\nfunction updateModifierKey(event) {\n for (k in _mods) _mods[k] = event[modifierMap[k]];\n}\n\n// handle keydown event\nfunction dispatch(event) {\n var key, handler, k, i, modifiersMatch, scope;\n key = event.keyCode;\n\n if (index(_downKeys, key) == -1) {\n _downKeys.push(key);\n }\n\n // if a modifier key, set the key. property to true and return\n if (key == 93 || key == 224) key = 91; // right command on webkit, command on Gecko\n if (key in _mods) {\n _mods[key] = true;\n // 'assignKey' from inside this closure is exported to window.key\n for (k in _MODIFIERS) if (_MODIFIERS[k] == key) assignKey[k] = true;\n return;\n }\n updateModifierKey(event);\n\n // see if we need to ignore the keypress (filter() can can be overridden)\n // by default ignore key presses if a select, textarea, or input is focused\n if (!assignKey.filter.call(this, event)) return;\n\n // abort if no potentially matching shortcuts found\n if (!(key in _handlers)) return;\n\n scope = getScope();\n\n // for each potential shortcut\n for (i = 0; i < _handlers[key].length; i++) {\n handler = _handlers[key][i];\n\n // see if it's in the current scope\n if (handler.scope == scope || handler.scope == 'all') {\n // check if modifiers match if any\n modifiersMatch = handler.mods.length > 0;\n for (k in _mods)\n if ((!_mods[k] && index(handler.mods, +k) > -1) || (_mods[k] && index(handler.mods, +k) == -1))\n modifiersMatch = false;\n // call the handler and stop the event if neccessary\n if ((handler.mods.length == 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91]) || modifiersMatch) {\n if (handler.method(event, handler) === false) {\n if (event.preventDefault) event.preventDefault();\n else event.returnValue = false;\n if (event.stopPropagation) event.stopPropagation();\n if (event.cancelBubble) event.cancelBubble = true;\n }\n }\n }\n }\n}\n\n// unset modifier keys on keyup\nfunction clearModifier(event) {\n var key = event.keyCode,\n k,\n i = index(_downKeys, key);\n\n // remove key from _downKeys\n if (i >= 0) {\n _downKeys.splice(i, 1);\n }\n\n if (key == 93 || key == 224) key = 91;\n if (key in _mods) {\n _mods[key] = false;\n for (k in _MODIFIERS) if (_MODIFIERS[k] == key) assignKey[k] = false;\n }\n}\n\nfunction resetModifiers() {\n for (k in _mods) _mods[k] = false;\n for (k in _MODIFIERS) assignKey[k] = false;\n}\n\n// parse and assign shortcut\nfunction assignKey(key, scope, method) {\n var keys, mods;\n keys = getKeys(key);\n if (method === undefined) {\n method = scope;\n scope = 'all';\n }\n\n // for each shortcut\n for (var i = 0; i < keys.length; i++) {\n // set modifier keys if any\n mods = [];\n key = keys[i].split('+');\n if (key.length > 1) {\n mods = getMods(key);\n key = [key[key.length - 1]];\n }\n // convert to keycode and...\n key = key[0];\n key = code(key);\n // ...store handler\n if (!(key in _handlers)) _handlers[key] = [];\n _handlers[key].push({\n shortcut: keys[i],\n scope: scope,\n method: method,\n key: keys[i],\n mods: mods,\n });\n }\n}\n\n// unbind all handlers for given key in current scope\nfunction unbindKey(key, scope) {\n var multipleKeys,\n keys,\n mods = [],\n i,\n j,\n obj;\n\n multipleKeys = getKeys(key);\n\n for (j = 0; j < multipleKeys.length; j++) {\n keys = multipleKeys[j].split('+');\n\n if (keys.length > 1) {\n mods = getMods(keys);\n }\n\n key = keys[keys.length - 1];\n key = code(key);\n\n if (scope === undefined) {\n scope = getScope();\n }\n if (!_handlers[key]) {\n return;\n }\n for (i = 0; i < _handlers[key].length; i++) {\n obj = _handlers[key][i];\n // only clear handlers if correct scope and mods match\n if (obj.scope === scope && compareArray(obj.mods, mods)) {\n _handlers[key][i] = {};\n }\n }\n }\n}\n\n// Returns true if the key with code 'keyCode' is currently down\n// Converts strings into key codes.\nfunction isPressed(keyCode) {\n if (typeof keyCode == 'string') {\n keyCode = code(keyCode);\n }\n return index(_downKeys, keyCode) != -1;\n}\n\nfunction getPressedKeyCodes() {\n return _downKeys.slice(0);\n}\n\nfunction filter(event) {\n var tagName = (event.target || event.srcElement).tagName;\n // ignore keypressed in any elements that support keyboard data input\n return !(tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA');\n}\n\n// initialize key. to false\nfor (k in _MODIFIERS) assignKey[k] = false;\n\n// set current scope (default 'all')\nfunction setScope(scope) {\n _scope = scope || 'all';\n}\n\nfunction getScope() {\n return _scope || 'all';\n}\n\n// delete all handlers for a given scope\nfunction deleteScope(scope) {\n var key, handlers, i;\n\n for (key in _handlers) {\n handlers = _handlers[key];\n for (i = 0; i < handlers.length; ) {\n if (handlers[i].scope === scope) handlers.splice(i, 1);\n else i++;\n }\n }\n}\n\n// abstract key logic for assign and unassign\nfunction getKeys(key) {\n var keys;\n key = key.replace(/\\s/g, '');\n keys = key.split(',');\n if (keys[keys.length - 1] == '') {\n keys[keys.length - 2] += ',';\n }\n return keys;\n}\n\n// abstract mods logic for assign and unassign\nfunction getMods(key) {\n var mods = key.slice(0, key.length - 1);\n for (var mi = 0; mi < mods.length; mi++) mods[mi] = _MODIFIERS[mods[mi]];\n return mods;\n}\n\n// cross-browser events\nfunction addEvent(object, event, method) {\n if (object.addEventListener) object.addEventListener(event, method, false);\n else if (object.attachEvent)\n object.attachEvent('on' + event, function () {\n method(window.event);\n });\n}\n\n// set window.key and window.key.set/get/deleteScope, and the default filter\nassignKey.setScope = setScope;\nassignKey.getScope = getScope;\nassignKey.deleteScope = deleteScope;\nassignKey.filter = filter;\nassignKey.isPressed = isPressed;\nassignKey.getPressedKeyCodes = getPressedKeyCodes;\nassignKey.unbind = unbindKey;\nassignKey.handlers = _handlers;\nassignKey.init = win => {\n // set the handlers globally on document\n // Passing _scope to a callback to ensure it remains the same by execution. Fixes #48\n addEvent(win.document, 'keydown', function (event) {\n dispatch(event);\n });\n addEvent(win.document, 'keyup', clearModifier);\n addEvent(win, 'focus', resetModifiers);\n};\n\nexport default assignKey;\n","/**\n * You can customize the initial state of the module from the editor initialization\n * ```js\n * const editor = grapesjs.init({\n * keymaps: {\n * // Object of keymaps\n * defaults: {\n * 'your-namespace:keymap-name' {\n * keys: '⌘+z, ctrl+z',\n * handler: 'some-command-id'\n * },\n * ...\n * }\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API and listen to its events. Before using these methods, you should get the module from the instance.\n *\n * ```js\n * // Listen to events\n * editor.on('keymap:add', () => { ... });\n *\n * // Use the API\n * const keymaps = editor.Keymaps;\n * keymaps.add(...);\n * ```\n *\n * ## Available Events\n * * `keymap:add` - New keymap added. The new keyamp object is passed as an argument\n * * `keymap:remove` - Keymap removed. The removed keyamp object is passed as an argument\n * * `keymap:emit` - Some keymap emitted, in arguments you get keymapId, shortcutUsed, Event\n * * `keymap:emit:{keymapId}` - `keymapId` emitted, in arguments you get keymapId, shortcutUsed, Event\n *\n * ## Methods\n * * [getConfig](#getconfig)\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getAll)\n * * [remove](#remove)\n * * [removeAll](#removeall)\n *\n * @module Keymaps\n */\n\nimport { isString } from 'underscore';\nimport { hasWin } from '../utils/mixins';\nimport keymaster from '../utils/keymaster';\n\nhasWin() && keymaster.init(window);\n\nexport default () => {\n const configDef = {\n defaults: {\n 'core:undo': {\n keys: '⌘+z, ctrl+z',\n handler: 'core:undo',\n },\n 'core:redo': {\n keys: '⌘+shift+z, ctrl+shift+z',\n handler: 'core:redo',\n },\n 'core:copy': {\n keys: '⌘+c, ctrl+c',\n handler: 'core:copy',\n },\n 'core:paste': {\n keys: '⌘+v, ctrl+v',\n handler: 'core:paste',\n },\n 'core:component-next': {\n keys: 's',\n handler: 'core:component-next',\n },\n 'core:component-prev': {\n keys: 'w',\n handler: 'core:component-prev',\n },\n 'core:component-enter': {\n keys: 'd',\n handler: 'core:component-enter',\n },\n 'core:component-exit': {\n keys: 'a',\n handler: 'core:component-exit',\n },\n 'core:component-delete': {\n keys: 'backspace, delete',\n handler: 'core:component-delete',\n opts: { prevent: 1 },\n },\n },\n };\n\n return {\n keymaster,\n\n name: 'Keymaps',\n\n /**\n * Get module configurations\n * @return {Object} Configuration object\n */\n getConfig() {\n return this.config;\n },\n\n /**\n * Initialize module\n * @param {Object} config Configurations\n * @private\n */\n init(opts = {}) {\n this.config = { ...configDef, ...opts };\n this.em = this.config.em;\n this.keymaps = {};\n return this;\n },\n\n onLoad() {\n const defKeys = this.config.defaults;\n\n for (let id in defKeys) {\n const value = defKeys[id];\n this.add(id, value.keys, value.handler, value.opts || {});\n }\n },\n\n /**\n * Add new keymap\n * @param {string} id Keymap id\n * @param {string} keys Keymap keys, eg. `ctrl+a`, `⌘+z, ctrl+z`\n * @param {Function|string} handler Keymap handler, might be a function\n * @param {Object} [opts={}] Options\n * @return {Object} Added keymap\n * or just a command id as a string\n * @example\n * // 'ns' is just a custom namespace\n * keymaps.add('ns:my-keymap', '⌘+j, ⌘+u, ctrl+j, alt+u', editor => {\n * console.log('do stuff');\n * });\n * // or\n * keymaps.add('ns:my-keymap', '⌘+s, ctrl+s', 'some-gjs-command');\n *\n * // listen to events\n * editor.on('keymap:emit', (id, shortcut, e) => {\n * // ...\n * })\n */\n add(id, keys, handler, opts = {}) {\n const { em } = this;\n const cmd = em.get('Commands');\n const editor = em.getEditor();\n const canvas = em.get('Canvas');\n const keymap = { id, keys, handler };\n const pk = this.keymaps[id];\n pk && this.remove(id);\n this.keymaps[id] = keymap;\n keymaster(keys, (e, h) => {\n // It's safer putting handlers resolution inside the callback\n const opt = { event: e, h };\n handler = isString(handler) ? cmd.get(handler) : handler;\n const ableTorun = !em.isEditing() && !editor.Canvas.isInputFocused();\n if (ableTorun || opts.force) {\n opts.prevent && canvas.getCanvasView().preventDefault(e);\n typeof handler == 'object' ? cmd.runCommand(handler, opt) : handler(editor, 0, opt);\n const args = [id, h.shortcut, e];\n em.trigger('keymap:emit', ...args);\n em.trigger(`keymap:emit:${id}`, ...args);\n }\n });\n em.trigger('keymap:add', keymap);\n return keymap;\n },\n\n /**\n * Get the keymap by id\n * @param {string} id Keymap id\n * @return {Object} Keymap object\n * @example\n * keymaps.get('ns:my-keymap');\n * // -> {keys, handler};\n */\n get(id) {\n return this.keymaps[id];\n },\n\n /**\n * Get all keymaps\n * @return {Object}\n * @example\n * keymaps.getAll();\n * // -> {id1: {}, id2: {}};\n */\n getAll() {\n return this.keymaps;\n },\n\n /**\n * Remove the keymap by id\n * @param {string} id Keymap id\n * @return {Object} Removed keymap\n * @example\n * keymaps.remove('ns:my-keymap');\n * // -> {keys, handler};\n */\n remove(id) {\n const em = this.em;\n const keymap = this.get(id);\n\n if (keymap) {\n delete this.keymaps[id];\n keymap.keys.split(', ').forEach(k => keymaster.unbind(k.trim()));\n em && em.trigger('keymap:remove', keymap);\n return keymap;\n }\n },\n\n /**\n * Remove all binded keymaps\n * @return {this}\n */\n removeAll() {\n Object.keys(this.keymaps).forEach(keymap => this.remove(keymap));\n keymaster.handlers = {};\n return this;\n },\n\n destroy() {\n this.removeAll();\n this.keymaps = {};\n this.em = {};\n },\n };\n};\n","export default {\n stylePrefix: 'mdl-',\n\n title: '',\n\n content: '',\n\n // Close modal on interact with backdrop\n backdrop: true,\n\n // Avoid rendering the default modal.\n custom: false,\n\n /**\n * Extend ModalView object (view/ModalView.js)\n * @example\n * extend: {\n * template() {\n * return '
...New modal template...
';\n * },\n * },\n */\n extend: {},\n};\n","import { Model } from '../../common';\n\nexport default class Modal extends Model {\n defaults() {\n return {\n title: '',\n content: '',\n attributes: {},\n open: false,\n };\n }\n\n open() {\n this.set('open', true);\n }\n\n close() {\n this.set('open', false);\n }\n}\n","import { View } from '../../common';\n\nexport default class ModalView extends View {\n template({ pfx, ppfx, content, title }) {\n return `
\n
\n
${title}
\n
\n
\n
\n
${content}
\n
\n
\n
\n
`;\n }\n\n events() {\n return {\n click: 'onClick',\n 'click [data-close-modal]': 'hide',\n };\n }\n\n initialize(o) {\n const model = this.model;\n const config = o.config || {};\n const pfx = config.stylePrefix || '';\n this.config = config;\n this.pfx = pfx;\n this.ppfx = config.pStylePrefix || '';\n this.listenTo(model, 'change:open', this.updateOpen);\n this.listenTo(model, 'change:title', this.updateTitle);\n this.listenTo(model, 'change:content', this.updateContent);\n }\n\n onClick(e) {\n const bkd = this.config.backdrop;\n bkd && e.target === this.el && this.hide();\n }\n\n /**\n * Returns collector element\n * @return {HTMLElement}\n * @private\n */\n getCollector() {\n if (!this.$collector) this.$collector = this.$el.find('.' + this.pfx + 'collector');\n return this.$collector;\n }\n\n /**\n * Returns content element\n * @return {HTMLElement}\n * @private\n */\n getContent() {\n const pfx = this.pfx;\n\n if (!this.$content) {\n this.$content = this.$el.find(`.${pfx}content #${pfx}c`);\n }\n\n return this.$content;\n }\n\n /**\n * Returns title element\n * @return {HTMLElement}\n * @private\n */\n getTitle(opts = {}) {\n if (!this.$title) this.$title = this.$el.find('.' + this.pfx + 'title');\n return opts.$ ? this.$title : this.$title.get(0);\n }\n\n /**\n * Update content\n * @private\n * */\n updateContent() {\n var content = this.getContent();\n const children = content.children();\n const coll = this.getCollector();\n const body = this.model.get('content');\n children.length && coll.append(children);\n content.empty().append(body);\n }\n\n /**\n * Update title\n * @private\n * */\n updateTitle() {\n const title = this.getTitle({ $: true });\n title && title.empty().append(this.model.get('title'));\n }\n\n /**\n * Update open\n * @private\n * */\n updateOpen() {\n this.el.style.display = this.model.get('open') ? '' : 'none';\n }\n\n /**\n * Hide modal\n * @private\n * */\n hide() {\n this.model.close();\n }\n\n /**\n * Show modal\n * @private\n * */\n show() {\n this.model.open();\n }\n\n updateAttr(attr) {\n const { pfx, $el, el } = this;\n const currAttr = [].slice.call(el.attributes).map(i => i.name);\n $el.removeAttr(currAttr.join(' '));\n $el.attr({\n ...(attr || {}),\n class: `${pfx}container ${(attr && attr.class) || ''}`.trim(),\n });\n }\n\n render() {\n const el = this.$el;\n const obj = this.model.toJSON();\n obj.pfx = this.pfx;\n obj.ppfx = this.ppfx;\n el.html(this.template(obj));\n this.updateAttr();\n this.updateOpen();\n return this;\n }\n}\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/modal_dialog/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * modal: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const modal = editor.Modal;\n * ```\n *\n * ## Available Events\n * * `modal:open` - Modal is opened\n * * `modal:close` - Modal is closed\n * * `modal` - Event triggered on any change related to the modal. An object containing all the available data about the triggered event is passed as an argument to the callback.\n *\n * ## Methods\n * * [open](#open)\n * * [close](#close)\n * * [isOpen](#isopen)\n * * [setTitle](#settitle)\n * * [getTitle](#gettitle)\n * * [setContent](#setcontent)\n * * [getContent](#getcontent)\n * * [onceClose](#onceclose)\n * * [onceOpen](#onceopen)\n *\n * @module Modal\n */\n\nimport { debounce, isFunction, isString } from 'underscore';\nimport { createText } from '../utils/dom';\nimport defaults from './config/config';\nimport ModalM from './model/Modal';\nimport ModalView from './view/ModalView';\n\nexport default () => {\n var c = {};\n var model, modal;\n\n const triggerEvent = (enable, em) => {\n em && em.trigger(`modal:${enable ? 'open' : 'close'}`);\n };\n\n return {\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Modal',\n\n getConfig() {\n return c;\n },\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config = {}) {\n c = {\n ...defaults,\n ...config,\n };\n\n const em = c.em;\n this.em = em;\n var ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n model = new ModalM(c);\n model.on('change:open', (m, enb) => triggerEvent(enb, em));\n model.on(\n 'change',\n debounce(() => {\n const data = this._evData();\n const { custom } = this.getConfig();\n isFunction(custom) && custom(data);\n em.trigger('modal', data);\n })\n );\n\n return this;\n },\n\n _evData() {\n const titl = this.getTitle();\n const cnt = this.getContent();\n const { open, attributes } = model.attributes;\n return {\n open,\n attributes,\n title: isString(titl) ? createText(titl) : titl,\n content: isString(cnt) ? createText(cnt) : cnt.get ? cnt.get(0) : cnt,\n close: () => this.close(),\n };\n },\n\n postRender(view) {\n const el = view.model.getConfig().el || view.el;\n const res = this.render();\n res && res.appendTo(el);\n },\n\n /**\n * Open the modal window\n * @param {Object} [opts={}] Options\n * @param {String|HTMLElement} [opts.title] Title to set for the modal\n * @param {String|HTMLElement} [opts.content] Content to set for the modal\n * @param {Object} [opts.attributes] Updates the modal wrapper with custom attributes\n * @returns {this}\n * @example\n * modal.open({\n * title: 'My title',\n * content: 'My content',\n * attributes: { class: 'my-class' },\n * });\n */\n open(opts = {}) {\n const attr = opts.attributes || {};\n opts.title && this.setTitle(opts.title);\n opts.content && this.setContent(opts.content);\n model.set('attributes', attr);\n model.open();\n modal && modal.updateAttr(attr);\n return this;\n },\n\n /**\n * Close the modal window\n * @returns {this}\n * @example\n * modal.close();\n */\n close() {\n model.close();\n return this;\n },\n\n /**\n * Execute callback when the modal will be closed.\n * The callback will be called one only time\n * @param {Function} clb Callback to call\n * @returns {this}\n * @example\n * modal.onceClose(() => {\n * console.log('The modal is closed');\n * });\n */\n onceClose(clb) {\n this.em.once('modal:close', clb);\n return this;\n },\n\n /**\n * Execute callback when the modal will be opened.\n * The callback will be called one only time\n * @param {Function} clb Callback to call\n * @returns {this}\n * @example\n * modal.onceOpen(() => {\n * console.log('The modal is opened');\n * });\n */\n onceOpen(clb) {\n this.em.once('modal:open', clb);\n return this;\n },\n\n /**\n * Checks if the modal window is open\n * @returns {Boolean}\n * @example\n * modal.isOpen(); // true | false\n */\n isOpen() {\n return !!model.get('open');\n },\n\n /**\n * Set the title to the modal window\n * @param {string | HTMLElement} title Title\n * @returns {this}\n * @example\n * // pass a string\n * modal.setTitle('Some title');\n * // or an HTMLElement\n * const el = document.createElement('div');\n * el.innerText = 'New title';\n * modal.setTitle(el);\n */\n setTitle(title) {\n model.set('title', title);\n return this;\n },\n\n /**\n * Returns the title of the modal window\n * @returns {string | HTMLElement}\n * @example\n * modal.getTitle();\n */\n getTitle() {\n return model.get('title');\n },\n\n /**\n * Set the content of the modal window\n * @param {string | HTMLElement} content Content\n * @returns {this}\n * @example\n * // pass a string\n * modal.setContent('Some content');\n * // or an HTMLElement\n * const el = document.createElement('div');\n * el.innerText = 'New content';\n * modal.setContent(el);\n */\n setContent(content) {\n model.set('content', ' ');\n model.set('content', content);\n return this;\n },\n\n /**\n * Get the content of the modal window\n * @returns {string | HTMLElement}\n * @example\n * modal.getContent();\n */\n getContent() {\n return model.get('content');\n },\n\n /**\n * Returns content element\n * @return {HTMLElement}\n * @private\n */\n getContentEl() {\n return modal.getContent().get(0);\n },\n\n /**\n * Returns modal model\n * @return {Model}\n * @private\n */\n getModel() {\n return model;\n },\n\n /**\n * Render the modal window\n * @return {HTMLElement}\n * @private\n */\n render() {\n if (this.getConfig().custom) return;\n const View = ModalView.extend(c.extend);\n const el = modal && modal.el;\n modal = new View({\n el,\n model,\n config: c,\n });\n return modal.render().$el;\n },\n\n destroy() {\n modal && modal.remove();\n [c, model, modal].forEach(i => (i = {}));\n this.em = {};\n },\n };\n};\n","const swv = 'sw-visibility';\nconst expt = 'export-template';\nconst osm = 'open-sm';\nconst otm = 'open-tm';\nconst ola = 'open-layers';\nconst obl = 'open-blocks';\nconst ful = 'fullscreen';\nconst prv = 'preview';\n\nexport default {\n stylePrefix: 'pn-',\n\n // Default panels fa-sliders for features\n defaults: [\n {\n id: 'commands',\n buttons: [{}],\n },\n {\n id: 'options',\n buttons: [\n {\n active: true,\n id: swv,\n className: 'fa fa-square-o',\n command: swv,\n context: swv,\n attributes: { title: 'View components' },\n },\n {\n id: prv,\n className: 'fa fa-eye',\n command: prv,\n context: prv,\n attributes: { title: 'Preview' },\n },\n {\n id: ful,\n className: 'fa fa-arrows-alt',\n command: ful,\n context: ful,\n attributes: { title: 'Fullscreen' },\n },\n {\n id: expt,\n className: 'fa fa-code',\n command: expt,\n attributes: { title: 'View code' },\n },\n ],\n },\n {\n id: 'views',\n buttons: [\n {\n id: osm,\n className: 'fa fa-paint-brush',\n command: osm,\n active: true,\n togglable: 0,\n attributes: { title: 'Open Style Manager' },\n },\n {\n id: otm,\n className: 'fa fa-cog',\n command: otm,\n togglable: 0,\n attributes: { title: 'Settings' },\n },\n {\n id: ola,\n className: 'fa fa-bars',\n command: ola,\n togglable: 0,\n attributes: { title: 'Open Layer Manager' },\n },\n {\n id: obl,\n className: 'fa fa-th-large',\n command: obl,\n togglable: 0,\n attributes: { title: 'Open Blocks' },\n },\n ],\n },\n ],\n\n // Editor model\n em: null,\n\n // Delay before show children buttons (in milliseconds)\n delayBtnsShow: 300,\n};\n","import { Model } from '../../common';\nimport Buttons from './Buttons';\n\nexport default class Panel extends Model {\n defaults() {\n return {\n id: '',\n content: '',\n visible: true,\n buttons: [],\n attributes: {},\n };\n }\n\n initialize(options) {\n this.btn = this.get('buttons') || [];\n this.buttons = new Buttons(this.btn);\n this.set('buttons', this.buttons);\n }\n}\n","import { Collection } from '../../common';\nimport Panel from './Panel';\n\nexport default class Panels extends Collection {}\n\nPanels.prototype.model = Panel;\n","import { isString, isObject, isFunction } from 'underscore';\nimport { View } from '../../common';\n\nexport default class ButtonView extends View {\n tagName() {\n return this.model.get('tagName');\n }\n\n events() {\n return {\n click: 'clicked',\n };\n }\n\n initialize(o) {\n const { model } = this;\n const cls = model.get('className');\n const { command, listen } = model.attributes;\n const config = o.config || {};\n const { em } = config;\n this.config = config;\n this.em = em;\n const pfx = this.config.stylePrefix || '';\n const ppfx = this.config.pStylePrefix || '';\n this.pfx = pfx;\n this.ppfx = this.config.pStylePrefix || '';\n this.id = pfx + model.get('id');\n this.activeCls = `${pfx}active ${ppfx}four-color`;\n this.disableCls = `${ppfx}disabled`;\n this.btnsVisCls = `${pfx}visible`;\n this.className = pfx + 'btn' + (cls ? ' ' + cls : '');\n this.listenTo(model, 'change', this.render);\n this.listenTo(model, 'change:active updateActive', this.updateActive);\n this.listenTo(model, 'checkActive', this.checkActive);\n this.listenTo(model, 'change:bntsVis', this.updateBtnsVis);\n this.listenTo(model, 'change:attributes', this.updateAttributes);\n this.listenTo(model, 'change:className', this.updateClassName);\n this.listenTo(model, 'change:disable', this.updateDisable);\n\n if (em && isString(command) && listen) {\n const chnOpt = { fromListen: 1 };\n this.listenTo(em, `run:${command}`, () => model.set('active', true, chnOpt));\n this.listenTo(em, `stop:${command}`, () => model.set('active', false, chnOpt));\n }\n\n if (em && em.get) this.commands = em.get('Commands');\n }\n\n /**\n * Updates class name of the button\n *\n * @return void\n * */\n updateClassName() {\n const { model, pfx } = this;\n const cls = model.get('className');\n const attrCls = model.get('attributes').class;\n const classStr = `${attrCls ? attrCls : ''} ${pfx}btn ${cls ? cls : ''}`;\n this.$el.attr('class', classStr.trim());\n }\n\n /**\n * Updates attributes of the button\n *\n * @return void\n * */\n updateAttributes() {\n const { em, model, $el } = this;\n const attr = model.get('attributes') || {};\n const title = em && em.t && em.t(`panels.buttons.titles.${model.id}`);\n $el.attr(attr);\n title && $el.attr({ title });\n\n this.updateClassName();\n }\n\n /**\n * Updates visibility of children buttons\n *\n * @return void\n * */\n updateBtnsVis() {\n if (!this.$buttons) return;\n\n if (this.model.get('bntsVis')) this.$buttons.addClass(this.btnsVisCls);\n else this.$buttons.removeClass(this.btnsVisCls);\n }\n\n /**\n * Update active status of the button\n *\n * @return void\n * */\n updateActive(m, v, opts = {}) {\n const { model, commands, $el, activeCls } = this;\n const { fromCollection, fromListen } = opts;\n const context = model.get('context');\n const options = model.get('options');\n const commandName = model.get('command');\n let command = {};\n\n if (!commandName) return;\n\n if (commands && isString(commandName)) {\n command = commands.get(commandName) || {};\n } else if (isFunction(commandName)) {\n command = commands.create({ run: commandName });\n } else if (commandName !== null && isObject(commandName)) {\n command = commands.create(commandName);\n }\n\n if (model.get('active')) {\n !fromCollection && model.collection.deactivateAll(context, model);\n model.set('active', true, { silent: true }).trigger('checkActive');\n !fromListen && commands.runCommand(command, { ...options, sender: model });\n\n // Disable button if the command has no stop method\n command.noStop && model.set('active', false);\n } else {\n $el.removeClass(activeCls);\n !fromListen && commands.stopCommand(command, { ...options, sender: model, force: 1 });\n }\n }\n\n updateDisable() {\n const { disableCls, model } = this;\n const disable = model.get('disable');\n this.$el[disable ? 'addClass' : 'removeClass'](disableCls);\n }\n\n /**\n * Update active style status\n *\n * @return void\n * */\n checkActive() {\n const { model, $el, activeCls } = this;\n model.get('active') ? $el.addClass(activeCls) : $el.removeClass(activeCls);\n }\n\n /**\n * Triggered when button is clicked\n * @param {Object} e Event\n *\n * @return void\n * */\n clicked(e) {\n const { model } = this;\n\n if (model.get('bntsVis') || model.get('disable') || !model.get('command')) return;\n\n this.toggleActive();\n }\n\n toggleActive() {\n const { model, em } = this;\n const { active, togglable } = model.attributes;\n\n if (active && !togglable) return;\n\n model.set('active', !active);\n\n // If the stop is requested\n if (active) {\n if (model.get('runDefaultCommand')) em.runDefault();\n } else {\n if (model.get('stopDefaultCommand')) em.stopDefault();\n }\n }\n\n render() {\n const { model } = this;\n const label = model.get('label');\n const { $el } = this;\n !model.get('el') && $el.empty();\n this.updateAttributes();\n label && $el.append(label);\n this.checkActive();\n this.updateDisable();\n\n return this;\n }\n}\n","import { result } from 'underscore';\nimport { View } from '../../common';\nimport ButtonView from './ButtonView';\n\nexport default class ButtonsView extends View {\n initialize(o) {\n this.opt = o || {};\n this.config = this.opt.config || {};\n this.pfx = this.config.stylePrefix || '';\n this.parentM = this.opt.parentM || null;\n this.listenTo(this.collection, 'add', this.addTo);\n this.listenTo(this.collection, 'reset remove', this.render);\n this.className = this.pfx + 'buttons';\n }\n\n /**\n * Add to collection\n * @param Object Model\n *\n * @return Object\n * */\n addTo(model) {\n this.addToCollection(model);\n }\n\n /**\n * Add new object to collection\n * @param Object Model\n * @param Object Fragment collection\n *\n * @return Object Object created\n * */\n addToCollection(model, fragmentEl) {\n const fragment = fragmentEl || null;\n const viewObject = ButtonView;\n const el = model.get('el');\n const view = new viewObject({\n el,\n model,\n config: this.config,\n parentM: this.parentM,\n });\n const rendered = view.render().el;\n\n if (fragment) {\n fragment.appendChild(rendered);\n } else {\n this.$el.append(rendered);\n }\n\n return rendered;\n }\n\n render() {\n var fragment = document.createDocumentFragment();\n this.$el.empty();\n\n this.collection.each(function (model) {\n this.addToCollection(model, fragment);\n }, this);\n\n this.$el.append(fragment);\n this.$el.attr('class', result(this, 'className'));\n return this;\n }\n}\n","import { View } from '../../common';\nimport ButtonsView from './ButtonsView';\n\nexport default class PanelView extends View {\n initialize(o) {\n const config = o.config || {};\n const model = this.model;\n this.config = config;\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.buttons = model.get('buttons');\n this.className = this.pfx + 'panel';\n this.id = this.pfx + model.get('id');\n this.listenTo(model, 'change:appendContent', this.appendContent);\n this.listenTo(model, 'change:content', this.updateContent);\n this.listenTo(model, 'change:visible', this.toggleVisible);\n model.view = this;\n }\n\n /**\n * Append content of the panel\n * */\n appendContent() {\n this.$el.append(this.model.get('appendContent'));\n }\n\n /**\n * Update content\n * */\n updateContent() {\n this.$el.html(this.model.get('content'));\n }\n\n toggleVisible() {\n if (!this.model.get('visible')) {\n this.$el.addClass(`${this.ppfx}hidden`);\n return;\n }\n this.$el.removeClass(`${this.ppfx}hidden`);\n }\n\n attributes() {\n return this.model.get('attributes');\n }\n\n initResize() {\n const em = this.config.em;\n const editor = em ? em.get('Editor') : '';\n const resizable = this.model.get('resizable');\n\n if (editor && resizable) {\n var resz = resizable === true ? [1, 1, 1, 1] : resizable;\n var resLen = resz.length;\n var tc,\n cr,\n bc,\n cl = 0;\n\n // Choose which sides of the panel are resizable\n if (resLen == 2) {\n tc = resz[0];\n bc = resz[0];\n cr = resz[1];\n cl = resz[1];\n } else if (resLen == 4) {\n tc = resz[0];\n cr = resz[1];\n bc = resz[2];\n cl = resz[3];\n }\n\n var resizer = editor.Utils.Resizer.init({\n tc,\n cr,\n bc,\n cl,\n tl: 0,\n tr: 0,\n bl: 0,\n br: 0,\n appendTo: this.el,\n silentFrames: 1,\n avoidContainerUpdate: 1,\n prefix: editor.getConfig().stylePrefix,\n onEnd() {\n em && em.trigger('change:canvasOffset');\n },\n posFetcher: (el, { target }) => {\n const style = el.style;\n const config = resizer.getConfig();\n const keyWidth = config.keyWidth;\n const keyHeight = config.keyHeight;\n const rect = el.getBoundingClientRect();\n const forContainer = target == 'container';\n const styleWidth = style[keyWidth];\n const styleHeight = style[keyHeight];\n const width = styleWidth && !forContainer ? parseFloat(styleWidth) : rect.width;\n const height = styleHeight && !forContainer ? parseFloat(styleHeight) : rect.height;\n return {\n left: 0,\n top: 0,\n width,\n height,\n };\n },\n ...resizable,\n });\n resizer.blur = () => {};\n resizer.focus(this.el);\n }\n }\n\n render() {\n const $el = this.$el;\n const ppfx = this.ppfx;\n const cls = `${this.className} ${this.id} ${ppfx}one-bg ${ppfx}two-color`;\n $el.addClass(cls);\n\n this.toggleVisible();\n\n if (this.buttons.length) {\n var buttons = new ButtonsView({\n collection: this.buttons,\n config: this.config,\n });\n $el.append(buttons.render().el);\n }\n\n $el.append(this.model.get('content'));\n return this;\n }\n}\n","import { View } from '../../common';\nimport PanelView from './PanelView';\n\nexport default class PanelsView extends View {\n initialize(o) {\n this.opt = o || {};\n this.config = this.opt.config || {};\n this.pfx = this.config.stylePrefix || '';\n const items = this.collection;\n this.listenTo(items, 'add', this.addTo);\n this.listenTo(items, 'reset', this.render);\n this.listenTo(items, 'remove', this.onRemove);\n this.className = this.pfx + 'panels';\n }\n\n onRemove(model) {\n const view = model.view;\n view && view.remove();\n }\n\n /**\n * Add to collection\n * @param Object Model\n *\n * @return Object\n * @private\n * */\n addTo(model) {\n this.addToCollection(model);\n }\n\n /**\n * Add new object to collection\n * @param Object Model\n * @param Object Fragment collection\n * @param integer Index of append\n *\n * @return Object Object created\n * @private\n * */\n addToCollection(model, fragmentEl) {\n const fragment = fragmentEl || null;\n const config = this.config;\n const el = model.get('el');\n const view = new PanelView({\n el,\n model,\n config,\n });\n const rendered = view.render().el;\n const appendTo = model.get('appendTo');\n\n // Do nothing if the panel was requested to be another element\n if (el) {\n } else if (appendTo) {\n var appendEl = document.querySelector(appendTo);\n appendEl.appendChild(rendered);\n } else {\n if (fragment) {\n fragment.appendChild(rendered);\n } else {\n this.$el.append(rendered);\n }\n }\n\n view.initResize();\n return rendered;\n }\n\n render() {\n const $el = this.$el;\n const frag = document.createDocumentFragment();\n $el.empty();\n this.collection.each(model => this.addToCollection(model, frag));\n $el.append(frag);\n $el.attr('class', this.className);\n return this;\n }\n}\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/panels/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * panels: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const panelManager = editor.Panels;\n * ```\n *\n * * [addPanel](#addpanel)\n * * [addButton](#addbutton)\n * * [getButton](#getbutton)\n * * [getPanel](#getpanel)\n * * [getPanels](#getpanels)\n * * [getPanelsEl](#getpanelsel)\n * * [removePanel](#removepanel)\n * * [removeButton](#removebutton)\n *\n * @module Panels\n */\nimport defaults from './config/config';\nimport Panel from './model/Panel';\nimport Panels from './model/Panels';\nimport PanelsView from './view/PanelsView';\n\nexport default () => {\n var c = {};\n var panels, PanelsViewObj;\n\n return {\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Panels',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config) {\n c = config || {};\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n var ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n panels = new Panels(c.defaults);\n return this;\n },\n\n /**\n * Returns the collection of panels\n * @return {Collection} Collection of panel\n */\n getPanels() {\n return panels;\n },\n\n /**\n * Returns panels element\n * @return {HTMLElement}\n */\n getPanelsEl() {\n return PanelsViewObj && PanelsViewObj.el;\n },\n\n /**\n * Add new panel to the collection\n * @param {Object|Panel} panel Object with right properties or an instance of Panel\n * @return {Panel} Added panel. Useful in case passed argument was an Object\n * @example\n * var newPanel = panelManager.addPanel({\n * id: 'myNewPanel',\n * visible : true,\n * buttons : [...],\n * });\n */\n addPanel(panel) {\n return panels.add(panel);\n },\n\n /**\n * Remove a panel from the collection\n * @param {Object|Panel|String} panel Object with right properties or an instance of Panel or Painel id\n * @return {Panel} Removed panel. Useful in case passed argument was an Object\n * @example\n * const newPanel = panelManager.removePanel({\n * id: 'myNewPanel',\n * visible : true,\n * buttons : [...],\n * });\n *\n * const newPanel = panelManager.removePanel('myNewPanel');\n *\n */\n removePanel(panel) {\n return panels.remove(panel);\n },\n\n /**\n * Get panel by ID\n * @param {string} id Id string\n * @return {Panel|null}\n * @example\n * var myPanel = panelManager.getPanel('myNewPanel');\n */\n getPanel(id) {\n var res = panels.where({ id });\n return res.length ? res[0] : null;\n },\n\n /**\n * Add button to the panel\n * @param {string} panelId Panel's ID\n * @param {Object|Button} button Button object or instance of Button\n * @return {Button|null} Added button. Useful in case passed button was an Object\n * @example\n * var newButton = panelManager.addButton('myNewPanel',{\n * id: 'myNewButton',\n * className: 'someClass',\n * command: 'someCommand',\n * attributes: { title: 'Some title'},\n * active: false,\n * });\n * // It's also possible to pass the command as an object\n * // with .run and .stop methods\n * ...\n * command: {\n * run: function(editor) {\n * ...\n * },\n * stop: function(editor) {\n * ...\n * }\n * },\n * // Or simply like a function which will be evaluated as a single .run command\n * ...\n * command: function(editor) {\n * ...\n * }\n */\n addButton(panelId, button) {\n var pn = this.getPanel(panelId);\n return pn ? pn.get('buttons').add(button) : null;\n },\n\n /**\n * Remove button from the panel\n * @param {String} panelId Panel's ID\n * @param {String} buttonId Button's ID\n * @return {Button|null} Removed button.\n * @example\n * const removedButton = panelManager.addButton('myNewPanel',{\n * id: 'myNewButton',\n * className: 'someClass',\n * command: 'someCommand',\n * attributes: { title: 'Some title'},\n * active: false,\n * });\n *\n * const removedButton = panelManager.removeButton('myNewPanel', 'myNewButton');\n *\n */\n removeButton(panelId, button) {\n var pn = this.getPanel(panelId);\n return pn && pn.get('buttons').remove(button);\n },\n\n /**\n * Get button from the panel\n * @param {string} panelId Panel's ID\n * @param {string} id Button's ID\n * @return {Button|null}\n * @example\n * var button = panelManager.getButton('myPanel','myButton');\n */\n getButton(panelId, id) {\n var pn = this.getPanel(panelId);\n if (pn) {\n var res = pn.get('buttons').where({ id });\n return res.length ? res[0] : null;\n }\n return null;\n },\n\n /**\n * Render panels and buttons\n * @return {HTMLElement}\n * @private\n */\n render() {\n PanelsViewObj && PanelsViewObj.remove();\n PanelsViewObj = new PanelsView({\n collection: panels,\n config: c,\n });\n return PanelsViewObj.render().el;\n },\n\n /**\n * Active activable buttons\n * @private\n */\n active() {\n this.getPanels().each(p => {\n p.get('buttons').each(btn => {\n btn.get('active') && btn.trigger('updateActive');\n });\n });\n },\n\n /**\n * Disable buttons flagged as disabled\n * @private\n */\n disableButtons() {\n this.getPanels().each(p => {\n p.get('buttons').each(btn => {\n if (btn.get('disable')) btn.trigger('change:disable');\n });\n });\n },\n\n destroy() {\n panels.reset();\n panels.stopListening();\n PanelsViewObj && PanelsViewObj.remove();\n [c, panels, PanelsViewObj].forEach(i => (i = {}));\n },\n\n Panel,\n };\n};\n","import { Model } from '../../common';\n\nexport default class Button extends Model {\n defaults() {\n return {\n id: '',\n label: '',\n tagName: 'span',\n className: '',\n command: '',\n context: '',\n buttons: [],\n attributes: {},\n options: {},\n active: false,\n dragDrop: false,\n togglable: true,\n runDefaultCommand: true,\n stopDefaultCommand: false,\n disable: false,\n };\n }\n\n initialize(options) {\n if (this.get('buttons').length) {\n var Buttons = require('./Buttons').default;\n this.set('buttons', new Buttons(this.get('buttons')));\n }\n }\n}\n","import { Collection } from '../../common';\nimport Button from './Button';\n\nexport default class Buttons extends Collection {\n /**\n * Deactivate all buttons, except one passed\n * @param {Object} except Model to ignore\n * @param {Boolean} r Recursive flag\n *\n * @return void\n * */\n deactivateAllExceptOne(except, r) {\n this.forEach((model, index) => {\n if (model !== except) {\n model.set('active', false);\n if (r && model.get('buttons').length) model.get('buttons').deactivateAllExceptOne(except, r);\n }\n });\n }\n\n /**\n * Deactivate all buttons\n * @param {String} ctx Context string\n *\n * @return void\n * */\n deactivateAll(ctx, sender) {\n const context = ctx || '';\n this.forEach(model => {\n if (model.get('context') == context && model !== sender) {\n model.set('active', false, { fromCollection: 1 });\n }\n });\n }\n\n /**\n * Disables all buttons\n * @param {String} ctx Context string\n *\n * @return void\n * */\n disableAllButtons(ctx) {\n var context = ctx || '';\n this.forEach((model, index) => {\n if (model.get('context') == context) {\n model.set('disable', true);\n }\n });\n }\n\n /**\n * Disables all buttons, except one passed\n * @param {Object} except Model to ignore\n * @param {Boolean} r Recursive flag\n *\n * @return void\n * */\n disableAllButtonsExceptOne(except, r) {\n this.forEach((model, index) => {\n if (model !== except) {\n model.set('disable', true);\n if (r && model.get('buttons').length) model.get('buttons').disableAllButtonsExceptOne(except, r);\n }\n });\n }\n}\n\nButtons.prototype.model = Button;\n","export default {\n textTags: ['br', 'b', 'i', 'u', 'a', 'ul', 'ol'],\n\n // Custom CSS parser\n // @see https://grapesjs.com/docs/guides/Custom-CSS-parser.html\n parserCss: null,\n\n // Custom HTML parser\n // At the moment, the custom HTML parser should rely on DOM Node instance as the result\n // @example\n // The return should be an instance of an Node as the root to traverse\n // https://developer.mozilla.org/en-US/docs/Web/API/Node\n // parserHtml: (input, opts = {}) => (new DOMParser()).parseFromString(input, 'text/xml')\n // Here the result will be XMLDocument, which extends Node\n parserHtml: null,\n\n // Default HTML parser options (used in `parserModule.parseHtml(' tags\n allowScripts: false,\n\n // Allow unsafe HTML attributes (eg. `on*` inline event handlers)\n allowUnsafeAttr: false,\n },\n};\n","import { keys } from 'underscore';\n\n// At-rules\n// https://developer.mozilla.org/it/docs/Web/API/CSSRule#Type_constants\nconst atRules = {\n 4: 'media',\n 5: 'font-face',\n 6: 'page',\n 7: 'keyframes',\n 11: 'counter-style',\n 12: 'supports',\n 13: 'document',\n 14: 'font-feature-values',\n 15: 'viewport',\n};\nconst atRuleKeys = keys(atRules);\nconst singleAtRules = ['5', '6', '11', '15'];\nconst singleAtRulesNames = ['font-face', 'page', 'counter-style', 'viewport'];\n\n/**\n * Parse selector string to array.\n * Only classe based are valid as CSS rules inside editor, not valid\n * selectors will be dropped as additional\n * It's ok with the last part of the string as state (:hover, :active)\n * @param {string} str Selectors string\n * @return {Object}\n * @example\n * var res = parseSelector('.test1, .test1.test2, .test2 .test3');\n * console.log(res);\n * // {\n * //result: [['test1'], ['test1', 'test2']],\n * //add: ['.test2 .test3']\n * //}\n */\nexport const parseSelector = (str = '') => {\n const add = [];\n const result = [];\n const sels = str.split(',');\n\n for (var i = 0, len = sels.length; i < len; i++) {\n var sel = sels[i].trim();\n\n // Will accept only concatenated classes and last\n // class might be with state (eg. :hover), nothing else.\n // Can also accept SINGLE ID selectors, eg. `#myid`, `#myid:hover`\n // Composed are not valid: `#myid.some-class`, `#myid.some-class:hover`\n if (/^(\\.{1}[\\w\\-]+)+(:{1,2}[\\w\\-()]+)?$/gi.test(sel) || /^(#{1}[\\w\\-]+){1}(:{1,2}[\\w\\-()]+)?$/gi.test(sel)) {\n var cls = sel.split('.').filter(Boolean);\n result.push(cls);\n } else {\n add.push(sel);\n }\n }\n\n return {\n result,\n add,\n };\n};\n\n/**\n * Parse style declarations of the node\n * @param {CSSRule} node\n * @return {Object}\n */\nexport const parseStyle = node => {\n const stl = node.style;\n const style = {};\n\n for (var i = 0, len = stl.length; i < len; i++) {\n const propName = stl[i];\n const propValue = stl.getPropertyValue(propName);\n const important = stl.getPropertyPriority(propName);\n style[propName] = `${propValue}${important ? ` !${important}` : ''}`;\n }\n\n return style;\n};\n\n/**\n * Get the condition when possible\n * @param {CSSRule} node\n * @return {string}\n */\nexport const parseCondition = node => {\n const condition = node.conditionText || (node.media && node.media.mediaText) || node.name || node.selectorText || '';\n return condition.trim();\n};\n\n/**\n * Create node for the editor\n * @param {Array} selectors Array containing strings of classes\n * @param {Object} style Key-value object of style declarations\n * @return {Object}\n */\nexport const createNode = (selectors, style = {}, opts = {}) => {\n const node = {};\n const selLen = selectors.length;\n const lastClass = selectors[selLen - 1];\n const stateArr = lastClass ? lastClass.split(/:(.+)/) : [];\n const state = stateArr[1];\n const { atRule, selectorsAdd, mediaText } = opts;\n const singleAtRule = singleAtRulesNames.indexOf(atRule) >= 0;\n singleAtRule && (node.singleAtRule = 1);\n atRule && (node.atRuleType = atRule);\n selectorsAdd && (node.selectorsAdd = selectorsAdd);\n mediaText && (node.mediaText = mediaText);\n\n // Isolate the state from selectors\n if (state) {\n selectors[selLen - 1] = stateArr[0];\n node.state = state;\n stateArr.splice(stateArr.length - 1, 1);\n }\n\n node.selectors = selectors;\n node.style = style;\n\n return node;\n};\n\n/**\n * Fetch data from node\n * @param {StyleSheet|CSSRule} el\n * @return {Array}\n */\nexport const parseNode = el => {\n var result = [];\n var nodes = el.cssRules || [];\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n const type = node.type.toString();\n let singleAtRule = 0;\n let atRuleType = '';\n let condition = '';\n // keyText is for CSSKeyframeRule\n let sels = node.selectorText || node.keyText;\n const isSingleAtRule = singleAtRules.indexOf(type) >= 0;\n\n // Check if the node is an at-rule\n if (isSingleAtRule) {\n singleAtRule = 1;\n atRuleType = atRules[type];\n condition = parseCondition(node);\n } else if (atRuleKeys.indexOf(type) >= 0) {\n var subRules = parseNode(node);\n condition = parseCondition(node);\n\n for (var s = 0, lens = subRules.length; s < lens; s++) {\n var subRule = subRules[s];\n condition && (subRule.mediaText = condition);\n subRule.atRuleType = atRules[type];\n }\n result = result.concat(subRules);\n }\n\n if (!sels && !isSingleAtRule) continue;\n const style = parseStyle(node);\n const selsParsed = parseSelector(sels);\n const selsAdd = selsParsed.add;\n sels = selsParsed.result;\n\n let lastRule;\n // For each group of selectors\n for (var k = 0, len3 = sels.length; k < len3; k++) {\n const model = createNode(sels[k], style, {\n atRule: atRules[type],\n });\n result.push(model);\n lastRule = model;\n }\n\n // Need to push somewhere not class-based selectors, if some rule was\n // created will push them there, otherwise will create a new rule\n if (selsAdd.length) {\n var selsAddStr = selsAdd.join(', ');\n if (lastRule) {\n lastRule.selectorsAdd = selsAddStr;\n } else {\n const model = {\n selectors: [],\n selectorsAdd: selsAddStr,\n style,\n };\n singleAtRule && (model.singleAtRule = singleAtRule);\n atRuleType && (model.atRuleType = atRuleType);\n condition && (model.mediaText = condition);\n result.push(model);\n }\n }\n }\n\n return result;\n};\n\n/**\n * Parse CSS string and return the array of objects\n * @param {String} str CSS string\n * @return {Array} Array of objects for the definition of CSSRules\n */\nexport default str => {\n const el = document.createElement('style');\n el.innerHTML = str;\n\n // There is no .sheet before adding it to the \n document.head.appendChild(el);\n const sheet = el.sheet;\n document.head.removeChild(el);\n\n return parseNode(sheet);\n};\n","import { isString } from 'underscore';\nimport BrowserCssParser, { parseSelector, createNode } from './BrowserParserCss';\n\nexport default (config = {}) => ({\n /**\n * Parse CSS string to a desired model object\n * @param {String} str CSS string\n * @return {Array}\n */\n parse(str) {\n let result = [];\n const { parserCss, em } = config;\n const editor = em && em.get && em.get('Editor');\n const nodes = parserCss ? parserCss(str, editor) : BrowserCssParser(str);\n nodes.forEach(node => (result = result.concat(this.checkNode(node))));\n em && em.trigger('parse:css', { input: str, output: result });\n\n return result;\n },\n\n /**\n * Check the returned node from a custom parser and transforms it to\n * a valid object for the CSS composer\n * @return {[type]}\n */\n checkNode(node) {\n const { selectors, style } = node;\n\n if (isString(selectors)) {\n const nodes = [];\n const selsParsed = parseSelector(selectors);\n const classSets = selsParsed.result;\n const selectorsAdd = selsParsed.add.join(', ');\n const opts = {\n atRule: node.atRule,\n mediaText: node.params,\n };\n\n if (classSets.length) {\n classSets.forEach(classSet => {\n nodes.push(createNode(classSet, style, opts));\n });\n } else {\n nodes.push(createNode([], style, opts));\n }\n\n if (selectorsAdd) {\n const lastNode = nodes[nodes.length - 1];\n lastNode.selectorsAdd = selectorsAdd;\n }\n\n node = nodes;\n }\n\n return node;\n },\n});\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/parser/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * parser: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const { Parser } = editor;\n * ```\n * ## Available Events\n * * `parse:html` - On HTML parse, an object containing the input and the output of the parser is passed as an argument\n * * `parse:css` - On CSS parse, an object containing the input and the output of the parser is passed as an argument\n *\n * ## Methods\n * * [getConfig](#getconfig)\n * * [parseHtml](#parsehtml)\n * * [parseCss](#parsecss)\n *\n * @module Parser\n */\nimport defaults from './config/config';\nimport parserCss from './model/ParserCss';\nimport parserHtml from './model/ParserHtml';\n\nexport default () => {\n let conf = {};\n let pHtml, pCss;\n\n return {\n compTypes: '',\n\n parserCss: null,\n\n parserHtml: null,\n\n name: 'Parser',\n\n init(config = {}) {\n conf = { ...defaults, ...config };\n conf.Parser = this;\n pHtml = new parserHtml(conf);\n pCss = new parserCss(conf);\n this.em = conf.em;\n this.parserCss = pCss;\n this.parserHtml = pHtml;\n return this;\n },\n\n /**\n * Get the configuration object\n * @returns {Object} Configuration object\n * @example\n * console.log(Parser.getConfig())\n */\n getConfig() {\n return conf;\n },\n\n /**\n * Parse HTML string and return the object containing the Component Definition\n * @param {String} input HTML string to parse\n * @param {Object} [options] Options\n * @param {String} [options.htmlType] [HTML mime type](https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02) to parse\n * @param {Boolean} [options.allowScripts=false] Allow `` : '';\n return html;\n }\n\n /**\n * Returns CSS built inside canvas\n * @param {Object} [opts={}] Options\n * @returns {string} CSS string\n * @public\n */\n getCss(opts: any = {}) {\n const config = this.config;\n const { optsCss } = config;\n const avoidProt = opts.avoidProtected;\n const keepUnusedStyles = !isUndefined(opts.keepUnusedStyles) ? 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 diff --git a/docs/modules/Layers.md b/docs/modules/Layers.md index 9c843486b2..26f1695a38 100644 --- a/docs/modules/Layers.md +++ b/docs/modules/Layers.md @@ -9,7 +9,7 @@ title: Layer Manager The Layer Manager module is responsible to manage and display your [Components] as a tree. ::: warning -This guide is referring to GrapesJS v0.19.4 or higher +This guide is referring to GrapesJS v0.19.5 or higher ::: [[toc]] diff --git a/package.json b/package.json index 9d7a2a83f1..82cda5b01c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grapesjs", "description": "Free and Open Source Web Builder Framework", - "version": "0.19.4", + "version": "0.19.5", "author": "Artur Arseniev", "license": "BSD-3-Clause", "homepage": "http://grapesjs.com",