ru-se.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

customizer.bundle.min.js.map (792134B)


      1 {"version":3,"sources":["spectrum.js","speakingurl.js","hooks-manager.js","customizer-base.js","customizer-utils.js","customizer-support.js","customizer-shortcodes-popup.js","customizer-custom-popup.js","customizer-custom-style-manager.js","customizer-section-settings-controls.js","customizer-current-page-settings.js","customizer-section-settings-panel.js","customizer-features-popup.js","customizer-content.js","customizer-content-tpls.js","customizer-content-handles.js","customizer-content-sections-overlays.js","customizer-menu.js","customizer-page-settings-panel.js"],"names":["factory","define","amd","exports","module","require","jQuery","$","undefined","style","defaultOpts","beforeShow","noop","move","change","show","hide","color","flat","showInput","allowEmpty","showButtons","clickoutFiresChange","showInitial","showPalette","showPaletteOnly","hideAfterPaletteSelect","togglePaletteOnly","showSelectionPalette","localStorageKey","appendTo","maxSelectionSize","cancelText","chooseText","togglePaletteMoreText","togglePaletteLessText","clearText","noColorSelectedText","preferredFormat","className","containerClassName","replacerClassName","showAlpha","theme","palette","selectionPalette","disabled","offset","spectrums","IE","exec","window","navigator","userAgent","rgbaSupport","document","createElement","cssText","contains","backgroundColor","replaceInput","join","markup","gradientFix","i","str","substr","indexOf","paletteTemplate","p","opts","html","length","tiny","c","formattedString","current","tinycolor","toHsl","l","equals","toString","swatchStyle","toRgbString","toFilter","push","append","attr","spectrum","element","o","func","wait","debounce","timeout","callbackContext","extend","callbacks","bind","resize","reflow","context","this","args","arguments","clearTimeout","setTimeout","apply","visible","isDragging","dragWidth","dragHeight","dragHelperHeight","slideHeight","alphaWidth","alphaSlideHelperWidth","slideHelperHeight","currentHue","currentSaturation","currentValue","currentAlpha","paletteArray","paletteLookup","slice","draggingClass","shiftMovementDirection","doc","ownerDocument","boundElement","body","container","addClass","pickerContainer","find","dragger","dragHelper","slider","slideHelper","alphaSliderInner","alphaSlider","alphaSlideHelper","textInput","paletteContainer","initialColorContainer","cancelButton","clearButton","chooseButton","toggleButton","isInput","is","isInputTypeColor","inputTypeColorSupport","shouldReplace","replacer","offsetElement","previewElement","initialColor","val","colorOnShow","currentPreferredFormat","isEmpty","observer","applyOptions","text","isArray","j","rgb","toggleClass","updateSelectionPaletteFromStorage","localStorage","oldPalette","split","each","addColorToSelectionPalette","e","inArray","shift","drawPalette","currentColor","get","map","unique","reverse","getUniqueSelectionPalette","drawInitial","initial","dragStart","trigger","dragStop","removeClass","setFromTextInput","value","isValid","set","updateOriginalInput","toggle","event","Event","isDefaultPrevented","hideAll","on","onkeydown","clickout","updateUI","setInterval","parentEl","parent","css","clearInterval","keyCode","button","revert","off","ignoreFormatChange","newColor","newHsv","toHsv","h","s","v","a","getFormat","fromRatio","Math","round","format","updateHelperLocations","flatColor","toHexString","realHex","realAlpha","realColor","displayColor","realRgb","alpha","toRgb","gradient","gradientType","dragX","dragY","max","min","top","left","alphaX","slideY","fireCallback","hasChanged","picker","input","dpWidth","dpHeight","inputHeight","docElem","viewWidth","width","height","outerWidth","outerHeight","documentElement","clientWidth","scrollLeft","viewHeight","clientHeight","scrollTop","offsetLeft","offsetTop","abs","bottom","right","disable","paletteElementClick","data","ignore","target","closest","after","stopPropagation","preventDefault","click","keydown","hasClass","draggable","shiftKey","parseFloat","oldDragX","oldDragY","furtherFromX","setValue","paletteEvent","initialize","spect","option","optionName","optionValue","enable","coord","destroy","remove","id","obj","Array","prototype","call","concat","onmove","onstart","onstop","dragging","maxHeight","maxWidth","hasTouch","duringDragEvents","prevent","returnValue","documentMode","stop","t0","originalEvent","touches","pageX","pageY","which","fn","dataID","extra","method","Error","removeData","load","loadOpts","defaults","colorInput","_cachedResult","type","localization","palettes","processNativeColorInputs","colorInputs","trimLeft","trimRight","tinyCounter","math","mathRound","mathMin","mathMax","mathRandom","random","r","g","b","ok","replace","toLowerCase","match","named","names","matchers","rgba","hsl","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex3","stringInputToObject","hasOwnProperty","bound01","rgbToRgb","String","convertToPercentage","floor","f","q","t","mod","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","_ok","_tc_id","rgbToHsl","d","rgbToHsv","rgbToHex","allow3Char","hex","pad2","charAt","rgbaToHex","desaturate","amount","clamp01","saturate","greyscale","lighten","brighten","darken","spin","hue","complement","triad","tetrad","splitcomplement","analogous","results","slices","part","ret","monochromatic","modification","isDark","getBrightness","isLight","getOriginalInput","getAlpha","setAlpha","toHsvString","toHslString","toHex","toHex8","toHex8String","toPercentageRgb","toPercentageRgbString","toName","hexNames","secondColor","hex8String","secondHex8String","formatSet","hasAlpha","_applyModification","_applyCombination","color1","color2","mix","rgb1","rgb2","w","w1","w2","readability","c1","c2","brightnessA","brightnessB","colorDiff","brightness","isReadable","mostReadable","baseColor","colorList","bestColor","bestScore","bestIsReadable","readable","score","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","isNaN","n","processPercent","parseInt","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","RegExp","root","getSlug","convertSymbols","maintainCase","truncate","uricFlag","uricNoSlashFlag","markFlag","symbol","langChar","ch","lastCharWasSymbol","lastCharWasDiatric","separator","result","diatricString","customReplacements","allowedChars","symbolMap","en","langCharMap","custom","uric","uricNoSlash","mark","symbols","lang","uricChars","uricNoSlashChars","markChars","titleCase","forEach","Object","keys","escapeChars","isReplacedCustomChar","charMap","lookAheadCharArray","diatricMap","test","_","toUpperCase","lucky","lastIndexOf","createSlug","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","Ő","Ø","Ù","Ú","Û","Ü","Ű","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","ő","ø","ù","ú","û","ü","ű","ý","þ","ÿ","ẞ","ا","أ","إ","آ","ؤ","ئ","ء","ب","ت","ث","ج","ح","خ","د","ذ","ر","ز","س","ش","ص","ض","ط","ظ","ع","غ","ف","ق","ك","ل","م","ن","ه","و","ي","ى","ة","ﻻ","ﻷ","ﻹ","ﻵ","گ","چ","پ","ژ","ک","ی","َ","ً","ِ","ٍ","ُ","ٌ","ْ","٠","١","٢","٣","٤","٥","٦","٧","٨","٩","۰","۱","۲","۳","۴","۵","۶","۷","۸","۹","က","ခ","ဂ","ဃ","င","စ","ဆ","ဇ","စျ","ည","ဋ","ဌ","ဍ","ဎ","ဏ","တ","ထ","ဒ","ဓ","န","ပ","ဖ","ဗ","ဘ","မ","ယ","ရ","လ","ဝ","သ","ဟ","ဠ","အ","ြ","ျ","ွ","ြွ","ျွ","ှ","ဧ","၏","ဣ","ဤ","ဉ","ဦ","ဩ","သြော","ဪ","၀","၁","၂","၃","၄","၅","၆","၇","၈","၉","္","့","း","č","ď","ě","ň","ř","š","ť","ů","ž","Č","Ď","Ě","Ň","Ř","Š","Ť","Ů","Ž","ހ","ށ","ނ","ރ","ބ","ޅ","ކ","އ","ވ","މ","ފ","ދ","ތ","ލ","ގ","ޏ","ސ","ޑ","ޒ","ޓ","ޔ","ޕ","ޖ","ޗ","ޘ","ޙ","ޚ","ޛ","ޜ","ޝ","ޞ","ޟ","ޠ","ޡ","ޢ","ޣ","ޤ","ޥ","ަ","ާ","ި","ީ","ު","ޫ","ެ","ޭ","ޮ","ޯ","ް","ა","ბ","გ","დ","ე","ვ","ზ","თ","ი","კ","ლ","მ","ნ","ო","პ","ჟ","რ","ს","ტ","უ","ფ","ქ","ღ","ყ","შ","ჩ","ც","ძ","წ","ჭ","ხ","ჯ","ჰ","α","β","γ","δ","ε","ζ","η","θ","ι","κ","λ","μ","ν","ξ","ο","π","ρ","σ","τ","υ","φ","χ","ψ","ω","ά","έ","ί","ό","ύ","ή","ώ","ς","ϊ","ΰ","ϋ","ΐ","Α","Β","Γ","Δ","Ε","Ζ","Η","Θ","Ι","Κ","Λ","Μ","Ν","Ξ","Ο","Π","Ρ","Σ","Τ","Υ","Φ","Χ","Ψ","Ω","Ά","Έ","Ί","Ό","Ύ","Ή","Ώ","Ϊ","Ϋ","ā","ē","ģ","ī","ķ","ļ","ņ","ū","Ā","Ē","Ģ","Ī","Ķ","Ļ","Ņ","Ū","Ќ","ќ","Љ","љ","Њ","њ","Тс","тс","ą","ć","ę","ł","ń","ś","ź","ż","Ą","Ć","Ę","Ł","Ń","Ś","Ź","Ż","Є","І","Ї","Ґ","є","і","ї","ґ","ă","Ă","ș","Ș","ț","Ț","ţ","Ţ","а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я","А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я","ђ","ј","ћ","џ","Ђ","Ј","Ћ","Џ","ľ","ĺ","ŕ","Ľ","Ĺ","Ŕ","ş","Ş","ı","İ","ğ","Ğ","ả","Ả","ẳ","Ẳ","ẩ","Ẩ","đ","Đ","ẹ","Ẹ","ẽ","Ẽ","ẻ","Ẻ","ế","Ế","ề","Ề","ệ","Ệ","ễ","Ễ","ể","Ể","ỏ","ọ","Ọ","ố","Ố","ồ","Ồ","ổ","Ổ","ộ","Ộ","ỗ","Ỗ","ơ","Ơ","ớ","Ớ","ờ","Ờ","ợ","Ợ","ỡ","Ỡ","Ở","ở","ị","Ị","ĩ","Ĩ","ỉ","Ỉ","ủ","Ủ","ụ","Ụ","ũ","Ũ","ư","Ư","ứ","Ứ","ừ","Ừ","ự","Ự","ữ","Ữ","ử","Ử","ỷ","Ỷ","ỳ","Ỳ","ỵ","Ỵ","ỹ","Ỹ","ạ","Ạ","ấ","Ấ","ầ","Ầ","ậ","Ậ","ẫ","Ẫ","ắ","Ắ","ằ","Ằ","ặ","Ặ","ẵ","Ẵ","“","”","‘","’","∂","ƒ","™","©","œ","Œ","®","†","℠","…","˚","º","ª","•","၊","။","€","₢","₣","£","₤","₦","₧","₩","₪","₫","₭","₮","₯","₱","₲","₳","₴","₵","¢","¥","元","円","﷼","₠","฿","₨","₹","₰","₺","؋","₼","лв","៛","₡","₸","ден","zł","₽","₾","ာ","ါ","ေ","ဲ","ိ","ီ","ို","ု","ူ","ေါင်","ော","ော်","ေါ","ေါ်","်","က်","ိုက်","ောက်","င်","ိုင်","ောင်","စ်","ည်","တ်","ိတ်","ုတ်","ွတ်","ေတ်","ဒ်","ိုဒ်","ုဒ်","န်","ာန်","ိန်","ုန်","ွန်","ပ်","ိပ်","ုပ်","ွပ်","န်ုပ်","မ်","ိမ်","ုမ်","ွမ်","ယ်","ိုလ်","ဉ်","ံ","ိံ","ုံ","ައް","ަށް","az","ə","Ə","cs","fi","hu","lt","ė","į","ų","Ė","Į","Ų","lv","pl","sk","sr","tr","ar","∆","∞","♥","&","|","<",">","∑","¤","ca","de","dv","es","fa","fr","ge","gr","it","my","mk","nl","pt","ro","ru","uk","vn","hooksManager","MethodsAvailable","removeFilter","filter","callback","_removeHook","applyFilters","_runHook","addFilter","priority","_addHook","removeAction","action","doAction","addAction","STORAGE","actions","filters","hook","handlers","handler","splice","hookObject","hooks","tmpHook","prevHook","len","_hookInsertSort","Element","scrollIntoViewIfNeeded","centerIfNeeded","parentNode","parentComputedStyle","getComputedStyle","parentBorderTopWidth","getPropertyValue","parentBorderLeftWidth","overTop","overBottom","overLeft","overRight","alignWithTop","scrollIntoView","tagName","nodeName","insertAt","index","$parent","siblings","eq","before","last","children","prepend","NodeList","HTMLCollection","from","object","translateCompanionString","isString","__materialisCustomizerStrings","CP_Customizer","options","console","warn","wp","customize","query","customize_post_id","preview","pageID","events","PREVIEW_LOADED","ADD_FIXED_OVERLAYS","RIGHT_SECTION_CLOSED","ELEMENT_DECORATED","CONTENT_ROW_REMOVED","DOCUMENT_READY","STATE_UPDATED","FOCUS_CONTROL","wpApi","MAX_SAFE_INTEGER","Number","CONTENT_ELEMENTS","TEXT_ELEMENTS","THEME_MOD_NODES","cpCustomizerGlobal","pluginOptions","addContentElementsSelectors","selectors","IO","send","isObject","post","customGet","url","customSend","customPost","rest","route","utils","phpTrim","deferred","ajax","settings","Date","now","xhrFields","withCredentials","promise","Deferred","success","done","error","fail","jqXHR","response","resolveWith","rejectWith","abort","key","defaultValue","keyParts","isUndefined","__exportsCache","getSectionExports","sectionId","jquery","sectionData","pop","modules","export","eval","slugPrefix","log","name","SCRIPT_DEBUG","groupCollapsed","groupEnd","logError","unbind","async","ev","originalCallback","cb","one","showLoader","$select","selectize","blur","hideLoader","jsTPL","__containerDataHandlers","addContainerDataHandler","selector","getter","setter","__containerDataFilters","addContainerDataFilter","__modules","__modulesLoaded","addModule","popUp","title","elementID","tb_show","z-index","transform","opacity","margin-top","focus","class","popUpInfo","content","uniqueId","tempContainer","popupPrompt","extraHTML","htmlEscape","$content","onClose","canceled","newValue","trim","isFunction","closePopUps","popupSelectPrompt","emptySelection","select","tb_remove","openMultiImageManager","single","interestWindow","custom_uploader","media","frames","file_frame","multiple","attachment","state","toJSON","open","mode","frame","views","openImageManager","multi","link","openMediaCustomFrame","extender","view","MediaFrame","Select","openMIManager","cp","extendFrameWithMDI","MIFrame","openCropableImageManager","flexible","control","CroppedImageControl","params","fixCropKeyPressBug","imgAreaSelect","keyPress","button_labels","frame_title","flex_width","flex_height","initFrame","setState","setImageFromAttachment","__createCropToolbar","createCropToolbar","openGalleryImageManager","shortocode","ids","columns","size","shortcode","gallery","edit","selection","model","openMediaBrowser","mdi","getCustomizerRootEl","openRightSidebar","elementId","hideRightSidebar","$form","$container","floating","y","$toAppend","offsetWidth","$visibleSection","isRightSidebarVisible","sectionID","updateState","force","forceOverlays","_setContent","setContent","overlays","hoverOverlay","updateAllOverlays","__changesetUpdate","changeSet","requestChangesetUpdate","then","__requestCachedCbs","self","__onSetForcedTransport","setMod","transport","reqCB","initialMod","modParts","setting","clone","oldTransport","create","previewer","oldValue","_value","jsonEncoded","parsed","decodeURI","JSON","parse","path","setToPath","encodeURI","stringify","isBoolean","prop","kirkiSetSettingValue","getMod","cleanModValue","onModChange","autoMod","modCallback","setMultipleMods","mods","finishCb","modsIDs","modsDone","getOwnPropertyNames","difference","_currentContentValues","previewJQuery","maintainable","getContent","decodeURIComponent","encodeURIComponent","modsToSet","cleanURL","$el","modData","atts","attributes","fallback","cleanClose","uniqueMods","save","__saveTimeout","markSave","parseShortcode","tag","shortcodeAttrs","attrs","isShortcodeContent","$node","isShortcodeEditable","isEditableByTag","getNodeShortcode","isOnCanvasMod","node","reduce","nodeWrapsShortcode","nodeContainsShortcode","$containers","renderNodeShortcodes","$nodes","add","updateNodeShortcode","noRerender","attrShortcode","queryVars","pauseObserver","currentChangeset","deepClone","btoa","ajaxurl","empty","decorateMods","decorateElements","delay","restartObserver","updateNodeFromShortcodeObject","shortcodeObj","targetWindow","contentWindow","currentDevice","__observerFunctionsToPause","__observerOriginalFunctions","previewApi","addSilentExecution","compose","silentCall","refresh","throttle","cpCustomizerPreview","getChangesetURL","changeset","uuid","location","origin","pathname","isPageMaintainable","getSelectionTextInfo","el","selRange","testRange","atStart","atEnd","getSelection","sel","rangeCount","getRangeAt","cloneRange","selectNodeContents","setEnd","startContainer","startOffset","setStart","endContainer","endOffset","createRange","duplicate","moveToElementText","setEndPoint","isCustomFrontPage","isFrontPage","getPageContainerSelector","attrName","getRootNode","getSectionByDataId","getNodeSection","getNodeAbsSelector","relativeSelector","getNodeSectionId","getNodeExportId","getThemeMods","themeModNodesSelector","m","$themeModNodes","getContentNodes","nodes","contents","toArray","nodeType","Node","COMMENT_NODE","textContent","outerHTML","nodesHML","$currentNodes","querySelectorAll","getAttribute","inlineCss","styleProps","propParts","inlineCssText","setAttribute","removeAttribute","innerHTML","parts","cleanNode","item","not","nextSibling","decorateSectionsForGutenberg","__cleanNode","classList","elClass","href","getNodeClasses","$clone","startsWithDoubleSlash","startsWithSlash","queryKeys","removeUrlQueryStrings","fixWronglyWrappedTextNodes","markNode","prefix","addBack","insertNode","removeAttr","replaceNode","$newNode","replaceWith","hideNode","showNode","isNodeVisible","removeNode","skipUpdate","hideMovableOverlays","addOverlay","updateOverlay","insertContentSection","newRow","row","isPrevTransparent","isPrevWhite","isNumber","prevSection","prev","animate","afterInsert","editContainerData","fields","elements","elem","$elem","field","$fieldContent","classes","ready","popupContainer","_values","getValue","checked","__dataContainers","addDataContainerSelector","registerContainerDataHandler","$item","getContainersSelector","addSelectors","addContentBinds","hasAttribute","assignNode","structureAllowsRemoving","parents","isFixed","overlay","itemOverlay","parentsUntil","rowItemHoverOverlay","section","sectionExports","maintainCropPropotion","src","cachedValue","contentEditableInputEvent","elementsSpecificSelector","elementsOnFocusLeave","$this","editedNode","docFragment","createDocumentFragment","newEle","createTextNode","appendChild","range","deleteContents","setStartAfter","collapse","removeAllRanges","addRange","ctrlKey","metaKey","fromCharCode","placeCursorAtEnd","contentEditableElement","createTextRange","defaultMods","enableSortable","getGutenbergBlockCommentStart","previousSibling","maxDepth","getGutenbergBlockCommentEnd","disableGutenbergBlocks","contentEditableElements","commentNode","setNonEditableNodes","setNode","childNodes","TEXT_NODE","nextNonTextNode","elementsContainers","$toDecorate","addFixedOverlays","stopImmediatePropagation","handlePasteEvent","that","clipboardData","getData","textContainer","queryCommandSupported","execCommand","unwrap","IS_PRO","addEventListener","sortable","sections","getSections","commentOpen","commentClose","createComment","axis","start","ui","helper","display","evt","isSorting","deactivate","cursorAt","showTextElementCUI","mimeType","wpautop","docWidth","cuiRect","nodeWidth","nodeOffsetLeft","cui","getTextElementCUI","hidden","bodyElement","fire","undoManager","clear","panel","getEl","innerWidth","getBoundingClientRect","newLeft","hideTextElementCUI","getBody","getFonts","googleFonts","fonts","font","Arial","Arial Black","Andale Mono","Tahoma","Terminal","Times New Roman","Verdana","toTinyMCEFormat","getNodeFont","fontArray","_fontArray","getFontWeights","_font","family","weights","weight","editorID","editor","tinymce","inline","style_formats_merge","extended_valid_elements","formats","alignment","styles","textAlign","fontweight","fontWeight","fontsize","fontSize","fontcolor","italic","fontStyle","menubar","skin","toolbar","font_formats","paste_as_text","forced_root_block","setup","ed","bm","addButton","icon","onselect","formatter","values","onPostRender","controlIdLookup","items","menu","raw","btn","getNode","tooltip","colorPalette","spectrumEl","arrayChunk","scrollY","scroll","col","moveToBookmark","getBookmark","updateOnEditorBlur","init","overlayOnly","fakeNode","$startNode","__fixedOverlayOptions","registerFixedOverlayOptions","getOverlayOptionButton","getButtonElement","addOptionsToFixedOverlay","typeOptions","_node","nodeOverrider","identity","filteredOptions","getTitleElement","getItemsElements","hover","relatedTarget","toolbarBinds","cover","positionOnly","bounds","updateControls","pointer-events","pageYOffset","pageXOffset","position","background-color","updateOnlySections","overlaysContainer","isSection","isScrollEvent","update","findControls","sidebarID","shortcodeData","activateHeatZone","moveHandlerCallback","$handle","$first","first","center","x","bubbles","cancelable","detail","screenX","screenY","clientX","clientY","altKey","createEvent","initMouseEvent","dispatchEvent","nodeRect","offsetHeight","docHeight","elementMouseIsOver","elementFromPoint","itemHoverOverlay","addContentItemsTo","insertHandler","__registeredItems","heading","label","lead","paragraph","image","registerItem","contentElementSelector","getItemData","types","_type","_items","getItemAfter","getContentItems","subitems","parentId","$result","toolip","idAttr","_item","subitemsContainer","node_type","insertNewContent","$new","itemAfter","Materialis","previewLoadedMessageCallback","__isCPChangesetPreview","category","itemData","template","$button","data-name","itemsArray","_autop_newline_preservation_helper","matches","pee","br","pre_tags","last_pee","pee_parts","pee_part","allblocks","pees","tinkle","matched","charlist","whitespace","substring","normalizeBackgroundImageValue","htmlDecode","htmlEntityMap","\"","'","/","`","=","htmlUnescape","regExp","schema","normalizeValue","pList","remainingPath","normalizeShortcodeString","getSpectrumColorFormated","$spectrumElement","convertToArray","k","component","Control","Setting","toClone","asArray","cssValueNumber","bigArray","perGroup","groupBy","normalizeClassAttr","asSelector","getFileInfo","filename","extension","file","imageExtensions","isImageFile","fileInfo","parseUrlQuery","second","s_length","bit","stringifyUrlQuery","queryString","parseURL","hash","strings","parsedUrl","nodeMatchingClasses","firstMatchOnly","_class","colorInArray","colorsArray","includeAlpha","_color","valueToBool","_v","convertColor","toRGB","toRGBA","used","usedWoo","$activatePageCard","$openPageCard","$makeEditable","$makeProductEditable","toAppend","canMaintainThis","hasFrontPage","__shortcodesPopupControls","registerShortcodePopupControls","controls","cols","has","getShortcodePopupFields","default","getParse","openShortcodePopupEditor","shortcodesAttrs","setParse","$wrapper","$panel","editEscapedShortcodeAtts","shortcodeText","__customPopupControls","registerCustomPopupControls","getCustomPopupFields","active","openCustomPopupEditor","currentPageStyles","styleEL","mediaMap","mobile","tablet","desktop","nomedia","outputOrder","setModAndUpdate","props","propsText","sprintf_style_array","contentStyle","getStyle","removeSelector","noUpdate","getProp","pseudo","getNodeProp","getNodeProps","manager","isImportant","setProp","handeledModUpdate","removeProp","setProps","merge","recompileScssStyle","setSectionItemColor","colorMapping","colorName","getThemeColor","colorClasses","getColorsObj","cMap","oldColorClasses","newClass","colorClass","suffix","getSectionItemColor","defaultColor","firstCMap","nodeClass","getColorValue","styleUtils","generateCSSLinerGradient","angle","colors","colorsText","generateOneSideLinerGradient","transpacency","startAlpha","fromColor","middleColor","toColor","getCSSGradientColors","colorAsObject","getRGBAStringTransparency","sectionSettingsContainer","createControl","updater","settingID","controlConstructor","containerType","updaterCallback","onChange","controlContainer","renderControl","renderContent","attachWithSetter","onAttach","colorControl","iris","choices","setPallete","spinner","number","step","sizes","full","canUpload","placeholder","video","onSelect","mejsSettings","_wpmejsSettings","player","MediaElementPlayer","cleanupPlayer","button_label","gradientPro","typography","kirkiConfig","l10n","kirki","global","sectionSeparator","textarea","rows","controlsGroup","free","attach","controlHolder","checkbox","generic","repeater","repeaterContent","buttonOptions","buttonGroup","popup","info","infoPRO","itemTemplate","attachControls","onStop","setItems","afterCreation","itemContainer","handle","controlOptions","thisInput","spacing","sides","kirkiNotifications","dimension","$sectionSettingsContainer","sidebarId","panels","sectionPanel","baseArea","__controls","enabled","_exclude","exclude","include","canInclude","getPrefixed","areaTitle","initAreaTitle","addToControlsList","showAll","getControl","wrapOriginal","originalName","newFunction","wrap","panelBase","_areas","_initialized","registerArea","forceOverride","hasArea","getArea","areas","sort","area","_processExtendAreaQueue","disableArea","enableArea","excludeArea","_areasToExtend","extendCallback","extendArea","panelArea","instantiate","config","containerTemplate","pageContentPanel","itemExists","on_click","tempOptions","optionsList","on_hover","backgroundImage","endsWith","background-image","bgImage","background-size","background-position","content-align-default","content-left-sm","content-center-sm","content-right-sm","$alignHolders","contentAligns","currentTextAlign","frameSeparator","$groupEl","frameType","background","border","frameColor","frameOffsetX","frameOffsetY","frameWidth","frameHeight","frameHideOnMobile","translate","hasFrame","getFrameType","getTranslate","translateX","translateY","setTranslate","nodeSel","itemsListControlTemplate","itemOptionsControl","itemsAlign","items-align-default","start-sm","center-sm","end-sm","listItemsOrder","currentItemsAlign","canAlignRowItemsContent","original","getItemOptions","afterItemCreation","sortableItem","headingText","firstMatch","secondMatch","showInfosInOneColumn","contactFormWrapper","hasInlineInfo","containerID","companion_disable_popup_wpnonce","nonce","listItemTemplate","$contentLi","$sectionsList","skipableKeyCodes","gutenbergCounter","isGutenbergSection","openedSectionsCategories","getNextInArray","increments","focusSection","getListModel","gutenbergId","data-id","data-export-id","data-label","exportID","inMenu","anchorExistsInPrimaryMenu","updateSectionsList","availableRowsList","$controlItems","allowMultiple","closeCategory","$category","$items","nextUntil","fadeOut","$categoryTitles","fadeIn","_data","once","itemID","contentSections","insertSectionFromData","$listChildren","$sectionsSidebarTogglers","focusContentSection","toFocus","skipEvent","dataId","dataIds","sectionStyle","startPosition","newPos","startCommentNode","endCommentNode","prevNode","prevNodeCommentNode","prevNodeEndCommentNode","insertBefore","insertAfter","anchor","removeAnchorFromPrimaryMenu","labelChange","slug","found","oldId","updatePrimaryMenuAnchor","contentEditable","getPrimaryMenuID","createPrimaryMenu","addAnchorToPrimaryMenu","customizerSection","sidebar","templateOptions","evaluate","interpolate","escape","getCPTemplate","contentTemplates","text-with-checkbox","list","linked-icon","getCPScriptTemplate","compile","iconStyles","iconSizes","linkIsShortcode","$control","orig","mediaType","mediaData","currentSrc","mdiIconRegexp","canHide","classValue","$icon","toAdd","toRemove","iconStyle","iconSize","newColumnContent","unwrapComment","addSectionOverlay","addFixedOverlay","getColorComponent","$template","bgColorPalette","$reason","toolbarTitle","toolbar_binds","$changerItem","$bgChanger","toMake","$subitemsContainer","$brush","getFunctionCommentTemplate","getWPLocation","newCols","maxCols","kc","colNr","colsRegexp","$col","_classAttr","itemsNo","transition","column","node_binds","$overlay","disconnect","getGlobalOption","getPrimaryLocationModName","getHomeUrl","siteURL","canSetPrimaryLocation","getPrimaryLocationDefaultLanguageMenu","api","placeholderId","Menus","generatePlaceholderAutoIncrementId","customizeId","settingTransport","defaultSettingValues","nav_menu","menuSection","MenuSection","customizeAction","customizingMenus","menu_id","defaultMenu","icl_translation_of","menuId","getPrimaryMenu","focusPrimaryMenuCustomize","getPrimaryMenuControl","getMenuControl","menuControl","getMenuItemControls","menu_item_parent","pageURL","nav_menu_item","type_label","custom_label","nav_menu_term_id","original_title","settingArgs","menuItemControl","menu_item_id","debouncedReflowMenuItems","itemsControl","oldAnchor","newAnchor","itemControl","$controlsHolder","refreshControls","controls_ids","_c"],"mappings":"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IAAA,GACAC,IAAA,GAGAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAGAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,GAIAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IAGAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAGAC,IAAA,IAEAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAEAC,IAAA,IAEAC,IAAA,IAEAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAEAC,IAAA,IAIAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,KAAA,KACAC,KAAA,KAGAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAEAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAGAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IAGAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAGAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAKAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,GACAC,IAAA,IACAC,IAAA,GACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,GACAC,IAAA,IACAC,IAAA,GACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KAGAC,IAAA,KACAC,IAAA,IAGAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IAGAC,IAAA,IACAC,IAAA,KAGAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAGAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAOAC,IAAA,IACAC,IAAA,IAGAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAGAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAGAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,OACAC,IAAA,MACAC,IAAA,KACAC,IAAA,KACAC,IAAA,MACAC,IAAA,IACAC,IAAA,OACAC,IAAA,MACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAGAjxC,EAAA,MACAkxC,IAAA,MACAC,IAAA,MACAC,IAAA,MACAC,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","file":"customizer.bundle.min.js","sourcesContent":["// Spectrum Colorpicker v1.8.0\n// https://github.com/bgrins/spectrum\n// Author: Brian Grinstead\n// License: MIT\n\n(function (factory) {\n    \"use strict\";\n\n    if (typeof define === 'function' && define.amd) { // AMD\n        define(['jquery'], factory);\n    } else if (typeof exports == \"object\" && typeof module == \"object\") { // CommonJS\n        module.exports = factory(require('jquery'));\n    } else { // Browser\n        factory(jQuery);\n    }\n})(function ($, undefined) {\n    \"use strict\";\n\n    var defaultOpts = {\n\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            \"<div class='sp-replacer'>\",\n            \"<div class='sp-preview'><div class='sp-preview-inner'></div></div>\",\n            \"<div class='sp-dd'>&#9660;</div>\",\n            \"</div>\"\n        ].join(''),\n        markup = (function () {\n\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 += \"<div class='sp-\" + i + \"'></div>\";\n                }\n            }\n\n            return [\n                \"<div class='sp-container sp-hidden'>\",\n                \"<div class='sp-palette-container'>\",\n                \"<div class='sp-palette sp-thumb sp-cf'></div>\",\n                \"<div class='sp-palette-button-container sp-cf'>\",\n                \"<button type='button' class='sp-palette-toggle'></button>\",\n                \"</div>\",\n                \"</div>\",\n                \"<div class='sp-picker-container'>\",\n                \"<div class='sp-top sp-cf'>\",\n                \"<div class='sp-fill'></div>\",\n                \"<div class='sp-top-inner'>\",\n                \"<div class='sp-color'>\",\n                \"<div class='sp-sat'>\",\n                \"<div class='sp-val'>\",\n                \"<div class='sp-dragger'></div>\",\n                \"</div>\",\n                \"</div>\",\n                \"</div>\",\n                \"<div class='sp-clear sp-clear-display'>\",\n                \"</div>\",\n                \"<div class='sp-hue'>\",\n                \"<div class='sp-slider'></div>\",\n                gradientFix,\n                \"</div>\",\n                \"</div>\",\n                \"<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>\",\n                \"</div>\",\n                \"<div class='sp-input-container sp-cf'>\",\n                \"<input class='sp-input' type='text' spellcheck='false'  />\",\n                \"</div>\",\n                \"<div class='sp-initial sp-thumb sp-cf'></div>\",\n                \"<div class='sp-button-container sp-cf'>\",\n                \"<a class='sp-cancel' href='#'></a>\",\n                \"<button type='button' class='sp-choose'></button>\",\n                \"</div>\",\n                \"</div>\",\n                \"</div>\"\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('<span title=\"' + formattedString + '\" data-color=\"' + tiny.toRgbString() + '\" class=\"' + c + '\"><span class=\"sp-thumb-inner\" style=\"' + swatchStyle + ';\" ></span></span>');\n            } else {\n                var cls = 'sp-clear-display';\n                html.push($('<div />')\n                    .append($('<span data-color=\"\" style=\"background-color:transparent;\" class=\"' + cls + '\"></span>')\n                        .attr('title', opts.noColorSelectedText)\n                    )\n                    .html()\n                );\n            }\n        }\n        return \"<div class='sp-cf \" + className + \"'>\" + html.join('') + \"</div>\";\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\n        return opts;\n    }\n\n    function spectrum(element, o) {\n\n\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            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) ? $(replaceInput).addClass(theme).addClass(opts.className).addClass(opts.replacerClassName) : $([]),\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        var observer = null;\n\n        function applyOptions() {\n\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\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\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\n            offsetElement.on(\"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.on(\"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.on(\"click.spectrum\", function (e) {\n                e.stopPropagation();\n                e.preventDefault();\n                revert();\n                hide();\n            });\n\n            clearButton.attr(\"title\", opts.clearText);\n            clearButton.on(\"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.on(\"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.on(\"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(alphaSlider, 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            }, dragStart, dragStop);\n\n            draggable(slider, function (dragX, dragY) {\n                currentHue = parseFloat(dragY / slideHeight);\n                isEmpty = false;\n                if (!opts.showAlpha) {\n                    currentAlpha = 1;\n                }\n                move();\n            }, dragStart, dragStop);\n\n            draggable(dragger, function (dragX, dragY, e) {\n\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, dragStop);\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).format;\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\n                    // If the picker is going to close immediately, a palette selection\n                    // is a change.  Otherwise, it's a move only.\n                    if (opts.hideAfterPaletteSelect) {\n                        updateOriginalInput(true);\n                        hide();\n                    } else {\n                        updateOriginalInput();\n                    }\n                }\n\n                return false;\n            }\n\n            var paletteEvent = IE ? \"mousedown.spectrum\" : \"click.spectrum touchstart.spectrum\";\n            paletteContainer.on(paletteEvent, \".sp-thumb-el\", paletteElementClick);\n            initialColorContainer.on(paletteEvent, \".sp-thumb-el:nth-child(1)\", {ignore: true}, paletteElementClick);\n        }\n\n        function updateSelectionPaletteFromStorage() {\n\n            if (localStorageKey && window.localStorage) {\n\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\n                try {\n                    selectionPalette = window.localStorage[localStorageKey].split(\";\");\n                } catch (e) {\n                }\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\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\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(paletteTemplate(getUniqueSelectionPalette(), currentColor, \"sp-palette-row sp-palette-row-selection\", opts));\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\n            var value = textInput.val();\n\n            if ((value === null || value === \"\") && allowEmpty) {\n                set(null);\n                move();\n                updateOriginalInput();\n            } else {\n                var tiny = tinycolor(value);\n                if (tiny.isValid()) {\n                    set(tiny);\n                    move();\n                    updateOriginalInput();\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\n            boundElement.trigger(event, [get()]);\n\n            if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) {\n                return;\n            }\n\n            hideAll();\n            visible = true;\n\n            $(doc).on(\"keydown.spectrum\", onkeydown);\n            $(doc).on(\"click.spectrum\", clickout);\n            $(window).on(\"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            var observerCallback = function () {\n                var parentEl = boundElement.parent();\n\n                if (!parentEl.is(':visible') || parentEl.css('visibility') === 'hidden'\n                ) {\n                    clearInterval(observer);\n                    hide();\n                }\n            };\n\n            observer = setInterval(observerCallback, 200)\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).off(\"keydown.spectrum\", onkeydown);\n            $(doc).off(\"click.spectrum\", clickout);\n            $(window).off(\"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            updateOriginalInput(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                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                h: currentHue,\n                s: currentSaturation,\n                v: currentValue,\n                a: Math.round(currentAlpha * 1000) / 1000\n            }, {format: opts.format || currentPreferredFormat});\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\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\",\n                            \"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(\n                    -dragHelperHeight,\n                    Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight)\n                );\n                dragY = Math.max(\n                    -dragHelperHeight,\n                    Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight)\n                );\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 = !tinycolor.equals(color, colorOnShow);\n\n            if (color) {\n                displayColor = color.toString(currentPreferredFormat);\n                // Update the selection palette with the current color\n                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.off(\"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 viewWidth = docElem.clientWidth + $(doc).scrollLeft();\n        var viewHeight = docElem.clientHeight + $(doc).scrollTop();\n        var offset = input.offset();\n        var offsetLeft = offset.left;\n        var offsetTop = offset.top;\n\n        offsetTop += inputHeight;\n\n        offsetLeft -=\n            Math.min(offsetLeft, (offsetLeft + dpWidth > viewWidth && viewWidth > dpWidth) ?\n                Math.abs(offsetLeft + dpWidth - viewWidth) : 0);\n\n        offsetTop -=\n            Math.min(offsetTop, ((offsetTop + dpHeight > viewHeight && viewHeight > dpHeight) ?\n                Math.abs(dpHeight + inputHeight - extraY) : extraY));\n\n        return {\n            top: offsetTop,\n            bottom: offset.bottom,\n            left: offsetLeft,\n            right: offset.right,\n            width: offset.width,\n            height: offset.height\n        };\n    }\n\n    /**\n     * noop - do nothing\n     */\n    function noop() {\n\n    }\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        };\n        onstart = onstart || function () {\n        };\n        onstop = onstop || function () {\n        };\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.originalEvent && e.originalEvent.touches && e.originalEvent.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).on(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).off(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).on(\"touchstart mousedown\", start);\n    }\n\n    function throttle(func, wait, debounce) {\n        var timeout;\n        return function () {\n            var context = this, 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 debounce(func, wait, immediate) {\n        var timeout;\n        return function () {\n            var context = this, args = arguments;\n            var later = function () {\n                timeout = null;\n                if (!immediate) func.apply(context, args);\n            };\n            var callNow = immediate && !timeout;\n            clearTimeout(timeout);\n            timeout = setTimeout(later, wait);\n            if (callNow) func.apply(context, args);\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\n        if (typeof opts == \"string\") {\n\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({}, $(this).data(), opts);\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 = $(\"<input type='color'/>\")[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\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(1000 * this._a) / 1000,\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(1000 * this._a) / 1000;\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), s = mathRound(hsv.s * 100), 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), s = mathRound(hsl.s * 100), 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 {r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a};\n            },\n            toRgbString: function () {\n                return (this._a == 1) ?\n                    \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n                    \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\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(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n                    \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\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 \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\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 = !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\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\n        // Conversion Functions\n        // --------------------\n\n        // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n        // <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n        // `rgbToRgb`\n        // Handle bounds / percentage checking to conform to CSS color spec\n        // <http://www.w3.org/TR/css3-color/>\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\n            r = bound01(r, 255);\n            g = bound01(g, 255);\n            b = bound01(b, 255);\n\n            var max = mathMax(r, g, b), min = mathMin(r, g, b);\n            var h, s, 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\n            r = bound01(r, 255);\n            g = bound01(g, 255);\n            b = bound01(b, 255);\n\n            var max = mathMax(r, g, b), min = mathMin(r, g, b);\n            var h, s, 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\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\n            var hex = [\n                pad2(mathRound(r).toString(16)),\n                pad2(mathRound(g).toString(16)),\n                pad2(mathRound(b).toString(16))\n            ];\n\n            // Return a 3 character hex if possible\n            if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n                return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n            }\n\n            return hex.join(\"\");\n        }\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\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\n        // Modification Functions\n        // ----------------------\n        // Thanks to less.js for some of the basics here\n        // <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\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        // <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\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, s = hsv.s, 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\n        // Readability Functions\n        // ---------------------\n        // <http://www.w3.org/TR/AERT#color-contrast>\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) - Math.min(rgb1.r, rgb2.r) +\n                Math.max(rgb1.g, rgb2.g) - Math.min(rgb1.g, rgb2.g) +\n                Math.max(rgb1.b, rgb2.b) - Math.min(rgb1.b, rgb2.b)\n            );\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\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 ((readable && !bestIsReadable) ||\n                    (readable && bestIsReadable && score > bestScore) ||\n                    ((!readable) && (!bestIsReadable) && score > bestScore)) {\n                    bestIsReadable = readable;\n                    bestScore = score;\n                    bestColor = tinycolor(colorList[i]);\n                }\n            }\n            return bestColor;\n        };\n\n\n        // Big List of Colors\n        // ------------------\n        // <http://www.w3.org/TR/css3-color/#svg-color>\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\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        // <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\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\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            // <http://www.w3.org/TR/css3-values/#integers>\n            var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n            // <http://www.w3.org/TR/css3-values/#number-value>\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 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\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\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\n});","(function (root) {\n    'use strict';\n\n    /**\n     * charMap\n     * @type {Object}\n     */\n    var charMap = {\n\n        // latin\n        'À': 'A',\n        'Á': 'A',\n        'Â': 'A',\n        'Ã': 'A',\n        'Ä': 'Ae',\n        'Å': 'A',\n        'Æ': 'AE',\n        'Ç': 'C',\n        'È': 'E',\n        'É': 'E',\n        'Ê': 'E',\n        'Ë': 'E',\n        'Ì': 'I',\n        'Í': 'I',\n        'Î': 'I',\n        'Ï': 'I',\n        'Ð': 'D',\n        'Ñ': 'N',\n        'Ò': 'O',\n        'Ó': 'O',\n        'Ô': 'O',\n        'Õ': 'O',\n        'Ö': 'Oe',\n        'Ő': 'O',\n        'Ø': 'O',\n        'Ù': 'U',\n        'Ú': 'U',\n        'Û': 'U',\n        'Ü': 'Ue',\n        'Ű': 'U',\n        'Ý': 'Y',\n        'Þ': 'TH',\n        'ß': 'ss',\n        'à': 'a',\n        'á': 'a',\n        'â': 'a',\n        'ã': 'a',\n        'ä': 'ae',\n        'å': 'a',\n        'æ': 'ae',\n        'ç': 'c',\n        'è': 'e',\n        'é': 'e',\n        'ê': 'e',\n        'ë': 'e',\n        'ì': 'i',\n        'í': 'i',\n        'î': 'i',\n        'ï': 'i',\n        'ð': 'd',\n        'ñ': 'n',\n        'ò': 'o',\n        'ó': 'o',\n        'ô': 'o',\n        'õ': 'o',\n        'ö': 'oe',\n        'ő': 'o',\n        'ø': 'o',\n        'ù': 'u',\n        'ú': 'u',\n        'û': 'u',\n        'ü': 'ue',\n        'ű': 'u',\n        'ý': 'y',\n        'þ': 'th',\n        'ÿ': 'y',\n        'ẞ': 'SS',\n\n        // language specific\n\n        // Arabic\n        'ا': 'a',\n        'أ': 'a',\n        'إ': 'i',\n        'آ': 'aa',\n        'ؤ': 'u',\n        'ئ': 'e',\n        'ء': 'a',\n        'ب': 'b',\n        'ت': 't',\n        'ث': 'th',\n        'ج': 'j',\n        'ح': 'h',\n        'خ': 'kh',\n        'د': 'd',\n        'ذ': 'th',\n        'ر': 'r',\n        'ز': 'z',\n        'س': 's',\n        'ش': 'sh',\n        'ص': 's',\n        'ض': 'dh',\n        'ط': 't',\n        'ظ': 'z',\n        'ع': 'a',\n        'غ': 'gh',\n        'ف': 'f',\n        'ق': 'q',\n        'ك': 'k',\n        'ل': 'l',\n        'م': 'm',\n        'ن': 'n',\n        'ه': 'h',\n        'و': 'w',\n        'ي': 'y',\n        'ى': 'a',\n        'ة': 'h',\n        'ﻻ': 'la',\n        'ﻷ': 'laa',\n        'ﻹ': 'lai',\n        'ﻵ': 'laa',\n\n        // Persian additional characters than Arabic\n        'گ': 'g',\n        'چ': 'ch',\n        'پ': 'p',\n        'ژ': 'zh',\n        'ک': 'k',\n        'ی': 'y',\n\n        // Arabic diactrics\n        'َ': 'a',\n        'ً': 'an',\n        'ِ': 'e',\n        'ٍ': 'en',\n        'ُ': 'u',\n        'ٌ': 'on',\n        'ْ': '',\n\n        // Arabic numbers\n        '٠': '0',\n        '١': '1',\n        '٢': '2',\n        '٣': '3',\n        '٤': '4',\n        '٥': '5',\n        '٦': '6',\n        '٧': '7',\n        '٨': '8',\n        '٩': '9',\n\n        // Persian numbers\n        '۰': '0',\n        '۱': '1',\n        '۲': '2',\n        '۳': '3',\n        '۴': '4',\n        '۵': '5',\n        '۶': '6',\n        '۷': '7',\n        '۸': '8',\n        '۹': '9',\n\n        // Burmese consonants\n        'က': 'k',\n        'ခ': 'kh',\n        'ဂ': 'g',\n        'ဃ': 'ga',\n        'င': 'ng',\n        'စ': 's',\n        'ဆ': 'sa',\n        'ဇ': 'z',\n        'စျ': 'za',\n        'ည': 'ny',\n        'ဋ': 't',\n        'ဌ': 'ta',\n        'ဍ': 'd',\n        'ဎ': 'da',\n        'ဏ': 'na',\n        'တ': 't',\n        'ထ': 'ta',\n        'ဒ': 'd',\n        'ဓ': 'da',\n        'န': 'n',\n        'ပ': 'p',\n        'ဖ': 'pa',\n        'ဗ': 'b',\n        'ဘ': 'ba',\n        'မ': 'm',\n        'ယ': 'y',\n        'ရ': 'ya',\n        'လ': 'l',\n        'ဝ': 'w',\n        'သ': 'th',\n        'ဟ': 'h',\n        'ဠ': 'la',\n        'အ': 'a',\n        // consonant character combos\n        'ြ': 'y',\n        'ျ': 'ya',\n        'ွ': 'w',\n        'ြွ': 'yw',\n        'ျွ': 'ywa',\n        'ှ': 'h',\n        // independent vowels\n        'ဧ': 'e',\n        '၏': '-e',\n        'ဣ': 'i',\n        'ဤ': '-i',\n        'ဉ': 'u',\n        'ဦ': '-u',\n        'ဩ': 'aw',\n        'သြော': 'aw',\n        'ဪ': 'aw',\n        // numbers\n        '၀': '0',\n        '၁': '1',\n        '၂': '2',\n        '၃': '3',\n        '၄': '4',\n        '၅': '5',\n        '၆': '6',\n        '၇': '7',\n        '၈': '8',\n        '၉': '9',\n        // virama and tone marks which are silent in transliteration\n        '္': '',\n        '့': '',\n        'း': '',\n\n        // Czech\n        'č': 'c',\n        'ď': 'd',\n        'ě': 'e',\n        'ň': 'n',\n        'ř': 'r',\n        'š': 's',\n        'ť': 't',\n        'ů': 'u',\n        'ž': 'z',\n        'Č': 'C',\n        'Ď': 'D',\n        'Ě': 'E',\n        'Ň': 'N',\n        'Ř': 'R',\n        'Š': 'S',\n        'Ť': 'T',\n        'Ů': 'U',\n        'Ž': 'Z',\n\n        // Dhivehi\n        'ހ': 'h',\n        'ށ': 'sh',\n        'ނ': 'n',\n        'ރ': 'r',\n        'ބ': 'b',\n        'ޅ': 'lh',\n        'ކ': 'k',\n        'އ': 'a',\n        'ވ': 'v',\n        'މ': 'm',\n        'ފ': 'f',\n        'ދ': 'dh',\n        'ތ': 'th',\n        'ލ': 'l',\n        'ގ': 'g',\n        'ޏ': 'gn',\n        'ސ': 's',\n        'ޑ': 'd',\n        'ޒ': 'z',\n        'ޓ': 't',\n        'ޔ': 'y',\n        'ޕ': 'p',\n        'ޖ': 'j',\n        'ޗ': 'ch',\n        'ޘ': 'tt',\n        'ޙ': 'hh',\n        'ޚ': 'kh',\n        'ޛ': 'th',\n        'ޜ': 'z',\n        'ޝ': 'sh',\n        'ޞ': 's',\n        'ޟ': 'd',\n        'ޠ': 't',\n        'ޡ': 'z',\n        'ޢ': 'a',\n        'ޣ': 'gh',\n        'ޤ': 'q',\n        'ޥ': 'w',\n        'ަ': 'a',\n        'ާ': 'aa',\n        'ި': 'i',\n        'ީ': 'ee',\n        'ު': 'u',\n        'ޫ': 'oo',\n        'ެ': 'e',\n        'ޭ': 'ey',\n        'ޮ': 'o',\n        'ޯ': 'oa',\n        'ް': '',\n\n        // Georgian https://en.wikipedia.org/wiki/Romanization_of_Georgian\n        // National system (2002)\n        'ა': 'a',\n        'ბ': 'b',\n        'გ': 'g',\n        'დ': 'd',\n        'ე': 'e',\n        'ვ': 'v',\n        'ზ': 'z',\n        'თ': 't',\n        'ი': 'i',\n        'კ': 'k',\n        'ლ': 'l',\n        'მ': 'm',\n        'ნ': 'n',\n        'ო': 'o',\n        'პ': 'p',\n        'ჟ': 'zh',\n        'რ': 'r',\n        'ს': 's',\n        'ტ': 't',\n        'უ': 'u',\n        'ფ': 'p',\n        'ქ': 'k',\n        'ღ': 'gh',\n        'ყ': 'q',\n        'შ': 'sh',\n        'ჩ': 'ch',\n        'ც': 'ts',\n        'ძ': 'dz',\n        'წ': 'ts',\n        'ჭ': 'ch',\n        'ხ': 'kh',\n        'ჯ': 'j',\n        'ჰ': 'h',\n\n        // Greek\n        'α': 'a',\n        'β': 'v',\n        'γ': 'g',\n        'δ': 'd',\n        'ε': 'e',\n        'ζ': 'z',\n        'η': 'i',\n        'θ': 'th',\n        'ι': 'i',\n        'κ': 'k',\n        'λ': 'l',\n        'μ': 'm',\n        'ν': 'n',\n        'ξ': 'ks',\n        'ο': 'o',\n        'π': 'p',\n        'ρ': 'r',\n        'σ': 's',\n        'τ': 't',\n        'υ': 'y',\n        'φ': 'f',\n        'χ': 'x',\n        'ψ': 'ps',\n        'ω': 'o',\n        'ά': 'a',\n        'έ': 'e',\n        'ί': 'i',\n        'ό': 'o',\n        'ύ': 'y',\n        'ή': 'i',\n        'ώ': 'o',\n        'ς': 's',\n        'ϊ': 'i',\n        'ΰ': 'y',\n        'ϋ': 'y',\n        'ΐ': 'i',\n        'Α': 'A',\n        'Β': 'B',\n        'Γ': 'G',\n        'Δ': 'D',\n        'Ε': 'E',\n        'Ζ': 'Z',\n        'Η': 'I',\n        'Θ': 'TH',\n        'Ι': 'I',\n        'Κ': 'K',\n        'Λ': 'L',\n        'Μ': 'M',\n        'Ν': 'N',\n        'Ξ': 'KS',\n        'Ο': 'O',\n        'Π': 'P',\n        'Ρ': 'R',\n        'Σ': 'S',\n        'Τ': 'T',\n        'Υ': 'Y',\n        'Φ': 'F',\n        'Χ': 'X',\n        'Ψ': 'PS',\n        'Ω': 'O',\n        'Ά': 'A',\n        'Έ': 'E',\n        'Ί': 'I',\n        'Ό': 'O',\n        'Ύ': 'Y',\n        'Ή': 'I',\n        'Ώ': 'O',\n        'Ϊ': 'I',\n        'Ϋ': 'Y',\n\n        // Latvian\n        'ā': 'a',\n        // 'č': 'c', // duplicate\n        'ē': 'e',\n        'ģ': 'g',\n        'ī': 'i',\n        'ķ': 'k',\n        'ļ': 'l',\n        'ņ': 'n',\n        // 'š': 's', // duplicate\n        'ū': 'u',\n        // 'ž': 'z', // duplicate\n        'Ā': 'A',\n        // 'Č': 'C', // duplicate\n        'Ē': 'E',\n        'Ģ': 'G',\n        'Ī': 'I',\n        'Ķ': 'k',\n        'Ļ': 'L',\n        'Ņ': 'N',\n        // 'Š': 'S', // duplicate\n        'Ū': 'U',\n        // 'Ž': 'Z', // duplicate\n\n        // Macedonian\n        'Ќ': 'Kj',\n        'ќ': 'kj',\n        'Љ': 'Lj',\n        'љ': 'lj',\n        'Њ': 'Nj',\n        'њ': 'nj',\n        'Тс': 'Ts',\n        'тс': 'ts',\n\n        // Polish\n        'ą': 'a',\n        'ć': 'c',\n        'ę': 'e',\n        'ł': 'l',\n        'ń': 'n',\n        // 'ó': 'o', // duplicate\n        'ś': 's',\n        'ź': 'z',\n        'ż': 'z',\n        'Ą': 'A',\n        'Ć': 'C',\n        'Ę': 'E',\n        'Ł': 'L',\n        'Ń': 'N',\n        'Ś': 'S',\n        'Ź': 'Z',\n        'Ż': 'Z',\n\n        // Ukranian\n        'Є': 'Ye',\n        'І': 'I',\n        'Ї': 'Yi',\n        'Ґ': 'G',\n        'є': 'ye',\n        'і': 'i',\n        'ї': 'yi',\n        'ґ': 'g',\n\n        // Romanian\n        'ă': 'a',\n        'Ă': 'A',\n        'ș': 's',\n        'Ș': 'S',\n        // 'ş': 's', // duplicate\n        // 'Ş': 'S', // duplicate\n        'ț': 't',\n        'Ț': 'T',\n        'ţ': 't',\n        'Ţ': 'T',\n\n        // Russian https://en.wikipedia.org/wiki/Romanization_of_Russian\n        // ICAO\n\n        'а': 'a',\n        'б': 'b',\n        'в': 'v',\n        'г': 'g',\n        'д': 'd',\n        'е': 'e',\n        'ё': 'yo',\n        'ж': 'zh',\n        'з': 'z',\n        'и': 'i',\n        'й': 'i',\n        'к': 'k',\n        'л': 'l',\n        'м': 'm',\n        'н': 'n',\n        'о': 'o',\n        'п': 'p',\n        'р': 'r',\n        'с': 's',\n        'т': 't',\n        'у': 'u',\n        'ф': 'f',\n        'х': 'kh',\n        'ц': 'c',\n        'ч': 'ch',\n        'ш': 'sh',\n        'щ': 'sh',\n        'ъ': '',\n        'ы': 'y',\n        'ь': '',\n        'э': 'e',\n        'ю': 'yu',\n        'я': 'ya',\n        'А': 'A',\n        'Б': 'B',\n        'В': 'V',\n        'Г': 'G',\n        'Д': 'D',\n        'Е': 'E',\n        'Ё': 'Yo',\n        'Ж': 'Zh',\n        'З': 'Z',\n        'И': 'I',\n        'Й': 'I',\n        'К': 'K',\n        'Л': 'L',\n        'М': 'M',\n        'Н': 'N',\n        'О': 'O',\n        'П': 'P',\n        'Р': 'R',\n        'С': 'S',\n        'Т': 'T',\n        'У': 'U',\n        'Ф': 'F',\n        'Х': 'Kh',\n        'Ц': 'C',\n        'Ч': 'Ch',\n        'Ш': 'Sh',\n        'Щ': 'Sh',\n        'Ъ': '',\n        'Ы': 'Y',\n        'Ь': '',\n        'Э': 'E',\n        'Ю': 'Yu',\n        'Я': 'Ya',\n\n        // Serbian\n        'ђ': 'dj',\n        'ј': 'j',\n        // 'љ': 'lj',  // duplicate\n        // 'њ': 'nj', // duplicate\n        'ћ': 'c',\n        'џ': 'dz',\n        'Ђ': 'Dj',\n        'Ј': 'j',\n        // 'Љ': 'Lj', // duplicate\n        // 'Њ': 'Nj', // duplicate\n        'Ћ': 'C',\n        'Џ': 'Dz',\n\n        // Slovak\n        'ľ': 'l',\n        'ĺ': 'l',\n        'ŕ': 'r',\n        'Ľ': 'L',\n        'Ĺ': 'L',\n        'Ŕ': 'R',\n\n        // Turkish\n        'ş': 's',\n        'Ş': 'S',\n        'ı': 'i',\n        'İ': 'I',\n        // 'ç': 'c', // duplicate\n        // 'Ç': 'C', // duplicate\n        // 'ü': 'u', // duplicate, see langCharMap\n        // 'Ü': 'U', // duplicate, see langCharMap\n        // 'ö': 'o', // duplicate, see langCharMap\n        // 'Ö': 'O', // duplicate, see langCharMap\n        'ğ': 'g',\n        'Ğ': 'G',\n\n        // Vietnamese\n        'ả': 'a',\n        'Ả': 'A',\n        'ẳ': 'a',\n        'Ẳ': 'A',\n        'ẩ': 'a',\n        'Ẩ': 'A',\n        'đ': 'd',\n        'Đ': 'D',\n        'ẹ': 'e',\n        'Ẹ': 'E',\n        'ẽ': 'e',\n        'Ẽ': 'E',\n        'ẻ': 'e',\n        'Ẻ': 'E',\n        'ế': 'e',\n        'Ế': 'E',\n        'ề': 'e',\n        'Ề': 'E',\n        'ệ': 'e',\n        'Ệ': 'E',\n        'ễ': 'e',\n        'Ễ': 'E',\n        'ể': 'e',\n        'Ể': 'E',\n        'ỏ': 'o',\n        'ọ': 'o',\n        'Ọ': 'o',\n        'ố': 'o',\n        'Ố': 'O',\n        'ồ': 'o',\n        'Ồ': 'O',\n        'ổ': 'o',\n        'Ổ': 'O',\n        'ộ': 'o',\n        'Ộ': 'O',\n        'ỗ': 'o',\n        'Ỗ': 'O',\n        'ơ': 'o',\n        'Ơ': 'O',\n        'ớ': 'o',\n        'Ớ': 'O',\n        'ờ': 'o',\n        'Ờ': 'O',\n        'ợ': 'o',\n        'Ợ': 'O',\n        'ỡ': 'o',\n        'Ỡ': 'O',\n        'Ở': 'o',\n        'ở': 'o',\n        'ị': 'i',\n        'Ị': 'I',\n        'ĩ': 'i',\n        'Ĩ': 'I',\n        'ỉ': 'i',\n        'Ỉ': 'i',\n        'ủ': 'u',\n        'Ủ': 'U',\n        'ụ': 'u',\n        'Ụ': 'U',\n        'ũ': 'u',\n        'Ũ': 'U',\n        'ư': 'u',\n        'Ư': 'U',\n        'ứ': 'u',\n        'Ứ': 'U',\n        'ừ': 'u',\n        'Ừ': 'U',\n        'ự': 'u',\n        'Ự': 'U',\n        'ữ': 'u',\n        'Ữ': 'U',\n        'ử': 'u',\n        'Ử': 'ư',\n        'ỷ': 'y',\n        'Ỷ': 'y',\n        'ỳ': 'y',\n        'Ỳ': 'Y',\n        'ỵ': 'y',\n        'Ỵ': 'Y',\n        'ỹ': 'y',\n        'Ỹ': 'Y',\n        'ạ': 'a',\n        'Ạ': 'A',\n        'ấ': 'a',\n        'Ấ': 'A',\n        'ầ': 'a',\n        'Ầ': 'A',\n        'ậ': 'a',\n        'Ậ': 'A',\n        'ẫ': 'a',\n        'Ẫ': 'A',\n        // 'ă': 'a', // duplicate\n        // 'Ă': 'A', // duplicate\n        'ắ': 'a',\n        'Ắ': 'A',\n        'ằ': 'a',\n        'Ằ': 'A',\n        'ặ': 'a',\n        'Ặ': 'A',\n        'ẵ': 'a',\n        'Ẵ': 'A',\n\n        // symbols\n        '“': '\"',\n        '”': '\"',\n        '‘': \"'\",\n        '’': \"'\",\n        '∂': 'd',\n        'ƒ': 'f',\n        '™': '(TM)',\n        '©': '(C)',\n        'œ': 'oe',\n        'Œ': 'OE',\n        '®': '(R)',\n        '†': '+',\n        '℠': '(SM)',\n        '…': '...',\n        '˚': 'o',\n        'º': 'o',\n        'ª': 'a',\n        '•': '*',\n        '၊': ',',\n        '။': '.',\n\n        // currency\n        '$': 'USD',\n        '€': 'EUR',\n        '₢': 'BRN',\n        '₣': 'FRF',\n        '£': 'GBP',\n        '₤': 'ITL',\n        '₦': 'NGN',\n        '₧': 'ESP',\n        '₩': 'KRW',\n        '₪': 'ILS',\n        '₫': 'VND',\n        '₭': 'LAK',\n        '₮': 'MNT',\n        '₯': 'GRD',\n        '₱': 'ARS',\n        '₲': 'PYG',\n        '₳': 'ARA',\n        '₴': 'UAH',\n        '₵': 'GHS',\n        '¢': 'cent',\n        '¥': 'CNY',\n        '元': 'CNY',\n        '円': 'YEN',\n        '﷼': 'IRR',\n        '₠': 'EWE',\n        '฿': 'THB',\n        '₨': 'INR',\n        '₹': 'INR',\n        '₰': 'PF',\n        '₺': 'TRY',\n        '؋': 'AFN',\n        '₼': 'AZN',\n        'лв': 'BGN',\n        '៛': 'KHR',\n        '₡': 'CRC',\n        '₸': 'KZT',\n        'ден': 'MKD',\n        'zł': 'PLN',\n        '₽': 'RUB',\n        '₾': 'GEL'\n\n    };\n\n    /**\n     * special look ahead character array\n     * These characters form with consonants to become 'single'/consonant combo\n     * @type [Array]\n     */\n    var lookAheadCharArray = [\n        // burmese\n        '်',\n\n        // Dhivehi\n        'ް'\n    ];\n\n    /**\n     * diatricMap for languages where transliteration changes entirely as more diatrics are added\n     * @type {Object}\n     */\n    var diatricMap = {\n        // Burmese\n        // dependent vowels\n        'ာ': 'a',\n        'ါ': 'a',\n        'ေ': 'e',\n        'ဲ': 'e',\n        'ိ': 'i',\n        'ီ': 'i',\n        'ို': 'o',\n        'ု': 'u',\n        'ူ': 'u',\n        'ေါင်': 'aung',\n        'ော': 'aw',\n        'ော်': 'aw',\n        'ေါ': 'aw',\n        'ေါ်': 'aw',\n        '်': '်', // this is special case but the character will be converted to latin in the code\n        'က်': 'et',\n        'ိုက်': 'aik',\n        'ောက်': 'auk',\n        'င်': 'in',\n        'ိုင်': 'aing',\n        'ောင်': 'aung',\n        'စ်': 'it',\n        'ည်': 'i',\n        'တ်': 'at',\n        'ိတ်': 'eik',\n        'ုတ်': 'ok',\n        'ွတ်': 'ut',\n        'ေတ်': 'it',\n        'ဒ်': 'd',\n        'ိုဒ်': 'ok',\n        'ုဒ်': 'ait',\n        'န်': 'an',\n        'ာန်': 'an',\n        'ိန်': 'ein',\n        'ုန်': 'on',\n        'ွန်': 'un',\n        'ပ်': 'at',\n        'ိပ်': 'eik',\n        'ုပ်': 'ok',\n        'ွပ်': 'ut',\n        'န်ုပ်': 'nub',\n        'မ်': 'an',\n        'ိမ်': 'ein',\n        'ုမ်': 'on',\n        'ွမ်': 'un',\n        'ယ်': 'e',\n        'ိုလ်': 'ol',\n        'ဉ်': 'in',\n        'ံ': 'an',\n        'ိံ': 'ein',\n        'ုံ': 'on',\n\n        // Dhivehi\n        'ައް': 'ah',\n        'ަށް': 'ah'\n    };\n\n    /**\n     * langCharMap language specific characters translations\n     * @type   {Object}\n     */\n    var langCharMap = {\n        'en': {}, // default language\n\n        'az': { // Azerbaijani\n            'ç': 'c',\n            'ə': 'e',\n            'ğ': 'g',\n            'ı': 'i',\n            'ö': 'o',\n            'ş': 's',\n            'ü': 'u',\n            'Ç': 'C',\n            'Ə': 'E',\n            'Ğ': 'G',\n            'İ': 'I',\n            'Ö': 'O',\n            'Ş': 'S',\n            'Ü': 'U'\n        },\n\n        'cs': { // Czech\n            'č': 'c',\n            'ď': 'd',\n            'ě': 'e',\n            'ň': 'n',\n            'ř': 'r',\n            'š': 's',\n            'ť': 't',\n            'ů': 'u',\n            'ž': 'z',\n            'Č': 'C',\n            'Ď': 'D',\n            'Ě': 'E',\n            'Ň': 'N',\n            'Ř': 'R',\n            'Š': 'S',\n            'Ť': 'T',\n            'Ů': 'U',\n            'Ž': 'Z'\n        },\n\n        'fi': { // Finnish\n            // 'å': 'a', duplicate see charMap/latin\n            // 'Å': 'A', duplicate see charMap/latin\n            'ä': 'a', // ok\n            'Ä': 'A', // ok\n            'ö': 'o', // ok\n            'Ö': 'O' // ok\n        },\n\n        'hu': { // Hungarian\n            'ä': 'a', // ok\n            'Ä': 'A', // ok\n            // 'á': 'a', duplicate see charMap/latin\n            // 'Á': 'A', duplicate see charMap/latin\n            'ö': 'o', // ok\n            'Ö': 'O', // ok\n            // 'ő': 'o', duplicate see charMap/latin\n            // 'Ő': 'O', duplicate see charMap/latin\n            'ü': 'u',\n            'Ü': 'U',\n            'ű': 'u',\n            'Ű': 'U'\n        },\n\n        'lt': { // Lithuanian\n            'ą': 'a',\n            'č': 'c',\n            'ę': 'e',\n            'ė': 'e',\n            'į': 'i',\n            'š': 's',\n            'ų': 'u',\n            'ū': 'u',\n            'ž': 'z',\n            'Ą': 'A',\n            'Č': 'C',\n            'Ę': 'E',\n            'Ė': 'E',\n            'Į': 'I',\n            'Š': 'S',\n            'Ų': 'U',\n            'Ū': 'U'\n        },\n\n        'lv': { // Latvian\n            'ā': 'a',\n            'č': 'c',\n            'ē': 'e',\n            'ģ': 'g',\n            'ī': 'i',\n            'ķ': 'k',\n            'ļ': 'l',\n            'ņ': 'n',\n            'š': 's',\n            'ū': 'u',\n            'ž': 'z',\n            'Ā': 'A',\n            'Č': 'C',\n            'Ē': 'E',\n            'Ģ': 'G',\n            'Ī': 'i',\n            'Ķ': 'k',\n            'Ļ': 'L',\n            'Ņ': 'N',\n            'Š': 'S',\n            'Ū': 'u',\n            'Ž': 'Z'\n        },\n\n        'pl': { // Polish\n            'ą': 'a',\n            'ć': 'c',\n            'ę': 'e',\n            'ł': 'l',\n            'ń': 'n',\n            'ó': 'o',\n            'ś': 's',\n            'ź': 'z',\n            'ż': 'z',\n            'Ą': 'A',\n            'Ć': 'C',\n            'Ę': 'e',\n            'Ł': 'L',\n            'Ń': 'N',\n            'Ó': 'O',\n            'Ś': 'S',\n            'Ź': 'Z',\n            'Ż': 'Z'\n        },\n\n        'sk': { // Slovak\n            'ä': 'a',\n            'Ä': 'A'\n        },\n\n        'sr': { // Serbian\n            'љ': 'lj',\n            'њ': 'nj',\n            'Љ': 'Lj',\n            'Њ': 'Nj',\n            'đ': 'dj',\n            'Đ': 'Dj'\n        },\n\n        'tr': { // Turkish\n            'Ü': 'U',\n            'Ö': 'O',\n            'ü': 'u',\n            'ö': 'o'\n        }\n    };\n\n    /**\n     * symbolMap language specific symbol translations\n     * translations must be transliterated already\n     * @type   {Object}\n     */\n    var symbolMap = {\n        'ar': {\n            '∆': 'delta',\n            '∞': 'la-nihaya',\n            '♥': 'hob',\n            '&': 'wa',\n            '|': 'aw',\n            '<': 'aqal-men',\n            '>': 'akbar-men',\n            '∑': 'majmou',\n            '¤': 'omla'\n        },\n\n        'az': {},\n\n        'ca': {\n            '∆': 'delta',\n            '∞': 'infinit',\n            '♥': 'amor',\n            '&': 'i',\n            '|': 'o',\n            '<': 'menys que',\n            '>': 'mes que',\n            '∑': 'suma dels',\n            '¤': 'moneda'\n        },\n\n        'cs': {\n            '∆': 'delta',\n            '∞': 'nekonecno',\n            '♥': 'laska',\n            '&': 'a',\n            '|': 'nebo',\n            '<': 'mensi nez',\n            '>': 'vetsi nez',\n            '∑': 'soucet',\n            '¤': 'mena'\n        },\n\n        'de': {\n            '∆': 'delta',\n            '∞': 'unendlich',\n            '♥': 'Liebe',\n            '&': 'und',\n            '|': 'oder',\n            '<': 'kleiner als',\n            '>': 'groesser als',\n            '∑': 'Summe von',\n            '¤': 'Waehrung'\n        },\n\n        'dv': {\n            '∆': 'delta',\n            '∞': 'kolunulaa',\n            '♥': 'loabi',\n            '&': 'aai',\n            '|': 'noonee',\n            '<': 'ah vure kuda',\n            '>': 'ah vure bodu',\n            '∑': 'jumula',\n            '¤': 'faisaa'\n        },\n\n        'en': {\n            '∆': 'delta',\n            '∞': 'infinity',\n            '♥': 'love',\n            '&': 'and',\n            '|': 'or',\n            '<': 'less than',\n            '>': 'greater than',\n            '∑': 'sum',\n            '¤': 'currency'\n        },\n\n        'es': {\n            '∆': 'delta',\n            '∞': 'infinito',\n            '♥': 'amor',\n            '&': 'y',\n            '|': 'u',\n            '<': 'menos que',\n            '>': 'mas que',\n            '∑': 'suma de los',\n            '¤': 'moneda'\n        },\n\n        'fa': {\n            '∆': 'delta',\n            '∞': 'bi-nahayat',\n            '♥': 'eshgh',\n            '&': 'va',\n            '|': 'ya',\n            '<': 'kamtar-az',\n            '>': 'bishtar-az',\n            '∑': 'majmooe',\n            '¤': 'vahed'\n        },\n\n        'fi': {\n            '∆': 'delta',\n            '∞': 'aarettomyys',\n            '♥': 'rakkaus',\n            '&': 'ja',\n            '|': 'tai',\n            '<': 'pienempi kuin',\n            '>': 'suurempi kuin',\n            '∑': 'summa',\n            '¤': 'valuutta'\n        },\n\n        'fr': {\n            '∆': 'delta',\n            '∞': 'infiniment',\n            '♥': 'Amour',\n            '&': 'et',\n            '|': 'ou',\n            '<': 'moins que',\n            '>': 'superieure a',\n            '∑': 'somme des',\n            '¤': 'monnaie'\n        },\n\n        'ge': {\n            '∆': 'delta',\n            '∞': 'usasruloba',\n            '♥': 'siqvaruli',\n            '&': 'da',\n            '|': 'an',\n            '<': 'naklebi',\n            '>': 'meti',\n            '∑': 'jami',\n            '¤': 'valuta'\n        },\n\n        'gr': {},\n\n        'hu': {\n            '∆': 'delta',\n            '∞': 'vegtelen',\n            '♥': 'szerelem',\n            '&': 'es',\n            '|': 'vagy',\n            '<': 'kisebb mint',\n            '>': 'nagyobb mint',\n            '∑': 'szumma',\n            '¤': 'penznem'\n        },\n\n        'it': {\n            '∆': 'delta',\n            '∞': 'infinito',\n            '♥': 'amore',\n            '&': 'e',\n            '|': 'o',\n            '<': 'minore di',\n            '>': 'maggiore di',\n            '∑': 'somma',\n            '¤': 'moneta'\n        },\n\n        'lt': {\n            '∆': 'delta',\n            '∞': 'begalybe',\n            '♥': 'meile',\n            '&': 'ir',\n            '|': 'ar',\n            '<': 'maziau nei',\n            '>': 'daugiau nei',\n            '∑': 'suma',\n            '¤': 'valiuta'\n        },\n\n        'lv': {\n            '∆': 'delta',\n            '∞': 'bezgaliba',\n            '♥': 'milestiba',\n            '&': 'un',\n            '|': 'vai',\n            '<': 'mazak neka',\n            '>': 'lielaks neka',\n            '∑': 'summa',\n            '¤': 'valuta'\n        },\n\n        'my': {\n            '∆': 'kwahkhyaet',\n            '∞': 'asaonasme',\n            '♥': 'akhyait',\n            '&': 'nhin',\n            '|': 'tho',\n            '<': 'ngethaw',\n            '>': 'kyithaw',\n            '∑': 'paungld',\n            '¤': 'ngwekye'\n        },\n\n        'mk': {},\n\n        'nl': {\n            '∆': 'delta',\n            '∞': 'oneindig',\n            '♥': 'liefde',\n            '&': 'en',\n            '|': 'of',\n            '<': 'kleiner dan',\n            '>': 'groter dan',\n            '∑': 'som',\n            '¤': 'valuta'\n        },\n\n        'pl': {\n            '∆': 'delta',\n            '∞': 'nieskonczonosc',\n            '♥': 'milosc',\n            '&': 'i',\n            '|': 'lub',\n            '<': 'mniejsze niz',\n            '>': 'wieksze niz',\n            '∑': 'suma',\n            '¤': 'waluta'\n        },\n\n        'pt': {\n            '∆': 'delta',\n            '∞': 'infinito',\n            '♥': 'amor',\n            '&': 'e',\n            '|': 'ou',\n            '<': 'menor que',\n            '>': 'maior que',\n            '∑': 'soma',\n            '¤': 'moeda'\n        },\n\n        'ro': {\n            '∆': 'delta',\n            '∞': 'infinit',\n            '♥': 'dragoste',\n            '&': 'si',\n            '|': 'sau',\n            '<': 'mai mic ca',\n            '>': 'mai mare ca',\n            '∑': 'suma',\n            '¤': 'valuta'\n        },\n\n        'ru': {\n            '∆': 'delta',\n            '∞': 'beskonechno',\n            '♥': 'lubov',\n            '&': 'i',\n            '|': 'ili',\n            '<': 'menshe',\n            '>': 'bolshe',\n            '∑': 'summa',\n            '¤': 'valjuta'\n        },\n\n        'sk': {\n            '∆': 'delta',\n            '∞': 'nekonecno',\n            '♥': 'laska',\n            '&': 'a',\n            '|': 'alebo',\n            '<': 'menej ako',\n            '>': 'viac ako',\n            '∑': 'sucet',\n            '¤': 'mena'\n        },\n\n        'sr': {},\n\n        'tr': {\n            '∆': 'delta',\n            '∞': 'sonsuzluk',\n            '♥': 'ask',\n            '&': 've',\n            '|': 'veya',\n            '<': 'kucuktur',\n            '>': 'buyuktur',\n            '∑': 'toplam',\n            '¤': 'para birimi'\n        },\n\n        'uk': {\n            '∆': 'delta',\n            '∞': 'bezkinechnist',\n            '♥': 'lubov',\n            '&': 'i',\n            '|': 'abo',\n            '<': 'menshe',\n            '>': 'bilshe',\n            '∑': 'suma',\n            '¤': 'valjuta'\n        },\n\n        'vn': {\n            '∆': 'delta',\n            '∞': 'vo cuc',\n            '♥': 'yeu',\n            '&': 'va',\n            '|': 'hoac',\n            '<': 'nho hon',\n            '>': 'lon hon',\n            '∑': 'tong',\n            '¤': 'tien te'\n        }\n    };\n\n    var uricChars = [';', '?', ':', '@', '&', '=', '+', '$', ',', '/'].join('');\n\n    var uricNoSlashChars = [';', '?', ':', '@', '&', '=', '+', '$', ','].join('');\n\n    var markChars = ['.', '!', '~', '*', \"'\", '(', ')'].join('');\n\n    /**\n     * getSlug\n     * @param  {string} input input string\n     * @param  {object|string} opts config object or separator string/char\n     * @api    public\n     * @return {string}  sluggified string\n     */\n    var getSlug = function getSlug(input, opts) {\n        var separator = '-';\n        var result = '';\n        var diatricString = '';\n        var convertSymbols = true;\n        var customReplacements = {};\n        var maintainCase;\n        var titleCase;\n        var truncate;\n        var uricFlag;\n        var uricNoSlashFlag;\n        var markFlag;\n        var symbol;\n        var langChar;\n        var lucky;\n        var i;\n        var ch;\n        var l;\n        var lastCharWasSymbol;\n        var lastCharWasDiatric;\n        var allowedChars = '';\n\n        if (typeof input !== 'string') {\n            return '';\n        }\n\n        if (typeof opts === 'string') {\n            separator = opts;\n        }\n\n        symbol = symbolMap.en;\n        langChar = langCharMap.en;\n\n        if (typeof opts === 'object') {\n            maintainCase = opts.maintainCase || false;\n            customReplacements = (opts.custom && typeof opts.custom === 'object') ? opts.custom : customReplacements;\n            truncate = (+opts.truncate > 1 && opts.truncate) || false;\n            uricFlag = opts.uric || false;\n            uricNoSlashFlag = opts.uricNoSlash || false;\n            markFlag = opts.mark || false;\n            convertSymbols = (opts.symbols === false || opts.lang === false) ? false : true;\n            separator = opts.separator || separator;\n\n            if (uricFlag) {\n                allowedChars += uricChars;\n            }\n\n            if (uricNoSlashFlag) {\n                allowedChars += uricNoSlashChars;\n            }\n\n            if (markFlag) {\n                allowedChars += markChars;\n            }\n\n            symbol = (opts.lang && symbolMap[opts.lang] && convertSymbols) ?\n                symbolMap[opts.lang] : (convertSymbols ? symbolMap.en : {});\n\n            langChar = (opts.lang && langCharMap[opts.lang]) ?\n                langCharMap[opts.lang] :\n                opts.lang === false || opts.lang === true ? {} : langCharMap.en;\n\n            // if titleCase config is an Array, rewrite to object format\n            if (opts.titleCase && typeof opts.titleCase.length === 'number' && Array.prototype.toString.call(opts.titleCase)) {\n                opts.titleCase.forEach(function (v) {\n                    customReplacements[v + ''] = v + '';\n                });\n\n                titleCase = true;\n            } else {\n                titleCase = !!opts.titleCase;\n            }\n\n            // if custom config is an Array, rewrite to object format\n            if (opts.custom && typeof opts.custom.length === 'number' && Array.prototype.toString.call(opts.custom)) {\n                opts.custom.forEach(function (v) {\n                    customReplacements[v + ''] = v + '';\n                });\n            }\n\n            // custom replacements\n            Object.keys(customReplacements).forEach(function (v) {\n                var r;\n\n                if (v.length > 1) {\n                    r = new RegExp('\\\\b' + escapeChars(v) + '\\\\b', 'gi');\n                } else {\n                    r = new RegExp(escapeChars(v), 'gi');\n                }\n\n                input = input.replace(r, customReplacements[v]);\n            });\n\n            // add all custom replacement to allowed charlist\n            for (ch in customReplacements) {\n                allowedChars += ch;\n            }\n        }\n\n        allowedChars += separator;\n\n        // escape all necessary chars\n        allowedChars = escapeChars(allowedChars);\n\n        // trim whitespaces\n        input = input.replace(/(^\\s+|\\s+$)/g, '');\n\n        lastCharWasSymbol = false;\n        lastCharWasDiatric = false;\n\n        for (i = 0, l = input.length; i < l; i++) {\n            ch = input[i];\n\n            if (isReplacedCustomChar(ch, customReplacements)) {\n                // don't convert a already converted char\n                lastCharWasSymbol = false;\n            } else if (langChar[ch]) {\n                // process language specific diactrics chars conversion\n                ch = lastCharWasSymbol && langChar[ch].match(/[A-Za-z0-9]/) ? ' ' + langChar[ch] : langChar[ch];\n\n                lastCharWasSymbol = false;\n            } else if (ch in charMap) {\n                // the transliteration changes entirely when some special characters are added\n                if (i + 1 < l && lookAheadCharArray.indexOf(input[i + 1]) >= 0) {\n                    diatricString += ch;\n                    ch = '';\n                } else if (lastCharWasDiatric === true) {\n                    ch = diatricMap[diatricString] + charMap[ch];\n                    diatricString = '';\n                } else {\n                    // process diactrics chars\n                    ch = lastCharWasSymbol && charMap[ch].match(/[A-Za-z0-9]/) ? ' ' + charMap[ch] : charMap[ch];\n                }\n\n                lastCharWasSymbol = false;\n                lastCharWasDiatric = false;\n            } else if (ch in diatricMap) {\n                diatricString += ch;\n                ch = '';\n                // end of string, put the whole meaningful word\n                if (i === l - 1) {\n                    ch = diatricMap[diatricString];\n                }\n                lastCharWasDiatric = true;\n            } else if (\n                // process symbol chars\n                symbol[ch] && !(uricFlag && uricChars\n                    .indexOf(ch) !== -1) && !(uricNoSlashFlag && uricNoSlashChars\n                    // .indexOf(ch) !== -1) && !(markFlag && markChars\n                    .indexOf(ch) !== -1)) {\n                ch = lastCharWasSymbol || result.substr(-1).match(/[A-Za-z0-9]/) ? separator + symbol[ch] : symbol[ch];\n                ch += input[i + 1] !== void 0 && input[i + 1].match(/[A-Za-z0-9]/) ? separator : '';\n\n                lastCharWasSymbol = true;\n            } else {\n                if (lastCharWasDiatric === true) {\n                    ch = diatricMap[diatricString] + ch;\n                    diatricString = '';\n                    lastCharWasDiatric = false;\n                } else if (lastCharWasSymbol && (/[A-Za-z0-9]/.test(ch) || result.substr(-1).match(/A-Za-z0-9]/))) {\n                    // process latin chars\n                    ch = ' ' + ch;\n                }\n                lastCharWasSymbol = false;\n            }\n\n            // add allowed chars\n            result += ch.replace(new RegExp('[^\\\\w\\\\s' + allowedChars + '_-]', 'g'), separator);\n        }\n\n        if (titleCase) {\n            result = result.replace(/(\\w)(\\S*)/g, function (_, i, r) {\n                var j = i.toUpperCase() + (r !== null ? r : '');\n                return (Object.keys(customReplacements).indexOf(j.toLowerCase()) < 0) ? j : j.toLowerCase();\n            });\n        }\n\n        // eliminate duplicate separators\n        // add separator\n        // trim separators from start and end\n        result = result.replace(/\\s+/g, separator)\n            .replace(new RegExp('\\\\' + separator + '+', 'g'), separator)\n            .replace(new RegExp('(^\\\\' + separator + '+|\\\\' + separator + '+$)', 'g'), '');\n\n        if (truncate && result.length > truncate) {\n            lucky = result.charAt(truncate) === separator;\n            result = result.slice(0, truncate);\n\n            if (!lucky) {\n                result = result.slice(0, result.lastIndexOf(separator));\n            }\n        }\n\n        if (!maintainCase && !titleCase) {\n            result = result.toLowerCase();\n        }\n\n        return result;\n    };\n\n    /**\n     * createSlug curried(opts)(input)\n     * @param   {object|string} opts config object or input string\n     * @return  {Function} function getSlugWithConfig()\n     **/\n    var createSlug = function createSlug(opts) {\n\n        /**\n         * getSlugWithConfig\n         * @param   {string} input string\n         * @return  {string} slug string\n         */\n        return function getSlugWithConfig(input) {\n            return getSlug(input, opts);\n        };\n    };\n\n    /**\n     * escape Chars\n     * @param   {string} input string\n     */\n    var escapeChars = function escapeChars(input) {\n        return input.replace(/[-\\\\^$*+?.()|[\\]{}\\/]/g, '\\\\$&');\n    };\n\n    /**\n     * check if the char is an already converted char from custom list\n     * @param   {char} ch character to check\n     * @param   {object} customReplacements custom translation map\n     */\n    var isReplacedCustomChar = function (ch, customReplacements) {\n        for (var c in customReplacements) {\n            if (customReplacements[c] === ch) {\n                return true;\n            }\n        }\n    };\n\n    if (typeof module !== 'undefined' && module.exports) {\n\n        // export functions for use in Node\n        module.exports = getSlug;\n        module.exports.createSlug = createSlug;\n    } else if (typeof define !== 'undefined' && define.amd) {\n\n        // export function for use in AMD\n        define([], function () {\n            return getSlug;\n        });\n    } else {\n\n        // don't overwrite global if exists\n        try {\n            if (root.getSlug || root.createSlug) {\n                throw 'speakingurl: globals exists /(getSlug|createSlug)/';\n            } else {\n                root.getSlug = getSlug;\n                root.createSlug = createSlug;\n            }\n        } catch (e) {}\n    }\n})(this);","( function( window, undefined ) {\n\t'use strict';\n\n\t/**\n\t * Handles managing all events for whatever you plug it into. Priorities for hooks are based on lowest to highest in\n\t * that, lowest priority hooks are fired first.\n\t */\n\tvar EventManager = function() {\n\t\tvar slice = Array.prototype.slice;\n\t\t\n\t\t/**\n\t\t * Maintain a reference to the object scope so our public methods never get confusing.\n\t\t */\n\t\tvar MethodsAvailable = {\n\t\t\tremoveFilter : removeFilter,\n\t\t\tapplyFilters : applyFilters,\n\t\t\taddFilter : addFilter,\n\t\t\tremoveAction : removeAction,\n\t\t\tdoAction : doAction,\n\t\t\taddAction : addAction\n\t\t};\n\n\t\t/**\n\t\t * Contains the hooks that get registered with this EventManager. The array for storage utilizes a \"flat\"\n\t\t * object literal such that looking up the hook utilizes the native object literal hash.\n\t\t */\n\t\tvar STORAGE = {\n\t\t\tactions : {},\n\t\t\tfilters : {}\n\t\t};\n\n\t\t/**\n\t\t * Adds an action to the event manager.\n\t\t *\n\t\t * @param action Must contain namespace.identifier\n\t\t * @param callback Must be a valid callback function before this action is added\n\t\t * @param [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook\n\t\t * @param [context] Supply a value to be used for this\n\t\t */\n\t\tfunction addAction( action, callback, priority, context ) {\n\t\t\tif( typeof action === 'string' && typeof callback === 'function' ) {\n\t\t\t\tpriority = parseInt( ( priority || 10 ), 10 );\n\t\t\t\t_addHook( 'actions', action, callback, priority, context );\n\t\t\t}\n\n\t\t\treturn MethodsAvailable;\n\t\t}\n\n\t\t/**\n\t\t * Performs an action if it exists. You can pass as many arguments as you want to this function; the only rule is\n\t\t * that the first argument must always be the action.\n\t\t */\n\t\tfunction doAction( /* action, arg1, arg2, ... */ ) {\n\t\t\tvar args = slice.call( arguments );\n\t\t\tvar action = args.shift();\n\n\t\t\tif( typeof action === 'string' ) {\n\t\t\t\t_runHook( 'actions', action, args );\n\t\t\t}\n\n\t\t\treturn MethodsAvailable;\n\t\t}\n\n\t\t/**\n\t\t * Removes the specified action if it contains a namespace.identifier & exists.\n\t\t *\n\t\t * @param action The action to remove\n\t\t * @param [callback] Callback function to remove\n\t\t */\n\t\tfunction removeAction( action, callback ) {\n\t\t\tif( typeof action === 'string' ) {\n\t\t\t\t_removeHook( 'actions', action, callback );\n\t\t\t}\n\n\t\t\treturn MethodsAvailable;\n\t\t}\n\n\t\t/**\n\t\t * Adds a filter to the event manager.\n\t\t *\n\t\t * @param filter Must contain namespace.identifier\n\t\t * @param callback Must be a valid callback function before this action is added\n\t\t * @param [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook\n\t\t * @param [context] Supply a value to be used for this\n\t\t */\n\t\tfunction addFilter( filter, callback, priority, context ) {\n\t\t\tif( typeof filter === 'string' && typeof callback === 'function' ) {\n\t\t\t\tpriority = parseInt( ( priority || 10 ), 10 );\n\t\t\t\t_addHook( 'filters', filter, callback, priority, context );\n\t\t\t}\n\n\t\t\treturn MethodsAvailable;\n\t\t}\n\n\t\t/**\n\t\t * Performs a filter if it exists. You should only ever pass 1 argument to be filtered. The only rule is that\n\t\t * the first argument must always be the filter.\n\t\t */\n\t\tfunction applyFilters( /* filter, filtered arg, arg2, ... */ ) {\n\t\t\tvar args = slice.call( arguments );\n\t\t\tvar filter = args.shift();\n\n\t\t\tif( typeof filter === 'string' ) {\n\t\t\t\treturn _runHook( 'filters', filter, args );\n\t\t\t}\n\n\t\t\treturn MethodsAvailable;\n\t\t}\n\n\t\t/**\n\t\t * Removes the specified filter if it contains a namespace.identifier & exists.\n\t\t *\n\t\t * @param filter The action to remove\n\t\t * @param [callback] Callback function to remove\n\t\t */\n\t\tfunction removeFilter( filter, callback ) {\n\t\t\tif( typeof filter === 'string') {\n\t\t\t\t_removeHook( 'filters', filter, callback );\n\t\t\t}\n\n\t\t\treturn MethodsAvailable;\n\t\t}\n\n\t\t/**\n\t\t * Removes the specified hook by resetting the value of it.\n\t\t *\n\t\t * @param type Type of hook, either 'actions' or 'filters'\n\t\t * @param hook The hook (namespace.identifier) to remove\n\t\t * @private\n\t\t */\n\t\tfunction _removeHook( type, hook, callback, context ) {\n\t\t\tvar handlers, handler, i;\n\t\t\t\n\t\t\tif ( !STORAGE[ type ][ hook ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !callback ) {\n\t\t\t\tSTORAGE[ type ][ hook ] = [];\n\t\t\t} else {\n\t\t\t\thandlers = STORAGE[ type ][ hook ];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\tfor ( i = handlers.length; i--; ) {\n\t\t\t\t\t\tif ( handlers[i].callback === callback ) {\n\t\t\t\t\t\t\thandlers.splice( i, 1 );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfor ( i = handlers.length; i--; ) {\n\t\t\t\t\t\thandler = handlers[i];\n\t\t\t\t\t\tif ( handler.callback === callback && handler.context === context) {\n\t\t\t\t\t\t\thandlers.splice( i, 1 );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Adds the hook to the appropriate storage container\n\t\t *\n\t\t * @param type 'actions' or 'filters'\n\t\t * @param hook The hook (namespace.identifier) to add to our event manager\n\t\t * @param callback The function that will be called when the hook is executed.\n\t\t * @param priority The priority of this hook. Must be an integer.\n\t\t * @param [context] A value to be used for this\n\t\t * @private\n\t\t */\n\t\tfunction _addHook( type, hook, callback, priority, context ) {\n\t\t\tvar hookObject = {\n\t\t\t\tcallback : callback,\n\t\t\t\tpriority : priority,\n\t\t\t\tcontext : context\n\t\t\t};\n\n\t\t\t// Utilize 'prop itself' : http://jsperf.com/hasownproperty-vs-in-vs-undefined/19\n\t\t\tvar hooks = STORAGE[ type ][ hook ];\n\t\t\tif( hooks ) {\n\t\t\t\thooks.push( hookObject );\n\t\t\t\thooks = _hookInsertSort( hooks );\n\t\t\t}\n\t\t\telse {\n\t\t\t\thooks = [ hookObject ];\n\t\t\t}\n\n\t\t\tSTORAGE[ type ][ hook ] = hooks;\n\t\t}\n\n\t\t/**\n\t\t * Use an insert sort for keeping our hooks organized based on priority. This function is ridiculously faster\n\t\t * than bubble sort, etc: http://jsperf.com/javascript-sort\n\t\t *\n\t\t * @param hooks The custom array containing all of the appropriate hooks to perform an insert sort on.\n\t\t * @private\n\t\t */\n\t\tfunction _hookInsertSort( hooks ) {\n\t\t\tvar tmpHook, j, prevHook;\n\t\t\tfor( var i = 1, len = hooks.length; i < len; i++ ) {\n\t\t\t\ttmpHook = hooks[ i ];\n\t\t\t\tj = i;\n\t\t\t\twhile( ( prevHook = hooks[ j - 1 ] ) &&  prevHook.priority > tmpHook.priority ) {\n\t\t\t\t\thooks[ j ] = hooks[ j - 1 ];\n\t\t\t\t\t--j;\n\t\t\t\t}\n\t\t\t\thooks[ j ] = tmpHook;\n\t\t\t}\n\n\t\t\treturn hooks;\n\t\t}\n\n\t\t/**\n\t\t * Runs the specified hook. If it is an action, the value is not modified but if it is a filter, it is.\n\t\t *\n\t\t * @param type 'actions' or 'filters'\n\t\t * @param hook The hook ( namespace.identifier ) to be ran.\n\t\t * @param args Arguments to pass to the action/filter. If it's a filter, args is actually a single parameter.\n\t\t * @private\n\t\t */\n\t\tfunction _runHook( type, hook, args ) {\n\t\t\tvar handlers = STORAGE[ type ][ hook ], i, len;\n\t\t\t\n\t\t\tif ( !handlers ) {\n\t\t\t\treturn (type === 'filters') ? args[0] : false;\n\t\t\t}\n\n\t\t\tlen = handlers.length;\n\t\t\tif ( type === 'filters' ) {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\targs[ 0 ] = handlers[ i ].callback.apply( handlers[ i ].context, args );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\thandlers[ i ].callback.apply( handlers[ i ].context, args );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ( type === 'filters' ) ? args[ 0 ] : true;\n\t\t}\n\n\t\t// return all of the publicly available methods\n\t\treturn MethodsAvailable;\n\n\t};\n\t\n\t\n\twindow.hooksManager = window.hooksManager || new EventManager();\n\n} )( window );","(function ($) {\n    if (!Element.prototype.scrollIntoViewIfNeeded) {\n        Element.prototype.scrollIntoViewIfNeeded = function (centerIfNeeded) {\n            centerIfNeeded = arguments.length === 0 ? true : !!centerIfNeeded;\n\n            var parent = this.parentNode,\n                parentComputedStyle = window.getComputedStyle(parent, null),\n                parentBorderTopWidth = parseInt(parentComputedStyle.getPropertyValue('border-top-width')),\n                parentBorderLeftWidth = parseInt(parentComputedStyle.getPropertyValue('border-left-width')),\n                overTop = this.offsetTop - parent.offsetTop < parent.scrollTop,\n                overBottom = (this.offsetTop - parent.offsetTop + this.clientHeight - parentBorderTopWidth) > (parent.scrollTop + parent.clientHeight),\n                overLeft = this.offsetLeft - parent.offsetLeft < parent.scrollLeft,\n                overRight = (this.offsetLeft - parent.offsetLeft + this.clientWidth - parentBorderLeftWidth) > (parent.scrollLeft + parent.clientWidth),\n                alignWithTop = overTop && !overBottom;\n\n            if ((overTop || overBottom) && centerIfNeeded) {\n                parent.scrollTop = this.offsetTop - parent.offsetTop - parent.clientHeight / 2 - parentBorderTopWidth + this.clientHeight / 2;\n            }\n\n            if ((overLeft || overRight) && centerIfNeeded) {\n                parent.scrollLeft = this.offsetLeft - parent.offsetLeft - parent.clientWidth / 2 - parentBorderLeftWidth + this.clientWidth / 2;\n            }\n\n            if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {\n                this.scrollIntoView(alignWithTop);\n            }\n        };\n    }\n\n    $.fn.tagName = function () {\n        if (!this[0])\n            return null;\n        if (this[0] && this[0].nodeName) {\n            return this[0].nodeName.toLowerCase();\n        }\n        return null;\n    };\n\n    $.fn.insertAt = function (index, $parent) {\n        return this.each(function () {\n            if ($(this).parent().is($parent)) {\n                var siblings = $(this).siblings();\n                if (index < siblings.length) {\n                    siblings.eq(index).before(this);\n                } else {\n                    siblings.last().after(this);\n                }\n            } else {\n                if (index === 0 || !$parent.children().length) {\n                    $parent.prepend(this);\n                } else {\n                    if (index >= $parent.children().length) {\n                        $parent.append(this);\n                    } else {\n                        $parent.children().eq(index - 1).after(this);\n                    }\n                }\n            }\n        });\n    };\n\n\n    if (!NodeList.prototype.forEach) {\n        NodeList.prototype.forEach = Array.prototype.forEach;\n        HTMLCollection.prototype.forEach = Array.prototype.forEach; // Because of https://bugzilla.mozilla.org/show_bug.cgi?id=14869\n\n    }\n\n    if (!Array.from) {\n        Array.from = function (object) {\n            return [].slice.call(object);\n        };\n    }\n\n\n})(jQuery);\n\n(function ($, root) {\n\n    wp.customize.bind(\"save-request-params\", function (query) {\n        query.customize_post_id = CP_Customizer.preview.data().pageID;\n        if (CP_Customizer && CP_Customizer.hooks) {\n            query = CP_Customizer.hooks.applyFilters('save-request-params', query);\n        }\n        return query;\n    });\n\n    function translateCompanionString(text) {\n\n        if (!text || !_.isString(text)) {\n            return text;\n        }\n\n        if (root.__materialisCustomizerStrings[text] !== undefined) {\n            return root.__materialisCustomizerStrings[text];\n        } else {\n            //in debug mode\n            if (CP_Customizer.options('SCRIPT_DEBUG')) {\n                console.warn(\"[Not translated] \" + text);\n            }\n            return text;\n        }\n    }\n\n    var CP_Customizer = {\n            events: {\n                \"PREVIEW_LOADED\": \"PREVIEW_LOADED\",\n                \"ADD_FIXED_OVERLAYS\": \"ADD_FIXED_OVERLAYS\",\n                \"RIGHT_SECTION_CLOSED\": \"RIGHT_SECTION_CLOSED\",\n                \"ELEMENT_DECORATED\": \"ELEMENT_DECORATED\",\n                \"CONTENT_ROW_REMOVED\": \"CONTENT_ROW_REMOVED\",\n                \"DOCUMENT_READY\": \"DOCUMENT_READY\",\n                \"STATE_UPDATED\": \"STATE_UPDATED\",\n                \"FOCUS_CONTROL\": \"FOCUS_CONTROL\"\n            },\n\n            getSlug: window.getSlug,\n\n            wpApi: wp.customize,\n\n            MAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER ? Number.MAX_SAFE_INTEGER : 9007199254740991,\n\n            hooks: window.hooksManager,\n\n            CONTENT_ELEMENTS: 'p,h1,h2,h3,h4,h5,h6,a,span,i,hr,img,ul,div.spacer',\n            TEXT_ELEMENTS: \"p,h1,h2,h3,h4,h5,h6,span\",\n            THEME_MOD_NODES: '[data-theme],[data-theme-src],[data-theme-mdi]',\n\n            translateCompanionString: translateCompanionString,\n\n            data: function () {\n                return root.cpCustomizerGlobal.pluginOptions.data;\n            },\n\n            addContentElementsSelectors: function (selectors) {\n                if (!_.isArray(selectors)) {\n                    selectors = [selectors]\n                }\n\n                this.CONTENT_ELEMENTS = this.CONTENT_ELEMENTS.split(',').concat(selectors).join(',')\n            },\n\n            IO: {\n                get: function (action, data) {\n                    return this.send({\n                        data: _.isObject(action) ? action : _.extend(data || {}, {action: action}),\n                        type: 'GET'\n                    });\n                },\n                post: function (action, data) {\n                    return this.send({\n                        data: _.isObject(action) ? action : _.extend(data || {}, {action: action})\n                    });\n                },\n\n\n                customGet: function (url, data) {\n                    data = _.isObject(data) ? data : {};\n                    var options = {\n                        type: \"GET\",\n                        data: data\n                    };\n\n\n                    return CP_Customizer.IO.customSend(url, options);\n                },\n                customPost: function (url, data) {\n                    data = _.isObject(data) ? data : {};\n                    var options = {\n                        type: \"POST\",\n                        data: data\n                    };\n\n                    return CP_Customizer.IO.customSend(url, options);\n                },\n\n                customSend: function (url, options) {\n\n                    options = _.defaults(options || {}, {\n                        type: 'POST',\n                        url: url\n                    });\n\n                    return CP_Customizer.IO.send(options);\n                },\n\n                rest: {\n                    get: function (route, data) {\n                        data = _.isObject(data) ? data : {};\n                        var options = {\n                            type: \"GET\",\n                            data: data\n                        };\n\n\n                        return CP_Customizer.IO.rest.send(route, options);\n                    },\n                    post: function (route, data) {\n                        data = _.isObject(data) ? data : {};\n                        var options = {\n                            type: \"POST\",\n                            data: data\n                        };\n\n                        return CP_Customizer.IO.rest.send(route, options);\n                    },\n\n                    send: function (route, options) {\n                        var url = CP_Customizer.options('restURL');\n\n                        options = _.defaults(options || {}, {\n                            type: 'POST',\n                            url: CP_Customizer.utils.phpTrim(url, '/') + \"/\" + CP_Customizer.utils.phpTrim(route, '/')\n                        });\n\n                        return CP_Customizer.IO.send(options);\n                    }\n                },\n\n                send: function (action, options) {\n                    var promise, deferred;\n                    if (_.isObject(action)) {\n                        options = action;\n                    } else {\n                        options = options || {};\n                        options.data = _.extend(options.data || {}, {action: action});\n                    }\n\n                    options = _.defaults(options || {}, {\n                        type: 'POST',\n                        url: wp.ajax.settings.url,\n                        context: this,\n                        _: Date.now(),\n                        xhrFields: {\n                            withCredentials: true\n                        }\n                    });\n\n                    deferred = $.Deferred(function (deferred) {\n                        // Transfer success/error callbacks.\n                        if (options.success)\n                            deferred.done(options.success);\n                        if (options.error)\n                            deferred.fail(options.error);\n\n                        delete options.success;\n                        delete options.error;\n\n                        deferred.jqXHR = $.ajax(options).done(function (response) {\n                            deferred.resolveWith(this, [response, deferred.jqXHR]);\n                        }).fail(function () {\n                            deferred.rejectWith(this, arguments);\n                        });\n                    });\n\n                    promise = deferred.promise();\n                    promise.abort = function () {\n                        deferred.jqXHR.abort();\n                        return this;\n                    };\n\n                    return promise;\n                }\n            },\n\n\n            options: function (key, defaultValue) {\n                var result = root.cpCustomizerGlobal.pluginOptions;\n\n                if (key) {\n                    var keyParts = key.split(':');\n                    for (var i = 0; i < keyParts.length; i++) {\n                        var part = keyParts[i];\n\n                        if (!_.isUndefined(result[part])) {\n                            result = result[part];\n                        } else {\n                            result = defaultValue;\n                            break;\n                        }\n                    }\n                }\n\n                return result;\n            },\n\n            __exportsCache: {},\n            getSectionExports: function (sectionId) {\n\n                if (sectionId.jquery) {\n                    sectionId = sectionId.attr('data-export-id');\n                }\n\n                if (this.__exportsCache[sectionId]) {\n                    return this.__exportsCache[sectionId];\n                }\n\n                var sectionData = CP_Customizer.options('data:sections', []).filter(function (s) {\n                    return s.id === sectionId\n                }).pop();\n\n                var modules = {},\n                    module = {},\n                    exports = {};\n\n                if (sectionData && sectionData.export) {\n                    try {\n                        eval(sectionData.export);\n\n                        if (!_.isUndefined(modules.export)) {\n                            exports = modules.export;\n                        } else {\n                            if (!_.isUndefined(module.exports)) {\n                                exports = module.exports;\n                            }\n                        }\n                    } catch (e) {\n                        console.warn('invalid section ' + sectionId + ' exports');\n                    }\n\n                }\n\n                this.__exportsCache[sectionId] = exports;\n                return exports || {};\n            },\n\n\n            slugPrefix: function () {\n                return root.cpCustomizerGlobal.pluginOptions.slugPrefix;\n            },\n\n\n            log: function (name, data, type) {\n\n                if (!CP_Customizer.options('SCRIPT_DEBUG', false) && !top.SCRIPT_DEBUG) {\n                    return;\n                }\n\n                type = type || 'log';\n\n                var colors = {\n                    'log': 'background-color:#03a9f4; color:#ffffff',\n                    'error': 'background-color:#ff0000; color:#ffffff'\n                };\n\n                if (!data) {\n                    data = 'NO DATA';\n                }\n\n                console.groupCollapsed('%c  ' + name + '  ', colors[type]);\n                console[type](data);\n                console.groupEnd();\n            },\n\n\n            logError: function (name, data) {\n                this.log(name, data, 'error');\n            },\n\n\n            bind: function (event, callback) {\n                this.on(event, callback, false);\n            },\n            unbind: function (event, callback) {\n                this.off(event, callback);\n            },\n\n            on: function (event, callback, async) {\n\n                event = event.split(' ').map(function (ev) {\n                    return 'cp_customizer.' + ev;\n                }).join(' ');\n\n                if (async) {\n                    var originalCallback = callback;\n\n                    callback = function () {\n                        var args = Array.from(arguments);\n                        var cb = this.callback;\n\n                        setTimeout(function () {\n                            cb.apply(this, args);\n                        }, 0);\n\n                    }.bind({\n                        callback: originalCallback\n                    });\n                }\n\n                $(window).bind(event, callback);\n            },\n\n            off: function (event, callback) {\n                event = event.split(' ').map(function (ev) {\n                    return 'cp_customizer.' + ev;\n                }).join(' ');\n                $(window).unbind(event, callback);\n            },\n\n            one: function (event, callback) {\n                event = event.split(' ').map(function (ev) {\n                    return 'cp_customizer.' + ev;\n                }).join(' ');\n                $(window).one(event, callback);\n            },\n\n\n            trigger: function (event, data) {\n                $(window).trigger('cp_customizer.' + event, data);\n            },\n\n            showLoader: function () {\n                $('div#cp-full-screen-loader').addClass('active');\n                jQuery('select').each(function () {\n                    var $select = $(this);\n                    if ($select.data() && $select.data().selectize) {\n                        $select.data().selectize.blur();\n                    }\n                });\n            },\n\n            hideLoader: function () {\n                $('div#cp-full-screen-loader').removeClass('active');\n            },\n\n            jsTPL: {},\n\n            __containerDataHandlers: {},\n\n            addContainerDataHandler: function (selector, getter, setter) {\n                this.__containerDataHandlers[selector] = {\n                    getter: getter,\n                    setter: setter\n                };\n            },\n\n            __containerDataFilters: [],\n\n            addContainerDataFilter: function (callback) {\n                this.__containerDataFilters.push(callback);\n            },\n\n\n            __modules: [],\n            __modulesLoaded: false,\n            addModule: function (callback) {\n                var self = this;\n\n                if (this.__modulesLoaded) {\n                    callback(this);\n                } else {\n                    this.__modules.push(callback);\n                }\n            },\n\n            popUp: function (title, elementID, data) {\n                var selector = \"#TB_inline?inlineId=\" + elementID;\n                var query = [];\n\n\n                $.each(data || {}, function (key, value) {\n                    query.push(key + \"=\" + value);\n                });\n\n                selector = query.length ? selector + \"&\" : selector + \"\";\n                selector += query.join(\"&\");\n\n                root.tb_show(title, selector);\n\n                root.jQuery('#TB_window').css({\n                    'z-index': '5000001',\n                    'transform': 'opacity .4s',\n                    'opacity': 0\n                });\n\n                root.jQuery('#TB_overlay').css({\n                    'z-index': '5000000'\n                });\n\n\n                setTimeout(function () {\n                    root.jQuery('#TB_window').css({\n                        'margin-top': -1 * ((root.jQuery('#TB_window').outerHeight() + 50) / 2),\n                        'opacity': 1\n                    });\n                    root.jQuery('#TB_window').find('#cp-item-ok').focus();\n                }, 0);\n\n                if (data && data.class) {\n                    root.jQuery('#TB_window').addClass(data.class);\n                }\n\n                return root.jQuery('#TB_window');\n            },\n\n\n            popUpInfo: function (title, content, data) {\n                var id = _.uniqueId('temp-popup-text');\n\n                var tempContainer = $('<div id=\"' + id + '\" />').hide();\n                tempContainer.appendTo($('body'));\n                tempContainer.append('<div>' + content + '</div>');\n\n                return this.popUp(title, id, data);\n\n            },\n\n            popupPrompt: function (title, text, value, callback, extraHTML) {\n\n                if (extraHTML) {\n                    extraHTML = '<div class=\"prompt-extra\">' + extraHTML + '</div>';\n                } else {\n                    extraHTML = '';\n                }\n\n                var content = '' +\n                    '<div class=\"prompt-wrapper\">' +\n                    '   <h4 class=\"prompt-title\">' + text + '</h4>' +\n                    '   <div class=\"prompt-content\">' +\n                    '      <input value=\"' + CP_Customizer.utils.htmlEscape(value) + '\" type=\"text\">' +\n                    '   </div>' +\n                    '   ' + extraHTML +\n                    '   <div class=\"prompt-footer\">' +\n                    '      <button class=\"submit button button-primary\"> ' + root.CP_Customizer.translateCompanionString(\"OK\") + '</button>' +\n                    '      <button class=\"cancel button button-secondary\">' + root.CP_Customizer.translateCompanionString(\"Cancel\") + '</button>' +\n                    '   </div>' +\n                    '</div>';\n\n                var data = {\n                    width: \"400\",\n                    class: \"popup-400\"\n                };\n\n                var $content = this.popUpInfo(title, content, data);\n\n                function onClose(canceled) {\n                    var newValue = $content.find('input').val().trim();\n\n                    if (canceled) {\n                        newValue = null;\n                    }\n\n                    if (_.isFunction(callback)) {\n                        callback(newValue, value)\n                    }\n                    CP_Customizer.closePopUps();\n                }\n\n                $content.on('keypress', 'input', function () {\n                    if (event.which !== 13) {\n                        return true;\n                    }\n                    onClose();\n                });\n\n                $content.on('click', 'button.submit', function () {\n                    onClose();\n                });\n\n\n                $content.on('click', 'button.cancel', function () {\n                    onClose(true);\n                });\n\n            },\n\n            popupSelectPrompt: function (title, text, value, options, callback, emptySelection, extraHTML) {\n                var select = '<select>';\n\n\n                if (emptySelection) {\n                    select += \"<option value='' >\" + emptySelection + \"</option>\";\n                }\n\n                for (var i in options) {\n                    var selectedAttr = (i === value) ? \"selected\" : \"\";\n                    select += \"<option \" + CP_Customizer.utils.htmlEscape(selectedAttr) + \" value='\" + i + \"' >\" + options[i] + \"</option>\";\n                }\n\n                select += '</select>';\n                if (extraHTML) {\n                    extraHTML = '<div class=\"prompt-extra\">' + extraHTML + '</div>';\n                } else {\n                    extraHTML = '';\n                }\n\n                var content = '' +\n                    '<div class=\"prompt-wrapper\">' +\n                    '   <h4 class=\"prompt-title\">' + text + '</h4>' +\n                    '   <div class=\"prompt-content\">' +\n                    '       ' + select +\n                    '   </div>' +\n                    '   ' + extraHTML +\n                    '   <div class=\"prompt-footer\">' +\n                    '      <button class=\"submit button button-primary\"> ' + root.CP_Customizer.translateCompanionString(\"OK\") + '</button>' +\n                    '      <button class=\"cancel button button-secondary\">' + root.CP_Customizer.translateCompanionString(\"Cancel\") + '</button>' +\n                    '   </div>' +\n                    '</div>';\n\n                var data = {\n                    width: \"400\",\n                    class: \"popup-400\"\n                };\n\n                var $content = this.popUpInfo(title, content, data);\n\n                function onClose(canceled) {\n                    var newValue = $content.find('select').val();\n\n                    if (canceled) {\n                        newValue = null;\n                    }\n\n                    if (_.isFunction(callback)) {\n                        callback(newValue, value)\n                    }\n                    CP_Customizer.closePopUps();\n                }\n\n                $content.on('click', 'button.submit', function () {\n                    onClose();\n                });\n\n\n                $content.on('click', 'button.cancel', function () {\n                    onClose(true);\n                });\n\n                return $content;\n\n            },\n\n            closePopUps: function () {\n                root.tb_remove();\n                root.jQuery('#TB_overlay').css({\n                    'z-index': '-1'\n                });\n            },\n\n            openMultiImageManager: function (title, callback, single) {\n                var node = false;\n                var interestWindow = root;\n                custom_uploader = interestWindow.wp.media.frames.file_frame = interestWindow.wp.media({\n                    title: title,\n                    button: {\n                        text: root.CP_Customizer.translateCompanionString('Choose Images')\n                    },\n                    multiple: !single\n                });\n                //When a file is selected, grab the URL and set it as the text field's value\n                custom_uploader.on('select', function () {\n                    var attachment = custom_uploader.state().get('selection').toJSON();\n                    callback(attachment);\n                });\n                custom_uploader.off('close.cp').on('close.cp', function () {\n                    callback(false);\n                });\n                //Open the uploader dialog\n                custom_uploader.open();\n\n                custom_uploader.content.mode('browse');\n                // Show Dialog over layouts frame\n                interestWindow.jQuery(interestWindow.wp.media.frame.views.selector).parent().css({\n                    'z-index': '16000000'\n                });\n            },\n\n            openImageManager: function (callback, multi) {\n                this.openMultiImageManager('Image Manager', function (obj) {\n                    if ($('iframe').length) {\n                        $('iframe').get(0).focus();\n                    }\n                    if (!obj) {\n                        return;\n                    }\n                    for (var i = 0; i < obj.length; i++) {\n                        var link = obj[i].url;\n                        callback(link);\n                    }\n                }, !multi);\n            },\n\n            openMediaCustomFrame: function (extender, mode, title, single, callback) {\n                var interestWindow = root;\n\n                var frame = extender(interestWindow.wp.media.view.MediaFrame.Select);\n\n                var custom_uploader = new frame({\n                    title: title,\n                    button: {\n                        text: title\n                    },\n                    multiple: !single\n                });\n\n\n                //When a file is selected, grab the URL and set it as the text field's value\n                custom_uploader.on('select', function () {\n                    attachment = custom_uploader.state().get('selection').toJSON();\n                    custom_uploader.content.mode('browse');\n                    callback(attachment);\n                });\n\n\n                custom_uploader.on('close', function () {\n                    custom_uploader.content.mode('browse');\n                    callback(false);\n                });\n\n                //Open the uploader dialog\n                custom_uploader.open();\n                custom_uploader.content.mode(mode);\n                // Show Dialog over layouts frame\n                interestWindow.jQuery(custom_uploader.views.selector).parent().css({\n                    'z-index': '16000000'\n                });\n\n            },\n\n            openMIManager: function (title, callback, single) {\n                var node = false;\n                var interestWindow = root;\n\n                // if (!interestWindow.wp.media.cp.FAFrame) {\n                var frame = interestWindow.wp.media.cp.extendFrameWithMDI(interestWindow.wp.media.view.MediaFrame.Select);\n                var custom_uploader = new frame({\n                    title: title,\n                    button: {\n                        text: root.CP_Customizer.translateCompanionString('Choose Icon')\n                    },\n                    multiple: !single\n                });\n                interestWindow.wp.media.cp.MIFrame = custom_uploader;\n\n                // }\n\n\n                //When a file is selected, grab the URL and set it as the text field's value\n                interestWindow.wp.media.cp.MIFrame.on('select', function () {\n                    attachment = custom_uploader.state().get('selection').toJSON();\n                    interestWindow.wp.media.cp.MIFrame.content.mode('browse');\n                    callback(attachment);\n                });\n                interestWindow.wp.media.cp.MIFrame.on('close', function () {\n                    interestWindow.wp.media.cp.MIFrame.content.mode('browse');\n                    callback(false);\n                });\n\n                //Open the uploader dialog\n                interestWindow.wp.media.cp.MIFrame.open();\n                interestWindow.wp.media.cp.MIFrame.content.mode('cp_material_icons');\n                // Show Dialog over layouts frame\n                interestWindow.jQuery(custom_uploader.views.selector).parent().css({\n                    'z-index': '16000000'\n                });\n\n            },\n\n            openCropableImageManager: function (width, height, flexible, callback) {\n                var control = new root.wp.customize.CroppedImageControl('custom_image_cropper[' + Date.now() + ']',\n                    {params: {}});\n\n                control.params = {\n                    button_labels: {\n                        frame_title: root.CP_Customizer.translateCompanionString(\"Select Image\")\n                    },\n                    height: height,\n                    width: width\n\n                };\n\n                flexible = _.isUndefined(flexible) ? true : flexible;\n\n                if (flexible) {\n                    control.params = _.extend(control.params, {\n                        flex_width: width,\n                        flex_height: height\n                    });\n                }\n\n                control.initFrame();\n                control.frame.setState('library').open();\n                control.frame.content.mode('browse');\n\n                function fixCropKeyPressBug() {\n                    setTimeout(function () {\n                        root.jQuery(top.document).unbind(root.jQuery.imgAreaSelect.keyPress);\n                    }, 100);\n                }\n\n                control.setImageFromAttachment = function (attachment) {\n                    callback([attachment]);\n                    fixCropKeyPressBug();\n                };\n\n                control.frame.on('close', function () {\n                    fixCropKeyPressBug();\n                });\n\n\n                root.jQuery(control.frame.views.selector).parent().css({\n                    'z-index': '16000000'\n                });\n\n                root.jQuery(control.frame.views.selector).find('.instructions').remove();\n\n\n                control.frame.on('content:create:crop', function () {\n                    var c = control;\n                    var state = c.frame.state();\n                    var __createCropToolbar = state.createCropToolbar;\n                    state.createCropToolbar = function () {\n                        state.set('canSkipCrop', true);\n                        __createCropToolbar.apply(state, arguments);\n                    };\n\n                });\n            },\n\n            openGalleryImageManager: function (options, callback) {\n                var interestWindow = root;\n                options = _.extend({\n                    \"shortocode\": false,\n                    \"ids\": [],\n                    \"columns\": \"5\",\n                    \"state\": 'gallery-edit',\n                    \"size\": \"medium\",\n                    \"link\": \"file\"\n                }, options);\n\n\n                if (_.isArray(options.ids)) {\n                    options.ids = options.ids.join(\",\");\n                }\n\n                if (_.isEmpty(options.ids.trim())) {\n                    options.ids = 'fake-' + Date.now();\n                }\n\n                var shortcode = \"[gallery\";\n                $.each(options, function (index, val) {\n                    shortcode += \" \" + index + '=\"' + val + '\"';\n                });\n                shortcode += \"]\";\n\n                var gallery = interestWindow.wp.media.gallery;\n                var frame = gallery.edit(shortcode);\n\n\n                frame.state(options.state).on('update', function (selection) {\n                    var ids = selection.map(function (model) {\n                        return model.id\n                    });\n                    callback(selection, ids);\n                });\n\n\n                // if (options.mediaSidebar === false) {\n                //     frame.$el.find('.media-sidebar').hide();\n                //     frame.$el.find('.media-sidebar').siblings('.media-toolbar ul').css('right', '0px');\n                // } else {\n                //     frame.$el.find('.media-sidebar').siblings('.media-toolbar ul').css('right', '');\n                //     frame.$el.find('.media-sidebar').show();\n                // }\n\n                interestWindow.jQuery(frame.views.selector).parent().css({\n                    'z-index': '16000000'\n                });\n\n                if (options.ids.match(/fake-\\d+/)) {\n                    frame.setState('gallery-library')\n                }\n            },\n\n            openMediaBrowser: function (type, callback, data) {\n                var cb;\n                if (callback instanceof jQuery) {\n                    cb = function (response) {\n\n                        if (!response) {\n                            return;\n                        }\n\n                        var value = response[0].url;\n                        if (data !== \"multiple\") {\n                            if (type == \"icon\") {\n                                value = response[0].mdi;\n                            }\n                            callback.val(value).trigger('change');\n                        }\n                    };\n                } else {\n                    cb = function () {\n                        callback.apply(this, arguments);\n                        CP_Customizer.preview.blur();\n                    }\n                }\n\n                switch (type) {\n                    case \"image\":\n                        // this.openMultiImageManager('Change image', cb, data);\n                        this.openCropableImageManager(data.width || this.MAX_SAFE_INTEGER, data.height || this.MAX_SAFE_INTEGER, true, cb);\n                        break;\n                    case \"cropable\":\n                        this.openCropableImageManager(data.width, data.height, data.flexible, cb);\n                        break;\n                    case \"icon\":\n                        this.openMIManager(root.CP_Customizer.translateCompanionString('Change Material Icon'), cb);\n                        break;\n                    case \"gallery\":\n                        this.openGalleryImageManager(data, cb);\n                        break;\n                }\n            },\n\n            getCustomizerRootEl: function () {\n                return root.jQuery(root.document.body).find('form#customize-controls');\n            },\n\n            openRightSidebar: function (elementId, options) {\n                options = options || {};\n                this.hideRightSidebar();\n                var $form = this.getCustomizerRootEl();\n                var $container = $form.find('#' + elementId + '-popup');\n\n                $('body').addClass('cp-right-section-opened');\n                if ($container.length) {\n                    $container.addClass('active');\n\n                    if (options.floating && !_(options.y).isUndefined()) {\n                        $container.css({\n                            top: options.y\n                        });\n                    }\n                } else {\n                    $container = $('<li id=\"' + elementId + '-popup\" class=\"customizer-right-section active\"> <span data-close-right-sidebar=\"true\" title=\"' + root.CP_Customizer.translateCompanionString(\"Close Panel\") + '\" class=\"close-panel\"></span> </li>');\n\n                    if (options.floating) {\n                        $container.addClass('floating');\n                    }\n\n                    $toAppend = $form.find('li#accordion-section-' + elementId + ' > ul');\n\n                    if ($toAppend.length === 0) {\n                        $toAppend = $form.find('#sub-accordion-section-' + elementId);\n                    }\n\n\n                    if ($toAppend.length === 0) {\n                        $toAppend = $('<div class=\"control-wrapper\" />');\n                        $toAppend.append($form.find('#customize-control-' + elementId).children());\n                    }\n\n                    $form.append($container);\n                    $container.append($toAppend);\n\n                    if (options.floating && !_(options.y).isUndefined()) {\n                        $container.css({\n                            top: options.y\n                        });\n                    }\n\n\n                    $container.find('span.close-panel').click(CP_Customizer.hideRightSidebar);\n\n                }\n\n                if (options.focus) {\n                    $container.find(options.focus)[0].scrollIntoViewIfNeeded();\n                }\n\n                $container.css('left', jQuery('#customize-header-actions')[0].offsetWidth + 1);\n\n                CP_Customizer.hooks.doAction('right_sidebar_opened', elementId, options, $container);\n\n                $form.find('span[data-close-right-sidebar=\"true\"]').click(function (event) {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    CP_Customizer.hideRightSidebar();\n                });\n\n                $form.find('li.accordion-section').unbind('click.right-section').bind('click.right-section', function (event) {\n                    if ($(event.target).is('li') || $(event.target).is('.accordion-section-title')) {\n                        if ($(event.target).closest('.customizer-right-section').length === 0) {\n                            CP_Customizer.hideRightSidebar();\n                        }\n                    }\n                });\n\n            },\n\n            hideRightSidebar: function () {\n                var $form = root.jQuery(root.document.body).find('#customize-controls');\n                var $visibleSection = $form.find('.customizer-right-section.active');\n                if ($visibleSection.length) {\n                    $visibleSection.removeClass('active');\n                    root.CP_Customizer.trigger(root.CP_Customizer.events.RIGHT_SECTION_CLOSED, [$visibleSection]);\n                }\n\n            },\n\n            isRightSidebarVisible: function (sectionID) {\n                var $form = root.jQuery(root.document.body).find('#customize-controls');\n                return $form.find('#' + sectionID + '-popup').hasClass('active');\n            },\n\n            updateState: function (force, forceOverlays) {\n\n                function callback() {\n                    CP_Customizer.trigger('STATE_UPDATED');\n                }\n\n                if (force) {\n                    this._setContent(callback);\n                } else {\n                    this.setContent(callback);\n                }\n\n                this.overlays.hoverOverlay().hide();\n                this.overlays.updateAllOverlays(forceOverlays);\n            },\n\n\n            __changesetUpdate: _.debounce(function (callback) {\n                var changeSet = root.CP_Customizer.wpApi.requestChangesetUpdate.apply(root.CP_Customizer.wpApi);\n                if (_.isFunction(callback)) {\n                    changeSet.then(callback);\n                }\n            }, 10),\n\n            __requestCachedCbs: [],\n            requestChangesetUpdate: function (cb) {\n                if (_.isFunction(cb)) {\n                    this.__requestCachedCbs.push(cb);\n                }\n                var self = this;\n                this.__changesetUpdate(function () {\n                    while (self.__requestCachedCbs.length) {\n                        var cb = self.__requestCachedCbs.shift();\n                        cb.call(self);\n                    }\n                });\n            },\n\n            // if the mod is not set create a dirty one\n            __onSetForcedTransport: {},\n            setMod: function (mod, value, transport, reqCB) {\n\n                mod = CP_Customizer.utils.phpTrim(mod, \"|\");\n\n                var initialMod = mod;\n                var modParts = mod.split('|');\n                mod = modParts.shift();\n\n                var setting = root.wp.customize(mod);\n                value = _.clone(value);\n                if (!setting) {\n                    mod = \"CP_AUTO_SETTING[\" + mod + \"]\";\n                    setting = root.wp.customize(mod);\n                    if (!setting) {\n                        setting = wp.customize.create(mod, mod, {}, {\n                            type: 'theme_mod',\n                            transport: (transport || 'postMessage'),\n                            previewer: wp.customize.previewer\n                        });\n                    }\n                }\n\n                var oldTransport = setting.transport;\n                if (!this.__onSetForcedTransport[setting.id]) {\n                    this.__onSetForcedTransport[setting.id] = oldTransport;\n                }\n\n                if (transport) {\n                    setting.transport = transport;\n                }\n\n                var oldValue = _.clone(setting._value);\n\n                var jsonEncoded = false;\n                try {\n                    var parsed = decodeURI(oldValue);\n                    parsed = JSON.parse(parsed);\n\n                    if (_.isObject(parsed) || _.isArray(parsed)) {\n                        oldValue = parsed;\n                        jsonEncoded = true;\n                    }\n                } catch (e) {\n\n                }\n\n                if (_.isObject(oldValue)) {\n                    setting._value = undefined; // force no value before set( forces the setting to set the value )\n                }\n\n                if (modParts.length) {\n\n                    if (!oldValue || _.isEmpty(oldValue)) {\n                        oldValue = CP_Customizer.preview.data('mod_defaults')[mod];\n                    }\n\n                    var path = modParts.join('.');\n                    value = CP_Customizer.utils.setToPath(oldValue, path, value);\n                }\n\n                var control = wp.customize.control(mod);\n\n\n                if (jsonEncoded) {\n                    value = encodeURI(JSON.stringify(value));\n                }\n\n                if (_.isBoolean(oldValue)) {\n                    try {\n                        value = JSON.parse(value);\n                    } catch (e) {\n\n                    }\n                }\n\n                setting.set(value);\n\n                // update control\n\n                if (control) {\n                    var type = control.params.type;\n                    if (type === \"radio-html\") {\n                        jQuery(control.container.find('input[value=\"' + value + '\"]')).prop('checked', true);\n                    } else {\n                        if (type === \"kirki-spacing\") {\n                            for (var prop in value) {\n                                if (value.hasOwnProperty(prop)) {\n                                    jQuery(control.container.find('.' + prop + ' input')).prop('value', value[prop]);\n                                }\n                            }\n                        } else {\n                            if (type.match('kirki')) {\n                                kirkiSetSettingValue(mod, value);\n                            } else {\n                                if (type == \"gradient-control-pro\") {\n                                    control.setValue(value);\n                                } else {\n                                    if (type == \"repeater\") {\n                                        control.setValue(value);\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n\n                var self = this;\n                var changeSetCB = function () {\n                    if (self.__onSetForcedTransport[setting.id]) {\n                        setting.transport = self.__onSetForcedTransport[setting.id];\n                        self.__onSetForcedTransport[setting.id] = null;\n                    }\n\n                    if (_.isFunction(reqCB)) {\n                        reqCB(initialMod, setting.id);\n                    }\n\n                };\n\n                if (_.isFunction(reqCB)) {\n                    this.requestChangesetUpdate(changeSetCB);\n                } else {\n                    setting.transport = oldTransport;\n                }\n\n            },\n\n            getMod: function (mod, defaultValue) {\n                var setting = root.wp.customize(mod);\n                if (!setting) {\n                    mod = \"CP_AUTO_SETTING[\" + mod + \"]\";\n                    setting = root.wp.customize(mod);\n                }\n\n                if (!setting) {\n                    return defaultValue;\n                }\n\n                return _.clone(setting.get());\n            },\n\n            cleanModValue: function (value) {\n\n                if (_.isString(value)) {\n\n                    // remove extra mdi classes ( e.g. \"mdi mdi mdi\" )\n                    value = value.replace(/(mdi\\s(mdi\\s)+)/ig, 'mdi ');\n\n                    // trim all spaces\n                    value = value.trim();\n                }\n\n                return value;\n            },\n\n            onModChange: function (mod, callback) {\n                var autoMod = \"CP_AUTO_SETTING[\" + mod + \"]\";\n                var modCallback = _.debounce(function (value) {\n                    if (_.isFunction(callback)) {\n                        value.bind(callback);\n                    }\n                }, 100);\n\n\n                CP_Customizer.wpApi(mod, modCallback);\n                CP_Customizer.wpApi(autoMod, modCallback);\n\n            },\n\n            setMultipleMods: function (mods, transport, finishCb) {\n\n                CP_Customizer.log('Set Multiple Mods', mods);\n\n                if (_.isEmpty(mods)) {\n                    if (finishCb) finishCb();\n                    return;\n                }\n\n                $(root).off('blur.wp-customize-changeset-update');\n                var modsIDs = Object.getOwnPropertyNames(mods);\n                var modsDone = [];\n\n                var reqCB = function (mod) {\n                    if (modsDone.indexOf(mod) === -1) {\n                        modsDone.push(mod);\n                    }\n\n                    if (_.difference(modsIDs, modsDone).length === 0) {\n                        if (_.isFunction(finishCb)) {\n                            finishCb();\n                        }\n                    }\n                };\n\n\n                _.each(mods, function (value, mod) {\n                    CP_Customizer.setMod(mod, value, transport, reqCB);\n                });\n            },\n\n            _currentContentValues: {},\n            _setContent: function (callback) {\n                var previewJQuery = CP_Customizer.preview.jQuery();\n\n                if (root.CP_Customizer.preview.data().maintainable) {\n                    var content = root.CP_Customizer.preview.getContent().trim();\n                    var setting = root.wp.customize('page_content');\n                    if (!setting) {\n                        return;\n                    }\n\n                    var value = setting.get();\n                    if (_.isString(value)) {\n                        value = JSON.parse(decodeURIComponent(value));\n                    }\n\n                    if (_.isArray(value) && _.isEmpty(value)) {\n                        value = {};\n                    }\n\n                    if (!value) {\n                        value = {};\n                    }\n\n                    value[root.CP_Customizer.preview.data().pageID] = content;\n\n                    setting.set(encodeURIComponent(JSON.stringify(value)));\n                }\n\n                var modsToSet = {};\n\n                this.preview.find(\"[data-theme-href]\").each(function () {\n                    var prop = jQuery(this).attr('data-theme-href');\n                    var val = jQuery(this).attr('href').trim();\n\n                    modsToSet[prop] = CP_Customizer.preview.cleanURL(val);\n                });\n\n                this.preview.find(\"[data-theme-target]\").each(function () {\n                    var prop = jQuery(this).attr('data-theme-target');\n                    var val = jQuery(this).attr('target') || \"_self\";\n\n                    modsToSet[prop] = val.trim();\n                });\n\n\n                this.preview.find(\"[data-theme-src]\").each(function () {\n                    var prop = jQuery(this).attr('data-theme-src');\n                    var val = jQuery(this).attr('src');\n                    // root.CP_Customizer.setMod(prop, val.trim());\n                    modsToSet[prop] = val.trim();\n                });\n\n                this.preview.find(\"[data-theme-mdi]\").each(function () {\n                    var prop = jQuery(this).attr('data-theme-mdi');\n                    var val = jQuery(this).attr('class').match(/mdi\\-[a-z\\-]+/ig).pop();\n                    // root.CP_Customizer.setMod(prop, val.trim());\n                    modsToSet[prop] = val.trim();\n                });\n\n                if (root.CP_Customizer.options().mods) {\n                    for (var selector in root.CP_Customizer.options().mods) {\n                        var $el = this.preview.find(selector);\n                        var modData = root.CP_Customizer.options().mods[selector];\n                        if (modData.atts) {\n                            for (var attr in modData.atts) {\n                                // $el.attr('data-theme-' + attr, modData.atts[attr]);\n                                var prop = $el.attr('data-theme-' + attr);\n                                var val = root.CP_Customizer.hooks.applyFilters('temp_attr_mod_value', $el.attr(attr) || \"\", attr, $el);\n                                // root.CP_Customizer.setMod(prop, val.trim());\n                                modsToSet[prop] = val.trim();\n                            }\n                        }\n\n\n                    }\n                }\n\n                this.preview.find(\"[data-dynamic-mod='true'],[data-dynamic-mod='true'] *\").each(function () {\n                    var atts = Array.from(this.attributes),\n                        $el = root.CP_Customizer.preview.find(this);\n\n                    for (var i = 0; i < atts.length; i++) {\n                        var attr = atts[i].name,\n                            prop = atts[i].value;\n\n                        if (attr.indexOf('data-theme-') === 0) {\n                            attr = attr.replace('data-theme-', '');\n                            var fallback = \"\";\n\n                            var value = $el.attr(attr);\n\n                            // logica inversa aici false daca exista, true daca nu\n                            if (attr === 'data-reiki-hidden') {\n                                fallback = \"true\";\n\n                                if (value) {\n                                    value = 'false';\n                                }\n\n                            }\n\n                            if (attr.trim() === 'href') {\n                                value = CP_Customizer.preview.cleanURL(value);\n                            }\n\n                            var val = root.CP_Customizer.hooks.applyFilters('temp_attr_mod_value', _.isUndefined(value) ? fallback : value, attr, $el);\n\n                            modsToSet[prop] = CP_Customizer.cleanModValue(val);\n                        }\n\n                    }\n                });\n\n                this.preview.find(\"[data-theme]\").each(function () {\n\n                    var prop = jQuery(this).attr('data-theme');\n\n                    if (!previewJQuery(this).data('was-changed')) {\n                        if (previewJQuery('[data-theme=\"' + prop + '\"]').length > 1) {\n                            return;\n                        }\n                    }\n\n                    // root.CP_Customizer.preview.cleanNode(toSave);\n                    // var toSave = jQuery(this).clone();\n\n                    var toSave = jQuery(this).clone();\n                    var val = root.CP_Customizer.preview.getContent($(this));\n                    // root.CP_Customizer.setMod(prop, val);\n                    modsToSet[prop] = val.trim();\n                    previewJQuery(this).data('was-changed', false);\n                });\n\n                root.CP_Customizer.cleanClose();\n\n                // update only when you find a change\n                var uniqueMods = {};\n                var self = this;\n                _.each(modsToSet, function (value, mod) {\n                    if (self._currentContentValues[mod] !== value) {\n                        uniqueMods[mod] = value;\n                        self._currentContentValues[mod] = value;\n                    }\n                });\n\n                CP_Customizer.setMultipleMods(uniqueMods, 'postMessage', callback);\n\n            },\n\n            setContent: _.debounce(function (callback) {\n                this._setContent(callback);\n            }, 200),\n\n            save: function () {\n\n                CP_Customizer.preview.blur();\n\n                $(root.document).find('body').addClass('saving');\n                $(root.document).find('input#save').prop('disabled', true);\n\n                var self = this;\n                var callback = function () {\n                    wp.customize.previewer.save();\n                };\n                self._setContent(callback);\n\n            },\n\n            cleanClose: function () {\n\n            },\n\n            __saveTimeout: false,\n\n            markSave: _.debounce(function () {\n                var self = this;\n                clearTimeout(self.__saveTimeout);\n\n                self.__saveTimeout = setTimeout(function () {\n                    self.setContent();\n                }, 500);\n            }, 200),\n\n\n            parseShortcode: function (shortcode) {\n                shortcode = shortcode.replace('[', '').replace(']', '');\n\n                var tag = shortcode.split(' ')[0].trim();\n                var shortcodeAttrs = shortcode.match(/(\\s(.*?)=\")(.*?)(\")/ig);\n                var response = {\n                    tag: tag,\n                    attrs: {}\n                };\n                if (!shortcodeAttrs) {\n                    return response;\n                }\n                for (var i = 0; i < shortcodeAttrs.length; i++) {\n                    var attr = shortcodeAttrs[i].trim();\n                    response.attrs[attr.split('=')[0]] = attr.split('=\"')[1].slice(0, -1)\n                }\n                return response;\n\n            },\n\n            isShortcodeContent: function ($node) {\n                return root.jQuery($node).closest('[data-content-shortcode]').length > 0;\n            },\n\n            isShortcodeEditable: function ($node) {\n                var isEditableByTag = root.jQuery($node).closest('[data-content-shortcode][data-editable=\"true\"]').length > 0;\n                var tag = CP_Customizer.getNodeShortcode(root.jQuery($node).closest('[data-content-shortcode]'));\n\n                return CP_Customizer.hooks.applyFilters('is_shortcode_editable', isEditableByTag, tag);\n            },\n\n            isOnCanvasMod: function (node) {\n                node = $(node)[0];\n                var hasThemeModAtt = Array.from(node.attributes).map(function (a) {\n\n                    return (a.name.toLowerCase().indexOf('data-theme') !== -1);\n\n                }).reduce(function (a, b) {\n                    return a || b;\n                });\n\n                return hasThemeModAtt;\n            },\n\n            nodeWrapsShortcode: function ($node, tag) {\n                var shortcode = this.getNodeShortcode($node);\n\n                if (shortcode) {\n                    return (shortcode.tag === tag.trim());\n                }\n\n                return false;\n            },\n\n            getNodeShortcode: function ($node) {\n                if (!$node.attr('data-content-shortcode')) {\n                    return undefined;\n                }\n\n                return this.parseShortcode($node.attr('data-content-shortcode'));\n            },\n\n            nodeContainsShortcode: function ($node, tag) {\n                var $containers = $node.find('[data-content-shortcode]');\n\n                for (var i = 0; i < $containers.length; i++) {\n                    if (CP_Customizer.nodeWrapsShortcode($containers.eq(i), tag)) {\n                        return true;\n                    }\n                }\n\n                return false;\n            },\n\n            renderNodeShortcodes: function ($node) {\n                $node = $($node); // make sure the node is wrapped with jqury\n                var $nodes = $node.find('[data-content-shortcode]');\n                if ($node.is('[data-content-shortcode]')) {\n                    $nodes = $nodes.add($node);\n                }\n                var self = this;\n                $nodes.each(function () {\n                    self.updateNodeShortcode($(this), \"[\" + $(this).attr('data-content-shortcode') + \"]\");\n                })\n            },\n            updateNodeShortcode: function ($node, shortcode, noRerender, context) {\n                if (!$node.attr('data-content-shortcode')) {\n                    return undefined;\n                }\n\n                var attrShortcode = CP_Customizer.utils.phpTrim(shortcode, '[]');\n                $node.attr('data-content-shortcode', attrShortcode);\n\n                if (noRerender !== true) {\n                    if (!context) {\n                        context = {\n                            query: CP_Customizer.preview.data().queryVars\n                        }\n                    }\n\n                    (function ($node) {\n                        CP_Customizer.preview.pauseObserver();\n                        CP_Customizer.preview.blur();\n\n                        var currentChangeset = CP_Customizer.utils.deepClone(wp.customize.previewer.query());\n\n                        var data = _.extend(currentChangeset, {\n                            action: 'cp_shortcode_refresh',\n                            shortcode: btoa(shortcode),\n                            context: context,\n                            _: Date.now()\n                        });\n\n                        $node.html('<div class=\"shortcode-temp-placeholder\"></div>');\n                        jQuery.ajax({\n                            url: ajaxurl,\n                            method: 'POST',\n                            data: data\n                        }).done(function (response) {\n                            $node.empty();\n                            $node.html(response);\n\n                            CP_Customizer.hideLoader();\n                            CP_Customizer.preview.decorateMods($node);\n                            CP_Customizer.preview.decorateElements($node);\n\n                            _.delay(function () {\n                                root.CP_Customizer.hooks.doAction(\"shortcode_updated\", $node, shortcode);\n                                root.CP_Customizer.updateState();\n                            }, 0);\n                        });\n                        CP_Customizer.preview.restartObserver();\n                    })($node);\n                }\n\n                CP_Customizer.updateState();\n                return true;\n            },\n\n            updateNodeFromShortcodeObject: function ($node, shortcodeObj, noRerender, context) {\n                var shortcode = '[' + shortcodeObj.tag + ' ';\n\n                for (var a in shortcodeObj.attrs) {\n                    shortcode += a + '=\"' + shortcodeObj.attrs[a] + '\" ';\n                }\n\n                shortcode += ']';\n\n                return this.updateNodeShortcode($node, shortcode, noRerender, context);\n            },\n\n            preview: {\n                frame: function () {\n                    var frame = wp.customize.previewer.targetWindow.get();\n\n                    if (!frame) {\n                        frame = wp.customize.previewer.container.find('iframe')[0];\n\n                        if (frame) {\n                            frame = frame.contentWindow;\n                        } else {\n                            frame = null;\n                        }\n                    }\n\n                    return frame;\n                },\n\n                currentDevice: function () {\n                    return jQuery('.active[data-device]').data('device');\n                },\n\n\n                __observerFunctionsToPause: [\"prepareFormPreview\", \"prepareLinkPreview\"],\n                __observerOriginalFunctions: {},\n\n                pauseObserver: function () {\n                    var previewApi = CP_Customizer.preview.frame().wp.customize;\n\n                    this.__observerOriginalFunctions = {};\n                    var self = CP_Customizer.preview;\n                    _.each(self.__observerFunctionsToPause, function (fn) {\n                        if (_.isFunction(previewApi[fn])) {\n                            self.__observerOriginalFunctions[fn] = previewApi[fn];\n                            previewApi[fn] = function () {\n                            };\n                        }\n                    });\n                },\n\n                restartObserver: _.debounce(function () {\n                    var previewApi = CP_Customizer.preview.frame().wp.customize;\n\n                    var self = CP_Customizer.preview;\n                    _.each(self.__observerFunctionsToPause, function (fn) {\n                        if (_.isFunction(previewApi[fn]) && _.isFunction(self.__observerOriginalFunctions[fn])) {\n                            previewApi[fn] = self.__observerOriginalFunctions[fn];\n                        }\n                    });\n                }, 100),\n\n\n                addSilentExecution: function (callback) {\n                    return _.compose(this.pauseObserver, callback, this.restartObserver);\n                },\n\n                silentCall: function (callback) {\n                    var args = arguments.length > 1 ? arguments[1] : undefined;\n                    var context = arguments.length > 2 ? arguments[2] : this;\n\n                    callback = this.addSilentExecution(callback);\n\n                    return callback.apply(context, arguments);\n                },\n\n\n                refresh: _.throttle(function () {\n                    CP_Customizer.wpApi.previewer.refresh();\n                }, 100),\n\n                data: function (key, defaultValue) {\n\n                    if (!this.frame()) {\n                        return {};\n                    }\n\n                    var result = this.frame().cpCustomizerPreview || {};\n\n                    if (key) {\n                        var keyParts = key.split(':');\n                        for (var i = 0; i < keyParts.length; i++) {\n                            var part = keyParts[i];\n\n                            if (!_.isUndefined(result[part])) {\n                                result = result[part];\n                            } else {\n                                result = defaultValue;\n                                break;\n                            }\n                        }\n                    }\n\n                    return result;\n                },\n\n                getChangesetURL: function () {\n                    var changeset = wp.customize.settings.changeset.uuid ? \"?changeset_uuid=\" + wp.customize.settings.changeset.uuid : \"\";\n\n                    if (changeset) {\n                        changeset += \"&cp__changeset__preview=\" + Date.now();\n                    }\n\n                    return window.location.origin + window.location.pathname + changeset;\n                },\n\n                isPageMaintainable: function () {\n                    return this.data.maintainable;\n                },\n\n                // http://stackoverflow.com/questions/7451468/contenteditable-div-how-can-i-determine-if-the-cursor-is-at-the-start-or-end-o/7478420#7478420\n                getSelectionTextInfo: function (el) {\n                    var atStart = false, atEnd = false;\n                    var window = this.frame();\n                    var document = this.frame().document;\n                    var selRange, testRange;\n                    if (window.getSelection) {\n                        var sel = window.getSelection();\n                        if (sel.rangeCount) {\n                            selRange = sel.getRangeAt(0);\n                            testRange = selRange.cloneRange();\n\n                            testRange.selectNodeContents(el);\n                            testRange.setEnd(selRange.startContainer, selRange.startOffset);\n                            atStart = (testRange.toString() == \"\");\n\n                            testRange.selectNodeContents(el);\n                            testRange.setStart(selRange.endContainer, selRange.endOffset);\n                            atEnd = (testRange.toString() == \"\");\n                        }\n                    } else if (document.selection && document.selection.type != \"Control\") {\n                        selRange = document.selection.createRange();\n                        testRange = selRange.duplicate();\n\n                        testRange.moveToElementText(el);\n                        testRange.setEndPoint(\"EndToStart\", selRange);\n                        atStart = (testRange.text == \"\");\n\n                        testRange.moveToElementText(el);\n                        testRange.setEndPoint(\"StartToEnd\", selRange);\n                        atEnd = (testRange.text == \"\");\n                    }\n\n                    return {atStart: atStart, atEnd: atEnd};\n                },\n\n                isCustomFrontPage: function () {\n                    return this.data.isFrontPage;\n                },\n\n                jQuery: function (data) {\n                    if (data) {\n                        return this.frame().jQuery(data);\n                    }\n                    return this.frame().jQuery;\n                },\n\n                getPageContainerSelector: function () {\n\n                    if (!root.CP_Customizer.preview.data().maintainable) {\n                        '';\n                    }\n\n                    var startSelector = \"#cp_customizer_content_area_start\";\n\n                    var attrName = 'data-cp-content-container-' + top.CP_Customizer.slugPrefix();\n                    var $parent = this.jQuery(startSelector).parent();\n                    if (!$parent.attr(attrName)) {\n                        $parent.attr(attrName, _.uniqueId(\"page-content-container-\"));\n                    }\n\n                    selector = \"[\" + attrName + \"='\" + $parent.attr(attrName) + \"']\";\n\n                    selector = CP_Customizer.hooks.applyFilters('page_content_container_selector', selector);\n\n                    return selector;\n                },\n\n                getRootNode: function () {\n                    if (!wp.customize('page_content')) {\n                        return this.jQuery(\"<div/>\");\n                    }\n\n                    return this.find(this.getPageContainerSelector());\n                },\n\n                find: function (query) {\n                    var $ = this.jQuery();\n                    return $(query);\n                },\n\n                getSectionByDataId: function (id) {\n                    return this.find('[data-id=\"' + id + '\"]');\n                },\n\n                getNodeSection: function (node) {\n                    var $node = CP_Customizer.preview.jQuery(node);\n                    if ($node.is('[data-id]')) {\n                        return $node;\n                    } else {\n                        return $node.closest('[data-id]');\n                    }\n                },\n\n                getNodeAbsSelector: function (node, relativeSelector) {\n                    var section = this.getNodeSection(node),\n                        sectionId = \"[data-id='\" + section.attr('data-id') + \"']\",\n                        absSelector = sectionId + ' ' + relativeSelector;\n\n                    return absSelector.replace(/\\s\\s?/, ' ').trim();\n                },\n\n                getNodeSectionId: function (node) {\n                    var section = this.getNodeSection(node);\n                    return section.attr('data-id');\n                },\n\n                getNodeExportId: function (node) {\n                    var section = this.getNodeSection(node);\n                    return section.attr('data-export-id');\n                },\n\n                getThemeMods: function ($container) {\n                    if (!$container || $container.is(this.getRootNode())) {\n                        $container = this.jQuery('body');\n                    }\n\n                    var themeModNodesSelector = root.CP_Customizer.hooks.applyFilters('theme_mod_nodes_selector', root.CP_Customizer.THEME_MOD_NODES);\n\n                    if (root.CP_Customizer.options().mods) {\n                        for (var m in root.CP_Customizer.options().mods) {\n                            themeModNodesSelector += ',' + m;\n                        }\n                    }\n\n                    $themeModNodes = $container.find(themeModNodesSelector);\n\n                    if ($container.is(themeModNodesSelector)) {\n                        $themeModNodes.add($container);\n                    }\n\n                    return $themeModNodes;\n                },\n\n                getContentNodes: function (filter) {\n                //replaced children() with contents() to also get html comments for gutenberg blocks\n                var nodes = this.getRootNode().contents().toArray();\n                    nodes.html = function () {\n                        return this.map(function (node) {\n                        if (node.nodeType == Node.COMMENT_NODE) {\n                            return \"<!--\" + node.textContent + \"-->\";\n                        } else {\n                            return node.outerHTML;\n                        }\n                        }).join('');\n                    };\n\n                    return nodes;\n                },\n\n                getContent: function ($node) {\n\n                    $node = $node || this.getContentNodes();\n                    var nodesHML = $node.html().//remove all gutenberg block comments they will be added back by decorate\n                    replace(/<!-- \\/?wp:extendstudio\\/materialis -->/gi, '').\n                    replace(/[\\w-]+=\"gutenberg-section-\\d+\"/gi, '').\n                    replace(/[\\w-]+=\"Gutenberg\"/gi, '');\n                                        \n                    var $currentNodes = $('<div/>').append(nodesHML);\n\n                    $currentNodes.find('.reiki-customizer-ordering-overlay').remove();\n\n                    // cleanup inline styling, leaving only background properties and typography\n                    $currentNodes[0].querySelectorAll('[style]').forEach(function (el) {\n                        var style = el.getAttribute('style'),\n                            whitelistedProps = root.CP_Customizer.options('cssAllowedProperties'),\n                            inlineCss = {},\n                            styleProps = style.split(';');\n\n                        for (var i = 0; i < styleProps.length; i++) {\n                            var propParts = styleProps[i].split(':'),\n                                prop = (propParts.shift() || \"\").trim(),\n                                value = (propParts || []).join(':').trim();\n\n                            if (prop && value) {\n                                inlineCss[prop] = value;\n                            }\n\n                        }\n\n                        var inlineCssText = \"\";\n\n                        for (var prop in inlineCss) {\n                            inlineCssText += prop + ': ' + inlineCss[prop] + '; ';\n                        }\n\n                        if (inlineCssText.trim()) {\n                            el.setAttribute('style', inlineCssText.trim());\n                        } else {\n                            el.removeAttribute('style');\n                        }\n\n                        el.removeAttribute('data-mce-style');\n\n                    });\n\n\n                    $currentNodes[0].querySelectorAll('[data-content-shortcode]').forEach(function (el) {\n                        el.innerHTML = '[' + CP_Customizer.utils.phpTrim(el.getAttribute('data-content-shortcode')) + ']';\n                    });\n\n\n                    $currentNodes[0].querySelectorAll('[data-attr-shortcode]').forEach(function (el) {\n                        var attr = el.getAttribute('data-attr-shortcode');\n                        var parts = attr.split(',');\n\n                        for (var i = 0; i < parts.length; i++) {\n                            var part = parts[i].trim();\n                            part = part.split(':');\n                            el.setAttribute(part[0].trim(), '[' + part[1].trim() + ']');\n                        }\n                    });\n\n\n                    this.cleanNode($currentNodes);\n\n                    CP_Customizer.hooks.doAction('clean_nodes', $currentNodes);\n\n                    $currentNodes[0].querySelectorAll('*').forEach(function (el) {\n                        var attributes = el.attributes;\n                        for (var i = 0; i < attributes.length; i++) {\n                            var attrName = attributes.item(i).name;\n                            if (attrName.match(/scrollreveal/)) {\n                                el.removeAttribute(attrName);\n                            }\n                        }\n                    });\n\n                    $currentNodes.find('*').not('[data-cpid]').remove();\n\n                    // $currentNodes.find('*').not('[data-cpid]').each(function () {\n                    //     var $el = $(this);\n\n                    //     if ($el.attr('data-cp-remove-this')) {\n                    //         $el.remove();\n                    //     }\n\n                    //     if (this.previousSibling && this.previousSibling.nodeType === 8) {\n                    //         var commentText = this.previousSibling.textContent,\n                    //             shortcode = \"\",\n                    //             startComment = \"\";\n\n                    //         this.previousSibling.parentNode.removeChild(this.previousSibling);\n                    //         if (commentText.match(/cp-shortcode:(.*?):(.*)/)) {\n                    //             shortcode = commentText.match(/cp-shortcode:(.*?):(.*)/).pop();\n                    //             startComment = commentText;\n                    //         }\n\n                    //         var nextSibling = this.nextSibling;\n\n                    //         while (nextSibling) {\n                    //             if (nextSibling.nodeType === 8) {\n                    //                 var commentText = nextSibling.textContent;\n\n                    //                 if (commentText.trim() === startComment.trim()) {\n                    //                     nextSibling.parentNode.removeChild(nextSibling);\n                    //                     break;\n                    //                 }\n                    //             }\n\n                    //             $(nextSibling).attr('data-cp-remove-this', '1');\n                    //             nextSibling = nextSibling.nextSibling;\n                    //         }\n\n                    //         this.outerHTML = shortcode;\n                    //     } else {\n                    //         $el.remove();\n                    //     }\n                    // });\n\n                    $currentNodes.find('br').each(function () {\n                        if (!this.nextSibling) {\n                            $(this).remove();\n                        }\n                    });\n\n                    CP_Customizer.hooks.applyFilters('get_content', $currentNodes);\n                \n\t                //gutenberg\n                    this.decorateSectionsForGutenberg($currentNodes.find('[data-id][data-export-id]'));\n                    return $currentNodes.html().replace(/data-cpid=\"[^\"]+\"/gi, '');                    ;\n                },\n\n                __cleanNode: function (el) {\n                    el.removeAttribute('data-content-editable');\n                    el.removeAttribute('data-content-code-editable');\n                    el.removeAttribute('data-container-editable');\n\t                el.removeAttribute('data-non-editable');\n                    el.removeAttribute('contenteditable');\n                    el.removeAttribute('spellcheck');\n\n                    el.classList.remove('ui-sortable');\n                    el.classList.remove('ui-sortable-disabled');\n                    el.classList.remove('ui-sortable-handle');\n                    el.classList.remove('customize-unpreviewable');\n\n                    var elClass = el.getAttribute('class');\n                    if (elClass) {\n                        // remove the tinymce (mce-*) classes;\n                        elClass = elClass.replace(/mce\\-[a-z\\-]+/ig, \"\").trim();\n\n                        // remove multiple spaces in class names\n                        elClass = elClass.replace(/\\s\\s+/g, ' ');\n\n                        el.setAttribute('class', elClass);\n                    }\n\n                    if (el.id && el.id.indexOf('mce_') === 0) {\n                        el.removeAttribute('id');\n                    }\n\n                    // preview styles\n                    el.removeAttribute('data-preview-empty');\n\n                    // clean node url\n\n                    if (el.getAttribute('href')) {\n                        var href = CP_Customizer.preview.cleanURL(el.getAttribute('href'));\n                        el.setAttribute('href', href)\n                    }\n                },\n\n\n                getNodeClasses: function (node) {\n                    var $clone = $(node).clone();\n                    this.__cleanNode($clone[0]);\n                    return Array.from($clone[0].classList);\n                },\n\n                cleanNode: function ($node) {\n\n                $node[0].querySelectorAll('[data-content-editable], [data-content-code-editable], [data-container-editable], [data-non-editable]').forEach(function (el) {\n                        root.CP_Customizer.preview.__cleanNode(el);\n                    });\n\n                    $node[0].querySelectorAll('.ui-sortable,.ui-sortable-disabled,.ui-sortable-handle').forEach(function (el) {\n                        root.CP_Customizer.preview.__cleanNode(el);\n                    });\n\n                    root.CP_Customizer.preview.__cleanNode($node[0]);\n\n                    return $node;\n                },\n\n                cleanURL: function (url) {\n\n                    var startsWithDoubleSlash = (url.indexOf('//') === 0);\n                    var startsWithSlash = (url.indexOf('/') === 0);\n\n                    var queryKeys = Object.getOwnPropertyNames(CP_Customizer.wpApi.previewer.query());\n                    queryKeys = _.unique(queryKeys.concat([\n                        'customize_theme',\n                        'customize_changeset_uuid',\n                        'customize_messenger_channel',\n                        'customize_autosaved'\n                    ]));\n\n                    url = CP_Customizer.utils.removeUrlQueryStrings(url, queryKeys);\n\n                    // clean url\n                    url = CP_Customizer.utils.phpTrim(url, '/').trim() || \"#\";\n\n                    // add // or / depending on how url received\n                    if (startsWithDoubleSlash) {\n                        url = '//' + url;\n                    } else {\n                        if (startsWithSlash) {\n                            url = '/' + url;\n                        }\n                    }\n\n                    return url;\n                },\n\n                fixWronglyWrappedTextNodes: function ($node) {\n                    $($node).find('div').each(function () {\n                        var hasOnlyTextInside = Array.from(this).map(function (item) {\n                            return ([8, 3].indexOf(item.nodeType) !== -1)\n                        }).reduce(function (a, b) {\n                            return a && b\n                        }, true);\n\n                        if (hasOnlyTextInside) {\n                            if (this.innerHTML.trim().length) {\n                                this.outerHTML = this.innerHTML + '<br/>';\n                            } else {\n                                $(this).remove();\n                            }\n                        }\n                    });\n                },\n\n                markNode: function ($node, prefix) {\n\n                    CP_Customizer.preview.pauseObserver();\n                    prefix = prefix || 'new_cp_node_';\n\n                    $($node).find(\"*\").addBack().each(function () {\n                        $(this).attr('data-cpid', _.uniqueId(prefix));\n                    });\n\n                    CP_Customizer.preview.restartObserver();\n                },\n\n                insertNode: function ($node, $parent, index) {\n\n                    CP_Customizer.preview.silentCall(function () {\n                        index = (index !== undefined) ? index : $parent.children().length;\n                        jQuery($node).insertAt(index, $parent);\n\n                        this.decorateElements($node);\n                        this.markNode($node);\n\n                        root.CP_Customizer.updateState();\n\n                        $parent.removeAttr('data-preview-empty');\n\n                        CP_Customizer.hooks.doAction('after_node_insert', $node);\n                    });\n                },\n\n                replaceNode: function ($node, $newNode) {\n\n                    CP_Customizer.preview.silentCall(function () {\n                        jQuery($node).replaceWith($newNode);\n\n                        this.decorateElements($newNode);\n                        this.markNode($newNode);\n\n                        root.CP_Customizer.updateState();\n\n                    });\n                },\n\n                hideNode: function ($node) {\n                    $node.attr('data-reiki-hidden', 'true');\n\n                    var $parent = $node.parent();\n                    if ($parent.children(':visible').length === 0) {\n                        $parent.attr('data-preview-empty', 1);\n                    } else {\n                        $parent.removeAttr('data-preview-empty');\n                    }\n                },\n\n                showNode: function ($node) {\n                    $node.removeAttr('data-reiki-hidden');\n\n                    var $parent = $node.parent();\n                    if ($parent.children(':visible').length === 0) {\n                        $parent.attr('data-preview-empty', 1);\n                    } else {\n                        $parent.removeAttr('data-preview-empty');\n                    }\n                },\n\n                isNodeVisible: function ($node) {\n                    return !($node.is('[data-reiki-hidden]'));\n                },\n\n                removeNode: function ($node, skipUpdate) {\n                    CP_Customizer.preview.pauseObserver();\n                    var $parent = $node.parent();\n                    $node.remove();\n\n                    if (!skipUpdate) {\n                        root.CP_Customizer.updateState();\n                    }\n\n                    if ($parent.children().length === 0) {\n                        $parent.attr('data-preview-empty', 1);\n                    } else {\n                        $parent.removeAttr('data-preview-empty');\n                    }\n\n                    _.delay(function () {\n                        root.CP_Customizer.overlays.hideMovableOverlays();\n                        var addOverlay = root.CP_Customizer.overlays.addOverlay();\n                        root.CP_Customizer.overlays.updateOverlay(addOverlay, addOverlay.data().node, false, true);\n                    }, 10);\n\n                    CP_Customizer.preview.restartObserver();\n                },\n\n\n                insertContentSection: function (newRow, index) {\n                    index = _.isNumber(index) ? index : undefined;\n\n                    if (_.isUndefined(index) && this.getRootNode().children('[data-id][data-label]').length) {\n                        index = this.getRootNode().children('[data-id][data-label]').last().index() + 1;\n                    }\n\n                    this.insertNode(newRow, this.getRootNode(), index);\n                \t//this.decorateSectionsForGutenberg(newRow);\n                    this.decorateElements(newRow);\n\n\n                    function colorize(row) {\n                        var hasColor = (tinycolor(row.css('background-color')).getAlpha() !== 0);\n\n                        if (!hasColor && !row.is('[data-bg=\"transparent\"]')) {\n                            var prevSection = row.prev('[data-id][data-label]');\n\n                            if (!prevSection.length) {\n                                row.css('background-color', '#ffffff');\n                                return;\n                            }\n\n                            var isPrevTransparent = (tinycolor(prevSection.css('background-color')).getAlpha() === 0);\n                            var isPrevWhite = (tinycolor(prevSection.css('background-color')).toHex().toUpperCase() === \"FFFFFF\" || tinycolor(prevSection.css('background-color')).toHex().toUpperCase() === \"FFF\");\n\n                            if (isPrevTransparent || isPrevWhite) {\n                                row.css('background-color', '#F5FAFD');\n                            } else {\n                                row.css('background-color', '#ffffff');\n                            }\n                        }\n                    }\n\n                    colorize(newRow);\n\n\n                    CP_Customizer.renderNodeShortcodes(newRow);\n                    // CP_Customizer.hooks.doAction('after_node_insert', newRow);\n                    this.jQuery('html, body').animate({\n                        'scrollTop': newRow.offset().top\n                    });\n\n                    var exports = CP_Customizer.getSectionExports(newRow.attr('data-export-id'));\n                    if (exports.afterInsert && _.isFunction(exports.afterInsert)) {\n                        CP_Customizer.one(CP_Customizer.events.STATE_UPDATED, function () {\n                            exports.afterInsert(newRow);\n                        });\n                    }\n\n                    CP_Customizer.updateState();\n\n                },\n\n                editContainerData: function () {\n                    var item = $(this),\n                        fields = [],\n                        elements = item.find('[data-content-code-editable],[data-theme-href],[data-theme],[data-theme-mdi]');\n\n\n                    item.blur();\n\n                    if (CP_Customizer.hooks.applyFilters('custom_container_data_handle', false, item)) {\n                        CP_Customizer.hooks.doAction('custom_container_data_handle', item);\n                        CP_Customizer.preview.blur();\n                        return;\n                    }\n\n                    if (!elements.length) {\n                        elements = item.filter('.mdi');\n                    }\n\n                    CP_Customizer.overlays.updateOverlay(CP_Customizer.overlays.hoverOverlay(), item);\n\n                    if (item.is('[data-content-code-editable]') || item.is('[data-bg=\"image\"]')) {\n                        elements = elements.add(item);\n                    }\n\n                    elements = elements.filter(function (index, elem) {\n                        var result = true;\n                        elem = $(elem);\n\n                        for (var i = 0; i < CP_Customizer.__containerDataFilters.length; i++) {\n                            var filter = CP_Customizer.__containerDataFilters[i];\n                            if (false === filter.call(elem, elem)) {\n                                result = false;\n                                break;\n                            }\n                        }\n                        return result;\n\n                    });\n\n                    elements.each(function (index, elem) {\n                        var result = false,\n                            setter = false,\n                            $elem = $(this);\n\n                        for (var selector in CP_Customizer.__containerDataHandlers) {\n                            if ($elem.is(selector)) {\n                                result = CP_Customizer.__containerDataHandlers[selector].getter.call($elem, $elem);\n                                setter = CP_Customizer.__containerDataHandlers[selector].setter;\n                                break;\n                            }\n                        }\n\n                        result = root.CP_Customizer.hooks.applyFilters('container_data_element', result, $elem);\n                        if (result !== false) {\n                            if (!_.isArray(result)) {\n                                result = [result];\n                            }\n\n                            for (var i = 0; i < result.length; i++) {\n                                result[i].id = 'item_no_' + index + '_' + i;\n                                result[i].setter = setter;\n                                result[i].node = $elem;\n                            }\n\n                            fields = fields.concat(result);\n                        }\n\n                    });\n\n                    var content = '';\n                    for (var i = 0; i < fields.length; i++) {\n                        var field = fields[i],\n                            type = field.type || 'text';\n\n                        var $fieldContent = $(CP_Customizer.jsTPL[type] ? CP_Customizer.jsTPL[type](field) : '');\n\n                        if (field.classes) {\n                            $fieldContent.addClass(field.classes);\n                        }\n\n                        if (field.ready && _.isFunction(field.ready)) {\n                            field.ready($fieldContent);\n                        }\n\n                        $fieldContent.addClass(type);\n\n                        content += $('<div />').append($fieldContent).html();\n                    }\n\n                    var popupContainer = $('#cp-container-editor');\n\n\n                    function setContent() {\n                        for (var i = 0; i < fields.length; i++) {\n                            var field = fields[i],\n                                value = {},\n                                node = field.node\n                            if (field.getValue) {\n                                value = field.getValue($('[id=\"' + field.id + '\"]'));\n                            } else {\n                                var _values = $('[id^=\"' + field.id + '\"]').filter('input,textarea,select').map(function (index, elem) {\n                                    return {\n                                        key: $(this).attr('id').replace(field.id + \"__\", ''),\n                                        value: $(this).is('[type=checkbox]') ? this.checked : $(this).val()\n                                    };\n                                }).toArray();\n\n                                _(_values).each(function (v) {\n                                    value[v.key] = v.value;\n                                });\n\n                                if (_values.length === 1 && value.hasOwnProperty(field.id)) {\n                                    value = value[field.id];\n                                }\n                            }\n\n                            if (field.setter) {\n                                field.setter.call(node, node, value, field.type, field);\n                                root.CP_Customizer.hooks.doAction('container_data_element_setter', node, value, field);\n                            }\n                        }\n\n                        if (node.is('[data-theme]')) {\n                            CP_Customizer.preview.jQuery(node).data('was-changed', true);\n                        }\n\n\n                        if (node.closest('[data-theme]').length) {\n                            CP_Customizer.preview.jQuery(node.closest('[data-theme]')).data('was-changed', true);\n                        }\n\n\n                        CP_Customizer.closePopUps();\n                        CP_Customizer.updateState();\n                    }\n\n\n                    setContent = CP_Customizer.preview.addSilentExecution(setContent);\n\n                    popupContainer.find('[id=\"cp-item-ok\"]').off().click(setContent);\n\n                    popupContainer.find('[id=\"cp-item-cancel\"]').off().click(function () {\n                        CP_Customizer.closePopUps();\n                    });\n\n                    popupContainer.find('#cp-items').html(content);\n\n                    CP_Customizer.popUp(root.CP_Customizer.translateCompanionString('Manage Content'), \"cp-container-editor\", {\n                        class: \"data-edit-popup\"\n                    });\n\n                    CP_Customizer.preview.blur(true);\n\n                },\n\n                __dataContainers: ['[data-container-editable]', '[data-type=group]'],\n\n                addDataContainerSelector: function (selector) {\n                    this.__dataContainers.push(selector);\n                },\n\n                registerContainerDataHandler: function (selector, handler) {\n                    CP_Customizer.preview.addDataContainerSelector(selector);\n                    var context = {\n                        selector: selector,\n                        handler: handler\n                    };\n\n                    CP_Customizer.hooks.addFilter('custom_container_data_handle', function (value, $item) {\n                        if ($item.is(this.selector)) {\n                            value = true;\n                        }\n                        return value;\n\n                    }.bind(context));\n\n                    CP_Customizer.hooks.addAction('custom_container_data_handle', function ($item) {\n                        if ($item.is(this.selector)) {\n                            this.handler($item);\n                        }\n                    }.bind(context));\n                },\n\n\n                getContainersSelector: function (addSelectors) {\n                    var result = _.clone(this.__dataContainers);\n\n                    if (_.isArray(addSelectors)) {\n                        result = result.concat(addSelectors);\n                    } else {\n                        if (_.isString(addSelectors)) {\n                            result.push(addSelectors);\n                        }\n                    }\n\n                    return result.join(',');\n                },\n\n\n                addContentBinds: function () {\n                    var $ = this.jQuery(),\n                        document = this.frame().document,\n                        window = this.frame();\n\n                    $(document).on('mouseover.hoveroverlay', this.getContainersSelector('[data-widgets-area],[data-bg=\"image\"]'), _.debounce(function () {\n                   \t\tif (this.hasAttribute(\"data-non-editable\")) return false;\n                        var node = $(this);\n                        var hoverOverlay = root.CP_Customizer.overlays.hoverOverlay();\n\n                        if (node.closest('[data-type=group]').length) {\n                            node = $(this).closest('[data-type=group]');\n                        }\n\n                        if (node.closest('[data-content-shortcode]').length) {\n                            node = node.closest('[data-content-shortcode]');\n                        }\n\n                        root.CP_Customizer.overlays.assignNode(hoverOverlay, node, true);\n                        hoverOverlay.show();\n\n                        var structureAllowsRemoving = (node.parents('[data-type=row]').length || node.parents('[data-type=column]').length)/* && node.siblings().length*/;\n                        var isFixed = (node.is('[data-fixed]') || node.parents('[data-fixed]').length);\n\n                        isFixed = CP_Customizer.hooks.applyFilters('is_fixed_element', isFixed, node);\n\n                        if (structureAllowsRemoving && !isFixed && node.is(root.CP_Customizer.CONTENT_ELEMENTS)) {\n                            hoverOverlay.find('.remove').show();\n                        } else {\n                            hoverOverlay.find('.remove').hide();\n                        }\n                    }, 1));\n\n\n                    $(document).on('mouseover.hoveroverlay', '[data-content-editable], .page-content i.mdi, body [data-content-item-container=\"true\"]', _.debounce(function () {\n\t\t\t\t\t\tif (this.hasAttribute(\"data-non-editable\")) return false;\n                        var node = $(this);\n\n                        if (node.parent().is('[data-content-item-container=\"true\"]')) {\n                            return;\n                        }\n\n                        var hoverOverlay = root.CP_Customizer.overlays.hoverOverlay();\n\n                        if (node.closest('[data-type=group]').length) {\n                            node = $(this).closest('[data-type=group]');\n                        }\n\n                        root.CP_Customizer.overlays.assignNode(hoverOverlay, node);\n                        hoverOverlay.show();\n\n                        if (CP_Customizer.isShortcodeContent(node)) {\n                            hoverOverlay.find('.remove').hide();\n\n                            if (!CP_Customizer.isOnCanvasMod(node)) {\n                                hoverOverlay.hide();\n                            }\n                        } else {\n                            var inRow = node.parents('[data-type=row]').length || node.parents('[data-type=column]').length;\n                            if (inRow && !node.is('[data-fixed]') && !node.closest('[data-fixed]').length) {\n                                hoverOverlay.find('.remove').show();\n                            } else {\n                                hoverOverlay.find('.remove').hide();\n                            }\n                        }\n\n\n                    }, 1));\n\n                    $(document).on('mouseover.hoveroverlay', '.page-content [data-content-shortcode]', function () {\n\n                        if (CP_Customizer.isShortcodeEditable($(this))) {\n                            var overlay = root.CP_Customizer.overlays.hoverOverlay();\n                            root.CP_Customizer.overlays.assignNode(overlay, $(this));\n                            overlay.show();\n                        }\n                    });\n\n\n                    $(document).on('mouseover', root.CP_Customizer.preview.getPageContainerSelector() + ' > div', function () {\n                        root.CP_Customizer.trigger('content.section.hovered', [$(this)]);\n                    });\n\n\n                    $(document).on('mouseover', '[data-type=\"richtext\"]', function () {\n                        var hoverOverlay = root.CP_Customizer.overlays.hoverOverlay();\n                        root.CP_Customizer.overlays.assignNode(hoverOverlay, $(this), true);\n\n                    });\n\n\n                    $(document).on('mouseover.addoverlay', '.page-content [data-type=\"row\"] > div, [data-theme] [data-type=\"row\"] > div, .page-content [data-type=\"column\"]', function () {\n\n                        if ($(this).closest(\"[data-type=\\\"row\\\"]\").is('[data-fixed]')) {\n                            return;\n                        }\n\n                        if ($(this).find('[data-type=column]').length) {\n                            return;\n                        }\n\n                        if ($(this).closest('[data-content-shortcode]').length) {\n                            return;\n                        }\n\n                        var addOverlay = root.CP_Customizer.overlays.addOverlay();\n                        root.CP_Customizer.overlays.assignNode(addOverlay, $(this));\n                        addOverlay.show();\n                    });\n\n\n                    $(document).on('mouseover.rowitemoverlay', '.page-content [data-type=\"row\"] > div, [data-theme] [data-type=\"row\"] > div, .page-content [data-type=\"row\"] > div, [data-theme] [data-type=\"row\"] > div * ', function () {\n                            var node = $(this);\n\n                            if (!node.parent().is('[data-type=\"row\"]')) {\n                                var parents = node.parentsUntil('[data-type=\"row\"]');\n                                node = parents.last();\n                            }\n\n                            if (CP_Customizer.isShortcodeContent(node)) {\n                                return;\n                            }\n\n\n                            var itemOverlay = root.CP_Customizer.overlays.rowItemHoverOverlay();\n                            root.CP_Customizer.overlays.assignNode(itemOverlay, node);\n                            itemOverlay.show();\n                        }\n                    );\n\n                    $(window).on('scroll', root.CP_Customizer.overlays.updateAllOverlays);\n                    $(window).on('resize', _(root.CP_Customizer.overlays.updateAllOverlays).debounce(50));\n\n                    $(document).on('click', this.getContainersSelector(), root.CP_Customizer.preview.editContainerData);\n\n                    $(document).on('click', 'body [data-content-editable]', function () {\n                        $(this).focus();\n                    });\n\n                    $(document).on('click', 'img[data-content-editable], [data-bg=\"image\"]', function () {\n\n\n                        var self = $(this),\n                            type = \"image\",\n                            data = {};\n\n                        if (self.is(CP_Customizer.preview.getContainersSelector())) {\n                            return;\n                        }\n\n                        var section = CP_Customizer.preview.getNodeSection(self);\n                        var sectionExports = CP_Customizer.getSectionExports(section);\n\n                        var flexible = _.isUndefined(sectionExports.maintainCropPropotion) ? true : sectionExports.maintainCropPropotion;\n\n                        if (self.is('[data-size-flexible=false]')) {\n                            flexible = false;\n                        }\n\n                        if (self.attr('data-size')) {\n                            var size = self.attr('data-size').split('x');\n                            type = \"cropable\";\n                            data = {\n                                width: size[0],\n                                height: size[1] ? size[1] : size[0],\n                                flexible: flexible\n                            };\n                        } else {\n                            data = {\n                                width: self.width(),\n                                height: self.height(),\n                                flexible: true\n                            };\n                        }\n\n                        root.CP_Customizer.openMediaBrowser(type, setterCB, data);\n\n                        function setterCB(src) {\n                            if (!src) {\n                                return;\n                            }\n                            if (self.is('img')) {\n                                self.attr('src', src[0].url);\n\n                                // remove attributes added by other plugins like JetPack\n                                self.removeAttr('srcset');\n                                self.removeAttr('src-orig');\n                                self.removeAttr('width');\n                                self.removeAttr('height');\n\n                            } else {\n                                self.css('background-image', 'url(' + src[0].url + ')');\n                            }\n\n                            root.CP_Customizer.markSave();\n                        }\n                    });\n\n                    $(document).on('click', 'i.mdi', function () {\n                        if (CP_Customizer.hooks.applyFilters('can_edit_icon', true, $(this))) {\n                            CP_Customizer.preview.editContainerData.apply(this);\n                        }\n                    });\n\n                    var cachedValue = \"\";\n                    $(document).on('mousedown', '.page-content [data-content-editable]', function (event) {\n                        cachedValue = $(this).text();\n                    });\n\n\n                    $(document).on('mouseup', '.page-content [data-content-editable]', function () {\n                        if ($(this).text() !== cachedValue) {\n                            root.CP_Customizer.markSave();\n                            cachedValue = $(this).text();\n                        } else {\n                            cachedValue = \"\";\n                        }\n                    });\n\n                    //Check for IE ('Trident')\n                    var contentEditableInputEvent = /Trident/.test(navigator.userAgent) ? 'textinput' : 'input';\n\n\n                    $(document).on(contentEditableInputEvent, 'body [data-content-editable]', function () {\n                        if ($(this).is('[data-theme]')) {\n                            $(this).data('was-changed', true);\n                            return;\n                        }\n\n                        root.CP_Customizer.overlays.updateOverlay(root.CP_Customizer.overlays.hoverOverlay(), $(this), false, true);\n                        root.CP_Customizer.markSave();\n                    });\n\n\n                    $(document).on('blur', 'body [data-theme]', function () {\n                        if ($(this).data('was-changed')) {\n                            root.CP_Customizer.markSave();\n                        }\n                    });\n\n                    var elementsSpecificSelector = CP_Customizer.TEXT_ELEMENTS.split(',').map(function (item) {\n                        var result = CP_Customizer.preview.getPageContainerSelector() + ' ' + item;\n\n                        result += \", [data-theme] \" + item;\n                        return result;\n                    });\n\n                    elementsSpecificSelector.push('[data-theme]');\n\n                    elementsSpecificSelector = elementsSpecificSelector.join(',');\n\n                    var elementsOnFocusLeave = _.debounce(function () {\n                        var $this = $(this);\n                        root.CP_Customizer.preview.markNode($this);\n\n                        if ($this.is(root.CP_Customizer.CONTENT_ELEMENTS) && $this.html().trim().length === 0) {\n                            $this.attr('data-preview-empty', 1);\n                        }\n                    }, 10);\n\n                    $(document).on('blur focusout', elementsSpecificSelector, elementsOnFocusLeave);\n\n                    $(document).on('focus', elementsSpecificSelector, function (event) {\n                        var $this = $(this);\n                        $this.removeAttr('data-preview-empty');\n\n                        if ($this.is('.mdi')) {\n                            event.preventDefault();\n                            event.stopPropagation();\n                            return false;\n                        }\n                    });\n\n\n                    $(document).on('keydown.cp', '[contenteditable=true]', function (event) {\n\n                        var editedNode = this;\n\n                        _.delay(function () {\n                            root.CP_Customizer.overlays.updateOverlay(root.CP_Customizer.overlays.hoverOverlay(), $(editedNode), false, true);\n                            $(editedNode).removeAttr('data-preview-empty');\n                        }, 20);\n\n                    });\n\n                    $(document).on('keypress.cp', '[contenteditable=true]', function (event) {\n\n                        if (event.which !== 13)\n                            return true;\n\n                        var document = CP_Customizer.preview.frame().document;\n\n                        var docFragment = document.createDocumentFragment();\n                        //add a new line\n                        var newEle = document.createTextNode('\\n');\n                        docFragment.appendChild(newEle);\n                        //add the br, or p, or something else\n                        newEle = document.createElement('br');\n                        docFragment.appendChild(newEle);\n\n                        var caretPosition = root.CP_Customizer.preview.getSelectionTextInfo(this);\n\n                        //make the br replace selection\n                        var range = window.getSelection().getRangeAt(0);\n                        range.deleteContents();\n                        range.insertNode(docFragment);\n                        //create a new range\n                        range = document.createRange();\n                        range.setStartAfter(newEle);\n                        range.collapse(true);\n                        //make the cursor there\n                        var sel = window.getSelection();\n                        sel.removeAllRanges();\n                        sel.addRange(range);\n\n                        event.preventDefault();\n\n                        $(this).trim();\n\n                        root.CP_Customizer.overlays.updateOverlay(root.CP_Customizer.overlays.hoverOverlay(), $(this), false, true);\n\n                        return false;\n\n                    });\n\n                    $(document).on('blur.cpmarksave', '[contenteditable=true]', _.debounce(function (event) {\n\n                        if (!$(this).data('cpFocused')) {\n                            return;\n                        }\n\n                        $(this).data('cpFocused', false);\n\n                        root.CP_Customizer.preview.markNode($(this));\n                        root.CP_Customizer.markSave();\n                    }, 800));\n\n                    $(window).bind('keydown', function (event) {\n                        if (event.ctrlKey || event.metaKey) {\n                            var key = String.fromCharCode(event.which).toLowerCase();\n                            if (key === \"s\") {\n                                event.preventDefault();\n                                event.stopPropagation();\n                                root.CP_Customizer.save();\n                            }\n                        }\n                    });\n\n\n                },\n                // http://stackoverflow.com/questions/1125292/how-to-move-cursor-to-end-of-contenteditable-entity\n                placeCursorAtEnd: function (contentEditableElement) {\n                    try {\n                        var range, selection,\n                            document = this.frame().document,\n                            window = this.frame();\n                        if (document.createRange) //Firefox, Chrome, Opera, Safari, IE 9+\n                        {\n                            range = document.createRange(); //Create a range (a range is a like the selection but invisible)\n                            range.selectNodeContents(contentEditableElement); //Select the entire contents of the element with the range\n                            range.collapse(false); //collapse the range to the end point. false means collapse to end rather than the start\n                            selection = window.getSelection(); //get the selection object (allows you to change selection)\n                            selection.removeAllRanges(); //remove any selections already made\n                            selection.addRange(range); //make the range you have just created the visible selection\n                        } else if (document.selection) //IE 8 and lower\n                        {\n                            range = document.body.createTextRange(); //Create a range (a range is a like the selection but invisible)\n                            range.moveToElementText(contentEditableElement); //Select the entire contents of the element with the range\n                            range.collapse(false); //collapse the range to the end point. false means collapse to end rather than the start\n                            range.select(); //Select the range (make it the visible selection\n                        }\n                    } catch (e) {\n\n                    }\n                },\n\n\n                decorateMods: function ($container) {\n\n                    // decorate default mods\n                    CP_Customizer.preview.pauseObserver();\n                    $container = $container ? this.jQuery($container) : this.find('body');\n                    var defaultMods = root.CP_Customizer.preview.getThemeMods($container);\n                    var preview = this;\n                    defaultMods.each(function () {\n                        var $el = $(this);\n                        if ($el.is('[data-theme]')) {\n                            preview.markNode($el);\n                            $el.find('[data-type=\"row\"] > div').each(preview.enableSortable);\n                        }\n                    });\n\n                    if (root.CP_Customizer.options().mods) {\n                        for (var selector in root.CP_Customizer.options().mods) {\n                            var $el = this.find(selector);\n                            var modData = root.CP_Customizer.options().mods[selector];\n                            if (modData.type) {\n                                $el.attr(modData.type, modData.mod);\n\n                                if (modData.type === \"data-theme\") {\n                                    preview.markNode($el);\n                                    $el.find('[data-type=\"row\"] > div').each(this.enableSortable);\n                                }\n                            }\n\n                            if (modData.atts) {\n                                for (var attr in modData.atts) {\n                                    $el.attr('data-theme-' + attr, modData.atts[attr]);\n                                }\n                            }\n\n                        }\n                    }\n\n                    CP_Customizer.preview.restartObserver();\n                },\n\n                //scan siblings and parent siblings until a comment node is found\n                getGutenbergBlockCommentStart:function (node)\n                {\n                    if (!node || (node && node.tagName == \"body\")) return false;\n                    if (node.nodeType == Node.COMMENT_NODE) return node;\n\n                    var previousSibling = node.previousSibling;\n                    var maxDepth = 10;\n                    while (previousSibling && \n                        previousSibling.nodeType != Node.COMMENT_NODE &&\n                        maxDepth-- > 0)\n                    {\n                        previousSibling = previousSibling.previousSibling;\n                    }\n\n                    if (!previousSibling || previousSibling.nodeType != Node.COMMENT_NODE) \n                        previousSibling = this.getGutenbergBlockCommentStart(node.parentNode);\n                    \n                    if (previousSibling.nodeType == Node.COMMENT_NODE)\n                    return previousSibling;\n                    \n                    return false;\n                },\n\n                getGutenbergBlockCommentEnd:function (node)\n                {\n                    if (!node || (node && node.tagName == \"body\")) return false;\n                    if (node.nodeType == Node.COMMENT_NODE) return node;\n\n                    var nextSibling = node.nextSibling;\n                    var maxDepth = 10;\n                    while (nextSibling && \n                        nextSibling.nodeType != Node.COMMENT_NODE &&\n                        maxDepth-- > 0)\n                    {\n                        nextSibling = nextSibling.nextSibling;\n                    }\n\n                    if (!nextSibling || nextSibling.nodeType != Node.COMMENT_NODE) \n                        nextSibling =  this.getGutenbergBlockCommentEnd(node.parentNode);\n                    \n                    if (nextSibling.nodeType == Node.COMMENT_NODE)\n                    return nextSibling;\n                    \n                    return false;\n                },\n\n\t            disableGutenbergBlocks: function (contentEditableElements)\n\t            {\n                    var self = this;\n                    console.log(self);\n                    var dataIdCounter = 1;\n\t                contentEditableElements.each(function (i, node) {\n\n\t                    //add data-non-editable also for node children for gutenberg figure > img case    \n\t                    function setNonEditableNodes(node, parent)\n\t                    {\n\t                        function setNode(node, parent)\n\t                        {\n\t                            $(node).removeAttr(\"data-content-editable data-container-editable data-content-code-editable contenteditable srcset sizes data-category data-label data-export-id\");\n                                if (parent === true) \n                                {\n                                    $(node).attr(\"data-non-editable\", true);\n                                }\n\t                        }\n\t                        \n\n\t                        setNode(node, parent);\n\t                        for (var i = 0; i < node.childNodes.length; i++) {\n\t                            var child = node.childNodes[i];\n\t                            setNonEditableNodes(child);\n\t                             //delete srcset andsizes attributes so that Gutenberg does not say invalid content\n\t                             setNode(node);\n\t                          }\n\t                    }\n\t                    \n\n\t                    \n\t                    //check previous sibling nodes until reaching comment node to skip eventual text nodes\n\t                    function nextNonTextNode(node)\n\t                    {\n\t                        var nextSibling = node;\n\t                        var maxDepth = 10;\n\t                        while (nextSibling && \n\t                            (nextSibling.nodeType == Node.COMMENT_NODE ||\n\t                            nextSibling.nodeType == Node.TEXT_NODE) &&\n\t                            maxDepth-- > 0)\n\t                        {\n\t                            nextSibling = nextSibling.nextSibling;\n\t                        }\n\n\t                        return nextSibling;\n\t                    }\n\n\t                    var commentNode = self.getGutenbergBlockCommentStart(node);\n\t                    var sectionNode;\n\t                    \n\t                    if ((commentNode && commentNode.nodeType == Node.COMMENT_NODE) && //check if section has wp:comment\n\t                    commentNode.textContent.indexOf(\"wp:\") != -1 && //check if gutenberg block\n                        commentNode.textContent.indexOf(\"wp:extendstudio/materialis\") == -1 && //check if not materialis block\n                        commentNode.textContent.indexOf(\"wp:extendstudio/mesmerize\") == -1) //check if not mesmerize block\n\t                    {\n\t                        //set gutenberg block as non editable\n\t                        sectionNode = nextNonTextNode(commentNode);\n\t                        setNonEditableNodes(sectionNode, true);\n\t                    }\n\t                });                \n\t            },\n\t            \n                decorateElements: function ($container) {\n\n\n                    CP_Customizer.preview.pauseObserver();\n\n                    var $ = root.CP_Customizer.preview.jQuery(),\n                        self = this;\n\n                    var elementsContainers = root.CP_Customizer.hooks.applyFilters('decorable_elements_containers', [root.CP_Customizer.preview.getPageContainerSelector(), '[data-dynamic-mod-container]']);\n                    $container = $container ? $($container) : root.CP_Customizer.preview.find(elementsContainers.join(','));\n\n\n                    $(function () {\n                        var $toDecorate = $(\"\");\n                        $toDecorate = $toDecorate.add($container);\n                        // $toDecorate = $toDecorate.add($('[data-theme]'));\n                        CP_Customizer.overlays.addFixedOverlays($toDecorate);\n                    });\n\n\n                    $container.find('a').unbind('click').click(function (event) {\n                        event.preventDefault();\n                        event.stopImmediatePropagation();\n                        event.stopPropagation();\n\n                        if ($(this).is('[data-container-editable]') || $(this).is('[data-type=group]')) {\n                            self.editContainerData.apply(this);\n                        }\n\n                        return false;\n                    });\n                    var elements = $container.find(root.CP_Customizer.CONTENT_ELEMENTS).filter(function () {\n                        return root.CP_Customizer.preview.data().maintainable;\n                    });\n\n                    if ($container.is(root.CP_Customizer.CONTENT_ELEMENTS)) {\n                        if (elements.length) {\n                            elements.add($container);\n                        } else {\n                            elements = $container;\n                        }\n                    }\n\n\n                    elements = elements.filter(function (item) {\n                        if ($(this).closest('[data-content-shortcode]').length) {\n                            return false;\n                        }\n                        return true;\n                    });\n                    elements = elements.add(root.CP_Customizer.preview.getThemeMods($container).filter(root.CP_Customizer.CONTENT_ELEMENTS));\n                    elements.filter('a').each(function () {\n                        var $el = $(this);\n\n                        if ($el.closest(root.CP_Customizer.preview.getPageContainerSelector()).length) {\n                            $el.attr('data-container-editable', true);\n                        }\n\n                        if ($el.is('[data-theme]')) {\n                            $el.attr('data-container-editable', true);\n                        }\n\n                    });\n                    elements.filter('ul').attr('data-container-editable', true);\n                    elements = elements.filter(function (item) {\n                        if (this.tagName === \"SPAN\" && $(this).parents(CP_Customizer.TEXT_ELEMENTS).length) {\n                            return false;\n                        }\n\n                        if ($(this).parents(root.CP_Customizer.preview.getContainersSelector()).length) {\n                            $(this).attr('data-content-code-editable', true);\n                            return false;\n                        }\n\n                        if ($(this).is(root.CP_Customizer.preview.getContainersSelector())) {\n                            $(this).attr('data-content-code-editable', true);\n                            return false;\n                        }\n\n                        return true;\n                    });\n\n                    elements.not('i.mdi,a').attr('data-content-editable', true);\n                    elements.not('i.mdi,hr,a').attr('contenteditable', true);\n\n                    elements.filter('i.mdi').each(function () {\n                        if ($(this).parent().is(root.CP_Customizer.CONTENT_ELEMENTS)) {\n                            return;\n                        }\n\n                        $(this).attr('data-content-editable', true);\n                        $(this).attr('contenteditable', true);\n                    });\n\n                    var contentEditableElements = $container.find('[contenteditable=\"true\"]');\n\n                    if ($container.is('[contentededitable=true]')) {\n                        contentEditableElements.add($container);\n                    }\n\n                    contentEditableElements = contentEditableElements.add(root.CP_Customizer.preview.getThemeMods($container).filter('[contenteditable=\"true\"]'));\n\n\n                    var handlePasteEvent = function (e) {\n                        var $ = CP_Customizer.preview.jQuery();\n\n                        var text = '';\n                        var that = $(this);\n                        var document = CP_Customizer.preview.frame().document;\n\n                        e.preventDefault();\n                        e.stopPropagation();\n\n                        if (e.clipboardData) {\n                            text = e.clipboardData.getData('text/plain');\n                        } else if (window.clipboardData) {\n                            text = window.clipboardData.getData('Text');\n                        } else if (e.originalEvent.clipboardData) {\n                            text = $('<div></div>').text(e.originalEvent.clipboardData.getData('text'));\n                        }\n\n                        var textContainer = $('<div/>').append(text);\n\n                        CP_Customizer.preview.fixWronglyWrappedTextNodes(textContainer);\n\n                        text = textContainer[0].innerHTML.replace(/\\r\\n/g, '<br/>').replace(/\\r/g, '<br/>').replace(/\\n/g, '<br/>');\n\n                        if (document.queryCommandSupported('insertText')) {\n                            document.execCommand('insertHTML', false, text);\n                            return false;\n                        }\n                        else { // IE > 7\n                            that.find('*').each(function () {\n                                $(this).addClass('within');\n                            });\n\n                            setTimeout(function () {\n                                // nochmal alle durchlaufen\n                                that.find('*').each(function () {\n                                    // wenn das element keine klasse 'within' hat, dann unwrap\n                                    // http://api.jquery.com/unwrap/\n                                    $(this).not('.within').contents().unwrap();\n                                });\n                                root.CP_Customizer.preview.markNode(that);\n                            }, 1);\n                        }\n                        root.CP_Customizer.markSave();\n                    };\n\n                    contentEditableElements.filter('*').each(function () {\n                        if (!CP_Customizer.IS_PRO) {\n                            this.addEventListener('paste', handlePasteEvent);\n                        }\n                    });\n\n                    $container.find('[data-type=\"row\"] > div, [data-type=column]').each(this.enableSortable);\n\n                    if ($container.is('[data-type=\"row\"] > div, [data-type=column]')) {\n                        this.enableSortable.call($container);\n                    }\n\n                    if ($container.closest('.ui-sortable').length) {\n                        try {\n                            $container.closest('.ui-sortable').sortable('refresh');\n                            $container.closest('.ui-sortable').sortable('disable');\n                        } catch (e) {\n\n                        }\n                    }\n\n               \t    this.disableGutenbergBlocks($container.find('[contenteditable=\"true\"], [data-content-code-editable=\"true\"], [class^=wp-]'));\n                    root.CP_Customizer.trigger(root.CP_Customizer.events.ELEMENT_DECORATED, [$container]);\n                    CP_Customizer.preview.restartObserver();\n   \t\t         },\n\n\t            decorateSectionsForGutenberg: function(sections){\n\t                 var sections = sections ? sections : CP_Customizer.preview.getSections();\n\n\t                 //adds gutenberg block html comment\n\t                sections.each(function (i, node) {\n\t                    //skip decorate if node already has comment\n\t                    if (node.previousSibling && \n\t                        node.previousSibling.nodeType == Node.COMMENT_NODE &&\n\t                        node.previousSibling.textContent.indexOf(\" wp:extendstudio/materialis\") != -1) \n\t                    return;\n\n\t                    var commentOpen = document.createComment(\" wp:extendstudio/materialis \");\n\t                    var commentClose = document.createComment(\" /wp:extendstudio/materialis \");\n\t                    node.before(commentOpen);\n\t                    node.after(commentClose);\n\t                 });\n                },\n\n                enableSortable: function () {\n                    var $ = CP_Customizer.preview.jQuery();\n                    var $this = $(this);\n\n                    if ($this.find('[data-type=column]').length) {\n                        return;\n                    }\n\n                    if ($this.parent().is('[data-content-shortcode]')) {\n                        return;\n                    }\n\n\n                    if ($this.children().length === 0) {\n                        if ($this.is(root.CP_Customizer.CONTENT_ELEMENTS) && $this.html().trim().length === 0) {\n                            $this.attr('data-preview-empty', 1);\n                        }\n                    }\n\n                    $this.sortable({\n                        axis: \"y\",\n                        start: function (event, ui) {\n                            ui.helper.css({\n                                'display': 'block',\n                            });\n                        },\n                        stop: function (evt, ui) {\n                            $this.sortable('disable');\n                            $('.node-hover-overlay[is-dragging=true]').removeAttr('is-dragging');\n                            $(ui.item).data('reikidragging', false);\n                            ui.item.removeAttr(\"style\");//button drag left:0px fix\n\n                            function refreshOverlay() {\n                                root.CP_Customizer.overlays.assignNode(root.CP_Customizer.overlays.hoverOverlay(), $(ui.item));\n                                root.CP_Customizer.overlays.updateOverlay(root.CP_Customizer.overlays.hoverOverlay(), $(ui.item));\n                            }\n\n                            ui.item.css('display', '');\n                            ui.item.css('transition', '');\n                            setTimeout(refreshOverlay, 10);\n                            $('[contenteditable]').attr('contenteditable', true);\n                            root.CP_Customizer.isSorting = false;\n                            root.CP_Customizer.updateState();\n                        },\n                        deactivate: function (evt, ui) {\n                            $('.node-hover-overlay[is-dragging=true]').removeAttr('is-dragging');\n                        },\n                        cursorAt: {\n                            left: 0,\n                            top: 0\n                        }\n\n                    });\n                    $this.sortable('disable');\n                },\n\n                showTextElementCUI: function (node) {\n                    CP_Customizer.preview.pauseObserver();\n\n                    $(node).off('paste.cp_customizer').on('paste.cp_customizer', function (event) {\n                        var clipboardData = null;\n                        var mimeType = \"\";\n                        var window = CP_Customizer.preview.frame();\n                        var document = window.document;\n\n\n                        event.preventDefault();\n                        // event.stopPropagation();\n                        // event.stopImmediatePropagation();\n\n                        if (event.clipboardData) {\n                            clipboardData = event.clipboardData;\n                            mimeType = 'text/plain';\n                        } else if (window.clipboardData) {\n                            clipboardData = window.clipboardData;\n                            mimeType = 'Text';\n                        } else if (event.originalEvent.clipboardData) {\n                            clipboardData = event.originalEvent.clipboardData;\n                            mimeType = 'text';\n                        }\n\n                        var text = clipboardData.getData(mimeType);\n                        text = CP_Customizer.utils.wpautop(text.replace(/\\n\\s*\\n/g, '\\n'));\n                        var textContainer = $('<div/>').append(text);\n\n                        CP_Customizer.preview.fixWronglyWrappedTextNodes(textContainer);\n\n                        text = textContainer[0].innerHTML;\n\n                        if (document.queryCommandSupported('insertText')) {\n                            document.execCommand('insertHTML', false, text);\n                            return false;\n                        }\n                        else { // IE > 7\n                            that.find('*').each(function () {\n                                $(this).addClass('within');\n                            });\n\n                            setTimeout(function () {\n                                // nochmal alle durchlaufen\n                                that.find('*').each(function () {\n                                    // wenn das element keine klasse 'within' hat, dann unwrap\n                                    // http://api.jquery.com/unwrap/\n                                    $(this).not('.within').contents().unwrap();\n                                });\n                            }, 1);\n                        }\n\n                    });\n\n                    node = $(node)[0];\n\n                    var cui = this.getTextElementCUI();\n\n                    if (!cui) {\n                        CP_Customizer.logError('TinyMCE Editor not found');\n                        return;\n                    }\n\n                    cui.hidden = false;\n                    cui.target = node;\n                    cui.bodyElement = node;\n                    cui.show();\n                    cui.fire('focusin');\n                    cui.undoManager.clear();\n                    cui.theme.panel.getEl().classList.add('cp-tinymce-inline');\n                    cui.theme.panel.getEl().style.display = \"block\";\n\n\n                    var docWidth = Math.min(CP_Customizer.preview.frame().innerWidth, CP_Customizer.preview.jQuery('html').width()),\n                        cuiRect = cui.theme.panel.getEl().getBoundingClientRect(),\n                        nodeWidth = CP_Customizer.preview.jQuery(node).width(),\n                        nodeOffsetLeft = CP_Customizer.preview.jQuery(node).offset().left;\n\n\n                    var newLeft = (nodeOffsetLeft - (cuiRect.width - nodeWidth) * 0.5);\n\n                    if (newLeft < 0) {\n                        newLeft = nodeOffsetLeft;\n                    }\n\n                    if (newLeft + cuiRect.width > docWidth) {\n                        newLeft = nodeOffsetLeft + nodeWidth - cuiRect.width;\n\n                    }\n                    cui.theme.panel.getEl().style.left = newLeft + 'px';\n\n                },\n\n                hideTextElementCUI: function () {\n                    var cui = this.getTextElementCUI();\n\n                    if (!cui) {\n                        CP_Customizer.logError('TinyMCE Editor not found');\n                        return;\n                    }\n\n\n                    if (cui.theme && cui.theme.panel) {\n                        cui.theme.panel.getEl().style.display = \"none\";\n                    }\n\n                    if (cui.getBody()) {\n                        cui.fire('focusout');\n                        // cui.hide();\n                    }\n                },\n\n                getFonts: function () {\n\n                    var defaultFonts = {\n                        \"Arial\": \"arial,helvetica,sans-serif\",\n                        \"Arial Black\": \"arial black,sans-serif\",\n                        \"Andale Mono\": \"andale mono,monospace\",\n                        // \"Book Antiqua\": \"book antiqua,palatino,serif\",\n                        // \"Comic Sans MS\": \"comic sans ms,sans-serif\",\n                        // \"Courier New\": \"courier new,courier,monospace\",\n                        // \"Georgia\": \"georgia,palatino,serif\",\n                        // \"Helvetica\": \"helvetica,arial,sans-serif\",\n                        // \"Impact\": \"impact,sans-serif\",\n                        // \"Symbol\": \"symbol\",\n                        \"Tahoma\": \"tahoma,arial,helvetica,sans-serif\",\n                        \"Terminal\": \"terminal,monaco,monospace\",\n                        \"Times New Roman\": \"times new roman,times,serif\",\n                        // \"Trebuchet MS\": \"trebuchet ms,geneva,sans-serif\",\n                        \"Verdana\": \"verdana,geneva,sans-serif\"\n                        // \"Webdings\": \"webdings\",\n                        // \"Wingdings\": \"wingdings,zapf dingbats\"\n                    };\n\n                    var googleFonts = {};\n\n                    if (root.CP_Customizer.pluginOptions.data.fonts) {\n                        for (var font in root.CP_Customizer.pluginOptions.data.fonts) {\n                            googleFonts[font] = font + \",arial,helvetica,sans-serif\";\n                        }\n                    }\n\n                    googleFonts = root.CP_Customizer.hooks.applyFilters('tinymce_google_fonts', googleFonts);\n\n                    var fonts = _.extend(googleFonts, defaultFonts);\n\n                    fonts.toTinyMCEFormat = function () {\n                        var result = [];\n                        for (var font in this) {\n                            if (_.isString(this[font])) {\n                                result.push(font + \"=\" + this[font]);\n                            }\n                        }\n\n                        return result.join(';');\n                    };\n\n                    return fonts;\n                },\n\n                getNodeFont: function (node) {\n                    var $node = this.jQuery(node)\n                    var font = $node.css('font-family');\n                    var fontArray = font.replace(/[\\'\\\"]/g, '').replace(/\\s/g, '').toLowerCase().split(',');\n                    var fonts = this.getFonts();\n\n                    if (_.isObject(fonts)) {\n                        for (var name in fonts) {\n                            if (_.isString(fonts[name])) {\n                                var _fontArray = fonts[name].replace(/[\\'\\\"]/g, '').replace(/\\s/g, '').toLowerCase().split(',');\n                                if (_.difference(_fontArray, fontArray).length === 0) {\n                                    return name;\n                                }\n                            }\n                        }\n                    }\n\n                    return font;\n                },\n\n                getFontWeights: function (font) {\n                    var fonts = CP_Customizer.utils.getValue('web_fonts');\n\n                    if (fonts) {\n                        for (var i = 0; i < fonts.length; i++) {\n                            var _font = fonts[i];\n                            if (_font.family.toLowerCase() === font.toLowerCase()) {\n                                var weights = [];\n                                for (var w = 0; w < _font.weights.length; w++) {\n                                    var weight = _font.weights[w];\n                                    if (weight === 'normal' || weight === 'regular') {\n                                        weight = '400';\n                                    } else {\n                                        try {\n                                            weight = parseInt(weight).toString();\n                                        } catch (e) {\n\n                                        }\n                                    }\n\n                                    if (weights.indexOf(weight) === -1) {\n                                        weights.push(weight);\n                                    }\n                                }\n                                return weights;\n                            }\n                        }\n                    }\n\n                    return ['100', '200', '300', '400', '500', '600', '700', '800', '900'];\n                },\n\n                getTextElementCUI: function () {\n                    var editorID = 'cp-tinymce-cui-editor';\n                    var editor = root.CP_Customizer.preview.frame().tinymce ? root.CP_Customizer.preview.frame().tinymce.get(editorID) : 'cp-editor-not-found';\n\n                    if (editor === 'cp-editor-not-found') {\n                        return undefined;\n                    }\n\n                    var self = this;\n                    if (!editor) {\n                        this.jQuery('body').after('<div id=\"' + editorID + '\"></div>');\n                        var options = {\n                            \"selector\": \"#\" + editorID,\n                            inline: true,\n                            style_formats_merge: true,\n                            extended_valid_elements: 'span',\n                            \"formats\": {\n                                alignment: {selector: 'p,h1,h2,h3,h4,h5,h6', styles: {textAlign: '%value'}},\n                                fontweight: {inline: 'span', styles: {fontWeight: '%value'}},\n                                fontsize: {inline: 'span', styles: {fontSize: '%value'}},\n                                fontcolor: {inline: 'span', styles: {color: '%value'}},\n                                italic: {inline: 'span', styles: {fontStyle: 'italic'}},\n\n                            },\n                            \"menubar\": false,\n                            \"theme\": \"modern\",\n                            \"skin\": \"lightgray\",\n                            \"toolbar\": 'fontselect addwebfont font-weight font-size-popup | italic underline strikethrough superscript subscript alignment  font-color-popup | removeformat',\n                            \"font_formats\": this.getFonts().toTinyMCEFormat(),\n                            \"paste_as_text\": true,\n                            \"forced_root_block\": false,\n                            setup: function (ed) {\n                                var bm;\n\n                                ed.addButton('font-weight', {\n                                    type: 'listbox',\n                                    text: root.CP_Customizer.translateCompanionString('Font Weight'),\n                                    icon: false,\n                                    onselect: function (e) {\n                                        ed.formatter.apply('fontweight', {value: this.value()});\n                                    },\n                                    values: [\n                                        {text: 'Thin (100)', value: '100'},\n                                        {text: 'Extra light (200)', value: '200'},\n                                        {text: 'Light (300)', value: '300'},\n                                        {text: 'Normal (400)', value: '400'},\n                                        {text: 'Medium (500)', value: '500'},\n                                        {text: 'Semi Bold (600)', value: '600'},\n                                        {text: 'Bold (700)', value: '700'},\n                                        {text: 'Extra Bold (800)', value: '800'},\n                                        {text: 'Black (900)', value: '900'}\n                                    ],\n                                    onPostRender: function () {\n\n                                        // add font control separator//\n                                        var fontControl = ed.theme.panel.controlIdLookup['mceu_0'];\n                                        fontControl.on('showMenu', function (e) {\n                                            var items = this.menu.items();\n                                            for (var i in items) {\n                                                var item = items[i];\n\n                                                if (!_.isFunction(item.text)) {\n                                                    continue;\n                                                }\n\n                                                if (item.text().raw.toLowerCase() == 'arial') {\n                                                    item.$el.addClass('first-system-font');\n                                                }\n                                            }\n                                        });\n\n                                        var btn = this;\n                                        ed.on('NodeChange', _.debounce(function (e) {\n                                            var weight = jQuery(e.element || ed.selection.getNode()).css('font-weight');\n                                            if (weight === \"bold\") weight = \"700\";\n                                            if (weight === \"normal\") weight = \"400\";\n                                            btn.value(weight);\n                                        }, 10));\n\n                                        btn.on('show', function (e) {\n                                            ed.theme.panel.getEl().style.display = \"block\";\n                                            e.control.$el.css({top: this.$el.offset().top + 34, left: this.$el.offset().left})\n                                        });\n\n                                        btn.on('showMenu', function () {\n                                            var font = CP_Customizer.preview.getNodeFont(ed.selection.getNode());\n                                            var weights = CP_Customizer.preview.getFontWeights(font);\n                                            for (var i in btn.menu.items()) {\n                                                var item = btn.menu.items()[i];\n\n                                                if (!_.isFunction(item.value)) {\n                                                    continue;\n                                                }\n\n                                                if (weights.indexOf(item.value()) === -1) {\n                                                    item.$el.hide();\n                                                } else {\n                                                    item.$el.show();\n                                                }\n                                            }\n                                        });\n                                    }\n                                });\n\n\n                                ed.addButton('alignment', {\n                                    type: 'listbox',\n                                    text: root.CP_Customizer.translateCompanionString(''),\n                                    icon: true,\n                                    onselect: function (e) {\n                                        ed.formatter.apply('alignment', {value: this.value()});\n                                    },\n                                    values: [\n                                        {\n                                            icon: 'alignleft',\n                                            text: root.CP_Customizer.translateCompanionString(''),\n                                            value: 'left'\n                                        },\n                                        {\n                                            icon: 'aligncenter',\n                                            text: root.CP_Customizer.translateCompanionString(''),\n                                            value: 'center'\n                                        },\n                                        {\n                                            icon: 'alignright',\n                                            text: root.CP_Customizer.translateCompanionString(''),\n                                            value: 'right'\n                                        },\n                                        {\n                                            icon: 'alignjustify',\n                                            text: root.CP_Customizer.translateCompanionString(''),\n                                            value: 'justify'\n                                        }\n                                    ],\n                                    onPostRender: function () {\n                                        var btn = this;\n                                        ed.on('NodeChange', function (e) {\n                                            var textAlign = jQuery(ed.selection.getNode()).css('text-align');\n                                            btn.value(textAlign);\n                                            btn.icon('align' + textAlign);\n\n                                            //Disable text alignment for header elements\n                                            if (jQuery(e.element).parents('.header-wrapper').length)\n                                            {\n                                                btn.$el.hide();\n                                            } else\n                                            {\n                                                btn.$el.show();\n                                            }\n                                        });\n\n                                        btn.on('show', function (e) {\n                                            ed.theme.panel.getEl().style.display = \"block\";\n                                            e.control.$el.css({top: this.$el.offset().top + 34, left: this.$el.offset().left})\n                                            e.control.$el.eq(0).css('min-width', '10px');\n                                        });\n                                    }\n                                });\n\n                                ed.addButton('addwebfont', {\n                                    type: 'button',\n                                    icon: 'insert',\n                                    tooltip: root.CP_Customizer.translateCompanionString(\"Add web font\"),\n                                    onPostRender: function () {\n                                        this.on(\"click\", function () {\n                                            top.wp.customize.control('web_fonts').focus()\n                                        });\n                                    }\n                                });\n                                ed.addButton('font-color-popup', {\n                                    type: \"colorbutton\",\n                                    icon: false,\n\n\n                                    onPostRender: function () {\n                                        var btn = this;\n\n                                        self.jQuery(this.getEl()).spectrum({\n                                            showAlpha: true,\n\n                                            preferredFormat: \"rgb\",\n                                            showInput: true,\n                                            show: function () {\n                                                //console.log(this);\n\n                                                var colorPalette = CP_Customizer.hooks.applyFilters('spectrum_color_palette', []);\n\n\n                                                var color = jQuery(ed.selection.getNode()).css('color');\n                                                var spectrumEl = self.jQuery(btn.getEl());\n\n                                                var container = spectrumEl.spectrum(\"container\");\n                                                spectrumEl.spectrum(\"set\", color);\n\n                                                spectrumEl.spectrum(\"option\", \"showPalette\", colorPalette.length > 0);\n\n                                                if (colorPalette.length > 0) {\n\n                                                    // group colors a 3 per row\n                                                    colorPalette = CP_Customizer.utils.arrayChunk(colorPalette, 3);\n\n                                                    spectrumEl.spectrum(\"option\", \"palette\", colorPalette);\n                                                }\n\n\n                                                var offTop = container.offset().top\n                                                var scrollTop = self.frame().scrollY;\n\n                                                container.css({\n                                                    top: self.jQuery(btn.getEl()).offset().top - scrollTop + 30,\n                                                    \"left\": \"auto\",\n                                                    \"right\": CP_Customizer.preview.frame().innerWidth - jQuery(btn.getEl()).offset().left - 40\n                                                });\n\n                                                self.jQuery(self.jQuery('body')[0].ownerDocument).scroll(function () {\n                                                    var offTop = container.offset().top\n                                                    var scrollTop = self.jQuery('body').scrollTop();\n\n                                                    container.offset({\n                                                        top: self.jQuery(btn.getEl()).offset().top - scrollTop + 30\n                                                    });\n                                                });\n\n                                            },\n                                            change: function (color) {\n                                                var col = color.toRgbString();\n                                                btn.value(col);\n\n                                                ed.selection.moveToBookmark(bm);\n                                                ed.formatter.apply('fontcolor', {value: col});\n                                            }\n                                        });\n\n                                        btn.on(\"click\", function () {\n                                            bm = ed.selection.getBookmark();\n                                        });\n\n                                        ed.on('NodeChange', function (e) {\n                                            var color = jQuery(ed.selection.getNode()).css('color');\n                                            btn.color(color);\n                                            self.jQuery(btn.getEl()).spectrum(\"set\", color);\n                                        });\n\n                                        function onEditorBlur(e) {\n                                            self.jQuery(btn.getEl()).spectrum('hide');\n                                            CP_Customizer.preview.restartObserver();\n                                        }\n\n                                        ed.on('blur', onEditorBlur);\n\n\n                                    }\n                                });\n                                ed.on('focus', function (e) {\n                                    // _.delay(function () {\n                                    //     var editorEL = e.target.theme.panel.getEl(),\n                                    //         node = e.target.bodyElement,\n                                    //         margin = ($(node).width() - $(editorEL).width()) / 2;\n                                    //\n                                    //     $(editorEL).css({\n                                    //         'margin-left': margin\n                                    //     });\n                                    // }, 0);\n                                });\n\n                                updateOnEditorBlur = _.debounce(function (e) {\n                                    _.delay(function () {\n                                        var $node = $(e.target.bodyElement);\n                                        CP_Customizer.preview.markNode($node);\n\n                                        if ($node.is('[data-theme]')) {\n                                            CP_Customizer.preview.jQuery($node).data('was-changed', true);\n                                        }\n                                        CP_Customizer.updateState();\n                                    }, 0);\n                                }, 100);\n\n                                ed.on('blur', updateOnEditorBlur);\n\n                            }\n                        };\n                        root.CP_Customizer.preview.frame().tinymce.init(options);\n                        editor = root.CP_Customizer.preview.frame().tinymce.get(editorID);\n\n                    }\n\n                    return editor;\n                },\n\n                blur: function (overlayOnly) {\n                    var hoverOverlay = CP_Customizer.overlays.hoverOverlay();\n                    var hoveredNode = CP_Customizer.preview.jQuery(hoverOverlay.data().node);\n\n                    // hoverOverlay.deactivateHeatZone();\n\n                    var fakeNode = CP_Customizer.preview.jQuery(\"<p contenteditable='true' style='display: none;' />\");\n\n                    CP_Customizer.overlays.assignNode(hoverOverlay, fakeNode);\n\n                    if (overlayOnly) {\n                        return;\n                    }\n\n                    if (CP_Customizer.preview.getTextElementCUI()) {\n                        CP_Customizer.preview.getTextElementCUI().fire('blur');\n                    }\n\n\n                }\n            },\n\n            overlays: {\n\n\n                addFixedOverlays: function ($startNode) {\n                    var $ = root.CP_Customizer.preview.jQuery();\n\n                    if ($startNode.length > 1) {\n\n                        var self = this;\n                        $startNode.each(function () {\n                            self.addFixedOverlays($(this));\n                        });\n                        return;\n\n                    }\n                    $startNode = $startNode || $('body');\n\n                    if ($startNode.closest('[data-type=\"row\"]').length || $startNode.closest('[data-type=\"column\"]').length) {\n                        return;\n                    }\n\n                    root.CP_Customizer.trigger(root.CP_Customizer.events.ADD_FIXED_OVERLAYS, [$startNode]);\n\n                },\n\n\n                __fixedOverlayOptions: {},\n                registerFixedOverlayOptions: function (name, options) {\n\n                    if (_.isObject(name)) {\n                        _.each(name, function (options, key) {\n                            CP_Customizer.overlays.registerFixedOverlayOptions(key, options);\n                        });\n                    } else {\n\n                        if (!this.__fixedOverlayOptions.hasOwnProperty(name)) {\n                            this.__fixedOverlayOptions[name] = options;\n                        } else {\n                            // console.error(\"Overlay options name '\" + name + \"' already exists\");\n                        }\n                    }\n\n                },\n\n                getOverlayOptionButton: getButtonElement,\n\n                addOptionsToFixedOverlay:\n                    function ($container, type, node, callback) {\n                        var typeOptions = this.__fixedOverlayOptions[type],\n                            $toAppend;\n\n                        typeOptions = CP_Customizer.hooks.applyFilters('section_fixed_overlay_options', _.clone(typeOptions), type);\n\n                        if (!typeOptions) {\n                            console.error('Undefined typeoptions', type, node);\n                            return;\n                        }\n\n                        var jQuery = CP_Customizer.preview.jQuery();\n                        var _node = (typeOptions.nodeOverrider || _.identity)(node);\n                        for (var key in typeOptions) {\n                            var filteredOptions = CP_Customizer.hooks.applyFilters('section_fixed_overlay', typeOptions[key], key);\n                            if (typeOptions.hasOwnProperty(key)) {\n                                switch (key) {\n                                    case 'title':\n                                        $toAppend = getTitleElement(filteredOptions, _node, type);\n                                        if ($toAppend) {\n                                            $container.append($toAppend);\n                                        }\n                                        break;\n                                    case 'items':\n                                        $toAppend = getItemsElements(filteredOptions, _node, type);\n                                        $container.append($toAppend);\n                                        break;\n                                    case 'node_binds':\n                                        var nodeBinds = filteredOptions;\n                                        jQuery.each(nodeBinds, function (bind, callbacks) {\n                                            if (bind === \"hover\") {\n                                                _node.hover(\n                                                    function (event) {\n                                                        callbacks[0].bind(this)(event, jQuery(this).data().overlay);\n                                                    },\n                                                    function (event) {\n                                                        var isNodeRelated = jQuery(this).data().overlay.find(\"*\").addBack().is(event.relatedTarget);\n                                                        if (isNodeRelated) {\n                                                            event.preventDefault();\n                                                            event.stopPropagation();\n                                                            return false;\n                                                        }\n\n                                                        callbacks[1].bind(this)(event, jQuery(this).data().overlay);\n                                                    }\n                                                );\n                                            } else {\n                                                _node.bind(bind, callbacks);\n                                            }\n                                        });\n                                        break;\n                                    case 'toolbar_binds':\n                                        var toolbarBinds = typeOptions[key];\n                                        var overlay = jQuery(node).data().overlay;\n                                        jQuery.each(toolbarBinds, function (bind, callbacks) {\n                                            if (bind === \"hover\") {\n                                                overlay.find('.overlay-toolbar').hover(\n                                                    function (event) {\n                                                        callbacks[0].bind(node)(event, overlay);\n                                                    },\n                                                    function (event) {\n                                                        callbacks[1].bind(node)(event, overlay);\n                                                    }\n                                                );\n                                            } else {\n                                                overlay.bind(bind, callbacks);\n                                            }\n                                        });\n                                        break;\n                                }\n                            }\n                        }\n\n                        if (callback) {\n                            callback(typeOptions);\n                        }\n                    }\n\n                ,\n\n                updateOverlay: function (overlay, node, cover, positionOnly) {\n                    var $ = root.CP_Customizer.preview.jQuery();\n                    node = $(node);\n                    updateControls = !positionOnly;\n\n                    if (!node || !node.length) {\n                        return;\n                    }\n\n\n                    if (updateControls) {\n                        overlay.find('.pen-overlay').css({\n                            width: node.outerWidth(),\n                            height: node.outerHeight(),\n                            'pointer-events': 'all',\n                            'display': 'block'\n                        });\n\n                        overlay.find('.add-element-bubble.visible').removeClass('visible');\n                        overlay.find('.add-element-bubble .expanded').removeClass('expanded');\n\n                        if (node.outerHeight() < 30) {\n                            overlay.find('.pen-overlay').addClass('small');\n                        } else {\n                            overlay.find('.pen-overlay').removeClass('small');\n                        }\n\n\n                        if (node.parent().is('.ui-sortable') && node.siblings(root.CP_Customizer.CONTENT_ELEMENTS).length && node.closest(\".page-content,[data-theme]\").length) {\n                            overlay.find('.move').show();\n                        } else {\n                            overlay.find('.move').hide();\n                        }\n\n\n                        if (!node.is(':visible')) {\n                            overlay.hide();\n                        } else {\n                            overlay.show();\n                        }\n\n                        overlay.find('.add').show();\n                        if (node.closest('[data-add-content]').length) {\n                            value = node.closest('[data-add-content]').attr('data-add-content');\n\n                            if (value === \"false\") {\n                                overlay.find('.add').hide();\n                            }\n                        }\n\n\n                        if (node.closest('[data-type=\"row\"]').length && node.closest('[data-type=\"row\"]').is('[data-custom-items]')) {\n                            overlay.find('.top-container').hide();\n                            overlay.find('[h-align-center]').hide();\n                        } else {\n                            overlay.find('.top-container').show();\n                            overlay.find('[h-align-center]').show();\n                        }\n\n\n                        if (overlay.is('.add-content-overlay')) {\n                            if (node.is('[data-type=\"column\"]') && node.closest('[data-type=row]').length === 0) {\n                                overlay.find('.remove').hide();\n                            } else {\n                                if (node.closest('[data-type=row]').children().length > 1) {\n                                    overlay.find('.remove').show();\n                                } else {\n                                    overlay.find('.remove').hide();\n                                }\n                            }\n                        }\n\n                        if (overlay.is('.node-hover-overlay')) {\n                            if (node.siblings().length === 0) {\n                                overlay.find('.remove').hide();\n                            } else {\n                                if (node.is(root.CP_Customizer.CONTENT_ELEMENTS)) {\n                                    overlay.find('.remove').show();\n                                } else {\n                                    overlay.find('.remove').hide();\n                                }\n                            }\n                        }\n\n                        if (overlay.is('.item-hover-overlay')) {\n                            if (node.closest('[data-type=row]').children().length > 1) {\n                                overlay.find('.remove').show();\n                            } else {\n                                overlay.find('.remove').hide();\n                            }\n                        }\n\n                    }\n\n                    var bounds = node[0].getBoundingClientRect();\n                    var scrollTop = root.CP_Customizer.preview.frame().pageYOffset;\n                    var scrollLeft = root.CP_Customizer.preview.frame().pageXOffset;\n                    overlay.css({\n                        left: (parseInt(bounds.left) + scrollLeft) + \"px\",\n                        top: (parseInt(bounds.top) + scrollTop) + \"px\"\n                    });\n\n                    overlay.css({\n                        width: node.outerWidth(),\n                        'position': 'absolute'\n                    });\n\n                    if (!cover) {\n                        overlay.css({\n                            height: 'auto',\n                            'background-color': ''\n                        });\n                    }\n\n                    overlay.children('.overlay-left, .overlay-right').css({\n                        height: node.outerHeight(),\n                        width: '0px'\n                    });\n                    overlay.children('.overlay-right').css({\n                        left: node.outerWidth() - 1,\n                        width: '0px'\n                    });\n                    overlay.children('.overlay-top, .overlay-bottom').css({\n                        height: '0px',\n                        width: node.outerWidth()\n                    });\n                    overlay.children('.overlay-bottom').css({\n                        top: node.outerHeight()\n                    });\n\n                    overlay.children('[align-bottom]').each(function () {\n                        $(this).css({\n                            top: node.outerHeight() - 5\n                        });\n                    });\n\n                    overlay.children('[align-top]').css({\n                        top: 0\n                    });\n\n                    overlay.children('[h-align-center]').each(function () {\n                        $(this).css({\n                            left: (node.outerWidth() - $(this).outerWidth()) / 2\n                        });\n                    });\n\n                },\n\n\n                updateAllOverlays: function (event) {\n                    var updateOnlySections = Array.from(arguments).length === 0;\n                    var update = function () {\n                        var $ = CP_Customizer.preview.jQuery();\n                        this.overlaysContainer.children().each(function () {\n                            var isSection = $(this).is('.section-overlay');\n\n                            if (updateOnlySections && !isSection) {\n                                return;\n                            }\n\n                            var node = $(this).data('node');\n                            if (node) {\n\n\n                                root.CP_Customizer.overlays.updateOverlay($(this), $(node), false, true);\n\n                                var isScrollEvent = event && event.type == 'scroll';\n\n                                if ($(this).is('.heatzone') && !isScrollEvent) {\n                                    $(this).removeClass('heatzone');\n                                }\n                                if (event === true) {\n                                    $(this).hide();\n                                }\n                            }\n                        });\n                    }.bind({\n                        overlaysContainer: root.CP_Customizer.overlays.overlaysContainer()\n                    });\n\n                    update();\n                    return true;\n                },\n\n                overlaysContainer: function () {\n                    var overlaysContainer = CP_Customizer.preview.find('#cp-overlays');\n\n                    if (!overlaysContainer.length) {\n                        overlaysContainer = CP_Customizer.preview.jQuery()('<div id=\"cp-overlays\"></div>');\n                        CP_Customizer.preview.find('body').append(overlaysContainer);\n                    }\n\n                    return overlaysContainer;\n                },\n\n                hoverOverlay: function () {\n                    var $ = root.CP_Customizer.preview.jQuery();\n                    var hoverOverlay = $('[data-overlay=\"cp-hoveroverlay\"]');\n\n                    if (hoverOverlay.length) {\n                        return hoverOverlay;\n                    }\n\n                    hoverOverlay = $('<div data-overlay=\"cp-hoveroverlay\" class=\"node-hover-overlay\"><div class=\"pen-overlay\"><svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 0 20 20\"><path d=\"M13.89 3.39l2.71 2.72c.46.46.42 1.24.03 1.64l-8.01 8.02-5.56 1.16 1.16-5.58s7.6-7.63 7.99-8.03c.39-.39 1.22-.39 1.68.07zm-2.73 2.79l-5.59 5.61 1.11 1.11 5.54-5.65zm-2.97 8.23l5.58-5.6-1.07-1.08-5.59 5.6z\"></path></svg></div><span title=\"' + root.CP_Customizer.translateCompanionString(\"Move element\") + '\" class=\"move\"></span><span title=\"' + root.CP_Customizer.translateCompanionString(\"Delete element\") + '\" class=\" remove\"></span><div class=\"overlay-top overlay-border\"></div><div class=\"overlay-left overlay-border\"></div><div class=\"overlay-right overlay-border\"></div><div class=\"overlay-bottom overlay-border\"></div></div>');\n\n                    root.CP_Customizer.overlays.overlaysContainer().append(hoverOverlay);\n                    hoverOverlay.hide();\n\n                    hoverOverlay.find('.remove').click(function () {\n                        root.CP_Customizer.preview.removeNode($(hoverOverlay.data('node')));\n                        hoverOverlay.hide();\n                    });\n\n                    hoverOverlay.find('.pen-overlay').unbind('click').click(function (event) {\n                        var $node = $(hoverOverlay.data('node'));\n\n                        if ($node.is('[data-focus-control]')) {\n                            var setting = wp.customize($node.attr('data-focus-control'));\n                            var control = setting ? setting.findControls()[0] : null;\n\n                            if (control) {\n                                control.focus();\n                                if (control.container.closest('.customizer-right-section').length) {\n                                    var sidebarID = control.container.closest('.customizer-right-section').attr('id').replace('-popup', '');\n                                    jQuery('[data-sidebar-container=\"' + sidebarID + '\"]').click();\n                                    // control.container.closest('.customizer-right-section').addClass('active');\n                                }\n                            }\n\n                            return;\n                        }\n\n                        if ($node.is('[data-widgets-area]')) {\n                            root.wp.customize.section('sidebar-widgets-' + $node.attr('data-widgets-area')).focus();\n                            return;\n                        }\n\n                        if ($node.is('hr')) {\n                            return;\n                        }\n\n                        if ($node.is('[data-content-shortcode]')) {\n                            var shortcodeData = CP_Customizer.parseShortcode($node.attr('data-content-shortcode'));\n                            CP_Customizer.hooks.doAction('shortcode_edit', $node, shortcodeData);\n                            CP_Customizer.hooks.doAction('shortcode_edit_' + shortcodeData.tag, $node, shortcodeData);\n                            return;\n                        }\n\n                        if (!$node.data('container-editable')) {\n                            $node.off();\n                            $(this).hide();\n                        }\n\n                        if ($node.is('[data-content-item-container=\"true\"]')) {\n                            $node = $node.children().eq(0);\n                        }\n\n                        $node.click();\n                        $node.data('cpFocused', true);\n\n                        if ($node.is(root.CP_Customizer.TEXT_ELEMENTS)) {\n                            $node.focus();\n\n                            _.delay(function () {\n                                root.CP_Customizer.preview.placeCursorAtEnd($node[0]);\n                            }, 5);\n\n                            CP_Customizer.hooks.doAction('text_element_clicked', $node);\n\n                            hoverOverlay.activateHeatZone();\n                        } else {\n                            CP_Customizer.hooks.doAction('element_clicked', $node);\n                        }\n\n                    });\n\n                    function findCenter($, el) {\n                        el = $(el);\n                        var o = el.offset();\n                        return {\n                            x: o.left + el.outerWidth() / 2,\n                            y: o.top + el.outerHeight() / 2\n                        };\n                    }\n\n                    function triggerDrag(el, ev) {\n                        var target = el,\n                            $ = root.CP_Customizer.preview.jQuery(),\n                            frame = root.CP_Customizer.preview.frame();\n\n                        var self = this,\n                            center = findCenter($, target),\n                            options = {},\n                            x = Math.floor(center.x),\n                            y = Math.floor(center.y),\n                            dx = options.dx || 0,\n                            dy = options.dy || 0;\n                        var coord = {\n                            clientX: x,\n                            clientY: y\n                        };\n\n                        var type = \"mousedown\";\n\n                        var e = $.extend({\n                            bubbles: true,\n                            cancelable: (type != \"mousemove\"),\n                            view: frame,\n                            detail: 0,\n                            screenX: 0,\n                            screenY: 0,\n                            clientX: 0,\n                            clientY: 0,\n                            ctrlKey: false,\n                            altKey: false,\n                            shiftKey: false,\n                            metaKey: false,\n                            button: 0,\n                            relatedTarget: el\n                        }, coord);\n\n                        // var relatedTarget = $(el).parent().data('node');\n\n                        var evt = document.createEvent(\"MouseEvents\");\n                        evt.initMouseEvent(type, e.bubbles, e.cancelable, e.view, e.detail,\n                            e.screenX, e.screenY, ev.clientX, ev.clientY,\n                            e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,\n                            e.button, null);\n\n                        el.dispatchEvent(evt);\n                    }\n\n\n                    var moveHandlerCallback = function ($handle, event) {\n\n                        if (event.which !== 1) {\n                            return;\n                        }\n\n                        var overlay = $handle.closest('.node-hover-overlay');\n\n                        var $node = $(hoverOverlay.data('node'));\n\n                        if ($node.siblings().length === 0) {\n                            return;\n                        }\n\n                        $node.blur();\n\n                        if ($node.data('reikidragging')) {\n                            overlay.attr('is-dragging', false);\n                            $node.data('reikidragging', false);\n                            return;\n                        }\n\n                        var $first = $node.parents('.ui-sortable').first();\n                        if ($first.data(\"ui-sortable\")) {\n                            $first.sortable('enable');\n                        }\n\n                        $node.data('reikidragging', true);\n                        overlay.attr('is-dragging', true);\n\n                        $('[contenteditable=\"true\"]').attr('contenteditable', false);\n                        $('[contenteditable=\"true\"]').blur();\n                        triggerDrag($node[0], event);\n                        root.CP_Customizer.isSorting = true;\n\n                        root.CP_Customizer.preview.hideTextElementCUI();\n                    };\n\n\n                    hoverOverlay.find('.move').off('mousedown.cp').on('mousedown.cp', function (event) {\n                        _(moveHandlerCallback).delay(50, $(this), event);\n                    });\n\n\n                    hoverOverlay.find('.move').off('mouseup.cp').on('mouseup.cp', function (event) {\n                        var overlay = $(this).closest('.node-hover-overlay');\n                        overlay.attr('is-dragging', false);\n                    });\n\n                    hoverOverlay.activateHeatZone = function () {\n                        var $this = $(this);\n                        $this.addClass('heatzone');\n\n                        var top = $this.find('.overlay-top'),\n                            left = $this.find('.overlay-left'),\n                            right = $this.find('.overlay-right'),\n                            bottom = $this.find('.overlay-bottom');\n\n                        if (top.find('.zone').length === 0) {\n                            top.append('<div class=\"zone\" />');\n                        }\n\n                        if (left.find('.zone').length === 0) {\n                            left.append('<div class=\"zone\" />');\n                        }\n\n                        if (right.find('.zone').length === 0) {\n                            right.append('<div class=\"zone\" />');\n                        }\n\n                        if (bottom.find('.zone').length === 0) {\n                            bottom.append('<div class=\"zone\" />');\n                        }\n\n                        var node = $this.data('node');\n                        var $node = CP_Customizer.preview.jQuery(node);\n\n                        var nodeRect = {\n                            top: $node.offset().top,\n                            bottom: $node.offset().top + node.offsetHeight,\n                            height: node.offsetHeight,\n                            left: node.getBoundingClientRect().left,\n                            right: node.getBoundingClientRect().left + node.offsetWidth,\n                            width: node.offsetWidth\n                        };\n\n                        var docHeight = $(node).closest('body').height();\n                        var docWidth = Math.min(CP_Customizer.preview.frame().innerWidth, CP_Customizer.preview.jQuery('html').width());\n\n\n                        top.find('.zone').css({\n                                height: nodeRect.top,\n                                width: docWidth,\n                                left: -1 * nodeRect.left\n                            }\n                        );\n\n                        bottom.find('.zone').css({\n                                height: docHeight - nodeRect.bottom,\n                                width: docWidth,\n                                left: -1 * nodeRect.left,\n                                top: '-1px'\n                            }\n                        );\n\n                        left.find('.zone').css({\n                                height: nodeRect.height,\n                                width: nodeRect.left\n                                //top: -1 * nodeRect.top - nodeRect.height / 2\n                            }\n                        );\n\n                        right.find('.zone').css({\n                                height: nodeRect.height,\n                                width: docWidth - nodeRect.right\n                                // top: -1 * nodeRect.top - nodeRect.height / 2\n                            }\n                        );\n\n                        hoverOverlay.off('click.zone').on('click.zone', '.zone', function (event) {\n                            hoverOverlay.removeClass('heatzone');\n\n                            event.preventDefault();\n                            event.stopPropagation();\n\n                            var x = event.clientX,\n                                y = event.clientY,\n                                elementMouseIsOver = CP_Customizer.preview.frame().document.elementFromPoint(x, y);\n\n                            //\n                            hoverOverlay.addClass('heatzone');\n                            CP_Customizer.preview.blur();\n                            _.delay(function () {\n                                hoverOverlay.removeClass('heatzone');\n                                CP_Customizer.preview.jQuery(elementMouseIsOver).trigger('mouseover');\n                            }, 10);\n                            return false;\n                        });\n                    };\n\n                    // hoverOverlay.deactivateHeatZone = function () {\n                    //     hoverOverlay.removeClass('heatzone');\n                    // };\n\n                    return hoverOverlay;\n\n                },\n\n                rowItemHoverOverlay: function () {\n                    var $ = root.CP_Customizer.preview.jQuery();\n                    var itemHoverOverlay = $('[data-overlay=\"cp-item-hover-overlay\"]');\n\n                    if (itemHoverOverlay.length) {\n                        return itemHoverOverlay;\n                    }\n\n                    itemHoverOverlay = $('<div data-overlay=\"cp-item-hover-overlay\" class=\"item-hover-overlay\"> <div h-align-right title=\"' + root.CP_Customizer.translateCompanionString(\"Delete item\") + '\" class=\"remove\"></div> </div>');\n\n                    root.CP_Customizer.overlays.overlaysContainer().append(itemHoverOverlay);\n\n                    itemHoverOverlay.hide();\n\n                    itemHoverOverlay.find('.remove').click(function () {\n                        var node = $(itemHoverOverlay.data('node'));\n                        root.CP_Customizer.preview.removeNode(node);\n                        root.CP_Customizer.hooks.doAction('section_list_item_refresh');\n                        itemHoverOverlay.hide();\n                    });\n\n                    return itemHoverOverlay;\n                },\n\n\n                addOverlay: function () {\n\n                    var $ = root.CP_Customizer.preview.jQuery();\n                    var addOverlay = $('[data-overlay=\"cp-addoverlay\"]');\n\n                    if (addOverlay.length) {\n                        return addOverlay;\n                    }\n\n                    addOverlay = $('<div data-overlay=\"cp-addoverlay\" class=\"add-content-overlay\"><div class=\"buttons\" align-bottom h-align-center><div class=\"add\" title=\"' + root.CP_Customizer.translateCompanionString(\"Add element\") + '\">' + root.CP_Customizer.translateCompanionString(\"Add element\") + '</div></div></div>');\n                    root.CP_Customizer.overlays.overlaysContainer().append(addOverlay);\n                    addOverlay.hide();\n\n                    //addOverlay.find('.add').prepend('<div class=\"add-element-bubble\"><div class=\"elements-container\"></div><i class=\"element-bubble-close\"></i></div>');\n                    // let's add the close button in a future update\n                    addOverlay.find('.add').prepend('<div class=\"add-element-bubble\"><div class=\"elements-container\"></div></div>');\n\n\n                    addOverlay.find('.add').click(function (event) {\n                        addOverlay.find('.add').find('.add-element-bubble').toggleClass('visible');\n                    });\n\n                    root.CP_Customizer.content.addContentItemsTo(addOverlay.find('.elements-container'));\n\n                    addOverlay.find('.elements-container').on('cp-insert-content-item', function (event, type, insertHandler) {\n                        event.preventDefault();\n                        var $node = $(addOverlay.data('node'));\n                        var index = $node.children().length;\n\n                        insertHandler(type, $node, index, after);\n\n                        function after($node) {\n                            root.CP_Customizer.preview.decorateElements($node);\n                            root.CP_Customizer.overlays.updateOverlay(addOverlay, $(addOverlay.data('node')));\n                            CP_Customizer.renderNodeShortcodes($node);\n                            // CP_Customizer.hooks.doAction('after_node_insert', $node);\n                        }\n                    });\n\n                    return addOverlay;\n                },\n\n                assignNode: function (overlay, node, cover) {\n                    var $ = root.CP_Customizer.preview.jQuery();\n                    if (overlay.attr('is-dragging') && overlay.attr('is-dragging') === \"true\") {\n                        return;\n                    }\n                    if ($(overlay.data('node')).is(node)) {\n                        return;\n                    } else {\n                        /*if (overlay.data('node') && overlay.data('node').ownerDocument.activeElement == overlay.data('node')) {\n                            debugger;\n                        $(overlay.data('node')).blur();\n                        }*/\n                    }\n\n                    overlay.data('node', $(node)[0]);\n\n                    function updateOverlay() {\n                        root.CP_Customizer.overlays.updateOverlay(overlay, $(node), cover);\n                    }\n\n                    overlay.on('reiki.update_overlays', '*', function (event) {\n                        setTimeout(updateOverlay, 0);\n                    });\n\n                    root.CP_Customizer.preview.hideTextElementCUI();\n                    updateOverlay();\n                },\n\n                hideMovableOverlays: function () {\n                    CP_Customizer.overlays.addOverlay().hide();\n                    CP_Customizer.overlays.hoverOverlay().hide();\n                    CP_Customizer.overlays.rowItemHoverOverlay().hide()\n                }\n\n            }\n            ,\n\n            content: {\n                __registeredItems: {\n                    'link':\n                        {\n                            icon: 'mdi-link-variant',\n                            tooltip: translateCompanionString('link'),\n                            data:\n                            '<a class=\"link\" data-cpid=\"new\" data-container-editable=\"true\" data-content-code-editable href=\"#\">' + translateCompanionString('new link') + '</a>',\n                            'after': function ($item) {\n                                $item.unbind('click').click(function (event) {\n                                    event.preventDefault();\n                                    event.stopImmediatePropagation();\n                                    event.stopPropagation();\n\n                                    if ($(this).is('[data-container-editable]') || $(this).is('[data-type=group]')) {\n                                        CP_Customizer.preview.editContainerData.apply(this);\n                                    }\n\n                                    return false;\n                                });\n                            }\n                        }\n                    ,\n                    'button':\n                        {\n                            icon: 'mdi-open-in-new',\n                            tooltip: translateCompanionString('button'),\n                            data:\n                            '<a data-cpid=\"new\" data-container-editable=\"true\" data-content-code-editable class=\"button blue\" href=\"#\">' + translateCompanionString('new button') + '</a>',\n                            'after': function ($item) {\n                                $item.unbind('click').click(function (event) {\n                                    event.preventDefault();\n                                    event.stopImmediatePropagation();\n                                    event.stopPropagation();\n\n                                    if ($(this).is('[data-container-editable]') || $(this).is('[data-type=group]')) {\n                                        CP_Customizer.preview.editContainerData.apply(this);\n                                    }\n\n                                    return false;\n                                });\n                            }\n                        }\n                    ,\n                    'heading':\n                        {\n                            icon: 'mdi-format-header-pound larger',\n                            tooltip: translateCompanionString('heading'),\n                            items:\n                                function () {\n                                    var result = {};\n                                    for (var i = 1; i <= 6; i++) {\n                                        result['h' + i] = {\n                                            label: \"H\" + i,\n                                            data: '<h' + i + '>' + translateCompanionString(\"Heading\") + ' ' + i + '</h' + i + '>',\n                                            tooltip: translateCompanionString('Heading') + ' ' + i\n                                        };\n                                    }\n\n                                    return result;\n                                }\n                        }\n                    ,\n\n                    'lead':\n                        {\n                            icon: 'mdi-format-align-left',\n                            tooltip: translateCompanionString('lead'),\n                            data:\n                                '<p data-cpid=\"new\" class=\"lead\" data-content-editable=\"true\" contenteditable=\"true\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>'\n                        }\n                    ,\n\n                    'paragraph':\n                        {\n                            icon: 'mdi-format-paragraph larger',\n                            tooltip: translateCompanionString('paragraph'),\n                            data:\n                                '<p data-cpid=\"new\" data-content-editable=\"true\" contenteditable=\"true\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>'\n                        }\n                    ,\n\n                    'image':\n                        {\n                            icon: 'mdi-image-area big',\n                            tooltip: translateCompanionString('image'),\n                            data:\n                                '<img data-cpid=\"new\" class=\"custom-image\" data-content-code-editable=\"true\" data-content-editable=\"true\" contenteditable=\"true\" src=\"#\"/>'\n                        }\n                    // ,\n\n                    // 'icon':\n                    //     {\n                    //         icon: 'mdi-adjust',\n                    //         items:\n                    //             function () {\n                    //                 var result = {};\n                    //                 for (var i = 1; i <= 6; i++) {\n                    //                     result['mdi' + i] = {\n                    //                         icon: 'mdi-flag mdi' + i,\n                    //                         data: '<i class=\"mdi cp-icon mdi' + i + ' mdi-adjust\"></i>',\n                    //                         tooltip: \"Font Icon \" + i\n                    //                     };\n                    //                 }\n                    //\n                    //                 return result;\n                    //             }\n                    //     }\n                    // ,\n                    // 'separator':\n                    //     {\n                    //         'icon':\n                    //             \"mdi-adjust\",\n                    //         data:\n                    //             '<div class=\"spacer\" data-type=\"group\"><span class=\"mdi before\"></span><i data-content-code-editable=\"true\" class=\"mdi mdi-adjust\"></i><span class=\"mdi after\"></span></div>'\n                    //     }\n                },\n\n                registerItem: function (data) {\n\n                    if (data) {\n                        for (var key in data) {\n                            if (data[key].contentElementSelector) {\n                                CP_Customizer.addContentElementsSelectors(data[key].contentElementSelector);\n                            }\n                        }\n                    }\n\n                    _.extend(this.__registeredItems, data);\n                },\n\n                getItemData: function (type) {\n                    types = type.split('.');\n                    var start = this.__registeredItems;\n\n                    for (var i = 0; i < types.length; i++) {\n                        var _type = types[i];\n\n                        if (i + 1 < types.length) {\n                            var _items = start[_type].items;\n                            if (_(_items).isFunction()) {\n                                _items = _items.call();\n\n                            }\n                            start = _items;\n                        } else {\n                            return start[_type].data;\n                        }\n                    }\n                },\n\n                getItemAfter: function (type) {\n                    types = type.split('.');\n                    var start = this.__registeredItems;\n\n                    for (var i = 0; i < types.length; i++) {\n                        var _type = types[i];\n\n                        if (i + 1 < types.length) {\n                            var _items = start[_type].items;\n                            if (_(_items).isFunction()) {\n                                _items = _items.call();\n\n                            }\n                            start = _items;\n                        } else {\n                            return start[_type].after;\n                        }\n                    }\n                },\n\n                getContentItems: function (data, subitems, parentId) {\n                    data = data || this.__registeredItems;\n                    subitems = subitems || false;\n                    var self = this;\n                    var $result = $(\"<div />\");\n                    $.each(data, function (id, option) {\n                        var title = option.toolip || option.tooltip || id; // || for old typo :D\n                        var idAttr = parentId ? parentId + \".\" + id : id;\n                        var _item = $('<i class=\"mdi ' + (option.icon || \"\") + '\" title=\"' + title + '\" data-' + (option.items ? \"parent\" : \"content\") + '-id=\"' + idAttr + '\"></i>');\n\n                        if (option.label) {\n                            _item.append('<span class=\"item-label\">' + option.label + '</span>');\n                        }\n\n                        if (option.items) {\n\n                            var _items = option.items;\n\n                            if (_(_items).isFunction()) {\n                                _items = option.items.call();\n                            }\n\n                            var subitemsContainer = $('<div class=\"subitems-container\" />');\n                            subitemsContainer.append(self.getContentItems(_items, true, idAttr));\n                            _item.append(subitemsContainer);\n                        }\n\n                        $result.append(_item);\n                    });\n\n                    return $result.html();\n\n                },\n\n\n                addContentItemsTo: function ($container) {\n                    $container.append(CP_Customizer.content.getContentItems());\n                    var self = this;\n                    $container.off('click.cp-new-content').on('click.cp-new-content', 'i.mdi[data-content-id]', function (event) {\n                        event.preventDefault();\n                        event.stopPropagation();\n\n                        var node_type = $(this).data('content-id');\n                        $container.trigger('cp-insert-content-item', [node_type, self.insertNewContent]);\n                    });\n\n                    $container.off('click.cp-new-parent').on('click.cp-new-parent', 'i.mdi[data-parent-id]', function (event) {\n                        event.preventDefault();\n                        event.stopPropagation();\n                        $(this).toggleClass('expanded');\n                        $(this).siblings().removeClass('expanded');\n                    });\n                },\n\n                insertNewContent: function (type, $container, index, after) {\n                    var $ = CP_Customizer.preview.jQuery();\n                    var $new = $(CP_Customizer.content.getItemData(type));\n                    var itemAfter = CP_Customizer.content.getItemAfter(type);\n                    CP_Customizer.preview.insertNode($new, $container, index);\n                    setTimeout(function () {\n                        $new.trigger('click');\n                        if (_(after).isFunction()) {\n                            after($new);\n\n\n                        }\n                        if (_.isFunction(itemAfter)) {\n                            itemAfter($new);\n                        }\n                    }, 100);\n                }\n            }\n\n        }\n    ;\n\n    CP_Customizer = _.extend(CP_Customizer, {\n        closePopUps: root.Materialis.closePopUps,\n        popUp: root.Materialis.popUp,\n        openRightSidebar: root.Materialis.openRightSidebar,\n        hideRightSidebar: root.Materialis.hideRightSidebar,\n\n    });\n    top.CP_Customizer = root.CP_Customizer = CP_Customizer;\n\n\n    var previewLoadedMessageCallback = function (event) {\n        if (event.data === 'cloudpress_update_customizer') {\n\n            if (root.__isCPChangesetPreview) {\n                CP_Customizer.preview.jQuery('html').addClass('cp__changeset__preview');\n                return;\n            }\n\n            setTimeout(function () {\n                CP_Customizer.hideLoader();\n                CP_Customizer.preview.frame().wp.customize.preview.bind('loading-initiated', function () {\n                    CP_Customizer.showLoader();\n                    CP_Customizer.trigger('PREVIEW_LOADING_START');\n                });\n\n            }, 300);\n\n            _(CP_Customizer).extend(window.cpCustomizerGlobal);\n            CP_Customizer.trigger('PREVIEW_LOADED');\n\n            CP_Customizer.preview.addContentBinds();\n\n            CP_Customizer.preview.jQuery('a').on('click', function (event) {\n                event.preventDefault();\n                event.stopPropagation();\n            });\n\n            CP_Customizer.preview.decorateMods();\n            CP_Customizer.preview.decorateElements();\n\n\n            // make the save button use CP_Customizer save wrapper\n            $(root.document).find('input#save').unbind('click').bind('click', function (event) {\n\n                event.preventDefault();\n                event.stopPropagation();\n                root.CP_Customizer.save();\n            });\n\n        }\n    };\n\n    root.addEventListener('message', previewLoadedMessageCallback);\n\n\n    $(root).bind('keydown', function (event) {\n        if (event.ctrlKey || event.metaKey) {\n            var key = String.fromCharCode(event.which).toLowerCase();\n            if (key === \"s\") {\n                event.preventDefault();\n                event.stopPropagation();\n                root.CP_Customizer.save();\n            }\n        }\n    });\n\n    $(root.document).find('input#save').unbind('click').bind('click', function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n        root.CP_Customizer.save();\n    });\n\n\n    $(root.document).ready(function () {\n\n        for (var i = 0; i < CP_Customizer.__modules.length; i++) {\n            var callback = CP_Customizer.__modules[i];\n            callback(CP_Customizer);\n        }\n\n        CP_Customizer.__modulesLoaded = true;\n        CP_Customizer.trigger('DOCUMENT_READY');\n    });\n\n    // UTILS\n\n    function getTitleElement(name, node, category) {\n        var label = \"\";\n        if (typeof name === \"function\") {\n            label = name(node);\n        } else {\n            if (!_.isUndefined(name)) {\n                label = name;\n            } else {\n                return \"\";\n            }\n        }\n\n        return \"<span data-category=\\\"\" + category + \"\\\" class=\\\"cog-item title\\\">\" + label + \"</span>\";\n    }\n\n    function getButtonElement(itemData, node, category) {\n        var template = '<span data-category=\"' + category + '\" class=\"cog-item ' + (itemData.classes || \"\") + '\"></span>';\n\n        var $button = $(template).attr({\n            'data-name': (itemData.name || 'button')\n        });\n        $button.text(itemData.title || 'Button');\n\n\n        // key is event handler\n        $.each(itemData, function (key, data) {\n            if (key === 'on_hover') {\n                var callbackIn = function () {\n                    data[0].call($button, node);\n                };\n                var callbackOut = function () {\n\n                    data[1].call($button, node);\n                };\n                $button.hover(callbackIn, callbackOut);\n\n            } else if (key.indexOf('on_') === 0) {\n                var ev = key.replace('on_', '');\n                var callback = function (event) {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    data.call($button, node);\n                };\n                $button.bind(ev, callback);\n            }\n        });\n\n        return $button;\n    }\n\n    function getItemsElements(itemsArray, node, category) {\n        result = [];\n        for (var i = 0; i < itemsArray.length; i++) {\n            var itemData = itemsArray[i];\n            var $item = getButtonElement(itemData, node, category);\n            result.push($item);\n        }\n        return result;\n    }\n\n})(jQuery, window);\n","(function ($) {\n\n    // source: https://github.com/andymantell/node-wpautop\n    function _autop_newline_preservation_helper(matches) {\n        return matches[0].replace(\"\\n\", \"<WPPreserveNewline />\");\n    };\n\n    function wpautop(pee, br) {\n        if (typeof(br) === 'undefined') {\n            br = true;\n        }\n\n        var pre_tags = {};\n        if (pee.trim() === '') {\n            return '';\n        }\n\n        pee = pee + \"\\n\"; // just to make things a little easier, pad the end\n        if (pee.indexOf('<pre') > -1) {\n            var pee_parts = pee.split('</pre>');\n            var last_pee = pee_parts.pop();\n            pee = '';\n            pee_parts.forEach(function (pee_part, index) {\n                var start = pee_part.indexOf('<pre');\n\n                // Malformed html?\n                if (start === -1) {\n                    pee += pee_part;\n                    return;\n                }\n\n                var name = \"<pre wp-pre-tag-\" + index + \"></pre>\";\n                pre_tags[name] = pee_part.substr(start) + '</pre>';\n                pee += pee_part.substr(0, start) + name;\n\n            });\n\n            pee += last_pee;\n        }\n\n        pee = pee.replace(/<br \\/>\\s*<br \\/>/, \"\\n\\n\");\n\n        // Space things out a little\n        var allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)';\n        pee = pee.replace(new RegExp('(<' + allblocks + '[^>]*>)', 'gmi'), \"\\n$1\");\n        pee = pee.replace(new RegExp('(</' + allblocks + '>)', 'gmi'), \"$1\\n\\n\");\n        pee = pee.replace(/\\r\\n|\\r/, \"\\n\"); // cross-platform newlines\n\n        if (pee.indexOf('<option') > -1) {\n            // no P/BR around option\n            pee = pee.replace(/\\s*<option'/gmi, '<option');\n            pee = pee.replace(/<\\/option>\\s*/gmi, '</option>');\n        }\n\n        if (pee.indexOf('</object>') > -1) {\n            // no P/BR around param and embed\n            pee = pee.replace(/(<object[^>]*>)\\s*/gmi, '$1');\n            pee = pee.replace(/\\s*<\\/object>/gmi, '</object>');\n            pee = pee.replace(/\\s*(<\\/?(?:param|embed)[^>]*>)\\s*/gmi, '$1');\n        }\n\n        if (pee.indexOf('<source') > -1 || pee.indexOf('<track') > -1) {\n            // no P/BR around source and track\n            pee = pee.replace(/([<\\[](?:audio|video)[^>\\]]*[>\\]])\\s*/gmi, '$1');\n            pee = pee.replace(/\\s*([<\\[]\\/(?:audio|video)[>\\]])/gmi, '$1');\n            pee = pee.replace(/\\s*(<(?:source|track)[^>]*>)\\s*/gmi, '$1');\n        }\n\n        pee = pee.replace(/\\n\\n+/gmi, \"\\n\\n\"); // take care of duplicates\n\n        // make paragraphs, including one at the end\n        var pees = pee.split(/\\n\\s*\\n/);\n        pee = '';\n        pees.forEach(function (tinkle) {\n            pee += '<p>' + tinkle.replace(/^\\s+|\\s+$/g, '') + \"</p>\\n\";\n        });\n\n        pee = pee.replace(/<p>\\s*<\\/p>/gmi, ''); // under certain strange conditions it could create a P of entirely whitespace\n        pee = pee.replace(/<p>([^<]+)<\\/(div|address|form)>/gmi, \"<p>$1</p></$2>\");\n        pee = pee.replace(new RegExp('<p>\\s*(</?' + allblocks + '[^>]*>)\\s*</p>', 'gmi'), \"$1\", pee); // don't pee all over a tag\n        pee = pee.replace(/<p>(<li.+?)<\\/p>/gmi, \"$1\"); // problem with nested lists\n        pee = pee.replace(/<p><blockquote([^>]*)>/gmi, \"<blockquote$1><p>\");\n        pee = pee.replace(/<\\/blockquote><\\/p>/gmi, '</p></blockquote>');\n        pee = pee.replace(new RegExp('<p>\\s*(</?' + allblocks + '[^>]*>)', 'gmi'), \"$1\");\n        pee = pee.replace(new RegExp('(</?' + allblocks + '[^>]*>)\\s*</p>', 'gmi'), \"$1\");\n\n        if (br) {\n            pee = pee.replace(/<(script|style)(?:.|\\n)*?<\\/\\\\1>/gmi, _autop_newline_preservation_helper); // /s modifier from php PCRE regexp replaced with (?:.|\\n)\n            pee = pee.replace(/(<br \\/>)?\\s*\\n/gmi, \"<br />\\n\"); // optionally make line breaks\n            pee = pee.replace('<WPPreserveNewline />', \"\\n\");\n        }\n\n        pee = pee.replace(new RegExp('(</?' + allblocks + '[^>]*>)\\s*<br />', 'gmi'), \"$1\");\n        pee = pee.replace(/<br \\/>(\\s*<\\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)/gmi, '$1');\n        pee = pee.replace(/\\n<\\/p>$/gmi, '</p>');\n\n        if (Object.keys(pre_tags).length) {\n            pee = pee.replace(new RegExp(Object.keys(pre_tags).join('|'), \"gi\"), function (matched) {\n                return pre_tags[matched];\n            });\n        }\n\n        return pee;\n    };\n\n    CP_Customizer.addModule(function (CP_Customizer) {\n        CP_Customizer.utils = CP_Customizer.utils || {};\n\n        CP_Customizer.utils.wpautop = function (value) {\n            value = wpautop(value);\n\n            if (jQuery(value).length === 1) {\n                return jQuery(value).html();\n            }\n\n            return value;\n\n        };\n\n\n        CP_Customizer.utils.phpTrim = function (str, charlist) {\n\n            var whitespace = [\n                ' ',\n                '\\n',\n                '\\r',\n                '\\t',\n                '\\f',\n                '\\x0b',\n                '\\xa0',\n                '\\u2000',\n                '\\u2001',\n                '\\u2002',\n                '\\u2003',\n                '\\u2004',\n                '\\u2005',\n                '\\u2006',\n                '\\u2007',\n                '\\u2008',\n                '\\u2009',\n                '\\u200a',\n                '\\u200b',\n                '\\u2028',\n                '\\u2029',\n                '\\u3000'\n            ].join('');\n\n            var l = 0;\n            var i = 0;\n            str += '';\n\n            if (charlist) {\n                whitespace = (charlist + '').replace(/([[\\]().?/*{}+$^:])/g, '$1')\n            }\n            l = str.length\n            for (i = 0; i < l; i++) {\n                if (whitespace.indexOf(str.charAt(i)) === -1) {\n                    str = str.substring(i)\n                    break\n                }\n            }\n            l = str.length\n            for (i = l - 1; i >= 0; i--) {\n                if (whitespace.indexOf(str.charAt(i)) === -1) {\n                    str = str.substring(0, i + 1)\n                    break\n                }\n            }\n            return whitespace.indexOf(str.charAt(0)) === -1 ? str : ''\n        };\n\n        CP_Customizer.utils.normalizeBackgroundImageValue = function (value) {\n            value = value.replace(/url\\((.*)\\)/, \"$1\");\n            return CP_Customizer.utils.phpTrim(value, \"\\\"'\");\n        };\n\n\n        CP_Customizer.utils.htmlDecode = function (value) {\n            var result = $('<div/>').html(value).text();\n            return result;\n        };\n\n        CP_Customizer.utils.htmlEscape = function (str) {\n            return str\n                .replace(/&/g, '&amp;')\n                .replace(/\"/g, '&quot;')\n                .replace(/'/g, '&#39;')\n                .replace(/</g, '&lt;')\n                .replace(/>/g, '&gt;');\n        };\n\n\n        var htmlEntityMap = {\n            '&': '&amp;',\n            '<': '&lt;',\n            '>': '&gt;',\n            '\"': '&quot;',\n            \"'\": '&#39;',\n            '/': '&#x2F;',\n            '`': '&#x60;',\n            '=': '&#x3D;'\n        };\n\n        CP_Customizer.utils.htmlUnescape = function (str) {\n\n            for (var item in htmlEntityMap) {\n                var regExp = new RegExp(htmlEntityMap[item], 'g');\n                str = str.replace(regExp, item);\n            }\n\n            return str;\n        };\n\n\n        CP_Customizer.utils.setToPath = function (schema, path, value) {\n\n            if (!schema) {\n                return schema;\n            }\n\n            if (_.isString(schema)) {\n                schema = CP_Customizer.utils.normalizeValue(schema);\n            }\n\n            var pList = path.split('.');\n            var len = pList.length;\n\n            if (len > 1) {\n                var first = pList.shift();\n                var remainingPath = pList.join('.');\n                schema[first] = CP_Customizer.utils.setToPath(schema[first], remainingPath, value);\n            } else {\n                schema[path] = value;\n            }\n\n            return schema;\n        };\n\n        CP_Customizer.utils.normalizeShortcodeString = function (shortcode) {\n            shortcode = CP_Customizer.utils.htmlDecode(shortcode);\n\n            return '[' + CP_Customizer.utils.phpTrim(shortcode) + ']';\n        };\n\n        CP_Customizer.utils.getSpectrumColorFormated = function ($spectrumElement) {\n            var value = $spectrumElement.spectrum('get');\n\n\n            if (!value) {\n                return value;\n            }\n\n            if (value.getAlpha() < 1) {\n                return \"rgba(\" + value._r + \",\" + value._g + \",\" + value._b + \",\" + value._a + \")\";\n            } else {\n                return value.toHexString();\n            }\n        };\n\n        CP_Customizer.utils.normalizeValue = function (value, convertToArray) {\n\n\n            if (_.isString(value)) {\n\n                try {\n                    value = decodeURI(value);\n\n                } catch (e) {\n\n                }\n\n                try {\n                    value = JSON.parse(value);\n\n                } catch (e) {\n\n                }\n\n            }\n\n            if (_.isObject(value) && convertToArray) {\n                var hasOnlyNumberKeys = _.keys(value).map(function (k) {\n                    return _.isNumber(parseInt(k))\n                }).reduce(function (a, b) {\n                    return (a && b);\n                }, true);\n\n                if (hasOnlyNumberKeys) {\n                    var newValue = [];\n                    _.keys(value).forEach(function (k) {\n\n                        if (_.isUndefined(value[k])) {\n                            return;\n                        }\n\n                        newValue.push(value[k]);\n                    });\n\n                    value = newValue;\n                }\n            }\n\n            return value;\n        };\n\n        CP_Customizer.utils.getValue = function (component) {\n            var value = undefined;\n\n            if (component instanceof CP_Customizer.wpApi.Control) {\n                value = component.setting.get();\n            }\n\n            if (component instanceof CP_Customizer.wpApi.Setting) {\n                value = component.get();\n            }\n\n            if (_.isString(component)) {\n                value = CP_Customizer.wpApi(component).get();\n            }\n\n            if (_.isString(value)) {\n\n                try {\n                    value = decodeURI(value);\n\n                } catch (e) {\n\n                }\n\n                try {\n                    value = JSON.parse(value);\n                } catch (e) {\n\n                }\n\n            }\n\n            return value;\n        };\n\n        CP_Customizer.utils.deepClone = function (toClone, asArray) {\n            var result = jQuery.extend(true, {}, toClone);\n            if (asArray) {\n                result = _.toArray(result);\n            }\n            return result;\n        };\n\n        CP_Customizer.utils.cssValueNumber = function (value) {\n            var matches = value.match(/\\d+(.\\d+)?/);\n\n            if (!matches || !_.isArray(matches)) {\n                return null;\n            }\n\n            return matches.shift();\n        };\n\n        CP_Customizer.utils.arrayChunk = function (bigArray, perGroup) {\n            perGroup = perGroup || 5;\n            var result = _.groupBy(bigArray, function (element, index) {\n                return Math.floor(index / perGroup);\n            });\n\n            return _.toArray(result);\n        };\n\n        CP_Customizer.utils.normalizeClassAttr = function (classes, asSelector) {\n            classes = classes.split(' ').filter(function (item) {\n                return (item.trim().length > 0);\n            });\n\n            if (asSelector) {\n                return (classes.length ? '.' + classes.join('.') : '');\n            } else {\n                return classes.join(' ');\n            }\n        };\n\n        CP_Customizer.utils.getFileInfo = function (url) {\n            var filename = url.substring(url.lastIndexOf(\"/\") + 1, url.lastIndexOf(\".\"));\n            var parts = url.split(\"/\" + filename)[0];\n            var path = parts[0];\n            var extension = parts.length > 1 ? parts[1].split('/')[0] : '';\n\n            return {\n                path: path,\n                file: filename + (extension ? '.' + extension : extension),\n                filename: filename,\n                extension: extension\n            }\n        };\n\n        var imageExtensions = [\"tif\", \"tiff\", \"gif\", \"jpeg\", \"jpg\", \"jif\", \"jfif\", \"jp2\", \"jpx\", \"j2k\", \"j2c\", \"fpx\", \"pcd\", \"png\", \"pdf\", \"bmp\", \"ico\"];\n        CP_Customizer.utils.isImageFile = function (url) {\n            var fileInfo = CP_Customizer.utils.getFileInfo(url);\n\n            return (imageExtensions.indexOf(fileInfo.extension) !== -1);\n\n        };\n\n        // https://stackoverflow.com/a/13896633\n        // TODO: make work with ?x[a]=2&x[b]=3\n        CP_Customizer.utils.parseUrlQuery = function (str) {\n            if (typeof str !== \"string\" || str.length === 0) return {};\n            var s = str.split(\"&\");\n            var s_length = s.length;\n            var bit, query = {}, first, second;\n            for (var i = 0; i < s_length; i++) {\n                bit = s[i].split(\"=\");\n                first = decodeURIComponent(bit[0]);\n                if (first.length === 0) continue;\n                second = decodeURIComponent(bit[1]);\n                if (typeof query[first] === \"undefined\") query[first] = second;\n                else if (query[first] instanceof Array) query[first].push(second);\n                else query[first] = [query[first], second];\n            }\n            return query;\n        };\n\n\n        CP_Customizer.utils.stringifyUrlQuery = function (query) {\n            var queryString = \"\";\n            for (var key in query) {\n\n                if (!query.hasOwnProperty(key)) {\n                    continue;\n                }\n\n                var data = query[key];\n\n                if (!_.isUndefined(data)) {\n                    if (_.isString(data)) {\n                        queryString += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(data);\n                    }\n\n                    if (_.isArray(data)) {\n                        for (var i = 0; i < data.length; i++) {\n                            queryString += '&' + encodeURIComponent(key) + '[' + i + ']=' + encodeURIComponent(data[i]);\n                        }\n                    }\n\n                } else {\n                    queryString += '&' + encodeURIComponent(key);\n                }\n            }\n\n            if (queryString.length) {\n                queryString = '?' + CP_Customizer.utils.phpTrim(queryString, '&');\n            }\n\n            return queryString;\n        };\n\n        CP_Customizer.utils.parseURL = function (url) {\n            var location = ((url.split('?')[0] || '').split('#')[0] || ''),\n                queryString = (url.indexOf('?') !== -1) ? url.split('?').pop().split('#')[0] : '',\n                query = CP_Customizer.utils.parseUrlQuery(queryString),\n                hash = (url.indexOf('#') !== -1) ? url.replace(/(.*)#/, '').trim() : '';\n\n            return {\n                location: location.replace(/\\/$/, ''),\n                query: query,\n                hash: hash.length ? '#' + hash : ''\n            }\n\n        };\n\n        CP_Customizer.utils.removeUrlQueryStrings = function (url, strings) {\n            var parsedUrl = CP_Customizer.utils.parseURL(url),\n                hash = parsedUrl.hash,\n                queryKeys = Object.getOwnPropertyNames(parsedUrl.query),\n                query = {};\n\n            for (var i = 0; i < queryKeys.length; i++) {\n                var key = queryKeys[i];\n                if (strings.indexOf(key) === -1) {\n                    query[key] = parsedUrl.query[key];\n                }\n            }\n\n            var queryString = CP_Customizer.utils.stringifyUrlQuery(query);\n\n            if (!queryString.length) {\n                queryString = \"/\";\n            }\n\n            return parsedUrl.location + queryString + hash;\n        };\n\n        CP_Customizer.utils.nodeMatchingClasses = function (node, classList, firstMatchOnly) {\n\n            if (!$(node).length) {\n                if (firstMatchOnly) {\n                    return undefined;\n                }\n                return [];\n            }\n\n            result = Array.from($(node)[0].classList).filter(function (_class) {\n                return (classList.indexOf(_class) !== -1);\n            });\n\n            if (firstMatchOnly) {\n                if (result.length) {\n                    result = result[0];\n                } else {\n                    result = undefined;\n                }\n            }\n\n            return result;\n        };\n\n        CP_Customizer.utils.colorInArray = function (colorsArray, color, includeAlpha) {\n            var inArray = false;\n            color = tinycolor(color);\n\n            for (var i = 0; i < colorsArray.length; i++) {\n\n                var _color = tinycolor(colorsArray[i]);\n                inArray = (color._r === _color._r) && (color._g === _color._g) && (color._b === _color._b);\n\n                if (includeAlpha) {\n                    inArray = inArray && (color._a === _color._a);\n                }\n\n                if (inArray) {\n                    break;\n                }\n            }\n\n            return inArray;\n\n        }\n\n        CP_Customizer.utils.valueToBool = function (value) {\n            if (_.isBoolean(value)) {\n                return value;\n            }\n\n            if (_.isString(value)) {\n\n                var _v = value.toLowerCase();\n                if (_v === \"yes\" || _v === \"true\") {\n                    return true;\n                }\n\n                if (_v === \"no\" || _v === \"false\") {\n                    return false;\n                }\n            }\n\n\n            if (!isNaN(value)) {\n                return !!parseInt(value);\n            }\n\n            return !!value;\n        }\n\n\n        CP_Customizer.utils.convertColor = {\n            toRGB: function (color) {\n                return tinycolor(color).toRgbString();\n            },\n            toRGBA: function (color, alpha) {\n                return tinycolor(color).setAlpha(alpha).toRgbString();\n            },\n            toHex: function (color) {\n                return tinycolor(color).toHexString();\n            },\n            brighten: function (color, value) {\n                return tinycolor(color).brighten(value).toRgbString();\n            }\n        }\n\n        CP_Customizer.hasClass = function (element, classes) {\n            var elementClasses = Array.from($(element)[0].classList);\n        }\n    });\n})(jQuery);\n","(function ($, CP_Customizer) {\n    CP_Customizer.addModule(function () {\n        var used = false;\n        var usedWoo = false;\n        CP_Customizer.bind(CP_Customizer.events.PREVIEW_LOADED, function () {\n\n            // if front page was opened in customizer, but woocommerce modified the content in the preview (without changing the link)\n            // set used to false, so that the function will continue and hide the page sections\n            if (\n                used &&\n                (\n                    (CP_Customizer.preview.data('queryVars:post_type', 'default') === 'product') ||\n                    (CP_Customizer.preview.data('queryVars:pagename', 'default') === 'checkout')\n                ) &&\n                (usedWoo === false)) {\n                used = false;\n            }\n\n            if (used) {\n                return;\n            }\n            used = true;\n\n            var $activatePageCard = $('.reiki-needed-container[data-type=\"activate\"]');\n            var $openPageCard = $('.reiki-needed-container[data-type=\"select\"]');\n            var $makeEditable = $('.reiki-needed-container[data-type=\"edit-this-page\"]');\n            var $makeProductEditable = $('.reiki-needed-container[data-type=\"edit-this-product\"]');\n\n            var data = CP_Customizer.preview.data();\n            var toAppend;\n\n            var canMaintainThis = CP_Customizer.preview.data('canEditInCustomizer') //CP_Customizer.options('isMultipage', false) && (data.pageID !== false);\n\n            if (data.maintainable) {\n\n            } else {\n                if (canMaintainThis) {\n\n                    if (CP_Customizer.preview.data('queryVars:post_type', 'page') === 'page') {\n                        toAppend = $makeEditable.clone().show();\n                    } else {\n                        toAppend = $makeProductEditable.clone().show();\n                    }\n\n                    wp.customize.panel('page_content_panel').container.eq(0).find('.sections-list-reorder').empty().append(toAppend);\n\n                } else {\n                    wp.customize.panel('page_content_panel').container.eq(0).find('.accordion-section-title > .add-section-plus').remove();\n                    if (!data.hasFrontPage) {\n                        toAppend = $activatePageCard.eq(0).clone().show();\n                        wp.customize.panel('page_content_panel').container.eq(0).find('.sections-list-reorder').empty().append(toAppend);\n                    } else {\n                        if (!data.isFrontPage) {\n                            toAppend = $openPageCard.eq(0).clone().show();\n                            wp.customize.panel('page_content_panel').container.eq(0).find('.sections-list-reorder').empty().append(toAppend);\n                        }\n                    }\n\n                    if (CP_Customizer.preview.data('queryVars:post_type', 'product') === 'product') {\n                        usedWoo = true;\n                    }\n                }\n            }\n\n            if (toAppend) {\n                toAppend.show();\n            }\n\n        });\n    });\n})(jQuery, CP_Customizer);\n","(function (root, CP_Customizer, $) {\n\n    CP_Customizer.__shortcodesPopupControls = {};\n\n    CP_Customizer.registerShortcodePopupControls = function (tag, controls) {\n        CP_Customizer.__shortcodesPopupControls[tag] = controls;\n    };\n\n\n     CP_Customizer.hooks.addAction('dynamic_columns_handle', function (cols, node) {\n        if (CP_Customizer.isShortcodeContent(node)) {\n            var shortcode = CP_Customizer.getNodeShortcode(node);\n            var device = root.CP_Customizer.preview.currentDevice();\n            var prop = ( device === \"tablet\") ? \"columns_tablet\" : \"columns\";\n            shortcode.attrs = shortcode.attrs || {};\n            shortcode.attrs[prop] = cols;\n            CP_Customizer.updateNodeFromShortcodeObject(node, shortcode);\n        }\n    });\n    CP_Customizer.hooks.addFilter('is_shortcode_editable', function (value, shortcode) {\n        var controls = CP_Customizer.hooks.applyFilters('filter_shortcode_popup_controls', CP_Customizer.utils.deepClone(CP_Customizer.__shortcodesPopupControls));\n\n        // console.log(controls, shortcode);\n        value = value || _.has(controls, shortcode.tag);\n\n        return value;\n    });\n\n\n    CP_Customizer.getShortcodePopupFields = function (shortcodeData) {\n        var controls = CP_Customizer.hooks.applyFilters('filter_shortcode_popup_controls', CP_Customizer.utils.deepClone(CP_Customizer.__shortcodesPopupControls));\n        var tag = _.isObject(shortcodeData) ? shortcodeData.tag : shortcodeData;\n        var attrs = controls[tag] || [];\n        var controls = [];\n        for (var attrName in attrs) {\n            if (attrs.hasOwnProperty(attrName)) {\n                var control = CP_Customizer.utils.deepClone(attrs[attrName].control);\n\n                if (shortcodeData.attrs && shortcodeData.attrs.hasOwnProperty(attrName)) {\n                    control.value = shortcodeData.attrs[attrName];\n                } else {\n                    control.value = !_.isUndefined(control.default) ? control.default : \"\";\n                }\n\n                if (control.getValue) {\n                    control.value = control.getValue(attrName, shortcodeData.tag);\n                }\n\n                control.name = attrName;\n                control.id = attrName;\n                if (control.getParse) {\n                    control.value = control.getParse(control.value);\n                }\n                controls.push(control);\n            }\n        }\n        return controls;\n    };\n\n    CP_Customizer.openShortcodePopupEditor = function (callback, $node, shortcode) {\n        var popupContainer = $('#cp-container-editor');\n\n        var fields = CP_Customizer.getShortcodePopupFields(shortcode);\n\n        var fallback = CP_Customizer.shortcodesAttrs && CP_Customizer.shortcodesAttrs[shortcode];\n\n        if (!fields.length || fallback) {\n            return;\n        }\n\n        shortcode = {\n            tag: _.isObject(shortcode) ? shortcode.tag : shortcode,\n            attrs: _.isObject(shortcode) ? shortcode.attrs : {},\n        };\n\n        function setContent() {\n            for (var i = 0; i < fields.length; i++) {\n                var field = fields[i],\n                    node = field.node;\n                var value = field.val();\n\n                if (field.setValue) {\n                    field.setValue(field.id, value, shortcode.tag);\n                } else {\n                    shortcode.attrs[field.id] = field.setParse ? field.setParse(value) : value;\n                }\n            }\n\n            callback(shortcode.attrs);\n            CP_Customizer.closePopUps();\n            CP_Customizer.updateState();\n        }\n\n\n        popupContainer.find('[id=\"cp-item-ok\"]').off().click(setContent);\n        popupContainer.find('[id=\"cp-item-cancel\"]').off().click(function () {\n            CP_Customizer.closePopUps();\n        });\n\n        popupContainer.find('#cp-items').empty();\n        for (var i = 0; i < fields.length; i++) {\n            var field = fields[i],\n                type = field.type || 'text',\n                content = (CP_Customizer.jsTPL[type] ? CP_Customizer.jsTPL[type](field) : '');\n\n            var $fieldContent = $(content);\n\n            $fieldContent.attr('data-field', field.name);\n\n\n            field.$wrapper = $fieldContent;\n            field.$panel = popupContainer.find('#cp-items');\n            field.$node = $node;\n\n            field.val = function () {\n                var value = {};\n                var field = this;\n                var _values = this.$wrapper.find('[id^=\"' + field.id + '\"]').filter('input,textarea,select').map(function (index, elem) {\n                    return {\n                        key: $(this).attr('id').replace(field.id + \"__\", ''),\n                        value: $(this).is('[type=checkbox]') ? this.checked : $(this).val()\n                    };\n                }).toArray();\n\n                _(_values).each(function (v) {\n                    value[v.key] = v.value;\n                });\n\n                if (_values.length === 1 && value.hasOwnProperty(field.id)) {\n                    value = value[field.id];\n                }\n\n                return value;\n            };\n\n            if (field.ready && _.isFunction(field.ready)) {\n                $fieldContent.data('field', field);\n                $fieldContent.bind('shortcode-popup-ready', function () {\n                    var $fieldContent = $(this);\n                    var field = $fieldContent.data('field');\n                    field.ready($fieldContent, $fieldContent.closest('#cp-items'));\n                });\n\n\n            }\n\n            popupContainer.find('#cp-items').append($fieldContent);\n\n        }\n\n        popupContainer.find('#cp-items').children().trigger('shortcode-popup-ready');\n        CP_Customizer.popUp( window.CP_Customizer.translateCompanionString('Manage Options'), \"cp-container-editor\", {\n            width: \"600\",\n            class: \"data-edit-popup\"\n        });\n    };\n\n\n    CP_Customizer.editEscapedShortcodeAtts = function ($node, shortcode) {\n        CP_Customizer.openShortcodePopupEditor(function (attrs) {\n            shortcode.attrs = attrs;\n\n            var shortcodeText = '[' + shortcode.tag;\n            var attrs = [];\n            for (var attr in shortcode.attrs) {\n                if ((shortcode.attrs[attr] + \"\").trim() != \"\") {\n\n                    attrs.push(attr + '=\"' + htmlEscape(htmlEscape(shortcode.attrs[attr])) + '\"');\n                }\n            }\n\n            if (attrs.length) {\n                shortcodeText += ' ' + attrs.join(' ');\n            }\n\n            shortcodeText += ']';\n\n            CP_Customizer.updateNodeShortcode($node, shortcodeText);\n\n        }, $node, shortcode);\n    };\n\n    function htmlEscape(str) {\n        return str\n            .replace(/&/g, '&amp;')\n            .replace(/\"/g, '&quot;')\n            .replace(/'/g, '&#39;')\n            .replace(/</g, '&lt;')\n            .replace(/>/g, '&gt;');\n    }\n})(window, CP_Customizer, jQuery);\n\n","(function (root, CP_Customizer, $) {\n\n    CP_Customizer.__customPopupControls = {};\n\n    CP_Customizer.registerCustomPopupControls = function (tag, controls) {\n        CP_Customizer.__customPopupControls[tag] = controls;\n    };\n\n\n    CP_Customizer.getCustomPopupFields = function (tag, $node) {\n        var controls = CP_Customizer.hooks.applyFilters('filter_custom_popup_controls', CP_Customizer.utils.deepClone(CP_Customizer.__customPopupControls));\n        var attrs = controls[tag] || [];\n        var controls = [];\n        for (var attrName in attrs) {\n            if (attrs.hasOwnProperty(attrName)) {\n                var control = CP_Customizer.utils.deepClone(attrs[attrName].control);\n\n\n                if (_.isFunction(control.active)) {\n                    if (!control.active($node)) {\n                        continue;\n                    }\n                }\n\n                if (control.attr) {\n                    control.value = $node.attr(control.attr);\n                }\n\n                if (control.getValue) {\n                    control.value = control.getValue(attrName, $node, control.default);\n                }\n\n                if (!control.value && control.default) {\n                    control.value = control.default;\n                }\n\n                control.name = attrName;\n                control.id = attrName;\n                if (control.getParse) {\n                    control.value = control.getParse(control.value);\n                }\n                controls.push(control);\n            }\n        }\n        return controls;\n    };\n\n    CP_Customizer.openCustomPopupEditor = function ($node, tag, callback) {\n        var popupContainer = $('#cp-container-editor');\n\n        var fields = CP_Customizer.getCustomPopupFields(tag, $node);\n\n\n        function setContent() {\n            var values = {};\n            for (var i = 0; i < fields.length; i++) {\n                var field = fields[i],\n                    value = field.val();\n\n                values[field.id] = {\n                    oldValue: field.value,\n                    value: value\n                };\n\n                if (field.attr) {\n                    $node.attr(field.attr, value);\n                }\n\n            }\n\n            if (callback) {\n                callback(values, $node);\n            }\n\n            CP_Customizer.closePopUps();\n            CP_Customizer.updateState();\n        }\n\n\n        popupContainer.find('[id=\"cp-item-ok\"]').off().click(setContent);\n        popupContainer.find('[id=\"cp-item-cancel\"]').off().click(function () {\n            CP_Customizer.closePopUps();\n        });\n\n        popupContainer.find('#cp-items').empty();\n        for (var i = 0; i < fields.length; i++) {\n            var field = fields[i],\n                type = field.type || 'text',\n                content = (CP_Customizer.jsTPL[type] ? CP_Customizer.jsTPL[type](field) : '');\n\n            var $fieldContent = $(content);\n\n            $fieldContent.attr('data-field', field.name);\n\n\n            field.$wrapper = $fieldContent;\n            field.$panel = popupContainer.find('#cp-items');\n            field.$node = $node;\n\n            field.val = function () {\n                var value = {};\n                var field = this;\n                var _values = this.$wrapper.find('[id^=\"' + field.id + '\"]').filter('input,textarea,select').map(function (index, elem) {\n                    return {\n                        key: $(this).attr('id').replace(field.id + \"__\", ''),\n                        value: $(this).is('[type=checkbox]') ? this.checked : $(this).val()\n                    };\n                }).toArray();\n\n                _(_values).each(function (v) {\n                    value[v.key] = v.value;\n                });\n\n                if (_values.length === 1 && value.hasOwnProperty(field.id)) {\n                    value = value[field.id];\n                }\n\n                return value;\n            };\n\n            if (field.ready && _.isFunction(field.ready)) {\n                $fieldContent.data('field', field);\n                $fieldContent.bind('shortcode-popup-ready', function () {\n                    var $fieldContent = $(this);\n                    var field = $fieldContent.data('field');\n                    field.ready($fieldContent, $fieldContent.closest('#cp-items'));\n                });\n\n\n            }\n\n            popupContainer.find('#cp-items').append($fieldContent);\n\n        }\n\n        popupContainer.find('#cp-items').children().trigger('shortcode-popup-ready');\n        CP_Customizer.popUp(window.CP_Customizer.translateCompanionString('Manage Options'), \"cp-container-editor\", {\n            width: \"600\",\n            class: \"data-edit-popup\"\n        });\n    };\n\n\n    function htmlEscape(str) {\n        return str\n            .replace(/&/g, '&amp;')\n            .replace(/\"/g, '&quot;')\n            .replace(/'/g, '&#39;')\n            .replace(/</g, '&lt;')\n            .replace(/>/g, '&gt;');\n    }\n})(window, CP_Customizer, jQuery);\n","(function (root, CP_Customizer, $) {\n\n    var currentPageStyles = {};\n    var styleEL = $(\"\");\n    var mod = null;\n\n    var mediaMap = {\n        \"mobile\": \"@media screen and (max-width:767)\",\n        \"tablet\": \"@media screen and (min-width:768)\",\n        \"desktop\": \"@media screen and (min-width:1024)\",\n        \"nomedia\": false\n    };\n\n    var outputOrder = ['nomedia', 'mobile', 'tablet', 'desktop'];\n\n    function sprintf_style_array(data, media) {\n        var style = \"\";\n\n\n        for (var selector in data) {\n            var props = data[selector];\n            var propsText = \"\";\n\n            for (var prop in props) {\n                var value = props[prop];\n                propsText += \"\\t\" + prop + \":\" + value + \";\\n\";\n            }\n\n            style += selector + \"{\\n\" + propsText + \"\\n}\";\n        }\n        if (media) {\n            style = media + \"{\\n\" + style + \"\\n}\";\n        }\n\n        return style + \"\\n\\n\";\n    }\n\n    function setModAndUpdate() {\n        CP_Customizer.setMod(mod, _.clone(currentPageStyles), 'postMessage');\n\n        var style = \"\";\n\n        for (var i = 0; i < outputOrder.length; i++) {\n            var media = outputOrder[i];\n            var mediaQuery = mediaMap[media];\n            style += sprintf_style_array(currentPageStyles[media], mediaQuery);\n        }\n        styleEL.text(style);\n    }\n\n\n    CP_Customizer.on(CP_Customizer.events.PREVIEW_LOADED, function () {\n        currentPageStyles = CP_Customizer.preview.data('content_style');\n        mod = 'custom_content_style_' + CP_Customizer.preview.data('pageID');\n        styleEL = CP_Customizer.preview.find('#page-content-custom-styles');\n    });\n\n\n    CP_Customizer.contentStyle = {\n        getStyle: function (selector, media) {\n\n            if (!selector) {\n                return {};\n            }\n\n            media = media || 'nomedia';\n            return currentPageStyles[media][selector] || {};\n        },\n\n        removeSelector: function (selector, media, noUpdate) {\n            media = media || 'nomedia';\n\n            if (media === \"all\") {\n                for (var m in currentPageStyles) {\n                    this.removeSelector(selector, m, true);\n                }\n                setModAndUpdate();\n                return;\n            }\n\n            if (currentPageStyles[media]) {\n                if (currentPageStyles[media][selector]) {\n                    delete currentPageStyles[media][selector];\n                } else {\n                    for (var s in currentPageStyles[media]) {\n                        if (s.match(selector)) {\n                            delete currentPageStyles[media][s];\n                        }\n                    }\n                }\n            }\n\n            if (!noUpdate) {\n\n                setModAndUpdate();\n            }\n\n        },\n\n\n        getProp: function (selector, pseudo, prop, defaultValue, media) {\n            pseudo = (pseudo || \"\").trim();\n            selector = selector + pseudo;\n\n            var style = this.getStyle(selector, media);\n            return (style[prop] || \"\").toLowerCase().replace('!important', '').trim() || defaultValue;\n\n        },\n\n        getNodeProp: function (node, selector, pseudo, prop, media) {\n\n            if (!node || node.length === 0) {\n                return '';\n            }\n\n            node = CP_Customizer.preview.jQuery(node)[0];\n            var defaultValue = CP_Customizer.preview.frame().getComputedStyle(node, pseudo).getPropertyValue(prop);\n            return this.getProp(selector, pseudo, prop, defaultValue, media)\n        },\n\n\n        getNodeProps: function (node, selector, pseudo, props, media) {\n            var result = {},\n                manager = this;\n\n            _.each(props, function (prop) {\n                result[prop] = manager.getNodeProp(node, selector, pseudo, prop, media);\n            });\n\n            return result;\n        },\n\n        isImportant: function (selector, pseudo, prop, media) {\n            pseudo = (pseudo || \"\").trim();\n            selector = selector + pseudo;\n\n            var style = this.getStyle(selector, media);\n            var value = style[prop] || \"\";\n            return value.toLowerCase().indexOf('!important') !== -1;\n\n        },\n\n        setProp: function (selector, pseudo, prop, value, media, handeledModUpdate) {\n            media = media || 'nomedia';\n            pseudo = (pseudo || \"\").trim();\n\n            pseudo = (pseudo || \"\").trim();\n            selector = selector + pseudo;\n\n            if (!currentPageStyles[media]) {\n                currentPageStyles[media] = {};\n            }\n\n            if (_.isArray(currentPageStyles[media])) {\n                currentPageStyles[media] = _.extend({}, currentPageStyles[media]);\n            }\n\n            if (!currentPageStyles[media][selector]) {\n                currentPageStyles[media][selector] = {};\n            }\n\n            currentPageStyles[media][selector][prop] = value;\n\n            if (!handeledModUpdate) {\n                setModAndUpdate();\n            }\n        },\n\n        removeProp: function (selector, pseudo, prop, media) {\n            media = media || 'nomedia';\n\n            pseudo = (pseudo || \"\").trim();\n            selector = selector + pseudo;\n\n            if (currentPageStyles[media]) {\n                if (currentPageStyles[media][selector]) {\n                    if (currentPageStyles[media][selector][prop]) {\n                        delete currentPageStyles[media][selector][prop];\n                    }\n                }\n            }\n\n\n            setModAndUpdate();\n        },\n\n        setProps: function (selector, pseudo, props, media) {\n            for (var prop in props) {\n                this.setProp(selector, pseudo, prop, props[prop], media, true);\n            }\n\n            setModAndUpdate();\n        },\n\n        merge: function (styles) {\n            currentPageStyles = jQuery.extend(currentPageStyles, styles);\n            setModAndUpdate();\n        },\n\n        recompileScssStyle: function () {\n            return;\n            var settings = CP_Customizer.options('scss_settings', {});\n            var vars = {};\n\n            for (var i = 0; i < settings.length; i++) {\n                var setting = settings[i];\n                var setting_vars = CP_Customizer.hooks.applyFilters('scss_setting_vars_' + setting, {});\n\n                if (_.isEmpty(setting_vars)) {\n                    setting_vars = CP_Customizer.hooks.applyFilters('scss_setting_vars', {}, setting);\n                }\n\n                vars = _.extend(_.clone(vars), _.clone(setting_vars));\n            }\n\n            var data = CP_Customizer.preview.data('scss', {});\n\n            vars = _.extend(_.clone(data.vars), _.clone(vars));\n            data.vars = vars;\n\n            var request = CP_Customizer.IO.post('compiled_style_preview', {\n                data: data\n            });\n\n            request.done(function (content) {\n                CP_Customizer.preview.find('#ope-compiled-css').text(content);\n            });\n\n        },\n\n        setSectionItemColor: function (node, colorMapping, newColor) {\n\n            var $node = CP_Customizer.preview.jQuery(node),\n                colorName = CP_Customizer.getThemeColor(newColor),\n                colorClasses = Object.getOwnPropertyNames(CP_Customizer.getColorsObj()).concat(['color-white', 'color-black', 'color-gray']);\n\n            colorMapping.forEach(function (cMap) {\n                if (colorName) {\n                    if (cMap.colorClass) {\n                        var oldColorClasses = colorClasses.map(function (color) {\n                            return cMap.colorClass.prefix + color + cMap.colorClass.suffix;\n                        });\n\n                        var newClass = cMap.colorClass.prefix + colorName + cMap.colorClass.suffix;\n                        var $item = $node.is(cMap.colorClass.selector || cMap.selector) ? $node : $node.find(cMap.colorClass.selector || cMap.selector);\n                        $item.removeClass(oldColorClasses.join(' ')).addClass(newClass);\n                    }\n                }\n            });\n\n        },\n\n\n        getSectionItemColor: function (node, colorMapping, defaultColor) {\n\n            if (!colorMapping) {\n                return 'rgba(0,0,0,0)';\n            }\n\n            var $node = CP_Customizer.preview.jQuery(node),\n                firstCMap = colorMapping[0],\n                selector = colorMapping[0].selector,\n                colorClasses = Object.getOwnPropertyNames(CP_Customizer.getColorsObj()).concat(['color-white', 'color-black', 'color-gray']),\n                result = defaultColor || 'rgba(0,0,0,0)';\n\n            if (firstCMap.colorClass) {\n                selector = firstCMap.colorClass.selector || selector;\n                var $item = $node.is(selector) ? $node : $node.find(selector);\n\n                for (var i = 0; i < colorClasses.length; i++) {\n                    var colorClass = colorClasses[i],\n                        nodeClass = firstCMap.colorClass.prefix + colorClass + firstCMap.colorClass.suffix;\n                    if ($item.hasClass(nodeClass)) {\n                        result = CP_Customizer.getColorValue(colorClass);\n                        break;\n                    }\n                }\n            }\n\n            return result;\n\n        }\n    };\n\n\n    CP_Customizer.styleUtils = {\n        generateCSSLinerGradient: function (angle, colors) {\n            var colorsArray = colors.map(function (color) {\n                return color.value + \" \" + color.stop + '%'\n            });\n\n            colorsText = colorsArray.join(' , ');\n\n            return 'linear-gradient(' + angle + 'deg, ' + colorsText + ')';\n\n        },\n\n        generateOneSideLinerGradient: function (angle, color, transpacency, from) {\n            transpacency = transpacency || 50;\n            startAlpha = transpacency / 2;\n            from = from || 50;\n\n            var fromColor = tinycolor(color).setAlpha(startAlpha / 100).toRgbString(),\n                middleColor = tinycolor(color).setAlpha(transpacency / 100).toRgbString(),\n                toColor = tinycolor(color).toHexString();\n\n            var colors = [\n                {\n                    value: 'rgba(0,0,0,0)',\n                    stop: 0\n                },\n                {\n                    value: fromColor,\n                    stop: from / 2\n                },\n                {\n                    value: middleColor,\n                    stop: from\n                },\n                {\n                    value: toColor,\n                    stop: 100\n                }\n            ];\n\n            return this.generateCSSLinerGradient(angle, colors);\n\n        },\n\n        getCSSGradientColors: function (value, colorAsObject) {\n            var parts = value.match(/,((.*?)\\s([0-9]+)%)/ig);\n            parts = parts.map(function (part) {\n                part = CP_Customizer.utils.phpTrim(part, ',').trim();\n                var stop = part.match(/(\\d+)%/igm)[0];\n                var color = part.replace(stop, '').trim();\n\n                return {\n                    value: colorAsObject ? tinycolor(color) : color,\n                    stop: CP_Customizer.utils.phpTrim(stop, '%').trim()\n                }\n            });\n\n            return parts\n        },\n\n        getRGBAStringTransparency: function (color) {\n\n          var transparency = tinycolor(color).getAlpha();\n\n          return transparency;\n\n        }\n\n    }\n\n\n})(window, CP_Customizer, jQuery);\n","(function (root, CP_Customizer, $) {\n\n    var sectionSettingsContainer = $('' +\n        '<li id=\"cp-section-setting-popup\" class=\"customizer-right-section\">' +\n        '    <span data-close-right-sidebar=\"true\" title=\"' +  root.CP_Customizer.translateCompanionString(\"Close Panel\") +'\" class=\"close-panel\"></span>' +\n        '    <ul class=\"section-settings-container accordion-section-content no-border\"></ul>' +\n        ' </li>');\n\n    CP_Customizer.addModule(function (CP_Customizer) {\n\n        var control = wp.customize.panel('page_content_panel');\n        control.container.find('.sections-list-reorder').append(sectionSettingsContainer);\n\n        CP_Customizer.hooks.addFilter('content_section_setting_float', function () {\n            return false;\n        });\n\n        CP_Customizer.hooks.addFilter('content_section_setting', function () {\n            return \"cp-section-setting\";\n        });\n\n\n        CP_Customizer.createControl = function (options) {\n\n            options = _.extend({\n                id: '',\n                type: '',\n                container: $('<div />'),\n                params: {},\n                value: '',\n                updater: function (value) {\n                    if (control.container.find('[data-cp-link]').is('[type=checkbox]')) {\n                        control.container.find('[data-cp-link]').prop('checked', value);\n                        return;\n                    }\n                    control.container.find('[data-cp-link]').val(value).trigger('change');\n                }\n            }, options);\n\n\n            options.params.type = options.params.type || options.type;\n\n            var settingID = options.id || _.uniqueId('control-setting-');\n            var setting = new CP_Customizer.wpApi.Setting(settingID, options.value, {});\n\n            setting.previewer = CP_Customizer.wpApi.previewer;\n\n            setting.transport = 'postMessage';\n\n            options.params.settings = [setting];\n            options.params.value = options.value;\n            options.params.link = ' data-cp-link';\n\n            var controllerClass = CP_Customizer.wpApi.controlConstructor[options.type] || CP_Customizer.wpApi.Control;\n            var control = new controllerClass(\n                settingID + '-control',\n                {\n                    containerType: options.type,\n                    params: options.params\n                }\n            );\n\n            var container = $(options.container);\n\n            control.container = container;\n            control.setting = control.setting || setting;\n\n            control.section = function () {\n                return 'page_content';\n            };\n\n            var updaterCallback = options.updater;\n\n            var oldSet = setting.set;\n\n            setting.bind(function (value) {\n                control.params.value = value;\n                updaterCallback.call(this, value);\n            });\n\n            setting.bind(function (value, oldValue) {\n                if (_.isFunction(setting.onChange)) {\n                    setting.onChange(value, oldValue);\n                    CP_Customizer.markSave();\n                }\n            });\n\n            setting.controlContainer = container;\n            setting.renderControl = function () {\n                control.renderContent();\n                control.ready();\n\n                return this;\n            };\n\n            setting.attachWithSetter = function (currentValue, onChange) {\n                this.onChange = false;\n                this._value = undefined;\n\n                this.set(currentValue);\n\n                if (options.onAttach) {\n                    options.onAttach.call(setting, currentValue);\n                }\n\n                var self = this;\n                _.delay(function () {\n                    self.onChange = onChange;\n                }, 1);\n            };\n\n            setting.renderControl();\n            setting.control = control;\n\n\n            setting.hide = function () {\n                this.control.container.hide();\n            };\n\n            setting.show = function () {\n                this.control.container.show();\n            };\n\n            return setting;\n        };\n\n        CP_Customizer.createControl.color = function (id, container, params) {\n\n            var $container = $('<li class=\"customize-control customize-control-kirki customize-control-kirki-color\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                updater: function (value) {\n                    var colorControl = this.control.container.find('input[data-cp-link]');\n                    if (colorControl.data('spectrum.id') === undefined) {\n                        colorControl.iris('color', value);\n                    } else {\n                        colorControl.spectrum(\"set\", value);\n                    }\n                },\n                type: 'kirki-color',\n                container: $container,\n                params: _.extend(\n                    params,\n                    {\n                        choices: {\n                            alpha: params.alpha || true\n                        },\n                        value: params.value || \"#FFFFFF\"\n                    }\n                ),\n                value: params.value || \"#FFFFFF\"\n            };\n\n            return CP_Customizer.createControl(options);\n        };\n\n\n        CP_Customizer.createControl.palette = function (id, container, params) {\n\n            var $container = $('<li class=\"customize-control customize-control-kirki customize-control-kirki-color\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                updater: function (value) {\n                    var colorControl = this.control.container.find('input[data-cp-link]');\n                    if (colorControl.data('spectrum.id') === undefined) {\n                        colorControl.iris('color', value);\n                    } else {\n                        var cb = colorControl.spectrum(\"option\", \"move\");\n                        colorControl.spectrum(\"destroy\");\n                        colorControl.spectrum({\n                            showPaletteOnly: true,\n                            showPalette: true,\n                            color: value,\n                            palette: [params.palette],\n                            move: cb,\n                            change: cb\n                        });\n                        colorControl.spectrum(\"set\", value);\n\n                    }\n                },\n                type: 'kirki-color',\n                container: $container,\n                params: _.extend(\n                    params,\n                    {\n                        choices: {\n                            alpha: params.alpha || true\n                        },\n                        value: params.value || \"#FFFFFF\"\n                    }\n                ),\n                value: params.value || \"#FFFFFF\"\n            };\n\n            var result = CP_Customizer.createControl(options);\n\n            result.setPallete = function (palette) {\n                var colorControl = this.control.container.find('input[data-cp-link]');\n                colorControl.spectrum('option', 'palette', palette);\n            };\n\n            return result;\n        };\n\n\n        CP_Customizer.createControl.select = function (id, container, params) {\n            var type = 'kirki-select',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                updater: function (value) {\n                    if (this.controlContainer.find('[data-cp-link]').data().selectize) {\n                        this.controlContainer.find('[data-cp-link]').data().selectize.setValue(value);\n                    }\n                },\n                type: type,\n                container: $container,\n                params: _.extend(\n                    params,\n                    {\n                        choices: params.choices || [],\n                        value: params.value || \"\",\n                        multiple: params.multiple || []\n                    }\n                ),\n                value: params.value || \"\"\n            };\n\n            return CP_Customizer.createControl(options);\n        };\n\n        CP_Customizer.createControl.text = function (id, container, params) {\n            var type = 'kirki-number',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />'),\n                params = params || {};\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n\n                type: type,\n                onAttach: function (value) {\n                    var thisInput = this.controlContainer.find('input');\n                    thisInput.val(value);\n                },\n                container: $container,\n                params: _.extend(\n                    params,\n                    {\n                        value: params.value || \"\"\n                    }\n                ),\n                value: params.value || \"\"\n            };\n\n            var setting = CP_Customizer.createControl(options);\n            setting.control.container.find('input').spinner('destroy');\n\n            return setting;\n        };\n\n        CP_Customizer.createControl.number = function (id, container, params) {\n            var type = 'kirki-number',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                updater: function (value) {\n                    if (this.controlContainer.find('[data-cp-link]').data().selectize) {\n                        this.controlContainer.find('[data-cp-link]').data().selectize.setValue(value);\n                    }\n                },\n                type: type,\n                onAttach: function (value) {\n                    var thisInput = this.controlContainer.find('input');\n                    thisInput.spinner(\"value\", value);\n                },\n                container: $container,\n                params: _.extend(\n                    params,\n                    {\n                        choices: {\n                            min: params.min,\n                            max: params.max,\n                            step: params.step\n                        },\n                        value: params.value || \"\"\n                    }\n                ),\n                value: params.value || \"\"\n            };\n\n            return CP_Customizer.createControl(options);\n        };\n\n        CP_Customizer.createControl.image = function (id, container, params) {\n            var type = 'image',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                updater: function (value) {\n                    if (value && \"none\" !== value && \"/none\" !== value.split('/none').pop()) {\n                        this.control.params.attachment = {\n                            id: Date.now(),\n                            type: type,\n                            sizes: {\n                                full: {\n                                    url: value\n                                }\n                            }\n                        }\n                    } else {\n                        this.control.params.attachment = undefined;\n                    }\n                    this.control.renderContent();\n                },\n                params: _.extend(\n                    params,\n                    {\n                        canUpload: true,\n                        button_labels: {\n                            remove: window.CP_Customizer.translateCompanionString(\"Remove\"),\n                            change: window.CP_Customizer.translateCompanionString(\"Change\"),\n                            select: window.CP_Customizer.translateCompanionString(\"Select\"),\n                            placeholder: \"No file selected\",\n                        },\n                        attachment: {\n                            type: type,\n                            sizes: {\n                                full: {\n                                    url: params.url\n                                }\n                            }\n                        }\n                    }\n                ),\n                value: params.value || \"\"\n            };\n\n            return CP_Customizer.createControl(options);\n        };\n\n        CP_Customizer.createControl.video = function (id, container, params) {\n            var type = 'media',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                updater: function (value) {\n                     if (value) {\n                         this.control.params.attachment = value;\n                     } else {\n                         this.control.params.value = '';\n                     }\n                     this.control.renderContent();\n                },\n                params: _.extend(\n                    params,\n                    {\n                        canUpload: true,\n                        button_labels: {\n                            remove: \"Remove\",\n                            change: \"Change\",\n                            select: \"Select\",\n                            placeholder: \"No file selected\",\n                        },\n                        attachment: {\n                            id: params.value\n                        }\n                    }\n                ),\n                value: params.value || ''\n            };\n\n            var result =  CP_Customizer.createControl(options);\n\n            result.onSelect = function(){};\n\n            result.attachWithSetter = function (currentValue, onChange) {\n                this.onChange = false;\n                this._value = undefined;\n\n                this.set(currentValue);\n\n                if (options.onAttach) {\n                    options.onAttach.call(setting, currentValue);\n                }\n\n                var self = this;\n                _.delay(function () {\n                    self.onSelect = onChange;\n                }, 1);\n            };\n\n            result.control.select = function() {\n    \t\t\t// Get the attachment from the modal frame.\n    \t\t\tvar node,\n    \t\t\t\tattachment = result.control.frame.state().get( 'selection' ).first().toJSON(),\n    \t\t\t\tmejsSettings = window._wpmejsSettings || {};\n\n    \t\t\tresult.control.params.attachment = attachment;\n\n    \t\t\t// Set the Customizer setting; the callback takes care of rendering.\n    \t\t\tresult.control.setting( attachment.id );\n    \t\t\tresult.onSelect({\n                    id: attachment.id,\n                    url: attachment.url,\n                    icon: attachment.icon,\n                    type: attachment.type\n                })\n    \t\t\tnode = result.control.container.find( 'audio, video' ).get(0);\n\n    \t\t\t// Initialize audio/video previews.\n    \t\t\tif ( node ) {\n    \t\t\t\tresult.control.player = new MediaElementPlayer( node, mejsSettings );\n    \t\t\t} else {\n    \t\t\t\tresult.control.cleanupPlayer();\n    \t\t\t}\n    \t\t};\n\n        return result;\n        };\n\n        CP_Customizer.createControl.gradient = function (id, container, params) {\n            var type = 'web-gradients',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                updater: function (value) {\n                    this.control.params.value = value;\n                    this.control.renderContent();\n                },\n                container: $container,\n                params: _.extend(\n                    params,\n                    {\n                        value: params.value || \"\",\n                        button_label: window.CP_Customizer.translateCompanionString(\"Choose Gradient\")\n                    }\n                ),\n                value: params.value || \"\"\n            };\n\n            return CP_Customizer.createControl(options);\n        };\n\n        CP_Customizer.createControl.gradientPro = function (id, container, params) {\n            var type = 'gradient-control-pro',\n                selector = 'customize-control-' + id + '-control',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" id=\"' + selector + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                updater: function (value) {\n                    this.control.setValue(value, true);\n                },\n                container: $container,\n                params: _.extend(\n                    params,\n                    {\n                        value: params.value || \"\",\n                        button_label: \"Select Gradient\",\n                        id: id || '',\n                        settings: {\n                            default: id || ''\n                        }\n                    }\n                ),\n                value: params.value || \"\",\n                selector: selector\n            };\n\n            return CP_Customizer.createControl(options);\n        };\n\n        CP_Customizer.createControl.typography = function (id, container, params) {\n            var type = 'kirki-typography',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" id=\"customize-control-' + id +'-control\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                updater: function (value) {\n                },\n                container: $container,\n                params: _.extend(\n                    params,\n                    {\n                        kirkiConfig: \"global\",\n                        l10n: kirki.l10n.global,\n                        default: params.value,\n                        id: id || '',\n                    }\n                ),\n                value: params.value || \"\"\n            };\n\n            return CP_Customizer.createControl(options);\n        };\n\n        CP_Customizer.createControl.sectionSeparator = function (id, container, label) {\n            var type = 'sectionseparator',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                params: {\n                    label: label\n                }\n            };\n\n            return CP_Customizer.createControl(options);\n        };\n\n        CP_Customizer.createControl.textarea = function (id, container, params) {\n            var type = 'kirki-generic',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                params: _.extend(\n                    params,\n                    {\n                        value: params.value || \"\",\n                        choices: {\n                            element: 'textarea',\n                            rows: '5'\n                        }\n                    }\n                ),\n                value: params.value || \"\"\n            };\n\n            return CP_Customizer.createControl(options);\n        };\n\n        CP_Customizer.createControl.controlsGroup = function (id, container, label) {\n            var type = 'sectionseparator',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-controls-container customize-control-' + type + '\" ></li>');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                params: {\n                    label: label || \"\"\n                }\n            };\n\n            var result = CP_Customizer.createControl(options);\n\n\n            return (function (result, $el, parent) {\n\n                if (!label) {\n                    result.control.container.find('.materialis-separator').remove()\n                }\n\n\n                result.parent = container;\n\n                result.free = function () {\n                    $el.remove();\n                };\n\n                result.attach = function () {\n                    parent.append($el);\n                };\n\n                result.el = function () {\n                    if (this.control.container.find('ul.holder').length === 0) {\n                        this.control.container.append('<ul class=\"holder\"></ul>');\n                    }\n                    return this.control.container.find('ul.holder');\n                };\n\n                return result;\n            })(result, $container, container);\n        };\n\n\n        CP_Customizer.createControl.controlHolder = function (id, container) {\n            var type = 'sectionsetting',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container\n            };\n\n            return CP_Customizer.createControl(options);\n        };\n\n\n        CP_Customizer.createControl.checkbox = function (id, container, label) {\n            var type = 'kirki-checkbox',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                params: {\n                    label: label\n                }\n            };\n\n            return CP_Customizer.createControl(options);\n        };\n\n\n        CP_Customizer.createControl.generic = function (id, container, params) {\n            var type = 'kirki-generic',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                params: {\n                    label: params.label,\n                    choices: {\n                        element: 'input',\n                        type: 'text'\n                    }\n                },\n                value: params.value\n            };\n\n            return CP_Customizer.createControl(options);\n\n\n            return result;\n        };\n\n\t\tCP_Customizer.createControl.repeater = function (id, container, params) {\n            var type = 'repeater',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n                var repeaterContent = '';\n                repeaterContent+= '<label>';\n                repeaterContent+= '<span class=\"customize-control-title\">' + params.label + '</span>';\n                repeaterContent+= '<input type=\"hidden\" ' + params + ' value=\"\" />';\n                repeaterContent+= '</label>';\n                repeaterContent+= '<ul class=\"repeater-fields\"></ul>';\n//                repeaterContent+= '<p class=\"limit\">' + params.choices.limit + '</p>';\n//                repeaterContent+= '<button class=\"button-secondary repeater-add\">Add</button>';\n                repeaterContent+= jQuery('.customize-control-repeater-content').first().prop('outerHTML');\n                $container.html(repeaterContent);\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                params: _.extend(\n                    params,\n                    {\n                        kirkiConfig: \"global\",\n                        l10n: kirki.l10n.global,\n                        label: params.label,\n                        default: params.value,\n                    }\n                ),\n                value: params.value\n            };\n\n            return CP_Customizer.createControl(options);\n\n\n            return result;\n        };\n\n\n        CP_Customizer.createControl.button = function (id, container, label, callback, buttonOptions) {\n            var type = 'kirki-checkbox',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-ope-button\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            buttonOptions = _.extend(\n                {\n                    class: \"button full-width\"\n                },\n                buttonOptions\n            );\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                params: {\n                    label: label\n                }\n            };\n\n            var result = CP_Customizer.createControl(options);\n\n            result.control.container.empty();\n\n            var $button = $('<button class=\"' + buttonOptions.class + '\" />');\n            $button.text(label);\n            $button.off('click').on('click', function (event) {\n                event.stopPropagation();\n                event.preventDefault();\n                callback.call(this, event);\n            });\n\n            result.control.container.append($button);\n\n            return result;\n        };\n\n\t\tCP_Customizer.createControl.buttonGroup = function (id, container, params, callback, buttonOptions) {\n            var type = 'sidebar-button-group',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-ope-button\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            buttonOptions = _.extend(\n                {\n                    class: \"button full-width\"\n                },\n                buttonOptions\n            );\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                params: _.extend(\n                    params,\n                    {\n                        popup: id\n                    }\n                ),\n            };\n\n            var result = CP_Customizer.createControl(options);\n\n            return result;\n        };\n\n\n        CP_Customizer.createControl.info = function (id, container, content) {\n            var type = 'kirki-checkbox',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-ope-info\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                params: {\n                    label: \"\"\n                }\n            };\n\n            var result = CP_Customizer.createControl(options);\n\n            result.control.container.empty();\n\n            result.control.container.append($('<p/>').append(content));\n\n\n            return result;\n        };\n\n        CP_Customizer.createControl.infoPRO = function (id, container, content) {\n\n            if (CP_Customizer.IS_PRO) {\n                return;\n            }\n\n            var type = 'kirki-checkbox',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-ope-info-pro\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                params: {\n                    label: \"\"\n                }\n            };\n\n            var result = CP_Customizer.createControl(options);\n\n            result.control.container.empty();\n\n            result.control.container.append($('<p/>').append(content));\n\n\n            return result;\n        };\n\n\n        CP_Customizer.createControl.sortable = function (id, container, itemTemplate, label) {\n            var type = 'sectionsetting',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + '\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var options = {\n                id: id || '',\n                type: type,\n                container: $container,\n                params: {\n                    itemTemplate: itemTemplate,\n                    label: label\n                }\n            };\n\n            var result = CP_Customizer.createControl(options);\n\n            result.control.attachControls = function () {\n            };\n            result.control.free = function () {\n                this.container.find('.setting-control-container').empty();\n                try {\n                    this.container.sortable('destroy');\n                } catch (e) {\n\n                }\n            };\n\n            result.control.onStop = function () {\n            };\n\n            result.control.setItems = function (items, afterCreation) {\n                var control = this;\n                var itemContainer = this.container.find('.setting-control-container');\n\n\n                for (var i = 0; i < items.length; i++) {\n                    var item = items[i];\n                    var html = control.params.itemTemplate(item);\n\n                    if (afterCreation) {\n                        html = $(html);\n                        afterCreation(html, item);\n                    }\n\n                    itemContainer.append(html);\n                }\n\n                itemContainer.sortable({\n                    axis: \"y\",\n                    handle: \".handle\",\n                    stop: function (event, ui) {\n                        result.control.onStop(event, ui);\n                    }\n                });\n\n            };\n\n\n            return result;\n        }\n\n        CP_Customizer.createControl.number = function (id, container, options) {\n\n            options = options || {};\n\n            options.choices = _.extend({\n                min: 0,\n                max: 100,\n                step: 1\n            }, options.choices || {});\n\n            var type = 'kirki-number',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + ' cp-control\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n\n            var controlOptions = {\n                id: id || '',\n                updater: function (value) {\n                    var thisInput = this.controlContainer.find('input');\n                    thisInput.val(value);\n                    thisInput.change();\n                },\n                type: type,\n                container: $container,\n                params: {\n                    label: options.label,\n                    default: options.default,\n                    choices: options.choices\n                },\n                value: options.default\n            };\n\n            return CP_Customizer.createControl(controlOptions);\n        }\n\n        CP_Customizer.createControl.spacing = function (id, container, options) {\n            if (!options.sides) {\n                options.sides = ['top', 'bottom'];\n            }\n\n            var type = 'kirki-spacing',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + ' cp-control\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n            var sides = {};\n            var controls = {};\n\n            for (var i = 0; i < options.sides.length; i++) {\n                sides[options.sides[i]] = \"0px\";\n                controls[options.sides[i]] = true;\n            }\n\n            var controlOptions = {\n                id: id || '',\n                updater: function (value) {\n\n                    for (var key in value) {\n                        var $input = this.controlContainer.find('.' + key + '.input-wrapper > input');\n                        $input.val(value[key]);\n                    }\n\n                },\n                type: type,\n                container: $container,\n                params: {\n                    kirkiConfig: \"global\",\n                    l10n: kirki.l10n.global,\n                    label: options.label,\n                    default: sides,\n                    choices: {\n                        controls: controls\n                    }\n                },\n                value: sides\n            };\n\n            kirkiNotifications(id, type, 'global');\n\n            return CP_Customizer.createControl(controlOptions);\n        };\n\n        CP_Customizer.createControl.dimension = function (id, container, options) {\n\n            options = options || {};\n\n            var type = 'kirki-dimension',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + ' cp-control\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n\n            var controlOptions = {\n                id: id || '',\n                updater: function (value) {\n                    var $input = this.controlContainer.find('.input-wrapper > input');\n                    $input.val(value);\n\n                },\n                type: type,\n                container: $container,\n                params: {\n                    kirkiConfig: \"global\",\n                    l10n: kirki.l10n.global,\n                    label: options.label,\n                    default: options.default || \"0px\"\n                },\n                value: options.default || \"0px\"\n            };\n\n            kirkiNotifications(id, type, 'global');\n\n            return CP_Customizer.createControl(controlOptions);\n        }\n\n        CP_Customizer.createControl.slider = function (id, container, options) {\n\n            options = options || {};\n\n            options.choices = _.extend({\n                min: 0,\n                max: 100,\n                step: 1,\n                default: 0\n            }, options.choices || {});\n\n            var type = 'kirki-slider',\n                $container = $('<li class=\"customize-control customize-control-kirki customize-control-' + type + ' cp-control\" />');\n\n            if (container) {\n                $(container).append($container);\n            }\n\n\n            var controlOptions = {\n                id: id || '',\n                updater: function (value) {\n                    var thisInput = this.controlContainer.find('input');\n                    thisInput.val(value);\n                    thisInput.change();\n                    thisInput.siblings('.kirki_range_value').find('.value').text(value);\n\n                },\n                onAttach: function (value) {\n                    var thisInput = this.controlContainer.find('input');\n                    thisInput.attr('data-reset_value', value);\n                    thisInput.data('reset_value', value);\n                },\n                type: type,\n                container: $container,\n                params: {\n                    kirkiConfig: \"global\",\n                    l10n: kirki.l10n.global,\n                    label: options.label,\n                    default: options.default,\n                    choices: options.choices\n                },\n                value: options.default\n            };\n\n            kirkiNotifications(id, type, 'global');\n\n            return CP_Customizer.createControl(controlOptions);\n        }\n    });\n\n})(window, CP_Customizer, jQuery);\n\n\n(function (root, CP_Customizer, $) {\n    CP_Customizer.addModule(function (CP_Customizer) {\n        var $sectionSettingsContainer = $(\"#cp-section-setting-popup .section-settings-container\");\n\n        CP_Customizer.hooks.doAction('section_panel_before_dimensions', $sectionSettingsContainer); // #####\n\n        CP_Customizer.hooks.addAction('right_sidebar_opened', function (sidebarId, data) {\n            if (sidebarId !== 'cp-section-setting') {\n                return;\n            }\n\n            CP_Customizer.panels.sectionPanel.init(data);\n            CP_Customizer.panels.sectionPanel.update(data);\n            CP_Customizer.hooks.doAction('section_sidebar_opened', data);\n        });\n\n\n        var baseArea = {\n\n            __controls: {},\n\n            priority: 100,\n\n            extend: function (options) {\n                return _.extend(this, options);\n            },\n\n            init: function () {\n            },\n            update: function () {\n            },\n\n            disable: function () {\n                for (var item in this.__controls) {\n                    this.__controls[item].hide();\n                }\n                this.enabled = false;\n            },\n            enable: function () {\n                for (var item in this.__controls) {\n                    this.__controls[item].show();\n                }\n                this.enabled = true;\n            },\n\n\n            _exclude: false,\n\n            exclude: function () {\n                this._exclude = true;\n            },\n\n            include: function () {\n                this._exclude = false;\n            },\n\n            canInclude: function () {\n                return !this._exclude;\n            },\n\n            getPrefixed: function (data) {\n                return this.name + '-' + data;\n            },\n\n            areaTitle: false,\n\n\n            initAreaTitle: function ($container) {\n                if (this.areaTitle) {\n                    var separator = CP_Customizer.createControl.sectionSeparator(\n                        this.getPrefixed('area-title'),\n                        $container,\n                        this.areaTitle\n                    );\n                    this.addToControlsList(separator);\n                }\n            },\n\n            hideAll:function(){\n                for(var control in this.__controls){\n                    this.__controls[control].hide();\n                }\n            },\n\n            showAll:function(){\n                for(var control in this.__controls){\n                    this.__controls[control].show();\n                }\n            },\n\n            addToControlsList: function (control) {\n                this.__controls[control.id] = control;\n            },\n\n            getControl: function (id) {\n                if (this.__controls[id]) {\n                    return this.__controls[id];\n                }\n\n                if (this.__controls[this.getPrefixed(id)]) {\n                    return this.__controls[this.getPrefixed(id)];\n                }\n\n                return null;\n            },\n\n            wrapOriginal: function (originalName, newFunction) {\n                if (_.isFunction(this[originalName])) {\n                    this[originalName] = _.wrap(this[originalName], newFunction);\n                }\n            }\n        };\n\n\n        var panelBase = {\n            _areas: {},\n            _initialized: false,\n\n            extend: function (options) {\n                return _.extend(this, options);\n            },\n\n            registerArea: function (name, options, forceOverride) {\n\n                var settings = _.extend(\n                    CP_Customizer.utils.deepClone(baseArea),\n                    options\n                );\n\n                if (!this._areas[name] || forceOverride === true) {\n                    this._areas[name] = _.extend({\n                        enabled: true,\n                        name: name\n                    }, settings);\n\n\n                }\n\n                return this._areas[name];\n            },\n\n            hasArea: function (name) {\n                return !_.isUndefined(this._areas[name]);\n            },\n\n            getArea: function (name) {\n                return this._areas[name];\n            },\n\n            init: function (data) {\n                if (this._initialized) {\n                    return;\n                }\n\n                this._initialized = true;\n\n\n                var self = this;\n\n                // sort asc by priority\n                var areas = Object.getOwnPropertyNames(this._areas).sort(function (a, b) {\n                    return self._areas[a].priority - self._areas[b].priority;\n                });\n\n                areas = CP_Customizer.hooks.applyFilters('section_sidebar_sort_areas', areas);\n\n                areas.forEach(function (area) {\n                    if (self._areas[area] && self._areas[area].canInclude()) {\n                        CP_Customizer.hooks.doAction('before_section_sidebar_area_' + name, $sectionSettingsContainer);\n\n                        self._processExtendAreaQueue(self._areas[area]);\n\n                        self._areas[area].initAreaTitle($sectionSettingsContainer);\n                        self._areas[area].init($sectionSettingsContainer);\n\n                        CP_Customizer.hooks.doAction('after_section_sidebar_area_' + name, $sectionSettingsContainer);\n                    }\n                });\n\n                this.update(data);\n            },\n\n            update: function (data) {\n\n                data.sectionExports = CP_Customizer.getSectionExports(data.section);\n\n                for (var area in this._areas) {\n\n                    if (this._areas[area].canInclude()) {\n\n                        CP_Customizer.hooks.doAction('update_before_section_sidebar_area_' + name, data);\n                        this._areas[area].update(data);\n                        CP_Customizer.hooks.doAction('update_after_section_sidebar_area_' + name, data);\n\n                    }\n                }\n            },\n            disableArea: function (name) {\n                if (this._areas[name] && this._areas[name].enabled) {\n                    this._areas[name].enabled = false;\n                    this._areas[name].disable();\n                }\n            },\n            enableArea: function (name) {\n                if (this._areas[name] && !this._areas[name].enabled) {\n                    this._areas[name].enabled = false;\n                    this._areas[name].enable();\n                }\n            },\n\n            excludeArea: function (name) {\n                if (this._areas[name]) {\n                    this._areas[name].exclude();\n                }\n            },\n\n            _areasToExtend: {},\n\n            _processExtendAreaQueue: function (area) {\n                var extendCallback = this._areasToExtend[area.name];\n\n                if (extendCallback) {\n                    extendCallback(area)\n                }\n            },\n\n            extendArea: function (name, callback) {\n                if (this._areas[name]) {\n                    callback(this._areas[name]);\n                } else {\n                    if (!this._areasToExtend[name]) {\n                        this._areasToExtend[name] = callback;\n                    }\n                }\n            }\n        };\n\n        CP_Customizer.panels = CP_Customizer.panel || {};\n        CP_Customizer.panels.panelBase = panelBase;\n        CP_Customizer.panels.panelArea = baseArea;\n\n        CP_Customizer.panels.instantiate = function (config) {\n            return _.extend(CP_Customizer.utils.deepClone(panelBase), config || {});\n        };\n\n        CP_Customizer.panels.sectionPanel = _.extend(CP_Customizer.panels.sectionPanel || {}, panelBase);\n\n    });\n\n})(window, CP_Customizer, jQuery);\n","(function (root, CP_Customizer, $) {\n\n    var containerTemplate = $('' +\n        '<li id=\"cp-current-page-settings-popup\" class=\"customizer-right-section\">' +\n        '    <span data-close-right-sidebar=\"true\" title=\"' + window.CP_Customizer.translateCompanionString('Close Panel') + '\" class=\"close-panel\"></span>' +\n        '    <ul class=\"current-page-settings-container section-settings-container accordion-section-content no-border\"></ul>' +\n        ' </li>');\n\n    CP_Customizer.addModule(function (CP_Customizer) {\n\n        var control = wp.customize.panel('page_content_panel');\n        control.container.append(containerTemplate);\n\n        var $container = $(\"#cp-current-page-settings-popup .current-page-settings-container\");\n\n        CP_Customizer.panels.pageContentPanel = CP_Customizer.panels.instantiate({\n            init: function (data) {\n                if (this._initialized) {\n                    return;\n                }\n\n                this._initialized = true;\n\n                var self = this;\n\n                // sort asc by priority\n                var areas = Object.getOwnPropertyNames(this._areas).sort(function (a, b) {\n                    return self._areas[a].priority - self._areas[b].priority;\n                });\n\n                areas = CP_Customizer.hooks.applyFilters('page_settings_sidebar_sort_areas', areas);\n\n                areas.forEach(function (area) {\n                    if (self._areas[area] && self._areas[area].canInclude()) {\n                        CP_Customizer.hooks.doAction('before_page_settings_sidebar_area_' + name, $container);\n\n                        self._processExtendAreaQueue(self._areas[area]);\n                        self._areas[area].initAreaTitle($container);\n                        self._areas[area].init($container);\n\n                        CP_Customizer.hooks.doAction('after_page_settings_sidebar_area_' + name, $container);\n                    }\n                });\n\n                this.update(data);\n            },\n            update: function (data) {\n                for (var area in this._areas) {\n\n                    if (this._areas[area].canInclude()) {\n\n                        CP_Customizer.hooks.doAction('update_before_page_settings_sidebar_area_' + name, data);\n                        this._areas[area].update(data);\n                        CP_Customizer.hooks.doAction('update_after_page_settings_sidebar_area_' + name, data);\n\n                    }\n                }\n            }\n        });\n\n        CP_Customizer.hooks.addAction('right_sidebar_opened', function (sidebarId) {\n            if (sidebarId !== 'cp-current-page-settings') {\n                return;\n            }\n\n            var data = {\n                'id': CP_Customizer.preview.data('pageID')\n            };\n\n            CP_Customizer.panels.pageContentPanel.init(data);\n            CP_Customizer.panels.pageContentPanel.update(data);\n            CP_Customizer.hooks.doAction('page_setting_sidebar_opened', {});\n        });\n    });\n\n})(window, CP_Customizer, jQuery);","(function (root, CP_Customizer, $) {\n    CP_Customizer.addModule(function (CP_Customizer) {\n        CP_Customizer.hooks.addFilter('section_fixed_overlay_options', function (options, type) {\n\n            var item = {\n\n                name: \"section_more_settings_button\",\n                title:  window.CP_Customizer.translateCompanionString(\"Section Settings\"),\n\n                on_click: function (node) {\n                    var section = node;\n\n                    if (!section.parent().is(CP_Customizer.preview.getRootNode())) {\n                        section = node.parentsUntil(top.CP_Customizer.preview.getRootNode()).last();\n                    }\n\n                    section = CP_Customizer.hooks.applyFilters('filter_cog_item_section_element', section, node);\n\n                    CP_Customizer.wpApi.panel('page_content_panel').focus()\n                    CP_Customizer.openRightSidebar(\"cp-section-setting\", {\n                        section: section\n                    });\n                }\n\n            };\n\n            if (type === \"section\" && options && !itemExists(options, item.name)) {\n                options.items.push(item);\n            }\n\n            return options;\n        });\n\n\n        CP_Customizer.hooks.addFilter('section_fixed_overlay', function (options, key) {\n\n            var tempOptions = _.clone(options);\n\n            if (key === \"items\") {\n                if (_.isArray(tempOptions)) {\n                    tempOptions.forEach(function (item, index, optionsList) {\n                        if (item.name === \"section_color_changer\" || item.name === \"columns_reorder\") {\n                            if (item.on_hover) {\n                                delete item.on_hover;\n                            }\n\n                            item.classes = \"\";\n\n                            item.on_click = function (node) {\n                                var section = node;\n\n                                if (!section.parent().is(CP_Customizer.preview.getRootNode())) {\n                                    section = node.parentsUntil(top.CP_Customizer.preview.getRootNode()).last();\n                                }\n\n                                section = CP_Customizer.hooks.applyFilters('filter_cog_item_section_element', section, node);\n\n                                CP_Customizer.wpApi.panel('page_content_panel').focus()\n                                CP_Customizer.openRightSidebar(\"cp-section-setting\", {\n                                    section: section\n                                });\n                            }\n                        }\n\n                        if (item.name === \"page_background_image\") {\n                            delete optionsList[index];\n                        }\n                    });\n                }\n\n                // do return empty array slots\n                var result = tempOptions.filter(function (item) {\n                    return item;\n                });\n            } else {\n                result = options;\n            }\n\n\n            return result;\n        });\n\n        function itemExists(options, name) {\n\n            if (options && options.items) {\n                for (var i = 0; i < options.items.length; i++) {\n                    var item = options.items[i];\n\n                    if (item.name === name) {\n                        return true;\n                    }\n                }\n            }\n\n            return false;\n        }\n\n\n        CP_Customizer.hooks.addFilter('section_fixed_overlay_options', function (options, type) {\n\n            var item = {\n\n                name: \"section_more_settings_button\",\n                title: window.CP_Customizer.translateCompanionString(\"Section Settings\"),\n\n                on_click: function (node) {\n                    var section = node;\n\n                    if (!section.parent().is(CP_Customizer.preview.getRootNode())) {\n                        section = node.parentsUntil(top.CP_Customizer.preview.getRootNode()).last();\n                    }\n\n                    section = CP_Customizer.hooks.applyFilters('filter_cog_item_section_element', section, node);\n\n                    CP_Customizer.wpApi.panel('page_content_panel').focus()\n                    CP_Customizer.openRightSidebar(\"cp-section-setting\", {\n                        section: section\n                    });\n                }\n\n            };\n\n            if (type === \"section\" && options && !itemExists(options, item.name)) {\n                options.items.push(item);\n            }\n\n            return options;\n        });\n    });\n\n})(window, CP_Customizer, jQuery);\n\n\n(function (root, CP_Customizer, $) {\n    CP_Customizer.addModule(function (CP_Customizer) {\n        var sectionPanel = CP_Customizer.panels.sectionPanel;\n        sectionPanel.registerArea('background_color', {\n            init: function ($container) {\n\n                var separator = CP_Customizer.createControl.sectionSeparator(\n                    this.getPrefixed('separator'),\n                    $container,\n                    window.CP_Customizer.translateCompanionString('Background Color')\n                );\n\n                this.addToControlsList(separator);\n\n                var palette = CP_Customizer.createControl.palette(\n                    this.getPrefixed('background-color'),\n                    $container,\n                    {\n                        value: '#ffffff',\n                        label: window.CP_Customizer.translateCompanionString('Background Color'),\n                        palette: ['#ffffff', '#F5FAFD']\n                    });\n\n                this.addToControlsList(palette);\n\n                CP_Customizer.createControl.infoPRO(\n                    this.getPrefixed('section-bg-pro-info'),\n                    $container,\n                    '<span>' + window.CP_Customizer.translateCompanionString(\"More section design options available in PRO\") + '</span><br/> ' +\n                    '<a href=\"https://extendthemes.com/go/materialis-upgrade\" class=\"button button-small button-orange upgrade-to-pro\" target=\"_blank\">' +\n                     '' + window.CP_Customizer.translateCompanionString(\"Check all PRO features\") + '</a>'\n                )\n            },\n            update: function (data) {\n                var image = CP_Customizer.utils.normalizeBackgroundImageValue((getComputedStyle(data.section[0]).backgroundImage || \"\")) || false;\n                image = (image && image !== \"none\" && !image.endsWith('/none')) ? image : false;\n                var color = getComputedStyle(data.section[0]).backgroundColor;\n\n                if (image) {\n\n                    this.disable();\n                    return;\n                }\n\n                this.enable();\n\n                var palette = this.getControl('background-color');\n\n                palette.attachWithSetter(color, function (value) {\n\n                    data.section.css({\n                        'background-image': 'none',\n                        'background-color': value\n                    });\n\n                    CP_Customizer.updateState();\n                });\n            }\n        });\n\n        sectionPanel.registerArea('background_image', {\n            init: function ($container) {\n\n                var separator = CP_Customizer.createControl.sectionSeparator(\n                    this.getPrefixed('separator'),\n                    $container,\n                    window.CP_Customizer.translateCompanionString('Background Image')\n                );\n\n                this.addToControlsList(separator);\n\n                var bgImage = CP_Customizer.createControl.image(\n                    this.getPrefixed('image'),\n                    $container,\n                    {\n                        value: '',\n                        label: window.CP_Customizer.translateCompanionString('Background Image')\n                    });\n\n                this.addToControlsList(bgImage);\n            },\n\n            update: function (data) {\n                var image = CP_Customizer.utils.normalizeBackgroundImageValue((getComputedStyle(data.section[0]).backgroundImage || \"\")) || false;\n                image = (image && image !== \"none\" && !image.endsWith('/none')) ? image : false;\n\n\n                var bgImage = this.getControl('image');\n\n                if (!image) {\n                    this.disable();\n                    return;\n                }\n\n                this.enable();\n\n                bgImage.attachWithSetter(image, function (value) {\n\n                    if (value) {\n                        value = 'url(\"' + value + '\")';\n                    } else {\n                        value = \"\";\n                    }\n                    data.section.css({\n                        'background-color': 'none',\n                        'background-image': value,\n                        'background-size': 'cover',\n                        'background-position': 'center top'\n                    });\n\n\n                    CP_Customizer.updateState();\n                });\n            }\n        });\n\n\n        sectionPanel.registerArea('content_align', {\n            init: function ($container) {\n\n                var separator = CP_Customizer.createControl.sectionSeparator(\n                    this.getPrefixed('separator'),\n                    $container,\n                    window.CP_Customizer.translateCompanionString('Content Align')\n                );\n\n                this.addToControlsList(separator);\n\n                var textAlign = CP_Customizer.createControl.select(\n                    this.getPrefixed('text_align'),\n                    $container,\n                    {\n                        value: '',\n                        label:  window.CP_Customizer.translateCompanionString('Content align'),\n                        choices: {\n                            'content-align-default': window.CP_Customizer.translateCompanionString('Default'),\n                            'content-left-sm': window.CP_Customizer.translateCompanionString('Left'),\n                            'content-center-sm': window.CP_Customizer.translateCompanionString('Center'),\n                            'content-right-sm': window.CP_Customizer.translateCompanionString('Right')\n                        }\n                    });\n\n                this.addToControlsList(textAlign);\n            },\n\n            update: function (data) {\n                var section = data.section;\n                var sectionExports = CP_Customizer.getSectionExports(section);\n\n                if (!sectionExports.contentAligns) {\n                    this.disable();\n                    return;\n                }\n\n                this.enable();\n\n                var selector = sectionExports.contentAligns.join(' , '),\n                    $alignHolders = section.find(selector);\n\n                if (section.is(selector)) {\n                    $alignHolders = $alignHolders.add(section);\n                }\n\n                var textAlign = this.getControl('text_align');\n                var textAlignClasses = ['content-left-sm', 'content-center-sm', 'content-right-sm'];\n                var currentTextAlign = CP_Customizer.utils.nodeMatchingClasses($alignHolders, textAlignClasses, true);\n\n                textAlign.attachWithSetter(\n                    currentTextAlign || 'content-align-default',\n                    function (value, oldValue) {\n                        if (oldValue.trim()) {\n                            $alignHolders.each(function () {\n                                $(this).removeClass(oldValue);\n                            })\n                        }\n                        if (value.trim() && value !== 'content-align-default') {\n                            $alignHolders.each(function () {\n                                $(this).addClass(value);\n                            })\n                        }\n                    }\n                );\n            }\n        });\n\n\n        // frame box\n        sectionPanel.registerArea('frame', {\n            init: function ($container) {\n                var frameSeparator = CP_Customizer.createControl.sectionSeparator(this.getPrefixed('separator'),\n                    $container, window.CP_Customizer.translateCompanionString('Frame Settings'));\n                this.addToControlsList(frameSeparator);\n                $groupEl = $container;\n                var frameType = CP_Customizer.createControl.select(this.getPrefixed('type'), $groupEl, {\n                    value: '',\n                    label: window.CP_Customizer.translateCompanionString('Type'),\n                    choices: {\n                        \"background\": window.CP_Customizer.translateCompanionString(\"background\"),\n                        \"border\": window.CP_Customizer.translateCompanionString(\"border\")\n                    }\n                });\n                this.addToControlsList(frameType);\n                var frameColor = CP_Customizer.createControl.color(this.getPrefixed('color'), $groupEl, {\n                    value: '#ffffff',\n                    label:  window.CP_Customizer.translateCompanionString('Color')\n                });\n\n                this.addToControlsList(frameColor);\n\n                var frameOffsetX = CP_Customizer.createControl.slider(this.getPrefixed('offs-x'), $groupEl, {\n                    label: window.CP_Customizer.translateCompanionString('Offset X'),\n                    choices: {\n                        min: -100,\n                        max: 100,\n                        step: 1\n                    }\n                });\n\n                this.addToControlsList(frameOffsetX);\n                var frameOffsetY = CP_Customizer.createControl.slider(this.getPrefixed('offs-y'), $groupEl, {\n                    label: window.CP_Customizer.translateCompanionString('Offset Y'),\n                    choices: {\n                        min: -100,\n                        max: 100,\n                        step: 1\n                    }\n                });\n\n                this.addToControlsList(frameOffsetY);\n                var frameWidth = CP_Customizer.createControl.slider(this.getPrefixed('width'), $groupEl, {\n                    label: window.CP_Customizer.translateCompanionString('Width'),\n                    choices: {\n                        min: 1,\n                        max: 200,\n                        step: 1\n                    }\n                });\n\n                this.addToControlsList(frameWidth);\n                var frameHeight = CP_Customizer.createControl.slider(this.getPrefixed('height'), $groupEl, {\n                    label: window.CP_Customizer.translateCompanionString('Height'),\n                    choices: {\n                        min: 1,\n                        max: 200,\n                        step: 1\n                    }\n                });\n                this.addToControlsList(frameHeight);\n\n                var frameHideOnMobile = CP_Customizer.createControl.checkbox(\n                    this.getPrefixed('hide-on-mobile'),\n                    $groupEl,\n                    window.CP_Customizer.translateCompanionString('Hide on mobile')\n                );\n\n                this.addToControlsList(frameHideOnMobile);\n\n\n            },\n            update: function (data) {\n                var section = data.section;\n                var hasFrame = section.find('.overlay-box').length > 0;\n                if (!hasFrame) {\n                    this.disable();\n                    return;\n                }\n                this.enable();\n                if (hasFrame) {\n                    var frameType = this.getControl('type');\n                    var frameWidth = this.getControl('width');\n                    var frameHeight = this.getControl('height');\n                    var frameOffsetX = this.getControl('offs-x');\n                    var frameOffsetY = this.getControl('offs-y');\n                    var frameColor = this.getControl('color');\n                    var frameHideOnMobile = this.getControl('hide-on-mobile');\n\n                    var nodeSel = \".overlay-box .overlay-box-offset\";\n\n\n                    var selector = '[data-id=\"' + section.attr('data-id') + '\"] ' + nodeSel;\n                    var node = section.find(nodeSel);\n\n                    frameHideOnMobile.attachWithSetter(node.hasClass(\"hide-xs\"), function (value) {\n                        if (value === true) {\n                            node.addClass(\"hide-xs\");\n                        } else {\n                            node.removeClass(\"hide-xs\");\n                        }\n                    });\n\n                    function getProp(name) {\n                        return (CP_Customizer.contentStyle.getNodeProp(node, selector, null, name));\n                    }\n\n                    function setProp(name, value) {\n                        CP_Customizer.contentStyle.setProp(selector, null, name, value);\n                    }\n\n                    function getFrameType() {\n                        var type = \"background\";\n                        if (node.hasClass(\"offset-border\")) {\n                            type = \"border\";\n                        }\n                        return type;\n                    }\n\n                    frameType.attachWithSetter(getFrameType(), function (value) {\n                        if (value == \"border\") {\n                            node.removeClass(\"offset-background\");\n                            node.addClass(\"offset-border\");\n                            setProp(value + '-color', getProp('background-color'));\n                            setProp('background-color', 'transparent');\n                        }\n                        if (value == \"background\") {\n                            node.addClass(\"offset-background\");\n                            node.removeClass(\"offset-border\");\n                            setProp(value + '-color', getProp('border-color'));\n                            setProp('border-color', 'transparent');\n                        }\n                    });\n\n                    frameColor.attachWithSetter(getProp(getFrameType() + '-color'), function (value) {\n                        setProp(getFrameType() + '-color', value);\n                    });\n\n                    frameHeight.attachWithSetter(parseInt(getProp('height')), function (value) {\n                        setProp('height', value + \"%\");\n                    });\n\n                    frameWidth.attachWithSetter(parseInt(getProp('width')), function (value) {\n                        setProp('width', value + \"%\");\n                    });\n\n                    function getTranslate() {\n                        var transform = getProp('transform');\n                        var translate = transform.match(/translate\\(([^,]+),([^,]+)\\)/) || [];\n                        var translateX = translate.length ? translate[1] : 0;\n                        var translateY = translate.length ? translate[2] : 0;\n                        return {\n                            'x': parseInt(translateX),\n                            'y': parseInt(translateY),\n                        }\n                    }\n\n                    function setTranslate(x, y) {\n                        var translate = getTranslate();\n                        if (!_.isUndefined(x)) {\n                            translate.x = x;\n                        }\n                        if (!_.isUndefined(y)) {\n                            translate.y = y;\n                        }\n                        setProp('transform', 'translate(' + translate.x + '%,' + translate.y + '%)');\n                    }\n\n                    var translate = getTranslate();\n                    frameOffsetX.attachWithSetter(parseInt(translate.x), function (value) {\n                        setTranslate(value, undefined);\n                    });\n\n                    frameOffsetY.attachWithSetter(parseInt(translate.y), function (value) {\n                        setTranslate(undefined, value);\n                    });\n                }\n            }\n        }); // #####\n        sectionPanel.registerArea('list_items', {\n\n            itemsListControlTemplate: '' +\n            '<div class=\"section-list-item\">' +\n            '   <div class=\"handle reorder-handler\"></div>' +\n            '   <div class=\"text\">' +\n            '           <span title=\"color item\" class=\"featured-item color\"></span>' +\n            '           <span><%= text %></span>' +\n            '   </div>' +\n            '</div>' +\n            '',\n\n            init: function ($container) {\n                this.controls = [];\n\n                var itemOptionsControl = CP_Customizer.createControl.sectionSeparator(\n                    this.getPrefixed('title_separator'),\n                    $container,\n                    window.CP_Customizer.translateCompanionString('Items Options')\n                );\n\n                this.addToControlsList(itemOptionsControl);\n\n                var itemsAlign = CP_Customizer.createControl.select(\n                    this.getPrefixed('items_align'),\n                    $container,\n                    {\n                        value: '',\n                        label: window.CP_Customizer.translateCompanionString('Items align'),\n                        choices: {\n                            'items-align-default': window.CP_Customizer.translateCompanionString('Default'),\n                            'start-sm': window.CP_Customizer.translateCompanionString('Left'),\n                            'center-sm': window.CP_Customizer.translateCompanionString('Center'),\n                            'end-sm': window.CP_Customizer.translateCompanionString('Right')\n                        }\n                    });\n                this.addToControlsList(itemsAlign);\n\n                var textAlign = CP_Customizer.createControl.select(\n                    this.getPrefixed('text_align'),\n                    $container,\n                    {\n                        value: '',\n                        label: window.CP_Customizer.translateCompanionString('Item content align'),\n                        choices: {\n                            'content-align-default': window.CP_Customizer.translateCompanionString('Default'),\n                            'content-left-sm': window.CP_Customizer.translateCompanionString('Left'),\n                            'content-center-sm': window.CP_Customizer.translateCompanionString('Center'),\n                            'content-right-sm': window.CP_Customizer.translateCompanionString('Right')\n                        }\n                    });\n\n                this.addToControlsList(textAlign);\n\n                listItemsOrder = CP_Customizer.createControl.sortable(\n                    this.getPrefixed('order'),\n                    $container,\n                    _.template(this.itemsListControlTemplate),\n                    window.CP_Customizer.translateCompanionString('Items position')\n                );\n\n                listItemsOrder.control.container.append('<a class=\"add-item button-primary\">' + window.CP_Customizer.translateCompanionString(\"Add Item\") + '</a>');\n\n                this.addToControlsList(listItemsOrder);\n            },\n\n            update: function (data) {\n                var section = data.section;\n                var row = section.find('[data-type=\"row\"]');\n\n                if (!row.length || row.is('[data-content-shortcode]')) {\n                    this.disable();\n                    return;\n                }\n\n                this.enable();\n\n\n                var textAlign = this.getControl('text_align'),\n                    textAlignClasses = ['content-left-sm', 'content-center-sm', 'content-right-sm'],\n                    currentTextAlign = CP_Customizer.utils.nodeMatchingClasses(row, textAlignClasses, true),\n\n                    itemsAlign = this.getControl('items_align'),\n                    itemsAlignClasses = ['start-sm', 'center-sm', 'end-sm'],\n                    currentItemsAlign = CP_Customizer.utils.nodeMatchingClasses(row, itemsAlignClasses, true);\n\n                var sectionExports = CP_Customizer.getSectionExports(section);\n                var canAlignItems = _.isUndefined(sectionExports.canAlignRowItemsContent) || sectionExports.canAlignRowItemsContent;\n\n                if (canAlignItems) {\n                    textAlign.show();\n                    itemsAlign.show();\n                } else {\n                    textAlign.hide();\n                    itemsAlign.hide();\n                }\n\n                textAlign.attachWithSetter(\n                    currentTextAlign || 'content-align-default',\n                    function (value, oldValue) {\n                        if (oldValue.trim()) {\n                            row.removeClass(oldValue);\n                        }\n                        if (value.trim() && value !== 'content-align-default') {\n                            row.addClass(value);\n                        }\n                    }\n                );\n\n                itemsAlign.attachWithSetter(\n                    currentItemsAlign || 'items-align-default',\n                    function (value, oldValue) {\n                        if (oldValue.trim()) {\n                            row.removeClass(oldValue);\n                        }\n                        if (value.trim() && value !== 'items-align-default') {\n                            row.addClass(value);\n                        }\n                    }\n                );\n\n\n                this.setItems(section, row);\n\n                var listItemsOrder = this.getControl('order');\n\n                listItemsOrder.control.onStop = function (event, ui) {\n                    var index = ui.item.index();\n                    var node = jQuery(ui.item).data().original;\n                    root.CP_Customizer.preview.insertNode(node, node.parent(), index);\n                };\n\n                var self = this;\n                listItemsOrder.control.container.find('.add-item').unbind('click').click(function () {\n                    var $content = row.children('div').first().clone(false, false);\n\n                    $content = root.CP_Customizer.preview.cleanNode($content);\n                    root.CP_Customizer.preview.insertNode($content, row);\n\n                    self.setItems(section, row);\n                });\n\n\n                root.CP_Customizer.hooks.removeAction('section_list_item_refresh', function () {\n                    self.setItems(section, row);\n                });\n\n                root.CP_Customizer.hooks.addAction('section_list_item_refresh', function () {\n                    self.setItems(section, row);\n                });\n            },\n\n\n            getItemOptions: function (section, item) {\n\n                return {};\n            },\n\n            afterItemCreation: function (sortableItem, data) {\n                sortableItem.data('original', data.original);\n            },\n\n            setItems: function (section, row) {\n                var listItemsOrder = this.getControl('order');\n                listItemsOrder.control.free();\n\n                var items = row.children();\n                var self = this;\n\n                items = items.map(function () {\n                    var item = $(this);\n                    var title = $(this).text().replace(/\\s\\s+/g, \" \").trim();\n\n                    var headingText = $(this).find('h1,h2,h3,h4,h4,h6').eq(0);\n\n                    if (headingText.length) {\n                        title = headingText.text().replace(/\\s\\s+/g, \" \").trim();\n                    }\n\n                    title = title.trim().length ? title : \"\";\n\n                    if (!title && item.find('img').length) {\n                        title = CP_Customizer.utils.getFileInfo(item.find('img').eq(0).attr('src')).filename;\n                    }\n\n                    if (!title) {\n                        title = '[ ITEM ]';\n                    }\n\n                    title = title.replace(/(^.{1,15})(.*)$/, function (matches, firstMatch, secondMatch) {\n                        return (firstMatch || \"\").trim() + (secondMatch && secondMatch.length ? \"[...]\" : \"\");\n                    });\n\n                    return {\n                        text: title,\n                        original: $(this),\n                        options: self.getItemOptions(section, item)\n                    };\n\n                }).toArray();\n\n                listItemsOrder.control.setItems(items, function () {\n                    self.afterItemCreation.apply(self, arguments);\n                });\n\n            }\n        });\n\n        sectionPanel.registerArea('contact_form_options', {\n            init: function ($container) {\n                var separator = CP_Customizer.createControl.sectionSeparator(\n                    this.getPrefixed('separator'),\n                    $container,\n                    window.CP_Customizer.translateCompanionString('Contact Form 7 Options')\n                );\n\n                this.addToControlsList(separator);\n\n                var showInfosInOneColumn = CP_Customizer.createControl.checkbox(\n                    this.getPrefixed('show-inline-info'),\n                    $container,\n                    window.CP_Customizer.translateCompanionString('Show form controls on one column')\n                );\n\n                this.addToControlsList(showInfosInOneColumn);\n\n            },\n\n            update: function (data) {\n                var section = data.section;\n\n                if (section.attr('data-export-id').match(/contact/) && section.find('[data-content-shortcode*=\"contact-form-7\"]').length > 0) {\n                    this.enable();\n                } else {\n                    this.disable();\n                    return;\n                }\n\n                var showInfosInOneColumn = this.getControl('show-inline-info');\n                var contactFormWrapper = section.find('.contact-form-wrapper');\n                var hasInlineInfo = contactFormWrapper.is('.inline-info');\n\n                showInfosInOneColumn.attachWithSetter(!hasInlineInfo, function (value) {\n                    if (value) {\n                        contactFormWrapper.removeClass('inline-info');\n                    } else {\n                        contactFormWrapper.addClass('inline-info');\n                    }\n                    CP_Customizer.updateState();\n                })\n\n            }\n        })\n\n    });\n\n})(window, CP_Customizer, jQuery);\n","(function (root, CP_Customizer, $) {\n    CP_Customizer.addModule(function (CP_Customizer) {\n        var popup = CP_Customizer.options('featuresPopup', null);\n        var containerID = \"cp_feauture_popups_\" + Math.round(Math.random() * 10000);\n        var $container = $(\"<div/>\", {\n            id: containerID,\n            style: \"display:none\"\n        });\n\n        if (popup) {\n            $container.append(popup.content);\n            CP_Customizer.one(CP_Customizer.events.PREVIEW_LOADED, function () {\n                $('body').append($container);\n                var $tbWindow = CP_Customizer.popUp(popup.title || 'New Feature', containerID, popup.data || {\n                    class: \"ocdie-tbWindow\"\n                });\n                $tbWindow.find('[id=TB_closeWindowButton]').off('click.feature_popup').on('click.feature_popup', function (event) {\n                    jQuery.post(\n                        ajaxurl,\n                        {\n                            value: '1',\n                            action: \"companion_disable_popup\",\n                            option: 'feature_popup_' + popup.id + '_disabled',\n                            companion_disable_popup_wpnonce: popup.nonce\n                        }\n                    );\n                });\n            });\n        }\n\n    });\n\n})(window, CP_Customizer, jQuery);","(function ($) {\n\n    var listItemTemplate = _.template(\n        '<li class=\"full_row item\" data-id=\"<%= sectionID %>\">' +\n        '       <div class=\"reorder-handler\"></div>' +\n        '       <div class=\"label-wrapper\">' +\n        '  <input class=\"item-label\" value=\"<%= label %>\" />' +\n        '  <div class=\"anchor-info\">' +\n        '      #<%= id.replace(/#/,\\'\\') %>' +\n        '  </div>' +\n        '       </div>' +\n        '     <div class=\"item-hover\">' +\n        '   <% if(setting) { %>' +\n        '      <span title=\"' + window.CP_Customizer.translateCompanionString(\"Edit section settings\") + '\" data-setting=\"<%= setting %>\" class=\"item-settings\"></span>' +\n        '  <%  } %>' +\n        '  <span title=\"' + window.CP_Customizer.translateCompanionString(\"Toggle visibility in primary menu\") + '\" class=\"item-menu-visible <%= (inMenu?\\'active\\':\\'\\') %>\"></span>' +\n        '  <span title=\"' + window.CP_Customizer.translateCompanionString(\"Delete section from page\") + '\" class=\"item-remove\"></span>' +\n        '       </div>' +\n        ' </li>'\n    );\n\n    window.CP_Customizer.addModule(function (CP_Customizer) {\n        var control = wp.customize.panel('page_content_panel');\n\n        if (!control) {\n            return;\n        }\n\n        var $contentLi = control.container.eq(0);\n        // remove default events\n        $contentLi.children('h3').addBack().off();\n\n        $sectionsSidebarTogglers = $contentLi.find('.add-section-plus').add($contentLi.find('.cp-add-section'));\n\n        CP_Customizer.one(CP_Customizer.events.PREVIEW_LOADED, function () {\n            if (CP_Customizer.preview.data(\"can:change_page_settings\")) {\n                $contentLi.find('span.section-icon.setting').removeClass('hidden').click(function (event) {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    var sectionID = \"cp-current-page-settings\";\n\n                    if (CP_Customizer.isRightSidebarVisible(sectionID)) {\n                        CP_Customizer.hideRightSidebar();\n                    } else {\n                        CP_Customizer.openRightSidebar(sectionID);\n                    }\n                });\n            }\n        });\n        var sectionID = 'page_content_section';\n        $sectionsSidebarTogglers.click(function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n\n\n            if (CP_Customizer.isRightSidebarVisible(sectionID)) {\n                CP_Customizer.hideRightSidebar();\n                $sectionsSidebarTogglers.removeClass('active');\n            } else {\n                CP_Customizer.openRightSidebar(sectionID);\n                $sectionsSidebarTogglers.addClass('active');\n            }\n        });\n\n        CP_Customizer.focusContentSection = function (toFocus) {\n            CP_Customizer.openRightSidebar(\"page_content_section\", {\n                focus: '[data-category=' + toFocus + ']'\n            })\n        };\n\n        function getNextInArray(data, start, separator) {\n            var increments = data.filter(function (item) {\n                return item.replace(start, '').length;\n            }).map(function (item) {\n                return parseInt(item.replace(start + (separator || '--'), '')) || 0;\n            });\n\n            return increments.length ? Math.max.apply(Math, increments) + 1 : 1;\n        }\n\n        function getNextId(start) {\n            var ids = CP_Customizer.preview.getContentNodes().filter(function (item) {\n                return (item.tagName && item.tagName !== 'undefined' && item.tagName.toLowerCase() === 'div' && item.id.indexOf(start) === 0)\n            }).map(function (item) {\n                return item.id\n            });\n            return start + \"-\" + getNextInArray(ids, start, '-');\n        }\n\n        function getNextDataId(start) {\n            var dataIds = CP_Customizer.preview.getContentNodes().filter(function (item) {\n                return (item.tagName && item.tagName !== 'undefined' && item.tagName.toLowerCase() === 'div' && item.getAttribute('data-id') && (item.getAttribute('data-id') || \"\").indexOf(start) === 0)\n            }).map(function (item) {\n                return item.getAttribute('data-id')\n            });\n\n            return start + \"--\" + getNextInArray(dataIds, start);\n        }\n\n\n        CP_Customizer.preview.insertSectionFromData = function (data, skipEvent) {\n            if (data) {\n                var $content = $(data.content),\n                    dataId = getNextDataId(data.category || data.elementId);\n\n                $content.attr('id', getNextId(data.category || data.elementId));\n                $content.attr('data-id', dataId);\n\n                var index;\n\n                if (data.prepend === true || parseInt(data.prepend) === 1) {\n                    index = 0;\n                }\n\n                CP_Customizer.preview.insertContentSection($content, index);\n\n                var sectionStyle = CP_Customizer.getSectionExports(data.id).sectionStyle;\n                if (sectionStyle) {\n                    _.each(sectionStyle, function (selectors, media) {\n                        _.each(selectors, function (props, selector) {\n                            CP_Customizer.contentStyle.setProps('[data-id=\"' + dataId + '\"] ' + selector, \"\", props, media);\n                        });\n                    });\n                }\n\n                if (skipEvent !== true) {\n                    CP_Customizer.trigger('UPDATE_SECTIONS_LIST');\n                }\n            }\n\n            return {\n                index: index,\n                $content: $content\n            };\n        };\n\n        var $sectionsList = $(\"#page_full_rows\");\n\n        $sectionsList.sortable({\n            scroll: true,\n            appendTo: \"body\",\n            axis: 'y',\n            handle: '.reorder-handler',\n            start: function (event, ui) {\n                ui.placeholder.width(ui.item[0].offsetWidth);\n                ui.placeholder.height(ui.item[0].offsetHeight);\n                startPosition = ui.item.index();\n            },\n            sort: function (event, ui) {\n                ui.helper.css({\n                    'left': '18px',\n                    'position': 'fixed',\n                    'top': event.clientY\n                });\n\n            },\n            stop: function (event, ui) {\n                var node = CP_Customizer.preview.getRootNode().children('[data-id=\"' + ui.item.data('id') + '\"]');\n                var nodes = CP_Customizer.preview.getRootNode().children('[data-id]').not(node);\n                var prevNode;\n                var newPos = ui.item.index();\n                //get dropped node gutenberg comments\n                var startCommentNode = CP_Customizer.preview.getGutenbergBlockCommentStart(node.get(0));\n                var endCommentNode = CP_Customizer.preview.getGutenbergBlockCommentEnd(node.get(0));\n                \n                //get dropped node sibling \n                if (newPos < nodes.length) {\n                    prevNode = nodes.eq(newPos);\n                } else {\n                    prevNode = nodes.last();\n                }\n\n                //get dropped node sibling gutenberg comments\n                var prevNodeCommentNode = CP_Customizer.preview.getGutenbergBlockCommentStart(prevNode.get(0));\n                var prevNodeEndCommentNode = CP_Customizer.preview.getGutenbergBlockCommentEnd(prevNode.get(0));\n\n\n                if (newPos < nodes.length) {\n                    nodes.eq(newPos).before(node);\n                } else {\n                    nodes.last().after(node);\n                }\n\n                //reorder gutenberg comments to not break gutenberg sections\n                $(startCommentNode).insertBefore(node);\n                $(endCommentNode).insertAfter(node);\n\n                $(prevNodeCommentNode).insertBefore(prevNode);\n                $(prevNodeEndCommentNode).insertAfter(prevNode);\n\n                CP_Customizer.setContent();\n            }\n        });\n\n        $sectionsList.on('click', '.full_row .item-remove', function (event) {\n            event.preventDefault();\n            var sectionID = $(this).parents('.item').data('id');\n            var node = CP_Customizer.preview.getSectionByDataId(sectionID);\n            var exportID = CP_Customizer.preview.getNodeExportId(node);\n            var anchor = node.attr('id');\n\n            $(this).parents('.item').fadeOut(200);\n            CP_Customizer.hooks.doAction('before_section_remove', $(node));\n            $(node).remove();\n            $(this).parents('.item').remove();\n\n            $('[data-type=\"row-list-control\"] [data-name=\"page_content\"] [data-id=\"' + exportID + '\"]').removeClass('already-in-page');\n            CP_Customizer.updateState(false, false);\n            CP_Customizer.overlays.hideMovableOverlays();\n\n            if (CP_Customizer.menu.anchorExistsInPrimaryMenu(anchor)) {\n                CP_Customizer.menu.removeAnchorFromPrimaryMenu(anchor);\n            }\n        });\n\n\n        var labelChange = _.debounce(function () {\n            var $item = $(this).closest('.full_row');\n            var node = CP_Customizer.preview.getSectionByDataId($item.data('id'));\n            var oldValue = node.attr('data-label');\n            var value = this.value.trim();\n\n            if (value === oldValue) {\n                return;\n            }\n\n            if (value.length === 0) {\n                value = oldValue;\n                this.value = oldValue;\n            }\n\n            node.attr('data-label', value);\n            node.data('label', value);\n\n            var slug = CP_Customizer.getSlug(value);\n\n            if (!slug) {\n                return;\n            }\n\n            if (CP_Customizer.preview.getRootNode().find('[id=\"' + slug + '\"]').length) {\n                var found = false,\n                    index = 1;\n                while (!found) {\n                    if (CP_Customizer.preview.getRootNode().find('[id=\"' + slug + '-' + index + '\"]').length === 0) {\n                        slug += '-' + index;\n                        found = true;\n                    } else {\n                        index++;\n                    }\n                }\n            }\n            var oldId = node.attr('id');\n            node.attr('id', slug);\n            $(this).siblings('.anchor-info').text('#' + slug);\n\n            if (CP_Customizer.menu.anchorExistsInPrimaryMenu(oldId)) {\n                CP_Customizer.menu.updatePrimaryMenuAnchor(oldId, {\n                    anchor: slug,\n                    title: value\n                });\n            }\n\n            CP_Customizer.setContent();\n        }, 500);\n\n\n        $sectionsList.on('keyup', '.full_row input', labelChange);\n\n        $sectionsList.on('dblclick', '.anchor-info', function () {\n            this.contentEditable = true;\n        });\n\n        $sectionsList.on('keypress', '.anchor-info', function (event) {\n\n            if (event.which === 13) {\n                event.preventDefault();\n                event.stopPropagation();\n                this.contentEditable = false;\n            }\n\n        });\n\n        $sectionsList.on('focusout', '.anchor-info', function () {\n            var slug = $(this).text();\n            slug = CP_Customizer.getSlug(slug);\n            $(this).text('#' + slug);\n\n            var $item = $(this).closest('.full_row');\n            var node = CP_Customizer.preview.getSectionByDataId($item.data('id'));\n            var oldId = node.attr('id');\n            node.attr('id', slug);\n            node.attr('id', slug);\n            if (CP_Customizer.menu.anchorExistsInPrimaryMenu(oldId)) {\n                CP_Customizer.menu.updatePrimaryMenuAnchor(oldId, {\n                    anchor: \"#\" + slug,\n                    title: $item.find('input.item-label').val()\n                });\n            }\n\n            this.contentEditable = false;\n            CP_Customizer.setContent();\n        });\n\n\n        $sectionsList.on('click', '.full_row .item-menu-visible', function (event) {\n            event.stopPropagation();\n            event.preventDefault();\n            event.stopImmediatePropagation();\n\n            var $item = $(this).closest('.full_row'),\n                $node = CP_Customizer.preview.getSectionByDataId($item.data('id'));\n\n            if (false === CP_Customizer.menu.getPrimaryMenuID()) {\n                CP_Customizer.menu.createPrimaryMenu();\n            }\n\n            var anchor = $node.attr('id');\n            var label = $node.attr('data-label');\n\n            if (CP_Customizer.menu.anchorExistsInPrimaryMenu(anchor)) {\n                CP_Customizer.menu.removeAnchorFromPrimaryMenu(anchor);\n                $(this).removeClass('active');\n            } else {\n                CP_Customizer.menu.addAnchorToPrimaryMenu(anchor, label);\n                $(this).addClass('active');\n            }\n        });\n\n        function focusSection(item) {\n\n            var section = CP_Customizer.preview.getSectionByDataId($(item).data('id'));\n\n            CP_Customizer.preview.find('html,body').animate({\n                scrollTop: section.offset().top\n            }, 500);\n\n            $(item).addClass('focused').siblings().removeClass('focused');\n\n            CP_Customizer.trigger('section_focused', section);\n        }\n\n        $sectionsList.on('click', '.full_row .item-settings', function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n            var customizerSection = $(this).attr('data-setting');\n\n            var section = CP_Customizer.preview.getSectionByDataId($(this).closest('.full_row').data('id'));\n\n            if (CP_Customizer.isRightSidebarVisible(customizerSection)) {\n                CP_Customizer.hideRightSidebar();\n            }\n\n            CP_Customizer.openRightSidebar(customizerSection, {\n                floating: CP_Customizer.hooks.applyFilters('content_section_setting_float', true),\n                y: $(this).offset().top,\n                section: section\n            });\n\n            focusSection($(this).closest('.full_row'));\n\n        });\n\n\n        $sectionsList.on('click', '.full_row', function () {\n\n            var section = CP_Customizer.preview.getSectionByDataId($(this).data('id'));\n\n            if (!section.length) {\n                return;\n            }\n\n            focusSection($(this));\n\n            CP_Customizer.hideRightSidebar();\n\n\n        });\n\n        var skipableKeyCodes = [8, 46, 16, 17, 18];\n        var labelValidaton = function (event) {\n\n            if (skipableKeyCodes.indexOf(event.keyCode) === -1 && event.key.length === 1) {\n                if (!event.key.match(/[A-Za-z0-9\\s]/)) {\n                    event.preventDefault();\n                    event.stopPropagation();\n                }\n            }\n        };\n        $sectionsList.on('keydown', '.full_row input', labelValidaton);\n        \n        var gutenbergCounter = 1;\n        var isGutenbergSection = false;\n        function getListModel(elem) {\n            var $node = $(elem);\n            \n            //add gutenberg sections to list\n            isGutenbergSection = false;\n            if ($node.attr(\"class\") && $node.attr(\"class\").indexOf(\"wp-block\") !== -1 || elem.tagName == \"P\")\n            {\n                var gutenbergId = \"gutenberg-section-\" + gutenbergCounter++;\n                $node.attr({\"id\": gutenbergId, \"data-id\": gutenbergId, \"data-export-id\": gutenbergId, \"data-label\" :\"Gutenberg\"});\n                isGutenbergSection = true;\n            }\n\n            var \n                label = $node.attr('data-label') || $node.attr('id'),\n                id = $node.attr('id') || \"\",\n                sectionID = $node.attr('data-id'),\n                exportID = $node.attr('data-export-id'),\n                inMenu = CP_Customizer.menu.anchorExistsInPrimaryMenu(id),\n                setting = $node.attr('data-setting') ? $node.attr('data-setting') : false;\n            setting = CP_Customizer.hooks.applyFilters('content_section_setting', setting);\n\n            return {\n                label: label,\n                id: id,\n                setting: (isGutenbergSection? false : setting),\n                sectionID: sectionID,\n                exportID: exportID,\n                inMenu: inMenu\n            };\n        }\n\n        var openedSectionsCategories = {};\n\n        function updateSectionsList() {\n            var data = CP_Customizer.preview.getRootNode().children().map(function (index, elem) {\n                return getListModel(elem);\n            });\n\n            $sectionsList.children('.item.full_row').remove();\n\n            var availableRowsList = $('[data-type=\"row-list-control\"] [data-name=\"page_content\"]');\n            var $controlItems = availableRowsList.find('li.available-item');\n\n            var allowMultiple = (availableRowsList.closest('[data-selection=\"multiple\"]').length > 0);\n\n\n            function openCategory($category) {\n                var $this = $($category);\n\n                var $items = $this.data('items');\n\n                if (!$items || $items.length === 0) {\n                    $items = $this.nextUntil('li.category-title', 'li.available-item');\n                    $this.data('items', $items);\n                }\n\n                $items.fadeIn(50);\n                $this.attr('data-item-open', 1);\n                $this.removeAttr('data-item-closed');\n                openedSectionsCategories[$this.attr('data-category')] = true;\n            }\n\n            function closeCategory($category) {\n                var $this = $($category);\n\n                var $items = $this.data('items');\n\n                if (!$items || $items.length === 0) {\n                    $items = $this.nextUntil('li.category-title', 'li.available-item');\n                    $this.data('items', $items);\n                }\n\n                $items.fadeOut(50);\n                $this.removeAttr('data-item-open');\n                $this.attr('data-item-closed', 1);\n                openedSectionsCategories[$this.attr('data-category')] = false;\n            }\n\n\n            var $categoryTitles = availableRowsList.find('li.category-title');\n            $categoryTitles.addClass('closeable');\n            $categoryTitles.each(function (index) {\n                    if (!$(this).attr('data-item-closed')) {\n                        $(this).attr('data-item-open', 1);\n                    }\n\n                    if (index > 1 && !openedSectionsCategories[$(this).attr('data-category')]) {\n                        closeCategory($(this));\n                    }\n                }\n            );\n\n            $categoryTitles.off('click').on('click', function () {\n\n\n                if ($(this).attr('data-item-open')) {\n                    closeCategory($(this));\n                } else {\n                    openCategory($(this));\n                }\n            });\n\n\n            data.each(function (index, _data) {\n\n                // ignore elements injected by plugins and that do not match the companion structure\n                if (!_data.exportID) {\n                    return;\n                }\n\n                $sectionsList.children('.empty').before(listItemTemplate(_data));\n\n\n                if (allowMultiple && !data.once) {\n                    return;\n                }\n\n                $controlItems.filter('[data-id=\"' + _data.exportID + '\"]').addClass('already-in-page');\n            });\n\n\n            availableRowsList.parent().off('cp.item.click').on('cp.item.click', function (event, itemID, enabled) {\n                var $ = CP_Customizer.preview.jQuery();\n                var data = CP_Customizer.pluginOptions.contentSections[itemID];\n\n                if (data['pro-only']) {\n\n                    CP_Customizer.popUpInfo(window.CP_Customizer.translateCompanionString('This item requires PRO theme'),\n                        '<div class=\"pro-popup-preview-container\">' +\n                        '   <img class=\"pro-popup-preview-image\" src=\"' + data.preview + '\">' +\n                        '   <h3>' + window.CP_Customizer.translateCompanionString('This item is available only in the PRO version') + '</h3>' +\n                        '   <p>' + window.CP_Customizer.translateCompanionString('Please upgrade to the PRO version to use this item and many others.') + '</p>' +\n                        '   <br/>' +\n                        '   <a href=\"https://extendthemes.com/go/materialis-upgrade\" class=\"button button-orange\" target=\"_blank\">' +\n                        window.CP_Customizer.translateCompanionString('Upgrade to PRO') + '</a> ' +\n                        '</div>'\n                    );\n\n                    return;\n                }\n\n                var response = CP_Customizer.preview.insertSectionFromData(data, true);\n\n                var _data = getListModel(response.$content);\n\n                var $listChildren = $sectionsList.children().not('.empty')\n                if (!_.isUndefined(response.index) && $listChildren.length) {\n                    $listChildren.eq(response.index).before(listItemTemplate(_data));\n                } else {\n                    $sectionsList.children('.empty').before(listItemTemplate(_data));\n                }\n            });\n        }\n\n        CP_Customizer.bind('PREVIEW_LOADED', updateSectionsList);\n        CP_Customizer.bind('UPDATE_SECTIONS_LIST', updateSectionsList);\n\n        CP_Customizer.bind(CP_Customizer.events.RIGHT_SECTION_CLOSED, function (ev, sidebar) {\n            $contentLi.find('.cp-add-section.active').removeClass('active');\n        });\n\n        CP_Customizer.bind('content.section.hovered', function (event, $el) {\n            var sectionId = $el.attr('data-id');\n            var $item = $sectionsList.find('[data-id=\"' + sectionId + '\"]');\n            $item.addClass('focused').siblings().removeClass('focused');\n\n            if (!$item.length) {\n                return;\n            }\n\n            $item[0].scrollIntoViewIfNeeded();\n        });\n\n    });\n})(jQuery, window);\n","(function () {\n    var __templates = {};\n\n    var templateOptions = {\n        evaluate: /<#([\\s\\S]+?)#>/g,\n        interpolate: /\\{\\{\\{([\\s\\S]+?)\\}\\}\\}/g,\n        escape: /\\{\\{([^\\}]+?)\\}\\}(?!\\})/g\n        // variable:    'data'\n    };\n\n    function template(text) {\n        text = text.split('<inline-script').join('<script');\n        text = text.split('</inline-script').join('</script');\n\n        return _.template(text, templateOptions);\n    }\n\n    function getCPTemplate(id) {\n        var text = jQuery(\"#cp-content-templates-\" + id)[0].innerHTML;\n\n        return template(text);\n    }\n\n    window.CP_Customizer.addModule(function (CP_Customizer) {\n        var contentTemplates = {\n            text: getCPTemplate(\"text\"),\n            'text-with-checkbox': getCPTemplate(\"text-with-checkbox\"),\n            link: getCPTemplate(\"link\"),\n            image: getCPTemplate(\"image\"),\n            icon: getCPTemplate(\"icon\"),\n            list: getCPTemplate(\"list\"),\n            'linked-icon': getCPTemplate(\"linked-icon\"),\n            getCPScriptTemplate: getCPTemplate\n        };\n\n        CP_Customizer.jsTPL = _.extend(CP_Customizer.jsTPL, contentTemplates);\n\n        CP_Customizer.jsTPL['select'] = template('' +\n            '<li class=\"customize-control customize-control-text\">' +\n            '    <label>' +\n            '        <span class=\"customize-control-title\">{{{  label  }}}</span>' +\n            '        <select type=\"text\" id=\"{{{ id }}}\">' +\n            '            <# jQuery.each(choices,function(index,value){ #>' +\n            '                <option value=\"{{{ value }}}\"  ><# print(CP_Customizer.translateCompanionString(index)) #></option>' +\n            '            <# }) #>' +\n            '        </select>' +\n            '        <script>' +\n            '                jQuery(\"#{{ id }}\").val(\"{{{ value }}}\") ' +\n            '        </script>' +\n            '    </label>' +\n            '</li>' +\n            '');\n\n\n        CP_Customizer.jsTPL['selectize'] = template('' +\n            ' <li class=\"customize-control customize-control-text\">' +\n            '    <label>' +\n            '        <span class=\"customize-control-title\">{{{  label  }}}</span>' +\n            '        <select {{ (data.multiple ? \\'multiple\\' : \\'\\') }} id=\"{{{ id }}}\">' +\n            '        <# var choices = _.isFunction(data.choices) ? data.choices() : data.choices #>' +\n            '        <# _.each(choices, function(label, _v) { ' +\n            '               var Vs = _.isArray(value) ? value: value.split(\\',\\').map(function(item){return item.trim()});' +\n            '               var isSelected = (Vs.indexOf(_v) !== -1)' +\n            '            #>' +\n            '           <option {{ ( isSelected ? \"selected=\\'true\\' \": \"\" ) }} value=\"{{{ _v }}}\">' +\n            '               {{{  label  }}}' +\n            '            </option>' +\n            '        <# }); #>' +\n            '        </select>' +\n            '    </label>' +\n            '    <script>' +\n            '        jQuery(\"#{{ id }}\").selectize({' +\n            '             maxItems: {{ (data.multiple ? \"null\" : \"1\") }},' +\n            '             plugins: {{{ (data.multiple ? \"[\\'remove_button\\']\" : \"[]\") }}}' +\n            '        })' +\n            '    </script>' +\n            '</li>' +\n            '');\n\n        CP_Customizer.jsTPL['selectize-remote'] = template('' +\n            '<li class=\"customize-control customize-control-selectize-remote\">' +\n            '    <label>' +\n            '        <span class=\"customize-control-title\">{{{  label  }}}</span>' +\n            '        <select id=\"{{{ id }}}\"></select>' +\n            '    </label>' +\n            '</li>' +\n            '');\n\n\n        CP_Customizer.jsTPL['checkbox'] = template('' +\n            '<li class=\"customize-control customize-control-checkbox\">' +\n            '    <span class=\"customize-control-title\">{{{  label  }}}</span>' +\n            '    <div style=\"clear: both\">' +\n            '       <label for=\"{{{ id }}}\">\\n' +\n            '           <input  {{ (value?\"checked=\\'true\\'\":\"\") }} id=\"{{{ id }}}\" type=\"checkbox\">{{ text  }}' +\n            '       </label>' +\n            '  </div>' +\n            '</li>' +\n            '');\n\n        CP_Customizer.jsTPL.compile = template;\n    });\n})();","(function () {\n    window.CP_Customizer.addModule(function (CP_Customizer) {\n\n        var iconStyles = [\n            {\n                value: 'normal',\n                label: window.CP_Customizer.translateCompanionString('Normal'),\n                classes: 'normal-shape'\n            },\n            {\n                value: 'round-bg',\n                label: window.CP_Customizer.translateCompanionString('Rounded background'),\n                classes: 'reverse round'\n            },\n            {\n                value: 'bordered',\n                label: window.CP_Customizer.translateCompanionString('Bordered'),\n                classes: 'bordered round'\n            }\n        ];\n\n\n        var iconSizes = [\n            {\n                value: 'small',\n                label: window.CP_Customizer.translateCompanionString('Small'),\n                classes: 'small'\n            },\n            {\n                value: 'normal',\n                label: window.CP_Customizer.translateCompanionString('Normal'),\n                classes: 'normal-size'\n            },\n            {\n                value: 'big',\n                label: window.CP_Customizer.translateCompanionString('Large'),\n                classes: 'big'\n            },\n            {\n                value: 'large',\n                label: window.CP_Customizer.translateCompanionString('Extra Large'),\n                classes: 'large'\n            }\n        ];\n\n        function setIconStyle(style, $icon) {\n            var toRemove = iconStyles.map(function (style) {\n                return style.classes;\n            });\n\n            var toAdd = \"\";\n\n            iconStyles.forEach(function (iconStyle) {\n                if (iconStyle.value === style) {\n                    toAdd = iconStyle.classes\n                }\n            });\n\n            $icon.removeClass(toRemove.join(' ')).addClass(toAdd);\n\n        }\n\n        function getIconStyle($icon) {\n            var result = 'normal';\n\n            iconStyles.forEach(function (style) {\n                if (style.classes.trim()) {\n                    var selector = CP_Customizer.utils.normalizeClassAttr(style.classes, true);\n                    if ($icon.is(selector)) {\n                        result = style.value;\n                    }\n                }\n            });\n            return result;\n        }\n\n\n        function setIconSize(size, $icon) {\n            var toRemove = iconSizes.map(function (size) {\n                return size.classes;\n            });\n\n            var toAdd = \"\";\n\n            iconSizes.forEach(function (iconSize) {\n                if (iconSize.value === size) {\n                    toAdd = iconSize.classes\n                }\n            });\n\n            $icon.removeClass(toRemove.join(' ')).addClass(toAdd);\n\n        }\n\n        function getIconSize($icon) {\n            var result = 'normal';\n\n            iconSizes.forEach(function (size) {\n                if (size.classes.trim()) {\n                    var selector = CP_Customizer.utils.normalizeClassAttr(size.classes, true);\n                    if ($icon.is(selector)) {\n                        result = size.value;\n                    }\n                }\n            });\n            return result;\n        }\n\n\n        // normal texts panel\n        CP_Customizer.addContainerDataHandler(CP_Customizer.TEXT_ELEMENTS, function ($el) {\n            var label =  window.CP_Customizer.translateCompanionString($el.attr('data-popup-label') || \"\");\n            var result = [\n\n                {\n                    label: label || window.CP_Customizer.translateCompanionString(\"Text\"),\n                    type: \"text\",\n                    value: $el.text().trim()\n                }\n            ];\n\n            if ($el.parent().is('a') || $el.is('.mdi')) {\n                return [];\n            }\n\n            return result;\n\n        }, function ($el, value, type, field) {\n            switch (type) {\n                case \"text\":\n                    var html = CP_Customizer.utils.htmlDecode($el.html()).replace(field.value, value);\n                    $el.html(html);\n                    break;\n            }\n        });\n\n        // containers selector\n        CP_Customizer.preview.addDataContainerSelector('[data-hover-fx]');\n\n        // link panel;\n        CP_Customizer.addContainerDataHandler('a', function ($el) {\n            var linkIsShortcode = $el.is('[data-attr-shortcode^=\"href:\"]');\n\n            var hasClass = ($el.attr('class') || \"\").trim().length > 0;\n\n            var result = [\n\n                {\n                    label: (hasClass ? window.CP_Customizer.translateCompanionString(\"Button\") : window.CP_Customizer.translateCompanionString(\"Link\"))\n                    + \" \" + window.CP_Customizer.translateCompanionString(\"Text\"),\n                    type: \"text\",\n                    value: $el.text().trim()\n                }\n            ];\n\n            if (!linkIsShortcode) {\n                result.push({\n                    label: window.CP_Customizer.translateCompanionString(\"Link\"),\n                    type: \"link\",\n                    value: {\n                        link: CP_Customizer.preview.cleanURL($el.attr('href') || \"\"),\n                        target: $el.attr('target') || \"_self\"\n                    }\n                });\n            }\n\n            return result;\n\n        }, function ($el, value, type, field) {\n            switch (type) {\n                case \"link\":\n                    $el.attr('href', value.link);\n                    $el.attr('target', value.target);\n\n                    $el.attr('data-cp-link', 1);\n\n                    break;\n                case \"text\":\n                    if (!field.name) {\n                        var html = CP_Customizer.utils.htmlDecode($el.html()).replace(field.value, value);\n                        $el.html(html);\n                    }\n                    break;\n            }\n        });\n\n\n        // list panel;\n        CP_Customizer.addContainerDataHandler('ul', function ($el) {\n            var items = $el.children('li');\n\n            items = items.map(function (index, item) {\n                return {\n                    \"label\": window.CP_Customizer.translateCompanionString(\"Item\") + \" \" + index,\n                    \"value\": jQuery(item).html(),\n                    \"id\": \"item_\" + index\n                }\n            })\n\n            var result = {\n                label: window.CP_Customizer.translateCompanionString(\"List items\"),\n                type: \"list\",\n                value: items,\n                getValue: function ($control) {\n                    var items = [];\n                    $control.children().each(function () {\n                        items.push(jQuery(this).find('.item-editor').val());\n                    })\n                    return items;\n                }\n            }\n\n            return result;\n\n        }, function ($el, items, type) {\n\n            var orig = $el.children().eq(0).clone();\n            $el.empty();\n\n            for (var i = 0; i < items.length; i++) {\n                var $item = orig.clone();\n                $item.html(items[i]);\n                $el.append($item);\n            }\n        });\n\n        // image link panel\n        CP_Customizer.addContainerDataFilter(function ($el) {\n            return !($el.is('a') && $el.children().is('img'));\n        });\n\n        CP_Customizer.addContainerDataHandler('img', function ($el) {\n\n            var mediaType = \"image\",\n                mediaData = false;\n\n            if ($el.attr('data-size')) {\n                mediaType = \"cropable\";\n                var size = $el.attr('data-size').split('x');\n\n                var section = CP_Customizer.preview.getNodeSection($el);\n                var sectionExports = CP_Customizer.getSectionExports(section);\n\n                var flexible = _.isUndefined(sectionExports.maintainCropPropotion) ? true : sectionExports.maintainCropPropotion;\n\n                if ($el.is('[data-size-flexible=false]')) {\n                    flexible = false;\n                }\n\n                mediaData = {\n                    width: size[0],\n                    height: size[1],\n                    flexible: flexible\n                };\n            }\n\n\n            var image = [{\n                label: window.CP_Customizer.translateCompanionString(\"Image\"),\n                mediaType: mediaType,\n                mediaData: mediaData,\n                type: \"image\",\n                value: ($el[0].currentSrc || $el.attr('src'))\n            }];\n\n            if ($el.parent().is('a')) {\n                image.push({\n                    label: window.CP_Customizer.translateCompanionString(\"Link\"),\n                    type: \"link\",\n                    value: {\n                        link: CP_Customizer.preview.cleanURL($el.parent().attr('href') || \"\"),\n                        target: $el.parent().attr('target') || \"_self\"\n                    }\n                });\n            }\n            return image;\n\n        }, function ($el, value, type) {\n            switch (type) {\n                case 'image':\n                    $el.attr(\"src\", value);\n                    $el.removeAttr('srcset');\n                    $el.removeAttr('src-orig');\n                    $el.removeAttr('width');\n                    $el.removeAttr('height');\n                    break;\n                case 'link':\n                    $el.parent().attr('href', value.link);\n                    $el.parent().attr('target', value.target);\n                    break;\n            }\n        });\n\n        // data-bg=[image]\n\n        function getLinkFromBgImageValue(value) {\n            value = value.replace(/url\\((.*)\\)/, \"$1\");\n            return CP_Customizer.utils.phpTrim(value, \"\\\"'\");\n        }\n\n        CP_Customizer.addContainerDataHandler('[data-bg=image]', function ($el) {\n\n            var mediaType = \"image\",\n                mediaData = false;\n\n            if ($el.attr('data-size')) {\n                mediaType = \"cropable\";\n                var size = $el.attr('data-size').split('x');\n                mediaData = {\n                    width: size[0],\n                    height: size[1]\n                };\n            }\n\n\n            return [{\n                label: window.CP_Customizer.translateCompanionString(\"Background Image\"),\n                mediaType: mediaType,\n                mediaData: mediaData,\n                type: \"image\",\n                value: getLinkFromBgImageValue($el.css('background-image'))\n            }];\n\n        }, function ($el, value, type) {\n            switch (type) {\n                case 'image':\n                    $el.css(\"background-image\", 'url(\"' + value + '\")');\n                    break;\n            }\n        });\n\n\n        // material icons icon with link\n\n        CP_Customizer.addContainerDataFilter(function ($el) {\n            return !($el.children().is('i.mdi') && $el.is('a'));\n        });\n\n        var mdiIconRegexp = /mdi\\-[a-z\\-]+/ig;\n\n        CP_Customizer.addContainerDataHandler('a i.mdi', function ($el) {\n\n            var mediaType = \"icon\",\n                mediaData = false;\n\n            var result = [{\n                label: window.CP_Customizer.translateCompanionString(\"Material Icon\"),\n                mediaType: mediaType,\n                mediaData: mediaData,\n                canHide: true,\n                type: \"linked-icon\",\n                value: {\n                    icon: $el.attr('class').match(mdiIconRegexp).pop(),\n                    link: CP_Customizer.preview.cleanURL($el.parent().attr('href') || \"\"),\n                    target: $el.parent().attr('target') || \"_self\",\n                    visible: CP_Customizer.preview.isNodeVisible($el.parent())\n                }\n            }];\n\n            if ($el.parent().is('.read-more')) {\n                result = [{\n                    label: window.CP_Customizer.translateCompanionString(\"Text\"),\n                    type: \"text\",\n                    value: $el.parent().text().trim()\n                }, {\n                    label: window.CP_Customizer.translateCompanionString(\"Link\"),\n                    type: \"link\",\n                    value: {\n                        link: CP_Customizer.preview.cleanURL($el.parent().attr('href') || \"\"),\n                        target: $el.parent().attr('target') || \"_self\"\n                    }\n                }]\n\n            }\n\n            return result;\n\n\n        }, function ($el, value, type, field) {\n\n            if (type === \"linked-icon\") {\n                var classValue = $el.attr('class');\n                classValue = classValue.replace(/mdi\\-[a-z\\-]+/ig, \"\") + \" \" + value.icon;\n                $el.attr('class', classValue);\n\n                $el.parent().attr('href', value.link);\n                $el.parent().attr('target', value.target);\n\n                value.visible = _.isUndefined(value.visible) ? true : value.visible;\n\n                if (value.visible) {\n                    CP_Customizer.preview.showNode($el.parent());\n                } else {\n                    CP_Customizer.preview.hideNode($el.parent());\n                }\n            }\n\n            if (type === \"link\") {\n                $el.parent().attr('href', value.link);\n                $el.parent().attr('target', value.target);\n                $el.parent().attr('data-cp-link', 1);\n            }\n            if (type === \"text\") {\n                $el.parent().html(value).append($el);\n            }\n        });\n\n\n        CP_Customizer.addContainerDataHandler('i.mdi', function ($el) {\n\n            var mediaType = \"icon\",\n                mediaData = false;\n\n            return [{\n                label: window.CP_Customizer.translateCompanionString(\"Material Icon\"),\n                mediaType: mediaType,\n                mediaData: mediaData,\n                canHide: $el.closest('[data-type=group]').length > 0,\n                type: \"icon\",\n                styles: iconStyles,\n                sizes: iconSizes,\n                value: {\n                    icon: $el.attr('class').match(mdiIconRegexp).pop(),\n                    style: getIconStyle($el),\n                    size: getIconSize($el),\n                    visible: CP_Customizer.preview.isNodeVisible($el)\n                }\n            }];\n\n\n        }, function ($el, value, type, prop) {\n            if (type === \"icon\") {\n                var classValue = $el.attr('class');\n                classValue = classValue.replace(/mdi\\-[a-z\\-]+/ig, \"\") + \" \" + value.icon;\n                $el.attr('class', classValue);\n\n                value.visible = _.isUndefined(value.visible) ? true : value.visible;\n\n                if (value.visible) {\n                    // $el.removeAttr('data-reiki-hidden');\n                    CP_Customizer.preview.showNode($el);\n                } else {\n                    CP_Customizer.preview.hideNode($el);\n                }\n\n                setIconStyle(value.style, $el);\n                setIconSize(value.size, $el);\n            }\n\n        });\n\n\n    });\n})();\n","/* global top */\n\n(function (root, CP_Customizer, $) {\n\n    function newColumnContent() {\n        /*\n         <div data-cpid=\"new\" class=\"column_28\" reveal-fx=\"RevealFX115\" data-scrollreveal=\"RevealFX115\">\n         <img width=\"184\" height=\"174\" src=\"@@ROOT@@/wp-content/themes/reiki-dragdrop/images/icon1.png\" data-content-code-editable=\"true\" data-content-editable=\"true\" contenteditable=\"true\">\n         <h4 data-content-code-editable=\"true\" data-content-editable=\"true\" contenteditable=\"true\">ON CANVAS TEXT EDITING</h4>\n         <p class=\"small_text1\" data-content-code-editable=\"true\" data-content-editable=\"true\" contenteditable=\"true\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n         </div>\n         */\n    }\n\n    var unwrapComment = /\\/\\*!?(?:\\@preserve)?[ \\t]*(?:\\r\\n|\\n)([\\s\\S]*?)(?:\\r\\n|\\n)\\s*\\*\\//;\n\n    function getFunctionCommentTemplate(fn) {\n        //return typeof fn === 'function' ? unwrapComment.exec(fn.toString())[1] : fn;\n        if (typeof fn === 'function')\n        {\n            var exec = unwrapComment.exec(fn.toString());\n            if (exec) return exec[1];\n        } \n        return fn;\n    }\n\n    CP_Customizer.addModule(function (CP_Customizer) {\n        var $ = jQuery; // use global jquery until preview is ready\n\n        CP_Customizer.bind(CP_Customizer.events.PREVIEW_LOADED, function () {\n            // add preview jquery  spectrum plugin\n            // use preview jQuery as the $ for the next elements\n            $ = CP_Customizer.preview.jQuery();\n            $.fn.spectrum = root.jQuery.fn.spectrum;\n        });\n\n        function getColorComponent() {\n            if ($('#cp-spectrum-keeper').length) {\n                return $('#cp-spectrum-keeper');\n            }\n\n            var $template = $(\n                '   <div id=\"cp-spectrum-picker\" class=\"picker\">' +\n                '       <div class=\"bg-picker\">' +\n                '            <h5 class=\"legend\">' + window.CP_Customizer.translateCompanionString('Background Color') + '</h5>' +\n                '           <input name=\"color\" type=\"text\" />' +\n                '       </div>');\n\n            var colorPalette = root.CP_Customizer.data().bgColorPalette;\n            $template.find('[name=color]').spectrum({\n                flat: true,\n                preferredFormat: \"hex\",\n                showPaletteOnly: true,\n                color: '#ffffff',\n                palette: [colorPalette],\n                move: function (color) {\n                    if (!color) {\n                        return;\n                    }\n                    var node = $(this).closest('.node-overlay').data().node;\n                    $(this).find('[name=color]').spectrum(\"set\", color.toString());\n                    $(node).css('background-color', color.toString());\n                    $(this).closest('.cog.active').removeClass('active');\n                    CP_Customizer.markSave();\n                },\n                change: function (color) {\n                    if (!color || !$(this).closest('.node-overlay').data()) {\n                        return;\n                    }\n                    $(this).find('[name=color]').spectrum(\"set\", color.toString());\n                    var node = $(this).closest('.node-overlay').data().node;\n                    $(node).css('background-color', color.toString());\n                    $(this).closest('.cog.active').removeClass('active');\n                    CP_Customizer.markSave();\n                }\n            });\n\n            $template.find('[name=\"addImage\"]').click(function (event) {\n                var node = $(this).closest('.node-overlay').data().node;\n                CP_Customizer.openImageManager(function (image) {\n                    $(node).css('background-image', \"url(\" + image + \")\");\n                    CP_Customizer.markSave();\n                });\n            });\n\n\n            $template.find('[name=\"removeImage\"]').click(function (event) {\n                var node = $(this).closest('.node-overlay').data().node;\n                $(node).css('background-image', \"none\");\n                CP_Customizer.markSave();\n            });\n\n\n            $template.find('[name=\"coverImage\"]').click(function (event) {\n                var node = $(this).closest('.node-overlay').data().node;\n\n                if ($(this).hasClass('active')) {\n                    $(node).css('background-size', \"auto\");\n                    $(node).css('background-repeat', \"repeat\");\n                } else {\n                    $(node).css('background-size', \"cover\");\n                    $(node).css('background-repeat', \"no-repeat\");\n                }\n                CP_Customizer.markSave();\n                $(this).toggleClass('active');\n            });\n\n            function update() {\n\n                var node = $(this).closest('.node-overlay').data().node;\n\n                var backgroundColor = \"#\" + tinycolor($(node).css('background-color')).toHex();\n\n                if (colorPalette.indexOf(backgroundColor) !== -1) {\n                    $(this).closest('.cog-subitems').removeClass('disabled');\n                    $(this).find('[name=color]').spectrum(\"set\", $(node).css('background-color'));\n\n                } else {\n                    $(this).closest('.cog-subitems').addClass('disabled');\n                    var $reason = $(this).closest('.cog-subitems').children('p.disable-reason');\n\n                    if ($reason.length === 0) {\n                        $reason = $(\"<p class='disable-reason'> \" + window.CP_Customizer.translateCompanionString('This section has a custom background color') +\n                            \"<br/>\" + window.CP_Customizer.translateCompanionString('Background can be changed in PRO') + \"</p>\");\n                        $(this).closest('.cog-subitems').prepend($reason);\n                    }\n\n                }\n\n                // if ($(node).css('background-size') && $(node).css('background-size') === \"cover\") {\n                //     $template.find('[name=\"coverImage\"]').addClass('active');\n                // } else {\n                //     $template.find('[name=\"coverImage\"]').removeClass('active');\n                // }\n\n\n            }\n\n            $template.data('update', update.bind($template));\n            return $template;\n        }\n\n\n        CP_Customizer.overlays.registerFixedOverlayOptions({\n            'section': {\n                'title': function (node) {\n                    var label = $(node).attr('data-label') ? $(node).attr('data-label') + \" [\" +\n                        window.CP_Customizer.translateCompanionString('Section') + \"]\" : window.CP_Customizer.translateCompanionString('SECTION');\n                    return label;\n                },\n                'toolbarTitle': function (node) {\n                    var label = $(node).attr('data-label') ? $(node).attr('data-label') + \" [\" + window.CP_Customizer.translateCompanionString('Section') + \"]\" :\n                        window.CP_Customizer.translateCompanionString('SECTION');\n                    return label;\n                },\n                toolbar_binds: {\n                    hover: [\n                        function (event, overlay) {\n\n                            // layout toggle\n                            var $changerItem = overlay.find('[data-name=\"section_layout_width_changer\"]');\n\n                            if (!$(this).closest(CP_Customizer.preview.getPageContainerSelector()).length) {\n                                $changerItem.hide();\n                            } else {\n                                $changerItem.show();\n                            }\n\n                            if ($(this).children().is('.gridContainer')) {\n                                $changerItem.text( window.CP_Customizer.translateCompanionString('Make full width'));\n                                $changerItem.data('toMake', 'full');\n                            } else {\n                                $changerItem.text( window.CP_Customizer.translateCompanionString('Make Centered'));\n                                $changerItem.data('toMake', 'centered');\n                            }\n\n                            var $bgChanger = overlay.find('[data-name=\"page_background_image\"]');\n                            var $isTransparent = tinycolor(getComputedStyle($(this)[0]).backgroundColor).getAlpha() === 0;\n\n                            if ($isTransparent) {\n                                $bgChanger.show();\n                            } else {\n                                $bgChanger.hide();\n                            }\n                        },\n                        function () {\n                        }\n                    ]\n                },\n                'items': [{\n                    'name': 'section_layout_width_changer',\n                    'title':  window.CP_Customizer.translateCompanionString('Make full width'),\n                    'on_click': function (node) {\n                        var toMake = $(this).data().toMake;\n                        switch (toMake) {\n                            case 'centered':\n                                $(node).children().not('[class*=\"section-separator\"]').addClass('gridContainer');\n                                break;\n                            case 'full':\n                                $(node).children().not('[class*=\"section-separator\"]').removeClass('gridContainer');\n                                break;\n                        }\n                        $(this).trigger('reiki.update_overlays');\n                        CP_Customizer.hooks.doAction('section_layout_changed', node, toMake);\n                        $(this).closest('.overlay-toolbar').trigger('mouseover');\n\n                        CP_Customizer.markSave();\n                    }\n                }, {\n                    'name': 'section_color_changer',\n                    'title': window.CP_Customizer.translateCompanionString('Change background'),\n                    'classes': 'subitems-arrow',\n                    'on_hover': [function () {\n                        var $subitemsContainer = $(this).children('.cog-subitems').length ? $(this).children('.cog-subitems') : $(\"<div class='cog-subitems' />\");\n                        $brush = getColorComponent();\n\n                        $subitemsContainer.empty();\n                        $subitemsContainer.appendTo($(this));\n\n                        $subitemsContainer.append($brush);\n                        $brush.data('update')();\n                    }, function () {\n                        //console.log('hover out');\n                    }]\n\n                }, {\n                    'name': 'page_background_image',\n                    'title':  window.CP_Customizer.translateCompanionString('Change background Image'),\n                    'on_click': function (event) {\n                        root.CP_Customizer.wpApi.control('background_image').focus();\n                    }\n                }]\n            },\n            'list': {\n                'nodeOverrider': function (node) {\n                    return $(node).is('[data-type=\"row\"]') ? $(node) : $(node).find('[data-type=\"row\"]').eq(0);\n                },\n                'title': function (node) {\n                    var label = $(node).closest('[data-label]').length ? $(node).closest('[data-label]').attr('data-label') +\n                        \" [\" + window.CP_Customizer.translateCompanionString(\"List\") + \"]\" : window.CP_Customizer.translateCompanionString(\"List\");\n                    return label;\n                },\n                'toolbarTitle': function (node) {\n                    var label = $(node).closest('[data-label]').length ? $(node).closest('[data-label]').attr('data-label') + \" [\" +\n                        window.CP_Customizer.translateCompanionString(\"List\") + \"]\" : window.CP_Customizer.translateCompanionString(\"List\");\n                    return label;\n                },\n                toolbar_binds: {\n                    hover: [\n                        function (event, overlay) {\n                            if ($(this).find('[data-type=\"row\"]').length || $(this).is('[data-type=\"row\"]')) {\n                                overlay.find('[data-category=\"list\"]').show();\n\n                                if ($(overlay.data('node')).find('[data-type=\"row\"]').is('[data-content-shortcode]')) {\n                                    overlay.find('[data-name=\"row_add_item\"]').hide();\n                                    overlay.find('[data-name=\"columns_reorder\"]').hide();\n                                } else {\n                                    overlay.find('[data-name=\"row_add_item\"]').show();\n                                    overlay.find('[data-name=\"columns_reorder\"]').show();\n\n                                }\n                            } else {\n                                overlay.find('[data-category=\"list\"]').hide();\n                            }\n                        },\n                        function (event, overlay) {\n                        }\n                    ]\n                },\n                'items': [{\n                    'name': 'row_add_item',\n                    'title': window.CP_Customizer.translateCompanionString('Add item'),\n                    'on_click': function (node) {\n                        var content = getFunctionCommentTemplate(newColumnContent);\n                        var $content;\n                        if (!$(node).children().length) {\n                            content = content.split(\"@@ROOT@@\").join(getWPLocation());\n                            $content = $(content);\n                        } else {\n                            $content = $(node).children('div').first().clone(false, false);\n                        }\n\n\n                        $content = root.CP_Customizer.preview.cleanNode($content);\n                        root.CP_Customizer.preview.insertNode($content, $(node));\n                        root.CP_Customizer.hooks.doAction('section_list_item_refresh');\n                    }\n                }, {\n                    'name': 'columns_per_row',\n                    'title': window.CP_Customizer.translateCompanionString('Columns per row'),\n                    'classes': 'subitems-arrow',\n                    'on_hover': [function (node) {\n                        var $subitemsContainer = $(this).children('.cog-subitems').length ? $(this).children('.cog-subitems') : $(\"<div class='cog-subitems' />\");\n                        $subitemsContainer.empty();\n\n                        var cols = [1, 2, 3, 4, 6];\n\n                        if(node.is('[data-max-items]')) {\n                            var newCols = [];\n                            var maxCols = parseInt(node.attr('data-max-items'));\n                            for (var kc = 0; kc < cols.length; kc++) {\n                                if(cols[kc]<=maxCols) {\n                                    newCols.push(cols[kc]);\n                                }\n                            }\n                            cols = newCols;\n                        }\n\n                        for (var i = 0; i < cols.length; i++) {\n                            var colNr = cols[i];\n                            var itemData = {\n                                'title': colNr + (colNr > 1 ? \" \" +\n                                    window.CP_Customizer.translateCompanionString(\"columns\") : \" \" +\n                                    window.CP_Customizer.translateCompanionString(\"column\")),\n                                'name': colNr + \"_columns\",\n                                'on_click': function (node) {\n\n                                    var columns = this.data('name').replace('_columns', '');\n                                    var value = parseInt(columns);\n                                    columns = parseInt(columns);\n                                    columns = parseInt(12 / columns);\n\n\n                                    if (node.is('[data-dynamic-columns]')) {\n                                        var setting = node.attr('data-dynamic-columns');\n                                        if (setting !== \"handled\") {\n\n                                            root.CP_Customizer.setMod(setting, columns, \"refresh\");\n\n                                        } else {\n\n                                            CP_Customizer.hooks.doAction('dynamic_columns_handle', columns, node, value);\n\n                                        }\n                                        return;\n                                    }\n\n                                    root.CP_Customizer.markSave();\n                                    var _class = 'col-md-' + columns,\n                                        colsRegexp = /((cp[0-9]+cols)(\\s|$))|((col\\-md\\-[0-9]+)(\\s|$))/ig,\n                                        currentDevice = root.CP_Customizer.preview.currentDevice();\n\n                                    switch (currentDevice) {\n                                        case \"tablet\":\n                                            colsRegexp = /((cp[0-9]+cols\\-tablet)(\\s|$))|((col\\-sm\\-[0-9]+)(\\s|$))/ig;\n                                            _class = 'col-sm-' + columns;\n                                            break;\n\n                                        case \"mobile\":\n                                            colsRegexp = /((cp[0-9]+cols\\-mobile)(\\s|$))|((col\\-xs\\-[0-9]+)(\\s|$))/;\n                                            _class = 'col-xs-' + columns;\n                                            break;\n                                    }\n\n                                    $(node).children().each(function (index, el) {\n                                        var $col = $(el),\n                                            _classAttr = $col.attr('class');\n\n                                        // remove existing cols:\n                                        _classAttr = _classAttr.replace(colsRegexp, \"\");\n\n                                        // add new class\n                                        _classAttr += \" \" + _class + \" \";\n\n\n                                        //remove not needed spaces in class attribute\n                                        _classAttr = _classAttr.replace(/\\s\\s+/, \" \");\n                                        $col.attr('class', _classAttr);\n\n\n                                    });\n\n                                    if (!$(node).hasClass('row')) {\n                                        $(node).attr('class', 'row');\n                                    }\n\n\n                                    // wait for animations\n                                    _.delay(root.CP_Customizer.overlays.updateAllOverlays, 600);\n                                }\n                            };\n\n                            var $button = root.CP_Customizer.overlays.getOverlayOptionButton(itemData, node);\n                            $subitemsContainer.append($button);\n                        }\n\n                        $subitemsContainer.appendTo($(this));\n                    }, function () {\n                    }]\n                }, {\n                    'name': 'columns_reorder',\n                    'title': window.CP_Customizer.translateCompanionString('Reorder Items'),\n                    'classes': 'subitems-arrow',\n                    'on_hover': [function (node) {\n\n                        var $ = root.CP_Customizer.preview.jQuery();\n                        var $subitemsContainer = $(this).children('.cog-subitems').length ? $(this).children('.cog-subitems') : $(\"<div class='cog-subitems' />\");\n                        $subitemsContainer.empty();\n\n                        var itemsNo = $(node).children().length;\n                        for (var i = 0; i < itemsNo; i++) {\n                            var item = node.children().eq(i);\n                            var title = item.text().replace(/\\s\\s+/g, \" \").trim();\n\n\n                            title = title.trim().length ? title : \"\";\n\n                            if (!title && item.find('img').length) {\n                                title = CP_Customizer.utils.getFileInfo(item.find('img').eq(0).attr('src')).filename;\n                            }\n\n                            if (!title) {\n                                title = '[ ITEM ]';\n                            }\n\n                            title = title.replace(/(^.{1,10})(.*)$/, function (matches, firstMatch, secondMatch) {\n                                var result = (firstMatch || \"\").trim() + (secondMatch && secondMatch.length ? \"[...]\" : \"\");\n                                return result;\n                            });\n\n                            var itemData = {\n                                'title': (i + 1) + ') ' + title,\n                                'name': 'reorder_item_' + i,\n                                'classes': 'sortable-item'\n                            };\n\n                            var $button = root.CP_Customizer.overlays.getOverlayOptionButton(itemData, item);\n                            $button.data('item', item);\n                            $subitemsContainer.append($button);\n                        }\n\n                        $subitemsContainer.appendTo($(this));\n                        $subitemsContainer.sortable({\n                            'axis': 'y',\n                            'start': function (event, ui) {\n                                ui.helper.css({\n                                    'position': 'fixed',\n                                    'transition': 'none',\n                                    'background-color': '#ffffff',\n                                    'left': ui.helper.offset().left + 'px'\n                                });\n\n                                ui.item.parent().addClass('big-heat-area');\n                            },\n                            sort: function (event, ui) {\n                                ui.helper.css('top', event.clientY);\n                            },\n                            'stop': function (event, ui) {\n                                var index = ui.item.index();\n                                var node = jQuery(ui.item).data().item;\n                                root.CP_Customizer.preview.insertNode(node, node.parent(), index);\n                                ui.item.parent().removeClass('big-heat-area');\n                            }\n                        });\n                    }, function () {\n                    }]\n                }]\n            },\n            'column': {\n                'title': window.CP_Customizer.translateCompanionString('List item'),\n                'toolbarTitle': 'List item',\n                'node_binds': {\n                    'hover': [function () {\n                        $(this).data().overlay.removeClass('hide');\n                    }, function () {\n                        $(this).data().overlay.addClass('hide');\n                    }]\n                },\n                'items': [{\n                    'name': 'row_remove_item',\n                    'title': window.CP_Customizer.translateCompanionString('Remove Item'),\n                    'on_click': function (node) {\n                        var $overlay = $($(node).data('overlay'));\n                        if ($overlay.data('node-observer')) {\n                            $overlay.data('node-observer').disconnect();\n                        }\n\n                        $overlay.remove();\n                        $(node).remove();\n                        $(this).trigger('reiki.update_overlays');\n                        root.CP_Customizer.markSave();\n                    }\n                }]\n\n            }\n        });\n    });\n\n    function addSectionOverlay($nodes) {\n\n        $nodes.addFixedOverlay({\n            types: [\"section\", \"list\"],\n            \"classes\": ['section-overlay']\n        });\n\n    }\n\n\n    CP_Customizer.bind(CP_Customizer.events.ADD_FIXED_OVERLAYS, function (event, $startNode) {\n        addSectionOverlay($startNode.find('[data-label]'));\n\n        if ($startNode.is('[data-label]')) {\n            _.delay(function () {\n                addSectionOverlay($startNode);\n            }, 0);\n        }\n\n    });\n})(window, CP_Customizer, jQuery);\n","(function (root, CP_Customizer, $) {\n\n    CP_Customizer.addModule(function (CP_Customizer) {\n        _.extend(CP_Customizer, {\n            menu: {\n\n                getGlobalOption: function(name, defaultValue){\n                    if (cpCustomizerGlobal && cpCustomizerGlobal.pluginOptions && cpCustomizerGlobal.pluginOptions.hasOwnProperty(name)) {\n                        return cpCustomizerGlobal.pluginOptions[name];\n                    }\n\n                    return defaultValue;\n                },\n\n                getPrimaryLocationModName: function() {\n                    var primaryLocation = this.getGlobalOption(\"primaryMenuLocation\", \"primary\");\n                    return 'nav_menu_locations[' + primaryLocation + ']';\n                },\n\n                getHomeUrl: function() {\n                    var primaryMenuHomeUrl = this.getGlobalOption(\"homeUrl\", CP_Customizer.preview.data().siteURL);\n                    return primaryMenuHomeUrl;\n                },\n\n                canSetPrimaryLocation: function() {\n                    var canSetPrimaryLocation = this.getGlobalOption(\"canSetPrimaryLocation\", true);\n                    return canSetPrimaryLocation;\n                },\n\n                getPrimaryLocationDefaultLanguageMenu: function() {\n                    var primaryLocationDefaultLanguageMenu = this.getGlobalOption(\"primaryLocationDefaultLanguageMenu\", -1);\n                    return primaryLocationDefaultLanguageMenu;\n                },\n\n                createPrimaryMenu: function () {\n                    var api = root.wp.customize;\n                    var customizeId,\n                        name = name || root.CP_Customizer.translateCompanionString(\"Main Menu\"),\n                        placeholderId = api.Menus.generatePlaceholderAutoIncrementId();\n\n                    customizeId = 'nav_menu[' + String(placeholderId) + ']';\n\n                    api.create(customizeId, customizeId, {}, {\n                        type: 'nav_menu',\n                        transport: api.Menus.data.settingTransport,\n                        previewer: api.previewer\n                    });\n\n                    api(customizeId).set($.extend({},\n                        api.Menus.data.defaultSettingValues.nav_menu, {\n                            name: name\n                        }\n                    ));\n\n\n                    menuSection = new api.Menus.MenuSection(customizeId, {\n                        params: {\n                            id: customizeId,\n                            panel: 'nav_menus',\n                            title: name,\n                            customizeAction: api.Menus.data.l10n.customizingMenus,\n                            type: 'nav_menu',\n                            priority: 10,\n                            menu_id: placeholderId\n                        }\n                    });\n                    api.section.add(customizeId, menuSection);\n\n                    if (this.canSetPrimaryLocation()) {\n                        // set location\n                        api(this.getPrimaryLocationModName()).set(placeholderId);\n                    }\n\n                    var defaultMenu = this.getPrimaryLocationDefaultLanguageMenu();\n\n                    if (defaultMenu !== -1) {\n                        wp.customize.bind(\"save-request-params\", function (query) {\n                            query.icl_translation_of = defaultMenu;\n                            return query;\n                        });\n                    }\n\n\n                    // create home page menu item;\n\n                    this.addAnchorToPrimaryMenu('#page-top', 'Home');\n                },\n\n\n                getPrimaryMenuID: function () {\n                    var menuId = wp.customize(this.getPrimaryLocationModName()).get();\n                    if (wp.customize('nav_menu[' + menuId + ']')) {\n                        return menuId;\n                    } else {\n                        return false;\n                    }\n                },\n\n                getPrimaryMenu: function () {\n                    var menuId = CP_Customizer.menu.getPrimaryMenuID();\n                    if (menuId !== false) {\n                        return wp.customize('nav_menu[' + menuId + ']').get();\n                    } else {\n                        return false;\n                    }\n                },\n\n                focusPrimaryMenuCustomize: function () {\n                    var menuId = CP_Customizer.menu.getPrimaryMenuID();\n                    if (menuId !== false) {\n                        wp.customize.section('nav_menu[' + menuId + ']').focus();\n                        return true;\n                    }\n\n                    return false;\n                },\n\n                getPrimaryMenuControl: function () {\n                    var api = root.wp.customize;\n                    var menuId = CP_Customizer.menu.getPrimaryMenuID();\n\n                    if (menuId) {\n                        return api.Menus.getMenuControl(menuId);\n                    } else {\n                        return false;\n                    }\n                },\n\n                addAnchorToPrimaryMenu: function (anchor, title) {\n                    var api = root.wp.customize;\n                    var customizeId, placeholderId, settingArgs, setting, menuItemControl, menuId, menuControl, position = 0,\n                        priority = 10;\n\n                    menuId = CP_Customizer.menu.getPrimaryMenuID();\n                    menuControl = CP_Customizer.menu.getPrimaryMenuControl();\n\n                    if (!menuId || !menuControl) {\n                        return;\n                    }\n\n                    _.each(menuControl.getMenuItemControls(), function (control) {\n                        if (false === control.setting()) {\n                            return;\n                        }\n                        priority = Math.max(priority, control.priority());\n                        if (0 === control.setting().menu_item_parent) {\n                            position = Math.max(position, control.setting().position);\n                        }\n                    });\n                    position += 1;\n                    priority += 1;\n\n                    var url = CP_Customizer.menu.getHomeUrl();\n                    if (anchor.replace(/#/, '').length) {\n                        url = CP_Customizer.preview.data().pageURL + \"#\" + anchor.replace(/#/, '');\n                    }\n\n                    var item = $.extend({},\n                        api.Menus.data.defaultSettingValues.nav_menu_item, {\n                            'title': title,\n                            'url': url,\n                            'type': 'custom',\n                            'type_label': api.Menus.data.l10n.custom_label,\n                            'object': 'custom'\n                        }, {\n                            nav_menu_term_id: menuId,\n                            original_title: title,\n                            position: position\n                        });\n\n\n                    placeholderId = api.Menus.generatePlaceholderAutoIncrementId();\n                    customizeId = 'nav_menu_item[' + String(placeholderId) + ']';\n                    settingArgs = {\n                        type: 'nav_menu_item',\n                        transport: api.Menus.data.settingTransport,\n                        previewer: api.previewer\n                    };\n\n                    setting = api.create(customizeId, customizeId, {}, settingArgs);\n                    setting.set(item);\n\n                    menuItemControl = new api.controlConstructor.nav_menu_item(customizeId, {\n                        params: {\n                            type: 'nav_menu_item',\n                            content: '<li id=\"customize-control-nav_menu_item-' + String(placeholderId) + '\" class=\"customize-control customize-control-nav_menu_item\"></li>',\n                            section: menuControl.id,\n                            priority: priority,\n                            active: true,\n                            settings: {\n                                'default': customizeId\n                            },\n                            menu_item_id: placeholderId\n                        },\n                        previewer: api.previewer\n                    });\n\n                    api.control.add(customizeId, menuItemControl);\n                    menuControl.debouncedReflowMenuItems();\n\n\n\n                },\n\n                anchorExistsInPrimaryMenu: function (anchor) {\n                    var menuControl = CP_Customizer.menu.getPrimaryMenuControl();\n\n                    if (!menuControl) {\n                        return false;\n                    }\n\n                    anchor = anchor.replace(/#/, '');\n\n                    var itemsControl = menuControl.getMenuItemControls();\n                    for (var i = 0; i < itemsControl.length; i++) {\n                        var itemControl = itemsControl[i];\n                        var url = (itemControl.setting.get().url || \"\").split(\"#\").pop().trim();\n                        if (url === anchor) {\n                            return true;\n                        }\n                    }\n\n                    return false;\n                },\n\n\n                updatePrimaryMenuAnchor: function (oldAnchor, options) {\n                    var menuControl = CP_Customizer.menu.getPrimaryMenuControl();\n\n                    if (!menuControl) {\n                        return false;\n                    }\n\n                    oldAnchor = oldAnchor.replace(/#/, '');\n                    var newAnchor = options.anchor.replace(/#/, '');\n                    var title = options.title;\n\n                    var itemsControl = menuControl.getMenuItemControls();\n                    for (var i = 0; i < itemsControl.length; i++) {\n                        var itemControl = itemsControl[i];\n                        var url = (itemControl.setting.get().url || \"\").split(\"#\").pop().trim();\n                        if (url === oldAnchor) {\n                            var itemData = itemControl.setting();\n                            if (itemData) {\n                                itemData = _.clone(itemData);\n                                itemData.title = title;\n                                itemData.url = CP_Customizer.preview.data().pageURL + \"#\" + newAnchor;\n                                itemControl.setting.set(itemData);\n                                return true;\n                            }\n                        }\n                    }\n\n                    return false;\n                },\n\n                removeAnchorFromPrimaryMenu: function (anchor) {\n                    var api = root.wp.customize;\n                    var menuControl = CP_Customizer.menu.getPrimaryMenuControl();\n\n                    if (!menuControl) {\n                        return false;\n                    }\n\n                    anchor = anchor.replace(/#/, '');\n\n                    var itemsControl = menuControl.getMenuItemControls();\n                    for (var i = 0; i < itemsControl.length; i++) {\n                        var itemControl = itemsControl[i];\n                        var url = (itemControl.setting.get().url || \"\").split(\"#\").pop();\n                        if (url === anchor) {\n                            itemControl.setting.set(false);\n                            api.control.remove(itemControl.id);\n                            return true;\n                        }\n                    }\n\n                    return false;\n                }\n            }\n        });\n    });\n\n})(window, CP_Customizer, jQuery);","(function (root, CP_Customizer, $) {\n    CP_Customizer.addModule(function (CP_Customizer) {\n\n        var panel = CP_Customizer.panels.pageContentPanel;\n\n\n        $('body').on('click', '[data-name=\"page_content_panel\"] span.section-icon.setting.page-settings', function () {\n            CP_Customizer.openRightSidebar('cp-current-page-settings');\n        });\n\n        function getRegisteredControls() {\n            var controls_ids = $('[data-name=\"page_content_panel\"] .page-settings').attr('data-settings');\n            var controls = [];\n            controls_ids.split(',').forEach(function (id) {\n                var _c = wp.customize.control(id);\n                if (_c) {\n                    controls.push(_c);\n                }\n            });\n\n            return controls;\n        }\n\n\n        panel.registerArea('general_page_settings', {\n\n            $controlsHolder: null,\n\n            refreshControls: function () {\n                var controls = getRegisteredControls(),\n                    self = this;\n\n                _.each(controls, function (c) {\n                    self.$controlsHolder.append(c.container);\n                });\n            },\n\n            init: function ($container) {\n\n                this.$controlsHolder = $(\"<ul/>\");\n                $container.append($('<li/>').append(this.$controlsHolder));\n                var self = this;\n\n                self.refreshControls();\n\n                wp.customize.bind('pane-contents-reflowed', function () {\n                    self.refreshControls();\n                })\n            }\n        });\n    });\n})(window, CP_Customizer, jQuery);\n"]}