{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///external \"jQuery\"","webpack:///./src/keditor/constants/cssClass.js","webpack:///./src/keditor/constants/defaults.js","webpack:///./src/keditor/utils/log.js","webpack:///./src/keditor/utils/error.js","webpack:///./src/keditor/utils/generateId.js","webpack:///./src/keditor/utils/getDataAttributes.js","webpack:///./src/keditor/snippet/renderSnippet.js","webpack:///./src/keditor/snippet/renderSnippetFilter.js","webpack:///./src/keditor/snippet/beautifyCategories.js","webpack:///./src/keditor/snippet/initSnippetsFilter.js","webpack:///./src/keditor/modal/hideModal.js","webpack:///./src/keditor/modal/hideSnippetModal.js","webpack:///./src/keditor/constants/actionType.js","webpack:///./src/keditor/constants/toolbarType.js","webpack:///./src/keditor/constants/icon.js","webpack:///./src/keditor/utils/generateToolbar.js","webpack:///./src/keditor/component/getComponentType.js","webpack:///./src/keditor/component/initDynamicContent.js","webpack:///./src/keditor/component/convertToComponent.js","webpack:///./src/keditor/component/initComponent.js","webpack:///./src/keditor/modal/showModal.js","webpack:///./src/keditor/modal/showSnippetModal.js","webpack:///./src/keditor/container/initColumnResizer.js","webpack:///./src/keditor/container/initContainer.js","webpack:///./src/keditor/container/initContainerContent.js","webpack:///./src/keditor/container/convertToContainer.js","webpack:///./src/keditor/modal/initModal.js","webpack:///./src/keditor/modal/initSnippetsModal.js","webpack:///./src/keditor/snippet/renderSnippets.js","webpack:///./src/keditor/modal/initSnippetAction.js","webpack:///./src/keditor/snippet/addSnippetToTarget.js","webpack:///./src/keditor/constants/settingCategory.js","webpack:///./src/keditor/sidebar/closeSidebar.js","webpack:///./src/keditor/sidebar/initSettingForm.js","webpack:///./src/keditor/sidebar/showSettingForm.js","webpack:///./src/keditor/sidebar/openSidebar.js","webpack:///./src/keditor/sidebar/initExtraSettings.js","webpack:///./src/keditor/constants/deviceMode.js","webpack:///./src/keditor/topbar/switchDevice.js","webpack:///./src/keditor/component/getComponentContent.js","webpack:///./src/keditor/container/getContainerContent.js","webpack:///./src/keditor/getContent.js","webpack:///./src/keditor/topbar/setFullscreenMode.js","webpack:///./src/keditor/utils/enterFullscreen.js","webpack:///./src/keditor/utils/exitFullscreen.js","webpack:///./src/keditor/topbar/initTopbarRightActions.js","webpack:///./src/keditor/topbar/initPreviewAction.js","webpack:///./src/keditor/topbar/initFullscreenAction.js","webpack:///./src/keditor/topbar/initSaveAction.js","webpack:///./src/keditor/topbar/initTopbar.js","webpack:///./src/keditor/topbar/initDeviceSwitcher.js","webpack:///./src/keditor/topbar/initTopbarExtraItems.js","webpack:///./src/keditor/utils/getClickedElement.js","webpack:///./src/keditor/constants/keyMap.js","webpack:///./src/keditor/utils/setCopyContent.js","webpack:///./src/keditor/component/deleteComponent.js","webpack:///./src/keditor/iframe/initIframeActions.js","webpack:///./src/keditor/iframe/initSelectAction.js","webpack:///./src/keditor/iframe/initKeyDownAction.js","webpack:///./src/keditor/iframe/initBtnPasteContent.js","webpack:///./src/keditor/iframe/initBtnAddContentAfterComponent.js","webpack:///./src/keditor/iframe/initBtnAddContentAfterContainer.js","webpack:///./src/keditor/iframe/initBtnComponentDelete.js","webpack:///./src/keditor/iframe/initBtnComponentDuplicate.js","webpack:///./src/keditor/iframe/initBtnComponentCopy.js","webpack:///./src/keditor/iframe/initBtnComponentCut.js","webpack:///./src/keditor/iframe/initBtnComponentMoveDown.js","webpack:///./src/keditor/iframe/initBtnComponentMoveUp.js","webpack:///./src/keditor/iframe/initBtnComponentSetting.js","webpack:///./src/keditor/iframe/initBtnContainerDelete.js","webpack:///./src/keditor/iframe/initBtnContainerDuplicate.js","webpack:///./src/keditor/iframe/initBtnContainerCopy.js","webpack:///./src/keditor/iframe/initBtnContainerCut.js","webpack:///./src/keditor/iframe/initBtnContainerMoveDown.js","webpack:///./src/keditor/iframe/initBtnContainerMoveUp.js","webpack:///./src/keditor/iframe/initBtnContainerSetting.js","webpack:///./src/keditor/contentArea/initContentArea.js","webpack:///./src/keditor/iframe/initIframe.js","webpack:///./src/keditor/contentArea/initContentAreas.js","webpack:///./src/keditor/init.js","webpack:///./src/keditor/sidebar/initSidebar.js","webpack:///./src/keditor/destroy.js","webpack:///./src/keditor/index.js","webpack:///./src/keditor/iframe/initIframeCover.js","webpack:///./src/keditor/setContent.js","webpack:///./src/keditor/snippet/addSnippet.js"],"names":["root","factory","exports","module","require","define","amd","a","i","self","this","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","CSS_CLASS","UI","UI_DRAGGING","UI_HIDDEN","UI_CUTTING","UI_RESIZER","SORTABLE","RESIZABLE","WRAPPER","BTN","BTN_GROUP","BTN_PRIMARY","BTN_DEFAULT","STATE_ACTIVE","STATE_OPENED","STATE_SHOWED","STATE_SELECTED","STATE_DUPLICATED","STATE_INITIALIZED","STATE_INITIALIZING","STATE_PREVIEWING","STATE_TOOLBAR_SHOWED","STATE_SIDEBAR_SHOWED","STATE_MODAL_OPENED","STATE_NOT_MATCHED","STATE_HAS_FOOTER","STATE_COPYING","STATE_COPYING_COMPONENT","STATE_COPYING_CONTAINER","STATE_COPYING_SUB_CONTAINER","ADD_CONTENT","PASTE_CONTENT","SIDEBAR","SIDEBAR_HEADER","SIDEBAR_BODY","SIDEBAR_TITLE","SIDEBAR_CLOSER","TOPBAR","TOPBAR_LEFT","TOPBAR_CENTER","TOPBAR_RIGHT","TOPBAR_BUTTON","TOPBAR_TITLE","MODAL","MODAL_COMPONENT","MODAL_CONTAINER","MODAL_HEADER","MODAL_TITLE","MODAL_BODY","MODAL_FOOTER","MODAL_CLOSE","MODAL_ADD","SNIPPET","SNIPPET_INNER","SNIPPET_TITLE","SNIPPET_PREVIEW","SNIPPET_CONTAINER","SNIPPET_COMPONENT","SNIPPETS","SNIPPETS_FILTER","SNIPPETS_FILTER_COMPONENT","SNIPPETS_FILTER_CONTAINER","SNIPPETS_FILTER_LABEL","SNIPPETS_SEARCH","SNIPPETS_FILTER_WRAPPER","SNIPPETS_COMPONENT","SNIPPETS_WRAPPER","TOOLBAR","TOOLBAR_BOTTOM","TOOLBAR_CONTENT_AREA","TOOLBAR_CONTAINER","TOOLBAR_CONTAINER_BOTTOM","TOOLBAR_CONTAINER_CONTENT","TOOLBAR_SUB_CONTAINER","TOOLBAR_SUB_CONTAINER_BOTTOM","TOOLBAR_SUB_CONTAINER_CONTENT","TOOLBAR_COMPONENT","TOOLBAR_COMPONENT_BOTTOM","SETTING","SETTING_FORM","SETTING_FORM_LOADING","CONTENT_AREA","CONTENT_AREA_INNER","CONTENT_AREAS","CONTENT_AREAS_WRAPPER","IFRAME","IFRAME_BODY","IFRAME_WRAPPER","IFRAME_WIDTH_SWITCHER","IFRAME_COVER_WRAPPER","IFRAME_COVER_WRAPPER_FAKE","IFRAME_COVER","IFRAME_COVER_HIDDEN","COMPONENT","COMPONENT_MOVE","COMPONENT_MOVE_UP","COMPONENT_MOVE_DOWN","COMPONENT_SETTING","COMPONENT_DUPLICATE","COMPONENT_COPY","COMPONENT_CUT","COMPONENT_DELETE","COMPONENT_CONTENT","COMPONENT_EXISTING","CONTAINER","CONTAINER_MOVE","CONTAINER_MOVE_UP","CONTAINER_MOVE_DOWN","CONTAINER_DUPLICATE","CONTAINER_COPY","CONTAINER_CUT","CONTAINER_DELETE","CONTAINER_SETTING","CONTAINER_INNER","CONTAINER_CONTENT","CONTAINER_CONTENT_INNER","SUB_CONTAINER","SUB_CONTAINER_CONTENT","PREVIEW_AREA","defaults","title","containerForQuickAddComponent","extraSettings","extraTopbarItems","locale","viewOnMobile","viewOnTablet","viewOnLaptop","viewOnDesktop","previewOn","previewOff","fullscreenOn","fullscreenOff","save","addContent","addContentBelow","pasteContent","pasteContentBelow","move","moveUp","moveDown","setting","copy","cut","delete","snippetCategoryLabel","snippetCategoryAll","snippetCategorySearch","columnResizeTitle","containerSetting","confirmDeleteContainerText","confirmDeleteComponentText","widthMobile","widthTablet","widthLaptop","minWidthDesktop","defaultComponentType","snippetsUrl","snippetsCategoriesSeparator","contentStyles","contentAreasSelector","contentAreasWrapper","concat","containerSettingEnabled","containerSettingInitFunction","containerSettingShowFunction","containerSettingHideFunction","bootstrap","columnResizeEnabled","deviceClass","MOBILE","TABLET","LAPTOP","DESKTOP","gridSystem","width","col","clickComponentToShowSetting","onReady","onSave","content","onSnippetsLoaded","resp","onSnippetsError","jqXHR","onInitIframe","iframe","iframeHead","iframeBody","onContentChanged","event","contentArea","onBeforeInitContentArea","onInitContentArea","children","onBeforeInitContainer","container","onInitContainer","onBeforeContainerDeleted","selectedContainer","onContainerDeleted","onContainerChanged","changedContainer","onContainerDuplicated","originalContainer","newContainer","onContainerSelected","onContainerSnippetAdded","selectedSnippet","onComponentReady","component","onBeforeInitComponent","onInitComponent","onBeforeComponentDeleted","selectedComponent","onComponentDeleted","onComponentChanged","changedComponent","onComponentDuplicated","originalComponent","newComponent","onComponentSelected","onComponentSnippetAdded","onBeforeDynamicContentLoad","dynamicElement","onDynamicContentLoaded","onDynamicContentError","utils_log","console","log","window","KEDITOR_DEBUG","_len","arguments","length","args","Array","_key","apply","utils_error","message","Error","utils_generateId","timestamp","Date","getTime","random","Math","round","utils_getDataAttributes","target","ignoreAttributes","isArray","dataAttributes","$","each","attributes","attr","indexOf","inArray","push","renderSnippet","type","previewUrl","categories","extraAttrs","options","snippetId","generateId","snippetPreviewHtml","snippetContentHtml","join","split","categoryContainer","categoryComponent","renderSnippetFilter","modal","categoriesOptions","category","isDuplicateWithComponent","filterWrapper","find","replaceWith","beautifyCategories","newArray","sort","modal_hideModal","cssTransitionEnd","off","on","hasClass","css","document","body","removeClass","hideSnippetModal","modalTarget","modalTargetAction","val","hideModal","ACTION_TYPE","APPEND","AFTER","TOOLBAR_TYPE","CONTAINER_BOTTOM","SUB_CONTAINER_BOTTOM","COMPONENT_BOTTOM","ICON","MOVE_CONTAINER","MOVE_COMPONENT","MOVE_UP_CONTAINER","MOVE_UP_COMPONENT","MOVE_DOWN_CONTAINER","MOVE_DOWN_COMPONENT","SETTING_CONTAINER","SETTING_COMPONENT","DUPLICATE_CONTAINER","DUPLICATE_COMPONENT","COPY_CONTAINER","COPY_COMPONENT","CUT_CONTAINER","CUT_COMPONENT","DELETE_CONTAINER","DELETE_COMPONENT","DEVICE_MOBILE","DEVICE_TABLET","DEVICE_LAPTOP","DEVICE_DESKTOP","PREVIEW_ON","PREVIEW_OFF","FULLSCREEN_ON","FULLSCREEN_OFF","SAVE","ADD","generateToolbar","isConfigurable","settingBtn","getComponentType","componentType","replace","KEditor","components","error","component_initDynamicContent","closest","dynamicHref","data","getDataAttributes","param","ajax","url","dataType","success","response","status","html","textStatus","errorThrown","convertToComponent","isExisting","is","wrap","parent","removeAttr","addClass","componentData","append","settingEnabled","initDynamicContent","init","modal_showModal","setTimeout","showSnippetModal","actionType","showComponent","showContainer","showModal","initColumnResizer","cols","resizable","handles","resize","e","ui","deviceMode","bsClass","row","colNum","grid","minDiff","diff","abs","getColByWidth","size","innerWidth","initContainer","isNested","containerContent","parents","containerContentInner","containerContentToolbar","appendTo","preventDefault","sortable","handle","helper","items","connectWith","tolerance","receive","item","remove","start","stop","child","convertToContainer","modal_initModal","modalId","hasFooter","undefined","disableOriginEvents","modalFooter","wrapper","initSnippetsModal","initModal","snippetsContentHtml","snippetsHtml","filter","snippet","trim","_renderSnippet$call2","renderSnippets_slicedToArray","_renderSnippetFilter$2","initSnippetsFilter_slicedToArray","timer","txtSearch","cbbFilter","doFilter","selectedCategory","toLowerCase","searchText","snippets","dataCategoriesString","dataCategories","clearTimeout","click","mouseover","mouseout","targetAction","snippetType","snippetContentElement","snippetContent","isModalComponent","isModalContainer","isAddingContainer","isAddingComponent","isAddingComponentWithContainer","trigger","eq","SETTING_CATEGORY","EXTRA","closeSidebar","sidebar","activeForm","sidebarBody","activeType","hideSettingForm","settingComponent","settingContainer","initSettingForm","settingType","settingCategory","initFunction","functionContext","callback","settingForm","loadingText","when","done","showSettingForm","settingTitle","showFunction","sidebarTitle","_initSettingForm$call","shouldCloseSidebar","openSidebar","extraKey","extraSetting","settingInitFunction","settingShowFunction","DEVICE_MODE","switchDevice","topbarCenter","iframeWidthSwitcher","minWidth","getComponentContent","clonedComponent","clone","iframeWrapper","unwrap","getContent","getContainerContent","containerInner","not","keditor_getContent","result","setFullscreenMode","isOn","el","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","fullscreenElement","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","initTopbarRightActions","btnPreview","previewArea","after","isPreviewOn","topbarRight","btnFullscreen","setFullScreenMode","isFullscreen","addEventListener","isFullScreen","btnSave","initTopbar","topbarId","topbar","topbarLeft","btnMobile","btnTablet","btnLaptop","btnDesktop","isPlainObject","btn","getClickedElement","selector","KEY_MAP","ESC","setCopyContent","isCut","copyContent","cutContent","deleteComponent","destroy","initIframeActions","iframeDoc","keyCode","isCopy","source","isComponent","isContainer","isSubContainer","toolbarBottom","toolbarContainerContent","siblings","toolbarContentArea","action","confirm","nextComponent","next","prevComponent","prev","before","nextContainer","prevContainer","initContentArea","dontInitToolbar","contentAreaInner","contentAreaToolbar","axis","initIframe","element","wrapperId","contents","open","close","iframeWindow","contentWindow","contentDocument","defaultView","styles","style","idStr","href","id","contentAreas","originalContent","empty","config","extend","DEFAULTS","sidebarId","_typeof","autoInit","instances","keditor_destroy","fn","_classCallCheck","_defineProperty","onSuccess","onError","cover","prepend","jquery","_slicedToArray","blank","keditor","instance","slice","constructor"],"mappings":";CAAA,SAAAA,EAAAC,GACA,oBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,EAAAG,QAAA,gBACA,sBAAAC,eAAAC,IACAD,OAAA,WAAAJ,OACA,CACA,IAAAM,EAAA,iBAAAL,QAAAD,EAAAG,QAAA,WAAAH,EAAAD,EAAA,QACA,QAAAQ,KAAAD,GAAA,iBAAAL,gBAAAF,GAAAQ,GAAAD,EAAAC,IAPA,CASC,oBAAAC,UAAAC,KAAA,SAAAC,GACD,mBCTA,IAAAC,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAZ,QAGA,IAAAC,EAAAS,EAAAE,GAAA,CACAN,EAAAM,EACAC,GAAA,EACAb,QAAA,IAUA,OANAc,EAAAF,GAAAG,KAAAd,EAAAD,QAAAC,IAAAD,QAAAW,GAGAV,EAAAY,GAAA,EAGAZ,EAAAD,QA0DA,OArDAW,EAAAK,EAAAF,EAGAH,EAAAM,EAAAP,EAGAC,EAAAO,EAAA,SAAAlB,EAAAmB,EAAAC,GACAT,EAAAU,EAAArB,EAAAmB,IACAG,OAAAC,eAAAvB,EAAAmB,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CT,EAAAe,EAAA,SAAA1B,GACA,oBAAA2B,eAAAC,aACAN,OAAAC,eAAAvB,EAAA2B,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAvB,EAAA,cAAiD6B,OAAA,KAQjDlB,EAAAmB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAAlB,EAAAkB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFAvB,EAAAe,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAAlB,EAAAO,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAtB,EAAA0B,EAAA,SAAApC,GACA,IAAAmB,EAAAnB,KAAA+B,WACA,WAA2B,OAAA/B,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAU,EAAAO,EAAAE,EAAA,IAAAA,GACAA,GAIAT,EAAAU,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD5B,EAAA+B,EAAA,GAIA/B,IAAAgC,EAAA,mBClFA1C,EAAAD,QAAAS,sFC0IemC,EA1IG,CACdC,GAAI,aACJC,YAAa,sBACbC,UAAW,oBACXC,WAAY,qBACZC,WAAY,uBAEZC,SAAU,cACVC,UAAW,cAEXC,QAAS,kBAETC,IAAK,cACLC,UAAW,oBACXC,YAAa,sBACbC,YAAa,sBAEbC,aAAc,SACdC,aAAc,SACdC,aAAc,SACdC,eAAgB,WAChBC,iBAAkB,aAClBC,kBAAmB,cACnBC,mBAAoB,eACpBC,iBAAkB,aAClBC,qBAAsB,yBACtBC,qBAAsB,yBACtBC,mBAAoB,eACpBC,kBAAmB,cACnBC,iBAAkB,aAClBC,cAAe,UACfC,wBAAyB,oBACzBC,wBAAyB,oBACzBC,4BAA6B,wBAE7BC,YAAa,kBACbC,cAAe,oBAEfC,QAAS,kBACTC,eAAgB,yBAChBC,aAAc,uBACdC,cAAe,wBACfC,eAAgB,yBAEhBC,OAAQ,iBACRC,YAAa,sBACbC,cAAe,wBACfC,aAAc,uBACdC,cAAe,qBACfC,aAAc,uBAEdC,MAAO,gBACPC,gBAAiB,0BACjBC,gBAAiB,0BACjBC,aAAc,uBACdC,YAAa,sBACbC,WAAY,qBACZC,aAAc,uBACdC,YAAa,sBACbC,UAAW,oBAEXC,QAAS,kBACTC,cAAe,wBACfC,cAAe,wBACfC,gBAAiB,0BACjBC,kBAAmB,4BACnBC,kBAAmB,4BACnBC,SAAU,mBACVC,gBAAiB,0BACjBC,0BAA2B,oCAC3BC,0BAA2B,oCAC3BC,sBAAuB,gCACvBC,gBAAiB,0BACjBC,wBAAyB,kCACzBC,mBAAoB,6BACpBC,iBAAkB,2BAElBC,QAAS,kBACTC,eAAgB,yBAChBC,qBAAsB,+BACtBC,kBAAmB,4BACnBC,yBAA0B,mCAC1BC,0BAA2B,oCAC3BC,sBAAuB,gCACvBC,6BAA8B,uCAC9BC,8BAA+B,wCAC/BC,kBAAmB,4BACnBC,yBAA0B,mCAE1BC,QAAS,kBACTC,aAAc,uBACdC,qBAAsB,+BAEtBC,aAAc,uBACdC,mBAAoB,6BACpBC,cAAe,wBACfC,sBAAuB,gCAEvBC,OAAQ,iBACRC,YAAa,sBACbC,eAAgB,yBAChBC,sBAAuB,gCACvBC,qBAAsB,+BACtBC,0BAA2B,oCAC3BC,aAAc,uBACdC,oBAAqB,eAErBC,UAAW,oBACXC,eAAgB,qBAChBC,kBAAmB,wBACnBC,oBAAqB,0BACrBC,kBAAmB,wBACnBC,oBAAqB,0BACrBC,eAAgB,qBAChBC,cAAe,oBACfC,iBAAkB,uBAClBC,kBAAmB,4BACnBC,mBAAoB,qBAEpBC,UAAW,oBACXC,eAAgB,qBAChBC,kBAAmB,wBACnBC,oBAAqB,0BACrBC,oBAAqB,0BACrBC,eAAgB,qBAChBC,cAAe,oBACfC,iBAAkB,uBAClBC,kBAAmB,wBACnBC,gBAAiB,0BACjBC,kBAAmB,4BACnBC,wBAAyB,kCAEzBC,cAAe,wBACfC,sBAAuB,gCAEvBC,aAAc,wBCrIHC,EAAA,CAMXC,MAAO,uBAMPC,8BAA6B,2IA8D7BC,cAAe,KAefC,iBAAkB,KAElBC,OAAQ,CAKJC,aAAc,iBACdC,aAAc,iBACdC,aAAc,iBACdC,cAAe,kBAMfC,UAAW,aACXC,WAAY,cAMZC,aAAc,gBACdC,cAAe,iBAMfC,KAAM,OAMNC,WAAY,cAMZC,gBAAiB,oBAMjBC,aAAc,gBAMdC,kBAAmB,sBAMnBC,KAAM,OAMNC,OAAQ,UAMRC,SAAU,YAMVC,QAAS,UAMTC,KAAM,OAMNC,IAAK,MAMLC,OAAQ,SAMRC,qBAAsB,WAMtBC,mBAAoB,MAMpBC,sBAAuB,oBAMvBC,kBAAmB,iBAMnBC,iBAAkB,qBAMlBC,2BAA4B,sFAM5BC,2BAA4B,uFAOhCC,YAAa,IAMbC,YAAa,IAMbC,YAAa,KAMbC,gBAAiB,KAOjBC,qBAAsB,QAMtBC,YAAa,yDAMbC,4BAA6B,IAc7BC,cAAe,GAMfC,qBAAsB,KAMtBC,oBAAmB,eAAAC,OAAiBlK,EAAUC,GAA3B,KAAAiK,OAAiClK,EAAUoF,sBAA3C,YAMnB+E,yBAAyB,EAQzBC,6BAA8B,KAS9BC,6BAA8B,KAQ9BC,6BAA8B,KAK9BC,UAAW,CAKPC,qBAAqB,EAMrBC,YAAa,CACTC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,QAAS,MAObC,WAAY,CAAC,CACTC,MAAO,WACPC,IAAK,GACN,CACCD,MAAO,YACPC,IAAK,GACN,CACCD,MAAO,GACPC,IAAK,GACN,CACCD,MAAO,YACPC,IAAK,GACN,CACCD,MAAO,YACPC,IAAK,GACN,CACCD,MAAO,GACPC,IAAK,GACN,CACCD,MAAO,YACPC,IAAK,GACN,CACCD,MAAO,YACPC,IAAK,GACN,CACCD,MAAO,GACPC,IAAK,GACN,CACCD,MAAO,YACPC,IAAK,IACN,CACCD,MAAO,YACPC,IAAK,IACN,CACCD,MAAO,IACPC,IAAK,IACN,CACCD,MAAO,IACPC,IAAK,OAIbC,6BAA6B,EAM7BC,QAAS,aAQTC,OAAQ,SAAUC,KASlBC,iBAAkB,SAAUC,KAS5BC,gBAAiB,SAAUC,KAW3BC,aAAc,SAAUC,EAAQC,EAAYC,KAS5CC,iBAAkB,SAAUC,EAAOC,KAQnCC,wBAAyB,SAAUD,KASnCE,kBAAmB,SAAUF,GACzB,OAAOA,EAAYG,SAAZ,IAAAhC,OAAyBlK,EAAUkF,qBAAsBgH,YASpEC,sBAAuB,SAAUC,EAAWL,KAS5CM,gBAAiB,SAAUD,EAAWL,KAUtCO,yBAA0B,SAAUR,EAAOS,EAAmBR,KAU9DS,mBAAoB,SAAUV,EAAOS,EAAmBR,KAUxDU,mBAAoB,SAAUX,EAAOY,EAAkBX,KAWvDY,sBAAuB,SAAUb,EAAOc,EAAmBC,EAAcd,KAUzEe,oBAAqB,SAAUhB,EAAOS,EAAmBR,KAWzDgB,wBAAyB,SAAUjB,EAAOe,EAAcG,EAAiBjB,KAQzEkB,iBAAkB,SAAUC,KAS5BC,sBAAuB,SAAUD,EAAWnB,KAS5CqB,gBAAiB,SAAUF,EAAWnB,KAUtCsB,yBAA0B,SAAUvB,EAAOwB,EAAmBvB,KAU9DwB,mBAAoB,SAAUzB,EAAOwB,EAAmBvB,KAUxDyB,mBAAoB,SAAU1B,EAAO2B,EAAkB1B,KAWvD2B,sBAAuB,SAAU5B,EAAO6B,EAAmBC,EAAc7B,KAUzE8B,oBAAqB,SAAU/B,EAAOwB,EAAmBvB,KAWzD+B,wBAAyB,SAAUhC,EAAO8B,EAAcZ,EAAiBjB,KAUzEgC,2BAA4B,SAAUC,EAAgBd,EAAWnB,KAUjEkC,uBAAwB,SAAUD,EAAgBxC,EAAOO,KAUzDmC,sBAAuB,SAAUF,EAAgBxC,EAAOO,MC3pB7CoC,EAAA,WACX,GAAIC,SAAkC,mBAAhBA,QAAQC,KAAsBC,OAAOC,cAAe,SAAAC,EAAAC,UAAAC,OAD3DC,EAC2D,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAD3DF,EAC2DE,GAAAJ,UAAAI,GACtET,QAAQC,IAAIS,MAAMV,QAAlB,CAA4B,gBAA5BlE,OAA+CyE,MCFxCI,EAAA,SAACC,GACZ,MAAM,IAAIC,MAAJ,eAAA/E,OAAyB8E,KCDpBE,EAAA,WACX,IAAIC,GAAa,IAAIC,MAAQC,UACzBC,EAASC,KAAKC,MAAsB,WAAhBD,KAAKD,UAC7B,oBAAApF,OAAqBiF,GAArBjF,OAAiCoF,ICHtBG,EAAA,SAAUC,EAAQC,EAAkBC,GAC/C,IAAIC,EAAiBD,EAAU,GAAK,GAepC,OAdKD,IACDA,EAAmB,IAGvBG,EAAEC,KAAKL,EAAO7Q,IAAI,GAAGmR,WAAY,SAAUtS,EAAGuS,GACP,IAA/BA,EAAK1R,KAAK2R,QAAQ,WAA8D,IAA5CJ,EAAEK,QAAQF,EAAK1R,KAAMoR,KACrDC,EACAC,EAAeO,KAAf,GAAAlG,OAAuB+F,EAAK1R,KAA5B,MAAA2L,OAAqC+F,EAAKhR,MAA1C,MAEA4Q,EAAeI,EAAK1R,MAAQ0R,EAAKhR,SAKtC4Q,GCbIQ,EAAA,SAAUC,EAAM9I,EAAO+I,EAAYC,EAAYpF,EAASqF,GACnE,IACIC,EADO9S,KACQ8S,QACfC,EAAYC,IACZC,EAAkB,0CAAA3G,OAELlK,EAAUC,GAFL,KAAAiK,OAEWlK,EAAUoD,QAFrB,KAAA8G,OAEyC,cAAToG,EAAuBtQ,EAAUwD,kBAAoBxD,EAAUyD,kBAF/F,kCAAAyG,OAGGyG,EAHH,8BAAAzG,OAIDoG,EAJC,uCAAApG,OAKQ1C,EALR,4CAAA0C,OAMasG,EANb,2CAAAtG,OAQClK,EAAUqD,cARX,qCAAA6G,OASKlK,EAAUuD,gBATf,qCAAA2G,OASiEqG,EATjE,+CAAArG,OAUKlK,EAAUsD,cAVf,aAAA4G,OAUwC1C,EAVxC,MAAA0C,OAUkD1C,EAVlD,0DAclBsJ,EAAkB,eAAA5G,OAAkByG,EAAlB,uBAAAzG,OAAiDuG,EAAWM,KAAK,KAAjE,KAAA7G,OAAyEkB,EAAzE,cAUtB,OARAoF,EAAaA,EAAWQ,MAAMN,EAAQ5G,6BAEzB,cAATwG,EArBO1S,KAsBFqT,kBAtBErT,KAsBuBqT,kBAAkB/G,OAAOsG,IACjB,IAA/BF,EAAKJ,QAAQ,eAvBbtS,KAwBFsT,kBAxBEtT,KAwBuBsT,kBAAkBhH,OAAOsG,IAGpD,CACHK,EACAC,IC/BOK,EAAA,WACX,IAAIxT,EAAOC,KACP8S,EAAU/S,EAAK+S,QACfU,EAAQzT,EAAKyT,MAEbC,EAAiB,wCAAAnH,OAA2CwG,EAAQ9I,OAAOsB,mBAA1D,aACrB4G,EAAEC,KAAKpS,EAAKuT,kBAAmB,SAAUxT,EAAG4T,GACxCD,GAAiB,kBAAAnH,OAAsBoH,EAAtB,aAAApH,OAA0ClK,EAAU4D,0BAApD,MAAAsG,OAAkFoH,EAAlF,eAErBxB,EAAEC,KAAKpS,EAAKsT,kBAAmB,SAAUvT,EAAG4T,GACxC,IAAIC,GAA4E,IAAjDzB,EAAEK,QAAQmB,EAAU3T,EAAKuT,mBACxDG,GAAiB,kBAAAnH,OAAsBoH,EAAtB,aAAApH,OAA0ClK,EAAU6D,0BAApD,KAAAqG,OAAiFqH,EAA2BvR,EAAUiB,iBAAmB,GAAzI,MAAAiJ,OAAgJoH,EAAhJ,eAGrB,IAAIE,EAAgBJ,EAAMK,KAAN,IAAAvH,OAAelK,EAAUgE,0BAM7C,OAL6B,IAAzBwN,EAAc9C,SACd8C,EAAgB1B,EAAC,eAAA5F,OAAgBlK,EAAUC,GAA1B,KAAAiK,OAAgClK,EAAUgE,wBAA1C,aACjBoN,EAAMK,KAAN,IAAAvH,OAAelK,EAAU+C,cAAe2O,YAAYF,IAGjD,CACHH,EACAG,ICxBOG,EAAA,SAAUnB,GAErB,IADA,IAAIoB,EAAW,GACNlU,EAAI,EAAGA,EAAI8S,EAAW9B,OAAQhR,IAAK,CACxC,IAAI4T,EAAWd,EAAW9S,IAAM,GAEf,KAAb4T,IAAsD,IAAnCxB,EAAEK,QAAQmB,EAAUM,IACvCA,EAASxB,KAAKkB,GAItB,OAAOM,EAASC,8rCCPL,ICDAC,EAAA,SAAUV,GACrB,IAAIW,EAAmB,kFAEvBX,EAAMY,IAAID,GAAkBE,GAAGF,EAAkB,WACxCX,EAAMc,SAASlS,EAAUe,gBAC1BqQ,EAAMe,IAAI,UAAW,QACrBrC,EAAEsC,SAASC,MAAMC,YAAYtS,EAAUuB,uBAI/C6P,EAAMkB,YAAYtS,EAAUe,eCTjBwR,EAAA,WACX,IACInB,EADOxT,KACMwT,MADNxT,KAGN4U,YAAc,KAHR5U,KAIN6U,kBAAoB,KACzBrB,EAAMK,KAAN,IAAAvH,OAAelK,EAAUgB,iBAAkBsR,YAAYtS,EAAUgB,gBACjEoQ,EAAMK,KAAN,IAAAvH,OAAelK,EAAUwB,oBAAqB8Q,YAAYtS,EAAUwB,mBACpE4P,EAAMK,KAAN,IAAAvH,OAAelK,EAAU2D,kBAAmB+O,IAAI,IAChDtB,EAAMkB,YAAYtS,EAAU4C,iBAC5BwO,EAAMkB,YAAYtS,EAAU6C,iBAE5B8P,EAAUxU,KAXCP,KAWUwT,ICVVwB,EALK,CAChBC,OAAQ,SACRC,MAAO,SCaIC,EAfM,CACjB9N,aAAc,IAEduB,UAAW,IACXU,kBAAmB,KACnB8L,iBAAkB,KAElB5L,cAAe,IACf6L,qBAAsB,KACtB5L,sBAAuB,KAEvBxB,UAAW,IACXqN,iBAAkB,MCgCPC,EA5CF,CACTrR,YAAa,6BACbC,cAAe,8BAEfqR,eAAgB,iCAChBC,eAAgB,+BAEhBC,kBAAmB,mCACnBC,kBAAmB,mCAEnBC,oBAAqB,qCACrBC,oBAAqB,qCAErBC,kBAAmB,4BACnBC,kBAAmB,4BAEnBC,oBAAqB,gCACrBC,oBAAqB,gCAErBC,eAAgB,gCAChBC,eAAgB,gCAEhBC,cAAe,4BACfC,cAAe,4BAEfC,iBAAkB,gCAClBC,iBAAkB,gCAElBC,cAAe,qCACfC,cAAe,qCACfC,cAAe,qCACfC,eAAgB,sCAEhBC,WAAY,kCACZC,YAAa,wCAEbC,cAAe,uCACfC,eAAgB,qCAEhBC,KAAM,mCAENC,IAAK,8BCrCMC,EAAA,SAAUxE,EAAMyE,GAC3B,IACIrE,EADO9S,KACQ8S,QACfsE,EAAa,GAEjB,OAAQ1E,GACJ,KAAKyC,EAAavM,UAClB,KAAKuM,EAAa3L,cAKd,OAJI2N,IACAC,EAAU,wCAAA9K,OAA2ClK,EAAUC,GAArD,KAAAiK,OAA2DlK,EAAUgH,kBAArE,aAAAkD,OAAkGwG,EAAQ9I,OAAOiB,QAAjH,MAAAqB,OAA6HiJ,EAAKO,kBAAlI,SAGd,iCAAAxJ,OACkBlK,EAAUC,GAD5B,KAAAiK,OACkClK,EAAUmE,QAD5C,KAAA+F,OACuDlK,EAAUsE,kBADjE,KAAA4F,OACsFoG,IAASyC,EAAa3L,cAAgBpH,EAAUyE,sBAAwB,GAD9J,iEAAAyF,OAE+ClK,EAAUC,GAFzD,KAAAiK,OAE+DlK,EAAUyG,eAFzE,aAAAyD,OAEmGwG,EAAQ9I,OAAOc,KAFlH,MAAAwB,OAE2HiJ,EAAKC,eAFhI,mEAAAlJ,OAG+ClK,EAAUC,GAHzD,KAAAiK,OAG+DlK,EAAU0G,kBAHzE,aAAAwD,OAGsGwG,EAAQ9I,OAAOe,OAHrH,MAAAuB,OAGgIiJ,EAAKG,kBAHrI,mEAAApJ,OAI+ClK,EAAUC,GAJzD,KAAAiK,OAI+DlK,EAAU2G,oBAJzE,aAAAuD,OAIwGwG,EAAQ9I,OAAOgB,SAJvH,MAAAsB,OAIoIiJ,EAAKK,oBAJzI,8BAAAtJ,OAKU8K,EALV,+DAAA9K,OAM+ClK,EAAUC,GANzD,KAAAiK,OAM+DlK,EAAU8G,cANzE,aAAAoD,OAMkGwG,EAAQ9I,OAAOmB,IANjH,MAAAmB,OAMyHiJ,EAAKa,cAN9H,mEAAA9J,OAO+ClK,EAAUC,GAPzD,KAAAiK,OAO+DlK,EAAU6G,eAPzE,aAAAqD,OAOmGwG,EAAQ9I,OAAOkB,KAPlH,MAAAoB,OAO2HiJ,EAAKW,eAPhI,mEAAA5J,OAQ+ClK,EAAUC,GARzD,KAAAiK,OAQ+DlK,EAAU+G,iBARzE,aAAAmD,OAQqGwG,EAAQ9I,OAAR,OARrG,MAAAsC,OAQ+HiJ,EAAKe,iBARpI,8CAYJ,KAAKnB,EAAalN,UAKd,OAJIkP,IACAC,EAAU,wCAAA9K,OAA2ClK,EAAUC,GAArD,KAAAiK,OAA2DlK,EAAUiG,kBAArE,aAAAiE,OAAkGwG,EAAQ9I,OAAOiB,QAAjH,MAAAqB,OAA6HiJ,EAAKQ,kBAAlI,SAGd,iCAAAzJ,OACkBlK,EAAUC,GAD5B,KAAAiK,OACkClK,EAAUmE,QAD5C,KAAA+F,OACuDlK,EAAU4E,kBADjE,iEAAAsF,OAE+ClK,EAAUC,GAFzD,KAAAiK,OAE+DlK,EAAU8F,eAFzE,aAAAoE,OAEmGwG,EAAQ9I,OAAOc,KAFlH,MAAAwB,OAE2HiJ,EAAKE,eAFhI,mEAAAnJ,OAG+ClK,EAAUC,GAHzD,KAAAiK,OAG+DlK,EAAU+F,kBAHzE,aAAAmE,OAGsGwG,EAAQ9I,OAAOe,OAHrH,MAAAuB,OAGgIiJ,EAAKI,kBAHrI,mEAAArJ,OAI+ClK,EAAUC,GAJzD,KAAAiK,OAI+DlK,EAAUgG,oBAJzE,aAAAkE,OAIwGwG,EAAQ9I,OAAOgB,SAJvH,MAAAsB,OAIoIiJ,EAAKM,oBAJzI,8BAAAvJ,OAKU8K,EALV,+DAAA9K,OAM+ClK,EAAUC,GANzD,KAAAiK,OAM+DlK,EAAUoG,cANzE,aAAA8D,OAMkGwG,EAAQ9I,OAAOmB,IANjH,MAAAmB,OAMyHiJ,EAAKc,cAN9H,mEAAA/J,OAO+ClK,EAAUC,GAPzD,KAAAiK,OAO+DlK,EAAUmG,eAPzE,aAAA+D,OAOmGwG,EAAQ9I,OAAOkB,KAPlH,MAAAoB,OAO2HiJ,EAAKY,eAPhI,mEAAA7J,OAQ+ClK,EAAUC,GARzD,KAAAiK,OAQ+DlK,EAAUqG,iBARzE,aAAA6D,OAQqGwG,EAAQ9I,OAAR,OARrG,MAAAsC,OAQ+HiJ,EAAKgB,iBARpI,8CAYJ,KAAKpB,EAAa9N,aACd,uCAAAiF,OACkBlK,EAAUC,GAD5B,KAAAiK,OACkClK,EAAUqE,qBAD5C,gEAAA6F,OAE8ClK,EAAUC,GAFxD,KAAAiK,OAE8DlK,EAAUS,IAFxE,KAAAyJ,OAE+ElK,EAAUY,YAFzF,KAAAsJ,OAEwGlK,EAAU8B,YAFlH,aAAAoI,OAEyIwG,EAAQ9I,OAAOU,WAFxJ,MAAA4B,OAEuKiJ,EAAKrR,YAF5K,kEAAAoI,OAG8ClK,EAAUC,GAHxD,KAAAiK,OAG8DlK,EAAUS,IAHxE,KAAAyJ,OAG+ElK,EAAUY,YAHzF,KAAAsJ,OAGwGlK,EAAU+B,cAHlH,aAAAmI,OAG2IwG,EAAQ9I,OAAOY,aAH1J,MAAA0B,OAG2KiJ,EAAKpR,cAHhL,8CAOJ,KAAKgR,EAAa7L,kBAClB,KAAK6L,EAAa1L,sBACd,uCAAA6C,OACkBlK,EAAUC,GAD5B,KAAAiK,OACkClK,EAAUwE,0BAD5C,KAAA0F,OACyEoG,IAASyC,EAAa1L,sBAAwBrH,EAAU2E,8BAAgC,GADjK,gEAAAuF,OAE8ClK,EAAUC,GAFxD,KAAAiK,OAE8DlK,EAAUS,IAFxE,KAAAyJ,OAE+ElK,EAAUY,YAFzF,KAAAsJ,OAEwGlK,EAAU8B,YAFlH,aAAAoI,OAEyIwG,EAAQ9I,OAAOU,WAFxJ,MAAA4B,OAEuKiJ,EAAKrR,YAF5K,kEAAAoI,OAG8ClK,EAAUC,GAHxD,KAAAiK,OAG8DlK,EAAUS,IAHxE,KAAAyJ,OAG+ElK,EAAUY,YAHzF,KAAAsJ,OAGwGlK,EAAU+B,cAHlH,aAAAmI,OAG2IwG,EAAQ9I,OAAOY,aAH1J,MAAA0B,OAG2KiJ,EAAKpR,cAHhL,8CAOJ,KAAKgR,EAAaC,iBAClB,KAAKD,EAAaE,qBACd,uCAAA/I,OACkBlK,EAAUC,GAD5B,KAAAiK,OACkClK,EAAUmE,QAD5C,KAAA+F,OACuDlK,EAAUoE,eADjE,KAAA8F,OACmFlK,EAAUuE,yBAD7F,KAAA2F,OACyHoG,IAASyC,EAAaE,qBAAuBjT,EAAU0E,6BAA+B,GAD/M,gEAAAwF,OAE8ClK,EAAUC,GAFxD,KAAAiK,OAE8DlK,EAAU8B,YAFxE,aAAAoI,OAE+FwG,EAAQ9I,OAAOW,gBAF9G,MAAA2B,OAEkIiJ,EAAKrR,YAFvI,kEAAAoI,OAG8ClK,EAAUC,GAHxD,KAAAiK,OAG8DlK,EAAU+B,cAHxE,aAAAmI,OAGiGwG,EAAQ9I,OAAOa,kBAHhH,MAAAyB,OAGsIiJ,EAAKpR,cAH3I,8CAOJ,KAAKgR,EAAaG,iBACd,uCAAAhJ,OACkBlK,EAAUC,GAD5B,KAAAiK,OACkClK,EAAUmE,QAD5C,KAAA+F,OACuDlK,EAAUoE,eADjE,KAAA8F,OACmFlK,EAAU6E,yBAD7F,gEAAAqF,OAE8ClK,EAAUC,GAFxD,KAAAiK,OAE8DlK,EAAU8B,YAFxE,aAAAoI,OAE+FwG,EAAQ9I,OAAOW,gBAF9G,MAAA2B,OAEkIiJ,EAAKrR,YAFvI,kEAAAoI,OAG8ClK,EAAUC,GAHxD,KAAAiK,OAG8DlK,EAAU+B,cAHxE,aAAAmI,OAGiGwG,EAAQ9I,OAAOa,kBAHhH,MAAAyB,OAGsIiJ,EAAKpR,cAH3I,gDCxEGkT,EAAA,SAAU/H,GACrB,IACIwD,EADO9S,KACQ8S,QAEfwE,GAAiBhI,EAAU+C,KAAK,cAAgB,IAAIkF,QAAQ,aAAc,IAC9E,OAAID,GAAkBA,KAAiBE,QAAQC,WACpCH,GAEqC,iBAAjCxE,EAAQ9G,qBACfsL,EAAgBxE,EAAQ9G,qBACuB,mBAAjC8G,EAAQ9G,uBACtBsL,EAAgBxE,EAAQ9G,qBAAqBzL,KAV1CP,KAUqDsP,IAGvDgI,GAbEtX,KAcE0X,MAAM,gCAGRJ,ICdAK,EAAA,SAAUvH,GACrB,IAAIrQ,EAAOC,KACP8S,EAAU/S,EAAK+S,QACfxD,EAAYc,EAAewH,QAAf,4BACZzJ,EAAciC,EAAewH,QAAf,IAAAtL,OAA2BlK,EAAUiF,gBAEtD+I,EAAeiC,KAAK,OAASjC,EAAeiC,KAAK,KAAMW,KAEN,mBAAvCF,EAAQ3C,4BACf2C,EAAQ3C,2BAA2B5P,KAAKR,EAAMqQ,EAAgBd,EAAWnB,GAG7E,IAAI0J,EAAczH,EAAeiC,KAAK,qBAClCyF,EAAOC,EAAkBzI,EAAW,CAAC,YAAa,sBAAsB,GAG5E,OAFAwI,EAAO5F,EAAE8F,MAAMF,GAER5F,EAAE+F,KAAK,CACVC,IAAKL,EACLC,KAAMA,EACNpF,KAAM,MACNyF,SAAU,OACVC,QAAS,SAAUC,EAAUC,EAAQ1K,GACjCwC,EAAemI,KAAKF,GAE0B,mBAAnCvF,EAAQzC,wBACfyC,EAAQzC,uBAAuB9P,KAAKR,EAAMqQ,EAAgBxC,EAAOO,IAGzEuJ,MAAO,SAAU9J,EAAO4K,EAAYC,GACa,mBAAlC3F,EAAQxC,uBACfwC,EAAQxC,sBAAsB/P,KAAKR,EAAMqQ,EAAgBxC,EAAOO,OC9BjEuK,EAAA,SAAU5G,EAAQ6G,GAC7B,IAAI7G,EAAO8G,GAAP,IAAAtM,OAAclK,EAAUwE,4BAA5B,CAIA,IACI0I,EACA2C,EAAiB8F,EAAkBxX,KAF5BP,KAEuC8R,EAAQ,MAAM,GAEhEA,EAAO+G,KAAP,mBAAAvM,OAA+BlK,EAAUC,GAAzC,KAAAiK,OAA+ClK,EAAU6F,UAAzD,iBAAAqE,OAAkFwF,EAAOO,KAAK,aAA9F,MAAA/F,OAA+G2F,EAAekB,KAAK,KAAnI,gBACArB,EAAO+G,KAAP,mBAAAvM,OAA+BlK,EAAUC,GAAzC,KAAAiK,OAA+ClK,EAAUsG,kBAAzD,iBACA4G,EAAYwC,EAAOgH,SAASA,SAE5BhH,EAAOiH,WAAW,aAEdJ,GACArJ,EAAU0J,SAAV,GAAA1M,OAAsBlK,EAAUuG,qBCbzB,SAAU2G,GACrB,IAAIvP,EAAOC,KACP8S,EAAU/S,EAAK+S,QACftE,EAAYc,EAAUsI,QAAV,IAAAtL,OAAsBlK,EAAUwG,YAC5CuF,EAAcK,EAAUoJ,QAAV,IAAAtL,OAAsBlK,EAAUiF,eAElD,IAAKiI,EAAUgF,SAASlS,EAAUkB,qBAAuBgM,EAAUgF,SAASlS,EAAUmB,oBAAqB,CACvG+L,EAAU0J,SAAS5W,EAAUmB,oBAC7B+L,EAAU+C,KAAK,KAAMW,KAEwB,mBAAlCF,EAAQvD,uBACfuD,EAAQvD,sBAAsBhP,KAAKR,EAAMuP,EAAWnB,GAGjCmB,EAAUhB,SAAV,IAAAhC,OAAuBlK,EAAUsG,oBACvC2J,KAAK,KAAMW,KAE5B,IAAIsE,EAAgBD,EAAiB9W,KAAKR,EAAMuP,GAC5C2J,EAAgBzB,QAAQC,WAAWH,GAEvChI,EAAU4J,OAAOhC,EAAgB3W,KAAKR,EAAMoV,EAAalN,UAAWgR,EAAcE,iBAClF7J,EAAU4J,OAAOhC,EAAgB3W,KAAKR,EAAMoV,EAAaG,mBAEzDhG,EAAUuE,KAAK,uBAAuB1B,KAAK,WACvC,IAAI/B,EAAiB8B,EAAElS,MAEvBoZ,EAAmB7Y,KAAKR,EAAMqQ,KAGA,mBAAvB6I,EAAcI,MACrBJ,EAAcI,KAAK9Y,KAAK0Y,EAAe9K,EAAaK,EAAWc,EAAWvP,GAGvC,mBAA5B+S,EAAQtD,iBACfsD,EAAQtD,gBAAgBjP,KAAKR,EAAMuP,EAAWnB,GAGlDmB,EAAU0J,SAAS5W,EAAUkB,mBAC7BgM,EAAUoF,YAAYtS,EAAUmB,sBDtBtBhD,KAdHP,KAccsP,KErBdgK,EAAA,SAAU9F,GACrBA,EAAMe,IAAI,UAAW,SACrBrC,EAAEsC,SAASC,MAAMuE,SAAS5W,EAAUuB,oBACpC4V,WAAW,WACP/F,EAAMwF,SAAS5W,EAAUe,eAC1B,ICJQqW,EAAA,SAAU1H,EAAQ2H,EAAYC,EAAeC,GACxD,IACInG,EADOxT,KACMwT,MADNxT,KAGN4U,YAAc9C,EAHR9R,KAIN6U,kBAAoB4E,EACzBC,GAAiBlG,EAAMwF,SAAS5W,EAAU4C,iBAC1C2U,GAAiBnG,EAAMwF,SAAS5W,EAAU6C,iBAC1CuO,EAAMe,IAAI,UAAW,SAErBqF,EAAUrZ,KATCP,KASUwT,ICQVqG,EAAA,SAAUrL,GACrB,IAAIzO,EAAOC,KACP8S,EAAU/S,EAAK+S,QACfgH,EAAOtL,EAAUqF,KAAK,0BAEtBiG,EAAKhJ,OAAS,GACdgJ,EAAKC,UAAU,CACXC,QAAS,gBACTtY,OAAQ,WACJwQ,EAAElS,MAAM6T,KAAR,IAAAvH,OAAiBlK,EAAUK,aAAc4P,KAAK,QAASS,EAAQ9I,OAAOwB,oBAE1EyO,OAAQ,SAAUC,EAAGC,GACjB,IAAI/M,EAAM8E,EAAElS,MACR6M,EAAciG,EAAQnG,UAAUE,YAAY9M,EAAKqa,YACjDC,EAAO,OAAA/N,OAAUO,EAAV,WAAAP,OAA+BO,EAA/B,WAAAP,OAAoDO,EAApD,WAAAP,OAAyEO,EAAzE,WAAAP,OAA8FO,EAA9F,WAAAP,OAAmHO,EAAnH,WAAAP,OAAwIO,EAAxI,WAAAP,OAA6JO,EAA7J,WAAAP,OAAkLO,EAAlL,WAAAP,OAAuMO,EAAvM,YAAAP,OAA6NO,EAA7N,YAAAP,OAAmPO,EAAnP,OAEPyN,EAAMlN,EAAI0L,SACVyB,EApCE,SAACC,EAAMrN,GAIzB,IAHA,IAAIyK,EACA6C,EAEK3a,EAAI,EAAGA,EAAI0a,EAAK1J,SAAUhR,EAAG,CAClC,IAAI4a,EAAO/I,KAAKgJ,IAAIH,EAAK1a,GAAGqN,MAAQA,GAEpC,GAAKsN,KAAWC,EAAOD,GAInB,OAAOD,EAAK5C,GAAL,IAHPA,EAAU9X,EACV2a,EAAUC,EAOlB,OAAO,KAoBkBE,CAAc9H,EAAQnG,UAAUO,WAAW,IAAMiN,EAAGU,KAAK1N,MAAQmN,EAAIQ,cAClF1N,EAAIsH,YAAY2F,GAASrB,SAAzB,OAAA1M,OAAyCO,EAAzC,KAAAP,OAAwDiO,IACxDnN,EAAImH,IAAI,QAAS,IACjBnH,EAAImH,IAAI,SAAU,QClCnBwG,EAAA,SAAUvM,GACrB,IAAIzO,EAAOC,KACP8S,EAAU/S,EAAK+S,QACfkI,EAAWxM,EAAUoJ,QAAQ,mCAAmC9G,OAAS,EACzE3C,EAAcK,EAAUoJ,QAAV,IAAAtL,OAAsBlK,EAAUiF,eAE7CmH,EAAU8F,SAASlS,EAAUkB,oBAAuBkL,EAAU8F,SAASlS,EAAUmB,sBAClFiL,EAAUwK,SAAS5W,EAAUmB,oBAEgB,mBAAlCuP,EAAQvE,uBACfuE,EAAQvE,sBAAsBhO,KAAKR,EAAMyO,EAAWL,GAGpD6M,GACAxM,EAAUwK,SAAS5W,EAAUoH,eAGjCgF,EAAU0K,OACNhC,EAAgB3W,KAAKR,EAAMib,EAAW7F,EAAa3L,cAAgB2L,EAAavM,UAAWkK,EAAQvG,yBAEnG2K,EAAgB3W,KAAKR,EAAMib,EAAW7F,EAAaE,qBAAuBF,EAAaC,mBAG3F5G,EAAU6D,KAAK,KAAMW,KAEGxE,EAAUqF,KAAK,mCACrB1B,KAAK,WACnB,IAAI8I,EAAmB/I,EAAElS,OAEpBgb,GAAYC,EAAiBC,QAAQ,mCAAmCpK,OAAS,GC3BnF,SAAU3C,EAAaK,EAAWyM,EAAkBD,GAC/D,IAAIjb,EAAOC,KACP8S,EAAU/S,EAAK+S,QACfzG,EAAsBtM,EAAKsM,oBAE/B4O,EAAiBjC,SAAS5W,EAAUkH,mBACpC0R,GAAYC,EAAiBjC,SAAS5W,EAAUqH,uBAChDwR,EAAiB5I,KAAK,KAAMW,KAE5B,IAAImI,EAAwBjJ,EAAC,eAAA5F,OAAgBlK,EAAUmH,wBAA1B,aAC7B4R,EAAsB5C,KAAK0C,EAAiB1C,QAC5C0C,EAAiB1C,KAAK4C,GAEtB,IAAIC,EAA0BlJ,EAC1BgF,EAAgB3W,KAAKR,EAAMib,EAAW7F,EAAa1L,sBAAwB0L,EAAa7L,kBAAmBwJ,EAAQvG,0BAEvH6O,EAAwBC,SAASJ,GACjCG,EAAwB9M,SAAxB,IAAAhC,OAAqClK,EAAU8B,cAAemQ,GAAG,QAAS,SAAU6F,GAChFA,EAAEoB,iBAEF9B,EAAiBjZ,KAAKR,EAAMob,EAAuBnG,EAAYC,QAAQ,GAAO+F,KAGlFG,EAAsBI,SAAS,CAC3BC,OAAM,IAAAlP,OAAMlK,EAAU8F,eAAhB,OAAAoE,OAAoClK,EAAUyG,gBACpD4S,OAAQ,QACRC,MAAK,MAAApP,OAAQlK,EAAU6F,WACvB0T,YAAW,IAAArP,OAAMlK,EAAUmH,yBAC3BqS,UAAW,UACXC,QAAS,SAAU3N,EAAOiM,GACtB,IAEI3L,EAFAiN,EAAStB,EAAGsB,OACZK,EAAO3B,EAAG2B,KAGVL,GACAA,EAAOM,UAEXvN,EAAYsN,EAAKlE,QAAL,IAAAtL,OAAiBlK,EAAUwG,aAExB0L,SAASlS,EAAUqB,wBAC9B4I,EAAoBwH,KAApB,IAAAvH,OAA6BlK,EAAUwG,UAAvC,KAAA0D,OAAoDlK,EAAUqB,uBAAwBiR,YAAYtS,EAAUqB,sBAC5G+K,EAAUwK,SAAS5W,EAAUqB,uBAGS,mBAA/BqP,EAAQjE,oBACfiE,EAAQjE,mBAAmBtO,KAAKR,EAAMmO,EAAOM,EAAWL,GAGpB,mBAA7B2E,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KAAKR,EAAMmO,EAAOC,GAG/C2N,EAAKpH,YAAYtS,EAAUE,cAE/B0Z,MAAO,SAAU9B,EAAGC,GAChBA,EAAG2B,KAAK9C,SAAS5W,EAAUE,aAC3B6X,EAAG2B,KAAK9C,SAAS5W,EAAUqB,uBAE/BwY,KAAM,SAAU/B,EAAGC,GACXA,EAAGsB,QACHtB,EAAGsB,OAAOM,SAEd5B,EAAG2B,KAAKpH,YAAYtS,EAAUE,gBAItC6Y,EAAsB7M,WAAW6D,KAAK,WAClC,IAAI+J,EAAQhK,EAAElS,MAEVkc,EAAMrI,KAAK,mCAAmC/C,OAAS,EACvDqL,EAAmB5b,KAAKR,EAAMmc,GAE9BxD,EAAmBnY,KAAKR,EAAMmc,GAAO,MDxChB3b,KAAKR,EAAMoO,EAAaK,EAAWyM,EAAkBD,KAG9ElI,EAAQnG,UAAUC,qBAAuBiN,EAAkBtZ,KAAKR,EAAMyO,GAE/B,mBAA5BsE,EAAQrE,iBACfqE,EAAQrE,gBAAgBlO,KAAKR,EAAMyO,EAAWL,GAGlDK,EAAUwK,SAAS5W,EAAUkB,mBAC7BkL,EAAUkG,YAAYtS,EAAUmB,sBEhDzB4Y,EAAA,SAAUrK,GACrB,IACItD,EAEJsD,EAAO+G,KAAP,mBAAAvM,OAA+BlK,EAAUC,GAAzC,KAAAiK,OAA+ClK,EAAUwG,UAAzD,iBACAkJ,EAAO+G,KAAP,mBAAAvM,OAA+BlK,EAAUC,GAAzC,KAAAiK,OAA+ClK,EAAUiH,gBAAzD,iBACAmF,EAAYsD,EAAOgH,SAASA,SAE5BiC,EAAcxa,KAPHP,KAOcwO,ICRd4N,EAAA,SAAUC,GAAwD,IAA/CC,IAA+CzL,UAAAC,OAAA,QAAAyL,IAAA1L,UAAA,KAAAA,UAAA,GAA7B2L,EAA6B3L,UAAAC,OAAA,QAAAyL,IAAA1L,UAAA,IAAAA,UAAA,GACzE9Q,EAAOC,KACPyc,EAAW,eAAAnQ,OAAkBlK,EAAUiD,aAA5B,YACXmO,EAAQtB,EAAC,yBAAA5F,OACKlK,EAAUC,GADf,KAAAiK,OACqBlK,EAAU2C,MAD/B,KAAAuH,OACwCgQ,EAAYla,EAAUyB,iBAAmB,GADjF,UAAAyI,OAC4F+P,EAD5F,gCAAA/P,OAESlK,EAAU8C,aAFnB,qDAAAoH,OAG8BlK,EAAUkD,YAHxC,mDAAAgH,OAIYlK,EAAU+C,YAJtB,yDAAAmH,OAMSlK,EAAUgD,WANnB,0BAAAkH,OAOHgQ,EAAYG,EAAc,GAPvB,2BAoBb,OATKD,GAEDhJ,EAAMa,GAAG,QAAT,IAAA/H,OAAsBlK,EAAUkD,aAAe,SAAU4U,GACrDA,EAAEoB,iBAEFvG,EAAUxU,KAAKR,EAAMyT,KAItBA,EAAM6H,SAAStb,EAAK2c,UCjBhBC,EAAA,WACX,IAAI5c,EAAOC,KACP8S,EAAU/S,EAAK+S,QACfU,EAAQzT,EAAKyT,MAAQoJ,EAAUrc,KAAKR,EAAMiT,KAAc,GAAO,GAEhC,iBAAxBF,EAAQ7G,aAA4B6G,EAAQ7G,YAAY6E,OAAS,GACxE0C,EAAMK,KAAN,IAAAvH,OAAelK,EAAUgD,aAAc8T,OAAvC,6BAAA5M,OACkBlK,EAAUkE,iBAD5B,oCAAAgG,OAEsBlK,EAAU0D,SAFhC,2CAMAoM,EAAE+F,KAAK,CACHvF,KAAM,MACNyF,SAAU,OACVD,IAAKpF,EAAQ7G,YACbmM,QAAS,SAAU1K,GACyB,mBAA7BoF,EAAQrF,mBACfC,EAAOoF,EAAQrF,iBAAiBlN,KAAKR,EAAM2N,IAASA,GCvBzD,SAAUA,GACrB,IAAI3N,EAAOC,KACP6c,EAAsB,GACtBC,EAAe,GAEnB5K,EAAExE,GAAMqP,OAAO,OAAO5K,KAAK,WACvB,IAAI6K,EAAU9K,EAAElS,MACZwN,EAAUwP,EAAQzE,OAAO0E,OACzBtK,EAAaqK,EAAQ3K,KAAK,gBAC1BK,EAAOsK,EAAQ3K,KAAK,aACpBzI,EAAQoT,EAAQ3K,KAAK,sBACrBO,EAAaoK,EAAQ3K,KAAK,4BAA8B,GACxDJ,EAAiBlS,EAAKgY,kBAAkBiF,EAAS,CAAC,eAAgB,YAAa,qBAAsB,4BAA4B,GAPlGE,EAAAC,EAW/B1K,EAAclS,KAAKR,EAAM2S,EAAM9I,EAAO+I,EAAYC,EAAYpF,EAASyE,GAXxC,GAS/BgB,EAT+BiK,EAAA,GAU/BhK,EAV+BgK,EAAA,GAanCJ,GAAgB7J,EAChB4J,GAAuB3J,IAG3BnT,EAAKsT,kBAAoBU,EAAmBhU,EAAKsT,mBACjDtT,EAAKuT,kBAAoBS,EAAmBhU,EAAKuT,mBAEjDvT,EAAKyT,MAAMK,KAAX,IAAAvH,OAAoBlK,EAAU0D,WAAYyS,KAAKuE,GAC/C/c,EAAKyT,MAAMK,KAAX,IAAAvH,OAAoBlK,EAAUgD,aAAc8T,OAAO2D,IDAxBtc,KAAKR,EAAM2N,GlB3B3B,WACX,IAAI3N,EAAOC,KACP8S,EAAU/S,EAAK+S,QAFIsK,EAAAC,EAGkB9J,EAAoBhT,KAAKR,GAH3C,GAGlB0T,EAHkB2J,EAAA,GAGCxJ,EAHDwJ,EAAA,GAKvBxJ,EAAc2E,KAAd,0BAAAjM,OACmBlK,EAAUC,GAD7B,KAAAiK,OACmClK,EAAU8D,sBAD7C,MAAAoG,OACuEwG,EAAQ9I,OAAOqB,qBADtF,qCAAAiB,OAEqBlK,EAAUC,GAF/B,KAAAiK,OAEqClK,EAAU2D,gBAF/C,oBAAAuG,OAGUmH,EAHV,2DAAAnH,OAKgClK,EAAUC,GAL1C,KAAAiK,OAKgDlK,EAAU+D,gBAL1D,4BAAAmG,OAKoGwG,EAAQ9I,OAAOuB,sBALnH,eAQA,IAwCI+R,EAxCAC,EAAY3J,EAAcC,KAAd,IAAAvH,OAAuBlK,EAAU+D,kBAC7CqX,EAAY5J,EAAcC,KAAd,IAAAvH,OAAuBlK,EAAU2D,kBAE7C0X,EAAW,WACX,IAAIC,GAAoBF,EAAU1I,OAAS,IAAI6I,cAC3CC,GAAcL,EAAUzI,OAAS,IAAI6I,cACrCE,EAAW9d,EAAKyT,MAAMK,KAAX,IAAAvH,OAAoBlK,EAAUoD,UAC7CqY,EAASd,OAAT,IAAAzQ,OAAoBlK,EAAUgB,iBAAkBsR,YAAYtS,EAAUgB,gBAElEsa,GAAoBE,EACpBC,EAAS1L,KAAK,WACV,IAAI6K,EAAU9K,EAAElS,MACZ8d,EAAuBd,EAAQ3K,KAAK,2BAA2BsL,cAC/DI,EAAiBD,EAAqB1K,MAAMN,EAAQ5G,6BACpDwL,EAAQ,EAERgG,IACqD,IAAjDxL,EAAEK,QAAQmL,EAAkBK,IAC5BrG,IAIJkG,IAEmC,IADvBZ,EAAQ3K,KAAK,sBAAsBsL,cACrCrL,QAAQsL,KAAoE,IAA9CE,EAAqBxL,QAAQsL,IACjElG,IAIRsF,EAAkB,IAAVtF,EAAc,cAAgB,YAAYtV,EAAUwB,qBAGhEia,EAASnJ,YAAYtS,EAAUwB,oBAIvC4Z,EAAUnJ,GAAG,SAAU,WACnBoJ,MAIJF,EAAUlJ,GAAG,UAAW,WACpB2J,aAAaV,GACbA,EAAQ/D,WAAWkE,EAAU,QkB5BFld,KAAKR,IAE5B2X,MAAO,SAAU9J,GAC0B,mBAA5BkF,EAAQnF,iBACfmF,EAAQnF,gBAAgBpN,KAAKR,EAAM6N,MEjCxC,WACX,IACI4F,EADOxT,KACMwT,MAEjBA,EAAMa,GAAG,CACL4J,MAAO,SAAU/D,GACbA,EAAEoB,iBAEF,IAAI0B,EAAU9K,EAAElS,MACZgd,EAAQ1I,SAASlS,EAAUgB,gBAC3B4Z,EAAQtI,YAAYtS,EAAUgB,iBAE9BoQ,EAAMK,KAAN,IAAAvH,OAAelK,EAAUgB,iBAAkBsR,YAAYtS,EAAUgB,gBACjE4Z,EAAQhE,SAAS5W,EAAUgB,kBAGnC8a,UAAW,WACPhM,EAAElS,MAAMgZ,SAAS5W,EAAUgB,iBAE/B+a,SAAU,WACNjM,EAAElS,MAAM0U,YAAYtS,EAAUgB,kBAhBtC,IAAAkJ,OAkBOlK,EAAUoD,WFiBKjF,KAAKR,GAGvByT,EAAMK,KAAN,IAAAvH,OAAelK,EAAUkD,cAAe+O,GAAG,QAAS,SAAU6F,GAC1DA,EAAEoB,iBAEF3G,EAAiBpU,KAAKR,KAI1ByT,EAAMa,GAAG,QAAT,IAAA/H,OAAsBlK,EAAUoD,SAAW,SAAU0U,GACjDA,EAAEoB,iBAEF,IAAIlM,EAAkB8C,EAAElS,OGhDrB,SAAUka,EAAG9K,EAAiB0C,EAAQsM,GACjD,IAmCInP,EACAe,EAnCAwD,EADOxT,KACMwT,MACbV,EAFO9S,KAEQ8S,QACf3E,EAAc2D,EAAO8F,QAAP,IAAAtL,OAAmBlK,EAAUiF,eAC3CgX,EAAcjP,EAAgBiD,KAAK,aAEnCiM,EAAwB9K,EAAMK,KAAKzE,EAAgBiD,KAAK,iBAExDkM,EAAiBD,EAAsB/F,OACvCiG,EAAmBhL,EAAMc,SAASlS,EAAU4C,iBAC5CyZ,EAAmBjL,EAAMc,SAASlS,EAAU6C,iBAC5CyZ,GAAoB,EACpBC,GAAoB,EACpBC,GAAiC,EA2CrC,GAzCoB,cAAhBP,EACAK,GAAoB,GAEhBF,IAAqBC,IACrBE,GAAoB,GAGpBH,GAAoBC,IAChB3M,EAAO8G,GAAP,IAAAtM,OAAclK,EAAUmH,0BACxBoV,GAAoB,EAEhBP,IAAiBpJ,EAAYC,OAC7B2J,GAAiC,EAEjCD,GAAoB,IA7BzB3e,KAsCNqM,oBAAoBwH,KAAzB,IAAAvH,OAAkClK,EAAUqB,uBAAwBiR,YAAYtS,EAAUqB,sBAEtFib,IACAzP,EAAeiD,EAAEqM,GACjBzM,EAAOsM,GAAcnP,GAE0B,mBAApC6D,EAAQ3D,yBACf2D,EAAQ3D,wBAAwB5O,KA7C7BP,KA6CwCka,EAAGjL,EAAcG,EAAiBjB,GAGzC,mBAA7B2E,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KAjDtBP,KAiDiCka,EAAG/L,GAG3CgO,EAAmB5b,KApDZP,KAoDuBiP,GAC9BA,EAAa4P,QAAQ,UAGrBF,GAAqBC,EAAgC,CACrD,IAAI3M,EAAiB8F,EAAkBxX,KAzDhCP,KAyD2Cse,EAAuB,MAAM,GAC/EtO,EAAekC,EAAC,iCAAA5F,OACM+R,EADN,MAAA/R,OACsB2F,EAAekB,KAAK,KAD1C,uBAAA7G,OAENiS,EAFM,mCAOhBI,IACA7M,EAAOsM,GAAcpO,GAEL8B,EAAO8F,QAAP,IAAAtL,OAAmBlK,EAAUwG,YACnCoQ,SAAS5W,EAAUqB,sBACkB,mBAApCqP,EAAQ5C,yBACf4C,EAAQ5C,wBAAwB3P,KAvE7BP,KAuEwCka,EAAGlK,EAAcZ,EAAiBjB,GAGzC,mBAA7B2E,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KA3EtBP,KA2EiCka,EAAG/L,GAG3CuK,EAAmBnY,KA9EZP,KA8EsBgQ,GAC7BA,EAAa6O,QAAQ,UAGrBD,KACA3P,EAAeiD,EAAEY,EAAQjJ,gCACZgK,KAAK,mCAAmCiL,GAAG,GAAGvG,KAAKvI,GAChE8B,EAAOsM,GAAcnP,GAE0B,mBAApC6D,EAAQ5C,yBACf4C,EAAQ5C,wBAAwB3P,KAxF7BP,KAwFwCka,EAAGlK,EAAcZ,EAAiBjB,GAGzC,mBAA7B2E,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KA5FtBP,KA4FiCka,EAAG/L,GAG3CgO,EAAmB5b,KA/FZP,KA+FuBiP,GAC9Be,EAAa6O,QAAQ,YH/CEte,KAAKR,EAAMma,EAAG9K,EAAiBrP,EAAK6U,YAAa7U,EAAK8U,mBACzEF,EAAiBpU,KAAKR,MAG1BA,EAAK2X,MAAM,oCItDJqH,EANU,CACrB9W,UAAW,YACXW,UAAW,YACXoW,MAAO,SCCIC,EAAA,WACXxO,EAAI,gBAEJ,IACIqC,EADO9S,KACQ8S,QACfoM,EAFOlf,KAEQkf,QACfC,EAHOnf,KAGWof,YAAY9Q,SAAjB,IAAAhC,OAA8BlK,EAAUa,eAEzD,GAAIkc,EAAWrO,OAAS,EAAG,CACvB,OAAQqO,EAAW9M,KAAK,4BACpB,KAAK0M,EAAiBnW,UACkC,mBAAzCkK,EAAQpG,8BACfoG,EAAQpG,6BAA6BnM,KAT1CP,KASqDmf,EATrDnf,MAWC,MAEJ,KAAK+e,EAAiB9W,UAClB,IAAIoX,EAAaF,EAAW9M,KAAK,aAC7B4G,EAAgBzB,QAAQC,WAAW4H,GAEM,mBAAlCpG,EAAcqG,iBACrBrG,EAAcqG,gBAAgB/e,KAAK0Y,EAAekG,EAlBvDnf,MA8BPmf,EAAWzK,YAAYtS,EAAUa,cA9B1BjD,KAiCNuf,iBAAmB,KAjCbvf,KAkCNwf,iBAAmB,KACxBN,EAAQxK,YAAYtS,EAAUc,cAnCnBlD,KAoCNgO,WAAW0G,YAAYtS,EAAUsB,uBCzC3B+b,EAAA,SAAU3N,EAAQ4N,EAAaC,EAAiBC,EAAcC,EAAiBC,GAC1F,IACIV,EADOpf,KACYof,YACnBzG,GAAa,EAEboH,EAAcX,EAAY9Q,SAAZ,IAAAhC,OAAyBlK,EAAU+E,aAAnC,wBAAAmF,OAAsEoT,EAAtE,8BAAApT,OAA8GqT,EAA9G,OAClB,GAA2B,IAAvBI,EAAYjP,QACZ,GAA4B,mBAAjB8O,EAA6B,CACpCG,EAAc7N,EAAC,kEAAA5F,OAEcoT,EAFd,kDAAApT,OAGkBqT,EAHlB,kCAAArT,OAIElK,EAAUC,GAJZ,KAAAiK,OAIkBlK,EAAU+E,aAJ5B,6CAOf,IAAI6Y,EAAc9N,EAAC,gBAAA5F,OAAiBlK,EAAUgF,qBAA3B,SAAuDmR,KAAK,cAC/E6G,EAAYlG,OAAO6G,GACnBA,EAAY7G,OAAO8G,GAEnB9N,EAAE+N,KAAKL,EAAarf,KAAKsf,EAAiBE,EAlBvC/f,OAkB2DkgB,KAAK,WAC/D3G,WAAW,WACPyG,EAAYjE,SAEQ,mBAAb+D,GAA2BA,GAAS,IAC5C,aAIXnH,GAAa,EAGjB,MAAO,CACHoH,cACApH,eC9BOwH,EAAA,SAAUrO,EAAQ4N,EAAaC,EAAiBS,EAAcR,EAAcS,EAAcR,GACrG,IAAI9f,EAAOC,KACPkf,EAAUnf,EAAKmf,QACfoB,EAAevgB,EAAKugB,aACpBlB,EAAcrf,EAAKqf,YAJ+FmB,EAMtFd,EAAgBlf,KAAKR,EAAM+R,EAAQ4N,EAAaC,EAAiBC,EAAcC,EAAiB,WAChG,mBAAjBQ,GACPA,EAAa9f,KAAKsf,EAAiBE,EAAajO,EAAQ/R,KAF3DggB,EANiHQ,EAMjHR,YAAapH,EANoG4H,EAMpG5H,WAMd6H,EAAqBT,EAAYzL,SAASlS,EAAUa,gBAAkB6O,EAAO8G,GAAG7Y,EAAKyf,mBAAqB1N,EAAO8G,GAAG7Y,EAAKwf,mBAAqBzN,EAAO8G,GAAG,yBAI5J,OAFA7Y,EAAKwf,iBAAmB,KACxBxf,EAAKyf,iBAAmB,KAChBG,GACJ,KAAKZ,EAAiB9W,UAClBlI,EAAKwf,iBAAmBzN,EACxB,MAEJ,KAAKiN,EAAiBnW,UAClB7I,EAAKyf,iBAAmB1N,EAOhC,GAAI6G,EAAY,CACZ,GAAI6H,EAEA,YADAvB,EAAa1e,KAAKR,GAGU,mBAAjBsgB,GACPA,EAAa9f,KAAKsf,EAAiBE,EAAajO,EAAQ/R,GAKpEugB,EAAa/H,KAAK6H,GAClBhB,EAAY9Q,SAAZ,IAAAhC,OAAyBlK,EAAUa,eAAgByR,YAAYtS,EAAUa,cACzE8c,EAAY/G,SAAS5W,EAAUa,cAC/Bic,EAAQlG,SAAS5W,EAAUc,cAC3BnD,EAAKiO,WAAWgL,SAAS5W,EAAUsB,uBC3CxB+c,EAAA,SAAU3O,GACrBrB,EAAI,cAAeqB,GAEnB,IACIgB,EADO9S,KACQ8S,QAEnB,GAAIhB,EAAO8G,GAAP,IAAAtM,OAAclK,EAAU6F,YAAc,CACtC,IAAIqP,EAAgBD,EAAiB9W,KAJ9BP,KAIyC8R,GAC5CmH,EAAgBzB,QAAQC,WAAWH,GAEvC6I,EAAgB5f,KAPTP,KAOoB8R,EAAQwF,EAAeyH,EAAiB9W,UAAWgR,EAAcmH,aAAcnH,EAAcwG,gBAAiBxG,EAAckH,gBAAiBlH,QACrK,GAAInH,EAAO8G,GAAP,IAAAtM,OAAclK,EAAUwG,YAC/BuX,EAAgB5f,KATTP,KASoB8R,EAAQ,KAAMiN,EAAiBnW,UAAWkK,EAAQ9I,OAAOyB,iBAAkBqH,EAAQtG,6BAA8BsG,EAAQrG,6BAT7IzM,UAUJ,CACH,IAAI0gB,EAAW5O,EAAOO,KAAK,sBACvBsO,EAAe7N,EAAQhJ,cAAc4W,GACzCP,EAAgB5f,KAbTP,KAaoB8R,EAAQ4O,EAAU3B,EAAiBC,MAAO2B,EAAa/W,MAAO+W,EAAaC,oBAAqBD,EAAaE,oBAAqBF,0OClBtJ,ICGAG,EAPK,CAChBhU,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRC,QAAS,WCDE8T,EAAA,SAAU3G,EAAYyE,GACjC,IACI/L,EADO9S,KACQ8S,QACfkO,EAFOhhB,KAEaghB,aACpBC,EAHOjhB,KAGoB8N,OAAOgL,SAClC3L,EAAQ,GACR+T,EAAW,GAKf,OAHAF,EAAanN,KAAb,IAAAvH,OAAsBlK,EAAUa,eAAgByR,YAAYtS,EAAUa,cACtE4b,EAAQ7F,SAAS5W,EAAUa,cAEnBmX,GACJ,KAAK0G,EAAYhU,OACbK,EAAQ2F,EAAQlH,YAChB,MAEJ,KAAKkV,EAAY/T,OACbI,EAAQ2F,EAAQjH,YAChB,MAEJ,KAAKiV,EAAY9T,OACbG,EAAQ2F,EAAQhH,YAChB,MAEJ,KAAKgV,EAAY7T,QACbiU,EAAWpO,EAAQ/G,gBAxBhB/L,KA+BNoa,WAAaA,EAClB6G,EAAoB1M,IAAI,QAASpH,GACjC8T,EAAoB1M,IAAI,YAAa2M,ICjC1BC,EAAA,SAAU7R,GACrB,IAKI9B,EAJA4T,EAAkB9R,EAAU+R,QAC5B/J,EAAgBD,EAAiB9W,KAF1BP,KAEqCohB,GAC5CnI,EAAgBzB,QAAQC,WAAWH,GACnCrF,EAAiB8F,EAAkBqJ,EAAiB,MAAM,GAI1DE,EAAgBF,EAAgBvN,KAAhB,IAAAvH,OAAyBlK,EAAUyF,uBACvD,GAAIyZ,EAAcxQ,OAAS,EAAG,CAC1BwQ,EAAczN,KAAd,IAAAvH,OAAuBlK,EAAU2F,eAAgBgU,SAEjD,IAAIjO,EAASwT,EAAchT,SAAS,UAChCgT,EAAchN,SAASlS,EAAU0F,2BACjCgG,EAAOyT,SAEPD,EAAc5M,YAAYtS,EAAUyF,sBAIJ,mBAA7BoR,EAAcuI,WACrBhU,EAAUyL,EAAcuI,WAAWjhB,KAAK0Y,EAAemI,EArBhDphB,MAwBPwN,EADuB4T,EAAgB9S,SAAhB,IAAAhC,OAA6BlK,EAAUsG,oBACnC6P,OAU/B,OANA6I,EAAgB7I,KAAK/K,GAASqG,KAAK,uBAAuB1B,KAAK,WAC3DD,EAAElS,MAAMuY,KAAK,MAGjB6I,EAAgB9S,WAAW+D,KAAKJ,GAAgBI,KAAK,YAArD,aAAA/F,OAA+EgL,IAExE8J,EAAgB7I,QCpCZ,SAASkJ,EAAqBjT,EAAWwM,GACpD,IAAIjb,EAAOC,KACP0hB,EAAiBlT,EAAUF,SAAV,IAAAhC,OAAuBlK,EAAUiH,kBAAmBgY,QAsBzE,OApBAK,EAAe7N,KAAK,iCAAiC8N,IAAI3G,EAAW,GAAH,IAAA1O,OAAYlK,EAAUqH,wBAAyB0I,KAAK,WACjH,IAAI8I,EAAmB/I,EAAElS,MACzBib,EAAiBvG,YAAjB,GAAApI,OAAgClK,EAAUkH,kBAA1C,KAAAgD,OAA+DlK,EAAUqH,sBAAzE,KAAA6C,OAAkGlK,EAAUM,SAA5G,KAAA4J,OAAwHlK,EAAUO,YAAaoW,WAAW,MAE1J,IAAIoC,EAAwBF,EAAiB3M,WACzCd,EAAU,GAEd2N,EAAsB7M,WAAW6D,KAAK,WAClC,IAAI+J,EAAQhK,EAAElS,MAEVkc,EAAMtD,GAAN,IAAAtM,OAAalK,EAAU6F,YACvBuF,GAAW2T,EAAoB5gB,KAAKR,EAAMmc,GACnCA,EAAMtD,GAAN,IAAAtM,OAAalK,EAAUoH,kBAC9BgE,GAAWiU,EAAoBlhB,KAAKR,EAAMmc,GAAO,MAIzDjB,EAAiB1C,KAAK/K,KAGnBkU,EAAenJ,OCxBX,IAAAqJ,EAAA,SAAUrP,GACrB,IAAIxS,EAAOC,KACP6hB,EAAS,GAab,OAXA9hB,EAAKsM,oBAAoBwH,KAAzB,IAAAvH,OAAkClK,EAAUkF,qBAAsB6K,KAAK,WACnE,IAAIoG,EAAO,GACXrG,EAAElS,MAAMsO,SAAR,IAAAhC,OAAqBlK,EAAUwG,YAAauJ,KAAK,WAC7C,IAAI3D,EAAY0D,EAAElS,MAElBuY,GAAQkJ,EAAoBlhB,KAAKR,EAAMyO,KAG3CqT,EAAOrP,KAAK+F,KAGThG,EAAUsP,EAASA,EAAO1O,KAAK,OCf3B2O,EAAA,SAAUC,GACrB,ICJYC,EDMRD,GCNQC,EDIDhiB,KAGc0c,QAAQ,ICN1BuF,kBACHD,EAAGC,oBACID,EAAGE,qBACVF,EAAGE,uBACIF,EAAGG,wBACVH,EAAGG,0BACIH,EAAGI,qBACVJ,EAAGI,sBCPF5N,SAAS6N,oBAIV7N,SAAS8N,eACT9N,SAAS8N,iBACF9N,SAAS+N,oBAChB/N,SAAS+N,sBACF/N,SAASgO,qBAChBhO,SAASgO,uBACFhO,SAASiO,kBAChBjO,SAASiO,qBCRFC,EAAA,WACX,IACI5P,EADO9S,KACQ8S,SCAR,WACX,IAAI/S,EAAOC,KACP8S,EAAU/S,EAAK+S,QACf6P,EAAa5iB,EAAK4iB,WAAazQ,EAAC,wCAAA5F,OAAyCwG,EAAQ9I,OAAOM,WAAxD,aAAAgC,OAA8ElK,EAAUC,GAAxF,KAAAiK,OAA8FlK,EAAUyC,cAAxG,MAAAyH,OAA0HiJ,EAAKsB,YAA/H,SAEpC9W,EAAK6iB,YAAc1Q,EAAC,eAAA5F,OAAgBlK,EAAUsH,aAA1B,aACpB3J,EAAKsM,oBAAoBwW,MAAM9iB,EAAK6iB,aAEpCD,EAAWtO,GAAG,QAAS,SAAU6F,GAC7BA,EAAEoB,iBAEF,IAAIwH,GAAeH,EAAWrO,SAASlS,EAAUa,cAEjD0f,EAAWpK,KAAKuK,EAAcvN,EAAKqB,WAAarB,EAAKsB,aACrD8L,EAAWG,EAAc,WAAa,eAAe1gB,EAAUa,cAC/D0f,EAAWtQ,KAAK,QAASyQ,EAAchQ,EAAQ9I,OAAOK,UAAYyI,EAAQ9I,OAAOM,YACjFvK,EAAKiO,WAAW8U,EAAc,WAAa,eAAe1gB,EAAUoB,kBACpEzD,EAAK6iB,YAAYrK,KAAK,IAGtB0G,EAAa1e,KAAKR,GAElB+iB,GAAe/iB,EAAK6iB,YAAYrK,KAAKiJ,EAAWjhB,KAAKR,IAAO8T,KAAK,uBAAuB1B,KAAK,WACzF,IAAI/B,EAAiB8B,EAAElS,MACvBoQ,EAAemI,KAAK,cACpBa,EAAmB7Y,KAAKR,EAAMqQ,OAItCrQ,EAAKgjB,YAAY7J,OAAOyJ,KD3BNzR,MAHPlR,MEDA,WACX,IAAID,EAAOC,KACP8S,EAAU/S,EAAK+S,QACfkQ,EAAgBjjB,EAAKijB,cAAgB9Q,EAAC,wCAAA5F,OAAyCwG,EAAQ9I,OAAOQ,cAAxD,aAAA8B,OAAiFlK,EAAUC,GAA3F,KAAAiK,OAAiGlK,EAAUyC,cAA3G,MAAAyH,OAA6HiJ,EAAKwB,eAAlI,SAC1CiM,EAAc3O,GAAG,QAAS,SAAU6F,GAChCA,EAAEoB,iBAEF2H,EAAkB1iB,KAAKR,GAAOA,EAAKmjB,gBAGvC1O,SAAS2O,iBAAiB,mBAAoB,WAC1C,IAAIpB,IAASvN,SAAS6N,kBAEtBtiB,EAAKqjB,aAAerB,EACpBiB,EAAczK,KAAKwJ,EAAOxM,EAAKuB,cAAgBvB,EAAKwB,gBACpDiM,EAAc3Q,KAAK,QAAS0P,EAAOjP,EAAQ9I,OAAOO,aAAeuI,EAAQ9I,OAAOQ,iBAGpFzK,EAAKgjB,YAAY7J,OAAO8J,IFbH9R,MAJVlR,MAKe,mBAAnB8S,EAAQvF,QGNJ,WACX,IAAIxN,EAAOC,KACP8S,EAAU/S,EAAK+S,QACfuQ,EAAUtjB,EAAKsjB,QAAUnR,EAAC,wCAAA5F,OAAyCwG,EAAQ9I,OAAOS,KAAxD,aAAA6B,OAAwElK,EAAUC,GAAlF,KAAAiK,OAAwFlK,EAAUyC,cAAlG,MAAAyH,OAAoHiJ,EAAKyB,KAAzH,SAC9BqM,EAAQhP,GAAG,QAAS,SAAU6F,GAC1BA,EAAEoB,iBAEF,IAAI9N,EAAUgU,EAAWjhB,KAAKR,GAE9B+S,EAAQvF,OAAOhN,KAAKR,EAAMyN,KAG9BzN,EAAKgjB,YAAY7J,OAAOmK,IHN+BnS,MAL5ClR,OICAsjB,EAAA,WACX,IACIC,EAAWvQ,IACXF,EAFO9S,KAEQ8S,QAFR9S,KAINwjB,OAAStR,EAAC,yBAAA5F,OACGlK,EAAUC,GADb,KAAAiK,OACmBlK,EAAUqC,OAD7B,UAAA6H,OAC4CiX,EAD5C,gCAAAjX,OAEOlK,EAAUC,GAFjB,KAAAiK,OAEuBlK,EAAUsC,YAFjC,oCAAA4H,OAGWlK,EAAUC,GAHrB,KAAAiK,OAG2BlK,EAAU0C,aAHrC,aAAAwH,OAG6DwG,EAAQlJ,MAHrE,MAAA0C,OAG+EwG,EAAQlJ,MAHvF,wDAAA0C,OAKOlK,EAAUC,GALjB,KAAAiK,OAKuBlK,EAAUuC,cALjC,oDAAA2H,OAOOlK,EAAUC,GAPjB,KAAAiK,OAOuBlK,EAAUwC,aAPjC,iDAJJ5E,KAeNyjB,WAfMzjB,KAeYwjB,OAAO3P,KAAZ,IAAAvH,OAAqBlK,EAAUsC,cAftC1E,KAgBNghB,aAhBMhhB,KAgBcwjB,OAAO3P,KAAZ,IAAAvH,OAAqBlK,EAAUuC,gBAhBxC3E,KAiBN+iB,YAjBM/iB,KAiBawjB,OAAO3P,KAAZ,IAAAvH,OAAqBlK,EAAUwC,eAjBvC5E,KAmBNwjB,OAAOnI,SAnBDrb,KAmBe0c,SCrBf,WACX,IAAI3c,EAAOC,KACP8S,EAAU/S,EAAK+S,QACfkO,EAAejhB,EAAKihB,aAEpB0C,EAAY3jB,EAAK2jB,UAAYxR,EAAC,kDAAA5F,OACSwG,EAAQ9I,OAAOC,aADxB,aAAAqC,OACgDlK,EAAUC,GAD1D,KAAAiK,OACgElK,EAAUyC,cAD1E,MAAAyH,OAC4FiJ,EAAKiB,cADjG,eAGlCkN,EAAUrP,GAAG,QAAS,SAAU6F,GAC5BA,EAAEoB,iBACFyF,EAAaxgB,KAAKR,EAAM+gB,EAAYhU,OAAQ4W,KAGhD,IAAIC,EAAY5jB,EAAK4jB,UAAYzR,EAAC,kDAAA5F,OACSwG,EAAQ9I,OAAOE,aADxB,aAAAoC,OACgDlK,EAAUC,GAD1D,KAAAiK,OACgElK,EAAUyC,cAD1E,MAAAyH,OAC4FiJ,EAAKkB,cADjG,eAGlCkN,EAAUtP,GAAG,QAAS,SAAU6F,GAC5BA,EAAEoB,iBACFyF,EAAaxgB,KAAKR,EAAM+gB,EAAY/T,OAAQ4W,KAGhD,IAAIC,EAAY7jB,EAAK6jB,UAAY1R,EAAC,kDAAA5F,OACSwG,EAAQ9I,OAAOG,aADxB,aAAAmC,OACgDlK,EAAUC,GAD1D,KAAAiK,OACgElK,EAAUyC,cAD1E,MAAAyH,OAC4FiJ,EAAKmB,cADjG,eAGlCkN,EAAUvP,GAAG,QAAS,SAAU6F,GAC5BA,EAAEoB,iBACFyF,EAAaxgB,KAAKR,EAAM+gB,EAAY9T,OAAQ4W,KAGhD,IAAIC,EAAa9jB,EAAK8jB,WAAa3R,EAAC,kDAAA5F,OACOwG,EAAQ9I,OAAOI,cADtB,aAAAkC,OAC+ClK,EAAUC,GADzD,KAAAiK,OAC+DlK,EAAUyC,cADzE,MAAAyH,OAC2FiJ,EAAKoB,eADhG,eAGpCkN,EAAWxP,GAAG,QAAS,SAAU6F,GAC7BA,EAAEoB,iBACFyF,EAAaxgB,KAAKR,EAAM+gB,EAAY7T,QAAS4W,KAC9ChF,QAAQ,SAEXmC,EAAa9H,OAAOwK,GACpB1C,EAAa9H,OAAOyK,GACpB3C,EAAa9H,OAAO0K,GACpB5C,EAAa9H,OAAO2K,IDjBDtjB,KArBRP,MAsBX0iB,EAAuBniB,KAtBZP,MEPA,WACX,IACI8S,EADO9S,KACQ8S,QACfiQ,EAFO/iB,KAEY+iB,YAEvB7Q,EAAE4R,cAAchR,EAAQ/I,mBAAqBmI,EAAEC,KAAKW,EAAQ/I,iBAAkB,SAACpJ,EAAMmb,GACjF,IAAIiI,EAAM7R,EAAE4J,EAAKvD,MACjBwL,EAAI/K,SAAJ,oDAAA1M,OAAiE3L,IACjEojB,EAAI1P,GAAG,QAASyH,EAAKmC,OAErB8E,EAAY7J,OAAO6K,MFoBFxjB,KAvBVP,OGPAgkB,EAAA,SAAU9V,EAAO+V,GAC5B,IAAInS,EAASI,EAAEhE,EAAM4D,QACjB8F,EAAU9F,EAAO8F,QAAQqM,GAE7B,OAAInS,EAAO8G,GAAGqL,GACHnS,EACA8F,EAAQ9G,OAAS,EACjB8G,EAEA,MCLAsM,EAJC,CACZC,IAAK,ICCMC,EAAA,SAAUtS,EAAQuS,GAClBrkB,KAENskB,YAAcD,EAAQ,KAAOvS,EAFvB9R,KAGNukB,WAAaF,EAAQvS,EAAS,KAHxB9R,KAKNqM,oBAAoBwH,KAAzB,IAAAvH,OAAkClK,EAAUI,aAAckS,YAAYtS,EAAUI,YALrExC,KAMNgO,WAAW0G,YAAhB,GAAApI,OAA+BlK,EAAU0B,cAAzC,KAAAwI,OAA0DlK,EAAU2B,wBAApE,KAAAuI,OAA+FlK,EAAU4B,wBAAzG,KAAAsI,OAAoIlK,EAAU6B,8BAE1I6N,IACAuS,GAASvS,EAAOkH,SAAS5W,EAAUI,YAT5BxC,KAUFgO,WAAWgL,SAAS5W,EAAU0B,eAE/BgO,EAAOwC,SAASlS,EAAU6F,YAZvBjI,KAaEgO,WAAWgL,SAAS5W,EAAU2B,yBAGnC+N,EAAOwC,SAASlS,EAAUwG,YAhBvB5I,KAiBEgO,WAAWgL,SAASlH,EAAOwC,SAASlS,EAAUoH,eAAiBpH,EAAU6B,4BAA8B7B,EAAU4B,2BClBnHwgB,EAAA,SAAUlV,GACrB,IAEIgI,EAAgBD,EAAiB9W,KAF1BP,KAEqCsP,GAC5C2J,EAAgBzB,QAAQC,WAAWH,GACF,mBAA1B2B,EAAcwL,SACrBxL,EAAcwL,QAAQlkB,KAAK0Y,EAAe3J,EALnCtP,MAQXsP,EAAUyM,UCYC2I,EAAA,YClBA,WACX,IAAI3kB,EAAOC,KACP8S,EAAU/S,EAAK+S,QACfzG,EAAsBtM,EAAKsM,oBAE/BtM,EAAKiO,WAAWqG,GAAG,QAAS,SAAU6F,GAClC,IAAIgF,EAAU8E,EAAkB9J,EAAD,IAAA5N,OAAQlK,EAAUgC,UAC7CoP,EAAQwQ,EAAkB9J,EAAD,IAAA5N,OAAQlK,EAAU2C,QAE3CyJ,EAAYwV,EAAkB9J,EAAD,IAAA5N,OAAQlK,EAAUwG,YACnD,GAAI4F,GACA,IAAKA,EAAU8F,SAASlS,EAAUqB,sBAAuB,CACrD4I,EAAoBwH,KAApB,IAAAvH,OAA6BlK,EAAUqB,uBAAwBiR,YAAYtS,EAAUqB,sBACrF+K,EAAUwK,SAAS5W,EAAUqB,sBAE7B,IAAI0K,EAAcK,EAAUsK,SACe,mBAAhChG,EAAQ5D,qBACf4D,EAAQ5D,oBAAoB3O,KAAKR,EAAMma,EAAG1L,EAAWL,SAIxD+Q,GAAY1L,GACbnH,EAAoBwH,KAApB,IAAAvH,OAA6BlK,EAAUqB,uBAAwBiR,YAAYtS,EAAUqB,sBAI7F,IAAI6L,EAAY0U,EAAkB9J,EAAD,IAAA5N,OAAQlK,EAAU6F,YACnD,GAAIqH,EAAW,CACX,IAAKA,EAAUgF,SAASlS,EAAUqB,sBAAuB,CACrD4I,EAAoBwH,KAApB,IAAAvH,OAA6BlK,EAAU6F,UAAvC,KAAAqE,OAAoDlK,EAAUqB,uBAAwBiR,YAAYtS,EAAUqB,sBAC5G6L,EAAU0J,SAAS5W,EAAUqB,sBAE7B,IAAI0K,EAAcmB,EAAUwJ,SACe,mBAAhChG,EAAQ7C,qBACf6C,EAAQ7C,oBAAoB1P,KAAKR,EAAMma,EAAG5K,EAAWnB,GAK7D,GADc6V,EAAkB9J,EAAD,IAAA5N,OAAQlK,EAAU4E,oBAE7C,OAGA8L,EAAQzF,8BACSiC,EAAUuE,KAAV,IAAAvH,OAAmBlK,EAAUiG,oBAC/ByI,OAAS,GACpB/Q,EAAKwf,iBAAmB,KACxBkB,EAAYlgB,KAAKR,EAAMuP,IAEvB2P,EAAa1e,KAAKR,SAIrBmf,GACD7S,EAAoBwH,KAApB,IAAAvH,OAA6BlK,EAAU6F,UAAvC,KAAAqE,OAAoDlK,EAAUqB,uBAAwBiR,YAAYtS,EAAUqB,0BDjCvGlD,KAFNP,MEpBA,WACX,IAAID,EAAOC,KAEXD,EAAK4kB,UAAUtQ,GAAG,UAAW,SAAU6F,GACnC,OAAQA,EAAE0K,SACN,KAAKV,EAAQC,IACTC,EAAe7jB,KAAKR,EAAM,MAC1B+hB,EAAkBvhB,KAAKR,GAAM,OFiBvBQ,KAJPP,MGfA,WACX,IAAID,EAAOC,KACeD,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAU+B,eAAiB,SAAU+V,GACrEA,EAAEoB,iBAEF7K,EAAG,cAAAnE,OAAelK,EAAU+B,cAAzB,MAEH,IAQIyG,EARAmZ,EAAM7R,EAAElS,MACR6kB,IAAW9kB,EAAKukB,YAGhBQ,EAASD,EAAS9kB,EAAKukB,YAAcvkB,EAAKwkB,WAC1CQ,EAAcD,EAAOxQ,SAASlS,EAAU6F,WACxC+c,EAAcF,EAAOxQ,SAASlS,EAAUwG,WACxCqc,EAAiBH,EAAOxQ,SAASlS,EAAUoH,eAG3CoB,EADAia,EACe3S,EAAE6S,EAAc5D,EAAoB5gB,KAAKR,EAAM+kB,GAAUrD,EAAoBlhB,KAAKR,EAAM+kB,EAAQG,IAEhGH,EAInB,IAAIhT,EAAS,KAEToT,EAAgBnB,EAAInM,QAAJ,IAAAtL,OAAgBlK,EAAUoE,iBAC1C0e,EAAcpU,OAAS,IACnBoU,EAAc5Q,SAASlS,EAAUuE,4BACjC8J,EAAI,uBACJqB,EAASiS,EAAInM,QAAJ,IAAAtL,OAAgBlK,EAAUwG,aAGnCsc,EAAc5Q,SAASlS,EAAU6E,4BACjCwJ,EAAI,uBACJqB,EAASiS,EAAInM,QAAJ,IAAAtL,OAAgBlK,EAAU6F,cAI3C,IAAIkd,EAA0BpB,EAAInM,QAAJ,IAAAtL,OAAgBlK,EAAUwE,4BACpDue,EAAwBrU,OAAS,IACjCL,EAAI,uBACJqB,EAASqT,EAAwBC,SAAxB,IAAA9Y,OAAqClK,EAAUmH,2BAG5D,IAAI8b,EAAqBtB,EAAInM,QAAJ,IAAAtL,OAAgBlK,EAAUqE,uBAC/C4e,EAAmBvU,OAAS,IAC5BL,EAAI,0BACJqB,EAASuT,EAAmBD,SAAnB,IAAA9Y,OAAgClK,EAAUkF,sBAIvD,IAAIge,EAAS,KAETA,EADAJ,EAAcpU,OAAS,EACdkE,EAAYE,MAEZF,EAAYC,OAGzBxE,EAAG,WAAAnE,OAAYuY,EAAZ,oBAAAvY,OAAqCyY,EAArC,oBAAAzY,OAAmE0Y,EAAnE,uBAAA1Y,OAAoG2Y,EAApG,eAAA3Y,OAAgIgZ,IACnI7U,EAAI,WAAYqB,GAEhBA,EAAOwT,GAAQ1a,GACfwZ,EAAe7jB,KAAKR,EAAM,MAEtB8kB,IACIE,GACArM,EAAmBnY,KAAKR,EAAM6K,GAG9Boa,GACA7I,EAAmB5b,KAAKR,EAAM6K,OHnDtBrK,KANTP,MIpBA,WACX,IAAID,EAAOC,KACeD,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAU6E,yBAA9C,MAAAqF,OAA2ElK,EAAU8B,aAAe,SAAUgW,GAC1GA,EAAEoB,iBAEF,IAAIyI,EAAM7R,EAAElS,MACRsP,EAAYyU,EAAInM,QAAJ,IAAAtL,OAAgBlK,EAAU6F,YACtCuG,EAAYuV,EAAInM,QAAJ,IAAAtL,OAAgBlK,EAAUwG,YAC1C4Q,EAAiBjZ,KAAKR,EAAMuP,EAAW0F,EAAYE,OAAO,GAAO1G,EAAU8F,SAASlS,EAAUoH,mBJkBlEjJ,KARrBP,MKpBA,WACX,IAAID,EAAOC,KACeD,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAUuE,yBAA9C,MAAA2F,OAA2ElK,EAAU8B,aAAe,SAAUgW,GAC1GA,EAAEoB,iBAEF,IACI9M,EADM0D,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAUwG,YAC1C4Q,EAAiBjZ,KAAKR,EAAMyO,EAAWwG,EAAYE,OAAO,GAAM,MLoBpC3U,KATrBP,MMpBA,WACX,IAAID,EAAOC,KACP8S,EAAU/S,EAAK+S,QACO/S,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAUqG,kBAAoB,SAAUyR,GACxEA,EAAEoB,iBAEF,IAAIyI,EAAM7R,EAAElS,MAEZ,GAAIulB,QAAQzS,EAAQ9I,OAAO2B,4BAA6B,CACpD,IAAI2D,EAAYyU,EAAInM,QAAJ,IAAAtL,OAAgBlK,EAAU6F,YACtCuG,EAAYc,EAAUsI,QAAV,IAAAtL,OAAsBlK,EAAUwG,YAC5CuF,EAAcmB,EAAUsI,QAAV,IAAAtL,OAAsBlK,EAAUiF,eAEF,mBAArCyL,EAAQrD,0BACfqD,EAAQrD,yBAAyBlP,KAAKR,EAAMma,EAAG5K,EAAWnB,GAG1DmB,EAAUsJ,GAAG7Y,EAAKwf,mBAClBN,EAAa1e,KAAKR,GAGtBykB,EAAgBjkB,KAAKR,EAAMuP,GAEe,mBAA/BwD,EAAQnD,oBACfmD,EAAQnD,mBAAmBpP,KAAKR,EAAMma,EAAG5K,EAAWnB,GAGd,mBAA/B2E,EAAQjE,oBACfiE,EAAQjE,mBAAmBtO,KAAKR,EAAMma,EAAG1L,EAAWL,GAGhB,mBAA7B2E,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KAAKR,EAAMma,EAAG/L,ONH5B5N,KAXZP,MOpBA,WACX,IAAID,EAAOC,KACP8S,EAAU/S,EAAK+S,QACO/S,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAUkG,qBAAuB,SAAU4R,GAC3EA,EAAEoB,iBAEF,IACIhM,EADM4C,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAU6F,YACtCuG,EAAYc,EAAUsI,QAAV,IAAAtL,OAAsBlK,EAAUwG,YAC5CuF,EAAcK,EAAUsK,SACxB9I,EAAekC,EAAEiP,EAAoB5gB,KAAKR,EAAMuP,IAEpDA,EAAUuT,MAAM7S,GAChB0I,EAAmBnY,KAAKR,EAAMiQ,GAEe,mBAAlC8C,EAAQhD,uBACfgD,EAAQhD,sBAAsBvP,KAAKR,EAAMuP,EAAWU,EAAc7B,GAG5B,mBAA/B2E,EAAQjE,oBACfiE,EAAQjE,mBAAmBtO,KAAKR,EAAMma,EAAG1L,EAAWL,GAGhB,mBAA7B2E,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KAAKR,EAAMma,EAAG/L,MPMrB5N,KAZfP,MQrBA,WACX,IAAID,EAAOC,KACeD,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAUmG,gBAAkB,SAAU2R,GACtEA,EAAEoB,iBAEF,IACIhM,EADM4C,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAU6F,YAC1Cmc,EAAe7jB,KAAKR,EAAMuP,GAAW,MRyBpB/O,KAbVP,MSrBA,WACX,IAAID,EAAOC,KACeD,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAUoG,eAAiB,SAAU0R,GACrEA,EAAEoB,iBAEF,IACIhM,EADM4C,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAU6F,YAC1Cmc,EAAe7jB,KAAKR,EAAMuP,GAAW,MT0BrB/O,KAdTP,MUtBA,WACX,IAAID,EAAOC,KACP8S,EAAU/S,EAAK+S,QACO/S,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAUgG,qBAAuB,SAAU8R,GAC3EA,EAAEoB,iBAEF,IACIhM,EADM4C,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAU6F,YACtCud,EAAgBlW,EAAUmW,KAAV,IAAAnZ,OAAmBlK,EAAU6F,YAEjD,GAAIud,EAAc1U,OAAS,EAAG,CAC1B,IAAItC,EAAYc,EAAUsI,QAAV,IAAAtL,OAAsBlK,EAAUwG,YAC5CuF,EAAcmB,EAAUsI,QAAV,IAAAtL,OAAsBlK,EAAUiF,eAElDme,EAAc3C,MAAMvT,GAEsB,mBAA/BwD,EAAQjE,oBACfiE,EAAQjE,mBAAmBtO,KAAKR,EAAMma,EAAG1L,EAAWL,GAGhB,mBAA7B2E,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KAAKR,EAAMma,EAAG/L,OVc1B5N,KAfdP,MWtBA,WACX,IAAID,EAAOC,KACP8S,EAAU/S,EAAK+S,QACO/S,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAU+F,mBAAqB,SAAU+R,GACzEA,EAAEoB,iBAEF,IACIhM,EADM4C,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAU6F,YACtCyd,EAAgBpW,EAAUqW,KAAV,IAAArZ,OAAmBlK,EAAU6F,YAEjD,GAAIyd,EAAc5U,OAAS,EAAG,CAC1B,IAAItC,EAAYc,EAAUsI,QAAV,IAAAtL,OAAsBlK,EAAUwG,YAC5CuF,EAAcmB,EAAUsI,QAAV,IAAAtL,OAAsBlK,EAAUiF,eAElDqe,EAAcE,OAAOtW,GAEqB,mBAA/BwD,EAAQjE,oBACfiE,EAAQjE,mBAAmBtO,KAAKR,EAAMma,EAAG1L,EAAWL,GAGhB,mBAA7B2E,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KAAKR,EAAMma,EAAG/L,OXe5B5N,KAhBZP,MYrBA,WACX,IAAID,EAAOC,KACeD,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAUiG,mBAAqB,SAAU6R,GACzEA,EAAEoB,iBAEF,IACIhM,EADM4C,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAU6F,YAC1CwY,EAAYlgB,KAAKR,EAAMuP,MZ6BH/O,KAjBbP,MapBA,WACX,IAAID,EAAOC,KACP8S,EAAU/S,EAAK+S,QACO/S,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAU+G,kBAAoB,SAAU+Q,GACxEA,EAAEoB,iBAEF,IAAIyI,EAAM7R,EAAElS,MAEZ,GAAIulB,QAAQzS,EAAQ9I,OAAO0B,4BAA6B,CACpD,IAAI8C,EAAYuV,EAAInM,QAAJ,IAAAtL,OAAgBlK,EAAUwG,YACtC6O,EAAajJ,EAAUqF,KAAV,IAAAvH,OAAmBlK,EAAU6F,YAC1CkG,EAAcK,EAAUoJ,QAAV,IAAAtL,OAAsBlK,EAAUiF,eAEF,mBAArCyL,EAAQpE,0BACfoE,EAAQpE,yBAAyBnO,KAAKR,EAAMma,EAAG1L,EAAWL,GAG1DpO,EAAKwf,iBACwBxf,EAAKwf,iBAAiB3H,QAAtB,IAAAtL,OAAkClK,EAAUwG,YAC9CgQ,GAAGpK,IAC1ByQ,EAAa1e,KAAKR,GAEfyO,EAAUoK,GAAG7Y,EAAKyf,mBACzBP,EAAa1e,KAAKR,GAGlB0X,EAAW3G,OAAS,GACpB2G,EAAWtF,KAAK,WACZqS,EAAgBjkB,KAAKR,EAAMmS,EAAElS,SAIrCwO,EAAUuN,SAEgC,mBAA/BjJ,EAAQlE,oBACfkE,EAAQlE,mBAAmBrO,KAAKR,EAAMma,EAAG1L,EAAWL,GAGhB,mBAA7B2E,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KAAKR,EAAMma,EAAG/L,ObF5B5N,KAnBZP,McpBA,WACX,IAAID,EAAOC,KACP8S,EAAU/S,EAAK+S,QACO/S,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAU4G,qBAAuB,SAAUkR,GAC3EA,EAAEoB,iBAEF,IAAIyI,EAAM7R,EAAElS,MACRwO,EAAYuV,EAAInM,QAAJ,IAAAtL,OAAgBlK,EAAUwG,YACtCuF,EAAcK,EAAUsK,SACxB7J,EAAeiD,EAAEuP,EAAoBlhB,KAAKR,EAAMyO,EAAWuV,EAAIjL,SAASxE,SAASlS,EAAUyE,yBAC/F2H,EAAUqU,MAAM5T,GAChBkN,EAAmB5b,KAAKR,EAAMkP,GAEe,mBAAlC6D,EAAQ/D,uBACf+D,EAAQ/D,sBAAsBxO,KAAKR,EAAMyO,EAAWS,EAAcd,GAG9B,mBAA7B2E,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KAAKR,EAAMma,EAAG/L,MdoBrB5N,KApBfP,MerBA,WACX,IAAID,EAAOC,KACeD,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAU6G,gBAAkB,SAAUiR,GACtEA,EAAEoB,iBAEF,IACI9M,EADM0D,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAUwG,YAC1Cwb,EAAe7jB,KAAKR,EAAMyO,GAAW,MfiCpBjO,KArBVP,MgBrBA,WACX,IAAID,EAAOC,KACeD,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAU8G,eAAiB,SAAUgR,GACrEA,EAAEoB,iBAEF,IACI9M,EADM0D,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAUwG,YAC1Cwb,EAAe7jB,KAAKR,EAAMyO,GAAW,MhBkCrBjO,KAtBTP,MiBtBA,WACX,IAAID,EAAOC,KACP8S,EAAU/S,EAAK+S,QACO/S,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAU2G,qBAAuB,SAAUmR,GAC3EA,EAAEoB,iBAEF,IACI9M,EADM0D,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAUwG,YACtCid,EAAgBrX,EAAUiX,KAAV,IAAAnZ,OAAmBlK,EAAUwG,YAEjD,GAAIid,EAAc/U,OAAS,EAAG,CAC1B,IAAI3C,EAAcK,EAAUsK,SAE5B+M,EAAchD,MAAMrU,GAEoB,mBAA7BsE,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KAAKR,EAAMma,EAAG/L,OjB2B1B5N,KAvBdP,MkBtBA,WACX,IAAID,EAAOC,KACP8S,EAAU/S,EAAK+S,QACO/S,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAU0G,mBAAqB,SAAUoR,GACzEA,EAAEoB,iBAEF,IACI9M,EADM0D,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAUwG,YACtCkd,EAAgBtX,EAAUmX,KAAV,IAAArZ,OAAmBlK,EAAUwG,YAEjD,GAAIkd,EAAchV,OAAS,EAAG,CAC1B,IAAI3C,EAAcK,EAAUsK,SAE5BgN,EAAcF,OAAOpX,GAEmB,mBAA7BsE,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KAAKR,EAAMma,EAAG/L,OlB4B5B5N,KAxBZP,MmBrBA,WACX,IAAID,EAAOC,KACeD,EAAKsM,oBAEXgI,GAAG,QAAvB,IAAA/H,OAAoClK,EAAUgH,mBAAqB,SAAU8Q,GACzEA,EAAEoB,iBAEF,IACI9M,EADM0D,EAAElS,MACQ4X,QAAJ,IAAAtL,OAAgBlK,EAAUwG,YAC1C6X,EAAYlgB,KAAKR,EAAMyO,MnBqCHjO,KAzBbP,OoBhBA+lB,EAAA,SAAU5X,EAAa6X,GAClC,IAAIjmB,EAAOC,KACP8S,EAAU/S,EAAK+S,QAEnB3E,EAAY6K,SAAS5W,EAAUiF,cAC/B,IAAImG,EAAUW,EAAYoK,OACtB0N,EAAmB/T,EAAC,eAAA5F,OAAgBlK,EAAUkF,mBAA1B,aAAwDiR,KAAK/K,GAOrF,GANAW,EAAYoK,KAAK0N,GAE8B,mBAApCnT,EAAQ1E,yBACf0E,EAAQ1E,wBAAwB7N,KAAKR,EAAMoO,IAG1C6X,EAAiB,CAClB,IAAIE,EAAqBhU,EAAEgF,EAAgB3W,KAAKR,EAAMoV,EAAa9N,eACnE8G,EAAY+K,OAAOgN,GACnBA,EAAmB5X,SAAnB,IAAAhC,OAAgClK,EAAU8B,cAAemQ,GAAG,QAAS,SAAU6F,GAC3EA,EAAEoB,iBAEF9B,EAAiBjZ,KAAKR,EAAMkmB,EAAkBjR,EAAYC,QAAQ,GAAM,KAIhFgR,EAAiB1K,SAAS,CACtBC,OAAM,IAAAlP,OAAMlK,EAAUsE,kBAAhB,UAAA4F,OAA0ClK,EAAUyE,sBAApD,OAAAyF,OAA+ElK,EAAUyG,gBAC/F6S,MAAK,MAAApP,OAAQlK,EAAUwG,WACvB6S,OAAQ,QACRE,YAAW,IAAArP,OAAMlK,EAAUiF,cAC3B8e,KAAM,IACNvK,UAAW,UACXC,QAAS,SAAU3N,EAAOiM,GACtB,IAAIsB,EAAStB,EAAGsB,OACZK,EAAO3B,EAAG2B,KAEVL,GACAA,EAAOM,SAGXkD,EAAa1e,KAAKR,GAEsB,mBAA7B+S,EAAQ7E,kBACf6E,EAAQ7E,iBAAiB1N,KAAKR,EAAMmO,EAAOC,GAG/C2N,EAAK9C,SAAS5W,EAAUE,cAE5B0Z,MAAO,SAAU9B,EAAGC,GAChBA,EAAG2B,KAAK9C,SAAS5W,EAAUE,aAC3B6X,EAAG2B,KAAK9C,SAAS5W,EAAUqB,uBAE/BwY,KAAM,SAAU/B,EAAGC,GACXA,EAAGsB,QACHtB,EAAGsB,OAAOM,SAEd5B,EAAG2B,KAAKpH,YAAYtS,EAAUE,iBAKG,mBAA9BwQ,EAAQzE,kBACFyE,EAAQzE,kBAAkB9N,KAAKR,EAAMoO,GAErC8X,EAAiB3X,YAGvB6D,KAAK,WACZgK,EAAmB5b,KAAKR,EAAMmS,EAAElS,UCtEzBomB,GAAA,WACX,IACIC,EADOrmB,KACQqmB,QACfvT,EAFO9S,KAEQ8S,QACfwT,EAHOtmB,KAGUgT,aACjB0J,EAJO1c,KAIQ0c,QAAUxK,EAAC,sBAAA5F,OACfga,EADe,aAAAha,OACMlK,EAAUC,GADhB,KAAAiK,OACsBlK,EAAUQ,QADhC,gCAAA0J,OAERlK,EAAUC,GAFF,KAAAiK,OAEQlK,EAAUuF,eAFlB,oCAAA2E,OAGJlK,EAAUC,GAHN,KAAAiK,OAGYlK,EAAUwF,sBAHtB,2CAAA0E,OAIGlK,EAAUC,GAJb,KAAAiK,OAImBlK,EAAUqF,OAJ7B,kFAU9B4e,EAAQrN,SAAS5W,EAAUG,WAC3B8jB,EAAQxD,MAAMnG,GAEd,IAAI5O,EAjBO9N,KAiBO8N,OAAS4O,EAAQ7I,KAAR,IAAAvH,OAAiBlK,EAAUqF,SAjB3CzH,KAkBN2kB,UAAY7W,EAAOyY,WAlBbvmB,KAsBN2kB,UAAU1jB,IAAI,GAAGulB,OAtBXxmB,KAuBN2kB,UAAU1jB,IAAI,GAAGwlB,QAvBXzmB,KA0BN0mB,aAAe5Y,EAAO,GAAG6Y,cAAgB7Y,EAAO,GAAG6Y,cAAgB7Y,EAAO,GAAG8Y,gBAAgBC,YA1BvF7mB,KA2BN+N,WA3BM/N,KA2BY2kB,UAAU9Q,KAAK,QA3B3B7T,KA4BNgO,WA5BMhO,KA4BY2kB,UAAU9Q,KAAK,QAGtC,IAAIiT,EAAS,GACb5U,EAAE,+BAA+BC,KAAK,WAClC,IAAI4U,EAAQ7U,EAAElS,MACVgnB,EAAQD,EAAM1U,KAAK,OAAS,GAC5B4U,EAAOF,EAAM1U,KAAK,SAAW0U,EAAM1U,KAAK,cAAgB,GAGxDyU,GADAG,EACM,gDAAA3a,OAAoD2a,EAApD,MAAA3a,OAA6D0a,EAA7D,SAEA,0BAAA1a,OAA8B0a,EAA9B,KAAA1a,OAAuCya,EAAMxO,OAA7C,gBAGdrG,EAAEF,QAAQc,EAAQ3G,gBAAkB+F,EAAEC,KAAKW,EAAQ3G,cAAe,SAAUrM,EAAGinB,GAC3E,IAAIC,EAAQD,EAAMG,IAAM,GAEpBH,EAAME,KACNH,GAAM,gDAAAxa,OAAoDya,EAAME,KAA1D,MAAA3a,OAAmE0a,EAAnE,SAENF,GAAM,0BAAAxa,OAA8B0a,EAA9B,KAAA1a,OAAuCya,EAAMvZ,QAA7C,gBAjDHxN,KAoDN+N,WAAWmL,OAAO4N,GApDZ9mB,KAuDNqM,oBAAsB6F,EAAEY,EAAQzG,qBAAuB,WAvDjDrM,KAwDNqM,oBAAoBgG,KAAK,QAA9B,GAAA/F,OAA0ClK,EAAUC,GAApD,KAAAiK,OAA0DlK,EAAUoF,wBAxDzDxH,KAyDNqM,oBAAoBkM,KAAK8N,EAAQvR,OAASuR,EAAQ9N,QAAU,IAzDtDvY,KA0DDqM,oBAAoBgG,KAAK,OA1DxBrS,KA2DFqM,oBAAoBgG,KAAK,KA3DvBrS,KA2DkCgT,cA3DlChT,KA6DNgO,WAAWkL,OA7DLlZ,KA6DiBqM,qBAAqB2M,SAAS5W,EAAUsF,aAEhC,mBAAzBoL,EAAQjF,cACfiF,EAAQjF,aAAatN,KAhEdP,UAgE8B8N,OAhE9B9N,KAgE2C+N,WAhE3C/N,KAgE4DgO,YClE5D,WACX,IAIImZ,EAJApnB,EAAOC,KACP8S,EAAU/S,EAAK+S,QACfzG,EAAsBtM,EAAKsM,oBAO/B,GAJIyG,EAAQ1G,uBACR+a,EAAe9a,EAAoBwH,KAAKf,EAAQ1G,wBAG/C+a,GAAwC,IAAxBA,EAAarW,OAAc,CAC5C,IAAIsW,EAAkB/a,EAAoBkM,OAE1C4O,EAAejV,EAAE,WAAWqG,KAAK6O,GACjC/a,EAAoBgb,QAAQnO,OAAOiO,GAGvCA,EAAahV,KAAK,WACd,IAAIhE,EAAc+D,EAAElS,MACfmO,EAAYkE,KAAK,OAClBlE,EAAYkE,KAAK,KAAMW,KAG3B+S,EAAgBxlB,KAAKR,EAAMoO,MD8Cd5N,KAnENP,MAoEX0kB,EAAkBnkB,KApEPP,OEGAqZ,GAAA,SAAUvH,EAAQwV,GAClBtnB,KACNqmB,QAAUvU,EADJ9R,KAEN8S,QAAUZ,EAAEqV,OAAO,GAAIC,EAAUF,GAEtClB,GAAW7lB,KAJAP,MAKXsjB,EAAW/iB,KALAP,MCLA,WACX,IAAID,EAAOC,KACPynB,EAAYzU,IAEZkM,EAAUnf,EAAKmf,QAAUhN,EAAC,yBAAA5F,OACZlK,EAAUC,GADE,KAAAiK,OACIlK,EAAUgC,QADd,UAAAkI,OAC8Bmb,EAD9B,gCAAAnb,OAERlK,EAAUC,GAFF,KAAAiK,OAEQlK,EAAUiC,eAFlB,qCAAAiI,OAGHlK,EAAUC,GAHP,KAAAiK,OAGalK,EAAUmC,cAHvB,oEAAA+H,OAIqBlK,EAAUC,GAJ/B,KAAAiK,OAIqClK,EAAUoC,eAJ/C,+DAAA8H,OAMRlK,EAAUC,GANF,KAAAiK,OAMQlK,EAAUkC,aANlB,mCAU9B4a,EAAQrL,KAAR,IAAAvH,OAAiBlK,EAAUoC,iBAAkB6P,GAAG,QAAS,SAAU6F,GAC/DA,EAAEoB,iBAEF2D,EAAa1e,KAAKR,KAGtBA,EAAKugB,aAAepB,EAAQrL,KAAR,IAAAvH,OAAiBlK,EAAUmC,iBAC7BxE,EAAKqf,YAAcF,EAAQrL,KAAR,IAAAvH,OAAiBlK,EAAUkC,gBACpD+P,GAAG,SAAU,OAAQ,SAAU6F,GAEvC,OADAA,EAAEoB,kBACK,IAGX4D,EAAQ7D,SAAStb,EAAK2c,UDhBVnc,KANDP,MAOX2c,EAAkBpc,KAPPP,M3CLA,WACX,IAAID,EAAOC,KACP8S,EAAU/S,EAAK+S,QAEnBZ,EAAE4R,cAAchR,EAAQhJ,gBAAkBoI,EAAEC,KAAKW,EAAQhJ,cAAe,SAACnJ,EAAMggB,GAC3E,IAAI9B,EACJ,OAAA6I,EAAe/G,EAAa9B,UACxB,IAAK,WACDA,EAAU8B,EAAa9B,QAAQte,KAAKR,EAAM4gB,GAC1C,MAEJ,IAAK,SACD9B,EAAU3M,EAAEyO,EAAa9B,SACzB,MAEJ,QACIA,EAAU8B,EAAa9B,QAG/BA,EAAQxM,KAAK,qBAAsB1R,GACnCke,EAAQxK,GAAG,QAAS,SAAU6F,GAC1BA,EAAEoB,iBAEFmF,EAAYlgB,KAAKR,EAAM8e,KAGvB8B,EAAagH,UACblI,EAAgBlf,KAAKR,EAAM8e,EAASle,EAAMoe,EAAiBC,MAAO2B,EAAaC,oBAAqBD,M2Cd1FpgB,KARPP,WAUNknB,GAAKlU,IACVwE,QAAQoQ,UAXG5nB,KAWYknB,IAXZlnB,KAayB,mBAbzBA,KAaK8S,QAAQxF,SAbbtN,KAcF8S,QAAQxF,QAAQ/M,KAddP,OENA6nB,GAAA,WACX,IACIxB,EADOrmB,KACQqmB,QACfa,EAFOlnB,KAEGknB,GAEV1Z,EAAUgU,EAAWjhB,KAJdP,MAIyB,GAJzBA,KAKN0c,QAAQX,SAETsK,EAAQzN,GAAG,YACXyN,EAAQvR,IAAItH,GAEZ6Y,EAAQ9N,KAAK/K,GAGjB6Y,EAAQ3R,YAAYtS,EAAUG,WAC9B8jB,EAAQvO,KAAK,UAAW,aACjBN,QAAQoQ,UAAUV,oSCC7B,IAAKhV,IAAE4V,GAAGvM,SACN,MAAM,IAAIlK,MAAM,wHAGpBX,OAAOC,eAAgB,MAGjB6G,cAoBF,SAAAA,EAAY1F,EAAQwV,gGAAQS,CAAA/nB,KAAAwX,GAAAwQ,GAAAhoB,KAAA,mBATT,MASSgoB,GAAAhoB,KAAA,mBART,MAQSgoB,GAAAhoB,KAAA,cANd,MAMcgoB,GAAAhoB,KAAA,aALf,MAKegoB,GAAAhoB,KAAA,oBAHR,IAGQgoB,GAAAhoB,KAAA,oBAFR,IAGhBqZ,GAAKnI,MAAMlR,KAAM,CAAC8R,EAAQwV,wDAQ1B7W,EAAGS,WAAH,EAAAL,yCAOSO,GACTsG,EAAMtG,gCASEU,EAAQwV,GAChB,OAAO,IAAI9P,EAAQ1F,EAAQwV,8CAQLlX,GAA8B,IAAd0C,EAAcjC,UAAAC,OAAA,QAAAyL,IAAA1L,UAAA,GAAAA,UAAA,GAAJ,GAChDT,EAAe+B,KAAK,WAChBiH,EAAmB7Y,KAAK,CACpBuS,QAAS,CACLzC,uBAAwByC,EAAQmV,UAChC3X,sBAAuBwC,EAAQoV,UAEpChW,IAAElS,4DAST,OAAOA,KAAKwf,+DAQZ,OAAOxf,KAAKuf,sDAQZ,OAAOvM,8CAUOlB,EAAQC,EAAkBC,GACxC,OAAO+F,EAAkB7G,MAAMlR,KAAM,CAAC8R,EAAQC,EAAkBC,4CAQpDlE,EAAQ4O,ICnIb,SAAU5O,EAAQ4O,GACxBA,IACD5O,EAAO+K,KAAP,eAAAvM,OAA2BlK,EAAU0F,0BAArC,aACA4U,EAAU5O,EAAOgL,UAGrB4D,EAAQ1D,SAAR,GAAA1M,OAAoBlK,EAAUyF,uBAE9B,IAAIsgB,EAAQjW,EAAC,eAAA5F,OAAgBlK,EAAU2F,aAA1B,aACb2U,EAAQ0L,QAAQD,GAEhBzL,EAAQrI,GAAG,aAAc,WACrBqI,EAAQhI,YAAR,GAAApI,OAAuBlK,EAAU4F,wBAGrCmgB,EAAM9T,GAAG,WAAY,SAAU6F,GAC3BA,EAAEoB,iBAEFoB,EAAQ1D,SAAR,GAAA1M,OAAoBlK,EAAU4F,0BDkHdkJ,MAAMlR,KAAM,CAAC8N,EAAQ4O,sCAU/BL,EAASC,EAAWE,GAC1B,OAAOI,EAAUrc,KAAKP,KAAMqc,EAASC,EAAWE,qCAO1ChJ,GACNoG,EAAUrZ,KAAKP,KAAMwT,qCAOfA,GACNuB,EAAUxU,KAAKP,KAAMwT,sCAOdjB,GACP,OAAOiP,EAAWtQ,MAAMlR,KAAM,CAACuS,uCAOxB/E,EAASW,IE5KT,SAAUX,EAASW,GAC9B,IAEI2D,EADAzF,EADOrM,KACoBqM,oBAG1B8B,EAGIA,EAAYka,SACbvW,EAASzF,EAAoBwH,KAAK1F,IAHtC2D,EAASzF,EAAoBiC,SAApB,IAAAhC,OAAiClK,EAAUiF,eAOlC,IAAlByK,EAAOhB,QACP4G,EAAM,gCAGV5F,EAAOyG,KAAK/K,GACZuY,EAAgBxlB,KAjBLP,KAiBgB8R,GAAQ,KF2JpBZ,MAAMlR,KAAM,CAACwN,EAASW,sCAOjCsW,GAAQvT,MAAMlR,yCAYP0S,EAAM9I,EAAO+I,EAAYC,EAAYpF,EAASqF,IG/L9C,SAAUH,EAAM9I,EAAO+I,EAAYC,EAAYpF,EAASqF,GACnE,IAD+EqK,EAAAoL,EAK3E7V,EAAclS,KAJPP,KAIkB0S,EAAM9I,EAAO+I,EAAYC,EAAYpF,EAASqF,GALI,GAG3EI,EAH2EiK,EAAA,GAI3EhK,EAJ2EgK,EAAA,GACpEld,KAMNqT,kBAAoBU,EANd/T,KAMsCqT,mBANtCrT,KAONsT,kBAAoBS,EAPd/T,KAOsCsT,mBAPtCtT,KASNwT,MAAMK,KAAX,IAAAvH,OAAoBlK,EAAU0D,WAAYoT,OAAOjG,GATtCjT,KAUNwT,MAAMK,KAAX,IAAAvH,OAAoBlK,EAAUgD,aAAc8T,OAAOhG,GAX4B,IAAAkK,EAAAkL,EAapC/U,EAAoBhT,KAZpDP,MADoE,GAa1EyT,EAb0E2J,EAAA,GAAAA,EAAA,GAc/DvJ,KAAhB,IAAAvH,OAAyBlK,EAAU2D,kBAAmBwS,KAAK9E,GAAmBoL,QAAQ,YHkLvE3N,MAAMlR,KAAM,CAAC0S,EAAM9I,EAAO+I,EAAYC,EAAYpF,EAASqF,+CAQvDzC,GACf,OAAOgJ,EAAmBlI,MAAMlR,KAAM,CAACoQ,8CAnLzCoH,cACgBgQ,MADhBhQ,YAEa,MAFbA,aAGe,YAHfA,eAIiB,OAJjBA,gBAKkB,CAChB+Q,MAAO,CACHpP,gBAAgB,KAiL5BjH,IAAE4V,GAAGU,QAAU,SAAU1V,GACrB,IAAIuT,EAAUnU,IAAElS,MACZyoB,EAAWpC,EAAQvO,KAAK,WAE5B,MAAuB,iBAAZhF,GAKF2V,IACDA,EAAWjR,GAAQ6B,KAAKgN,EAASvT,GACjCuT,EAAQvO,KAAK,UAAW2Q,IAGrBA,GATHA,GAAYA,EAAS3V,IAAyC,mBAAtB2V,EAAS3V,GAC1C2V,EAAS3V,GAAS5B,MAAMuX,EAAUzX,MAAMhP,UAAU0mB,MAAMnoB,KAAKsQ,UAAW,SADnF,GAaRH,OAAO8G,QAAUtF,IAAEsW,QAAUtW,IAAE4V,GAAGU,QAAQG,YAAcnR","file":"js/keditor.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jQuery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jQuery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"jQuery\")) : factory(root[\"jQuery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","const CSS_CLASS = {\r\n UI: 'keditor-ui',\r\n UI_DRAGGING: 'keditor-ui-dragging',\r\n UI_HIDDEN: 'keditor-ui-hidden',\r\n UI_CUTTING: 'keditor-ui-cutting',\r\n UI_RESIZER: 'ui-resizable-resizer',\r\n \r\n SORTABLE: 'ui-sortable',\r\n RESIZABLE: 'ui-sortable',\r\n \r\n WRAPPER: 'keditor-wrapper',\r\n \r\n BTN: 'keditor-btn',\r\n BTN_GROUP: 'keditor-btn-group',\r\n BTN_PRIMARY: 'keditor-btn-primary',\r\n BTN_DEFAULT: 'keditor-btn-default',\r\n \r\n STATE_ACTIVE: 'active',\r\n STATE_OPENED: 'opened',\r\n STATE_SHOWED: 'showed',\r\n STATE_SELECTED: 'selected',\r\n STATE_DUPLICATED: 'duplicated',\r\n STATE_INITIALIZED: 'initialized',\r\n STATE_INITIALIZING: 'initializing',\r\n STATE_PREVIEWING: 'previewing',\r\n STATE_TOOLBAR_SHOWED: 'showed-keditor-toolbar',\r\n STATE_SIDEBAR_SHOWED: 'showed-keditor-sidebar',\r\n STATE_MODAL_OPENED: 'opened-modal',\r\n STATE_NOT_MATCHED: 'not-matched',\r\n STATE_HAS_FOOTER: 'has-footer',\r\n STATE_COPYING: 'copying',\r\n STATE_COPYING_COMPONENT: 'copying-component',\r\n STATE_COPYING_CONTAINER: 'copying-container',\r\n STATE_COPYING_SUB_CONTAINER: 'copying-sub-container',\r\n \r\n ADD_CONTENT: 'btn-add-content',\r\n PASTE_CONTENT: 'btn-paste-content',\r\n \r\n SIDEBAR: 'keditor-sidebar',\r\n SIDEBAR_HEADER: 'keditor-sidebar-header',\r\n SIDEBAR_BODY: 'keditor-sidebar-body',\r\n SIDEBAR_TITLE: 'keditor-sidebar-title',\r\n SIDEBAR_CLOSER: 'keditor-sidebar-closer',\r\n \r\n TOPBAR: 'keditor-topbar',\r\n TOPBAR_LEFT: 'keditor-topbar-left',\r\n TOPBAR_CENTER: 'keditor-topbar-center',\r\n TOPBAR_RIGHT: 'keditor-topbar-right',\r\n TOPBAR_BUTTON: 'keditor-topbar-btn',\r\n TOPBAR_TITLE: 'keditor-topbar-title',\r\n \r\n MODAL: 'keditor-modal',\r\n MODAL_COMPONENT: 'keditor-modal-component',\r\n MODAL_CONTAINER: 'keditor-modal-container',\r\n MODAL_HEADER: 'keditor-modal-header',\r\n MODAL_TITLE: 'keditor-modal-title',\r\n MODAL_BODY: 'keditor-modal-body',\r\n MODAL_FOOTER: 'keditor-modal-footer',\r\n MODAL_CLOSE: 'keditor-modal-close',\r\n MODAL_ADD: 'keditor-modal-add',\r\n \r\n SNIPPET: 'keditor-snippet',\r\n SNIPPET_INNER: 'keditor-snippet-inner',\r\n SNIPPET_TITLE: 'keditor-snippet-title',\r\n SNIPPET_PREVIEW: 'keditor-snippet-preview',\r\n SNIPPET_CONTAINER: 'keditor-snippet-container',\r\n SNIPPET_COMPONENT: 'keditor-snippet-component',\r\n SNIPPETS: 'keditor-snippets',\r\n SNIPPETS_FILTER: 'keditor-snippets-filter',\r\n SNIPPETS_FILTER_COMPONENT: 'keditor-snippets-filter-component',\r\n SNIPPETS_FILTER_CONTAINER: 'keditor-snippets-filter-container',\r\n SNIPPETS_FILTER_LABEL: 'keditor-snippets-filter-label',\r\n SNIPPETS_SEARCH: 'keditor-snippets-search',\r\n SNIPPETS_FILTER_WRAPPER: 'keditor-snippets-filter-wrapper',\r\n SNIPPETS_COMPONENT: 'keditor-snippets-component',\r\n SNIPPETS_WRAPPER: 'keditor-snippets-wrapper',\r\n \r\n TOOLBAR: 'keditor-toolbar',\r\n TOOLBAR_BOTTOM: 'keditor-toolbar-bottom',\r\n TOOLBAR_CONTENT_AREA: 'keditor-toolbar-content-area',\r\n TOOLBAR_CONTAINER: 'keditor-toolbar-container',\r\n TOOLBAR_CONTAINER_BOTTOM: 'keditor-toolbar-bottom-container',\r\n TOOLBAR_CONTAINER_CONTENT: 'keditor-toolbar-container-content',\r\n TOOLBAR_SUB_CONTAINER: 'keditor-toolbar-sub-container',\r\n TOOLBAR_SUB_CONTAINER_BOTTOM: 'keditor-toolbar-bottom-sub-container',\r\n TOOLBAR_SUB_CONTAINER_CONTENT: 'keditor-toolbar-sub-container-content',\r\n TOOLBAR_COMPONENT: 'keditor-toolbar-component',\r\n TOOLBAR_COMPONENT_BOTTOM: 'keditor-toolbar-bottom-component',\r\n \r\n SETTING: 'keditor-setting',\r\n SETTING_FORM: 'keditor-setting-form',\r\n SETTING_FORM_LOADING: 'keditor-setting-form-loading',\r\n \r\n CONTENT_AREA: 'keditor-content-area',\r\n CONTENT_AREA_INNER: 'keditor-content-area-inner',\r\n CONTENT_AREAS: 'keditor-content-areas',\r\n CONTENT_AREAS_WRAPPER: 'keditor-content-areas-wrapper',\r\n \r\n IFRAME: 'keditor-iframe',\r\n IFRAME_BODY: 'keditor-iframe-body',\r\n IFRAME_WRAPPER: 'keditor-iframe-wrapper',\r\n IFRAME_WIDTH_SWITCHER: 'keditor-iframe-width-switcher',\r\n IFRAME_COVER_WRAPPER: 'keditor-iframe-cover-wrapper',\r\n IFRAME_COVER_WRAPPER_FAKE: 'keditor-iframe-cover-wrapper-fake',\r\n IFRAME_COVER: 'keditor-iframe-cover',\r\n IFRAME_COVER_HIDDEN: 'hidden-cover',\r\n \r\n COMPONENT: 'keditor-component',\r\n COMPONENT_MOVE: 'btn-component-move',\r\n COMPONENT_MOVE_UP: 'btn-component-move-up',\r\n COMPONENT_MOVE_DOWN: 'btn-component-move-down',\r\n COMPONENT_SETTING: 'btn-component-setting',\r\n COMPONENT_DUPLICATE: 'btn-component-duplicate',\r\n COMPONENT_COPY: 'btn-component-copy',\r\n COMPONENT_CUT: 'btn-component-cut',\r\n COMPONENT_DELETE: 'btn-component-delete',\r\n COMPONENT_CONTENT: 'keditor-component-content',\r\n COMPONENT_EXISTING: 'existing-component',\r\n \r\n CONTAINER: 'keditor-container',\r\n CONTAINER_MOVE: 'btn-container-move',\r\n CONTAINER_MOVE_UP: 'btn-container-move-up',\r\n CONTAINER_MOVE_DOWN: 'btn-container-move-down',\r\n CONTAINER_DUPLICATE: 'btn-container-duplicate',\r\n CONTAINER_COPY: 'btn-container-copy',\r\n CONTAINER_CUT: 'btn-container-cut',\r\n CONTAINER_DELETE: 'btn-container-delete',\r\n CONTAINER_SETTING: 'btn-container-setting',\r\n CONTAINER_INNER: 'keditor-container-inner',\r\n CONTAINER_CONTENT: 'keditor-container-content',\r\n CONTAINER_CONTENT_INNER: 'keditor-container-content-inner',\r\n \r\n SUB_CONTAINER: 'keditor-sub-container',\r\n SUB_CONTAINER_CONTENT: 'keditor-sub-container-content',\r\n \r\n PREVIEW_AREA: 'keditor-preview-area',\r\n};\r\n\r\nexport default CSS_CLASS;\r\n","import CSS_CLASS from './cssClass';\r\n\r\nexport default {\r\n \r\n /*\r\n * Title will be showed in left of topbar\r\n * @option {String}\r\n */\r\n title: 'Editing with KEditor',\r\n \r\n /*\r\n * containerForQuickAddComponent The container snippet which will be added automatically in content are when you adding a component. Note: component will be added in first container content of container\r\n * @option {String}\r\n */\r\n containerForQuickAddComponent: `\r\n
\r\n
\r\n
\r\n
\r\n `,\r\n \r\n /*\r\n * Extra settings in sidebar\r\n * @option {Object}\r\n * @format:\r\n * {\r\n * settingName: {\r\n * title,\r\n * content,\r\n * trigger\r\n * settingShowFunction\r\n * }\r\n * }\r\n * @settingName.option {String} title\r\n * @settingName.option {jQuery|Function|String} trigger If pass as function, argument will be current extra setting. This function must return a jQuery object\r\n * @settingName.option {Boolean} autoInit By default, all settings form of KEditor will be initialized in first time you show it. If you want it to initialize intermediately, just set `autoIni=true`\r\n * @settingName.option {Function} settingInitFunction Same arguments with `containerSettingInitFunction`\r\n * @settingName.option {Function} settingShowFunction Same arguments with `containerSettingShowFunction`\r\n * @example:\r\n * {\r\n * settingName1: {\r\n * title: 'Page Settings',\r\n * trigger: $('.btn-page-setting'),\r\n * autoInit: true,\r\n * settingInitFunction: function (form, keditor) {\r\n * form.append('
This is content of page settings
');\r\n * },\r\n * settingShowFunction: function (form, trigger, keditor) {\r\n * // Do something\r\n * }\r\n * },\r\n * settingName2: {\r\n * title: 'Page Settings 2',\r\n * triggerSelector: '.btn-page-settings',\r\n * trigger: function (extraSetting) {\r\n * return $(extraSetting.triggerSelector);\r\n * },\r\n * settingInitFunction: function (form, keditor) {\r\n * form.append('
This is content of page settings 2
');\r\n * },\r\n * settingShowFunction: function (form, trigger, keditor) {\r\n * // Do something\r\n * }\r\n * },\r\n * settingName3: {\r\n * title: 'Page Settings 3',\r\n * trigger: '.btn-page-settings',\r\n * settingInitFunction: function (form, keditor) {\r\n * form.append('
This is content of page settings 3
');\r\n * },\r\n * settingShowFunction: function (form, trigger, keditor) {\r\n * // Do something\r\n * }\r\n * }\r\n * }\r\n */\r\n extraSettings: null,\r\n \r\n /*\r\n * Extra items in topbar\r\n * @option {Array}\r\n * @format:\r\n * {\r\n * itemName: {\r\n * html,\r\n * click\r\n * }\r\n * }\r\n * @itemName.option {String} html HTML string for extra item\r\n * @itemName.option {Function} click Handler for click event of extra item\r\n */\r\n extraTopbarItems: null,\r\n \r\n locale: {\r\n /*\r\n * Text title for devices switcher\r\n * @option {String}\r\n */\r\n viewOnMobile: 'View on mobile',\r\n viewOnTablet: 'View on tablet',\r\n viewOnLaptop: 'View on laptop',\r\n viewOnDesktop: 'View on desktop',\r\n \r\n /*\r\n * Text title for preview mode\r\n * @option {String}\r\n */\r\n previewOn: 'Preview ON',\r\n previewOff: 'Preview OFF',\r\n \r\n /*\r\n * Text title for fullscreen mode\r\n * @option {String}\r\n */\r\n fullscreenOn: 'Fullscreen ON',\r\n fullscreenOff: 'Fullscreen Off',\r\n \r\n /*\r\n * Text title for save button\r\n * @option {String}\r\n */\r\n save: 'Save',\r\n \r\n /*\r\n * Text title for add content button\r\n * @option {String}\r\n */\r\n addContent: 'Add content',\r\n \r\n /*\r\n * Text title for add content button below sub-container and component\r\n * @option {String}\r\n */\r\n addContentBelow: 'Add content below',\r\n \r\n /*\r\n * Text title for paste content button\r\n * @option {String}\r\n */\r\n pasteContent: 'Paste content',\r\n \r\n /*\r\n * Text title for paste content button below sub-container and component\r\n * @option {String}\r\n */\r\n pasteContentBelow: 'Paste content below',\r\n \r\n /*\r\n * Text title for move button\r\n * @option {String}\r\n */\r\n move: 'Drag',\r\n \r\n /*\r\n * Text title for move up button\r\n * @option {String}\r\n */\r\n moveUp: 'Move up',\r\n \r\n /*\r\n * Text title for move down button\r\n * @option {String}\r\n */\r\n moveDown: 'Move down',\r\n \r\n /*\r\n * Text title for setting button\r\n * @option {String}\r\n */\r\n setting: 'Setting',\r\n \r\n /*\r\n * Text title for copy button\r\n * @option {String}\r\n */\r\n copy: 'Copy',\r\n \r\n /*\r\n * Text title for cut button\r\n * @option {String}\r\n */\r\n cut: 'Cut',\r\n \r\n /*\r\n * Text title for delete button\r\n * @option {String}\r\n */\r\n delete: 'Delete',\r\n \r\n /*\r\n * Text for snippet category label\r\n * @option {String}\r\n */\r\n snippetCategoryLabel: 'Category',\r\n \r\n /*\r\n * Text for snippet category `All`\r\n * @option {String}\r\n */\r\n snippetCategoryAll: 'All',\r\n \r\n /*\r\n * Text for snippet search text box\r\n * @option {String}\r\n */\r\n snippetCategorySearch: 'Type to search...',\r\n \r\n /*\r\n * Text title for bootstrap column resizer\r\n * @option {String}\r\n */\r\n columnResizeTitle: 'Drag to resize',\r\n \r\n /*\r\n * Text title for container setting\r\n * @option {String}\r\n */\r\n containerSetting: 'Container Settings',\r\n \r\n /*\r\n * Text content for confirm dialog when deleting container\r\n * @option {String}\r\n */\r\n confirmDeleteContainerText: 'Are you sure that you want to delete this container? This action can not be undone!',\r\n \r\n /*\r\n * Text content for confirm dialog when deleting container\r\n * @option {String}\r\n */\r\n confirmDeleteComponentText: 'Are you sure that you want to delete this component? This action can not be undone!',\r\n },\r\n \r\n /*\r\n * Width of mobile device\r\n * @option {Number}\r\n */\r\n widthMobile: 420,\r\n \r\n /*\r\n * Width of tablet device\r\n * @option {Number}\r\n */\r\n widthTablet: 820,\r\n \r\n /*\r\n * Width of laptop device\r\n * @option {Number}\r\n */\r\n widthLaptop: 1050,\r\n \r\n /*\r\n * Min width of desktop device\r\n * @option {Number}\r\n */\r\n minWidthDesktop: 1250,\r\n \r\n /*\r\n * Default component type of component. If type of component does not exist in KEditor.components, will be used `defaultComponentType` as type of this component. If is function, argument is component\r\n * @option {String|Function}\r\n * @param {jQuery} component\r\n */\r\n defaultComponentType: 'blank',\r\n \r\n /*\r\n * Url to snippets file\r\n * @option {String}\r\n */\r\n snippetsUrl: './Content/assets/plugins/keditor/snippets/snippets.html',\r\n \r\n /*\r\n * The separator character between each categories\r\n * @option {String}\r\n */\r\n snippetsCategoriesSeparator: ';',\r\n \r\n /*\r\n * Content styles for iframe mode. Beside of this option, KEditor will add all elements which have 'data-type=keditor-style' for iframe stylesheet. These elements can be 'link', 'style' or any tags. If these elements have 'href' attribute, will create link tag with href. If these elements do not have 'href' attribute, will create style tag with css rule is html code inside element\r\n * @option {Array}\r\n * @example:\r\n * [\r\n * {\r\n * href: '/path/to/style/file'\r\n * }, {\r\n * content: 'a { color: red; }'\r\n * }\r\n * ]\r\n */\r\n contentStyles: [],\r\n \r\n /*\r\n * Selector of content areas. If is null or selector does not match any elements, will create default content area and wrap all content inside it.\r\n * @option {String}\r\n */\r\n contentAreasSelector: null,\r\n \r\n /*\r\n * The wrapper element for all contents inside iframe or new div which will contains content of textarea. It's just for displaying purpose. If you want all contents inside iframe are appended into body tag, just leave it as blank\r\n * @option {String}\r\n */\r\n contentAreasWrapper: `
`,\r\n \r\n /*\r\n * Enable setting panel for container\r\n * @option {Boolean}\r\n */\r\n containerSettingEnabled: false,\r\n \r\n /*\r\n * Method will be called when initializing setting panel for container\r\n * @option {Function}\r\n * @param {jQuery} container\r\n * @param {KEditor} keditorInstance\r\n */\r\n containerSettingInitFunction: null,\r\n \r\n /*\r\n * Method will be called when setting panel for container is showed\r\n * @option {Function}\r\n * @param {jQuery} settingForm\r\n * @param {jQuery} container\r\n * @param {KEditor} keditorInstance\r\n */\r\n containerSettingShowFunction: null,\r\n \r\n /*\r\n * Method will be called when setting panel for container is hidden\r\n * @option {Function}\r\n * @param {jQuery} settingForm\r\n * @param {KEditor} keditorInstance\r\n */\r\n containerSettingHideFunction: null,\r\n \r\n /**\r\n * Bootstrap settings\r\n */\r\n bootstrap: {\r\n /**\r\n * Enable column resize by drag and drop or not. Require: jQuery UI Resizable\r\n * @option {Boolean}\r\n */\r\n columnResizeEnabled: true,\r\n \r\n /**\r\n * List of device class for responsive grid system\r\n * @option {Object}\r\n */\r\n deviceClass: {\r\n MOBILE: 'xs',\r\n TABLET: 'sm',\r\n LAPTOP: 'md',\r\n DESKTOP: 'lg'\r\n },\r\n \r\n /**\r\n * Grid system of bootstrap with `width` in percentage and `col` number\r\n * @option {Array}\r\n */\r\n gridSystem: [{\r\n width: 8.33333333,\r\n col: 1\r\n }, {\r\n width: 16.66666667,\r\n col: 2\r\n }, {\r\n width: 25,\r\n col: 3\r\n }, {\r\n width: 33.33333333,\r\n col: 4\r\n }, {\r\n width: 41.66666667,\r\n col: 5\r\n }, {\r\n width: 50,\r\n col: 6\r\n }, {\r\n width: 58.33333333,\r\n col: 7\r\n }, {\r\n width: 66.66666667,\r\n col: 8\r\n }, {\r\n width: 75,\r\n col: 9\r\n }, {\r\n width: 83.33333333,\r\n col: 10\r\n }, {\r\n width: 91.66666667,\r\n col: 11\r\n }, {\r\n width: 100,\r\n col: 12\r\n }, {\r\n width: 10000,\r\n col: 10000\r\n }]\r\n },\r\n \r\n clickComponentToShowSetting: false,\r\n \r\n /*\r\n * Callback will be called after keditor instance is ready\r\n * @option {Function}\r\n */\r\n onReady: function () {\r\n },\r\n \r\n /*\r\n * Callback will be called after clicking on `Save` button in topbar\r\n * @option {Function}\r\n * @param {String} content\r\n */\r\n onSave: function (content) {\r\n },\r\n \r\n /*\r\n * Callback will be called after snippets are loaded. If you want to modify snippets content, please return modified\r\n * @option {Function}\r\n * @param {String} resp\r\n * @return {String}\r\n */\r\n onSnippetsLoaded: function (resp) {\r\n \r\n },\r\n \r\n /*\r\n * Callback will be called when error in loading snippets\r\n * @option {Function}\r\n * @param {jqXHR} jqXHR\r\n */\r\n onSnippetsError: function (jqXHR) {\r\n \r\n },\r\n \r\n /*\r\n * Callback will be called after iframe and content areas wrapper inside it are created\r\n * @option {Function}\r\n * @param {jQuery} iframe\r\n * @param {jQuery} iframeHead\r\n * @param {jQuery} iframeBody\r\n */\r\n onInitIframe: function (iframe, iframeHead, iframeBody) {\r\n },\r\n \r\n /*\r\n * Callback will be called when content is changed. Includes add, delete, duplicate container or component. Or content of a component is changed\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} contentArea\r\n */\r\n onContentChanged: function (event, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called before initializing container\r\n * @option {Function}\r\n * @param {jQuery} contentArea\r\n */\r\n onBeforeInitContentArea: function (contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called when initializing content area. Need to return jQuery objects which will be initialized as container\r\n * @option {Function}\r\n * @param {jQuery} contentArea\r\n * @return {jQuery}\r\n */\r\n onInitContentArea: function (contentArea) {\r\n return contentArea.children(`.${CSS_CLASS.CONTENT_AREA_INNER}`).children();\r\n },\r\n \r\n /*\r\n * Callback will be called before initializing container\r\n * @option {Function}\r\n * @param {jQuery} container\r\n * @param {jQuery} contentArea\r\n */\r\n onBeforeInitContainer: function (container, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called when initializing container. It can return array of jQuery objects which will be initialized as editable components in container content (NOTE: these objects MUST be under elements which have attribute `data-type=\"container-content\"`). By default, all first level sections under container content will be initialized\r\n * @option {Function}\r\n * @param {jQuery} container\r\n * @param {jQuery} contentArea\r\n */\r\n onInitContainer: function (container, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called before container is deleted\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} selectedContainer\r\n * @param {jQuery} contentArea\r\n */\r\n onBeforeContainerDeleted: function (event, selectedContainer, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called after container and its components are already deleted\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} selectedContainer\r\n * @param {jQuery} contentArea\r\n */\r\n onContainerDeleted: function (event, selectedContainer, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called when content of container is changed. It can be when container received new component from snippet or from other container. Or content of any components are changed or any components are deleted or duplicated\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} changedContainer\r\n * @param {jQuery} contentArea\r\n */\r\n onContainerChanged: function (event, changedContainer, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called when a container is duplicated\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} originalContainer\r\n * @param {jQuery} newContainer\r\n * @param {jQuery} contentArea\r\n */\r\n onContainerDuplicated: function (event, originalContainer, newContainer, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called when a container is selected\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} selectedContainer\r\n * @param {jQuery} contentArea\r\n */\r\n onContainerSelected: function (event, selectedContainer, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called when a container snippet is added in a content area\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} newContainer\r\n * @param {jQuery} selectedSnippet\r\n * @param {jQuery} contentArea\r\n */\r\n onContainerSnippetAdded: function (event, newContainer, selectedSnippet, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called after component is initialized. This callback is available or not is depend on component type handler.\r\n * @option {Function}\r\n * @param {jQuery} component\r\n */\r\n onComponentReady: function (component) {\r\n },\r\n \r\n /*\r\n * Callback will be called before initializing component\r\n * @option {Function}\r\n * @param {jQuery} component\r\n * @param {jQuery} contentArea\r\n */\r\n onBeforeInitComponent: function (component, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called when initializing component\r\n * @option {Function}\r\n * @param {jQuery} component\r\n * @param {jQuery} contentArea\r\n */\r\n onInitComponent: function (component, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called before a component is deleted\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} selectedComponent\r\n * @param {jQuery} contentArea\r\n */\r\n onBeforeComponentDeleted: function (event, selectedComponent, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called after a component is deleted\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} selectedComponent\r\n * @param {jQuery} contentArea\r\n */\r\n onComponentDeleted: function (event, selectedComponent, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called when content of a component is changed\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} changedComponent\r\n * @param {jQuery} contentArea\r\n */\r\n onComponentChanged: function (event, changedComponent, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called when a component is duplicated\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} originalComponent\r\n * @param {jQuery} newComponent\r\n * @param {jQuery} contentArea\r\n */\r\n onComponentDuplicated: function (event, originalComponent, newComponent, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called when a component is selected\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} selectedComponent\r\n * @param {jQuery} contentArea\r\n */\r\n onComponentSelected: function (event, selectedComponent, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called after a component snippet is added in a container\r\n * @option {Function}\r\n * @param {Event} event\r\n * @param {jQuery} newComponent\r\n * @param {jQuery} selectedSnippet\r\n * @param {jQuery} contentArea\r\n */\r\n onComponentSnippetAdded: function (event, newComponent, selectedSnippet, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called before loading dynamic content\r\n * @option {Function}\r\n * @param {jQuery} dynamicElement\r\n * @param {jQuery} component\r\n * @param {jQuery} contentArea Can be null if preview is ON\r\n */\r\n onBeforeDynamicContentLoad: function (dynamicElement, component, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called after dynamic content is loaded\r\n * @option {Function}\r\n * @param {jQuery} dynamicElement\r\n * @param {jqXHR} , jqXHR\r\n * @param {jQuery} contentArea Can be null if preview is ON\r\n */\r\n onDynamicContentLoaded: function (dynamicElement, jqXHR, contentArea) {\r\n },\r\n \r\n /*\r\n * Callback will be called if loading dynamic content is error, abort or timeout\r\n * @option {Function}\r\n * @param {jQuery} dynamicElement\r\n * @param {jqXHR} , jqXHR\r\n * @param {jQuery} contentArea Can be null if preview is ON\r\n */\r\n onDynamicContentError: function (dynamicElement, jqXHR, contentArea) {\r\n }\r\n};\r\n","export default (...args) => {\r\n if (console && typeof console.log === 'function' && window.KEDITOR_DEBUG) {\r\n console.log.apply(console, ['[ KEditor ] ', ...args]);\r\n }\r\n};\r\n","export default (message) => {\r\n throw new Error(`[ KEditor ] ${message}`);\r\n};\r\n","export default function () {\r\n let timestamp = (new Date()).getTime();\r\n let random = Math.round(Math.random() * 9876543210);\r\n return `keditor-ui-${timestamp}${random}`;\r\n};\r\n","export default function (target, ignoreAttributes, isArray) {\r\n let dataAttributes = isArray ? [] : {};\r\n if (!ignoreAttributes) {\r\n ignoreAttributes = [];\r\n }\r\n \r\n $.each(target.get(0).attributes, function (i, attr) {\r\n if (attr.name.indexOf('data-') === 0 && $.inArray(attr.name, ignoreAttributes) === -1) {\r\n if (isArray) {\r\n dataAttributes.push(`${attr.name}=\"${attr.value}\"`);\r\n } else {\r\n dataAttributes[attr.name] = attr.value;\r\n }\r\n }\r\n });\r\n \r\n return dataAttributes;\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport generateId from '../utils/generateId';\r\n\r\nexport default function (type, title, previewUrl, categories, content, extraAttrs) {\r\n let self = this;\r\n let options = self.options;\r\n let snippetId = generateId();\r\n let snippetPreviewHtml = `\r\n \r\n \r\n \r\n ${title}\r\n \r\n \r\n `;\r\n let snippetContentHtml = ``;\r\n \r\n categories = categories.split(options.snippetsCategoriesSeparator);\r\n \r\n if (type === 'container') {\r\n self.categoryContainer = self.categoryContainer.concat(categories);\r\n } else if (type.indexOf('component') !== -1) {\r\n self.categoryComponent = self.categoryComponent.concat(categories);\r\n }\r\n \r\n return [\r\n snippetPreviewHtml,\r\n snippetContentHtml\r\n ];\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let modal = self.modal;\r\n \r\n let categoriesOptions = ``;\r\n $.each(self.categoryComponent, function (i, category) {\r\n categoriesOptions += ``;\r\n });\r\n $.each(self.categoryContainer, function (i, category) {\r\n let isDuplicateWithComponent = $.inArray(category, self.categoryComponent) !== -1;\r\n categoriesOptions += ``;\r\n });\r\n \r\n let filterWrapper = modal.find(`.${CSS_CLASS.SNIPPETS_FILTER_WRAPPER}`);\r\n if (filterWrapper.length === 0) {\r\n filterWrapper = $(`
`);\r\n modal.find(`.${CSS_CLASS.MODAL_TITLE}`).replaceWith(filterWrapper);\r\n }\r\n \r\n return [\r\n categoriesOptions,\r\n filterWrapper\r\n ];\r\n};\r\n","export default function (categories) {\r\n let newArray = [];\r\n for (let i = 0; i < categories.length; i++) {\r\n let category = categories[i] || '';\r\n \r\n if (category !== '' && $.inArray(category, newArray) === -1) {\r\n newArray.push(category);\r\n }\r\n }\r\n \r\n return newArray.sort();\r\n};\r\n","import renderSnippetFilter from './renderSnippetFilter';\r\nimport CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let [categoriesOptions, filterWrapper] = renderSnippetFilter.call(self);\r\n \r\n filterWrapper.html(`\r\n ${options.locale.snippetCategoryLabel}:\r\n \r\n \r\n `);\r\n \r\n let txtSearch = filterWrapper.find(`.${CSS_CLASS.SNIPPETS_SEARCH}`);\r\n let cbbFilter = filterWrapper.find(`.${CSS_CLASS.SNIPPETS_FILTER}`);\r\n \r\n let doFilter = function () {\r\n let selectedCategory = (cbbFilter.val() || '').toLowerCase();\r\n let searchText = (txtSearch.val() || '').toLowerCase();\r\n let snippets = self.modal.find(`.${CSS_CLASS.SNIPPET}`);\r\n snippets.filter(`.${CSS_CLASS.STATE_SELECTED}`).removeClass(CSS_CLASS.STATE_SELECTED);\r\n \r\n if (selectedCategory || searchText) {\r\n snippets.each(function () {\r\n let snippet = $(this);\r\n let dataCategoriesString = snippet.attr('data-keditor-categories').toLowerCase();\r\n let dataCategories = dataCategoriesString.split(options.snippetsCategoriesSeparator);\r\n let error = 0;\r\n \r\n if (selectedCategory) {\r\n if ($.inArray(selectedCategory, dataCategories) === -1) {\r\n error++;\r\n }\r\n }\r\n \r\n if (searchText) {\r\n let title = snippet.attr('data-keditor-title').toLowerCase();\r\n if (title.indexOf(searchText) === -1 && dataCategoriesString.indexOf(searchText) === -1) {\r\n error++;\r\n }\r\n }\r\n \r\n snippet[error === 0 ? 'removeClass' : 'addClass'](CSS_CLASS.STATE_NOT_MATCHED);\r\n });\r\n } else {\r\n snippets.removeClass(CSS_CLASS.STATE_NOT_MATCHED);\r\n }\r\n };\r\n \r\n cbbFilter.on('change', function () {\r\n doFilter();\r\n });\r\n \r\n let timer;\r\n txtSearch.on('keydown', function () {\r\n clearTimeout(timer);\r\n timer = setTimeout(doFilter, 200);\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function (modal) {\r\n let cssTransitionEnd = 'webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend';\r\n \r\n modal.off(cssTransitionEnd).on(cssTransitionEnd, () => {\r\n if (!modal.hasClass(CSS_CLASS.STATE_SHOWED)) {\r\n modal.css('display', 'none');\r\n $(document.body).removeClass(CSS_CLASS.STATE_MODAL_OPENED);\r\n }\r\n });\r\n \r\n modal.removeClass(CSS_CLASS.STATE_SHOWED);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport hideModal from './hideModal';\r\n\r\nexport default function () {\r\n let self = this;\r\n let modal = self.modal;\r\n \r\n self.modalTarget = null;\r\n self.modalTargetAction = null;\r\n modal.find(`.${CSS_CLASS.STATE_SELECTED}`).removeClass(CSS_CLASS.STATE_SELECTED);\r\n modal.find(`.${CSS_CLASS.STATE_NOT_MATCHED}`).removeClass(CSS_CLASS.STATE_NOT_MATCHED);\r\n modal.find(`.${CSS_CLASS.SNIPPETS_FILTER}`).val('');\r\n modal.removeClass(CSS_CLASS.MODAL_COMPONENT);\r\n modal.removeClass(CSS_CLASS.MODAL_CONTAINER);\r\n \r\n hideModal.call(self, modal);\r\n};\r\n","const ACTION_TYPE = {\r\n APPEND: 'append',\r\n AFTER: 'after'\r\n};\r\n\r\nexport default ACTION_TYPE;\r\n","const TOOLBAR_TYPE = {\r\n CONTENT_AREA: 1000,\r\n \r\n CONTAINER: 2000,\r\n CONTAINER_CONTENT: 2100,\r\n CONTAINER_BOTTOM: 2200,\r\n \r\n SUB_CONTAINER: 3000,\r\n SUB_CONTAINER_BOTTOM: 3100,\r\n SUB_CONTAINER_CONTENT: 3200,\r\n \r\n COMPONENT: 4000,\r\n COMPONENT_BOTTOM: 4100,\r\n};\r\n\r\nexport default TOOLBAR_TYPE;\r\n","const ICON = {\r\n ADD_CONTENT: '',\r\n PASTE_CONTENT: '',\r\n \r\n MOVE_CONTAINER: '',\r\n MOVE_COMPONENT: '',\r\n \r\n MOVE_UP_CONTAINER: '',\r\n MOVE_UP_COMPONENT: '',\r\n \r\n MOVE_DOWN_CONTAINER: '',\r\n MOVE_DOWN_COMPONENT: '',\r\n \r\n SETTING_CONTAINER: '',\r\n SETTING_COMPONENT: '',\r\n \r\n DUPLICATE_CONTAINER: '',\r\n DUPLICATE_COMPONENT: '',\r\n \r\n COPY_CONTAINER: '',\r\n COPY_COMPONENT: '',\r\n \r\n CUT_CONTAINER: '',\r\n CUT_COMPONENT: '',\r\n \r\n DELETE_CONTAINER: '',\r\n DELETE_COMPONENT: '',\r\n \r\n DEVICE_MOBILE: '',\r\n DEVICE_TABLET: '',\r\n DEVICE_LAPTOP: '',\r\n DEVICE_DESKTOP: '',\r\n \r\n PREVIEW_ON: '',\r\n PREVIEW_OFF: '',\r\n \r\n FULLSCREEN_ON: '',\r\n FULLSCREEN_OFF: '',\r\n \r\n SAVE: '',\r\n \r\n ADD: ''\r\n};\r\n\r\nexport default ICON;\r\n","import TOOLBAR_TYPE from '../constants/toolbarType';\r\nimport CSS_CLASS from '../constants/cssClass';\r\nimport ICON from '../constants/icon';\r\n\r\nexport default function (type, isConfigurable) {\r\n let self = this;\r\n let options = self.options;\r\n let settingBtn = '';\r\n \r\n switch (type) {\r\n case TOOLBAR_TYPE.CONTAINER:\r\n case TOOLBAR_TYPE.SUB_CONTAINER:\r\n if (isConfigurable) {\r\n settingBtn = `${ICON.SETTING_CONTAINER}`;\r\n }\r\n \r\n return (`\r\n \r\n `);\r\n \r\n case TOOLBAR_TYPE.COMPONENT:\r\n if (isConfigurable) {\r\n settingBtn = `${ICON.SETTING_COMPONENT}`;\r\n }\r\n \r\n return (`\r\n \r\n `);\r\n \r\n case TOOLBAR_TYPE.CONTENT_AREA:\r\n return (`\r\n \r\n `);\r\n \r\n case TOOLBAR_TYPE.CONTAINER_CONTENT:\r\n case TOOLBAR_TYPE.SUB_CONTAINER_CONTENT:\r\n return (`\r\n \r\n `);\r\n \r\n case TOOLBAR_TYPE.CONTAINER_BOTTOM:\r\n case TOOLBAR_TYPE.SUB_CONTAINER_BOTTOM:\r\n return (`\r\n \r\n `);\r\n \r\n case TOOLBAR_TYPE.COMPONENT_BOTTOM:\r\n return (`\r\n \r\n `);\r\n \r\n default:\r\n // Do nothing\r\n }\r\n};\r\n","export default function (component) {\r\n let self = this;\r\n let options = self.options;\r\n \r\n let componentType = (component.attr('data-type') || '').replace('component-', '');\r\n if (componentType && (componentType in KEditor.components)) {\r\n return componentType;\r\n } else {\r\n if (typeof options.defaultComponentType === 'string') {\r\n componentType = options.defaultComponentType;\r\n } else if (typeof options.defaultComponentType === 'function') {\r\n componentType = options.defaultComponentType.call(self, component);\r\n }\r\n \r\n if (!componentType) {\r\n self.error('Component type is undefined!');\r\n }\r\n \r\n return componentType;\r\n }\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport getDataAttributes from '../utils/getDataAttributes';\r\nimport generateId from '../utils/generateId';\r\n\r\nexport default function (dynamicElement) {\r\n let self = this;\r\n let options = self.options;\r\n let component = dynamicElement.closest(`[data-type^=\"component\"]`);\r\n let contentArea = dynamicElement.closest(`.${CSS_CLASS.CONTENT_AREA}`);\r\n \r\n !dynamicElement.attr('id') && dynamicElement.attr('id', generateId());\r\n \r\n if (typeof options.onBeforeDynamicContentLoad === 'function') {\r\n options.onBeforeDynamicContentLoad.call(self, dynamicElement, component, contentArea);\r\n }\r\n \r\n let dynamicHref = dynamicElement.attr('data-dynamic-href');\r\n let data = getDataAttributes(component, ['data-type', 'data-dynamic-href'], false);\r\n data = $.param(data);\r\n \r\n return $.ajax({\r\n url: dynamicHref,\r\n data: data,\r\n type: 'GET',\r\n dataType: 'HTML',\r\n success: function (response, status, jqXHR) {\r\n dynamicElement.html(response);\r\n \r\n if (typeof options.onDynamicContentLoaded === 'function') {\r\n options.onDynamicContentLoaded.call(self, dynamicElement, jqXHR, contentArea);\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown ) {\r\n if (typeof options.onDynamicContentError === 'function') {\r\n options.onDynamicContentError.call(self, dynamicElement, jqXHR, contentArea);\r\n }\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport getDataAttributes from '../utils/getDataAttributes';\r\nimport initComponent from './initComponent';\r\n\r\nexport default function (target, isExisting) {\r\n if (target.is(`.${CSS_CLASS.TOOLBAR_CONTAINER_CONTENT}`)) {\r\n return;\r\n }\r\n \r\n let self = this;\r\n let component;\r\n let dataAttributes = getDataAttributes.call(self, target, null, true);\r\n \r\n target.wrap(`
`);\r\n target.wrap(`
`);\r\n component = target.parent().parent();\r\n \r\n target.removeAttr('data-type');\r\n \r\n if (isExisting) {\r\n component.addClass(`${CSS_CLASS.COMPONENT_EXISTING}`);\r\n }\r\n \r\n initComponent.call(self, component);\r\n};\r\n","import TOOLBAR_TYPE from '../constants/toolbarType';\r\nimport CSS_CLASS from '../constants/cssClass';\r\nimport generateId from '../utils/generateId';\r\nimport generateToolbar from '../utils/generateToolbar';\r\nimport getComponentType from './getComponentType';\r\nimport initDynamicContent from './initDynamicContent';\r\n\r\nexport default function (component) {\r\n let self = this;\r\n let options = self.options;\r\n let container = component.closest(`.${CSS_CLASS.CONTAINER}`);\r\n let contentArea = container.closest(`.${CSS_CLASS.CONTENT_AREA}`);\r\n \r\n if (!component.hasClass(CSS_CLASS.STATE_INITIALIZED) || !component.hasClass(CSS_CLASS.STATE_INITIALIZING)) {\r\n component.addClass(CSS_CLASS.STATE_INITIALIZING);\r\n component.attr('id', generateId());\r\n \r\n if (typeof options.onBeforeInitComponent === 'function') {\r\n options.onBeforeInitComponent.call(self, component, contentArea);\r\n }\r\n \r\n let componentContent = component.children(`.${CSS_CLASS.COMPONENT_CONTENT}`);\r\n componentContent.attr('id', generateId());\r\n \r\n let componentType = getComponentType.call(self, component);\r\n let componentData = KEditor.components[componentType];\r\n \r\n component.append(generateToolbar.call(self, TOOLBAR_TYPE.COMPONENT, componentData.settingEnabled));\r\n component.append(generateToolbar.call(self, TOOLBAR_TYPE.COMPONENT_BOTTOM));\r\n \r\n component.find('[data-dynamic-href]').each(function () {\r\n let dynamicElement = $(this);\r\n \r\n initDynamicContent.call(self, dynamicElement);\r\n });\r\n \r\n if (typeof componentData.init === 'function') {\r\n componentData.init.call(componentData, contentArea, container, component, self);\r\n }\r\n \r\n if (typeof options.onInitComponent === 'function') {\r\n options.onInitComponent.call(self, component, contentArea);\r\n }\r\n \r\n component.addClass(CSS_CLASS.STATE_INITIALIZED);\r\n component.removeClass(CSS_CLASS.STATE_INITIALIZING);\r\n }\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function (modal) {\r\n modal.css('display', 'block');\r\n $(document.body).addClass(CSS_CLASS.STATE_MODAL_OPENED);\r\n setTimeout(() => {\r\n modal.addClass(CSS_CLASS.STATE_SHOWED);\r\n }, 0);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport showModal from './showModal';\r\n\r\nexport default function (target, actionType, showComponent, showContainer) {\r\n let self = this;\r\n let modal = self.modal;\r\n \r\n self.modalTarget = target;\r\n self.modalTargetAction = actionType;\r\n showComponent && modal.addClass(CSS_CLASS.MODAL_COMPONENT);\r\n showContainer && modal.addClass(CSS_CLASS.MODAL_CONTAINER);\r\n modal.css('display', 'block');\r\n \r\n showModal.call(self, modal);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\n\r\nconst getColByWidth = (grid, width) => {\r\n let closest;\r\n let minDiff;\r\n \r\n for (let i = 0; i < grid.length; ++i) {\r\n let diff = Math.abs(grid[i].width - width);\r\n \r\n if (!minDiff || diff < minDiff) {\r\n closest = i;\r\n minDiff = diff;\r\n } else {\r\n return grid[closest]['col'];\r\n \r\n }\r\n }\r\n \r\n return null;\r\n};\r\n\r\nexport default function (container) {\r\n let self = this;\r\n let options = self.options;\r\n let cols = container.find('.row > [class*=\"col-\"]');\r\n \r\n if (cols.length > 0) {\r\n cols.resizable({\r\n handles: 'resizer, none',\r\n create: function () {\r\n $(this).find(`.${CSS_CLASS.UI_RESIZER}`).attr('title', options.locale.columnResizeTitle);\r\n },\r\n resize: function (e, ui) {\r\n let col = $(this);\r\n let deviceClass = options.bootstrap.deviceClass[self.deviceMode];\r\n let bsClass = `col-${deviceClass}-1 col-${deviceClass}-2 col-${deviceClass}-3 col-${deviceClass}-4 col-${deviceClass}-5 col-${deviceClass}-6 col-${deviceClass}-7 col-${deviceClass}-8 col-${deviceClass}-9 col-${deviceClass}-10 col-${deviceClass}-11 col-${deviceClass}-12`;\r\n \r\n let row = col.parent();\r\n let colNum = getColByWidth(options.bootstrap.gridSystem,100 * ui.size.width / row.innerWidth());\r\n col.removeClass(bsClass).addClass(`col-${deviceClass}-${colNum}`);\r\n col.css('width', '');\r\n col.css('height', '');\r\n }\r\n });\r\n }\r\n};\r\n","import TOOLBAR_TYPE from '../constants/toolbarType';\r\nimport CSS_CLASS from '../constants/cssClass';\r\nimport generateToolbar from '../utils/generateToolbar';\r\nimport generateId from '../utils/generateId';\r\nimport initContainerContent from './initContainerContent';\r\nimport initColumnResizer from './initColumnResizer';\r\n\r\nexport default function (container) {\r\n let self = this;\r\n let options = self.options;\r\n let isNested = container.closest('[data-type=\"container-content\"]').length > 0;\r\n let contentArea = container.closest(`.${CSS_CLASS.CONTENT_AREA}`);\r\n \r\n if (!container.hasClass(CSS_CLASS.STATE_INITIALIZED) || !container.hasClass(CSS_CLASS.STATE_INITIALIZING)) {\r\n container.addClass(CSS_CLASS.STATE_INITIALIZING);\r\n \r\n if (typeof options.onBeforeInitContainer === 'function') {\r\n options.onBeforeInitContainer.call(self, container, contentArea);\r\n }\r\n \r\n if (isNested) {\r\n container.addClass(CSS_CLASS.SUB_CONTAINER);\r\n }\r\n \r\n container.append(\r\n generateToolbar.call(self, isNested ? TOOLBAR_TYPE.SUB_CONTAINER : TOOLBAR_TYPE.CONTAINER, options.containerSettingEnabled)\r\n +\r\n generateToolbar.call(self, isNested ? TOOLBAR_TYPE.SUB_CONTAINER_BOTTOM : TOOLBAR_TYPE.CONTAINER_BOTTOM)\r\n );\r\n \r\n container.attr('id', generateId());\r\n \r\n let containerContents = container.find('[data-type=\"container-content\"]');\r\n containerContents.each(function () {\r\n let containerContent = $(this);\r\n \r\n if (!isNested && containerContent.parents('[data-type=\"container-content\"]').length > 0) {\r\n // Do nothing because it's container content of sub container\r\n return;\r\n }\r\n \r\n initContainerContent.call(self, contentArea, container, containerContent, isNested);\r\n });\r\n \r\n options.bootstrap.columnResizeEnabled && initColumnResizer.call(self, container);\r\n \r\n if (typeof options.onInitContainer === 'function') {\r\n options.onInitContainer.call(self, container, contentArea);\r\n }\r\n \r\n container.addClass(CSS_CLASS.STATE_INITIALIZED);\r\n container.removeClass(CSS_CLASS.STATE_INITIALIZING);\r\n }\r\n};\r\n","import TOOLBAR_TYPE from '../constants/toolbarType';\r\nimport CSS_CLASS from '../constants/cssClass';\r\nimport ACTION_TYPE from '../constants/actionType';\r\nimport showSnippetModal from '../modal/showSnippetModal';\r\nimport generateId from '../utils/generateId';\r\nimport generateToolbar from '../utils/generateToolbar';\r\nimport convertToContainer from './convertToContainer';\r\nimport convertToComponent from '../component/convertToComponent';\r\n\r\nexport default function (contentArea, container, containerContent, isNested) {\r\n let self = this;\r\n let options = self.options;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n containerContent.addClass(CSS_CLASS.CONTAINER_CONTENT);\r\n isNested && containerContent.addClass(CSS_CLASS.SUB_CONTAINER_CONTENT);\r\n containerContent.attr('id', generateId());\r\n \r\n let containerContentInner = $(`
`);\r\n containerContentInner.html(containerContent.html());\r\n containerContent.html(containerContentInner);\r\n \r\n let containerContentToolbar = $(\r\n generateToolbar.call(self, isNested ? TOOLBAR_TYPE.SUB_CONTAINER_CONTENT : TOOLBAR_TYPE.CONTAINER_CONTENT, options.containerSettingEnabled)\r\n );\r\n containerContentToolbar.appendTo(containerContent);\r\n containerContentToolbar.children(`.${CSS_CLASS.ADD_CONTENT}`).on('click', function (e) {\r\n e.preventDefault();\r\n \r\n showSnippetModal.call(self, containerContentInner, ACTION_TYPE.APPEND, true, !isNested);\r\n });\r\n \r\n containerContentInner.sortable({\r\n handle: `.${CSS_CLASS.COMPONENT_MOVE}, .${CSS_CLASS.CONTAINER_MOVE}`,\r\n helper: 'clone',\r\n items: `> .${CSS_CLASS.COMPONENT}`,\r\n connectWith: `.${CSS_CLASS.CONTAINER_CONTENT_INNER}`,\r\n tolerance: 'pointer',\r\n receive: function (event, ui) {\r\n let helper = ui.helper;\r\n let item = ui.item;\r\n let container;\r\n \r\n if (helper) {\r\n helper.remove();\r\n }\r\n container = item.closest(`.${CSS_CLASS.CONTAINER}`);\r\n \r\n if (!container.hasClass(CSS_CLASS.STATE_TOOLBAR_SHOWED)) {\r\n contentAreasWrapper.find(`.${CSS_CLASS.CONTAINER}.${CSS_CLASS.STATE_TOOLBAR_SHOWED}`).removeClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n container.addClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n }\r\n \r\n if (typeof options.onContainerChanged === 'function') {\r\n options.onContainerChanged.call(self, event, container, contentArea);\r\n }\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, event, contentArea);\r\n }\r\n \r\n item.removeClass(CSS_CLASS.UI_DRAGGING);\r\n },\r\n start: function (e, ui) {\r\n ui.item.addClass(CSS_CLASS.UI_DRAGGING);\r\n ui.item.addClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n },\r\n stop: function (e, ui) {\r\n if (ui.helper) {\r\n ui.helper.remove();\r\n }\r\n ui.item.removeClass(CSS_CLASS.UI_DRAGGING);\r\n }\r\n });\r\n \r\n containerContentInner.children().each(function () {\r\n let child = $(this);\r\n \r\n if (child.find('[data-type=\"container-content\"]').length > 0) {\r\n convertToContainer.call(self, child);\r\n } else {\r\n convertToComponent.call(self, child, true);\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport initContainer from './initContainer';\r\n\r\nexport default function (target) {\r\n let self = this;\r\n let container;\r\n \r\n target.wrap(`
`);\r\n target.wrap(`
`);\r\n container = target.parent().parent();\r\n \r\n initContainer.call(self, container);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport hideModal from './hideModal';\r\n\r\nexport default function (modalId, hasFooter = true, disableOriginEvents = false) {\r\n let self = this;\r\n let modalFooter = `
`;\r\n let modal = $(`\r\n
\r\n
\r\n \r\n

\r\n
\r\n
\r\n ${hasFooter ? modalFooter : ''}\r\n
\r\n `);\r\n \r\n if (!disableOriginEvents) {\r\n // Close buttons\r\n modal.on('click', `.${CSS_CLASS.MODAL_CLOSE}`, function (e) {\r\n e.preventDefault();\r\n \r\n hideModal.call(self, modal);\r\n });\r\n }\r\n \r\n return modal.appendTo(self.wrapper);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport generateId from '../utils/generateId';\r\nimport renderSnippets from '../snippet/renderSnippets';\r\nimport initSnippetsFilter from '../snippet/initSnippetsFilter';\r\nimport hideSnippetModal from './hideSnippetModal';\r\nimport initSnippetAction from './initSnippetAction';\r\nimport addSnippetToTarget from '../snippet/addSnippetToTarget';\r\nimport initModal from './initModal';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let modal = self.modal = initModal.call(self, generateId(), false, true);\r\n \r\n if (typeof options.snippetsUrl === 'string' && options.snippetsUrl.length > 0) {\r\n modal.find(`.${CSS_CLASS.MODAL_BODY}`).append(`\r\n
\r\n
\r\n
\r\n `);\r\n \r\n $.ajax({\r\n type: 'get',\r\n dataType: 'html',\r\n url: options.snippetsUrl,\r\n success: function (resp) {\r\n if (typeof options.onSnippetsLoaded === 'function') {\r\n resp = options.onSnippetsLoaded.call(self, resp) || resp;\r\n }\r\n \r\n renderSnippets.call(self, resp);\r\n initSnippetsFilter.call(self);\r\n },\r\n error: function (jqXHR) {\r\n if (typeof options.onSnippetsError === 'function') {\r\n options.onSnippetsError.call(self, jqXHR);\r\n }\r\n }\r\n });\r\n \r\n // Snippet events\r\n initSnippetAction.call(self);\r\n \r\n // Close buttons\r\n modal.find(`.${CSS_CLASS.MODAL_CLOSE}`).on('click', function (e) {\r\n e.preventDefault();\r\n \r\n hideSnippetModal.call(self);\r\n });\r\n \r\n // Add buttons\r\n modal.on('click', `.${CSS_CLASS.SNIPPET}`, function (e) {\r\n e.preventDefault();\r\n \r\n let selectedSnippet = $(this);\r\n \r\n addSnippetToTarget.call(self, e, selectedSnippet, self.modalTarget, self.modalTargetAction);\r\n hideSnippetModal.call(self);\r\n });\r\n } else {\r\n self.error('\"snippetsUrl\" must be not null!');\r\n }\r\n};\r\n","import renderSnippet from './renderSnippet';\r\nimport CSS_CLASS from '../constants/cssClass';\r\nimport beautifyCategories from './beautifyCategories';\r\n\r\nexport default function (resp) {\r\n let self = this;\r\n let snippetsContentHtml = '';\r\n let snippetsHtml = '';\r\n \r\n $(resp).filter('div').each(function () {\r\n let snippet = $(this);\r\n let content = snippet.html().trim();\r\n let previewUrl = snippet.attr('data-preview');\r\n let type = snippet.attr('data-type');\r\n let title = snippet.attr('data-keditor-title');\r\n let categories = snippet.attr('data-keditor-categories') || '';\r\n let dataAttributes = self.getDataAttributes(snippet, ['data-preview', 'data-type', 'data-keditor-title', 'data-keditor-categories'], true);\r\n let [\r\n snippetPreviewHtml,\r\n snippetContentHtml\r\n ] = renderSnippet.call(self, type, title, previewUrl, categories, content, dataAttributes);\r\n \r\n snippetsHtml += snippetPreviewHtml;\r\n snippetsContentHtml += snippetContentHtml;\r\n });\r\n \r\n self.categoryContainer = beautifyCategories(self.categoryContainer);\r\n self.categoryComponent = beautifyCategories(self.categoryComponent);\r\n \r\n self.modal.find(`.${CSS_CLASS.SNIPPETS}`).html(snippetsHtml);\r\n self.modal.find(`.${CSS_CLASS.MODAL_BODY}`).append(snippetsContentHtml);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function () {\r\n let self = this;\r\n let modal = self.modal;\r\n \r\n modal.on({\r\n click: function (e) {\r\n e.preventDefault();\r\n \r\n let snippet = $(this);\r\n if (snippet.hasClass(CSS_CLASS.STATE_SELECTED)) {\r\n snippet.removeClass(CSS_CLASS.STATE_SELECTED)\r\n } else {\r\n modal.find(`.${CSS_CLASS.STATE_SELECTED}`).removeClass(CSS_CLASS.STATE_SELECTED);\r\n snippet.addClass(CSS_CLASS.STATE_SELECTED);\r\n }\r\n },\r\n mouseover: function () {\r\n $(this).addClass(CSS_CLASS.STATE_SELECTED);\r\n },\r\n mouseout: function () {\r\n $(this).removeClass(CSS_CLASS.STATE_SELECTED);\r\n }\r\n }, `.${CSS_CLASS.SNIPPET}`);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport ACTION_TYPE from '../constants/actionType';\r\nimport getDataAttributes from '../utils/getDataAttributes';\r\nimport convertToComponent from '../component/convertToComponent';\r\nimport convertToContainer from '../container/convertToContainer';\r\n\r\nexport default function (e, selectedSnippet, target, targetAction) {\r\n let self = this;\r\n let modal = self.modal;\r\n let options = self.options;\r\n let contentArea = target.closest(`.${CSS_CLASS.CONTENT_AREA}`);\r\n let snippetType = selectedSnippet.attr('data-type');\r\n \r\n let snippetContentElement = modal.find(selectedSnippet.attr('data-snippet'));\r\n \r\n let snippetContent = snippetContentElement.html();\r\n let isModalComponent = modal.hasClass(CSS_CLASS.MODAL_COMPONENT);\r\n let isModalContainer = modal.hasClass(CSS_CLASS.MODAL_CONTAINER);\r\n let isAddingContainer = false;\r\n let isAddingComponent = false;\r\n let isAddingComponentWithContainer = false;\r\n \r\n if (snippetType === 'container') {\r\n isAddingContainer = true;\r\n } else {\r\n if (isModalComponent && !isModalContainer) {\r\n isAddingComponent = true;\r\n }\r\n \r\n if (isModalComponent && isModalContainer) {\r\n if (target.is(`.${CSS_CLASS.CONTAINER_CONTENT_INNER}`)) {\r\n isAddingComponent = true;\r\n } else {\r\n if (targetAction === ACTION_TYPE.APPEND) {\r\n isAddingComponentWithContainer = true;\r\n } else {\r\n isAddingComponent = true;\r\n }\r\n }\r\n }\r\n }\r\n \r\n let newContainer;\r\n let newComponent;\r\n \r\n self.contentAreasWrapper.find(`.${CSS_CLASS.STATE_TOOLBAR_SHOWED}`).removeClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n \r\n if (isAddingContainer) {\r\n newContainer = $(snippetContent);\r\n target[targetAction](newContainer);\r\n \r\n if (typeof options.onContainerSnippetAdded === 'function') {\r\n options.onContainerSnippetAdded.call(self, e, newContainer, selectedSnippet, contentArea);\r\n }\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, e, contentArea);\r\n }\r\n \r\n convertToContainer.call(self, newContainer);\r\n newContainer.trigger('click');\r\n }\r\n \r\n if (isAddingComponent || isAddingComponentWithContainer) {\r\n let dataAttributes = getDataAttributes.call(self, snippetContentElement, null, true);\r\n newComponent = $(`\r\n
\r\n ${snippetContent}\r\n
\r\n `);\r\n }\r\n \r\n if (isAddingComponent) {\r\n target[targetAction](newComponent);\r\n \r\n let container = target.closest(`.${CSS_CLASS.CONTAINER}`);\r\n container.addClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n if (typeof options.onComponentSnippetAdded === 'function') {\r\n options.onComponentSnippetAdded.call(self, e, newComponent, selectedSnippet, contentArea);\r\n }\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, e, contentArea);\r\n }\r\n \r\n convertToComponent.call(self,newComponent);\r\n newComponent.trigger('click');\r\n }\r\n \r\n if (isAddingComponentWithContainer) {\r\n newContainer = $(options.containerForQuickAddComponent);\r\n newContainer.find('[data-type=\"container-content\"]').eq(0).html(newComponent);\r\n target[targetAction](newContainer);\r\n \r\n if (typeof options.onComponentSnippetAdded === 'function') {\r\n options.onComponentSnippetAdded.call(self, e, newComponent, selectedSnippet, contentArea);\r\n }\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, e, contentArea);\r\n }\r\n \r\n convertToContainer.call(self, newContainer);\r\n newComponent.trigger('click');\r\n }\r\n};\r\n","const SETTING_CATEGORY = {\r\n COMPONENT: 'component',\r\n CONTAINER: 'container',\r\n EXTRA: 'extra',\r\n};\r\n\r\nexport default SETTING_CATEGORY;\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport SETTING_CATEGORY from '../constants/settingCategory';\r\nimport log from '../utils/log';\r\n\r\nexport default function () {\r\n log('closeSidebar');\r\n \r\n let self = this;\r\n let options = self.options;\r\n let sidebar = self.sidebar;\r\n let activeForm = self.sidebarBody.children(`.${CSS_CLASS.STATE_ACTIVE}`);\r\n \r\n if (activeForm.length > 0) {\r\n switch (activeForm.attr('[data-setting-category]')) {\r\n case SETTING_CATEGORY.CONTAINER:\r\n if (typeof options.containerSettingHideFunction === 'function') {\r\n options.containerSettingHideFunction.call(self, activeForm, self);\r\n }\r\n break;\r\n \r\n case SETTING_CATEGORY.COMPONENT:\r\n let activeType = activeForm.attr('data-type');\r\n let componentData = KEditor.components[activeType];\r\n \r\n if (typeof componentData.hideSettingForm === 'function') {\r\n componentData.hideSettingForm.call(componentData, activeForm, self);\r\n }\r\n break;\r\n \r\n case SETTING_CATEGORY.EXTRA:\r\n // TODO: Will add method when hiding setting for Extra setting\r\n break;\r\n \r\n default:\r\n // Do nothing\r\n }\r\n \r\n activeForm.removeClass(CSS_CLASS.STATE_ACTIVE);\r\n }\r\n \r\n self.settingComponent = null;\r\n self.settingContainer = null;\r\n sidebar.removeClass(CSS_CLASS.STATE_OPENED);\r\n self.iframeBody.removeClass(CSS_CLASS.STATE_SIDEBAR_SHOWED);\r\n}","import CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function (target, settingType, settingCategory, initFunction, functionContext, callback) {\r\n let self = this;\r\n let sidebarBody = self.sidebarBody;\r\n let isExisting = false;\r\n \r\n let settingForm = sidebarBody.children(`.${CSS_CLASS.SETTING_FORM}[data-setting-type=\"${settingType}\"][data-setting-category=\"${settingCategory}\"]`);\r\n if (settingForm.length === 0) {\r\n if (typeof initFunction === 'function') {\r\n settingForm = $(`\r\n \r\n `);\r\n let loadingText = $(``).html('Loading...');\r\n sidebarBody.append(settingForm);\r\n settingForm.append(loadingText);\r\n \r\n $.when(initFunction.call(functionContext, settingForm, self)).done(function () {\r\n setTimeout(function () {\r\n loadingText.remove();\r\n \r\n typeof callback === 'function' && callback(false);\r\n }, 100);\r\n });\r\n }\r\n } else {\r\n isExisting = true;\r\n }\r\n \r\n return {\r\n settingForm,\r\n isExisting\r\n }\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport SETTING_CATEGORY from '../constants/settingCategory';\r\nimport closeSidebar from './closeSidebar';\r\nimport initSettingForm from './initSettingForm';\r\n\r\nexport default function (target, settingType, settingCategory, settingTitle, initFunction, showFunction, functionContext) {\r\n let self = this;\r\n let sidebar = self.sidebar;\r\n let sidebarTitle = self.sidebarTitle;\r\n let sidebarBody = self.sidebarBody;\r\n \r\n let {settingForm, isExisting} = initSettingForm.call(self, target, settingType, settingCategory, initFunction, functionContext, () => {\r\n if (typeof showFunction === 'function') {\r\n showFunction.call(functionContext, settingForm, target, self);\r\n }\r\n });\r\n \r\n let shouldCloseSidebar = settingForm.hasClass(CSS_CLASS.STATE_ACTIVE) && (target.is(self.settingContainer) || target.is(self.settingComponent) || target.is('[data-extra-setting]'));\r\n \r\n self.settingComponent = null;\r\n self.settingContainer = null;\r\n switch (settingCategory) {\r\n case SETTING_CATEGORY.COMPONENT:\r\n self.settingComponent = target;\r\n break;\r\n \r\n case SETTING_CATEGORY.CONTAINER:\r\n self.settingContainer = target;\r\n break;\r\n \r\n default:\r\n // Do nothing\r\n }\r\n \r\n if (isExisting) {\r\n if (shouldCloseSidebar) {\r\n closeSidebar.call(self);\r\n return;\r\n } else {\r\n if (typeof showFunction === 'function') {\r\n showFunction.call(functionContext, settingForm, target, self);\r\n }\r\n }\r\n }\r\n \r\n sidebarTitle.html(settingTitle);\r\n sidebarBody.children(`.${CSS_CLASS.STATE_ACTIVE}`).removeClass(CSS_CLASS.STATE_ACTIVE);\r\n settingForm.addClass(CSS_CLASS.STATE_ACTIVE);\r\n sidebar.addClass(CSS_CLASS.STATE_OPENED);\r\n self.iframeBody.addClass(CSS_CLASS.STATE_SIDEBAR_SHOWED);\r\n}","import CSS_CLASS from '../constants/cssClass';\r\nimport getComponentType from '../component/getComponentType';\r\nimport SETTING_CATEGORY from '../constants/settingCategory';\r\nimport showSettingForm from './showSettingForm';\r\nimport log from '../utils/log';\r\n\r\nexport default function (target) {\r\n log('openSidebar', target);\r\n \r\n let self = this;\r\n let options = self.options;\r\n \r\n if (target.is(`.${CSS_CLASS.COMPONENT}`)) {\r\n let componentType = getComponentType.call(self, target);\r\n let componentData = KEditor.components[componentType];\r\n \r\n showSettingForm.call(self, target, componentType, SETTING_CATEGORY.COMPONENT, componentData.settingTitle, componentData.initSettingForm, componentData.showSettingForm, componentData);\r\n } else if (target.is(`.${CSS_CLASS.CONTAINER}`)) {\r\n showSettingForm.call(self, target, null, SETTING_CATEGORY.CONTAINER, options.locale.containerSetting, options.containerSettingInitFunction, options.containerSettingShowFunction, self);\r\n } else {\r\n let extraKey = target.attr('data-extra-setting');\r\n let extraSetting = options.extraSettings[extraKey];\r\n showSettingForm.call(self, target, extraKey, SETTING_CATEGORY.EXTRA, extraSetting.title, extraSetting.settingInitFunction, extraSetting.settingShowFunction, extraSetting);\r\n }\r\n};\r\n","import openSidebar from './openSidebar';\r\nimport initSettingForm from './initSettingForm';\r\nimport SETTING_CATEGORY from '../constants/settingCategory';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n \r\n $.isPlainObject(options.extraSettings) && $.each(options.extraSettings, (name, extraSetting) => {\r\n let trigger;\r\n switch (typeof extraSetting.trigger) {\r\n case 'function':\r\n trigger = extraSetting.trigger.call(self, extraSetting);\r\n break;\r\n \r\n case 'string':\r\n trigger = $(extraSetting.trigger);\r\n break;\r\n \r\n default:\r\n trigger = extraSetting.trigger;\r\n }\r\n \r\n trigger.attr('data-extra-setting', name);\r\n trigger.on('click', function (e) {\r\n e.preventDefault();\r\n \r\n openSidebar.call(self, trigger);\r\n });\r\n \r\n if (extraSetting.autoInit) {\r\n initSettingForm.call(self, trigger, name, SETTING_CATEGORY.EXTRA, extraSetting.settingInitFunction, extraSetting);\r\n }\r\n });\r\n};\r\n","const DEVICE_MODE = {\r\n MOBILE: 'MOBILE',\r\n TABLET: 'TABLET',\r\n LAPTOP: 'LAPTOP',\r\n DESKTOP: 'DESKTOP',\r\n};\r\n\r\nexport default DEVICE_MODE;\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport DEVICE_MODE from '../constants/deviceMode';\r\n\r\nexport default function (deviceMode, trigger) {\r\n let self = this;\r\n let options = self.options;\r\n let topbarCenter = self.topbarCenter;\r\n let iframeWidthSwitcher = self.iframe.parent();\r\n let width = '';\r\n let minWidth = '';\r\n \r\n topbarCenter.find(`.${CSS_CLASS.STATE_ACTIVE}`).removeClass(CSS_CLASS.STATE_ACTIVE);\r\n trigger.addClass(CSS_CLASS.STATE_ACTIVE);\r\n \r\n switch (deviceMode) {\r\n case DEVICE_MODE.MOBILE:\r\n width = options.widthMobile;\r\n break;\r\n \r\n case DEVICE_MODE.TABLET:\r\n width = options.widthTablet;\r\n break;\r\n \r\n case DEVICE_MODE.LAPTOP:\r\n width = options.widthLaptop;\r\n break;\r\n \r\n case DEVICE_MODE.DESKTOP:\r\n minWidth = options.minWidthDesktop;\r\n break;\r\n \r\n default:\r\n // Do nothing\r\n }\r\n \r\n self.deviceMode = deviceMode;\r\n iframeWidthSwitcher.css('width', width);\r\n iframeWidthSwitcher.css('min-width', minWidth);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport getDataAttributes from '../utils/getDataAttributes';\r\nimport getComponentType from './getComponentType';\r\n\r\nexport default function (component) {\r\n let self = this;\r\n let clonedComponent = component.clone();\r\n let componentType = getComponentType.call(self, clonedComponent);\r\n let componentData = KEditor.components[componentType];\r\n let dataAttributes = getDataAttributes(clonedComponent, null, false);\r\n let content;\r\n \r\n // Handle iframe-wrapper\r\n let iframeWrapper = clonedComponent.find(`.${CSS_CLASS.IFRAME_COVER_WRAPPER}`);\r\n if (iframeWrapper.length > 0) {\r\n iframeWrapper.find(`.${CSS_CLASS.IFRAME_COVER}`).remove();\r\n \r\n let iframe = iframeWrapper.children('iframe');\r\n if (iframeWrapper.hasClass(CSS_CLASS.IFRAME_COVER_WRAPPER_FAKE)) {\r\n iframe.unwrap();\r\n } else {\r\n iframeWrapper.removeClass(CSS_CLASS.IFRAME_COVER_WRAPPER);\r\n }\r\n }\r\n \r\n if (typeof componentData.getContent === 'function') {\r\n content = componentData.getContent.call(componentData, clonedComponent, self);\r\n } else {\r\n let componentContent = clonedComponent.children(`.${CSS_CLASS.COMPONENT_CONTENT}`);\r\n content = componentContent.html();\r\n }\r\n \r\n // Remove all content inside dynamic element\r\n clonedComponent.html(content).find('[data-dynamic-href]').each(function () {\r\n $(this).html('');\r\n });\r\n \r\n clonedComponent.children().attr(dataAttributes).attr('data-type', `component-${componentType}`);\r\n \r\n return clonedComponent.html();\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport getComponentContent from '../component/getComponentContent';\r\n\r\nexport default function getContainerContent (container, isNested) {\r\n let self = this;\r\n let containerInner = container.children(`.${CSS_CLASS.CONTAINER_INNER}`).clone();\r\n \r\n containerInner.find('[data-type=container-content]').not(isNested ? '' : `.${CSS_CLASS.SUB_CONTAINER_CONTENT}`).each(function () {\r\n let containerContent = $(this);\r\n containerContent.removeClass(`${CSS_CLASS.CONTAINER_CONTENT} ${CSS_CLASS.SUB_CONTAINER_CONTENT} ${CSS_CLASS.SORTABLE} ${CSS_CLASS.RESIZABLE}`).removeAttr('id');\r\n \r\n let containerContentInner = containerContent.children();\r\n let content = '';\r\n \r\n containerContentInner.children().each(function () {\r\n let child = $(this);\r\n \r\n if (child.is(`.${CSS_CLASS.COMPONENT}`)) {\r\n content += getComponentContent.call(self, child);\r\n } else if (child.is(`.${CSS_CLASS.SUB_CONTAINER}`)) {\r\n content += getContainerContent.call(self, child, true);\r\n }\r\n });\r\n \r\n containerContent.html(content);\r\n });\r\n \r\n return containerInner.html();\r\n}","import CSS_CLASS from './constants/cssClass';\r\nimport getContainerContent from './container/getContainerContent';\r\n\r\nexport default function (inArray) {\r\n let self = this;\r\n let result = [];\r\n \r\n self.contentAreasWrapper.find(`.${CSS_CLASS.CONTENT_AREA_INNER}`).each(function () {\r\n let html = '';\r\n $(this).children(`.${CSS_CLASS.CONTAINER}`).each(function () {\r\n let container = $(this);\r\n \r\n html += getContainerContent.call(self, container);\r\n });\r\n \r\n result.push(html);\r\n });\r\n \r\n return inArray ? result : result.join('\\n');\r\n};\r\n","import enterFullscreen from '../utils/enterFullscreen';\r\nimport exitFullscreen from '../utils/exitFullscreen';\r\n\r\nexport default function (isOn) {\r\n let self = this;\r\n \r\n if (isOn) {\r\n enterFullscreen(self.wrapper[0]);\r\n } else {\r\n exitFullscreen();\r\n }\r\n};\r\n","export default (el) => {\r\n if (el.requestFullscreen) {\r\n el.requestFullscreen();\r\n } else if (el.mozRequestFullScreen) { /* Firefox */\r\n el.mozRequestFullScreen();\r\n } else if (el.webkitRequestFullscreen) { /* Chrome, Safari and Opera */\r\n el.webkitRequestFullscreen();\r\n } else if (el.msRequestFullscreen) { /* IE/Edge */\r\n el.msRequestFullscreen();\r\n }\r\n};\r\n","export default () => {\r\n if (!document.fullscreenElement) {\r\n return;\r\n }\r\n \r\n if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n } else if (document.mozCancelFullScreen) { /* Firefox */\r\n document.mozCancelFullScreen();\r\n } else if (document.webkitExitFullscreen) { /* Chrome, Safari and Opera */\r\n document.webkitExitFullscreen();\r\n } else if (document.msExitFullscreen) { /* IE/Edge */\r\n document.msExitFullscreen();\r\n }\r\n};\r\n","import initPreviewAction from './initPreviewAction';\r\nimport initFullscreenAction from './initFullscreenAction';\r\nimport initSaveAction from './initSaveAction';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n \r\n initPreviewAction.apply(self);\r\n initFullscreenAction.apply(self);\r\n typeof options.onSave === 'function' && initSaveAction.apply(self);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport ICON from '../constants/icon';\r\nimport initDynamicContent from '../component/initDynamicContent';\r\nimport closeSidebar from '../sidebar/closeSidebar';\r\nimport getContent from '../getContent';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let btnPreview = self.btnPreview = $(`${ICON.PREVIEW_OFF}`);\r\n \r\n self.previewArea = $(`
`);\r\n self.contentAreasWrapper.after(self.previewArea);\r\n \r\n btnPreview.on('click', function (e) {\r\n e.preventDefault();\r\n \r\n let isPreviewOn = !btnPreview.hasClass(CSS_CLASS.STATE_ACTIVE);\r\n \r\n btnPreview.html(isPreviewOn ? ICON.PREVIEW_ON : ICON.PREVIEW_OFF);\r\n btnPreview[isPreviewOn ? 'addClass' : 'removeClass'](CSS_CLASS.STATE_ACTIVE);\r\n btnPreview.attr('title', isPreviewOn ? options.locale.previewOn : options.locale.previewOff);\r\n self.iframeBody[isPreviewOn ? 'addClass' : 'removeClass'](CSS_CLASS.STATE_PREVIEWING);\r\n self.previewArea.html('');\r\n \r\n // Close sidebar when previewing\r\n closeSidebar.call(self);\r\n \r\n isPreviewOn && self.previewArea.html(getContent.call(self)).find('[data-dynamic-href]').each(function () {\r\n let dynamicElement = $(this);\r\n dynamicElement.html('Loading...');\r\n initDynamicContent.call(self, dynamicElement);\r\n });\r\n });\r\n \r\n self.topbarRight.append(btnPreview);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport ICON from '../constants/icon';\r\nimport setFullScreenMode from './setFullscreenMode';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let btnFullscreen = self.btnFullscreen = $(`${ICON.FULLSCREEN_OFF}`);\r\n btnFullscreen.on('click', function (e) {\r\n e.preventDefault();\r\n \r\n setFullScreenMode.call(self, !self.isFullscreen);\r\n });\r\n \r\n document.addEventListener('fullscreenchange', function () {\r\n let isOn = !!document.fullscreenElement;\r\n \r\n self.isFullScreen = isOn;\r\n btnFullscreen.html(isOn ? ICON.FULLSCREEN_ON : ICON.FULLSCREEN_OFF);\r\n btnFullscreen.attr('title', isOn ? options.locale.fullscreenOn : options.locale.fullscreenOff);\r\n });\r\n \r\n self.topbarRight.append(btnFullscreen);\r\n}\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport getContent from '../getContent';\r\nimport ICON from '../constants/icon';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let btnSave = self.btnSave = $(`${ICON.SAVE}`);\r\n btnSave.on('click', function (e) {\r\n e.preventDefault();\r\n \r\n let content = getContent.call(self);\r\n \r\n options.onSave.call(self, content);\r\n });\r\n \r\n self.topbarRight.append(btnSave);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport generateId from '../utils/generateId';\r\nimport initDeviceSwitcher from './initDeviceSwitcher';\r\nimport initTopbarRightActions from './initTopbarRightActions';\r\nimport initTopbarExtraItems from './initTopbarExtraItems';\r\n\r\nexport default function () {\r\n let self = this;\r\n let topbarId = generateId();\r\n let options = self.options;\r\n \r\n self.topbar = $(`\r\n
\r\n
\r\n
${options.title}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n `);\r\n self.topbarLeft = self.topbar.find(`.${CSS_CLASS.TOPBAR_LEFT}`);\r\n self.topbarCenter = self.topbar.find(`.${CSS_CLASS.TOPBAR_CENTER}`);\r\n self.topbarRight = self.topbar.find(`.${CSS_CLASS.TOPBAR_RIGHT}`);\r\n \r\n self.topbar.appendTo(self.wrapper);\r\n \r\n initDeviceSwitcher.call(self);\r\n initTopbarRightActions.call(self);\r\n initTopbarExtraItems.call(self);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport ICON from '../constants/icon';\r\nimport DEVICE_MODE from '../constants/deviceMode';\r\nimport switchDevice from './switchDevice';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let topbarCenter = self.topbarCenter;\r\n \r\n let btnMobile = self.btnMobile = $(`\r\n ${ICON.DEVICE_MOBILE}\r\n `);\r\n btnMobile.on('click', function (e) {\r\n e.preventDefault();\r\n switchDevice.call(self, DEVICE_MODE.MOBILE, btnMobile);\r\n });\r\n \r\n let btnTablet = self.btnTablet = $(`\r\n ${ICON.DEVICE_TABLET}\r\n `);\r\n btnTablet.on('click', function (e) {\r\n e.preventDefault();\r\n switchDevice.call(self, DEVICE_MODE.TABLET, btnTablet);\r\n });\r\n \r\n let btnLaptop = self.btnLaptop = $(`\r\n ${ICON.DEVICE_LAPTOP}\r\n `);\r\n btnLaptop.on('click', function (e) {\r\n e.preventDefault();\r\n switchDevice.call(self, DEVICE_MODE.LAPTOP, btnLaptop);\r\n });\r\n \r\n let btnDesktop = self.btnDesktop = $(`\r\n ${ICON.DEVICE_DESKTOP}\r\n `);\r\n btnDesktop.on('click', function (e) {\r\n e.preventDefault();\r\n switchDevice.call(self, DEVICE_MODE.DESKTOP, btnDesktop);\r\n }).trigger('click');\r\n \r\n topbarCenter.append(btnMobile);\r\n topbarCenter.append(btnTablet);\r\n topbarCenter.append(btnLaptop);\r\n topbarCenter.append(btnDesktop);\r\n};\r\n","export default function () {\r\n let self = this;\r\n let options = self.options;\r\n let topbarRight = self.topbarRight;\r\n \r\n $.isPlainObject(options.extraTopbarItems) && $.each(options.extraTopbarItems, (name, item) => {\r\n let btn = $(item.html);\r\n btn.addClass(`keditor-ui keditor-topbar-btn keditor-topbar-btn-${name}`);\r\n btn.on('click', item.click);\r\n \r\n topbarRight.append(btn);\r\n });\r\n};\r\n","export default function (event, selector) {\r\n let target = $(event.target);\r\n let closest = target.closest(selector);\r\n \r\n if (target.is(selector)) {\r\n return target;\r\n } else if (closest.length > 0) {\r\n return closest;\r\n } else {\r\n return null;\r\n }\r\n};\r\n","const KEY_MAP = {\r\n ESC: 27,\r\n};\r\n\r\nexport default KEY_MAP;\r\n","import CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function (target, isCut) {\r\n let self = this;\r\n \r\n self.copyContent = isCut ? null : target;\r\n self.cutContent = isCut ? target : null;\r\n \r\n self.contentAreasWrapper.find(`.${CSS_CLASS.UI_CUTTING}`).removeClass(CSS_CLASS.UI_CUTTING);\r\n self.iframeBody.removeClass(`${CSS_CLASS.STATE_COPYING} ${CSS_CLASS.STATE_COPYING_COMPONENT} ${CSS_CLASS.STATE_COPYING_CONTAINER} ${CSS_CLASS.STATE_COPYING_SUB_CONTAINER}`);\r\n \r\n if (target) {\r\n isCut && target.addClass(CSS_CLASS.UI_CUTTING);\r\n self.iframeBody.addClass(CSS_CLASS.STATE_COPYING);\r\n \r\n if (target.hasClass(CSS_CLASS.COMPONENT)) {\r\n self.iframeBody.addClass(CSS_CLASS.STATE_COPYING_COMPONENT);\r\n }\r\n \r\n if (target.hasClass(CSS_CLASS.CONTAINER)) {\r\n self.iframeBody.addClass(target.hasClass(CSS_CLASS.SUB_CONTAINER) ? CSS_CLASS.STATE_COPYING_SUB_CONTAINER : CSS_CLASS.STATE_COPYING_CONTAINER);\r\n }\r\n }\r\n};\r\n","import getComponentType from './getComponentType';\r\n\r\nexport default function (component) {\r\n let self = this;\r\n \r\n let componentType = getComponentType.call(self, component);\r\n let componentData = KEditor.components[componentType];\r\n if (typeof componentData.destroy === 'function') {\r\n componentData.destroy.call(componentData, component, self);\r\n }\r\n \r\n component.remove();\r\n};\r\n","import initSelectAction from './initSelectAction';\r\nimport initKeyDownAction from './initKeyDownAction';\r\nimport initBtnPasteContent from './initBtnPasteContent';\r\n\r\nimport initBtnAddContentAfterContainer from './initBtnAddContentAfterContainer';\r\nimport initBtnAddContentAfterComponent from './initBtnAddContentAfterComponent';\r\n\r\nimport initBtnComponentDelete from './initBtnComponentDelete';\r\nimport initBtnComponentDuplicate from './initBtnComponentDuplicate';\r\nimport initBtnComponentCopy from './initBtnComponentCopy';\r\nimport initBtnComponentCut from './initBtnComponentCut';\r\nimport initBtnComponentSetting from './initBtnComponentSetting';\r\nimport initBtnComponentMoveDown from './initBtnComponentMoveDown';\r\nimport initBtnComponentMoveUp from './initBtnComponentMoveUp';\r\n\r\nimport initBtnContainerDelete from './initBtnContainerDelete';\r\nimport initBtnContainerDuplicate from './initBtnContainerDuplicate';\r\nimport initBtnContainerCopy from './initBtnContainerCopy';\r\nimport initBtnContainerCut from './initBtnContainerCut';\r\nimport initBtnContainerSetting from './initBtnContainerSetting';\r\nimport initBtnContainerMoveDown from './initBtnContainerMoveDown';\r\nimport initBtnContainerMoveUp from './initBtnContainerMoveUp';\r\n\r\nexport default function () {\r\n let self = this;\r\n \r\n initSelectAction.call(self);\r\n \r\n initKeyDownAction.call(self);\r\n \r\n initBtnPasteContent.call(self);\r\n \r\n initBtnAddContentAfterComponent.call(self);\r\n initBtnAddContentAfterContainer.call(self);\r\n \r\n initBtnComponentDelete.call(self);\r\n initBtnComponentDuplicate.call(self);\r\n initBtnComponentCopy.call(self);\r\n initBtnComponentCut.call(self);\r\n initBtnComponentMoveDown.call(self);\r\n initBtnComponentMoveUp.call(self);\r\n initBtnComponentSetting.call(self);\r\n \r\n initBtnContainerDelete.call(self);\r\n initBtnContainerDuplicate.call(self);\r\n initBtnContainerCopy.call(self);\r\n initBtnContainerCut.call(self);\r\n initBtnContainerMoveDown.call(self);\r\n initBtnContainerMoveUp.call(self);\r\n initBtnContainerSetting.call(self);\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport getClickedElement from '../utils/getClickedElement';\r\nimport openSidebar from '../sidebar/openSidebar';\r\nimport closeSidebar from '../sidebar/closeSidebar';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n self.iframeBody.on('click', function (e) {\r\n let sidebar = getClickedElement(e, `.${CSS_CLASS.SIDEBAR}`);\r\n let modal = getClickedElement(e, `.${CSS_CLASS.MODAL}`);\r\n \r\n let container = getClickedElement(e, `.${CSS_CLASS.CONTAINER}`);\r\n if (container) {\r\n if (!container.hasClass(CSS_CLASS.STATE_TOOLBAR_SHOWED)) {\r\n contentAreasWrapper.find(`.${CSS_CLASS.STATE_TOOLBAR_SHOWED}`).removeClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n container.addClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n \r\n let contentArea = container.parent();\r\n if (typeof options.onContainerSelected === 'function') {\r\n options.onContainerSelected.call(self, e, container, contentArea);\r\n }\r\n }\r\n } else {\r\n if (!sidebar && !modal) {\r\n contentAreasWrapper.find(`.${CSS_CLASS.STATE_TOOLBAR_SHOWED}`).removeClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n }\r\n }\r\n \r\n let component = getClickedElement(e, `.${CSS_CLASS.COMPONENT}`);\r\n if (component) {\r\n if (!component.hasClass(CSS_CLASS.STATE_TOOLBAR_SHOWED)) {\r\n contentAreasWrapper.find(`.${CSS_CLASS.COMPONENT}.${CSS_CLASS.STATE_TOOLBAR_SHOWED}`).removeClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n component.addClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n \r\n let contentArea = component.parent();\r\n if (typeof options.onComponentSelected === 'function') {\r\n options.onComponentSelected.call(self, e, component, contentArea);\r\n }\r\n }\r\n \r\n let toolbar = getClickedElement(e, `.${CSS_CLASS.TOOLBAR_COMPONENT}`);\r\n if (toolbar) {\r\n return;\r\n }\r\n \r\n if (options.clickComponentToShowSetting) {\r\n let btnSetting = component.find(`.${CSS_CLASS.COMPONENT_SETTING}`);\r\n if (btnSetting.length > 0) {\r\n self.settingComponent = null;\r\n openSidebar.call(self, component);\r\n } else {\r\n closeSidebar.call(self);\r\n }\r\n }\r\n } else {\r\n if (!sidebar) {\r\n contentAreasWrapper.find(`.${CSS_CLASS.COMPONENT}.${CSS_CLASS.STATE_TOOLBAR_SHOWED}`).removeClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n }\r\n }\r\n });\r\n};\r\n","import KEY_MAP from '../constants/keyMap';\r\nimport setCopyContent from '../utils/setCopyContent';\r\nimport setFullscreenMode from '../topbar/setFullscreenMode';\r\n\r\nexport default function () {\r\n let self = this;\r\n \r\n self.iframeDoc.on('keydown', function (e) {\r\n switch (e.keyCode) {\r\n case KEY_MAP.ESC:\r\n setCopyContent.call(self, null);\r\n setFullscreenMode.call(self, false);\r\n break;\r\n \r\n default:\r\n // Do nothing\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport ACTION_TYPE from '../constants/actionType';\r\nimport setCopyContent from '../utils/setCopyContent';\r\nimport log from '../utils/log';\r\nimport convertToContainer from '../container/convertToContainer';\r\nimport getComponentContent from '../component/getComponentContent';\r\nimport getContainerContent from '../container/getContainerContent';\r\nimport convertToComponent from '../component/convertToComponent';\r\n\r\nexport default function () {\r\n let self = this;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.PASTE_CONTENT}`, function (e) {\r\n e.preventDefault();\r\n \r\n log(`Click on \".${CSS_CLASS.PASTE_CONTENT}\"`);\r\n \r\n let btn = $(this);\r\n let isCopy = !!self.copyContent;\r\n \r\n // Check source\r\n let source = isCopy ? self.copyContent : self.cutContent;\r\n let isComponent = source.hasClass(CSS_CLASS.COMPONENT);\r\n let isContainer = source.hasClass(CSS_CLASS.CONTAINER);\r\n let isSubContainer = source.hasClass(CSS_CLASS.SUB_CONTAINER);\r\n let pasteContent;\r\n if (isCopy) {\r\n pasteContent = $(isComponent ? getComponentContent.call(self, source) : getContainerContent.call(self, source, isSubContainer));\r\n } else {\r\n pasteContent = source;\r\n }\r\n \r\n // Check target\r\n let target = null;\r\n \r\n let toolbarBottom = btn.closest(`.${CSS_CLASS.TOOLBAR_BOTTOM}`);\r\n if (toolbarBottom.length > 0) {\r\n if (toolbarBottom.hasClass(CSS_CLASS.TOOLBAR_CONTAINER_BOTTOM)) {\r\n log('Target is container');\r\n target = btn.closest(`.${CSS_CLASS.CONTAINER}`);\r\n }\r\n \r\n if (toolbarBottom.hasClass(CSS_CLASS.TOOLBAR_COMPONENT_BOTTOM)) {\r\n log('Target is component');\r\n target = btn.closest(`.${CSS_CLASS.COMPONENT}`);\r\n }\r\n }\r\n \r\n let toolbarContainerContent = btn.closest(`.${CSS_CLASS.TOOLBAR_CONTAINER_CONTENT}`);\r\n if (toolbarContainerContent.length > 0) {\r\n log('Target is component');\r\n target = toolbarContainerContent.siblings(`.${CSS_CLASS.CONTAINER_CONTENT_INNER}`);\r\n }\r\n \r\n let toolbarContentArea = btn.closest(`.${CSS_CLASS.TOOLBAR_CONTENT_AREA}`);\r\n if (toolbarContentArea.length > 0) {\r\n log('Target is content-area');\r\n target = toolbarContentArea.siblings(`.${CSS_CLASS.CONTENT_AREA_INNER}`);\r\n }\r\n \r\n // Check action\r\n let action = null;\r\n if (toolbarBottom.length > 0) {\r\n action = ACTION_TYPE.AFTER;\r\n } else {\r\n action = ACTION_TYPE.APPEND;\r\n }\r\n \r\n log(`isCopy: ${isCopy} | isComponent: ${isComponent} | isContainer: ${isContainer} | isSubContainer: ${isSubContainer} | action: ${action}`);\r\n log('target: ', target);\r\n \r\n target[action](pasteContent);\r\n setCopyContent.call(self, null);\r\n \r\n if (isCopy) {\r\n if (isComponent) {\r\n convertToComponent.call(self, pasteContent);\r\n }\r\n \r\n if (isContainer) {\r\n convertToContainer.call(self, pasteContent);\r\n }\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport ACTION_TYPE from '../constants/actionType';\r\nimport showSnippetModal from '../modal/showSnippetModal';\r\n\r\nexport default function () {\r\n let self = this;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.TOOLBAR_COMPONENT_BOTTOM} .${CSS_CLASS.ADD_CONTENT}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let component = btn.closest(`.${CSS_CLASS.COMPONENT}`);\r\n let container = btn.closest(`.${CSS_CLASS.CONTAINER}`);\r\n showSnippetModal.call(self, component, ACTION_TYPE.AFTER, true, !container.hasClass(CSS_CLASS.SUB_CONTAINER));\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport ACTION_TYPE from '../constants/actionType';\r\nimport showSnippetModal from '../modal/showSnippetModal';\r\n\r\nexport default function () {\r\n let self = this;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.TOOLBAR_CONTAINER_BOTTOM} .${CSS_CLASS.ADD_CONTENT}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let container = btn.closest(`.${CSS_CLASS.CONTAINER}`);\r\n showSnippetModal.call(self, container, ACTION_TYPE.AFTER, true, true);\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport closeSidebar from '../sidebar/closeSidebar';\r\nimport deleteComponent from '../component/deleteComponent';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.COMPONENT_DELETE}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n \r\n if (confirm(options.locale.confirmDeleteComponentText)) {\r\n let component = btn.closest(`.${CSS_CLASS.COMPONENT}`);\r\n let container = component.closest(`.${CSS_CLASS.CONTAINER}`);\r\n let contentArea = component.closest(`.${CSS_CLASS.CONTENT_AREA}`);\r\n \r\n if (typeof options.onBeforeComponentDeleted === 'function') {\r\n options.onBeforeComponentDeleted.call(self, e, component, contentArea);\r\n }\r\n \r\n if (component.is(self.settingComponent)) {\r\n closeSidebar.call(self);\r\n }\r\n \r\n deleteComponent.call(self, component);\r\n \r\n if (typeof options.onComponentDeleted === 'function') {\r\n options.onComponentDeleted.call(self, e, component, contentArea);\r\n }\r\n \r\n if (typeof options.onContainerChanged === 'function') {\r\n options.onContainerChanged.call(self, e, container, contentArea);\r\n }\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, e, contentArea);\r\n }\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport getComponentContent from '../component/getComponentContent';\r\nimport convertToComponent from '../component/convertToComponent';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.COMPONENT_DUPLICATE}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let component = btn.closest(`.${CSS_CLASS.COMPONENT}`);\r\n let container = component.closest(`.${CSS_CLASS.CONTAINER}`);\r\n let contentArea = container.parent();\r\n let newComponent = $(getComponentContent.call(self, component));\r\n \r\n component.after(newComponent);\r\n convertToComponent.call(self, newComponent);\r\n \r\n if (typeof options.onComponentDuplicated === 'function') {\r\n options.onComponentDuplicated.call(self, component, newComponent, contentArea);\r\n }\r\n \r\n if (typeof options.onContainerChanged === 'function') {\r\n options.onContainerChanged.call(self, e, container, contentArea);\r\n }\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, e, contentArea);\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport setCopyContent from '../utils/setCopyContent';\r\n\r\nexport default function () {\r\n let self = this;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.COMPONENT_COPY}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let component = btn.closest(`.${CSS_CLASS.COMPONENT}`);\r\n setCopyContent.call(self, component, false);\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport setCopyContent from '../utils/setCopyContent';\r\n\r\nexport default function () {\r\n let self = this;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.COMPONENT_CUT}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let component = btn.closest(`.${CSS_CLASS.COMPONENT}`);\r\n setCopyContent.call(self, component, true);\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.COMPONENT_MOVE_DOWN}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let component = btn.closest(`.${CSS_CLASS.COMPONENT}`);\r\n let nextComponent = component.next(`.${CSS_CLASS.COMPONENT}`);\r\n \r\n if (nextComponent.length > 0) {\r\n let container = component.closest(`.${CSS_CLASS.CONTAINER}`);\r\n let contentArea = component.closest(`.${CSS_CLASS.CONTENT_AREA}`);\r\n \r\n nextComponent.after(component);\r\n \r\n if (typeof options.onContainerChanged === 'function') {\r\n options.onContainerChanged.call(self, e, container, contentArea);\r\n }\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, e, contentArea);\r\n }\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.COMPONENT_MOVE_UP}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let component = btn.closest(`.${CSS_CLASS.COMPONENT}`);\r\n let prevComponent = component.prev(`.${CSS_CLASS.COMPONENT}`);\r\n \r\n if (prevComponent.length > 0) {\r\n let container = component.closest(`.${CSS_CLASS.CONTAINER}`);\r\n let contentArea = component.closest(`.${CSS_CLASS.CONTENT_AREA}`);\r\n \r\n prevComponent.before(component);\r\n \r\n if (typeof options.onContainerChanged === 'function') {\r\n options.onContainerChanged.call(self, e, container, contentArea);\r\n }\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, e, contentArea);\r\n }\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport openSidebar from '../sidebar/openSidebar';\r\n\r\nexport default function () {\r\n let self = this;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.COMPONENT_SETTING}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let component = btn.closest(`.${CSS_CLASS.COMPONENT}`);\r\n openSidebar.call(self, component);\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport closeSidebar from '../sidebar/closeSidebar';\r\nimport deleteComponent from '../component/deleteComponent';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.CONTAINER_DELETE}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n \r\n if (confirm(options.locale.confirmDeleteContainerText)) {\r\n let container = btn.closest(`.${CSS_CLASS.CONTAINER}`);\r\n let components = container.find(`.${CSS_CLASS.COMPONENT}`);\r\n let contentArea = container.closest(`.${CSS_CLASS.CONTENT_AREA}`);\r\n \r\n if (typeof options.onBeforeContainerDeleted === 'function') {\r\n options.onBeforeContainerDeleted.call(self, e, container, contentArea);\r\n }\r\n \r\n if (self.settingComponent) {\r\n let settingComponentParent = self.settingComponent.closest(`.${CSS_CLASS.CONTAINER}`);\r\n if (settingComponentParent.is(container)) {\r\n closeSidebar.call(self);\r\n }\r\n } else if (container.is(self.settingContainer)) {\r\n closeSidebar.call(self);\r\n }\r\n \r\n if (components.length > 0) {\r\n components.each(function () {\r\n deleteComponent.call(self, $(this));\r\n });\r\n }\r\n \r\n container.remove();\r\n \r\n if (typeof options.onContainerDeleted === 'function') {\r\n options.onContainerDeleted.call(self, e, container, contentArea);\r\n }\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, e, contentArea);\r\n }\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport getContainerContent from '../container/getContainerContent';\r\nimport convertToContainer from '../container/convertToContainer';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.CONTAINER_DUPLICATE}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let container = btn.closest(`.${CSS_CLASS.CONTAINER}`);\r\n let contentArea = container.parent();\r\n let newContainer = $(getContainerContent.call(self, container, btn.parent().hasClass(CSS_CLASS.TOOLBAR_SUB_CONTAINER)));\r\n container.after(newContainer);\r\n convertToContainer.call(self, newContainer);\r\n \r\n if (typeof options.onContainerDuplicated === 'function') {\r\n options.onContainerDuplicated.call(self, container, newContainer, contentArea);\r\n }\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, e, contentArea);\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport setCopyContent from '../utils/setCopyContent';\r\n\r\nexport default function () {\r\n let self = this;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.CONTAINER_COPY}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let container = btn.closest(`.${CSS_CLASS.CONTAINER}`);\r\n setCopyContent.call(self, container, false);\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport setCopyContent from '../utils/setCopyContent';\r\n\r\nexport default function () {\r\n let self = this;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.CONTAINER_CUT}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let container = btn.closest(`.${CSS_CLASS.CONTAINER}`);\r\n setCopyContent.call(self, container, true);\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.CONTAINER_MOVE_DOWN}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let container = btn.closest(`.${CSS_CLASS.CONTAINER}`);\r\n let nextContainer = container.next(`.${CSS_CLASS.CONTAINER}`);\r\n \r\n if (nextContainer.length > 0) {\r\n let contentArea = container.parent();\r\n \r\n nextContainer.after(container);\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, e, contentArea);\r\n }\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.CONTAINER_MOVE_UP}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let container = btn.closest(`.${CSS_CLASS.CONTAINER}`);\r\n let prevContainer = container.prev(`.${CSS_CLASS.CONTAINER}`);\r\n \r\n if (prevContainer.length > 0) {\r\n let contentArea = container.parent();\r\n \r\n prevContainer.before(container);\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, e, contentArea);\r\n }\r\n }\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport openSidebar from '../sidebar/openSidebar';\r\n\r\nexport default function () {\r\n let self = this;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n contentAreasWrapper.on('click', `.${CSS_CLASS.CONTAINER_SETTING}`, function (e) {\r\n e.preventDefault();\r\n \r\n let btn = $(this);\r\n let container = btn.closest(`.${CSS_CLASS.CONTAINER}`);\r\n openSidebar.call(self, container);\r\n });\r\n};\r\n","import TOOLBAR_TYPE from '../constants/toolbarType';\r\nimport CSS_CLASS from '../constants/cssClass';\r\nimport ACTION_TYPE from '../constants/actionType';\r\nimport showSnippetModal from '../modal/showSnippetModal';\r\nimport generateToolbar from '../utils/generateToolbar';\r\nimport closeSidebar from '../sidebar/closeSidebar';\r\nimport convertToContainer from '../container/convertToContainer';\r\n\r\nexport default function (contentArea, dontInitToolbar) {\r\n let self = this;\r\n let options = self.options;\r\n \r\n contentArea.addClass(CSS_CLASS.CONTENT_AREA);\r\n let content = contentArea.html();\r\n let contentAreaInner = $(`
`).html(content);\r\n contentArea.html(contentAreaInner);\r\n \r\n if (typeof options.onBeforeInitContentArea === 'function') {\r\n options.onBeforeInitContentArea.call(self, contentArea);\r\n }\r\n \r\n if (!dontInitToolbar) {\r\n let contentAreaToolbar = $(generateToolbar.call(self, TOOLBAR_TYPE.CONTENT_AREA));\r\n contentArea.append(contentAreaToolbar);\r\n contentAreaToolbar.children(`.${CSS_CLASS.ADD_CONTENT}`).on('click', function (e) {\r\n e.preventDefault();\r\n \r\n showSnippetModal.call(self, contentAreaInner, ACTION_TYPE.APPEND, true, true);\r\n });\r\n }\r\n \r\n contentAreaInner.sortable({\r\n handle: `.${CSS_CLASS.TOOLBAR_CONTAINER}:not(.${CSS_CLASS.TOOLBAR_SUB_CONTAINER}) .${CSS_CLASS.CONTAINER_MOVE}`,\r\n items: `> .${CSS_CLASS.CONTAINER}`,\r\n helper: 'clone',\r\n connectWith: `.${CSS_CLASS.CONTENT_AREA}`,\r\n axis: 'y',\r\n tolerance: 'pointer',\r\n receive: function (event, ui) {\r\n let helper = ui.helper;\r\n let item = ui.item;\r\n \r\n if (helper) {\r\n helper.remove();\r\n }\r\n \r\n closeSidebar.call(self);\r\n \r\n if (typeof options.onContentChanged === 'function') {\r\n options.onContentChanged.call(self, event, contentArea);\r\n }\r\n \r\n item.addClass(CSS_CLASS.UI_DRAGGING);\r\n },\r\n start: function (e, ui) {\r\n ui.item.addClass(CSS_CLASS.UI_DRAGGING);\r\n ui.item.addClass(CSS_CLASS.STATE_TOOLBAR_SHOWED);\r\n },\r\n stop: function (e, ui) {\r\n if (ui.helper) {\r\n ui.helper.remove();\r\n }\r\n ui.item.removeClass(CSS_CLASS.UI_DRAGGING);\r\n }\r\n });\r\n \r\n let containers;\r\n if (typeof options.onInitContentArea === 'function') {\r\n containers = options.onInitContentArea.call(self, contentArea);\r\n } else {\r\n containers = contentAreaInner.children();\r\n }\r\n \r\n containers.each(function () {\r\n convertToContainer.call(self, $(this));\r\n });\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport initIframeActions from './initIframeActions';\r\nimport initContentAreas from '../contentArea/initContentAreas';\r\n\r\nexport default function () {\r\n let self = this;\r\n let element = self.element;\r\n let options = self.options;\r\n let wrapperId = self.generateId();\r\n let wrapper = self.wrapper = $(`\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n `);\r\n \r\n element.addClass(CSS_CLASS.UI_HIDDEN);\r\n element.after(wrapper);\r\n \r\n let iframe = self.iframe = wrapper.find(`.${CSS_CLASS.IFRAME}`);\r\n self.iframeDoc = iframe.contents();\r\n \r\n // Fix issue Firefox can't render content inside iframe\r\n // ======================================================\r\n self.iframeDoc.get(0).open();\r\n self.iframeDoc.get(0).close();\r\n // ======================================================\r\n \r\n self.iframeWindow = iframe[0].contentWindow ? iframe[0].contentWindow : iframe[0].contentDocument.defaultView;\r\n self.iframeHead = self.iframeDoc.find('head');\r\n self.iframeBody = self.iframeDoc.find('body');\r\n \r\n // Generate head content for iframe\r\n let styles = '';\r\n $('[data-type=\"keditor-style\"]').each(function () {\r\n let style = $(this);\r\n let idStr = style.attr('id') || '';\r\n let href = style.attr('href') || style.attr('data-href') || '';\r\n \r\n if (href) {\r\n styles += `\\n`;\r\n } else {\r\n styles += `\\n`;\r\n }\r\n });\r\n $.isArray(options.contentStyles) && $.each(options.contentStyles, function (i, style) {\r\n let idStr = style.id || '';\r\n \r\n if (style.href) {\r\n styles += `\\n`;\r\n } else {\r\n styles += `\\n`;\r\n }\r\n });\r\n self.iframeHead.append(styles);\r\n \r\n // Generate body content for iframe\r\n self.contentAreasWrapper = $(options.contentAreasWrapper || '
');\r\n self.contentAreasWrapper.attr('class', `${CSS_CLASS.UI} ${CSS_CLASS.CONTENT_AREAS_WRAPPER}`);\r\n self.contentAreasWrapper.html(element.val() || element.html() || '');\r\n if (!self.contentAreasWrapper.attr('id')) {\r\n self.contentAreasWrapper.attr('id', self.generateId());\r\n }\r\n self.iframeBody.append(self.contentAreasWrapper).addClass(CSS_CLASS.IFRAME_BODY);\r\n \r\n if (typeof options.onInitIframe === 'function') {\r\n options.onInitIframe.call(self, self.iframe, self.iframeHead, self.iframeBody);\r\n }\r\n \r\n initContentAreas.call(self);\r\n initIframeActions.call(self);\r\n};\r\n","import generateId from '../utils/generateId';\r\nimport initContentArea from './initContentArea';\r\n\r\nexport default function () {\r\n let self = this;\r\n let options = self.options;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n \r\n let contentAreas;\r\n if (options.contentAreasSelector) {\r\n contentAreas = contentAreasWrapper.find(options.contentAreasSelector);\r\n }\r\n \r\n if (!contentAreas || contentAreas.length === 0) {\r\n let originalContent = contentAreasWrapper.html();\r\n \r\n contentAreas = $('
').html(originalContent);\r\n contentAreasWrapper.empty().append(contentAreas);\r\n }\r\n \r\n contentAreas.each(function () {\r\n let contentArea = $(this);\r\n if (!contentArea.attr('id')) {\r\n contentArea.attr('id', generateId());\r\n }\r\n \r\n initContentArea.call(self, contentArea);\r\n });\r\n};\r\n","import DEFAULTS from './constants/defaults';\r\nimport initSnippetsModal from './modal/initSnippetsModal';\r\nimport initExtraSettings from './sidebar/initExtraSettings';\r\nimport initSidebar from './sidebar/initSidebar';\r\nimport initTopbar from './topbar/initTopbar';\r\nimport initIframe from './iframe/initIframe';\r\nimport generateId from './utils/generateId';\r\n\r\nexport default function (target, config) {\r\n let self = this;\r\n self.element = target;\r\n self.options = $.extend({}, DEFAULTS, config);\r\n \r\n initIframe.call(self);\r\n initTopbar.call(self);\r\n initSidebar.call(self);\r\n initSnippetsModal.call(self);\r\n initExtraSettings.call(self);\r\n \r\n self.id = generateId();\r\n KEditor.instances[self.id] = self;\r\n \r\n if (typeof self.options.onReady === 'function') {\r\n self.options.onReady.call(self);\r\n }\r\n};\r\n","import CSS_CLASS from '../constants/cssClass';\r\nimport generateId from '../utils/generateId';\r\nimport closeSidebar from './closeSidebar';\r\n\r\nexport default function () {\r\n let self = this;\r\n let sidebarId = generateId();\r\n \r\n let sidebar = self.sidebar = $(`\r\n
\r\n
\r\n \r\n ×\r\n
\r\n
\r\n
\r\n `);\r\n \r\n sidebar.find(`.${CSS_CLASS.SIDEBAR_CLOSER}`).on('click', function (e) {\r\n e.preventDefault();\r\n \r\n closeSidebar.call(self);\r\n });\r\n \r\n self.sidebarTitle = sidebar.find(`.${CSS_CLASS.SIDEBAR_TITLE}`);\r\n let sidebarBody = self.sidebarBody = sidebar.find(`.${CSS_CLASS.SIDEBAR_BODY}`);\r\n sidebarBody.on('submit', 'form', function (e) {\r\n e.preventDefault();\r\n return false;\r\n });\r\n \r\n sidebar.appendTo(self.wrapper);\r\n};\r\n","import CSS_CLASS from './constants/cssClass';\r\nimport getContent from './getContent';\r\n\r\nexport default function () {\r\n let self = this;\r\n let element = self.element;\r\n let id = self.id;\r\n \r\n let content = getContent.call(self, false);\r\n self.wrapper.remove();\r\n \r\n if (element.is('textarea')) {\r\n element.val(content);\r\n } else {\r\n element.html(content);\r\n }\r\n \r\n element.removeClass(CSS_CLASS.UI_HIDDEN);\r\n element.data('keditor', null);\r\n delete KEditor.instances[id];\r\n};\r\n","import '../styles/keditor.less';\r\n\r\nimport $ from 'jquery';\r\nimport DEFAULTS from './constants/defaults';\r\nimport log from './utils/log';\r\nimport error from './utils/error';\r\nimport generateId from './utils/generateId';\r\nimport getDataAttributes from './utils/getDataAttributes';\r\nimport initIframeCover from './iframe/initIframeCover';\r\nimport addSnippet from './snippet/addSnippet';\r\nimport init from './init';\r\nimport destroy from './destroy';\r\nimport getContent from './getContent';\r\nimport setContent from './setContent';\r\nimport initModal from './modal/initModal';\r\nimport showModal from './modal/showModal';\r\nimport hideModal from './modal/hideModal';\r\nimport initDynamicContent from './component/initDynamicContent';\r\n\r\n// Check dependencies\r\nif (!$.fn.sortable) {\r\n throw new Error('[ KEditor ] $.fn.sortable does not exist. Please import $.fn.sortable into your document for continue using KEditor.');\r\n}\r\n\r\nwindow.KEDITOR_DEBUG = true;\r\n\r\n// KEditor class\r\nclass KEditor {\r\n static DEFAULTS = DEFAULTS;\r\n static debug = false;\r\n static version = '2.0.0';\r\n static instances = {};\r\n static components = {\r\n blank: {\r\n settingEnabled: false\r\n }\r\n };\r\n \r\n settingComponent = null;\r\n settingContainer = null;\r\n \r\n copyContent = null;\r\n cutContent = null;\r\n \r\n categoryComponent = [];\r\n categoryContainer = [];\r\n \r\n constructor(target, config) {\r\n init.apply(this, [target, config]);\r\n }\r\n \r\n /**\r\n * Log utility of KEditor with `[ KEditor ] ` as prefix. You can see the log when `window.KEDITOR_DEBUG = true`\r\n * @param {*} args Values you want to log\r\n */\r\n static log(...args) {\r\n log(...args);\r\n }\r\n \r\n /**\r\n * Throw error with `[ KEditor ] ` as prefix for message\r\n * @param {String} message Error message\r\n */\r\n static error(message) {\r\n error(message);\r\n }\r\n \r\n /**\r\n * Initialize KEditor instance\r\n * @param {jQuery} target Element which you want to initialize as KEditor\r\n * @param {Object} config Configuration of KEditor instance. See https://github.com/Kademi/keditor/blob/master/docs/configuration.md for more details\r\n * @return {KEditor}\r\n */\r\n static init(target, config) {\r\n return new KEditor(target, config);\r\n }\r\n \r\n /**\r\n * Load dynamic content for elements which have `data-dynamic-href` attribute\r\n * @param {jQuery} dynamicElement jQuery object of element(s) which you want to load dynamic content. Element(s) must have `data-dynamic-href` attribute\r\n * @param {Object} options Callbacks include `onSuccess` and `onError` with arguments are `dynamicElement` and `jqXHR`\r\n */\r\n static loadDynamicContent(dynamicElement, options = {}) {\r\n dynamicElement.each(function () {\r\n initDynamicContent.call({\r\n options: {\r\n onDynamicContentLoaded: options.onSuccess,\r\n onDynamicContentError: options.onError\r\n }\r\n }, $(this));\r\n });\r\n }\r\n \r\n /**\r\n * Get container which is setting-up\r\n * @return {jQuery}\r\n */\r\n getSettingContainer() {\r\n return this.settingContainer;\r\n }\r\n \r\n /**\r\n * Get component which is setting-up\r\n * @return {jQuery}\r\n */\r\n getSettingComponent() {\r\n return this.settingComponent;\r\n }\r\n \r\n /**\r\n * Generate a random Id\r\n * @return {String}\r\n */\r\n generateId() {\r\n return generateId();\r\n }\r\n \r\n /**\r\n * Get list of `data-*` attributes\r\n * @param {jQuery} target jQuery of elements which you want to get list of `data-*` attributes\r\n * @param {Array} ignoreAttributes Array of attributes you want to ignore\r\n * @param {Boolean} isArray Return list as Array or Object\r\n * @return {Array|Object}\r\n */\r\n getDataAttributes(target, ignoreAttributes, isArray) {\r\n return getDataAttributes.apply(this, [target, ignoreAttributes, isArray]);\r\n }\r\n \r\n /**\r\n * Init iframe cover which avoid iframe's z-index issue in IE browsers\r\n * @param {jQuery} iframe Iframe which you want to add cover for\r\n * @param {jQuery} wrapper Wrapper of iframe\r\n */\r\n initIframeCover(iframe, wrapper) {\r\n initIframeCover.apply(this, [iframe, wrapper]);\r\n }\r\n \r\n /**\r\n * Init KEditor modal\r\n * @param {String} modalId Id of modal\r\n * @param {Boolean} hasFooter Modal has footer or not\r\n * @param {Boolean} disableOriginEvents If you want to handle close button by yourself, just set it as `false`\r\n * @return {jQuery}\r\n */\r\n initModal(modalId, hasFooter, disableOriginEvents) {\r\n return initModal.call(this, modalId, hasFooter, disableOriginEvents);\r\n }\r\n \r\n /**\r\n * Show a KEditor modal\r\n * @param {jQuery} modal Modal you want to show\r\n */\r\n showModal(modal) {\r\n showModal.call(this, modal);\r\n }\r\n \r\n /**\r\n * Hide a KEditor modal\r\n * @param {jQuery} modal Modal you want to show\r\n */\r\n hideModal(modal) {\r\n hideModal.call(this, modal);\r\n }\r\n \r\n /**\r\n * @param {Boolean} inArray Return your content in array format or just plain string\r\n * @return {String|Array}\r\n */\r\n getContent(inArray) {\r\n return getContent.apply(this, [inArray]);\r\n }\r\n \r\n /**\r\n * @param {String} content HTML content\r\n * @param {String|jQuery} contentArea Can be selector or jQuery object of content area which you want to set new content. If you have only a content area, you can leave it blank\r\n */\r\n setContent(content, contentArea) {\r\n setContent.apply(this, [content, contentArea]);\r\n }\r\n \r\n /**\r\n * Removes the KEditor functionality completely. This will return the element back to its pre-init state with latest content\r\n */\r\n destroy() {\r\n destroy.apply(this);\r\n }\r\n \r\n /**\r\n * Add snippet programmatically\r\n * @param {String} type Type of snippet. Can be `container` or `component-*`\r\n * @param {String} title Text title of snippet\r\n * @param {String} previewUrl Url to preview image of snippet\r\n * @param {String} categories Categories list of snippet, separated by `snippetsCategoriesSeparator` option\r\n * @param {String} content HTML content of snippet\r\n * @param {Array} extraAttrs If you component contains dynamic content, you will need this parameter to add `data-*` attribute to your component\r\n */\r\n addSnippet(type, title, previewUrl, categories, content, extraAttrs) {\r\n addSnippet.apply(this, [type, title, previewUrl, categories, content, extraAttrs]);\r\n }\r\n \r\n /**\r\n * Load dynamic content for elements which have `data-dynamic-href` attribute\r\n * @param {jQuery} dynamicElement jQuery object of element(s) which you want to load dynamic content. Element(s) must have `data-dynamic-href` attribute\r\n * @return {jqXHR}\r\n */\r\n initDynamicContent(dynamicElement) {\r\n return initDynamicContent.apply(this, [dynamicElement]);\r\n }\r\n}\r\n\r\n// KEditor plugins\r\n$.fn.keditor = function (options) {\r\n let element = $(this);\r\n let instance = element.data('keditor');\r\n \r\n if (typeof options === 'string') {\r\n if (instance && instance[options] && typeof instance[options] === 'function') {\r\n return instance[options].apply(instance, Array.prototype.slice.call(arguments, 1));\r\n }\r\n } else {\r\n if (!instance) {\r\n instance = KEditor.init(element, options);\r\n element.data('keditor', instance);\r\n }\r\n \r\n return instance;\r\n }\r\n};\r\n\r\nwindow.KEditor = $.keditor = $.fn.keditor.constructor = KEditor;\r\n","import CSS_CLASS from '../constants/cssClass';\r\n\r\nexport default function (iframe, wrapper) {\r\n if (!wrapper) {\r\n iframe.wrap(`
`);\r\n wrapper = iframe.parent();\r\n }\r\n \r\n wrapper.addClass(`${CSS_CLASS.IFRAME_COVER_WRAPPER}`);\r\n \r\n let cover = $(`
`);\r\n wrapper.prepend(cover);\r\n \r\n wrapper.on('mouseleave', function () {\r\n wrapper.removeClass(`${CSS_CLASS.IFRAME_COVER_HIDDEN}`);\r\n });\r\n \r\n cover.on('dblclick', function (e) {\r\n e.preventDefault();\r\n \r\n wrapper.addClass(`${CSS_CLASS.IFRAME_COVER_HIDDEN}`);\r\n });\r\n};\r\n","import CSS_CLASS from './constants/cssClass';\r\nimport initContentArea from './contentArea/initContentArea';\r\nimport error from './utils/error';\r\n\r\nexport default function (content, contentArea) {\r\n let self = this;\r\n let contentAreasWrapper = self.contentAreasWrapper;\r\n let target;\r\n \r\n if (!contentArea) {\r\n target = contentAreasWrapper.children(`.${CSS_CLASS.CONTENT_AREA}`);\r\n } else {\r\n if (!contentArea.jquery) {\r\n target = contentAreasWrapper.find(contentArea);\r\n }\r\n }\r\n\r\n if (target.length === 0) {\r\n error('Content area does not exist!');\r\n }\r\n\r\n target.html(content);\r\n initContentArea.call(self, target, true);\r\n};\r\n","import renderSnippet from './renderSnippet';\r\nimport renderSnippetFilter from './renderSnippetFilter';\r\nimport CSS_CLASS from '../constants/cssClass';\r\nimport beautifyCategories from './beautifyCategories';\r\n\r\nexport default function (type, title, previewUrl, categories, content, extraAttrs) {\r\n let self = this;\r\n let [\r\n snippetPreviewHtml,\r\n snippetContentHtml\r\n ] = renderSnippet.call(self, type, title, previewUrl, categories, content, extraAttrs);\r\n \r\n self.categoryContainer = beautifyCategories(self.categoryContainer);\r\n self.categoryComponent = beautifyCategories(self.categoryComponent);\r\n \r\n self.modal.find(`.${CSS_CLASS.SNIPPETS}`).append(snippetPreviewHtml);\r\n self.modal.find(`.${CSS_CLASS.MODAL_BODY}`).append(snippetContentHtml);\r\n \r\n let [categoriesOptions, snippetsWrapper] = renderSnippetFilter.call(self);\r\n snippetsWrapper.find(`.${CSS_CLASS.SNIPPETS_FILTER}`).html(categoriesOptions).trigger('change');\r\n};\r\n"],"sourceRoot":""}